I0NvcHlyaWdodCAoYykgMjAwOSwgUVVBTENPTU0gVVNBLCBJTkMuCiNBbGwgcmlnaHRzIHJlc2VydmVkLgojUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgojtyAgICAgICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCiO3ICAgICAgICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKI7cgICAgICAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBRVUFMQ09NTSBVU0EsIEluYy4gIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAojVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KCmlmbmVxICgkKEJVSUxEX1RJTllfQU5EUk9JRCksdHJ1ZSkKCkxPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQppbmNsdWRlICQoQ0xFQVJfVkFSUykKCkFNU1NfVkVSU0lPTjo9JChCT0FSRF9WRU5ET1JfUUNPTV9HUFNfTE9DX0FQSV9BTVNTX1ZFUlNJT04pClJQQ19JTkM6PWluYy0kKEFNU1NfVkVSU0lPTikKCmdlbmVyYXRlZF9maWxlczo9IFwKCWdlbi0kKEFNU1NfVkVSU0lPTikvbG9jX2FwaV9jbG50LmMJXAoJZ2VuLSQoQU1TU19WRVJTSU9OKS9sb2NfYXBpX2NiX3hkci5jCVwKCWdlbi0kKEFNU1NfVkVSU0lPTikvbG9jX2FwaV9jb21tb25feGRyLmMgXAoJZ2VuLSQoQU1TU19WRVJTSU9OKS9sb2NfYXBpX2NiX3N2Yy5jIFwKCWdlbi0kKEFNU1NfVkVSU0lPTikvbG9jX2FwaV94ZHIuYyBcCglnZW4tJChBTVNTX1ZFUlNJT04pL2xvY19hcGlfZml4dXAuYyBcCglnZW4tJChBTVNTX1ZFUlNJT04pL2xvY19hcGlfcnBjX2dsdWUuYyBcCglzcmMvbG9jX2FwaWNiX2FwcGluaXQuYwoKTE9DQUxfU1JDX0ZJTEVTOj0gJChnZW5lcmF0ZWRfZmlsZXMpCgojIHJlbW92ZWQgZnJvbSBsaWJyYXJ5IGJ1aWxkIHNpbmNlIHRoZSBjbGllbnQgc2hvdWxkIGltcGxlbWVudCB0aGlzIGNvZGUuCiMJc3JjL2xvY19hcGlfY2Jfc2VydmVyLmMKCkxPQ0FMX0NGTEFHUzo9LWZuby1zaG9ydC1lbnVtcwpMT0NBTF9DRkxBR1MrPS1pbmNsdWRlICQoUlBDX0lOQykvbG9jX2FwaV9jb21tb24uaApMT0NBTF9DRkxBR1MrPS1EREVCVUcKIyBMT0NBTF9DRkxBR1MrPS1EREVCVUcgLURWRVJCT1NFCgpMT0NBTF9DRkxBR1MrPS1EQUREX1hEUl9GTE9BVCAtREFERF9YRFJfQk9PTAoKTE9DQUxfU0hBUkVEX0xJQlJBUklFUzo9IGxpYnJwYwpMT0NBTF9TVEFUSUNfTElCUkFSSUVTOj0gbGliY29tbW9uZGVmcy1ycGMKCgoKTE9DQUxfQ09QWV9IRUFERVJTX1RPOj0gbGlibG9jX2FwaS1ycGMvaW5jCkxPQ0FMX0NPUFlfSEVBREVSUzo9IFwKCSQoUlBDX0lOQykvbG9jX2FwaV9jYi5oIFwKCSQoUlBDX0lOQykvbG9jX2FwaV9jb21tb24uaCBcCgkkKFJQQ19JTkMpL2xvY19hcGkuaCBcCgkkKFJQQ19JTkMpL2xvY19hcGlfZml4dXAuaCBcCgkkKFJQQ19JTkMpL2xvY19hcGljYl9hcHBpbml0LmggXAoJaW5jL2RlYnVnLmggXAoJaW5jL2xvY19hcGlfcnBjX2dsdWUuaAoKTE9DQUxfQ19JTkNMVURFUzo9IFwKCSQoTE9DQUxfUEFUSCkgXAoJJChMT0NBTF9QQVRIKS9pbmMgXAoJJChMT0NBTF9QQVRIKS8kKFJQQ19JTkMpIFwKCSQoVEFSR0VUX09VVF9IRUFERVJTKS9saWJjb21tb25kZWZzLXJwYyBcCgkkKFRBUkdFVF9PVVRfSEVBREVSUykvbGlicnBjCgpMT0NBTF9NT0RVTEU6PSBsaWJsb2NfYXBpLXJwYwoKaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQoKZW5kaWYK