ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCmluZGV4IDZiMTJkNzEuLjI5NmJjMDMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysrIGIvYXJjaC9hcm0vS2NvbmZpZwpAQCAtNzA0LDggKzcwNCw3IEBACiAKIGlmIFBDTUNJQSB8fCBBUkNIX0NMUFM3NTAwIHx8IEFSQ0hfSU9QM1hYIHx8IEFSQ0hfSVhQNFhYIFwKIAl8fCBBUkNIX0w3MjAwIHx8IEFSQ0hfTEg3QTQwWCB8fCBBUkNIX1BYQSB8fCBBUkNIX1JQQyBcCi0JfHwgQVJDSF9TM0MyNDEwIHx8IEFSQ0hfU0ExMTAwIHx8IEFSQ0hfU0hBUksgfHwgRk9PVEJSSURHRSBcCi0JfHwgTUFDSF9NUDEwMDAKKwl8fCBBUkNIX1MzQzI0MTAgfHwgQVJDSF9TQTExMDAgfHwgQVJDSF9TSEFSSyB8fCBGT09UQlJJREdFCiBzb3VyY2UgImRyaXZlcnMvaWRlL0tjb25maWciCiBlbmRpZgogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2NvbXByZXNzZWQvaGVhZC5TIGIvYXJjaC9hcm0vYm9vdC9jb21wcmVzc2VkL2hlYWQuUwppbmRleCBhNTRkMmViLi43YzdmNDc1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290L2NvbXByZXNzZWQvaGVhZC5TCisrKyBiL2FyY2gvYXJtL2Jvb3QvY29tcHJlc3NlZC9oZWFkLlMKQEAgLTM5LDggKzM5LDcgQEAKICAgICBkZWZpbmVkKENPTkZJR19BUkNIX0lYUDRYWCkgfHwgXAogICAgIGRlZmluZWQoQ09ORklHX0FSQ0hfSVhQMjAwMCkgfHwgXAogICAgIGRlZmluZWQoQ09ORklHX0FSQ0hfTEg3QTQwWCkgfHwgXAotICAgIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUCkgfHwgXAotICAgIGRlZmluZWQoQ09ORklHX01BQ0hfTVAxMDAwKQorICAgIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUCkKIAkJLm1hY3JvCWxvYWRzcCwJcmIKIAkJYWRkcnVhcnQgXHJiCiAJCS5lbmRtCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL21wMTAwMF9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL21wMTAwMF9kZWZjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyY2JjNmYuLjAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9tcDEwMDBfZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsODk3ICswLDAgQEAKLSMKLSMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xNC1yYzEKLSMgRnJpIFNlcCAxNiAxNTo0ODoxMyAyMDA1Ci0jCi1DT05GSUdfQVJNPXkKLUNPTkZJR19NTVU9eQotQ09ORklHX1VJRDE2PXkKLUNPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKLUNPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15Ci0KLSMKLSMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCi0jCi1DT05GSUdfRVhQRVJJTUVOVEFMPXkKLSMgQ09ORklHX0NMRUFOX0NPTVBJTEUgaXMgbm90IHNldAotQ09ORklHX0JST0tFTj15Ci1DT05GSUdfQlJPS0VOX09OX1NNUD15Ci1DT05GSUdfTE9DS19LRVJORUw9eQotQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgotCi0jCi0jIEdlbmVyYWwgc2V0dXAKLSMKLUNPTkZJR19MT0NBTFZFUlNJT049IiIKLUNPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15Ci1DT05GSUdfU1dBUD15Ci1DT05GSUdfU1lTVklQQz15Ci0jIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAotIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTQ1RMPXkKLSMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hPVFBMVUcgaXMgbm90IHNldAotQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKLUNPTkZJR19JS0NPTkZJRz15Ci1DT05GSUdfSUtDT05GSUdfUFJPQz15Ci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgotQ09ORklHX0VNQkVEREVEPXkKLUNPTkZJR19LQUxMU1lNUz15Ci0jIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAotIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0Ci1DT05GSUdfUFJJTlRLPXkKLUNPTkZJR19CVUc9eQotQ09ORklHX0JBU0VfRlVMTD15Ci1DT05GSUdfRlVURVg9eQotQ09ORklHX0VQT0xMPXkKLUNPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15Ci1DT05GSUdfU0hNRU09eQotQ09ORklHX0NDX0FMSUdOX0ZVTkNUSU9OUz0wCi1DT05GSUdfQ0NfQUxJR05fTEFCRUxTPTAKLUNPTkZJR19DQ19BTElHTl9MT09QUz0wCi1DT05GSUdfQ0NfQUxJR05fSlVNUFM9MAotIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0Ci1DT05GSUdfQkFTRV9TTUFMTD0wCi0KLSMKLSMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKLSMKLUNPTkZJR19NT0RVTEVTPXkKLUNPTkZJR19NT0RVTEVfVU5MT0FEPXkKLSMgQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQgaXMgbm90IHNldAotQ09ORklHX09CU09MRVRFX01PRFBBUk09eQotIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAotIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKLUNPTkZJR19LTU9EPXkKLQotIwotIyBTeXN0ZW0gVHlwZQotIwotIyBDT05GSUdfQVJDSF9DTFBTNzUwMCBpcyBub3Qgc2V0Ci1DT05GSUdfQVJDSF9DTFBTNzExWD15Ci0jIENPTkZJR19BUkNIX0NPMjg1IGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfRUJTQTExMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0NBTUVMT1QgaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9GT09UQlJJREdFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfSU5URUdSQVRPUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0lPUDNYWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0lYUDRYWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0lYUDIwMDAgaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9MNzIwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX1BYQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX1JQQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX1NBMTEwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX1MzQzI0MTAgaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9TSEFSSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0xIN0E0MFggaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9PTUFQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfVkVSU0FUSUxFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfSU1YIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfSDcyMFggaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9BQUVDMjAwMCBpcyBub3Qgc2V0Ci0KLSMKLSMgQ0xQUzcxMVgvRVA3MjFYIEltcGxlbWVudGF0aW9ucwotIwotIyBDT05GSUdfQVJDSF9BVVRDUFUxMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0NEQjg5NzEyIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfQ0VJVkEgaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9DTEVQNzMxMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0VEQjcyMTEgaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9QNzIwVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0ZPUlRVTkVUIGlzIG5vdCBzZXQKLUNPTkZJR19NQUNIX01QMTAwMD15Ci1DT05GSUdfTVAxMDAwXzkwTUhaPXkKLQotIwotIyBQcm9jZXNzb3IgVHlwZQotIwotQ09ORklHX0NQVV8zMj15Ci1DT05GSUdfQ1BVX0FSTTcyMFQ9eQotQ09ORklHX0NQVV8zMnY0PXkKLUNPTkZJR19DUFVfQUJSVF9MVjRUPXkKLUNPTkZJR19DUFVfQ0FDSEVfVjQ9eQotQ09ORklHX0NQVV9DQUNIRV9WSVZUPXkKLUNPTkZJR19DUFVfQ09QWV9WNFdUPXkKLUNPTkZJR19DUFVfVExCX1Y0V1Q9eQotCi0jCi0jIFByb2Nlc3NvciBGZWF0dXJlcwotIwotQ09ORklHX0FSTV9USFVNQj15Ci0KLSMKLSMgQnVzIHN1cHBvcnQKLSMKLUNPTkZJR19JU0FfRE1BX0FQST15Ci0KLSMKLSMgUENDQVJEIChQQ01DSUEvQ2FyZEJ1cykgc3VwcG9ydAotIwotIyBDT05GSUdfUENDQVJEIGlzIG5vdCBzZXQKLQotIwotIyBLZXJuZWwgRmVhdHVyZXMKLSMKLSMgQ09ORklHX1NNUCBpcyBub3Qgc2V0Ci1DT05GSUdfUFJFRU1QVD15Ci0jIENPTkZJR19OT19JRExFX0haIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfRElTQ09OVElHTUVNX0VOQUJMRSBpcyBub3Qgc2V0Ci1DT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15Ci1DT05GSUdfRkxBVE1FTV9NQU5VQUw9eQotIyBDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TUEFSU0VNRU1fTUFOVUFMIGlzIG5vdCBzZXQKLUNPTkZJR19GTEFUTUVNPXkKLUNPTkZJR19GTEFUX05PREVfTUVNX01BUD15Ci0jIENPTkZJR19TUEFSU0VNRU1fU1RBVElDIGlzIG5vdCBzZXQKLUNPTkZJR19BTElHTk1FTlRfVFJBUD15Ci0KLSMKLSMgQm9vdCBvcHRpb25zCi0jCi1DT05GSUdfWkJPT1RfUk9NX1RFWFQ9MHgwCi1DT05GSUdfWkJPT1RfUk9NX0JTUz0weDAKLUNPTkZJR19DTURMSU5FPSJjb25zb2xlPXR0eUNMLDM4NDAwIHJvb3Q9L2Rldi9kaXNjcy9kaXNjMC9wYXJ0MSBpcD1hbnkgY3M4OXgwX21lZGlhPXJqNDUiCi0jIENPTkZJR19YSVBfS0VSTkVMIGlzIG5vdCBzZXQKLQotIwotIyBGbG9hdGluZyBwb2ludCBlbXVsYXRpb24KLSMKLQotIwotIyBBdCBsZWFzdCBvbmUgZW11bGF0aW9uIG11c3QgYmUgc2VsZWN0ZWQKLSMKLUNPTkZJR19GUEVfTldGUEU9eQotIyBDT05GSUdfRlBFX05XRlBFX1hQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZQRV9GQVNURlBFIGlzIG5vdCBzZXQKLQotIwotIyBVc2Vyc3BhY2UgYmluYXJ5IGZvcm1hdHMKLSMKLUNPTkZJR19CSU5GTVRfRUxGPXkKLSMgQ09ORklHX0JJTkZNVF9BT1VUIGlzIG5vdCBzZXQKLUNPTkZJR19CSU5GTVRfTUlTQz15Ci0jIENPTkZJR19BUlRIVVIgaXMgbm90IHNldAotCi0jCi0jIFBvd2VyIG1hbmFnZW1lbnQgb3B0aW9ucwotIwotIyBDT05GSUdfUE0gaXMgbm90IHNldAotCi0jCi0jIE5ldHdvcmtpbmcKLSMKLUNPTkZJR19ORVQ9eQotCi0jCi0jIE5ldHdvcmtpbmcgb3B0aW9ucwotIwotQ09ORklHX1BBQ0tFVD15Ci0jIENPTkZJR19QQUNLRVRfTU1BUCBpcyBub3Qgc2V0Ci1DT05GSUdfVU5JWD15Ci0jIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKLUNPTkZJR19JTkVUPXkKLSMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAotQ09ORklHX0lQX0ZJQl9IQVNIPXkKLUNPTkZJR19JUF9QTlA9eQotQ09ORklHX0lQX1BOUF9ESENQPXkKLUNPTkZJR19JUF9QTlBfQk9PVFA9eQotQ09ORklHX0lQX1BOUF9SQVJQPXkKLSMgQ09ORklHX05FVF9JUElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9JUEdSRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NZTl9DT09LSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVRfQUggaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9FU1AgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9JUENPTVAgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAotQ09ORklHX0lORVRfRElBRz15Ci1DT05GSUdfSU5FVF9UQ1BfRElBRz15Ci0jIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0Ci1DT05GSUdfVENQX0NPTkdfQklDPXkKLUNPTkZJR19JUFY2PXkKLSMgQ09ORklHX0lQVjZfUFJJVkFDWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUNl9BSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUNl9FU1AgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVDZfSVBDT01QIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVQ2X1RVTk5FTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFY2X1RVTk5FTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRGSUxURVIgaXMgbm90IHNldAotCi0jCi0jIERDQ1AgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQotIwotIyBDT05GSUdfSVBfRENDUCBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCi0jCi0jIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FUTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CUklER0UgaXMgbm90IHNldAotIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUNORVQgaXMgbm90IHNldAotIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFggaXMgbm90IHNldAotIyBDT05GSUdfQVRBTEsgaXMgbm90IHNldAotIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKLSMgQ09ORklHX0xBUEIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0RJVkVSVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19FQ09ORVQgaXMgbm90IHNldAotIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfU0NIRUQgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0NMU19ST1VURSBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayB0ZXN0aW5nCi0jCi0jIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lSREEgaXMgbm90IHNldAotIyBDT05GSUdfQlQgaXMgbm90IHNldAotIyBDT05GSUdfSUVFRTgwMjExIGlzIG5vdCBzZXQKLQotIwotIyBEZXZpY2UgRHJpdmVycwotIwotCi0jCi0jIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKLSMKLUNPTkZJR19TVEFOREFMT05FPXkKLUNPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKLSMgQ09ORklHX0ZXX0xPQURFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIE1lbW9yeSBUZWNobm9sb2d5IERldmljZXMgKE1URCkKLSMKLUNPTkZJR19NVEQ9eQotQ09ORklHX01URF9ERUJVRz15Ci1DT05GSUdfTVREX0RFQlVHX1ZFUkJPU0U9MwotIyBDT05GSUdfTVREX0NPTkNBVCBpcyBub3Qgc2V0Ci1DT05GSUdfTVREX1BBUlRJVElPTlM9eQotQ09ORklHX01URF9SRURCT09UX1BBUlRTPW0KLUNPTkZJR19NVERfUkVEQk9PVF9ESVJFQ1RPUllfQkxPQ0s9LTIKLUNPTkZJR19NVERfUkVEQk9PVF9QQVJUU19VTkFMTE9DQVRFRD15Ci0jIENPTkZJR19NVERfUkVEQk9PVF9QQVJUU19SRUFET05MWSBpcyBub3Qgc2V0Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotIyBDT05GSUdfTVREX0FGU19QQVJUUyBpcyBub3Qgc2V0Ci0KLSMKLSMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xhdGlvbiBMYXllcnMKLSMKLUNPTkZJR19NVERfQ0hBUj15Ci1DT05GSUdfTVREX0JMT0NLPXkKLSMgQ09ORklHX0ZUTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORlRMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORlRMIGlzIG5vdCBzZXQKLQotIwotIyBSQU0vUk9NL0ZsYXNoIGNoaXAgZHJpdmVycwotIwotQ09ORklHX01URF9DRkk9bQotIyBDT05GSUdfTVREX0pFREVDUFJPQkUgaXMgbm90IHNldAotQ09ORklHX01URF9HRU5fUFJPQkU9bQotQ09ORklHX01URF9DRklfQURWX09QVElPTlM9eQotQ09ORklHX01URF9DRklfTk9TV0FQPXkKLSMgQ09ORklHX01URF9DRklfQkVfQllURV9TV0FQIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9DRklfTEVfQllURV9TV0FQIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfQ0ZJX0dFT01FVFJZPXkKLSMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8xIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8yIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfND15Ci0jIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfOCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMTYgaXMgbm90IHNldAotIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzMyIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9DRklfSTEgaXMgbm90IHNldAotQ09ORklHX01URF9DRklfSTI9eQotIyBDT05GSUdfTVREX0NGSV9JNCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfQ0ZJX0k4IGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9PVFAgaXMgbm90IHNldAotQ09ORklHX01URF9DRklfSU5URUxFWFQ9bQotIyBDT05GSUdfTVREX0NGSV9BTURTVEQgaXMgbm90IHNldAotIyBDT05GSUdfTVREX0NGSV9TVEFBIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfQ0ZJX1VUSUw9bQotIyBDT05GSUdfTVREX1JBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfUk9NIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAotIyBDT05GSUdfTVREX09CU09MRVRFX0NISVBTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9YSVAgaXMgbm90IHNldAotCi0jCi0jIE1hcHBpbmcgZHJpdmVycyBmb3IgY2hpcCBhY2Nlc3MKLSMKLSMgQ09ORklHX01URF9DT01QTEVYX01BUFBJTkdTIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfUEhZU01BUD1tCi1DT05GSUdfTVREX1BIWVNNQVBfU1RBUlQ9MHgwMDAwMDAwCi1DT05GSUdfTVREX1BIWVNNQVBfTEVOPTB4NDAwMDAwMAotQ09ORklHX01URF9QSFlTTUFQX0JBTktXSURUSD0yCi0jIENPTkZJR19NVERfQVJNX0lOVEVHUkFUT1IgaXMgbm90IHNldAotQ09ORklHX01URF9FREI3MzEyPW0KLSMgQ09ORklHX01URF9QTEFUUkFNIGlzIG5vdCBzZXQKLQotIwotIyBTZWxmLWNvbnRhaW5lZCBNVEQgZGV2aWNlIGRyaXZlcnMKLSMKLSMgQ09ORklHX01URF9TTFJBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfUEhSQU0gaXMgbm90IHNldAotIyBDT05GSUdfTVREX01URFJBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfQkxLTVREIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAotCi0jCi0jIERpc2stT24tQ2hpcCBEZXZpY2UgRHJpdmVycwotIwotIyBDT05GSUdfTVREX0RPQzIwMDAgaXMgbm90IHNldAotIyBDT05GSUdfTVREX0RPQzIwMDEgaXMgbm90IHNldAotIyBDT05GSUdfTVREX0RPQzIwMDFQTFVTIGlzIG5vdCBzZXQKLQotIwotIyBOQU5EIEZsYXNoIERldmljZSBEcml2ZXJzCi0jCi1DT05GSUdfTVREX05BTkQ9eQotIyBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfTkFORF9NUDEwMDA9eQotQ09ORklHX01URF9OQU5EX0lEUz15Ci0jIENPTkZJR19NVERfTkFORF9ESVNLT05DSElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9OQU5EX05BTkRTSU0gaXMgbm90IHNldAotCi0jCi0jIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAotIwotIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0Ci0jCi0KLSMKLSMgQmxvY2sgZGV2aWNlcwotIwotIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX0xPT1A9bQotIyBDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS19ERVZfTkJEIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX1JBTT15Ci1DT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MgotQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MTYzODQKLUNPTkZJR19CTEtfREVWX0lOSVRSRD15Ci0jIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKLQotIwotIyBJTyBTY2hlZHVsZXJzCi0jCi1DT05GSUdfSU9TQ0hFRF9OT09QPXkKLUNPTkZJR19JT1NDSEVEX0FTPXkKLUNPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKLUNPTkZJR19JT1NDSEVEX0NGUT15Ci0jIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAotCi0jCi0jIEFUQS9BVEFQSS9NRk0vUkxMIHN1cHBvcnQKLSMKLUNPTkZJR19JREU9eQotQ09ORklHX0JMS19ERVZfSURFPXkKLQotIwotIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKLSMKLSMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9IRF9JREUgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfSURFRElTSz15Ci0jIENPTkZJR19JREVESVNLX01VTFRJX01PREUgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9JREVDRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19CTEtfREVWX0lERVRBUEUgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9JREVGTE9QUFkgaXMgbm90IHNldAotIyBDT05GSUdfSURFX1RBU0tfSU9DVEwgaXMgbm90IHNldAotCi0jCi0jIElERSBjaGlwc2V0IHN1cHBvcnQvYnVnZml4ZXMKLSMKLSMgQ09ORklHX0lERV9HRU5FUklDIGlzIG5vdCBzZXQKLUNPTkZJR19JREVfQVJNPXkKLUNPTkZJR19CTEtfREVWX0lERV9NUDEwMDA9eQotIyBDT05GSUdfQkxLX0RFVl9JREVETUEgaXMgbm90IHNldAotIyBDT05GSUdfSURFRE1BX0FVVE8gaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9IRCBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotIyBDT05GSUdfUkFJRF9BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJIGlzIG5vdCBzZXQKLQotIwotIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQotIwotQ09ORklHX01EPXkKLSMgQ09ORklHX0JMS19ERVZfTUQgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfRE09eQotIyBDT05GSUdfRE1fQ1JZUFQgaXMgbm90IHNldAotIyBDT05GSUdfRE1fU05BUFNIT1QgaXMgbm90IHNldAotIyBDT05GSUdfRE1fTUlSUk9SIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RNX1pFUk8gaXMgbm90IHNldAotIyBDT05GSUdfRE1fTVVMVElQQVRIIGlzIG5vdCBzZXQKLQotIwotIyBGdXNpb24gTVBUIGRldmljZSBzdXBwb3J0Ci0jCi0jIENPTkZJR19GVVNJT04gaXMgbm90IHNldAotCi0jCi0jIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKLSMKLSMgQ09ORklHX0lFRUUxMzk0IGlzIG5vdCBzZXQKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBOZXR3b3JrIGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfTkVUREVWSUNFUz15Ci0jIENPTkZJR19EVU1NWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19UVU4gaXMgbm90IHNldAotCi0jCi0jIFBIWSBkZXZpY2Ugc3VwcG9ydAotIwotIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKLQotIwotIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKLSMKLUNPTkZJR19ORVRfRVRIRVJORVQ9eQotIyBDT05GSUdfTUlJIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NNQzkxWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ETTkwMDAgaXMgbm90IHNldAotQ09ORklHX0NTODl4MD15Ci0KLSMKLSMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKLSMKLQotIwotIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKLSMKLQotIwotIyBUb2tlbiBSaW5nIGRldmljZXMKLSMKLQotIwotIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKLSMKLSMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0Ci0KLSMKLSMgV2FuIGludGVyZmFjZXMKLSMKLSMgQ09ORklHX1dBTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUFAgaXMgbm90IHNldAotIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAotCi0jCi0jIElTRE4gc3Vic3lzdGVtCi0jCi0jIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKLQotIwotIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAotIwotQ09ORklHX0lOUFVUPXkKLQotIwotIyBVc2VybGFuZCBpbnRlcmZhY2VzCi0jCi0jIENPTkZJR19JTlBVVF9NT1VTRURFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAotQ09ORklHX0lOUFVUX0VWQlVHPXkKLQotIwotIyBJbnB1dCBEZXZpY2UgRHJpdmVycwotIwotIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfTU9VU0UgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0Ci0KLSMKLSMgSGFyZHdhcmUgSS9PIHBvcnRzCi0jCi1DT05GSUdfU0VSSU89eQotQ09ORklHX1NFUklPX1NFUlBPUlQ9eQotIyBDT05GSUdfU0VSSU9fTElCUFMyIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0Ci0jIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgQ2hhcmFjdGVyIGRldmljZXMKLSMKLUNPTkZJR19WVD15Ci1DT05GSUdfVlRfQ09OU09MRT15Ci1DT05GSUdfSFdfQ09OU09MRT15Ci0jIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAotCi0jCi0jIFNlcmlhbCBkcml2ZXJzCi0jCi1DT05GSUdfU0VSSUFMXzgyNTA9eQotQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQotQ09ORklHX1NFUklBTF84MjUwX05SX1VBUlRTPTIKLSMgQ09ORklHX1NFUklBTF84MjUwX0VYVEVOREVEIGlzIG5vdCBzZXQKLQotIwotIyBOb24tODI1MCBzZXJpYWwgcG9ydCBzdXBwb3J0Ci0jCi1DT05GSUdfU0VSSUFMX0NMUFM3MTFYPXkKLUNPTkZJR19TRVJJQUxfQ0xQUzcxMVhfQ09OU09MRT15Ci1DT05GSUdfU0VSSUFMX0NPUkU9eQotQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQotQ09ORklHX1VOSVg5OF9QVFlTPXkKLUNPTkZJR19MRUdBQ1lfUFRZUz15Ci1DT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKLQotIwotIyBJUE1JCi0jCi0jIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAotCi0jCi0jIFdhdGNoZG9nIENhcmRzCi0jCi0jIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0Ci1DT05GSUdfTlZSQU09eQotQ09ORklHX1JUQz15Ci0jIENPTkZJR19EVExLIGlzIG5vdCBzZXQKLSMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKLQotIwotIyBGdGFwZSwgdGhlIGZsb3BweSB0YXBlIGRldmljZSBkcml2ZXIKLSMKLSMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCi0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKLSMgQ09ORklHX0kyQyBpcyBub3Qgc2V0Ci0KLSMKLSMgSGFyZHdhcmUgTW9uaXRvcmluZyBzdXBwb3J0Ci0jCi1DT05GSUdfSFdNT049eQotIyBDT05GSUdfSFdNT05fVklEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAotCi0jCi0jIE1pc2MgZGV2aWNlcwotIwotCi0jCi0jIE11bHRpbWVkaWEgQ2FwYWJpbGl0aWVzIFBvcnQgZHJpdmVycwotIwotCi0jCi0jIE11bHRpbWVkaWEgZGV2aWNlcwotIwotIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKLQotIwotIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCi0jCi0jIENPTkZJR19EVkIgaXMgbm90IHNldAotCi0jCi0jIEdyYXBoaWNzIHN1cHBvcnQKLSMKLSMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKLQotIwotIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKLSMKLSMgQ09ORklHX1ZHQV9DT05TT0xFIGlzIG5vdCBzZXQKLUNPTkZJR19EVU1NWV9DT05TT0xFPXkKLQotIwotIyBTb3VuZAotIwotIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAotCi0jCi0jIFVTQiBzdXBwb3J0Ci0jCi1DT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15Ci0jIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0IgaXMgbm90IHNldAotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIwotIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKLQotIwotIyBGaWxlIHN5c3RlbXMKLSMKLUNPTkZJR19FWFQyX0ZTPXkKLUNPTkZJR19FWFQyX0ZTX1hBVFRSPXkKLSMgQ09ORklHX0VYVDJfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VYVDJfRlNfU0VDVVJJVFkgaXMgbm90IHNldAotIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAotQ09ORklHX0VYVDNfRlM9eQotQ09ORklHX0VYVDNfRlNfWEFUVFI9eQotIyBDT05GSUdfRVhUM19GU19QT1NJWF9BQ0wgaXMgbm90IHNldAotIyBDT05GSUdfRVhUM19GU19TRUNVUklUWSBpcyBub3Qgc2V0Ci1DT05GSUdfSkJEPXkKLSMgQ09ORklHX0pCRF9ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfRlNfTUJDQUNIRT15Ci1DT05GSUdfUkVJU0VSRlNfRlM9bQotIyBDT05GSUdfUkVJU0VSRlNfQ0hFQ0sgaXMgbm90IHNldAotIyBDT05GSUdfUkVJU0VSRlNfUFJPQ19JTkZPIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JFSVNFUkZTX0ZTX1hBVFRSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfRlNfUE9TSVhfQUNMPXkKLSMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfSU5PVElGWT15Ci1DT05GSUdfUVVPVEE9eQotIyBDT05GSUdfUUZNVF9WMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19RRk1UX1YyIGlzIG5vdCBzZXQKLUNPTkZJR19RVU9UQUNUTD15Ci1DT05GSUdfRE5PVElGWT15Ci0jIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKLQotIwotIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCi0jCi0jIENPTkZJR19JU085NjYwX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VERl9GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgRE9TL0ZBVC9OVCBGaWxlc3lzdGVtcwotIwotIyBDT05GSUdfTVNET1NfRlMgaXMgbm90IHNldAotIyBDT05GSUdfVkZBVF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OVEZTX0ZTIGlzIG5vdCBzZXQKLQotIwotIyBQc2V1ZG8gZmlsZXN5c3RlbXMKLSMKLUNPTkZJR19QUk9DX0ZTPXkKLUNPTkZJR19TWVNGUz15Ci1DT05GSUdfVE1QRlM9eQotIyBDT05GSUdfSFVHRVRMQkZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hVR0VUTEJfUEFHRSBpcyBub3Qgc2V0Ci1DT05GSUdfUkFNRlM9eQotIyBDT05GSUdfUkVMQVlGU19GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcwotIwotIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BRkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IRlNQTFVTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JFRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfQkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19KRkZTX0ZTIGlzIG5vdCBzZXQKLUNPTkZJR19KRkZTMl9GUz1tCi1DT05GSUdfSkZGUzJfRlNfREVCVUc9MAotQ09ORklHX0pGRlMyX0ZTX1dSSVRFQlVGRkVSPXkKLSMgQ09ORklHX0pGRlMyX0NPTVBSRVNTSU9OX09QVElPTlMgaXMgbm90IHNldAotQ09ORklHX0pGRlMyX1pMSUI9eQotQ09ORklHX0pGRlMyX1JUSU1FPXkKLSMgQ09ORklHX0pGRlMyX1JVQklOIGlzIG5vdCBzZXQKLUNPTkZJR19DUkFNRlM9bQotIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayBGaWxlIFN5c3RlbXMKLSMKLUNPTkZJR19ORlNfRlM9eQotQ09ORklHX05GU19WMz15Ci0jIENPTkZJR19ORlNfVjNfQUNMIGlzIG5vdCBzZXQKLUNPTkZJR19ORlNfVjQ9eQotIyBDT05GSUdfTkZTX0RJUkVDVElPIGlzIG5vdCBzZXQKLUNPTkZJR19ORlNEPXkKLUNPTkZJR19ORlNEX1YzPXkKLSMgQ09ORklHX05GU0RfVjNfQUNMIGlzIG5vdCBzZXQKLUNPTkZJR19ORlNEX1Y0PXkKLUNPTkZJR19ORlNEX1RDUD15Ci1DT05GSUdfUk9PVF9ORlM9eQotQ09ORklHX0xPQ0tEPXkKLUNPTkZJR19MT0NLRF9WND15Ci1DT05GSUdfRVhQT1JURlM9eQotQ09ORklHX05GU19DT01NT049eQotQ09ORklHX1NVTlJQQz15Ci1DT05GSUdfU1VOUlBDX0dTUz15Ci1DT05GSUdfUlBDU0VDX0dTU19LUkI1PXkKLSMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAotQ09ORklHX1NNQl9GUz1tCi0jIENPTkZJR19TTUJfTkxTX0RFRkFVTFQgaXMgbm90IHNldAotQ09ORklHX0NJRlM9bQotIyBDT05GSUdfQ0lGU19TVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DSUZTX1hBVFRSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NJRlNfRVhQRVJJTUVOVEFMIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DT0RBX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR185UF9GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgUGFydGl0aW9uIFR5cGVzCi0jCi0jIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAotQ09ORklHX01TRE9TX1BBUlRJVElPTj15Ci0KLSMKLSMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKLSMKLUNPTkZJR19OTFM9eQotQ09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCi1DT05GSUdfTkxTX0NPREVQQUdFXzQzNz15Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfNzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV83NzUgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODUyIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NTUgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1NyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODYwIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NjEgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MiBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODYzIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NjQgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODY2IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NjkgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzkzNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfOTUwIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV85MzIgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzk0OSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzggaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzEyNTAgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzEyNTEgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0FTQ0lJIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzEgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0lTTzg4NTlfMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV8zIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzQgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0lTTzg4NTlfNSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV82IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzcgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0lTTzg4NTlfOSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV8xMyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV8xNCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV8xNSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfS09JOF9SIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX1VURjggaXMgbm90IHNldAotCi0jCi0jIFByb2ZpbGluZyBzdXBwb3J0Ci0jCi0jIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAotCi0jCi0jIEtlcm5lbCBoYWNraW5nCi0jCi1DT05GSUdfUFJJTlRLX1RJTUU9eQotQ09ORklHX0RFQlVHX0tFUk5FTD15Ci0jIENPTkZJR19NQUdJQ19TWVNSUSBpcyBub3Qgc2V0Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNAotQ09ORklHX0RFVEVDVF9TT0ZUTE9DS1VQPXkKLSMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU0xBQiBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfUFJFRU1QVD15Ci0jIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TUElOTE9DS19TTEVFUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19LT0JKRUNUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0lORk89eQotIyBDT05GSUdfREVCVUdfRlMgaXMgbm90IHNldAotQ09ORklHX0ZSQU1FX1BPSU5URVI9eQotQ09ORklHX0RFQlVHX1VTRVI9eQotQ09ORklHX0RFQlVHX1dBSVRRPXkKLUNPTkZJR19ERUJVR19FUlJPUlM9eQotQ09ORklHX0RFQlVHX0xMPXkKLSMgQ09ORklHX0RFQlVHX0lDRURDQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19DTFBTNzExWF9VQVJUMiBpcyBub3Qgc2V0Ci0KLSMKLSMgU2VjdXJpdHkgb3B0aW9ucwotIwotIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0Ci0KLSMKLSMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCi0jCi1DT05GSUdfQ1JZUFRPPXkKLSMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAotQ09ORklHX0NSWVBUT19NRDU9eQotIyBDT05GSUdfQ1JZUFRPX1NIQTEgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX1NIQTI1NiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fU0hBNTEyIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19XUDUxMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fVEdSMTkyIGlzIG5vdCBzZXQKLUNPTkZJR19DUllQVE9fREVTPXkKLSMgQ09ORklHX0NSWVBUT19CTE9XRklTSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fU0VSUEVOVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fQUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19DQVNUNSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fQ0FTVDYgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX1RFQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAotCi0jCi0jIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCi0jCi0KLSMKLSMgTGlicmFyeSByb3V0aW5lcwotIwotIyBDT05GSUdfQ1JDX0NDSVRUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSQzE2IGlzIG5vdCBzZXQKLUNPTkZJR19DUkMzMj15Ci0jIENPTkZJR19MSUJDUkMzMkMgaXMgbm90IHNldAotQ09ORklHX1pMSUJfSU5GTEFURT1tCi1DT05GSUdfWkxJQl9ERUZMQVRFPW0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtY2xwczcxMXgvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtY2xwczcxMXgvS2NvbmZpZwppbmRleCBkNWMxNTUwLi4wNzkzZGNmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWNscHM3MTF4L0tjb25maWcKKysrIGIvYXJjaC9hcm0vbWFjaC1jbHBzNzExeC9LY29uZmlnCkBAIC02OSwxNyArNjksNiBAQAogCiAJICBZb3UgYWxtb3N0IHN1cmVseSB3YW50IHRvIHNheSBOIGhlcmUuCiAKLWNvbmZpZyBNQUNIX01QMTAwMAotCWJvb2wgIk1BQ0hfTVAxMDAwIgotCWhlbHAKLQkgIFNheSBZIGlmIHlvdSBpbnRlbmQgdG8gcnVuIHRoZSBrZXJuZWwgb24gdGhlIENvbWRpYWwgTVAxMDAwIHBsYXRmb3JtLgotCi1jb25maWcgTVAxMDAwXzkwTUhaCi0JYm9vbCAiTVAxMDAwXzkwTUhaIgotCWRlcGVuZHMgb24gTUFDSF9NUDEwMDAKLQloZWxwCi0JICBTYXkgWSBpZiB5b3UgaGF2ZSB0aGUgTVAxMDAwIGNvbmZpZ3VyZWQgdG8gYmUgc2V0IGF0IDkwTUhaIHJhdGhlciB0aGFuIDc0TUhaCi0KIGVuZG1lbnUKIAogZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtY2xwczcxMXgvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLWNscHM3MTF4L01ha2VmaWxlCmluZGV4IDhhNmRjMWMuLjRhMTk3MzEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtY2xwczcxMXgvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vbWFjaC1jbHBzNzExeC9NYWtlZmlsZQpAQCAtMTUsNyArMTUsNiBAQAogb2JqLSQoQ09ORklHX0FSQ0hfQ0xFUDczMTIpICs9IGNsZXA3MzEyLm8KIG9iai0kKENPTkZJR19BUkNIX0VEQjcyMTEpICArPSBlZGI3MjExLWFyY2gubyBlZGI3MjExLW1tLm8KIG9iai0kKENPTkZJR19BUkNIX0ZPUlRVTkVUKSArPSBmb3J0dW5ldC5vCi1vYmotJChDT05GSUdfTUFDSF9NUDEwMDApICAgKz0gbXAxMDAwLW1hY2gubyBtcDEwMDAtbW0ubyBtcDEwMDAtc2Vwcm9tLm8KIG9iai0kKENPTkZJR19BUkNIX1A3MjBUKSAgICArPSBwNzIwdC5vCiBsZWRzLSQoQ09ORklHX0FSQ0hfUDcyMFQpICAgKz0gcDcyMHQtbGVkcy5vCiBvYmotJChDT05GSUdfTEVEUykgICAgICAgICAgKz0gJChsZWRzLXkpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWNscHM3MTF4L21wMTAwMC1tYWNoLmMgYi9hcmNoL2FybS9tYWNoLWNscHM3MTF4L21wMTAwMC1tYWNoLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODE2YmMuLjAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1jbHBzNzExeC9tcDEwMDAtbWFjaC5jCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqICBsaW51eC9hcmNoL2FybS9tYWNoLW1wMTAwMC9tcDEwMDAuYwotICoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDUgQ29tZGlhbCBDb3Jwb3JhdGlvbgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSAqLwotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgotCi0jaW5jbHVkZSA8YXNtL3NldHVwLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvbXAxMDAwLXNlcHJvbS5oPgotCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0KLWV4dGVybiB2b2lkIG1wMTAwMF9tYXBfaW8odm9pZCk7Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBtcDEwMDBfaW5pdCh2b2lkKQotewotICAgIHNlcHJvbV9pbml0KCk7Ci19Ci0KLU1BQ0hJTkVfU1RBUlQoTVAxMDAwLCAiQ29tZGlhbCBNUDEwMDAiKQotCS8qIE1haW50YWluZXI6IEpvbiBSaW5nbGUgKi8KLQkucGh5c19yYW0JPSAweGMwMDAwMDAwLAotCS5waHlzX2lvCT0gMHg4MDAwMDAwMCwKLQkuaW9fcGdfb2Zmc3QJPSAoKDB4ZmYwMDAwMDApID4+IDE4KSAmIDB4ZmZmYywKLQkuYm9vdF9wYXJhbXMJPSAweGMwMDE1MTAwLAotCS5tYXBfaW8JCT0gbXAxMDAwX21hcF9pbywKLQkuaW5pdF9pcnEJPSBjbHBzNzExeF9pbml0X2lycSwKLQkuaW5pdF9tYWNoaW5lCT0gbXAxMDAwX2luaXQsCi0JLnRpbWVyCQk9ICZjbHBzNzExeF90aW1lciwKLU1BQ0hJTkVfRU5ECi0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtY2xwczcxMXgvbXAxMDAwLW1tLmMgYi9hcmNoL2FybS9tYWNoLWNscHM3MTF4L21wMTAwMC1tbS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGU4MTBiLi4wMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtY2xwczcxMXgvbXAxMDAwLW1tLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogIGxpbnV4L2FyY2gvYXJtL21hY2gtbXAxMDAwL21tLmMKLSAqCi0gKiAgRXh0cmEgTU0gcm91dGluZXMgZm9yIHRoZSBNUDEwMDAKLSAqCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA1IENvbWRpYWwgQ29ycG9yYXRpb24KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0gKi8KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0KLSNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KLSNpbmNsdWRlIDxhc20vcGFnZS5oPgotI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+Ci0jaW5jbHVkZSA8YXNtL3NpemVzLmg+Ci0KLSNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KLQotZXh0ZXJuIHZvaWQgY2xwczcxMXhfbWFwX2lvKHZvaWQpOwotCi1zdGF0aWMgc3RydWN0IG1hcF9kZXNjIG1wMTAwMF9pb19kZXNjW10gX19pbml0ZGF0YSA9IHsKLSAgICB7IE1QMTAwMF9FSU9fQkFTRSwJTVAxMDAwX0VJT19TVEFSVCwJTVAxMDAwX0VJT19TSVpFLCBNVF9ERVZJQ0UgfSwKLSAgICB7IE1QMTAwMF9GSU9fQkFTRSwJTVAxMDAwX0ZJT19TVEFSVCwJTVAxMDAwX0ZJT19TSVpFLCBNVF9ERVZJQ0UgfSwKLSAgICB7IE1QMTAwMF9MSU9fQkFTRSwJTVAxMDAwX0xJT19TVEFSVCwJTVAxMDAwX0xJT19TSVpFLCBNVF9ERVZJQ0UgfSwKLSAgICB7IE1QMTAwMF9OSU9fQkFTRSwJTVAxMDAwX05JT19TVEFSVCwJTVAxMDAwX05JT19TSVpFLCBNVF9ERVZJQ0UgfSwKLSAgICB7IE1QMTAwMF9JREVfQkFTRSwJTVAxMDAwX0lERV9TVEFSVCwJTVAxMDAwX0lERV9TSVpFLCBNVF9ERVZJQ0UgfSwKLSAgICB7IE1QMTAwMF9EU1BfQkFTRSwJTVAxMDAwX0RTUF9TVEFSVCwJTVAxMDAwX0RTUF9TSVpFLCBNVF9ERVZJQ0UgfQotfTsKLQotdm9pZCBfX2luaXQgbXAxMDAwX21hcF9pbyh2b2lkKQotewotCWNscHM3MTF4X21hcF9pbygpOwotCWlvdGFibGVfaW5pdChtcDEwMDBfaW9fZGVzYywgQVJSQVlfU0laRShtcDEwMDBfaW9fZGVzYykpOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1jbHBzNzExeC9tcDEwMDAtc2Vwcm9tLmMgYi9hcmNoL2FybS9tYWNoLWNscHM3MTF4L21wMTAwMC1zZXByb20uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIyZDBiZS4uMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWNscHM3MTF4L21wMTAwMC1zZXByb20uYworKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0vKmAKLSAqIG1wMTAwMC1zZXByb20uYwotICoKLSAqICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFNlcmlhbCBFRVBST00gY29kZSBmb3IgdGhlIE1QMTAwMCBib2FyZAotICoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDUgQ29tZGlhbCBDb3Jwb3JhdGlvbgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSAqCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KLSNpbmNsdWRlIDxhc20vaGFyZHdhcmUvY2xwczcxMTEuaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9tcDEwMDAtc2Vwcm9tLmg+Ci0KLS8qIElmIFNlcHJvbUluaXQoKSBjYW4gaW5pdGlhbGl6ZSBhbmQgY2hlY2tzdW0gdGhlIHNlcHJvbSBzdWNjZXNzZnVsbHksICovCi0vKiB0aGVuIGl0IHdpbGwgcG9pbnQgc2Vwcm9tX2RhdGFfcHRyIGF0IHRoZSBzaGFkb3cgY29weS4gICovCi0KLXN0YXRpYyBlZXByb21fc3RydWN0IHNlcHJvbV9kYXRhOwkJCS8qIHNoYWRvdyBjb3B5IG9mIHNlcHJvbSBjb250ZW50ICovCi0KLWVlcHJvbV9zdHJ1Y3QgKnNlcHJvbV9kYXRhX3B0ciA9IDA7CQkvKiAwID0+IG5vdCBpbml0aWFsaXplZCAqLwotCi0vKgotICogUG9ydCBEIEJpdCA1IGlzIENoaXAgU2VsZWN0IGZvciBFRVBST00KLSAqIFBvcnQgRSBCaXQgMCBpcyBJbnB1dCwgRGF0YSBvdXQgZnJvbSBFRVBST00KLSAqIFBvcnQgRSBCaXQgMSBpcyBPdXRwdXQsIERhdGEgaW4gdG8gRUVQUk9NCi0gKiBQb3J0IEUgQml0IDIgaXMgT3V0cHV0LCBDTEsgdG8gRUVQUk9NCi0gKi8KLQotc3RhdGljIGNoYXIgKnBvcnRfZF9wdHIgPSAoY2hhciAqKShDTFBTNzExMV9WSVJUX0JBU0UgKyBQRERSKTsKLXN0YXRpYyBjaGFyICpwb3J0X2VfcHRyID0gKGNoYXIgKikoQ0xQUzcxMTFfVklSVF9CQVNFICsgUEVEUik7Ci0KLSNkZWZpbmUgTk9fT0ZfU0hPUlRTCTY0CS8vIERldmljZSBpcyA2NCB4IDE2IGJpdHMKLSNkZWZpbmUgRU5BQkxFX1JXCTAKLSNkZWZpbmUgRElTQUJMRV9SVwkxCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCB0b2dnbGVfc2Vwcm9tX2Nsb2NrKHZvaWQpCi17Ci0JKnBvcnRfZV9wdHIgfD0gSHdQb3J0RVNlcHJvbUNMSzsKLQkqcG9ydF9lX3B0ciAmPSB+KEh3UG9ydEVTZXByb21DTEspOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2VsZWN0X2VlcHJvbSh2b2lkKQotewotCSpwb3J0X2RfcHRyIHw9IEh3UG9ydERFRUNTOwotCSpwb3J0X2VfcHRyICY9IH4oSHdQb3J0RVNlcHJvbUNMSyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBkZXNlbGVjdF9lZXByb20odm9pZCkKLXsKLQkqcG9ydF9kX3B0ciAmPSB+KEh3UG9ydERFRUNTKTsKLQkqcG9ydF9lX3B0ciAmPSB+KEh3UG9ydEVTZXByb21ESW4pOwotfQotCi0vKgotICogR2V0U2Vwcm9tRGF0YVB0ciAtIHJldHVybnMgcG9pbnRlciB0byBzaGFkb3cgKFJBTSkgY29weSBvZiBzZXByb20KLSAqICAgICAgICAgICAgICAgICAgICBhbmQgcmV0dXJucyAwIGlmIHNlcHJvbSBpcyBub3QgaW5pdGlhbGl6ZWQgb3IKLSAqICAgICAgICAgICAgICAgICAgICBoYXMgYSBjaGVja3N1bSBlcnJvci4KLSAqLwotCi1lZXByb21fc3RydWN0KiBnZXRfc2Vwcm9tX3B0cih2b2lkKQotewotCXJldHVybiBzZXByb21fZGF0YV9wdHI7Ci19Ci0KLXVuc2lnbmVkIGNoYXIqIGdldF9lZXByb21fbWFjX2FkZHJlc3Modm9pZCkKLXsKLQlyZXR1cm4gc2Vwcm9tX2RhdGFfcHRyLT52YXJpYW50LmVwcm9tX3N0cnVjdC5tYWNfQWRkcmVzczsKLX0KLQotLyoKLSAqIFJlYWRTUHJvbSwgUGh5c2ljYWxseSByZWFkcyBkYXRhIGZyb20gdGhlIFNlcmlhbCBQUk9NCi0gKi8KLXN0YXRpYyB2b2lkIHJlYWRfc3Byb20oc2hvcnQgYWRkcmVzcywgaW50IGxlbmd0aCwgZWVwcm9tX3N0cnVjdCAqYnVmZmVyKQotewotCXNob3J0IGRhdGEgPSBDT01NQU5EX1JFQUQgfCAoYWRkcmVzcyAmIDB4M0YpOwotCXNob3J0IGJpdDsKLQlpbnQgaTsKLQotCXNlbGVjdF9lZXByb20oKTsKLQotCS8vIENsb2NrIGluIDkgYml0cyBvZiB0aGUgY29tbWFuZAotCWZvciAoaSA9IDAsIGJpdCA9IDB4MTAwOyBpIDwgOTsgaSsrLCBiaXQgPj49IDEpIHsKLQkJaWYgKGRhdGEgJiBiaXQpCi0JCQkqcG9ydF9lX3B0ciB8PSBId1BvcnRFU2Vwcm9tREluOwotCQllbHNlCi0JCQkqcG9ydF9lX3B0ciAmPSB+KEh3UG9ydEVTZXByb21ESW4pOwotCi0JCXRvZ2dsZV9zZXByb21fY2xvY2soKTsKLQl9Ci0KLQkvLwotCS8vIE5vdyByZWFkIG9uZSBvciBtb3JlIHNob3J0cyBvZiBkYXRhIGZyb20gdGhlIFNlcHJvbQotCS8vCi0Jd2hpbGUgKGxlbmd0aC0tID4gMCkgewotCQlkYXRhID0gMDsKLQotCQkvLyBSZWFkIDE2IGJpdHMgYXQgYSB0aW1lCi0JCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7Ci0JCQlkYXRhIDw8PSAxOwotCQkJdG9nZ2xlX3NlcHJvbV9jbG9jaygpOwotCQkJZGF0YSB8PSAqcG9ydF9lX3B0ciAmIEh3UG9ydEVTZXByb21ET3V0OwotCi0JCX0KLQotCQlidWZmZXItPnZhcmlhbnQuZXByb21fc2hvcnRfZGF0YVthZGRyZXNzKytdID0gZGF0YTsKLQl9Ci0KLQlkZXNlbGVjdF9lZXByb20oKTsKLQotCXJldHVybjsKLX0KLQotCi0KLS8qCi0gKiBSZWFkU2VyaWFsUFJPTQotICoKLSAqIElucHV0OiBQb2ludGVyIHRvIGFycmF5IG9mIDY0IHggMTYgQml0cwotICoKLSAqIE91dHB1dDogaWYgbm8gcHJvYmxlbSByZWFkaW5nIGRhdGEgaXMgZmlsbGVkIGluCi0gKi8KLXN0YXRpYyB2b2lkIHJlYWRfc2VyaWFsX3Byb20oZWVwcm9tX3N0cnVjdCAqZGF0YSkKLXsKLQlyZWFkX3Nwcm9tKDAsIDY0LCBkYXRhKTsKLX0KLQotCi0vLwotLy8gQ29tcHV0ZSBTZXJpYWwgRUVQUk9NIGNoZWNrc3VtCi0vLwotLy8gSW5wdXQ6IFBvaW50ZXIgdG8gc3RydWN0IHdpdGggRXByb20gZGF0YQotLy8KLS8vIE91dHB1dDogVGhlIGNvbXB1dGVkIEVwcm9tIGNoZWNrc3VtCi0vLwotc3RhdGljIHNob3J0IGNvbXB1dGVfc2Vwcm9tX2NoZWNrc3VtKGVlcHJvbV9zdHJ1Y3QgKmRhdGEpCi17Ci0Jc2hvcnQgY2hlY2tzdW0gPSAwOwotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IDEyNjsgaSsrKSB7Ci0JCWNoZWNrc3VtICs9IChzaG9ydClkYXRhLT52YXJpYW50LmVwcm9tX2J5dGVfZGF0YVtpXTsKLQl9Ci0KLQlyZXR1cm4oKHNob3J0KSgweDU1NTUgLSAoY2hlY2tzdW0gJiAweEZGRkYpKSk7Ci19Ci0KLS8vCi0vLyBNYWtlIHN1cmUgdGhlIGRhdGEgcG9ydCBiaXRzIGZvciB0aGUgU0VQUk9NIGFyZSBjb3JyZWN0bHkgaW5pdGlhbGlzZWQKLS8vCi0KLXZvaWQgX19pbml0IHNlcHJvbV9pbml0KHZvaWQpCi17Ci0Jc2hvcnQgY2hlY2tzdW07Ci0KLQkvLyBJbml0IFBvcnQgRAotCSooY2hhciAqKShDTFBTNzExMV9WSVJUX0JBU0UgKyBQREREUikgPSAweDA7Ci0JKihjaGFyICopKENMUFM3MTExX1ZJUlRfQkFTRSArIFBERFIpID0gMHgxNTsKLQotCS8vIEluaXQgUG9ydCBFCi0JKihpbnQgKikoQ0xQUzcxMTFfVklSVF9CQVNFICsgUEVERFIpID0gMHgwNjsKLQkqKGludCAqKShDTFBTNzExMV9WSVJUX0JBU0UgKyBQRURSKSA9IDB4MDQ7Ci0KLQkvLwotCS8vIE1ha2Ugc3VyZSB0aGF0IEVFUFJPTSBzdHJ1Y3Qgc2l6ZSBuZXZlciBleGNlZWRzIDEyOCBieXRlcwotCS8vCi0JaWYgKHNpemVvZihlZXByb21fc3RydWN0KSA+IDEyOCkgewotCQlwYW5pYygiU2VyaWFsIFBST00gc3RydWN0IHNpemUgPiAxMjgsIGFib3J0aW5nIHJlYWRcbiIpOwotCX0KLQotCXJlYWRfc2VyaWFsX3Byb20oJnNlcHJvbV9kYXRhKTsKLQotCWNoZWNrc3VtID0gY29tcHV0ZV9zZXByb21fY2hlY2tzdW0oJnNlcHJvbV9kYXRhKTsKLQotCWlmIChjaGVja3N1bSAhPSBzZXByb21fZGF0YS52YXJpYW50LmVwcm9tX3Nob3J0X2RhdGFbNjNdKSB7Ci0JCXBhbmljKCJTZXJpYWwgRUVQUk9NIGNoZWNrc3VtIGZhaWxlZFxuIik7Ci0JfQotCi0Jc2Vwcm9tX2RhdGFfcHRyID0gJnNlcHJvbV9kYXRhOwotfQotCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9jbHBzNzExeC5jIGIvZHJpdmVycy9zZXJpYWwvY2xwczcxMXguYwppbmRleCA2YTY3ZThmLi44N2VmMzY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9jbHBzNzExeC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL2NscHM3MTF4LmMKQEAgLTQwOCwxMSArNDA4LDcgQEAKIAl7CiAJCS5pb2Jhc2UJCT0gU1lTQ09OMSwKIAkJLmlycQkJPSBJUlFfVVRYSU5UMSwgLyogSVJRX1VSWElOVDEsIElSUV9VTVNJTlQgKi8KLSNpZmRlZiBDT05GSUdfTVAxMDAwXzkwTUhaCi0JCS51YXJ0Y2xrCT0gNDUxNTg0MCwKLSNlbHNlCiAJCS51YXJ0Y2xrCT0gMzY4NjQwMCwKLSNlbmRpZgogCQkuZmlmb3NpemUJPSAxNiwKIAkJLm9wcwkJPSAmY2xwczcxMXhfcG9wcywKIAkJLmxpbmUJCT0gMCwKQEAgLTQyMSwxMSArNDE3LDcgQEAKIAl7CiAJCS5pb2Jhc2UJCT0gU1lTQ09OMiwKIAkJLmlycQkJPSBJUlFfVVRYSU5UMiwgLyogSVJRX1VSWElOVDIgKi8KLSNpZmRlZiBDT05GSUdfTVAxMDAwXzkwTUhaCi0JCS51YXJ0Y2xrCT0gNDUxNTg0MCwKLSNlbHNlCiAJCS51YXJ0Y2xrCT0gMzY4NjQwMCwKLSNlbmRpZgogCQkuZmlmb3NpemUJPSAxNiwKIAkJLm9wcwkJPSAmY2xwczcxMXhfcG9wcywKIAkJLmxpbmUJCT0gMSwKQEAgLTU1OSw3ICs1NTEsNiBAQAogc3RhdGljIHN0cnVjdCB1YXJ0X2RyaXZlciBjbHBzNzExeF9yZWcgPSB7CiAJLmRyaXZlcl9uYW1lCQk9ICJ0dHlDTCIsCiAJLmRldl9uYW1lCQk9ICJ0dHlDTCIsCi0JLmRldmZzX25hbWUJCT0gInR0eUNMIiwKIAkubWFqb3IJCQk9IFNFUklBTF9DTFBTNzExWF9NQUpPUiwKIAkubWlub3IJCQk9IFNFUklBTF9DTFBTNzExWF9NSU5PUiwKIAkubnIJCQk9IFVBUlRfTlIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvaGFyZHdhcmUuaAppbmRleCBmODY0YzM2Li4xMzg2ODcxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9oYXJkd2FyZS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2hhcmR3YXJlLmgKQEAgLTIzNSwxMjEgKzIzNSw0IEBACiAjZGVmaW5lIENFSVZBX1BCMF9CTEtfQlROCSgxPDwwKQogI2VuZGlmIC8vICNpZiBkZWZpbmVkIChDT05GSUdfQVJDSF9DRUlWQSkKIAotI2lmIGRlZmluZWQgKENPTkZJR19NQUNIX01QMTAwMCkKLS8qIE5PUiBGTEFTSCAqLwotI2RlZmluZSBNUDEwMDBfTklPX0JBU0UJCTB4ZjkwMDAwMDAJLyogdmlydHVhbCAqLwotI2RlZmluZSBNUDEwMDBfTklPX1NUQVJUCUNTMF9QSFlTX0JBU0UJLyogcGh5c2ljYWwgKi8KLSNkZWZpbmUgTVAxMDAwX05JT19TSVpFCQkweDAwNDAwMDAwCi0KLS8qIERTUCBJbnRlcmZhY2UgKi8KLSNkZWZpbmUgTVAxMDAwX0RTUF9CQVNFCQkweGZhMDAwMDAwCS8qIHZpcnR1YWwgKi8KLSNkZWZpbmUgTVAxMDAwX0RTUF9TVEFSVAlDUzFfUEhZU19CQVNFCS8qIHBoeXNpY2FsICovCi0jZGVmaW5lIE1QMTAwMF9EU1BfU0laRQkJMHgwMDEwMDAwMAotCi0vKiBMQ0QsIERBQS9EU1AsIFJUQywgREFBIFJXIFJlZyBhbGwgaW4gQ1MyICovCi0jZGVmaW5lIE1QMTAwMF9MSU9fQkFTRQkJMHhmYjAwMDAwMAkvKiB2aXJ0dWFsICovCi0jZGVmaW5lIE1QMTAwMF9MSU9fU1RBUlQJQ1MyX1BIWVNfQkFTRQkvKiBwaHlzaWNhbCAqLwotI2RlZmluZSBNUDEwMDBfTElPX1NJWkUJCTB4MDAxMDAwMDAKLQotLyogTkFORCBGTEFTSCAqLwotI2RlZmluZSBNUDEwMDBfRklPX0JBU0UJCTB4ZmMwMDAwMDAJLyogdmlydHVhbCAqLwotI2RlZmluZSBNUDEwMDBfRklPX1NUQVJUCUNTM19QSFlTX0JBU0UJLyogcGh5c2ljYWwgKi8KLSNkZWZpbmUgTVAxMDAwX0ZJT19TSVpFCQkweDAwODAwMDAwCi0KLS8qIEV0aGVybmV0ICovCi0jZGVmaW5lIE1QMTAwMF9FSU9fQkFTRQkJMHhmZDAwMDAwMAkvKiB2aXJ0dWFsIAkqLwotI2RlZmluZSBNUDEwMDBfRUlPX1NUQVJUCUNTNF9QSFlTX0JBU0UJLyogcGh5c2ljYWwgCSovCi0jZGVmaW5lIE1QMTAwMF9FSU9fU0laRQkJMHgwMDEwMDAwMAotCi0jZGVmaW5lCU1QMTAwMF9MQ0RfT0ZGU0VUCTB4MDAwMDAwMDAJLyogTENEIG9mZnNldCBpbiBDUzIgKi8KLSNkZWZpbmUJTVAxMDAwX0RERF9PRkZTRVQJMHgwMDAwMTAwMAkvKiBEQUEvREFJL0RTUCBzZnQgcmVzZXQgb2Zmc3QqLwotI2RlZmluZQlNUDEwMDBfUlRDX09GRlNFVAkweDAwMDAyMDAwCS8qIFJUQyBvZmZzZXQgaW4gQ1MyICovCi0jZGVmaW5lCU1QMTAwMF9EQUFfT0ZGU0VUCTB4MDAwMDMwMDAJLyogREFBIFJXIHJlZyBvZmZzZXQgaW4gQ1MyICovCi0KLS8qIElERSAqLwotI2RlZmluZSBNUDEwMDBfSURFX0JBU0UJCTB4ZmUwMDAwMDAgICAgICAvKiB2aXJ0dWFsICovCi0jZGVmaW5lIE1QMTAwMF9JREVfU1RBUlQJQ1M1X1BIWVNfQkFTRSAgICAgIC8qIHBoeXNpY2FsICovCi0jZGVmaW5lIE1QMTAwMF9JREVfU0laRQkJMHgwMDEwMDAwMCAgICAgIC8qIGFjdHVhbGx5IGl0J3Mgb25seSAweDEwMDAgKi8KLQotI2RlZmluZSBJUlFfSEFSRERJU0sgSVJRX0VJTlQyCi0KLS8qCi0gKiBJREUgcmVnaXN0ZXJzIGRlZmluaXRpb24KLSAqLwotCi0jZGVmaW5lIElERV9DT05UUk9MX0JBU0UJCShNUDEwMDBfSURFX0JBU0UgKyAweDEwMDApCi0jZGVmaW5lIElERV9CQVNFX09GRgkJCShNUDEwMDBfSURFX0JBU0UpCi0KLSNkZWZpbmUgSURFX1dSSVRFX0RFVklDRV9EQVRBCQkoSURFX0JBU0VfT0ZGICsgMHgwKQotI2RlZmluZSBJREVfRkVBVFVSRVNfUkVHSVNURVIJCShJREVfQkFTRV9PRkYgKyAweDIpCi0jZGVmaW5lIElERV9TRUNUT1JfQ09VTlRfUkVHSVNURVIJKElERV9CQVNFX09GRiArIDB4NCkKLSNkZWZpbmUgSURFX1NFQ1RPUl9OVU1CRVJfUkVHSVNURVIJKElERV9CQVNFX09GRiArIDB4NikKLSNkZWZpbmUgSURFX0NZTElOREVSX0xPV19SRUdJU1RFUgkoSURFX0JBU0VfT0ZGICsgMHg4KQotI2RlZmluZSBJREVfQ1lMSU5ERVJfSElHSF9SRUdJU1RFUgkoSURFX0JBU0VfT0ZGICsgMHhhKQotI2RlZmluZSBJREVfREVWSUNFX0hFQURfUkVHSVNURVIJKElERV9CQVNFX09GRiArIDB4YykKLSNkZWZpbmUgSURFX0NPTU1BTkRfREFUQV9SRUdJU1RFUgkoSURFX0JBU0VfT0ZGICsgMHhlKQotI2RlZmluZSBJREVfREVWSUNFX0NPTlRST0xfUkVHSVNURVIJKElERV9DT05UUk9MX0JBU0UgKyAweGMpCi0KLSNkZWZpbmUgSURFX0lSUSAgICAgICAgICAgICAgICAgICAgICBJUlFfRUlOVDIKLQotCi0jZGVmaW5lIFJUQ19QT1JUKHgpCShNUDEwMDBfTElPX0JBU0UrMHgyMDAwICsgKHgqMikpCi0jZGVmaW5lIFJUQ19BTFdBWVNfQkNECTAKLQotLyoKLS8vIERlZmluaXRpb25zIG9mIHRoZSBiaXQgZmllbGRzIGluIHRoZSBId1BvcnRBIHJlZ2lzdGVyIGZvciB0aGUKLS8vIE1QMTAwMCBib2FyZC4KLSovCi0jZGVmaW5lIEh3UG9ydEFLZXlib2FyZFJvdzEgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCi0jZGVmaW5lIEh3UG9ydEFLZXlib2FyZFJvdzIgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIEh3UG9ydEFLZXlib2FyZFJvdzMgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0Ci0jZGVmaW5lIEh3UG9ydEFLZXlib2FyZFJvdzQgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4Ci0jZGVmaW5lIEh3UG9ydEFLZXlib2FyZFJvdzUgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCi0jZGVmaW5lIEh3UG9ydEFLZXlib2FyZFJvdzYgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCi0jZGVmaW5lIEh3UG9ydEFMQ0RFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCi0jZGVmaW5lIEh3UG9ydEFPZmZob29rCSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKLQotLyoKLS8vIERlZmluaXRpb25zIG9mIHRoZSBiaXQgZmllbGRzIGluIHRoZSBId1BvcnRCIHJlZ2lzdGVyIGZvciB0aGUKLS8vIE1QMTAwMCBib2FyZC4KLSovCi0jZGVmaW5lIEh3UG9ydEJMM01vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCi0jZGVmaW5lIEh3UG9ydEJMM0NsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIEh3UG9ydEJTQ2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCi0jZGVmaW5lIEh3UG9ydEJTRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIEh3UG9ydEJMM0RhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0Ci0jZGVmaW5lIEh3UG9ydEJNdXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4Ci0jZGVmaW5lIEh3UG9ydEJRRDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCi0jZGVmaW5lIEh3UG9ydEJRRDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCi0jZGVmaW5lIEh3UG9ydEJRRDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCi0jZGVmaW5lIEh3UG9ydEJRRDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCi0KLS8qCi0vLyBEZWZpbml0aW9ucyBvZiB0aGUgYml0IGZpZWxkcyBpbiB0aGUgSHdQb3J0RCByZWdpc3RlciBmb3IgdGhlCi0vLyBNUDEwMDAgYm9hcmQuCi0qLwotI2RlZmluZSBId1BvcnRETEVEMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQotI2RlZmluZSBId1BvcnRETEVEMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgotI2RlZmluZSBId1BvcnRETEVEMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAotI2RlZmluZSBId1BvcnRETEVENCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAotI2RlZmluZSBId1BvcnRETEVENSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAotI2RlZmluZSBId1BvcnRERUVDUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAotI2RlZmluZSBId1BvcnRCUlRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAotI2RlZmluZSBId1BvcnRCUkkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAotCi0KLS8qCi0vLyBEZWZpbml0aW9ucyBvZiB0aGUgYml0IGZpZWxkcyBpbiB0aGUgSHdQb3J0RSByZWdpc3RlciBmb3IgdGhlCi0vLyBNUDEwMDAgYm9hcmQuCi0qLwotCi0jZGVmaW5lIEh3UG9ydEVDTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCi0jZGVmaW5lIEh3UG9ydEVTZXByb21ET3V0ICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCi0jZGVmaW5lIEh3UG9ydEVBTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIEh3UG9ydEVTZXByb21ESW4gICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIEh3UG9ydEVOQU5EQ1MgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0Ci0jZGVmaW5lIEh3UG9ydEVTZXByb21DTEsgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0Ci0KLSNlbmRpZiAvLyAjaWYgZGVmaW5lZCAoQ09ORklHX01BQ0hfTVAxMDAwKQotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L21wMTAwMC1zZXByb20uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L21wMTAwMC1zZXByb20uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U1NTY2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9tcDEwMDAtc2Vwcm9tLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0jaWZuZGVmIE1QMTAwMF9TRVBST01fSAotI2RlZmluZSBNUDEwMDBfU0VQUk9NX0gKLQotLyoKLSAqIG1wMTAwMC1zZXByb20uaAotICoKLSAqCi0gKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBTZXJpYWwgRUVQUk9NIGRlZmluaXRpb25zIGZvciB0aGUgTVAxMDAwIGJvYXJkCi0gKgotICogIENvcHlyaWdodCAoQykgMjAwNSBDb21kaWFsIENvcnBvcmF0aW9uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotICoKLSAqLwotCi0jZGVmaW5lIENPTU1BTkRfRVJBU0UJCSgweDFDMCkKLSNkZWZpbmUgQ09NTUFORF9FUkFTRV9BTEwJKDB4MTIwKQotI2RlZmluZSBDT01NQU5EX1dSSVRFX0RJU0FCTEUJKDB4MTAwKQotI2RlZmluZSBDT01NQU5EX1dSSVRFX0VOQUJMRQkoMHgxMzApCi0jZGVmaW5lIENPTU1BTkRfUkVBRAkJKDB4MTgwKQotI2RlZmluZSBDT01NQU5EX1dSSVRFCQkoMHgxNDApCi0jZGVmaW5lIENPTU1BTkRfV1JJVEVfQUxMCSgweDExMCkKLQotLy8KLS8vIFNlcmlhbCBFRVBST00gZGF0YSBmb3JtYXQKLS8vCi0KLSNkZWZpbmUgUEFDS0VEIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKQotCi10eXBlZGVmIHN0cnVjdCBfRUVQUk9NIHsKLQl1bmlvbiB7Ci0JCXVuc2lnbmVkIGNoYXIgZXByb21fYnl0ZV9kYXRhWzEyOF07Ci0JCXVuc2lnbmVkIHNob3J0IGVwcm9tX3Nob3J0X2RhdGFbNjRdOwotCQlzdHJ1Y3QgewotCQkJdW5zaWduZWQgY2hhciB2ZXJzaW9uIFBBQ0tFRDsJLy8gRUVQUk9NIFZlcnNpb24gIjEiIGZvciBub3cKLQkJCXVuc2lnbmVkIGNoYXIgYm94X2lkIFBBQ0tFRDsgCS8vIEJveCBJRCAoU3RhbmRhbG9uZSwgU09ITywgZW1iZWRkZWQsIGV0YykKLQkJCXVuc2lnbmVkIGNoYXIgbWFqb3JfaHdfdmVyc2lvbiBQQUNLRUQ7CS8vIE1ham9yIEhhcmR3YXJlIHZlcnNpb24gKEhleCkKLQkJCXVuc2lnbmVkIGNoYXIgbWlub3JfaHdfdmVyc2lvbiBQQUNLRUQ7CS8vIE1pbm9yIEhhcmR3YXJlIFZlcnNpb24gKEhleCkKLQkJCXVuc2lnbmVkIGNoYXIgbWZnX2lkWzNdIFBBQ0tFRDsJLy8gTWFudWZhY3R1cmVyIElEICgzIGNoYXJhY3RlciBBbHBoYWJldGljKQotCQkJdW5zaWduZWQgY2hhciBtZmdfc2VyaWFsX251bWJlclsxMF0gUEFDS0VEOwkvLyBNYW51ZmFjdHVyZXIgU2VyaWFsIG51bWJlcgotCQkJdW5zaWduZWQgY2hhciBtZmdfZGF0ZVszXSBQQUNLRUQ7CS8vIERhdGUgb2YgTWZnIChGb3JtYXR0ZWQgWVk6TU06REQpCi0JCQl1bnNpZ25lZCBjaGFyIGNvdW50cnkgUEFDS0VEOwkvLyBDb3VudHJ5IG9mIGRlcGxveW1lbnQKLQkJCXVuc2lnbmVkIGNoYXIgbWFjX0FkZHJlc3NbNl0gUEFDS0VEOwkvLyBNQUMgQWRkcmVzcwotCQkJdW5zaWduZWQgY2hhciBvZW1fc3RyaW5nWzIwXSBQQUNLRUQ7CS8vIE9FTSBJRCBzdHJpbmcKLQkJCXVuc2lnbmVkIHNob3J0IGZlYXR1cmVfYml0czEgUEFDS0VEOwkvLyBGZWF0dXJlIEJpdHMgMQotCQkJdW5zaWduZWQgc2hvcnQgZmVhdHVyZV9iaXRzMiBQQUNLRUQ7CS8vIEZlYXR1cmUgQml0cyAyCi0JCQl1bnNpZ25lZCBjaGFyIGZpbGxlcls3NV0gUEFDS0VEOwkJLy8gVW51c2VkL1VuZGVmaW5lZAmTMJQgaW5pdGlhbGl6ZWQKLQkJCXVuc2lnbmVkIHNob3J0IGNoZWNrc3VtIFBBQ0tFRDsJCS8vIGJ5dGUgYWNjdW11bGF0ZWQgc2hvcnQgY2hlY2tzdW0KLQkJfSBlcHJvbV9zdHJ1Y3Q7Ci0JfSB2YXJpYW50OwotfSAgZWVwcm9tX3N0cnVjdDsKLQotLyogVGhlc2Ugc2V0dGluZ3MgbXVzdCBiZSBtdXR1YWxseSBleGNsdXNpdmUgKi8KLSNkZWZpbmUJRkVBVFVSRV9CSVRTMV9EUkFNU0laRV8xNk1FRwkweDAwMDEgIC8qIDAgc2lnbmlmaWVzIDQgTUVHIHN5c3RlbSAqLwotI2RlZmluZQlGRUFUVVJFX0JJVFMxX0RSQU1TSVpFXzhNRUcJMHgwMDAyICAvKiAxIGluIGJpdCAxID0gOE1FRyBzeXN0ZW0gKi8KLSNkZWZpbmUJRkVBVFVSRV9CSVRTMV9EUkFNU0laRV82NE1FRwkweDAwMDQgIC8qIDEgaW4gYml0IDIgPSA2NE1FRyBzeXN0ZW0gKi8KLQotI2RlZmluZSBGRUFUVVJFX0JJVFMxX0NQVUlTOTBNRUcgICAgIDB4MDAxMAotCi1leHRlcm4gdm9pZCBzZXByb21faW5pdCh2b2lkKTsKLWV4dGVybiBlZXByb21fc3RydWN0KiBnZXRfc2Vwcm9tX3B0cih2b2lkKTsKLWV4dGVybiB1bnNpZ25lZCBjaGFyKiBnZXRfZWVwcm9tX21hY19hZGRyZXNzKHZvaWQpOwotCi0jZW5kaWYgLyogTVAxMDAwX1NFUFJPTV9IICovCi0K