ZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vYXVkaW9fYXBpLmggYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2F1ZGlvX2FwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNzg2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2F1ZGlvX2FwaS5oCkBAIC0wLDAgKzEsMzY1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIENvcHlyaWdodCAoQykgMjAwOCwgWlRFIENvcnBvcmF0aW9uLg0KKyogDQorKiBGaWxlIE5hbWU6ICAgICBhdWRpb19hcGkuaA0KKyogRmlsZSBNYXJrOiAgICAgIA0KKyogRGVzY3JpcHRpb246ICBQcm92aWRlIGF1ZGlvIG1vZHVsZSBmdW5jdGlvbiBwcm90b3R5cGUgZGVjbGFyYXRpb24gYW5kIHR5cGUgZGVjbGFyYXRpb24uDQorKiAgICAgICAgICAgICAgICAgICAgRm9yIG5vIG11bHRpbWVkaWEgcHJvY2Vzc29yIHBsYXRmb3JtLg0KKyogT3RoZXJzOiAgICAgIA0KKyogVmVyc2lvbjogICAgICB2MC41DQorKiBBdXRob3I6ICAgICAgRGFuZ01hb2NoYW5nDQorKiBEYXRlOiAgICAgICAgICAgIDIwMDgtMDYtMzANCisqIA0KKyogSGlzdG9yeSAxOiAgICAgICAgICANCisqICAgICBEYXRlOiANCisqICAgICBWZXJzaW9uOg0KKyogICAgIEF1dGhvcjogDQorKiAgICAgTW9kaWZpY2F0aW9uOiAgDQorKiBIaXN0b3J5IDI6IA0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfQVVESU9fQVBJX0gNCisjZGVmaW5lIF9BVURJT19BUElfSA0KKw0KKyNpbmNsdWRlICJkcnZzX2lvLmgiDQorI2luY2x1ZGUgImRydnNfaW9fdm9pY2UuaCINCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgWkRSVl9ERVZfQVVESU8gICJhdWRpbyIgIC8qVGhlIGRldmljZSBuYW1lIG9mIGF1ZGlvIGRyaXZlci4qLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qSW5mb3JtYXRpb24gZnJvbSBkcml2ZXIgdG8gdXBwZXIgYXBwbGljYXRpb24uKi8NCit0eXBlZGVmIGVudW0gew0KKyAgICBBVURJT19JTkZPX0ZJTEVfSU5WQUxJRCAgICAgPSAwLA0KKyAgICBBVURJT19JTkZPX1BMQVlfRU5EICAgICAgICAgICAgLA0KKyAgICBBVURJT19JTkZPX1BMQVlfRVJSICAgICAgICAgICAgLA0KKyAgICBBVURJT19JTkZPX1JFQ19FTkQgICAgICAgICAgICAgLA0KKyAgICBBVURJT19JTkZPX1JFQ19FUlIgICAgICAgICAgICAgLA0KKw0KKyAgICBNQVhfQVVESU9fSU5GTw0KK30gVF9aRHJ2QXVkaW9fSW5mbzsNCisNCisvKiBBdWRpbyBpbnB1dCBjaGFubmVsIHZvbHVtIGxldmVsIHNlbGVjdGlvbi4gKi8NCit0eXBlZGVmIGVudW17DQorICAgIEFVRElPX0lOUFVUX1ZPTF9MRVZFTF8wID0gMCwNCisgICAgQVVESU9fSU5QVVRfVk9MX0xFVkVMXzEsDQorICAgIEFVRElPX0lOUFVUX1ZPTF9MRVZFTF8yLA0KKyAgICBBVURJT19JTlBVVF9WT0xfTEVWRUxfMywNCisgICAgQVVESU9fSU5QVVRfVk9MX0xFVkVMXzQsDQorICAgIEFVRElPX0lOUFVUX1ZPTF9MRVZFTF81LA0KKwlBVURJT19JTlBVVF9WT0xfTEVWRUxfNiwNCisgICAgQVVESU9fSU5QVVRfVk9MX0xFVkVMXzcsDQorICAgIEFVRElPX0lOUFVUX1ZPTF9MRVZFTF84LA0KKyAgICBBVURJT19JTlBVVF9WT0xfTEVWRUxfOSwNCisgICAgQVVESU9fSU5QVVRfVk9MX0xFVkVMXzEwLA0KKyAgICBBVURJT19JTlBVVF9WT0xfTEVWRUxfMTEsDQorICAgIE1BWF9BVURJT19JTlBVVF9WT0xfTEVWRUwgICAgIA0KK30gVF9aRHJ2QXVkaW9fSW5wdXRWb2xMZXZlbDsNCisNCisvKiBBdWRpbyBvdXRwdXQgY2hhbm5lbCB2b2x1bSBsZXZlbCBzZWxlY3Rpb24uICovDQordHlwZWRlZiBlbnVtew0KKyAgICBBVURJT19PVVRQVVRfVk9MX0xFVkVMXzAgPSAwLA0KKyAgICBBVURJT19PVVRQVVRfVk9MX0xFVkVMXzEsDQorICAgIEFVRElPX09VVFBVVF9WT0xfTEVWRUxfMiwNCisgICAgQVVESU9fT1VUUFVUX1ZPTF9MRVZFTF8zLA0KKyAgICBBVURJT19PVVRQVVRfVk9MX0xFVkVMXzQsDQorICAgIEFVRElPX09VVFBVVF9WT0xfTEVWRUxfNSwNCisgICAgQVVESU9fT1VUUFVUX1ZPTF9MRVZFTF82LA0KKyAgICBBVURJT19PVVRQVVRfVk9MX0xFVkVMXzcsDQorICAgIEFVRElPX09VVFBVVF9WT0xfTEVWRUxfOCwNCisgICAgQVVESU9fT1VUUFVUX1ZPTF9MRVZFTF85LA0KKyAgICBBVURJT19PVVRQVVRfVk9MX0xFVkVMXzEwLA0KKyAgICBBVURJT19PVVRQVVRfVk9MX0xFVkVMXzExLA0KKw0KKyAgICBNQVhfQVVESU9fT1VUUFVUX1ZPTF9MRVZFTCAgICAgDQorfSBUX1pEcnZBdWRpb19PdXRwdXRWb2xMZXZlbDsNCisNCisvKiBicmllZiBTZWxlY3QgdGhlIGF1ZGlvIGRhdGEgc2FtcGxpbmcgcmF0ZSBmb3IgdGhlIFN0ZXJlbyBEQUMuDQorICogbm90ZTogVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGFsbCBvZiB0aGUgcG9zc2libGUgc2FtcGxpbmcgcmF0ZXMgY3VycmVudGx5DQorICogc3VwcG9ydGVkIGJ5IHRoZSBTdGVyZW8gREFDLiBPbmUgb2YgdGhlc2Ugc2FtcGxpbmcgcmF0ZXMgbXVzdCBiZSBzZWxlY3RlZA0KKyAqIGFuZCBpdCBtdXN0IG1hdGNoIHRoYXQgb2YgdGhlIGF1ZGlvIHN0cmVhbSBvciBlbHNlIHNpZ25hbCBkaXN0b3J0aW9uIHdpbGwNCisgKiBvY2N1ci4NCisgKi8NCit0eXBlZGVmIGVudW0NCit7DQorICAgIEFVRElPX1JBVEVfOF9LSFosICAgICAgICAgICAgICAgLyogVXNlIDgga0h6IHNhbXBsaW5nIHJhdGUuICAgICAgKi8NCisgICAgQVVESU9fUkFURV8xMV8wMjVfS0haLCAgICAgICAgICAvKiBVc2UgMTEuMDI1IGtIeiBzYW1wbGluZyByYXRlLiAqLw0KKyAgICBBVURJT19SQVRFXzEyX0tIWiwgICAgICAgICAgICAgIC8qIFVzZSAxMiBrSHogc2FtcGxpbmcgcmF0ZS4gICAgICovDQorICAgIEFVRElPX1JBVEVfMTZfS0haLCAgICAgICAgICAgICAgLyogVXNlIDE2IGtIeiBzYW1wbGluZyByYXRlLiAgICAgKi8NCisgICAgQVVESU9fUkFURV8yMl8wNTBfS0haLCAgICAgICAgICAvKiBVc2UgMjIuMDUwIGtIeiBzYW1wbGluZyByYXRlLiAqLw0KKyAgICBBVURJT19SQVRFXzI0X0tIWiwgICAgICAgICAgICAgIC8qIFVzZSAyNCBrSHogc2FtcGxpbmcgcmF0ZS4gICAgICovDQorICAgIEFVRElPX1JBVEVfMzJfS0haLCAgICAgICAgICAgICAgLyogVXNlIDMyIGtIeiBzYW1wbGluZyByYXRlLiAgICAgKi8NCisgICAgQVVESU9fUkFURV80NF8xX0tIWiwgICAgICAgICAgICAvKiBVc2UgNDQuMSBrSHogc2FtcGxpbmcgcmF0ZS4gICAqLw0KKyAgICBBVURJT19SQVRFXzQ4X0tIWiwgICAgICAgICAgICAgIC8qIFVzZSA0OCBrSHogc2FtcGxpbmcgcmF0ZS4gICAgICovDQorICAgIEFVRElPX1JBVEVfNjRfS0haLCAgICAgICAgICAgICAgLyogVXNlIDY0IGtIeiBzYW1wbGluZyByYXRlICAgICAgKi8NCisgICAgQVVESU9fUkFURV85Nl9LSFosICAgICAgICAgICAgICAvKiBVc2UgOTYga0h6IHNhbXBsaW5nIHJhdGUuICAgICAqLw0KKyAgICBNQVhfQVVESU9fUkFURQ0KKyB9IFRfWkRydkF1ZGlvX1NhbXBsZVJhdGU7DQorDQorLyogIEF1ZGlvIHN0ZXJlb0RBQyBiYWxhbmNlIGxlZnQgbGV2ZWwgc2VsZWN0aW9uLiAqLw0KK3R5cGVkZWYgZW51bXsNCisgICAgQVVESU9fU1RFUkVPX0JBTEFOQ0VfTEVWRUxfMCA9IDAsDQorICAgIEFVRElPX1NURVJFT19CQUxBTkNFX0xFVkVMXzEsDQorICAgIEFVRElPX1NURVJFT19CQUxBTkNFX0xFVkVMXzIsDQorICAgIEFVRElPX1NURVJFT19CQUxBTkNFX0xFVkVMXzMsDQorICAgIEFVRElPX1NURVJFT19CQUxBTkNFX0xFVkVMXzQsDQorICAgIEFVRElPX1NURVJFT19CQUxBTkNFX0xFVkVMXzUsDQorICAgIEFVRElPX1NURVJFT19CQUxBTkNFX0xFVkVMXzYsDQorICAgIEFVRElPX1NURVJFT19CQUxBTkNFX0xFVkVMXzcsDQorICAgIE1BWF9BVURJT19TVEVSRU9fQkFMQU5DRV9MRVZFTCAgICAgDQorfSBUX1pEcnZBdWRpb19CYWxhbmNlTGV2ZWw7DQorDQorLyogQXVkaW8gc3RlcmVvREFDIEJBTkxBTkNFICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgIFRfWkRydkF1ZGlvX0JhbGFuY2VMZXZlbCAgIGJhbGFuY2VMZWZ0OyAgIC8qIGxlZnQgKi8NCisgICAgVF9aRHJ2QXVkaW9fQmFsYW5jZUxldmVsICAgYmFsYW5jZXJpZ2h0OyAgLyogcmlnaHQgKi8NCit9IFRfWkRydkF1ZGlvX0JhbmxhbmNlOw0KKw0KKy8qIEF1ZGlvIDNERUZGRUNUICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgIFVJTlQxNiBzZXRiYXNzOyAgICAgICAgICAgICAgICAgIC8qc2V0IGJhc3MgZWZmZWN0Ki8NCisgICAgVUlOVDE2IHNldHN1cnI7ICAgICAgICAgICAgICAgICAgLypzZXQgc3Vycm91bmQgZWZmZWN0Ki8NCit9VF9aRHJ2QXVkaW9fM0RFRkZFQ1Q7DQorDQorLyogQXVkaW8gZXEgbW9kZSAqLw0KK3R5cGVkZWYgZW51bSANCit7DQorICAgIEFVRElPX0VRTU9ERV9OT1JNQUw9MCwNCisgICAgQVVESU9fRVFNT0RFX0NMQVNTSUMsDQorICAgIEFVRElPX0VRTU9ERV9QT1AsDQorICAgIEFVRElPX0VRTU9ERV9KQVpaLA0KKyAgICBBVURJT19FUU1PREVfUk9DSywNCisgICAgTUFYX0FVRElPX0VRTU9ERQ0KK31UX1pEcnZBVURJT19FUU1PREU7DQorDQorLyogQXVkaW8gcGxheSBpbmZvICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgIFVJTlQzMiBEYXRhTGVudGg7ICAgIC8qVG90YWwgcGxheSBkYXRhbGVudGgoYnl0ZSkuKi8NCisgICAgICANCit9IFRfWkRydkF1ZGlvX1BsYXlJbmZvOw0KKw0KKy8qIEF1ZGlvIGJ1ZmZlciBpbmZvICovDQordHlwZWRlZiBzdHJ1Y3QgICAgICAgICANCit7DQorICAgIFZPSUQgKmJ1ZjsgICAgICAgICAgIC8qIEF1ZGlvIGJ1ZmZlciBwb2ludGVyICovDQorICAgIFVJTlQzMiBidWZmZXJzaXplOyAgIC8qIEF1ZGlvIGJ1ZmZlciBzaXplICovDQorfVRfWkRydkF1ZGlvX0J1ZkluZm87DQorDQorI2lmIDANCit0eXBlZGVmIGVudW0NCit7DQorICAgIEFVRElPX01PTk9fQ0hBTk5FTCwNCisgICAgQVVESU9fRFVBTF9DSEFOTkVMDQorfVRfWkRydkF1ZGlvX0NoYW5uZWw7DQorI2VuZGlmDQorDQorLyogQXVkaW8gYnVmZmVyIHNpemUgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgICAgVF9aRHJ2QXVkaW9fQ2hhbm5lbCBjaGFubmVsOw0KKyAgICBVSU5UMzIgYnVmZmVyc2l6ZTsNCit9VF9aRHJ2QXVkaW9fUGxheVBhcmFtOw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsICBWYXJpYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uIFByb3RvdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQordHlwZWRlZiB2b2lkICgqVF9aRHJ2QXVkaW9fQ2FsbGJhY2tGdW5jKSAoVF9aRHJ2QXVkaW9fSW5mbyk7DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogekRydl9PcGVuDQorKiBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG9wZW4gZGV2aWNlIGFjY29yZGluZyB0byBkZXZpY2UgbmFtZS4NCisqIFBhcmFtZXRlcnM6IA0KKyogICBJbnB1dDoNCisgICAgICAgICAgICBwYXRobmFtZTpkZXZpY2UgbmFtZSwgWkRSVl9ERVZfQVVESU8gaW4gYXVkaW8gDQorKiAgICAgICAgIGZsYWdzOiBubyB1c2UNCisqICAgT3V0cHV0OiBOb25lDQorKiBSZXR1cm5zOiAgIA0KKyogICAgICAgZGV2aWNlIGZpbGUgZGVzY3JpcHRvciBpZiBzdWNjZXNzZWQuIFsxLCBaRFJWX01BWF9ERVZfRklMRV9OVU0pLCBwbGVhc2UgcmVmZXIgdG8gZGFsX2FwaS5oDQorKiAgICAgICBEUlZfRVJSX05PX1RISVNfREVWSUNFOiB0aGlzIGRldmljZSBoYXNuJ3QgYmVlbiBpbnN0YWxsZWQgeWV0DQorKiAgICAgICBEUlZfRVJSX0ZEX09WRVJGTE9XOiBubyBmcmVlIGZkIGVudHJ5DQorKiAgICAgICBEUlZfRVJSX05PVF9TVVBQT1JURUQ6IHRoaXMgZGV2aWNlIGRvbid0IHN1cHBvcnQgb3BlbiBvcGVyYXRpb24uDQorKiAgICAgICBEUlZfRVJSX09QRU5fVElNRVM6IGhhcyBiZWVuIG9wZW5lZCBhbHJlYWR5LiANCisqICAgICAgIG90aGVyczogb3RoZXJzIGVycm9yIGNvZGUuIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIHRoZSBoZWFkZXIgZmlsZSBvZiBoYWwgbGF5ZXINCisqIE90aGVyczogTm9uZQ0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qU0lOVDMyIHpEcnZfT3BlbiAoY29uc3QgQ0hBUiAqcGF0aG5hbWUsIFNJTlQzMiBmbGFncykqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246IHpEcnZfQ2xvc2UNCisqIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2xvc2UgYSBkZXZpY2UgYWNjb3JkaW5nIHRvIGRldmljZSBmaWxlIGRlc2NyaXB0b3IuDQorKiBQYXJhbWV0ZXJzOiANCisqICAgSW5wdXQ6DQorKiAgICAgICAgICAgICAgZmQgOmRldmljZSBmaWxlIGRlc2NyaXB0b3IgDQorKiAgIE91dHB1dDpOb25lDQorKiBSZXR1cm5zOiANCisqICAgICAgIERSVl9TVUNDRVNTOiBzdWNjZXNzZWQuDQorKiAgICAgICBEUlZfRVJSX05PVF9PUEVORUQ6IGhhcyBub3QgYmVlbiBvcGVuZCB5ZXQuDQorKiAgICAgICBEUlZfRVJSX0ZEX1RBQkxFOiBkZXZpY2UgZHJpdmVyIHRhYmxlIGhhcyBiZWVuIGludmFsaWQuDQorKiAgICAgICBEUlZfRVJSX05PVF9TVVBQT1JURUQ6IHRoaXMgZGV2aWNlIGRvbid0IHN1cHBvcnQgY2xvc2Ugb3BlcmF0aW9uLg0KKyogICAgICAgb3RoZXJzOiBvdGhlcnMgZXJyb3IgY29kZS4gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGhlYWRlciBmaWxlIG9mIGhhbCBsYXllcg0KKyogT3RoZXJzOiBOb25lDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLypTSU5UMzIgekRydl9DbG9zZShVSU5UMzIgZmQpKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiB6RHJ2X1dyaXRlDQorKiBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHdyaXRlIGRhdGEgdG8gYSBkZXZpY2UgYWNjb3JkaW5nIHRvIHRoZSBkZXZpY2UgZmlsZSBkZXNjcmlwdG9yLg0KKyogUGFyYW1ldGVyczoNCisqICAgICAgIChJTikNCisqICAgICAgICAgICAgICAgZmQ6IGRldmljZSBmaWxlIGRlc2NyaXB0b3INCisqICAgICAgICAgICAgICAgYnVmX2xlbjogYnVmZmVyIGxlbmd0aA0KKyogICAgICAgICAgICAgICBidWY6IHBvaW50ZXIgdG8gdGhlICBkYXRhIHRvIGJlIHdyaXR0ZW4NCisqICAgICAgIChPVVQpDQorKiAgICAgICAgICAgICAgICBOb25lIA0KKyogUmV0dXJuczoNCisqICAgICAgIHRoZSB3cml0ZSBieXRlIG51bWJlciBvZiByZWFkIGRhdGEgaWYgc3VjY2Vzc2VkDQorKiAgICAgICBEUlZfRVJSX0lOVkFMSURfUEFSQU06IHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkDQorKiAgICAgICBEUlZfRVJSX0RFVl9DTE9TRUQ6IGhhcyBub3QgYmVlbiBvcGVuZCB5ZXQuDQorKiAgICAgICBEUlZfRVJSX05PVF9TVVBQT1JURUQ6IHRoaXMgZGV2aWNlIGRvbid0IHN1cHBvcnQgcmVhZCBvcGVyYXRpb24uDQorKiAgICAgICBvdGhlcnM6IGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIHRoZSBoZWFkZXIgZmlsZSBvZiBoYWwgbGF5ZXINCisqIE90aGVyczogICANCisqICAgICAgIE5vbmUuDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogU0lOVDMyIHpEcnZfV3JpdGUoVUlOVDMyIGZkLCBWT0lEICpidWYsIFVJTlQzMiBidWZfbGVuKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246IHpEcnZfSW9jdGwNCisqIERlc2NyaXB0aW9uOiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnRyb2wgYXVkaW8gZGV2aWNlLg0KKyogUGFyYW1ldGVyczogDQorKiAgIElucHV0Og0KKyogICAgICAgICAgIHByaXZhdGU6ZGV2aWNlIHByaXZhdGUgZGF0YQ0KKyogICAgICAgICAgIGNtZDpjb21tYW5kIGNvZGUNCisqICAgICAgICAgICBwYXJhbTpjb21tYW5kIHBhcmFtZXRlcnMNCisqICAgT3V0cHV0Ok5vbmUNCisqIFJldHVybnM6IA0KKyogICAgICAgICAgIFRfWkRydl9FcnJDb2RlDQorKiAgICAgICAgICAgICBvdGhlcnM6IGlmIGVycmNvZGU8LTEwMCAscGxlYXNlIHJlZmVyIHRvIHRoZSBoYWwgbGF5ZXIgZXJyY29kZSBmaWxlDQorDQorKiBPdGhlcnM6ICAgICBjbWQtYXJnIA0KKyAgICAgICAgICAgICAgICAgICAgIDEgIENNRDpJT0NUTF9BVURJT19SRUNPUkRfU1RBUlQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX1pEcnZSY2RfSW5mb1BhcmFtKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46DQorICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgMiAgQ01EOklPQ1RMX0FVRElPX1JFQ09SRF9TVE9QOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzogdm9pZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46IA0KKyAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgIDMgIENNRDpJT0NUTF9BVURJT19TRVRfUkVDT1JEX1BBVEg6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX0hhbEF1ZGlvX0Jsb2NrKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46ICAgDQorICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICA0ICBDTUQ6SU9DVExfQVVESU9fU0VUX1JFQ09SRF9WT0w6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX0hhbEF1ZGlvX0Jsb2NrKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46ICAgDQorDQorICAgICAgICAgICAgICAgICAgICAgNSAgQ01EOklPQ1RMX0FVRElPX1JFQ09SRF9HRVREQVRBOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzogVF9aRHJ2QXVkaW9fQnVmSW5mbyoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiAgICAgDQorDQorICAgICAgICAgICAgICAgICAgICAgNiAgQ01EOklPQ1RMX0FVRElPX1JDRF9GUkVFX0JVRkY6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBWT0lEDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjogDQorDQorICAgICAgICAgICAgICAgICAgICAgNyAgQ01EOklPQ1RMX0FVRElPX1NFVF9TQU1QTEU6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX1pEcnZBdWRpb19TYW1wbGVSYXRlKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46IA0KKyAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgIDggIENNRDpJT0NUTF9BVURJT19TRVRfQkFOTEFOQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX1pEcnZBdWRpb19CYW5sYW5jZSoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiANCisNCisgICAgICAgICAgICAgICAgICAgICA5ICBDTUQ6SU9DVExfQVVESU9fU0VUX09VVFBVVF9QQVRIOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzogVF9aRHJ2X0F1ZGlvT3V0cHV0UGF0aCoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgMTAgIENNRDpJT0NUTF9BVURJT19TRVRfT1VUUFVUX1ZPTDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc6IFRfWkRydkF1ZGlvX091dHB1dFZvbExldmVsKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46ICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgIDExICBDTUQ6SU9DVExfQVVESU9fU0VUX0VRTU9ERToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc6IFRfWkRydkFVRElPX0VRTU9ERSoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiANCisgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAxMiAgQ01EOklPQ1RMX0FVRElPX0VOQUJMRV8zREVGRkVDVDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc6IFRfWkRydkF1ZGlvXzNERUZGRUNUKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46IA0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAxMyAgQ01EOklPQ1RMX0FVRElPX1NFVF9NVVRFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzogQk9PTCoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiAgICAgDQorICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAxNCAgQ01EOklPQ1RMX0FVRElPX1BMQVlfU1RBUlQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBWT0lEKjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiANCisgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAxNSAgQ01EOklPQ1RMX0FVRElPX1BMQVlfU1RPUDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc6IFZPSUQqOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46IA0KKyAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgIDE2ICBDTUQ6SU9DVExfQVVESU9fUExBWV9QQVVTRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc6IFZPSUQqOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46IA0KKyAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgIDE3ICBDTUQ6SU9DVExfQVVESU9fUExBWV9SRVNVTUU6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBWT0lEKjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiANCisgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAxOCAgQ01EOklPQ1RMX0FVRElPX0dFVF9QTEFZX0lORk86DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX1pEcnZBdWRpb19QbGF5SW5mbyoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiAgICANCisgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAxOSAgQ01EOklPQ1RMX0FVRElPX0dFVF9CVUZGRVI6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX1pEcnZBdWRpb19CdWZJbmZvKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46IA0KKyAgICAgICAgICAgICAgICAgICAgIDIwLiBDTUQgOklPQ1RMX0FVRElPX1NFVF9SRUNPUkRfU0FNUExFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBUX1pEcnZBdWRpb19TYW1wbGVSYXRlKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm46IA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAyMSAgQ01EOk1BWF9JT0NUTF9BVURJTw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgRVJST1IgQ01EIElOUFVUICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiBTSU5UMzIgekRydl9Jb2N0bChVSU5UMzIgZmQsIFVJTlQzMiBjbWQsIFZPSUQqIGFyZyk7ICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogekRydl9SZWFkDQorKiBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlYWQgZGF0YSBmcm9tIGEgZGV2aWNlIGFjY29yZGluZyB0byBkZXZpY2UgZmlsZSBkZXNjcmlwdG9yLg0KKyogUGFyYW1ldGVyczoNCisqICAgSW5wdXQ6DQorKgkgICAgZmQ6ZGV2aWNlIGZpbGUgZGVzY3JpcHRvcg0KKyogICAgICAgICBidWY6IHVzZXIgYnVmZmVyIHBvaW50ZXINCisqCSAgICBidWZfbGVuOmJ1ZmZlciBsZW5ndGgNCisqICAgT3V0cHV0OgkNCisqICAgICAgICAgYnVmOnBvaW50ZXIgdG8gdGhlIHJlYWQgZGF0YSBidWZmZXIJCQkgDQorKiBSZXR1cm5zOg0KKyogICBEUlZfU1VDQ0VTUzpzdWNjZXNzIHRvIHJlYWQgZGF0YQ0KKyogICBEUlZfRVJSX05PVF9PUEVORUQ6ZGV2aWNlIGlzIG5vdCBvcGVubmVkIGJlZm9yZQ0KKyogICBEUlZfRVJST1I6ZmFpbCB0byByZWFkIGRhdGENCisqICAgRFJWX0VSUl9JTlZBTElEX1BBUkFNOiBpbnZhbGlkIHBhcmFtZW50cy4NCisqIE90aGVyczogTm9uZQ0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qU0lOVDMyIHpEcnZfUmVhZChVSU5UMzIgZmQsIFZPSUQgKmJ1ZiwgVUlOVDMyIGJ1Zl9sZW4pKi8NCisNCisNCisjZW5kaWYgIC8qIF9BVURJT19BUElfSCAqLw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pby5oIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJiMzVjYgotLS0gL2Rldi9udWxsCisrKyBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pby5oCkBAIC0wLDAgKzEsMjA2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAwNywgWlRFIENvcnBvcmF0aW9uLg0KKyAqDQorICogRmlsZSBOYW1lOg0KKyAqIEZpbGUgTWFyazoNCisgKiBEZXNjcmlwdGlvbjoNCisgKiBPdGhlcnM6DQorICogVmVyc2lvbjogICAgICAgMS4wDQorICogQXV0aG9yOiAgICAgICAgZ2VhbmZlbmcNCisgKiBEYXRlOiAgICAgICAgICAyMDEzLTA5LTI1DQorICogSGlzdG9yeSAxOg0KKyAqICAgICBEYXRlOg0KKyAqICAgICBWZXJzaW9uOg0KKyAqICAgICBBdXRob3I6DQorICogICAgIE1vZGlmaWNhdGlvbjoNCisgKiBIaXN0b3J5IDI6DQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9EUlZTX0lPX0hfDQorI2RlZmluZSBfRFJWU19JT19IXw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgZmlsZXMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJkcnZzX2lvX2tleXMuaCINCisjaW5jbHVkZSAiZHJ2c19pb19uYW1lcy5oIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBaRFJWSU9fSU5WQUxJRF9IQU5ETEUgIE5VTEwNCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLypJTyBoYW5kbGUqLw0KK3R5cGVkZWYgdm9pZCAqIFRfWkRydklPX0hhbmRsZTsNCisNCisvKk9wZW4gRmxhZ3MqLw0KK3R5cGVkZWYgc3RydWN0ICBfVF9aRFJWSU9fRkxBR1MNCit7DQorCVVJTlQzMiBSRUFEOjE7DQorCVVJTlQzMiBXUklURToxOw0KKwlVSU5UMzIgTVVMVElfUkVBRDoxOw0KKwlVSU5UMzIgTVVMVElfV1JJVEU6MTsNCisJVUlOVDMyIFNIQVJFRDoxOw0KKwlVSU5UMzIgUkVTRVJWRToyNzsNCit9DQorVF9aRFJWSU9fRkxBR1M7DQorDQorDQorLypHbG9iYWwgTm90aWZ5IEhhbmRsZSovDQordHlwZWRlZiBWT0lEICogVF9aRHJ2SU9fR05vdGlmeUhhbmRsZTsNCisNCisNCisvKkdsb2JhbCBOb3RpZnkgQ2FsbGJhY2sgRnVuY3Rpb24qLw0KK3R5cGVkZWYgVk9JRCAoKlRfWkRydklPX0dOb3RpZnlDYWxsQmFjaykoY29uc3QgY2hhciogZGV2TmFtZSwgVF9EUlZJT19FVkVOVCBldmVudCk7DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHbG9iYWwgIFZhcmlhYmxlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb24gUHJvdG90eXBlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBGdW5jdGlvbjogekRydklPX09wZW4NCisgKiBEZXNjcmlwdGlvbjpzZWFyY2ggZGV2aWNlIGJ5IGRldmljZSBuYW1lLCBvcGVuIGl0LCBhbmQgc2V0IHRoZSBhY3Rpb24gZmxhZ3MuDQorICogSW5wdXQ6DQorICAgIG5hbWU6IGRldmljZSBuYW1lLg0KKyAgICBmbGFnczogb3BlbiBmbGFncywgY29udHJvbCB0aGUgZGV2aWNlIGFjdGlvbi4NCisgKiBPdXRwdXQ6Tm9uZQ0KKyAqDQorICogUmV0dXJuczoNCisgICAgICAgICAgICAgIFRfWkRydklPX0hhbmRsZTogdGhlIG9wZW5lZCBkZXZpY2UgaGFuZGxlLiBpZiBlcnJvciBoYXBwZW5lZCwgcmV0dXJuIE5VTEwuDQorICogT3RoZXJzOg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitUX1pEcnZJT19IYW5kbGUgekRydklPX09wZW4oY29uc3QgY2hhciAqbmFtZSwgVF9aRFJWSU9fRkxBR1MgZmxhZ3MpOw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogRnVuY3Rpb246IHpEcnZJT19SZWFkDQorICogRGVzY3JpcHRpb246cmVhZCBkYXRhIGZyb20gZGV2aWNlLg0KKyAqIElucHV0Og0KKyAJaGFuZGxlOnRoZSBkZXZpY2UgaGFuZGxlIGZvciByZWFkLg0KKyAJYnVmZmVyOiB0aGUgcmVhZCBkYXRhIGJ1ZmZlci4gdGhlIGJ1ZmZlciBzcGFjZSBzdXBwbGllZCBieSBoaWdoIGxheWVyLg0KKyAJbGVuZ3RoOnRoZSBkYXRhIGxlbmd0aCBuZWVkIHRvIHJlYWQuDQorICogT3V0cHV0Ok5vbmUNCisgKg0KKyAqIFJldHVybnM6DQorICAgICAgICAgICAgICByZXQgPj0gMDogcmV0dXJuIHRoZSBhY3R1YWwgcmVhZCBsZW5ndGguDQorICAgICAgICAgICAgICBEUlZfRVJST1JfTk9DT05ORUNUOiB0aGUgZGV2aWNlIGRpc2Nvbm5lY3QgZXZlbnQgaGFwcGVuZCwgbmVlZCByZXR1cm4gZXJyb3IgdG8gaW5mb3JtIGhpZ2hlciB1c2VyLg0KKyAgICAgICAgICAgICAgb3RoZXI6IG90aGVyIGVycm9yIG1ha2VkIGJ5IGRldmljZS4NCisgKiBPdGhlcnM6DQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK1NJTlQzMiB6RHJ2SU9fUmVhZChUX1pEcnZJT19IYW5kbGUgaGFuZGxlLCBVSU5UOCogYnVmZmVyLCBVSU5UMzIgbGVuZ3RoKTsNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIEZ1bmN0aW9uOiB6RHJ2SU9fV3JpdGUNCisgKiBEZXNjcmlwdGlvbjp3cml0ZSBkYXRhIHRvIElPIGhhbmRsZQ0KKyAqIElucHV0Og0KKyAgCWhhbmRsZTp0aGUgZGV2aWNlIGhhbmRsZSBmb3Igd3JpdGUuDQorIAlidWZmZXI6IHRoZSB3cml0ZSBkYXRhIGJ1ZmZlci4gdGhlIGJ1ZmZlciBzcGFjZSBzdXBwbGllZCBieSBoaWdoIGxheWVyLg0KKyAJbGVuZ3RoOnRoZSB3cml0ZSBkYXRhIGxlbmd0aC4NCisqIE91dHB1dDpOb25lDQorICoNCisgKiBSZXR1cm5zOg0KKyAgICAgICAgICAgICAgcmV0ID49IDA6IHJldHVybiB0aGUgYWN0dWFsIHdyaXRlIGxlbmd0aC4NCisgICAgICAgICAgICAgIERSVl9FUlJPUl9OT0NPTk5FQ1Q6IHRoZSBkZXZpY2UgZGlzY29ubmVjdCBldmVudCBoYXBwZW5kLCBuZWVkIHJldHVybiBlcnJvciB0byBpbmZvcm0gaGlnaGVyIHVzZXIuDQorICAgICAgICAgICAgICBvdGhlcjogb3RoZXIgZXJyb3IgbWFrZWQgYnkgZGV2aWNlLg0KKyAqIE90aGVyczoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorU0lOVDMyIHpEcnZJT19Xcml0ZShUX1pEcnZJT19IYW5kbGUgaGFuZGxlLCBVSU5UOCogYnVmZmVyLCBVSU5UMzIgbGVuZ3RoKTsNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIEZ1bmN0aW9uOiB6RHJ2SU9fQlJlYWQNCisgKiBEZXNjcmlwdGlvbjpyZWFkIGRhdGEgZnJvbSBkZXZpY2UuDQorICogSW5wdXQ6DQorIAloYW5kbGU6dGhlIGRldmljZSBoYW5kbGUgZm9yIHJlYWQuDQorIAlidWZmZXI6IHRoZSByZWFkIGRhdGEgYnVmZmVyLiB0aGUgYnVmZmVyIHNwYWNlIHN1cHBsaWVkIGJ5IGhpZ2ggbGF5ZXIuDQorIAlsZW5ndGg6dGhlIGRhdGEgbGVuZ3RoIG5lZWQgdG8gcmVhZC4NCisgCXBvczp0aGUgcmVhZCBkYXRhIHBvc2l0aW9uIGluIGRldmljZSBzdG9yYWdlIHNwYWNlLg0KKyAqIE91dHB1dDpOb25lDQorICoNCisgKiBSZXR1cm5zOg0KKyAgICAgICAgICAgICAgcmV0ID49IDA6IHJldHVybiB0aGUgYWN0dWFsIHJlYWQgbGVuZ3RoLg0KKyAgICAgICAgICAgICAgRFJWX0VSUk9SX05PQ09OTkVDVDogdGhlIGRldmljZSBkaXNjb25uZWN0IGV2ZW50IGhhcHBlbmQsIG5lZWQgcmV0dXJuIGVycm9yIHRvIGluZm9ybSBoaWdoZXIgdXNlci4NCisgICAgICAgICAgICAgIG90aGVyOiBvdGhlciBlcnJvciBtYWtlZCBieSBkZXZpY2UuDQorICogT3RoZXJzOg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitTSU5UMzIgekRydklPX0JSZWFkKFRfWkRydklPX0hhbmRsZSBoYW5kbGUsIFVJTlQ4KiBidWZmZXIsIFVJTlQzMiBibGtDbnQsIFVJTlQzMiBwb3MpOw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogRnVuY3Rpb246IHpEcnZJT19CV3JpdGUNCisgKiBEZXNjcmlwdGlvbjp3cml0ZSBkYXRhIHRvIElPIGhhbmRsZQ0KKyAqIElucHV0Og0KKyAgCWhhbmRsZTp0aGUgZGV2aWNlIGhhbmRsZSBmb3Igd3JpdGUuDQorIAlidWZmZXI6IHRoZSB3cml0ZSBkYXRhIGJ1ZmZlci4gdGhlIGJ1ZmZlciBzcGFjZSBzdXBwbGllZCBieSBoaWdoIGxheWVyLg0KKyAJbGVuZ3RoOnRoZSB3cml0ZSBkYXRhIGxlbmd0aC4NCisgCXBvczp0aGUgd3JpdGUgZGF0YSBwb3NpdGlvbiBpbiBkZXZpY2Ugc3RvcmFnZSBzcGFjZS4NCisqIE91dHB1dDpOb25lDQorICoNCisgKiBSZXR1cm5zOg0KKyAgICAgICAgICAgICAgcmV0ID49IDA6IHJldHVybiB0aGUgYWN0dWFsIHdyaXRlIGxlbmd0aC4NCisgICAgICAgICAgICAgIERSVl9FUlJPUl9OT0NPTk5FQ1Q6IHRoZSBkZXZpY2UgZGlzY29ubmVjdCBldmVudCBoYXBwZW5kLCBuZWVkIHJldHVybiBlcnJvciB0byBpbmZvcm0gaGlnaGVyIHVzZXIuDQorICAgICAgICAgICAgICBvdGhlcjogb3RoZXIgZXJyb3IgbWFrZWQgYnkgZGV2aWNlLg0KKyAqIE90aGVyczoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorU0lOVDMyIHpEcnZJT19CV3JpdGUoVF9aRHJ2SU9fSGFuZGxlIGhhbmRsZSwgVUlOVDgqIGJ1ZmZlciwgVUlOVDMyIGJsa0NudCwgVUlOVDMyIHBvcyk7DQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBGdW5jdGlvbjogekRydklPX0N0cmwNCisgKiBEZXNjcmlwdGlvbjpjb250cm9sIGRldmljZS4NCisgKiBJbnB1dDoNCisgIAloYW5kbGU6dGhlIGRldmljZSBoYW5kbGUgZm9yIGNvbnRyb2wuDQorICAgCWZ1bmN0aW9uOnRoZSBjb250cm9sIGZ1bmN0aW9uLg0KKyAgCWhhbmRsZTp0aGUgY29udHJvbCBmdW5jdGlvbiBhcmd1bWVudHMuDQorKiBPdXRwdXQ6Tm9uZQ0KKyAqDQorICogUmV0dXJuczoNCisgICAgICAgICAgICAgIERSVl9TVUNDRVNTOiBzdWNjZXNzLg0KKyAgICAgICAgICAgICAgRFJWX0VSUk9SOiBlcnJvci4NCisgKiBPdGhlcnM6DQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK1NJTlQzMiB6RHJ2SU9fQ3RybChUX1pEcnZJT19IYW5kbGUgaGFuZGxlLCBUX0RSVklPX0NUUkxfS0VZICBmdW5jdGlvbiwgVk9JRCAqYXJnKTsNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIEZ1bmN0aW9uOiB6RHJ2SU9fQ2xvc2UNCisgKiBEZXNjcmlwdGlvbjpjbG9zZSB0aGUgZGV2aWNlDQorICogSW5wdXQ6DQorIAloYW5kbGU6dGhlIGRldmljZSBoYW5kbGUgdG8gYmUgY2xvc2VkLg0KKyAqIE91dHB1dDpOb25lDQorICoNCisgKiBSZXR1cm5zOg0KKyAgICAgICAgICAgICAgRFJWX1NVQ0NFU1M6IHN1Y2Nlc3MuDQorICAgICAgICAgICAgICBEUlZfRVJST1I6IGVycm9yLg0KKyAqIE90aGVyczoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorU0lOVDMyIHpEcnZJT19DbG9zZShUX1pEcnZJT19IYW5kbGUgaGFuZGxlKTsNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIEZ1bmN0aW9uOiB6RHJ2SU9fUmVnaXN0ZXJHbG9iYWxOb3RpZnkNCisgKiBEZXNjcmlwdGlvbjogcmVnaXN0ZXIgZ2xvYmFsIG5vdGlmaWVyLg0KKyAqIElucHV0Og0KKyAqICAgICAgICBnbG9iYWxOb3RpZnlGbjogZ2xvYmFsIG5vaXRpZmllciBjYWxsYmFjayBmdW5jdGlvbg0KKyAqIE91dHB1dDpOb25lDQorICoNCisgKiBSZXR1cm5zOg0KKyAqICAgICAgIFRfWkRydklPX0dOb3RpZnlIYW5kbGUgOiB0aGUgZ2xvYmFsIG5vdGlmaWVyIGhhbmRsZXIuDQorICogT3RoZXJzOg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitUX1pEcnZJT19HTm90aWZ5SGFuZGxlIHpEcnZJT19SZWdpc3Rlckdsb2JhbE5vdGlmeShUX1pEcnZJT19HTm90aWZ5Q2FsbEJhY2sgZ2xvYmFsTm90aWZ5Rm4pOw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogRnVuY3Rpb246IHpEcnZJT19VbnJlZ2lzdGVyR2xvYmFsTm90aWZ5DQorICogRGVzY3JpcHRpb246IHVucmVnaXN0ZXIgZ2xvYmFsIG5vdGlmaWVyLg0KKyAqIElucHV0Og0KKyAqICAgICAgICBnTm90aWZ5SGFuZGxlOiB0aGUgZ2xvYmFsIG5vdGlmaWVyIGhhbmRsZXINCisgKiBPdXRwdXQ6Tm9uZQ0KKyAqDQorICogUmV0dXJuczoNCisgKg0KKyAqIE90aGVyczoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorVk9JRCB6RHJ2SU9fVW5yZWdpc3Rlckdsb2JhbE5vdGlmeShUX1pEcnZJT19HTm90aWZ5SGFuZGxlIGdOb3RpZnlIYW5kbGUpOw0KKw0KKw0KKyNlbmRpZi8qX0RSVlNfSU9fSF8qLw0KKw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19jaGFyZ2VyLmggYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fY2hhcmdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNGJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fY2hhcmdlci5oCkBAIC0wLDAgKzEsMTc5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAwNywgWlRFIENvcnBvcmF0aW9uLg0KKyAqDQorICogRmlsZSBOYW1lOiAgICBkcnZzX2lvX2xlZC5oDQorICogRmlsZSBNYXJrOg0KKyAqIERlc2NyaXB0aW9uOg0KKyAqIE90aGVyczoNCisgKiBWZXJzaW9uOiAgICAgICAxLjANCisgKiBBdXRob3I6ICAgICAgICB5dXhpYW5nDQorICogRGF0ZTogICAgICAgICAgMjAxNC0wNy0wMw0KKyAqIEhpc3RvcnkgMToNCisgKiAgICAgRGF0ZToNCisgKiAgICAgVmVyc2lvbjoNCisgKiAgICAgQXV0aG9yOg0KKyAqICAgICBNb2RpZmljYXRpb246DQorICogSGlzdG9yeSAyOg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfRFJWU19JT19DSEdfSA0KKyNkZWZpbmUgX0RSVlNfSU9fQ0hHX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAiZHJ2c19pby5oIg0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBaRFJWX0RFVl9DSEcgICJjaGFyZ2VyIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCit0eXBlZGVmIGVudW0NCit7DQorICAgIENIR19TVEFURV9DQUxMQkFDS19BQ19JTiwNCisgICAgQ0hHX1NUQVRFX0NBTExCQUNLX0FDX09VVCwNCisgICAgQ0hHX1NUQVRFX0NBTExCQUNLX1VTQl9JTiwNCisgICAgQ0hHX1NUQVRFX0NBTExCQUNLX1VTQl9PVVQsDQorICAgIENIR19TVEFURV9DQUxMQkFDS19TVEFSVCwNCisgICAgQ0hHX1NUQVRFX0NBTExCQUNLX1NUT1AsDQorICAgIENIR19TVEFURV9DQUxMQkFDS19GSU5JU0gsDQorICAgIENIR19TVEFURV9DQUxMQkFDS19MT0FEX0lOLA0KKyAgICBDSEdfU1RBVEVfQ0FMTEJBQ0tfTE9BRF9PVVQsDQorICAgIENIR19TVEFURV9DQUxMQkFDS19BQk5PUk1BTCwNCisgICAgQ0hHX1NUQVRFX0NBTExCQUNLX0xPV19WT0xfREVURUNULA0KKyAgICBDSEdfU1RBVEVfQ0FMTEJBQ0tfT1ZFUl9URU1QX1BST1RFQ1QsDQorDQorICAgIENIR19TVEFURV9DQUxMQkFDS19NQVgNCit9VF9aRHJ2Q2hnX0NhbGxiYWNrU3RhdGU7DQorDQorLyp0aGUgbWVzc2FnZSB0aGF0IHNob3VsZCBzZW5kIHRvIGRtKi8NCisgdHlwZWRlZiBlbnVtDQorIHsNCisgICAgU1RBVEVfQ0hBUkdJTkcsICAgICAgICAgICAgICAgICAvKmNoYXJnZSBzdGFydCBtc2cqLw0KKyAgICBTVEFURV9ESVNDSEFSR0lORywgICAgICAgICAgICAgICAgICAgICAvKmNoYXJnZSBzdG9wIG1zZyovDQorICAgIFNUQVRFX0ZJTklTSCwgICAgICAgICAgICAgICAgICAgICAgLypjaGFyZ2Ugc3RvcCBtc2cqLw0KKyAgICBTVEFURV9URU1QX0FCT1JULA0KKyAgICBTVEFURV9URU1QX0VSUk9SLA0KKyAgICBTVEFURV9FUlJPUiwNCisNCisgICAgU1RBVEVfTUFYDQorDQorfSBUX1pEcnZDaGdfU3RhdHVzOw0KKw0KKyB0eXBlZGVmIGVudW0NCisgew0KKwkgRElTQ0hHX1NUQVRVU19PTiA9IDAsCSANCisJIERJU0NIR19TVEFUVVNfT0ZGLA0KKwkgRElTQ0hHX1NUQVRVU19NQVgNCisgfVRfWkRydkNoZ19EaXNDaGdTdGF0dXM7DQorDQorIHR5cGVkZWYgZW51bQ0KKyB7DQorCSBVU0JfU1RBVFVTX0lOID0gMCwJIA0KKwkgVVNCX1NUQVRVU19PVVQsDQorCSBVU0JfU1RBVFVTX01BWA0KKyB9VF9aRHJ2Q2hnX1VzYlN0YXR1czsNCisNCisNCisgdHlwZWRlZiBlbnVtIA0KKyB7DQorICAgIENIR19UWVBFX05PVEhJTkcsIA0KKyAgICBDSEdfVFlQRV9DT01QVVRFUiwgICAgICAgICAgICAgICAgDQorICAgIENIR19UWVBFX0NIQVJHRVIsIA0KKyAgICANCisgICAgQ0hHX1RZUEVfTUFYICAgIA0KK30gVF9aRHJ2Q2hnX0NoZ1R5cGU7DQorDQorLyp0ZW1wZXJhdHVyZSBkZXRlY3QqLw0KK3R5cGVkZWYgZW51bQ0KK3sNCisgICAgQ0hHX1RFTVBfREVURUNUX1NVUEVSX0xPVywNCisgICAgQ0hHX1RFTVBfREVURUNUX0xPVywNCisgICAgQ0hHX1RFTVBfREVURUNUX05PUk1BTCwNCisgICAgQ0hHX1RFTVBfREVURUNUX0hJR0gsDQorICAgIENIR19URU1QX0RFVEVDVF9ISUdIXzU1LA0KKyAgICBDSEdfVEVNUF9ERVRFQ1RfU1VQRVJfSElHSCwNCisNCisgICAgQ0hHX1RFTVBfREVURUNUX01BWA0KK31UX1pEcnZDaGdfVGVtcERldGVjdDsNCisNCit0eXBlZGVmIGVudW0NCit7DQorCUNIR19TV1RJQ0hfQ0hHX09GRiwNCisJQ0hHX1NXVElDSF9DSEdfT04sDQorDQorCUNIR19TV1RJQ0hfQ0hHX01BWA0KK31UX1pEcnZDaGdfQ2hnU3dpdGNoOw0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJQ0hHX1NXVElDSF9ESVNDSEdfT0ZGLA0KKwlDSEdfU1dUSUNIX0RJU0NIR19PTiwNCisNCisJQ0hHX1NXVElDSF9ESVNDSEdfTUFYDQorfVRfWkRydkNoZ19EaXNDaGdTd2l0Y2g7DQorDQordHlwZWRlZiBlbnVtDQorew0KKwlDSEdfT1RHX1NUQVRFX09GRiwNCisJQ0hHX09UR19TVEFURV9PTiwNCisNCisJQ0hHX09UR19TVEFURV9NQVgNCit9VF9aRHJ2Q2hnX09UR1N0YXRlOw0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJQ0hHX1NISVBQSU5HTU9ERV9PRkYsDQorCUNIR19TSElQUElOR01PREVfT04sDQorDQorCUNIR19TSElQUElOR01PREVfTUFYDQorfVRfWkRydkNoZ19TaGlwcGluZ01vZGU7DQorDQorDQordHlwZWRlZiBlbnVtDQorew0KKwlDSEdfRVJST1JfRFBNX1NUQVRFID0gMTw8MTEsDQorCUNIR19FUlJPUl9QT1dFUl9CQUQgPSAxPDwxMCwgLyp0aGUgZGlmZiovDQorCUNIR19FUlJPUl9WU1lTX01JTkkgPSAxPDw4LA0KKwlDSEdfRVJST1JfVEVSTV9TVEFURSA9IDE8PDksDQorCUNIR19FUlJPUl9XQUNIRE9HX0ZBVUxUID0gMTw8NywNCisJQ0hHX0VSUk9SX09UR19GQVVMVCA9IDE8PDYsDQorCUNIR19FUlJPUl9DSFJHX09WUCA9IDE8PDUsDQorCUNIR19FUlJPUl9DSFJHX1RJTUVPVVQgPSAxPDw0LA0KKwlDSEdfRVJST1JfQkFUX0ZBVUxUID0gMTw8MywNCisJQ0hHX0VSUk9SX05UQ19DT0xEID0gMTw8MSwNCisJQ0hHX0VSUk9SX05UQ19IT1QgPSAxPDwwLA0KKwlDSEdfRVJST1JfU1RBVEVfQ09ORkxJVCA9IDE8PDE1LA0KKw0KKw0KKwlDSEdfRVJST1JfTUFYID0gMTw8MTYsDQorfVRfWkRydkNoZ19FcnJvckNvZGU7DQorDQorDQordHlwZWRlZiBlbnVtDQorew0KKwlDSEdfUVVJQ0tfU1RBUlRfT0ZGLA0KKwlDSEdfUVVJQ0tfU1RBUlRfT04sDQorDQorCUNIR19RVUlDS19TVEFSVF9NQVgNCit9VF9aRHJ2Q2hnX1F1Y2lrU3RhcnRGbGFnOw0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJQ0hHX05PVF9TVE9QLA0KKwlDSEdfQ09NUExFVEUsDQorCUFDX05PVF9FWElTVCwNCisJQ0hHX1RFTVBfT1ZFUkZMT1csDQorCUNIR19PVEhFUl9SRUFTT04NCit9VF9aRHJ2Q2hnX1N0b3BSZWFzb247DQorLypjaGFyZ2Ugc3RvcCByZWFzb24qLw0KKw0KKw0KK3R5cGVkZWYgdm9pZCgqVF9aRHJ2Q0hHX0NBTExCQUNLKShUX1pEcnZDaGdfQ2FsbGJhY2tTdGF0ZSk7IC8qdGhlIHNlbmQgbXNnIGNhbGxiYWNrIGZ1bmN0aW9uICovDQorDQorDQorI2VuZGlmLypfRFJWU19JT19MRURfSCovDQorDQpkaWZmIC0tZ2l0IGEvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX2Rldi5oIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX2Rldi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OWUyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fZGV2LmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDA3LCBaVEUgQ29ycG9yYXRpb24uDQorICoNCisgKiBGaWxlIE5hbWU6DQorICogRmlsZSBNYXJrOg0KKyAqIERlc2NyaXB0aW9uOg0KKyAqIE90aGVyczoNCisgKiBWZXJzaW9uOiAgICAgICAxLjANCisgKiBBdXRob3I6ICAgICAgICBnZWFuZmVuZw0KKyAqIERhdGU6ICAgICAgICAgIDIwMTMtMDktMjUNCisgKiBIaXN0b3J5IDE6DQorICogICAgIERhdGU6DQorICogICAgIFZlcnNpb246DQorICogICAgIEF1dGhvcjoNCisgKiAgICAgTW9kaWZpY2F0aW9uOg0KKyAqIEhpc3RvcnkgMjoNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0RSVlNfSU9ERVZfSF8NCisjZGVmaW5lIF9EUlZTX0lPREVWX0hfDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBmaWxlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2luY2x1ZGUgImRydnNfZ2VuZXJhbC5oIg0KKyNpbmNsdWRlICJkcnZzX2lvLmgiDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9zDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyq117LjyeixuL7ksfoqLw0KK3R5cGVkZWYgdm9pZCAqIFRfWkRydklPRGV2X0hhbmRsZTsNCisNCisNCisvKsnosbjH/bavudK908q1z9a907/aKi8NCit0eXBlZGVmIHN0cnVjdCBfVF9aRHJ2SU9EZXZfT3BzDQorew0KKyAgICBTSU5UMzIgKCpvcGVuKShWT0lEICpkZXZEYXRhLCBUX1pEUlZJT19GTEFHUyBmbGFncyk7DQorICAgIFNJTlQzMiAoKnJlYWQpKFZPSUQgKmRldkRhdGEsIFZPSUQgKmJ1ZmZlciwgVUlOVDMyIGxlbmd0aCk7DQorICAgIFNJTlQzMiAoKndyaXRlKShWT0lEICpkZXZEYXRhLCBjb25zdCBWT0lEICpidWZmZXIsIFVJTlQzMiBsZW5ndGgpOw0KKyAgICBTSU5UMzIgKCpicmVhZCkoVk9JRCAqZGV2RGF0YSwgVk9JRCAqYnVmZmVyLCBVSU5UMzIgYmxrQ250LCBVSU5UMzIgcG9zKTsNCisgICAgU0lOVDMyICgqYndyaXRlKShWT0lEICpkZXZEYXRhLCBjb25zdCBWT0lEICpidWZmZXIsIFVJTlQzMiBibGtDbnQsIFVJTlQzMiBwb3MpOw0KKyAgICBTSU5UMzIgKCpjdHJsKShWT0lEICpkZXZEYXRhLCBUX0RSVklPX0NUUkxfS0VZIGZ1bmN0aW9uLCBWT0lEKiBhcmcpOw0KKyAgICBTSU5UMzIgKCpjbG9zZSkoVk9JRCAqZGV2RGF0YSk7DQorfQ0KK1RfWkRydklPRGV2X09wczsNCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdsb2JhbCAgVmFyaWFibGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbiBQcm90b3R5cGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIEZ1bmN0aW9uOiB6RHJ2SU9EZXZfQ29ubmVjdA0KKyAqIERlc2NyaXB0aW9uOmluc3RhbGwgYW5kIGNvbm5lY3QgaW8gZGV2aWNlIHRvIGRldmljZSB0YWJsZS4NCisgKiBJbnB1dDoNCisgICAgIG5hbWU6IHRoZSBkZXZpY2UgbmFtZSB0byBjb25uZWN0Lg0KKyAgICAgZGV2RGF0YTogdGhlIGRldmljZSBwcml2YXRlIGRhdGEgdG8gYmUgY29tYmluZWQuDQorICAgICBvcHM6IHRoZSBkZXZpY2UgSS9PIG9wZXJhdGlvbi4NCisgKiBPdXRwdXQ6Tm9uZQ0KKyAqDQorICogUmV0dXJuczoNCisgICAgICAgICAgICAgIFRfWkRydklPRGV2X0hhbmRsZTogbm9uZSB6ZXJvLg0KKyAgICAgICAgICAgICAgTlVMTDogZXJyb3IuDQorICogT3RoZXJzOg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitUX1pEcnZJT0Rldl9IYW5kbGUgekRydklPRGV2X0Nvbm5lY3QoY29uc3QgY2hhciAqbmFtZSwgVk9JRCAqZGV2RGF0YSwgVF9aRHJ2SU9EZXZfT3BzICpvcHMpOw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogRnVuY3Rpb246IHpEcnZJT0Rldl9EaXNjb25uZWN0DQorICogRGVzY3JpcHRpb246dW5pbnN0YWxsIHRoZSBpbyBkZXZpY2UuDQorICogSW5wdXQ6DQorICAgICAgaGFuZGxlOiB0aGUgZGV2aWNlIGhhbmRsZSB0byBkaXNjb25uZWN0Lg0KKyAqIE91dHB1dDpOb25lDQorICoNCisgKiBSZXR1cm5zOg0KKyAgICAgICAgICAgICAgTlVMTDogZXJyb3IuDQorICogT3RoZXJzOg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitWT0lEIHpEcnZJT0Rldl9EaXNjb25uZWN0KFRfWkRydklPRGV2X0hhbmRsZSBoYW5kbGUpOw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogRnVuY3Rpb246IHpEcnZJT0Rldl9TaG93DQorICogRGVzY3JpcHRpb246c2hvdyB0aGUgZGV2aWNlIGRlYnVnIGluZm9ybWF0aW9uLg0KKyAqIElucHV0Og0KKyAqIE91dHB1dDpOb25lDQorICoNCisgKiBSZXR1cm5zOk5vbmUNCisgKiBPdGhlcnM6DQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK1ZPSUQgekRydklPRGV2X1Nob3coVk9JRCk7DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBGdW5jdGlvbjogekRydklPRGV2X0luaXRpYXRlDQorICogRGVzY3JpcHRpb246aW5pdGlhbGl6ZSB0aGUgaW8gYmFzZSBzdHJ1Y3R1cmUuDQorICogSW5wdXQ6DQorICogT3V0cHV0Ok5vbmUNCisgKg0KKyAqIFJldHVybnM6DQorICAgICAgICAgICAgICBEUlZfU1VDQ0VTUzogc3VjY2Vzcy4NCisgICAgICAgICAgICAgIERSVl9FUlJPUjogZXJyb3IuDQorICogT3RoZXJzOg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitTSU5UMzIgekRydklPRGV2X0luaXRpYXRlKFZPSUQpOw0KKw0KKw0KKw0KKw0KKyNlbmRpZi8qX0RSVlNfSU9fSF8qLw0KKw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19mbGFzaGxpZ2h0LmggYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fZmxhc2hsaWdodC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZGZjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fZmxhc2hsaWdodC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDA3LCBaVEUgQ29ycG9yYXRpb24uDQorICoNCisgKiBGaWxlIE5hbWU6ICAgIGRydnNfaW9fZmxhc2hsaWdodC5oDQorICogRmlsZSBNYXJrOg0KKyAqIERlc2NyaXB0aW9uOg0KKyAqIE90aGVyczoNCisgKiBWZXJzaW9uOiAgICAgICAxLjANCisgKiBBdXRob3I6ICAgICAgICBsaXV5aQ0KKyAqIERhdGU6ICAgICAgICAgIDIwMTYtMDktMDMNCisgKiBIaXN0b3J5IDE6DQorICogICAgIERhdGU6DQorICogICAgIFZlcnNpb246DQorICogICAgIEF1dGhvcjoNCisgKiAgICAgTW9kaWZpY2F0aW9uOg0KKyAqIEhpc3RvcnkgMjoNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0RSVlNfSU9fRkxBU0hMSUdIVF9IDQorI2RlZmluZSBfRFJWU19JT19GTEFTSExJR0hUX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAiZHJ2c19pby5oIg0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBaRFJWX0RFVl9GTEFTSExJR0hUICAiZmxhc2hsaWdodCINCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorLyogICovDQordHlwZWRlZiBlbnVtDQorew0KKwlGTEFTSExJR0hUX0RJU0FCTEUsDQorCUZMQVNITElHSFRfRU5BQkxFLA0KKwkNCisJTUFYX0ZMQVNITElHSFRfRU5BQkxFDQorfQ0KK1RfWkRydkZsYXNobGlnaHRfRW5hYmxlOw0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJRkxBU0hMSUdIVF9TVEFURV9PRkYsDQorCUZMQVNITElHSFRfU1RBVEVfT04sDQorCQ0KKwlNQVhfRkxBU0hMSUdIVF9TVEFURQ0KK30NCitUX1pEcnZGbGFzaGxpZ2h0X1N0YXRlOw0KKw0KKw0KKw0KKyNlbmRpZi8qX0RSVlNfSU9fRkxBU0hMSUdIVF9IKi8NCisNCmRpZmYgLS1naXQgYS9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fZm0uaCBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19mbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ODRiODEKLS0tIC9kZXYvbnVsbAorKysgYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fZm0uaApAQCAtMCwwICsxLDY1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAwNywgWlRFIENvcnBvcmF0aW9uLg0KKyAqDQorICogRmlsZSBOYW1lOiAgICBkcnZzX2lvX2ZtLmgNCisgKiBGaWxlIE1hcms6DQorICogRGVzY3JpcHRpb246DQorICogT3RoZXJzOg0KKyAqIFZlcnNpb246ICAgICAgIDEuMA0KKyAqIEF1dGhvcjogICAgICAgIGxpdXlpDQorICogRGF0ZTogICAgICAgICAgMjAxNi0wOS0wMw0KKyAqIEhpc3RvcnkgMToNCisgKiAgICAgRGF0ZToNCisgKiAgICAgVmVyc2lvbjoNCisgKiAgICAgQXV0aG9yOg0KKyAqICAgICBNb2RpZmljYXRpb246DQorICogSGlzdG9yeSAyOg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfRFJWU19JT19GTV9IDQorI2RlZmluZSBfRFJWU19JT19GTV9IDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBmaWxlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2luY2x1ZGUgImRydnNfaW8uaCINCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb3MNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgWkRSVl9ERVZfRk0gICJmbSINCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorLyogc3RlcmVvIG9yIG1vbm8gKi8NCit0eXBlZGVmIGVudW0NCit7DQorCU1PREVfU1RFUkVPLA0KKwlNT0RFX01PTk8sDQorCQ0KKwlNQVhfTU9ERQ0KK30NCitUX1pEcnZGbV9TdGVyZW9Nb2RlOw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKwlTSU5UMzIgZGlyZWN0aW9uOw0KKwlVSU5UMzIgcmV0X2ZyZXE7DQorfQ0KK1RfWkRydkZtX1NlZWtJbmZvOw0KKw0KKw0KKw0KKy8qSU9DVEy/2NbGstnX97Srtd2yzsr9wODQzSovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorCVRfWkRydkZtX1N0ZXJlb01vZGUgIFRpbWVEYXRlOw0KKwlUX1pEcnZGbV9TZWVrSW5mbyBtb2RlOw0KK31UX1pEcnZmbV9EZXNjcmlwdG9yOw0KKw0KKw0KKw0KKw0KKyNlbmRpZi8qX0RSVlNfSU9fRk1fSCovDQorDQpkaWZmIC0tZ2l0IGEvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX2tleXMuaCBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19rZXlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYxYTQzOAotLS0gL2Rldi9udWxsCisrKyBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19rZXlzLmgKQEAgLTAsMCArMSwzNzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDA3LCBaVEUgQ29ycG9yYXRpb24uDQorICoNCisgKiBGaWxlIE5hbWU6ICAgIGRydnNfaW9rZXlzLmgNCisgKiBGaWxlIE1hcms6DQorICogRGVzY3JpcHRpb246DQorICogT3RoZXJzOg0KKyAqIFZlcnNpb246ICAgICAgIDEuMA0KKyAqIEF1dGhvcjogICAgICAgIGdlYW5mZW5nDQorICogRGF0ZTogICAgICAgICAgMjAxNC0wMi0xMQ0KKyAqIEhpc3RvcnkgMToNCisgKiAgICAgRGF0ZToNCisgKiAgICAgVmVyc2lvbjoNCisgKiAgICAgQXV0aG9yOg0KKyAqICAgICBNb2RpZmljYXRpb246DQorICogSGlzdG9yeSAyOg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfRFJWU19JT0tFWVNfSA0KKyNkZWZpbmUgX0RSVlNfSU9LRVlTX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb3MNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgSU9LRVlTKHgpICgxKQ0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKklPIENUUkwgRnVuY3Rpb24gS0VZKi8NCit0eXBlZGVmIGVudW0gX1RfRFJWSU9fQ1RSTF9LRVkNCit7DQorLy8gZm9yIGlvIGRhbCBsYXllciB1c2UNCisJSU9DVExfSU9ERVZfUkVHSVNURVJfTk9USUZZID0gMiwNCisJSU9DVExfSU9ERVZfR0VUX0RFVl9TVEFUVVMsDQorCUlPQ1RMX0lPREVWX1dBSVRfQ09OTkVDVCwNCisJSU9DVExfSU9ERVZfRElTQUxMT1dfRElTQ09OTkVDVCwNCisJSU9DVExfSU9ERVZfQUxMT1dfRElTQ09OTkVDVCwNCisJSU9DVExfSU9ERVZfVkVORE9SID0gMzEsDQorLy9lbmQNCisNCisJLyrS1M/Cv9jWxtfW1NrJ6LG4way907rzssXT0NCnKi8NCisNCisvLyBmb3IgY29tbW9uIGlvIGRldmljZQ0KKw0KKyAgICBJT0NUTF9JT0RFVl9TRVRfQkxPQ0tUSU1FID0gMHgxMDAwLA0KKw0KKy8vIGZvciBibG9jayBkZXZpY2UgZnVuY3Rpb24NCisNCisJSU9DVExfQkxLREVWX0dFVF9JTkZPPTB4MjAwMCwNCisJSU9DVExfQkxLREVWX0VSRUFTRSwNCisJSU9DVExfQkxLREVWX0dFVF9TVEFURSwNCisNCisvLyBmb3Igc2VyaWFsIGRldmljZSBmdW5jdGlvbg0KKw0KKwlJT0NUTF9TRVJJQUxfU0VUX0NPTkZJRz0weDMwMDAsDQorCUlPQ1RMX1NFUklBTF9VQVJUX1NFVF9DVFNSVFMsDQorCUlPQ1RMX1NFUklBTF9VQVJUX1NFVF9DT05GSUcsDQorDQorLy8gZm9yIHZpcnR1YWwgY29tIHBvcnQNCisNCisgICAgSU9DVExfVkNPTV9HRVRfVVNCX1NUQVRVUz0weDQwMDAsDQorICAgIElPQ1RMX1ZDT01fT1BFTl9FQ0hPLA0KKyAgICBJT0NUTF9WQ09NX0NMT1NFX0VDSE8sDQorDQorDQorLy8gZm9yIHZpcnR1YWwgTklDKE5ldHdvcmQgSW50ZXJmYWNlIENhcmQpDQorDQorICAgIElPQ1RMX1ZOSUNfQ09OTkVDVD0weDUwMDAsDQorICAgIElPQ1RMX1ZOSUNfRElTQ09OTkVDVCwNCisNCisgICAgSU9DVExfVk5JQ19SRUdfQ0JLX1hGRVJfU1RBVElTVElDUywNCisgICAgSU9DVExfVk5JQ19GUkVFX1VOUkVBRF9CVUYsDQorICAgIElPQ1RMX1ZOSUNfUkVHX0NCS19OSUNfRElTQUJMRSwNCisgICAgSU9DVExfVk5JQ19HRVRfVVNCX1NUQVRVUywNCisgICAgSU9DVExfVk5JQ19SRUdfQ0JLX05JQ19FTkFCTEUsDQorICAgIElPQ1RMX1ZOSUNfR0VUX1ZOSUNfU1RBVEUsDQorICAgIElPQ1RMX1ZOSUNfU0VUX0VDTV9UUFlFLA0KKyAgICBJT0NUTF9WTklDX1NFVF9ORVRfREVWLA0KKw0KKy8vIGZvciBpbyB2b2ljZQ0KKw0KKyAgICBJT0NUTF9WT0lDRV9TRVRfU0FNUExFICAgID0gMHg2MDAwLCAgICAgICAgICAvKlNldCBzYW1wbGUucGFyYW06VF9aRHJ2Vm9pY2VfU2FtcGxlKi8NCisgICAgSU9DVExfVk9JQ0VfU0VUX0lOUFVUX1BBVEgsICAgICAgLypTZXQgaW5wdXQgcGF0aC4gIHBhcmFtOlRfWkRydl9Wb2ljZUlucHV0UGF0aCovDQorICAgIElPQ1RMX1ZPSUNFX1NFVF9PVVRQVVRfUEFUSCwgICAgIC8qU2V0IG91dHB1dCBwYXRoLiAgcGFyYW06VF9aRHJ2X1ZvaWNlT3V0cHV0UGF0aCovDQorICAgIElPQ1RMX1ZPSUNFX1NFVF9JTlBVVF9WT0wsICAgICAgIC8qU2V0IGlucHV0IHZvbHVtZS4gcGFyYW06VF9aRHJ2Vm9pY2VfSW5wdXRWb2xMZXZlbCovDQorICAgIElPQ1RMX1ZPSUNFX1NFVF9PVVRQVVRfVk9MLCAgICAgIC8qU2V0IG91dHB1dCB2b2x1bWUuIHBhcmFtOlRfWkRydlZvaWNlX091dHB1dFZvbExldmVsKi8NCisgICAgSU9DVExfVk9JQ0VfRU5BQkxFLCAgICAgICAgICAgICAgLyplbmFibGUgdm9pY2UgIGNoYW5uZWwucGFyYW06bm9uZSovDQorICAgIElPQ1RMX1ZPSUNFX0RJU0FCTEUsICAgICAgICAgICAgIC8qZGlzYWJsZSB2b2ljZSBjaGFubmVsLnBhcmFtOm5vbmUqLw0KKw0KKyAgICBJT0NUTF9WT0lDRV9TRVRfVlRfU1RBUlQsICAgICAgICAvKlN0YXJ0IHZvaWNlIGZvciBWaWRlb1RlbGVwaG9uZS4gcGFyYW06VF9aRHJ2Vm9pY2VfQW1ySW5mb1B0ciovDQorICAgIElPQ1RMX1ZPSUNFX1NFVF9WVF9TVE9QLCAgICAgICAgIC8qU3RvcCB2b2ljZSBmb3IgVmlkZW9UZWxlcGhvbmUuIHBhcmFtOk5VTEwqLw0KKyAgICBJT0NUTF9WT0lDRV9TRVRfTVVURSwgICAgICAgICAgICAvKlNldCB2b2ljZSBtdXRlIG9yIG5vdC4gcGFyYW06VF9aRHJ2Vm9pY2VfTXV0ZUluZm8qLw0KKyAgICBJT0NUTF9WT0lDRV9SRUNPUkRfU1RBUlQsICAgICAgICAvKnJlY29yZCBzdGFydC5wYXJhbTpUX1pEcnZSY2RfSW5mb1BhcmFtKi8NCisgICAgSU9DVExfVk9JQ0VfUkVDT1JEX1NUT1AsICAgICAgICAgLypyZWNvcmQgc3RvcC5wYXJhbTpub25lKi8NCisgICAgSU9DVExfVk9JQ0VfUkVDT1JEX0RBVEFfUkVBRCwgICAgLypyZWFkIHJlY29yZCBkYXRhLiBwYXJhbTpUX1pEcnZWb2ljZV9CdWZJbmZvKi8NCisgICAgSU9DVExfVk9JQ0VfVEVTVF9MT09QQkFDSywgICAgICAgLypTZXQgdm9pY2UgbG9vcCBvciBub3QuIHBhcmFtOlRfWkRydlZvaWNlX1N3aXRjaCovDQorICAgIElPQ1RMX1ZPSUNFX1JDRF9GUkVFX0JVRkYsICAgICAgIC8qZnJlZSByZWNvcmQgYnVmZmVyLiBwYXJhbTpWT0lEKi8NCisNCisgICAgSU9DVExfVk9JQ0VfQ09ORklHX1BBUkFNLCAgICAgICAgICAgICAvKmNvbmZpZyB2b2x0ZSBwYXJhbSAucGFyYW06VF9aRHJ2VnBfQ2ZnLCBmb3Igdm9sdGUqLw0KKyAgICBJT0NUTF9WT0lDRV9SRUFEX1NUQVJULCAgICAgICAgICAgICAvKiB2b2x0ZSByZWFkIHN0YXJ0IC5wYXJhbTpWT0lELCBmb3Igdm9sdGUqLw0KKyAgICBJT0NUTF9WT0lDRV9SRUFEX1NUT1AsICAgICAgICAgICAgIC8qIHZvbHRlIHJlYWQgc3RvcCAucGFyYW06Vk9JRCwgZm9yIHZvbHRlKi8NCisgICAgSU9DVExfVk9JQ0VfV1JJVEVfU1RBUlQsICAgICAgICAgICAgIC8qIHZvbHRlIHdyaXRlIHN0YXJ0IC5wYXJhbTpWT0lELCBmb3Igdm9sdGUqLw0KKyAgICBJT0NUTF9WT0lDRV9XUklURV9TVE9QLCAgICAgICAgICAgICAvKiB2b2x0ZSB3cml0ZSBzdG9wIC5wYXJhbTpWT0lELCBmb3Igdm9sdGUqLw0KKyAgICBJT0NUTF9WT0lDRV9NT0RFX0NPTkZJRywNCisNCisvLyBmb3IgYXVkaW8NCisgICAgSU9DVExfQVVESU9fUkVDT1JEX1NUQVJULCAgICAgIC8qIHN0YXJ0IHJlY29yZCxwYXJhbTpUX1pEcnZSY2RfSW5mb1BhcmFtICovDQorICAgIElPQ1RMX0FVRElPX1JFQ09SRF9TVE9QLCAgICAgICAvKiBzdG9wIHJlY29yZCxwYXJhbTpub25lICovDQorICAgIElPQ1RMX0FVRElPX1NFVF9SRUNPUkRfUEFUSCwgICAvKiBzZXQgcmVjb3JkIGlucHV0IHBhdGgscGFyYW06VF9aRHJ2X0NvZGVjSW5wdXRQYXRoICovDQorICAgIElPQ1RMX0FVRElPX1NFVF9SRUNPUkRfVk9MLCAgICAvKiBzZXQgcmVjb3JkIHZvbHVtLHBhcmFtOlRfWkRydkF1ZGlvX0lucHV0Vm9sTGV2ZWwgKi8NCisgICAgSU9DVExfQVVESU9fUkNEX0ZSRUVfQlVGRiwgICAgIC8qIGZyZWUgcmVjb3JkIGJ1ZmZlcixwYXJhbTpWT0lEICogKi8NCisgICAgSU9DVExfQVVESU9fU0VUX1JFQ09SRF9TQU1QTEUsICAvKiBTZXQgYXVkaW8gY29kZWMgY29uZmlnIGZvciBSRUNPUkQsIFNBTVBMRSBwYXJhbTpUX1pEcnZBdWRpb19TYW1wbGVSYXRlICAqLw0KKyAgICBJT0NUTF9BVURJT19TRVRfU0FNUExFLCAgICAgICAgICAgIC8qIFNldCBhdWRpbyBjb2RlYyBjb25maWcgZm9yIFBMQVksIFNBTVBMRSBwYXJhbTpUX1pEcnZBdWRpb19TYW1wbGVSYXRlICovDQorICAgIElPQ1RMX0FVRElPX1NFVF9CQU5MQU5DRSwgICAgICAvKiBzZXQgYmFsYW5jZSxwYXJhbTpUX1pEcnZBdWRpb19CYW5sYW5jZSAqLw0KKyAgICBJT0NUTF9BVURJT19TRVRfT1VUUFVUX1BBVEgsICAgLyogU2V0IE9VVFBVVCBwYXRoIGZvciBwbGF5ICxwYXJhbTpUX1pEcnZfQXVkaW9PdXRwdXRQYXRoICovDQorICAgIElPQ1RMX0FVRElPX1NFVF9PVVRQVVRfVk9MLCAgICAvKiBTZXQgT1VUUFVUIHZvbHVtZSBmb3IgcGxheSAscGFyYW06VF9aRHJ2QXVkaW9fT3V0cHV0Vm9sTGV2ZWwgKi8NCisgICAgSU9DVExfQVVESU9fU0VUX0VRTU9ERSwgICAgICAgIC8qIHNldCBFUW1vZGUscGFyYW06VF9aRHJ2QVVESU9fRVFNT0RFICovDQorICAgIElPQ1RMX0FVRElPX0VOQUJMRV8zREVGRkVDVCwgICAvKiBzZXQgM2RlZmZlY3QscGFyYW06VF9aRHJ2QXVkaW9fM0RFRkZFQ1QgKi8NCisgICAgSU9DVExfQVVESU9fU0VUX01VVEUsICAgICAgICAgIC8qIHNldCBtdXRlLHBhcmFtOkJPT0wgKi8NCisgICAgSU9DVExfQVVESU9fUExBWV9TVEFSVCwgICAgICAgIC8qIHN0YXJ0ICBhdWRpbyBwbGF5ICxwYXJhbTpUX1pEcnZBdWRpb19QbGF5UGFyYW0gKi8NCisgICAgSU9DVExfQVVESU9fUExBWV9TVE9QLCAgICAgICAgIC8qIHN0b3AgIGF1ZGlvIHBsYXkscGFyYW06bm9uZSAqLw0KKyAgICBJT0NUTF9BVURJT19QTEFZX1BBVVNFLCAgICAgICAgLyogcGF1c2UgIGF1ZGlvIHBsYXkscGFyYW06bm9uZSAqLw0KKyAgICBJT0NUTF9BVURJT19QTEFZX1JFU1VNRSwgICAgICAgLyogcmVzdW1lICBhdWRpbyBwbGF5ICxwYXJhbTpub25lICovDQorICAgIElPQ1RMX0FVRElPX0dFVF9QTEFZX0lORk8sICAgICAvKiBnZXQgdGhlIGF1ZGlvIHBsYXkgaW5mbyAscGFyYW06VF9aRHJ2QXVkaW9fUGxheUluZm8gKi8NCisgICAgSU9DVExfQVVESU9fR0VUX0JVRkZFUiwgICAgICAgIC8qIGdldCB0aGUgYXVkaW8gYnVmZmVyICxwYXJhbTpUX1pEcnZBdWRpb19CdWZJbmZvICovDQorICAgIElPQ1RMX0FVRElPX1NFVF9DQUxMQkFDSywgICAgICAvKiBzZXQgYXVkaW8gY2FsbGJhY2sgZnVuYyxwYXJhbTpUX1pEcnZBdWRpb19DYWxsYmFja0Z1bmMgKi8NCisNCisvL2ZvciBlYXJwaWVjZQ0KKwlJT0NUTF9FQVJQX1NFVF9DQUxMQkFDSyAJLCAgLypTZXQgY2FsbGJhY2sgZnVuY3Rpb24sIGl0IGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgc2VuZCB0aGUgZWFycGllY2Ugc3dpdGNoIHN0YXR1cyB0byB1c2VyLiovDQorCUlPQ1RMX0VBUlBfR0VUX1BMVUdfU1RBVFVTCSAsCS8qR2V0IGVhcnBpZWNlIHBsdWcgc3RhdHVzLCByZXBsYWNlIHRoZSByZWFkIGZ1bmN0aW9uLiovDQorCUlPQ1RMX0VBUlBfU0VUX0hPT0tfRU5BQkxFLA0KKwlJT0NUTF9FQVJQX1NFVF9IT09LX0RJU0FCTEUsDQorDQorLy8gZm9yIGlvIGxlZA0KKyAgICBJT0NUTF9MRURfV0FOID0gMHg3MDAwLA0KKyAgICBJT0NUTF9MRURfTEFOLA0KKyAgICBJT0NUTF9MRURfU01TLA0KKyAgICBJT0NUTF9MRURfQkFUVEVSWSwNCisgICAgSU9DVExfTEVEX1RSQUZGSUMsDQorICAgIElPQ1RMX0xFRF9TTEVFUCwNCisgICAgSU9DVExfTEVEX0xFRlRfMSwNCisgICAgSU9DVExfTEVEX0xFRlRfMiwNCisgICAgSU9DVExfTEVEX0xFRlRfMywNCisgICAgSU9DVExfTEVEX0xFRlRfNCwNCisgICAgSU9DVExfTEVEXzFfMl9PTiwNCisgICAgSU9DVExfTEVEXzFfMl8zX09OLA0KKyAgICBJT0NUTF9MRURfQUxMX09OLA0KKyAgICBJT0NUTF9MRURfQUxMX09GRiwNCisgICAgSU9DVExfTEVEX0NUUkxfTU9ELA0KKyAgICBJT0NUTF9MRURfTEdQLA0KKw0KKy8vIGZvciBydGMNCisgICAgSU9DVExfUE1JQ19SVENfU0VUX1RJTUUgPSAweDgwMDAsDQorICAgIElPQ1RMX1BNSUNfUlRDX0dFVF9USU1FLA0KKyAgICBJT0NUTF9QTUlDX1JUQ19TRVRfQUxBUk0sDQorICAgIElPQ1RMX1BNSUNfUlRDX0dFVF9BTEFSTSwNCisgICAgSU9DVExfUE1JQ19SVENfRU5BQkxFX0FMQVJNLA0KKyAgICBJT0NUTF9QTUlDX1JUQ19FTkFCTEVfQ1lDTEUsDQorICAgIElPQ1RMX1BNSUNfUlRDX1JFR0lTX0NZQ0xFX05PVElGWSwNCisgICAgSU9DVExfUE1JQ19SVENfUkVHSVNfQUxBUk1fTk9USUZZLA0KKyAgICBJT0NUTF9QTUlDX1JUQ19FTkFCTEVfVElNRVIsICAgICAgICAgIC8vyeh0aW1lcsqxvOQsIDC52LHVDQorICAgIElPQ1RMX1BNSUNfUlRDX1JFR0lTX1RJTUVSX05PVElGWSwgICAgLy/J6HRpbWVyyrG85LvYtfe6r8r9DQorICAgIElPQ1RMX1BNSUNfUlRDX0dFVF9USU1FUl9SRU1BSU4sICAgICAgLy+78cihdGltZXLKo9PgyrG85A0KKyAgICBJT0NUTF9QTUlDX1JUQ19DWUNMRV9JTlRfU0VMLA0KKw0KKw0KKy8vZm9yIGNoYXJnZXINCisgICAgSU9DVExfQ0hBUkdFUl9TRVRfQ0FMTEJBQ0sgPSAweDkwMDAsDQorICAgIElPQ1RMX0NIQVJHRVJfR0VUX1ZPTFRBR0UsDQorICAgIElPQ1RMX0NIQVJHRVJfR0VUX0NIR19TVEFUVVMsDQorICAgIElPQ1RMX0NIQVJHRVJfR0VUX0RJU0NIR19TVEFUVVMsDQorICAgIElPQ1RMX0NIQVJHRVJfVEVNUF9ERVRFQ1QsDQorICAgIElPQ1RMX0NIQVJHRVJfQ0hHX1NXSVRDSCwNCisgICAgSU9DVExfQ0hBUkdFUl9ESVNDSEdfU1dJVENILA0KKyAgICBJT0NUTF9DSEFSR0VSX1FVSUNLX1NUQVJUX0ZMQUcsDQorICAgIElPQ1RMX0NIQVJHRVJfR0VUX0NIR1RZUEUsDQorICAgIElPQ1RMX0NIQVJHRVJfQk9PU1RfT04sDQorICAgIElPQ1RMX0NIQVJHRVJfUkVMRUFTRV9CVVRUT04sDQorICAgIElPQ1RMX0NIQVJHRVJfR0VUX0VMRUNRVUFOLA0KKyAgICBJT0NUTF9DSEFSR0VSX0RFQlVHLA0KKyAgICANCisNCisgICAgSU9DVExfQ0hBUkdFUl9TRVRfT1RHLA0KKyAgICBJT0NUTF9DSEFSR0VSX1NFVF9TSElQUElOR19NT0RFLA0KKyAgICBJT0NUTF9DSEFSR0VSX0dFVF9FUlJPUl9DT0RFLA0KKyAgICBJT0NUTF9DSEFSR0VSX1NFVF9TVE9QX0NVUlJFTlQsDQorICAgIElPQ1RMX0NIQVJHRVJfR0VUX1NUT1BfUkVBU09OLA0KKyAgICBJT0NUTF9DSEFSR0VSX0dFVF9VU0JfU1RBVFVTLA0KKw0KKy8vZm9yIExDRA0KKyAgICBJT0NUTF9MQ0RfVVBEQVRFID0gMHhBMDAwLA0KKyAgICBJT0NUTF9MQ0RfU0xFRVAsDQorICAgIElPQ1RMX0xDRF9CQUNLTElHSFQsDQorICAgIElPQ1RMX0xDRF9CUklHSFRORVNTLA0KKyAgICBJT0NUTF9MQ0RfR0VUX0lORk8sDQorCUlPQ1RMX0xDRF9WT1VfV0JVUERBVEUsDQorLy9mb3Igc3BpDQorCUlPQ1RMX1NTUF9TRVRfWEZFUl9XSURUSCwNCisJSU9DVExfU1NQX1NFVF9DSEdfRlJFUSwNCisJSU9DVExfU1NQX1NFVF9NU01PREUsDQorCUlPQ1RMX1NTUF9TRVRfVFhUSEVTLA0KKwlJT0NUTF9TU1BfU0VUX1JYVEhFUywNCisNCisvL2ZvciBGTQ0KKwlJT0NUTF9GTV9TRVRfT1VUUEFUSCA9IDB4QjAwMCwNCisJSU9DVExfRk1fU0VUX1ZPTCwNCisJSU9DVExfRk1fU0VUX1NPVU5ETU9ERSwNCisJSU9DVExfRk1fU0VUX0ZSRVEsDQorCUlPQ1RMX0ZNX1NFVF9TQ0FOTkVYVCwNCisJSU9DVExfRk1fR0VUX0NVUkZSRVEsDQorCUlPQ1RMX0ZNX0dFVF9DVVJWT0wsDQorDQorLy9mb3IgVklCDQorCUlPQ1RMX1ZJQl9FTkFCTEUgPSAweEMwMDAsDQorCUlPQ1RMX1ZJQl9DSEVDS1NUQSwNCisNCisvKiBmb3IgS2V5cGFkICovDQorICAgIElPQ1RMX0tQRF9TRVRfQkxHX09OID0gMHhEMDAwLA0KKyAgICBJT0NUTF9LUERfU0VUX0JMR19PRkYsDQorICAgIElPQ1RMX0tQRF9TRVRfQkxHX0JSSUdIVE5FU1MsDQorICAgIElPQ1RMX0tQRF9HRVRfQkxHX1NUQVRVUywNCisgICAgSU9DVExfS1BEX0dFVF9LRVlTX1NUQVRVUywNCisgICAgSU9DVExfS1BEX0dFVF9IRUFEUEhPTkVfU1RBVEUsDQorDQorLy9mb3IgRkxBU0hMSUdIVA0KKwlJT0NUTF9GTEFTSExJR0hUX0VOQUJMRSA9IDB4RjAwMCwNCisJSU9DVExfRkxBU0hMSUdIVF9DSEVDS1NUQSwNCisvL2ZvciBDQU1FUkENCisJSU9DVExfQ0FNX1NFTlNPUl9HRVRfSU5GTyA9IDB4MTAwMDAsDQorCUlPQ1RMX0NBTV9TRU5TT1JfU0VMRUNULA0KKwlJT0NUTF9DQU1fU0VUX1pPT00sDQorCUlPQ1RMX0NBTV9TRVRfSU1HX1NJWkUsDQorCUlPQ1RMX0NBTV9TRVRfRUZGRUNULA0KKwlJT0NUTF9DQU1fU0VUX01JUlJPUkZMSVAsDQorCUlPQ1RMX0NBTV9TRVRfQlJJR0hUTkVTUywNCisJSU9DVExfQ0FNX1NFVF9DT05UUkFTVCwNCisJSU9DVExfQ0FNX1NFVF9TQVRVUkFUSU9OLA0KKwlJT0NUTF9DQU1fU0VUX1dISVRFX0JBTEFOQ0UsDQorCUlPQ1RMX0NBTV9TRVRfTElHSFRNT0RFLA0KKwlJT0NUTF9DQU1fU0VUX05JR0hUTU9ERSwNCisJSU9DVExfQ0FNX1NFVF9GUkFNRVJBVEUsDQorCUlPQ1RMX0NBTV9HRVRfT05FRlJBTUUsDQorCUlPQ1RMX0NBTV9GUkVFX0ZSQU1FX0JVRkZFUiwNCisvLwlJT0NUTF9DQU1fU0VUX0VYUE9TVVJFX0NPTVBFTlNBVElPTiwNCisJSU9DVExfQ0FNX1NFVF9BTlRJRkxJQ0tFUiwNCisJSU9DVExfQ0FNX1NUQVJULA0KKwlJT0NUTF9DQU1fU1RPUCwNCisJSU9DVExfVU5ERUZJTkU9MHg3RkZGRkZGRg0KKw0KK30gVF9EUlZJT19DVFJMX0tFWTsNCisNCisvLz09PT09PT09PT09PT09PT09PT1JTyBERVY9PT09PT09PT09PT09PT0NCisNCisjaWYgSU9LRVlTKElPQ1RMX1ZOSUNfR0VUX1ZOSUNfU1RBVEUpDQorLypWTklDIFN0YXRlKi8NCit0eXBlZGVmIGVudW0gX1RfRFJWSU9fVk5JQ19TVEFURQ0KK3sNCisgICAgRFJWSU9fVk5JQ19ESVNBQkxFID0gMHgwLAkvL73708PXtMysDQorICAgIERSVklPX1ZOSUNfUkVBRFkgPSAweDEsCQkvL860way906Osv8myprrFDQorICAgIERSVklPX1ZOSUNfQ09OTkVDVCA9IDB4MiwJLy/S0cGsvdMNCisgICAgRFJWSU9fVk5JQ19FUlIgPSAweGZmLAkJLy/S7LOj17TMrA0KK30NCitUX0RSVklPX1ZOSUNfU1RBVEU7DQorI2VuZGlmDQorDQorI2lmIElPS0VZUyhJT0NUTF9JT0RFVl9HRVRfREVWX1NUQVRVUykNCisvKkRldmljZSBTdGF0dXMqLw0KK3R5cGVkZWYgc3RydWN0IF9UX0RSVklPX0RFVl9TVEFUVVMNCit7DQorCVVJTlQzMiBDT05ORUNUOiAxOw0KKwlVSU5UMzIgcmVzZXJ2ZWQ6MzE7DQorfQ0KK1RfRFJWSU9fREVWX1NUQVRVUzsNCisjZW5kaWYNCisNCisjaWYgSU9LRVlTKElPQ1RMX0lPREVWX1JFR0lTVEVSX05PVElGWSkNCisvKkdsb2JhbCBFdmVudCovDQordHlwZWRlZiBlbnVtIF9UX0RSVklPX0VWRU5UDQorew0KKyAgICBEUlZJT19FVl9DT05ORUNUID0gMiwNCisgICAgRFJWSU9fRVZfUFJFX0RJU0NPTk5FQ1QsDQorICAgIERSVklPX0VWX0RJU0NPTk5FQ1QsDQorfSBUX0RSVklPX0VWRU5UOw0KKw0KKy8qRGV2aWNlIE5vdGlmeSovDQordHlwZWRlZiBzdHJ1Y3QgX1RfWkRydklPX0Rldk5vdGlmeQ0KK3sNCisgICAgVk9JRCAoICpub3RpZnlfZm4gKShWT0lEICpwcml2RGF0YSwgVF9EUlZJT19FVkVOVCAgZXZlbnQpOw0KKyAgICBWT0lEICpwcml2RGF0YTsNCit9DQorVF9aRHJ2SU9fRGV2Tm90aWZ5Ow0KKyNlbmRpZg0KKw0KKy8vPT09PT09PT09PT09PT09PT09PWJsb2NrIGRldmljZT09PT09PT09PT09PT09PQ0KKw0KKyNpZiBJT0tFWVMoSU9DVExfQkxLREVWX0dFVF9JTkZPKQ0KK3R5cGVkZWYgc3RydWN0ICBfVF9CbGtEZXZfSW5mbw0KK3sNCisgICAgVUlOVDMyIGJsa1NpemU7DQorICAgIFVJTlQzMiBibGtDbnQ7DQorfVRfQmxrRGV2X0luZm87DQorI2VuZGlmDQorDQorDQorI2lmIElPS0VZUyhJT0NUTF9CTEtERVZfRVJFQVNFKQ0KK3R5cGVkZWYgc3RydWN0ICBfVF9CbGtEZXZfRXJhc2VJbmZvDQorew0KKyAgICBVSU5UMzIgc3RhcnRCbGs7DQorICAgIFVJTlQzMiBibGtDbnQ7DQorfVRfQmxrRGV2X0VyYXNlSW5mbzsNCisjZW5kaWYNCisNCisNCisjaWYgSU9LRVlTKElPQ1RMX1NFUklBTF9TRVRfQ09ORklHKQ0KK3R5cGVkZWYgc3RydWN0ICBfVF9VYXJ0RGV2X0NvbmZpZ0luZm8NCit7DQorCVVJTlQ4ICBkYXRhQml0czsNCisJVUlOVDggIHN0b3BCaXRzOw0KKwlVSU5UOCAgcGFyaXR5Ow0KKwlVSU5UMzIJYmF1ZHJhdGU7DQorfVRfVWFydERldl9Db25maWdJbmZvOw0KKyNlbmRpZg0KKw0KKw0KKw0KK3R5cGVkZWYgdW5pb24NCit7DQorICAgIFVJTlQ4IG5vZGVJbkJ5dGVzWzhdOw0KKyAgICBzdHJ1Y3QNCisgICAgew0KKyAgICAgICAgVUlOVDgqIAlwTm9kZUJ1ZjsNCisgICAgICAgIFVJTlQzMiAJdWlOb2RlQnVmTGVuOw0KKyAgICB9DQorICAgIG5vZGU7DQorfQ0KK1RfWkRydl9CdWZOb2RlOw0KKw0KK3R5cGVkZWYgIFRfWkRydl9CdWZOb2RlIFRfWkRydlZjb21fQnVmTm9kZTsNCisNCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgVUlOVDY0Ow0KKw0KKyNpZiBJT0tFWVMoSU9DVExfVk5JQ19SRUdfQ0JLX1hGRVJfU1RBVElTVElDUykNCit0eXBlZGVmIHN0cnVjdCAgX1RfWkRydlZuaWNfWGZlclN0YXRpc3RpY3MNCit7DQorICAgIFVJTlQ2NCBUeE9rQ250Ow0KKyAgICBVSU5UNjQgUnhPa0NudDsNCisgICAgVUlOVDY0IFR4RXJyQ250Ow0KKyAgICBVSU5UNjQgUnhFcnJDbnQ7DQorICAgIFVJTlQ2NCBUeE92ZXJGbG93Q250Ow0KKyAgICBVSU5UNjQgUnhPdmVyRmxvd0NudDsNCit9DQorVF9aRHJ2Vm5pY19YZmVyU3RhdGlzdGljczsNCisNCit0eXBlZGVmICBUX1pEcnZWbmljX1hmZXJTdGF0aXN0aWNzKiAoKiBWbmljQ2JrX1hmZXJTdGF0aXN0aWNzKSAoVk9JRCk7DQorI2VuZGlmDQorDQorDQorI2lmIElPS0VZUyhJT0NUTF9WTklDX1JFR19DQktfTklDX0RJU0FCTEUpDQordHlwZWRlZiAgVk9JRCAoKiBWbmljQ2JrX0Rpc2FibGUpIChWT0lEKnByaXZEYXRhKTsNCisjZW5kaWYNCisNCisNCisjaWYgSU9LRVlTKElPQ1RMX1ZOSUNfUkVHX0NCS19OSUNfRU5BQkxFKQ0KK3R5cGVkZWYgIFZPSUQgKCogVm5pY0Nia19FbmFibGUpIChWT0lEKnByaXZEYXRhKTsNCisjZW5kaWYNCisNCisvL3R5cGVkZWYgIFVJTlQzMiAgKCogVm5pY0Nia19HZXRTcGVlZCkgKFZPSUQpOw0KKw0KKyNlbmRpZi8qX0RSVlNfSU9LRVlTX0gqLw0KKw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19rcGQuaCBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19rcGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzExODUzCi0tLSAvZGV2L251bGwKKysrIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX2twZC5oCkBAIC0wLDAgKzEsMTM0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCBaVEUgQ29ycG9yYXRpb24uCisgKgorICogRmlsZSBOYW1lOiAgICBkcnZzX2lvX2twZC5oCisgKiBGaWxlIE1hcms6CisgKiBEZXNjcmlwdGlvbjoKKyAqIE90aGVyczoKKyAqIFZlcnNpb246ICAgICAgIDEuMAorICogQXV0aG9yOiAgICAgICAgeXV4aWFuZworICogRGF0ZTogICAgICAgICAgMjAxNC0wNy0xMQorICogSGlzdG9yeSAxOgorICogICAgIERhdGU6CisgKiAgICAgVmVyc2lvbjoKKyAqICAgICBBdXRob3I6CisgKiAgICAgTW9kaWZpY2F0aW9uOgorICogSGlzdG9yeSAyOgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfRFJWU19JT19LUERfSAorI2RlZmluZSBfRFJWU19JT19LUERfSAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2luY2x1ZGUgImRydnNfaW8uaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9zCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBaRFJWX0RFVl9LUEQgICAgICAgICAgICAia3BkIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogdGlhbmJhbyB6aG91IDIwMTcxMTIyICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBLUERfVktfTlVMTCwKKworICAgIEtQRF9WS18xLCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgMSAqLworICAgIEtQRF9WS18yLCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgMiAqLworICAgIEtQRF9WS18zLCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgMyAqLworICAgIEtQRF9WS180LCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgNCAqLworICAgIEtQRF9WS181LCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgNSAqLworICAgIEtQRF9WS182LCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgNiAqLworICAgIEtQRF9WS183LCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgNyAqLworICAgIEtQRF9WS184LCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgOCAqLworICAgIEtQRF9WS185LCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgOSAqLworICAgIEtQRF9WS18wLCAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgMCAqLworICAgIEtQRF9WS19TVEFSLCAgICAgICAgICAgICAgICAvKiAxMToga2V5ICogKi8KKyAgICBLUERfVktfSEFTSCwgICAgICAgICAgICAgICAgLyogMTI6IGtleSAjICovCisKKyAgICBLUERfVktfTlZfVVAsICAgICAgICAgICAgICAgLyogMTM6IGtleSB1cCAqLworICAgIEtQRF9WS19OVl9ET1dOLCAgICAgICAgICAgICAvKiAxNDoga2V5IGRvd24gKi8KKyAgICBLUERfVktfTlZfTEVGVCwgICAgICAgICAgICAgLyogMTU6IGtleSBsZWZ0ICovCisgICAgS1BEX1ZLX05WX1JJR0hULCAgICAgICAgICAgIC8qIDE2OiBrZXkgcmlnaHQgKi8KKyAgICBLUERfVktfTlZfQ0VOVEVSLCAgICAgICAgICAgLyogMTc6IGtleSBvayAqLworICAgIEtQRF9WS19TT0ZUX0xFRlQsICAgICAgICAgICAvKiAxODogbGVmdCBzb2Z0ICovCisgICAgS1BEX1ZLX1NPRlRfUklHSFQsICAgICAgICAgIC8qIDE5OiByaWdodCBzb2Z0ICovCisgICAgS1BEX1ZLX0NBTEwsICAgICAgICAgICAgICAgIC8qIDIwOiBjYWxsIGtleSAqLworCisgICAgLyogVXNlIG9ubHkgS1BEX1ZLX1BPV0VSIGlmIGEga2V5IGlzIGJvdGggS1BEX1ZLX0NBTkNFTCBhbmQgS1BEX1ZLX1BPV0VSICovCisgICAgS1BEX1ZLX0NBTkNFTCwgICAgICAgICAgICAgIC8qIGNhbmNlbCBrZXkuICovCisgICAgS1BEX1ZLX1BPV0VSLCAgICAgICAgICAgICAgIC8qIDIyOiBwb3dlciBrZXkuICovCisKKyAgICBLUERfVktfU09GVF8xLCAgICAgICAgICAgICAgLyogMjM6IHNvZnQga2V5IDEgZm9yIGFkZGl0aW9uYWwgZnVuY3Rpb25hbCBrZXkgKi8KKyAgICBLUERfVktfU09GVF8yLCAgICAgICAgICAgICAgLyogMjQ6IHNvZnQga2V5IDIgZm9yIGFkZGl0aW9uYWwgZnVuY3Rpb25hbCBrZXkgKi8KKyAgICBLUERfVktfU09GVF8zLCAgICAgICAgICAgICAgLyogMjU6IHNvZnQga2V5IDMgZm9yIGFkZGl0aW9uYWwgZnVuY3Rpb25hbCBrZXkgKi8KKyAgICBLUERfVktfU09GVF80LCAgICAgICAgICAgICAgLyogMjY6IHNvZnQga2V5IDQgZm9yIGFkZGl0aW9uYWwgZnVuY3Rpb25hbCBrZXkgKi8KKworICAgIEtQRF9WS19TSURFX1VQLCAgICAgICAgICAgICAvKiAyNzogdXAga2V5IG9uIHRoZSBzaWRlICovCisgICAgS1BEX1ZLX1NJREVfRE9XTiwgICAgICAgICAgIC8qIDI4OiBkb3duIGtleSBvbiB0aGUgc2lkZSAqLworICAgIEtQRF9WS19XRUIsICAgICAgICAgICAgICAgICAvKiAyOTogd2ViIGtleSAqLworICAgIEtQRF9WS19DQU1FUkEsICAgICAgICAgICAgICAvKiAzMDogY2FtZXJhIGtleSAqLworICAgIEtQRF9WS19GTElQLCAgICAgICAgICAgICAgICAvKiAzMTogZmxpcCBrZXkgKi8KKworICAgIEtQRF9WS19TSE9SVENVVDEsCQkJLyogMzI6ICovCisgICAgS1BEX1ZLX1NIT1JUQ1VUMiwKKyAgICBLUERfVktfU0hPUlRDVVQzLAorICAgIEtQRF9WS19TSE9SVENVVDQsCisgICAgS1BEX1ZLX1NIT1JUQ1VUNSwKKyAgICBLUERfVktfU0hPUlRDVVQ2LAorICAgIEtQRF9WS19WT0xVTUUsICAgICAgICAgICAgICAvKiAzODog0vTBv7X3vdq958Pmv+y93bz8ICovCisgICAgS1BEX1ZLX1NFVFRJTkcsICAgICAgICAgICAgIC8qIDM5OiC/7L3dyejWwyAqLworICAgIEtQRF9WS19XRUFUSEVSUE9SVCwgICAgICAgICAvKiA0MDogzOzG+NSksaggKi8KKyAgICBLUERfVktfTUVTU0FHRSwgICAgICAgICAgICAgLyogNDE6ILbM0MUgKi8KKyAgICBLUERfVktfMTI1ODAsCQkJCS8qIDQyOiAqLworICAgIEtQRF9WS19TT1MsCQkJCQkvKiA0MzogKi8KKyAgICBLUERfVktfUkVESUFMLCAgICAgICAgICAgICAgLyogNDQ6INbYsqUgKi8KKyAgICBLUERfVktfSEVBREZSRUUsICAgICAgICAgICAgLyogNDU6IMPizOG8/CAqLworICAgIEtQRF9WS19IRUFEU0VULCAgICAgICAgICAgICAvKiA0Njog1aq7+iC78iC50rv6ICovCisgICAgS1BEX1ZLX0hFQURTRVRVUCwgICAgICAgICAgIC8qIDQ3OiDVqrv6ICovCisgICAgS1BEX1ZLX0hFQURTRVRET1dOLCAgICAgICAgIC8qIDQ4OiC50rv6ICovCisKKyAgICBLUERfVktfV0lGSSwKKyAgICBLUERfVktfUkVTRVQsCisgICAgS1BEX1ZLX1dQUywKKworICAgIEtQRF9WS19OVU0JCQkJCS8qIDUyICovCit9IFRfWkRydktwZF9WaXJ0dWFsS2V5OworCisvKiBrZXkgc3RhdGUgKi8KK3R5cGVkZWYgZW51bQoreworICAgIEtFWV9SRUxFQVNFRCwgICAgICAgICAvKiBrZXkgaGFzIGJlZW4gcmVsZWFzZWQgKi8KKyAgICBLRVlfUFJFU1NFRCwgICAgICAgICAgLyoga2V5IGhhcyBiZWVuIHByZXNzZWQgKi8KKworICAgIE1BWF9LRVlfU1RBVEUKK30gVF9aRHJ2S3BkX0tleVN0YXRlOworCit0eXBlZGVmIHN0cnVjdAoreworICAgIFRfWkRydktwZF9WaXJ0dWFsS2V5ICAgIGtleTsgICAgLyoga2V5IGNvZGUgKi8KKyAgICBUX1pEcnZLcGRfS2V5U3RhdGUgICAgICBzdGF0ZTsgIC8qIGtleSBzdGF0ZSAqLworICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgIHRpbWVzOyAgLyogc2NhbmVkIHRpbWVzIHdoZW4gcHJlc3NlZCwgYW5kIGJ5IHRoaXMgY2FuIGdldCB0aGUgZGUgcHJlc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGltZSBlcXVhbCB0byB0aW1lcyB4IHNjYW4gaW50ZXJ2YWwoIDEwMG1zICkgKi8KK30gVF9aRHJ2S3BkX0tleUl0ZW07CisKKyNpZiBJT0tFWVMoSU9DVExfS1BEX1NFVF9CTEdfQlJJR0hUTkVTUykgfHwgSU9LRVlTKElPQ1RMX0tQRF9HRVRfQkxHX1NUQVRVUykKK3R5cGVkZWYgVUlOVDggVF9aRHJ2S3BkX0JsZ0JyaWdodG5lc3M7ICAvKiAwfjI1NSAqLworI2VuZGlmCisKKyNpZiBJT0tFWVMoSU9DVExfS1BEX0dFVF9CTEdfU1RBVFVTKQordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBVSU5UOCBpc0JsZ09uOworICAgIFRfWkRydktwZF9CbGdCcmlnaHRuZXNzIGJyaWdodG5lc3M7Cit9IFRfWkRydktwZF9CbGdTdGF0dXM7CisjZW5kaWYKKworCisjZW5kaWYvKl9EUlZTX0lPX0tQRF9IKi8KKwpkaWZmIC0tZ2l0IGEvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX2xjZC5oIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX2xjZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NzNlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fbGNkLmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogQ29weXJpZ2h0IChDKSAyMDE0LCBaVEUgQ29ycG9yYXRpb24uDQorKiANCisqIEZpbGUgTmFtZTogZHJ2c19pb19sY2QuaA0KKyogRmlsZSBNYXJrOiAgCQ0KKyogRGVzY3JpcHRpb246ICBsY2QgZGVmaW5lLg0KKyogT3RoZXJzOiAgCQ0KKyogVmVyc2lvbjogIDEuMA0KKyogQXV0aG9yOiAgIFlpbldlbmd1YW4NCisqIERhdGU6ICAgICAgMjAxNC0xMS0xMQ0KKyogDQorKiBIaXN0b3J5IDE6ICAJCQ0KKyogICAgIERhdGU6IA0KKyogICAgIFZlcnNpb246DQorKiAgICAgQXV0aG9yOiANCisqICAgICBNb2RpZmljYXRpb246ICANCisNCisqIEhpc3RvcnkgMjogDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmICAgIF9EUlZTX0lPX0xDRF9IXw0KKyNkZWZpbmUgICAgX0RSVlNfSU9fTENEX0hfDQorI2luY2x1ZGUgImRydnNfdm91LmgiDQorI2luY2x1ZGUgImRydnNfdm91X3JlZi5oIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3R5cGVkZWYgZW51bQ0KK3sNCisgICAgTENEX0RDWF9DTUQgPSAwLCAgICAvLyC1zbXnxr3D/MHuDQorICAgIExDRF9EQ1hfREFUQSwgICAgICAgLy8guN+158a9ss7K/bvyyv2+3Q0KKw0KKyAgICBNQVhfTENEX0RDWF9UWVBFDQorfSBUX1pEcnZMY2RfRGN4VHlwZTsgLy8gdHJhbnNtaXNzaW9uIGJ5dGUgdHlwZQ0KKw0KK3R5cGVkZWYgZW51bSANCit7DQorICAgIExDRF9YRkVSX1BPTEwgPSAwLCAvLyDC1tGvt73KvQ0KKyAgICBMQ0RfWEZFUl9JTlQsICAgICAgIC8vINbQts+3vcq9DQorICAgIExDRF9YRkVSX0RNQSwgICAvLyBETUG3vcq9DQorICAgIExDRF9YRkVSX0NQVSwNCisgICAgDQorICAgIE1BWF9MQ0RfWEZFUl9UWVBFDQorfSBUX1pEcnZMY2RfWGZlclR5cGU7DQorDQorLyogbGNkIG1vZGUgKi8NCit0eXBlZGVmIGVudW0NCit7DQorICAgIExDRF9OT1JNQUwsICAgICAgICAvKiBub3JtYWwgbW9kZSAqLw0KKyAgICBMQ0RfU0xFRVAsICAgICAgICAgIC8qIHNsZWVwIG1vZGUgKi8NCisNCisgICAgTUFYX0xDRF9NT0RFDQorfSBUX1pEcnZMY2RfTW9kZTsNCisNCisvKiBsY2QgaW5zdGFuY2UgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgICAgQk9PTCAgICAgICAgICAgICAgICAgICAgICAgIGJPcGVuOyAgLyogc3RhdHVzOiBvcGVuLCBjbG9zZSAqLw0KKyAgICBUX1pEcnZMY2RfTW9kZSAgICAgICAgICBlTW9kZTsgICAgLyogd29ya2luZyBtb2RlOiBub3JtYWwsIHNsZWVwICovDQorICAgIFRfWkRydkxjZF9YZmVyVHlwZSAgICAgIGVYZmVyVHlwZTsgLyogcG9sbCwgaW50ZXJydXB0IG9yIERNQSAqLw0KKyAgICBUX1pEcnZMY2RfRGN4VHlwZSAgICAgICBlRGN4VHlwZTsgLyogY29tbWFuZCBvciBwYXJhbWV0ZXIvZGF0YSAqLw0KKyAgICBaT1NTX01VVEVYX0lEICAgICAgICAgICBtdXRleFVwZGF0ZTsgLyogbXV0ZXggZm9yIHVwZGF0aW5nIHJlY3RhbmdsZSAqLw0KKyAgICBaT1NTX1NFTUFQSE9SRV9JRCAgIHNlbURtYUludDsgLyogc2VtYXBob3JlIGZvciBETUEgdHJhbnNpbWlzaW9uICovDQorfSBUX1pEcnZMY2RfSW5zdGFuY2U7DQorDQorI2lmIElPS0VZUyhJT0NUTF9MQ0RfVVBEQVRFKQ0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgICBVSU5UMTYgdWlMZWZ0Ow0KKyAgICBVSU5UMTYgdWlUb3A7DQorICAgIFVJTlQxNiB1aVdpZHRoOw0KKyAgICBVSU5UMTYgdWlIZWlnaHQ7DQorICAgIFVJTlQ4KiBwQnVmOw0KK30gVF9aRHJ2TGNkX0Rpc3BsYXlQYXJhbTsNCisjZW5kaWYNCisNCisjaWYgSU9LRVlTKElPQ1RMX0xDRF9TTEVFUCkNCit0eXBlZGVmIGVudW0NCit7DQorICAgIExDRF9TTEVFUF9PVVQgPSAwLA0KKyAgICBMQ0RfU0xFRVBfSU4sDQorICAgIA0KK30gVF9aRHJ2TGNkX1NsZWVwU3RhdHVzOw0KKyNlbmRpZg0KKw0KKyNpZiBJT0tFWVMoSU9DVExfTENEX0JBQ0tMSUdIVCkNCit0eXBlZGVmIGVudW0NCit7DQorICAgIExDRF9CQUNLTElHSFRfT0ZGID0gMCwNCisgICAgTENEX0JBQ0tMSUdIVF9PTiwNCisgICAgDQorfSBUX1pEcnZMY2RfQmFja2xpZ2h0U3RhdHVzOw0KKyNlbmRpZg0KKw0KKyNpZiBJT0tFWVMoSU9DVExfTENEX0JSSUdIVE5FU1MpDQordHlwZWRlZiB1bnNpZ25lZCBpbnQgVF9aRHJ2TGNkX0JyaWdodG5lc3M7IC8qIFswLCAyNTVdOiAwIC0gZGFya2VzdDsgMjU1IC0gYnJpZ2h0ZXN0ICovDQorI2VuZGlmDQorDQorI2lmIElPS0VZUyhJT0NUTF9MQ0RfR0VUX0lORk8pDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgIFVJTlQxNiAgd2lkdGg7DQorICAgIFVJTlQxNiAgaGVpZ2h0Ow0KKyAgICBVSU5UMTYgIGJpdHNQZXJQaXhlbDsNCisgICAgVUlOVDE2ICByTWFzazsNCisgICAgVUlOVDE2ICBnTWFzazsNCisgICAgVUlOVDE2ICBiTWFzazsNCisgICAgVUlOVDE2ICBsY2RfcG93X3N0Ow0KKyAgICBVSU5UMTYgIGxjZF9waXhfc3Q7ICAgDQorICAgIFRfWkRydkxjZF9JbnN0YW5jZSBpbnN0YW5jZTsNCisgICAgVF9aRHJ2TGNkX0JhY2tsaWdodFN0YXR1cyBiYWNrbGlnaHQ7DQorICAgIFRfWkRydkxjZF9CcmlnaHRuZXNzIGJyaWdodG5lc3M7DQorDQorfSBUX1pEcnZMY2RfSW5mbzsNCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgICAgVF9aRHJ2X09TREluZm8gKk9TRF9JbmZvOw0KKwlUX1pEcnZMY2RfSW5mbyAqTGNkX0luZm87DQorDQorfVRfWkRydl9MQ0RWT1VJbmZvOw0KKw0KKyNlbmRpZg0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19sZWQuaCBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19sZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTI5ZWNlCi0tLSAvZGV2L251bGwKKysrIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX2xlZC5oCkBAIC0wLDAgKzEsMTYzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAwNywgWlRFIENvcnBvcmF0aW9uLg0KKyAqDQorICogRmlsZSBOYW1lOiAgICBkcnZzX2lvX2xlZC5oDQorICogRmlsZSBNYXJrOg0KKyAqIERlc2NyaXB0aW9uOg0KKyAqIE90aGVyczoNCisgKiBWZXJzaW9uOiAgICAgICAxLjANCisgKiBBdXRob3I6ICAgICAgICB5dXhpYW5nDQorICogRGF0ZTogICAgICAgICAgMjAxNC0wNy0wMw0KKyAqIEhpc3RvcnkgMToNCisgKiAgICAgRGF0ZToNCisgKiAgICAgVmVyc2lvbjoNCisgKiAgICAgQXV0aG9yOg0KKyAqICAgICBNb2RpZmljYXRpb246DQorICogSGlzdG9yeSAyOg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfRFJWU19JT19MRURfSA0KKyNkZWZpbmUgX0RSVlNfSU9fTEVEX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAiZHJ2c19pby5oIg0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBaRFJWX0RFVl9MRUQgICJsZWQiDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZXMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3R5cGVkZWYgZW51bSB7DQorCUxFRF9CUklHSFRORVNTXzAgPSAwLA0KKwlMRURfQlJJR0hUTkVTU18xICwgLyogMDAwMCAtIDEwbUEgICAqLw0KKwlMRURfQlJJR0hUTkVTU18yICwgLyogMDAwMSAtIDE1bUEgICAqLw0KKwlMRURfQlJJR0hUTkVTU18zICwgLyogMDAxMCAtIDIwbUEgICovDQorCUxFRF9CUklHSFRORVNTXzQgLCAvKiAzMG1BICAqLw0KKwlMRURfQlJJR0hUTkVTU181ICwgLyogNDBtQSAqLw0KKwlMRURfQlJJR0hUTkVTU182ICwgLyogNTBtQSAqLw0KKwlMRURfQlJJR0hUTkVTU183ICwgLyogNjBtQSAqLw0KKwlMRURfQlJJR0hUTkVTU184ICwgLyogNzBtQSAqLw0KKwlMRURfQlJJR0hUTkVTU185ICwgLyogODBtQSAqLw0KKwlMRURfQlJJR0hUTkVTU18xMCAsIC8qIDkwbUEJICAqLw0KKwlMRURfQlJJR0hUTkVTU18xMSAsIC8qIDEwMG1BICovDQorCUxFRF9CUklHSFRORVNTXzEyICwgLyogMTEwbUEgKi8NCisJTEVEX0JSSUdIVE5FU1NfMTMgLCAvKiAxMTAwIC0gMTIwbUEJICAqLw0KKwlMRURfQlJJR0hUTkVTU18xNCAsIC8qIDExMDEgLSAxMjBtQQkgICovDQorCUxFRF9CUklHSFRORVNTXzE1ICwgLyogMTExMCAtIDEyMG1BCSAgKi8NCisJTEVEX0JSSUdIVE5FU1NfMTYgLCAvKiAxMTExIC0gMTIwbUEJICAqLw0KKwlMRURfQlJJR0hUTkVTU19NQVgsDQorfVRfWkRydkxlZF9CcmlnaHRuZXNzOw0KKw0KKyNkZWZpbmUgTEVEX1JFRF9PTgkJCSgxPDwwKQ0KKyNkZWZpbmUgTEVEX0dSRUVOX09OCQkoMTw8MSkNCisjZGVmaW5lIExFRF9CTFVFX09OCQkgICAgKDE8PDIpDQordHlwZWRlZiBlbnVtDQorew0KKwlMRURfQ09MT1JfUkVEICAgPUxFRF9SRURfT04sDQorCUxFRF9DT0xPUl9HUkVFTiA9TEVEX0dSRUVOX09OLA0KKwlMRURfQ09MT1JfQkxVRSAgPUxFRF9CTFVFX09OLA0KKwlMRURfQ09MT1JfWUVMTE9XPUxFRF9SRURfT04gfCBMRURfR1JFRU5fT04sDQorCUxFRF9DT0xPUl9QVVJQTEU9TEVEX1JFRF9PTiB8IExFRF9CTFVFX09OLA0KKwlMRURfQ09MT1JfQ1lBTiAgPUxFRF9HUkVFTl9PTiB8IExFRF9CTFVFX09OLA0KKwlMRURfQ09MT1JfV0hJVEUgPUxFRF9SRURfT04gfExFRF9HUkVFTl9PTiB8IExFRF9CTFVFX09OLA0KKwkvL0xFRF9DT0xPUl9CTEFDSywNCisJTEVEX0NPTE9SX01BWCwNCit9VF9aRHJ2TGVkX0NvbG9yOw0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJTEVEX1NUQVRFX09GRiA9IDAsDQorCUxFRF9TVEFURV9PTiAsDQorCS8vTEVEX1NUQVRFX0JMSU5LX09GRiwNCisJLy9MRURfU1RBVEVfQkxJTktfT04sDQorCUxFRF9TVEFURV9CTElOSywNCisJTEVEX1NUQVRFX01BWCwNCit9VF9aRHJ2TGVkX1N0YXRlOw0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJTEVEX1RSQUZGSUNfMTAgPSAwLA0KKwlMRURfVFJBRkZJQ18yMCAsDQorCUxFRF9UUkFGRklDXzMwLA0KKwlMRURfVFJBRkZJQ180MCwNCisJTEVEX1RSQUZGSUNfNTAsDQorCUxFRF9UUkFGRklDXzYwLA0KKwlMRURfVFJBRkZJQ183MCwNCisJTEVEX1RSQUZGSUNfODAsDQorCUxFRF9UUkFGRklDXzkwLA0KKwlMRURfVFJBRkZJQ18xMDAsDQorCUxFRF9UUkFGRklDX01BWCwNCit9VF9aRHJ2TGVkX1RyYWZmaWM7DQorDQordHlwZWRlZiBlbnVtDQorew0KKwlMRURfU0xFRVBfRU5URVIgPSAwLA0KKyAgICBMRURfU0xFRVBfRVhJVCwNCisgICAgTEVEX1NMRUVQX01BWCwNCisNCit9VF9aRHJ2TGVkX1NsZWVwOw0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJTEVEX0RFVklDRV9OQU1FX1dBTiA9IDAsDQorCUxFRF9ERVZJQ0VfTkFNRV9MQU4sDQorCUxFRF9ERVZJQ0VfTkFNRV9TTVMsDQorCUxFRF9ERVZJQ0VfTkFNRV9CQVRURVJZLA0KKwlMRURfREVWSUNFX05BTUVfVFJBRkZJQywNCisJTEVEX0RFVklDRV9MRUZUXzEsDQorCUxFRF9ERVZJQ0VfTEVGVF8yLA0KKwlMRURfREVWSUNFX0xFRlRfMywNCisJTEVEX0RFVklDRV9MRUZUXzQsDQorCUxFRF9ERVZJQ0VfTkFNRV9MR1AsDQorDQorCUxFRF9ERVZJQ0VfTkFNRV9TTEVFUCwNCisgICAgTEVEX0RFVklDRV9OQU1FX01BWCwNCit9VF9aRHJ2TGVkX0Rldk5hbWU7DQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgIFVJTlQzMiB1QmxpbmtPblRpbWU7DQorICAgIFVJTlQzMiB1QmxpbmtPZmZUaW1lOw0KK31UX1pEcnZMZWRfQmxpbms7DQorDQorLypkZWZpbmUgZm9yIGxlZCBjdHJsIG1vZCBieSBtY3Ugb3IgaGFyZHdhcmUgMHgwMSBCTEVEX1JFRyovDQorDQordHlwZWRlZiBlbnVtDQorew0KKwlMRURfSFdfQ1RSTCA9IDAsCQ0KKwlMRURfTUNVX0NUUkwsDQorCQ0KKwlMRURfTUFYX0NUUkwsDQorfVRfWkRydkxlZF9DdHJsTW9kOw0KKw0KKw0KKy8qSU9DVEy/2NbGstnX97Srtd2yzsr9wODQzSovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorCS8vVF9aRHJ2TGVkX0Rldk5hbWUgdURldmljZU5hbWU7DQorCVRfWkRydkxlZF9CcmlnaHRuZXNzICB1QnJpZ2h0bmVzczsNCisJVF9aRHJ2TGVkX0NvbG9yIHVDb2xvcjsNCisgICAgVF9aRHJ2TGVkX1N0YXRlIHVTdGF0ZTsNCisgICAgVF9aRHJ2TGVkX1RyYWZmaWMgdVRyYWZmaWM7DQorICAgIFRfWkRydkxlZF9TbGVlcCB1U2xlZXA7DQorICAgIFRfWkRydkxlZF9CbGluayBsZWRCbGluazsNCisJVF9aRHJ2TGVkX0N0cmxNb2QgbGVkQ3RybE1vZDsNCit9VF9aRHJ2TGVkX0Rlc2NyaXB0b3I7DQorDQorI2lmIDANCisvKtPD09q78cihyeixuNDFz6IqLw0KK3R5cGVkZWYgc3RydWN0DQorew0KKwlUX1pEcnZMZWRfRGV2TmFtZSAgbGVkTmFtZTsNCisJVF9aRHJ2TGVkX1N0YXRlICAgICAgICBsZWRTdGF0ZSA7DQorCVRfWkRydkxlZF9Db2xvciAgbGVkQ29sb3IgOw0KKwlUX1pEcnZMZWRfQnJpZ2h0bmVzcyAgIGxlZEJyaWdodE5lc3M7DQorDQorfVRfTEVEX0lORk87DQorI2VuZGlmDQorDQorI2VuZGlmLypfRFJWU19JT19MRURfSCovDQorDQpkaWZmIC0tZ2l0IGEvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX25hbWVzLmggYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fbmFtZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTY4MTJhCi0tLSAvZGV2L251bGwKKysrIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX25hbWVzLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDA3LCBaVEUgQ29ycG9yYXRpb24uDQorICoNCisgKiBGaWxlIE5hbWU6DQorICogRmlsZSBNYXJrOg0KKyAqIERlc2NyaXB0aW9uOg0KKyAqIE90aGVyczoNCisgKiBWZXJzaW9uOiAgICAgICAxLjANCisgKiBBdXRob3I6ICAgICAgICBnZWFuZmVuZw0KKyAqIERhdGU6ICAgICAgICAgIDIwMTQtMDctMjMNCisgKiBIaXN0b3J5IDE6DQorICogICAgIERhdGU6DQorICogICAgIFZlcnNpb246DQorICogICAgIEF1dGhvcjoNCisgKiAgICAgTW9kaWZpY2F0aW9uOg0KKyAqIEhpc3RvcnkgMjoNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0RSVlNfSU9fTkFNRVNfSF8NCisjZGVmaW5lIF9EUlZTX0lPX05BTUVTX0hfDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBmaWxlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9zDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFpEUlZfREVWX1VTQlNJT19OQU1FCSJ1c2JzaW8vJWQiDQorI2RlZmluZSBaRFJWX0RFVl9VU0JTSU9fMAkJInVzYnNpby8wIg0KKyNkZWZpbmUgWkRSVl9ERVZfVVNCU0lPXzEJCSJ1c2JzaW8vMSINCisjZGVmaW5lIFpEUlZfREVWX1VTQlNJT18yCQkidXNic2lvLzIiDQorI2RlZmluZSBaRFJWX0RFVl9VU0JTSU9fMwkJInVzYnNpby8zIg0KKw0KKw0KKy8qbmFtZXMgb2YgdmlydHVhbCBzZXJpYWwgcG9ydCAqLw0KKyNkZWZpbmUgWkRSVl9ERVZfVkNPTV9BVAkJCSJVU0ItQVQiDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX0FUXzAyCQkiVVNCLUFUMiIJDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX1VQREFURSAgICAiVVNCLVVQREFURSINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fTU9ERU0JCSJVU0ItTU9ERU0iDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX0xPRwkJCSJVU0ItTE9HIgkNCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fQURCCQkJIlVTQi1BREIiDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX1NPVU5ECQkiVVNCLVNPVU5EIgkJDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX01VWAkJCSJVU0ItTVVYIgkvL3RoaXMgcG9ydCBpcyB1c2VkIGZvciBtdXghCQ0KKw0KKyNkZWZpbmUgWkRSVl9ERVZfVkNPTV9BTVQJCQkiVVNCLUFNVCIJLy9Gb3IgYW10IHZlcnNpb24NCisNCisvKm5hbWVzIG9mIHZpcnR1YWwgTklDICAqLw0KKyNkZWZpbmUgWkRSVl9ERVZfVk5JQzEgICAgIAkJCSJVU0ItVk5JQyINCisjZGVmaW5lIFpEUlZfREVWX1ZOSUMyICAgIAkJCSJVU0ItVk5JQzIiDQorI2RlZmluZSBaRFJWX0RFVl9WTklDMyAgICAJCQkiVVNCLVZOSUMzIg0KKyNkZWZpbmUgWkRSVl9ERVZfVk5JQzQgICAgCQkJIlVTQi1WTklDNCINCisjZGVmaW5lIFpEUlZfREVWX1ZOSUM1ICAgIAkJCSJVU0ItVk5JQzUiDQorI2RlZmluZSBaRFJWX0RFVl9WTklDNiAgICAJCQkiVVNCLVZOSUM2Ig0KKyNkZWZpbmUgWkRSVl9ERVZfVk5JQzcgICAgCQkJIlVTQi1WTklDNyINCisNCisNCisvKm5hbWVzIG9mIHVhcnQgZGV2aWNlICovDQorCQ0KKyNkZWZpbmUgWkRSVl9ERVZfVUFSVF9OQU1FICAJInVhcnQvJWQiDQorI2RlZmluZSBaRFJWX0RFVl9VQVJUXzAgIAkJInVhcnQvMCINCisjZGVmaW5lIFpEUlZfREVWX1VBUlRfMSAgCQkidWFydC8xIg0KKyNkZWZpbmUgWkRSVl9ERVZfVUFSVF9CVCAgCQkidWFydC8yIg0KKwkNCisJDQorLy9NVVggQ09NIFBPUlQNCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDMQkJCSJtdXgvZGxjMSINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDMgkJCSJtdXgvZGxjMiINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDMwkJCSJtdXgvZGxjMyINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDNAkJCSJtdXgvZGxjNCINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDNQkJCSJtdXgvZGxjNSINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDNgkJCSJtdXgvZGxjNiINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDNwkJCSJtdXgvZGxjNyINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDOAkJCSJtdXgvZGxjOCIJDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX0RMQzkJCQkibXV4L2RsYzkiDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX0RMQzEwCQkJIm11eC9kbGMxMCINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDMTEJCQkibXV4L2RsYzExIg0KKyNkZWZpbmUgWkRSVl9ERVZfVkNPTV9ETEMxMgkJCSJtdXgvZGxjMTIiDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX0RMQzEzCQkJIm11eC9kbGMxMyINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDMTQJCQkibXV4L2RsYzE0Ig0KKyNkZWZpbmUgWkRSVl9ERVZfVkNPTV9ETEMxNQkJCSJtdXgvZGxjMTUiDQorI2RlZmluZSBaRFJWX0RFVl9WQ09NX0RMQzE2CQkJIm11eC9kbGMxNiINCisjZGVmaW5lIFpEUlZfREVWX1ZDT01fRExDMTcJCQkibXV4L2RsYzE3Ig0KKyNkZWZpbmUgWkRSVl9ERVZfVkNPTV9ETEMxOAkJCSJtdXgvZGxjMTgiDQorDQorLy9TRCBkZWZpbmUNCisjZGVmaW5lIFpEUlZfREVWX1NEMCAgICAgCQkJInNkMCINCisjZGVmaW5lIFpEUlZfREVWX1NEMFAxICAgICAJCQkic2QwcDEiDQorI2RlZmluZSBaRFJWX0RFVl9TRDBQMiAgICAgCQkJInNkMHAyIg0KKw0KKyNkZWZpbmUgWkRSVl9ERVZfU0QxICAgICAJCQkic2QxIg0KKyNkZWZpbmUgWkRSVl9ERVZfU0QxUDEgICAgIAkJCSJzZDFwMSINCisjZGVmaW5lIFpEUlZfREVWX1NEMVAyICAgICAJCQkic2QxcDIiDQorDQorLy9DRFJPTSBkZWZpbmUNCisjZGVmaW5lIFpEUlZfREVWX0NEUk9NICAgICAJCQkiY2Ryb20iDQorDQorDQorLy9FTU1DIGRlZmluZQ0KKyNkZWZpbmUgWkRSVl9ERVZfRU1NQ19GUyAgICAgCQkiTU1DdXNlcmRhdGEiDQorDQorLy9MQ0QgZGVmaW5lDQorI2RlZmluZSBaRFJWX0RFVl9MQ0QgICAgIAkJICAgICJsY2QiDQorLy9DQU1FUkEgZGVmaW5lDQorI2RlZmluZSBaRFJWX0RFVl9DQU1FUkExICAgICAJCSJjYW1lcmExIg0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdsb2JhbCAgVmFyaWFibGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbiBQcm90b3R5cGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjZW5kaWYvKl9EUlZTX0lPX05BTUVTX0hfKi8NCisNCmRpZmYgLS1naXQgYS9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fcnRjLmggYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2RydnNfaW9fcnRjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlkZTU5NgotLS0gL2Rldi9udWxsCisrKyBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19ydGMuaApAQCAtMCwwICsxLDk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAwNywgWlRFIENvcnBvcmF0aW9uLg0KKyAqDQorICogRmlsZSBOYW1lOiAgICBkcnZzX2lvX2xlZC5oDQorICogRmlsZSBNYXJrOg0KKyAqIERlc2NyaXB0aW9uOg0KKyAqIE90aGVyczoNCisgKiBWZXJzaW9uOiAgICAgICAxLjANCisgKiBBdXRob3I6ICAgICAgICB5dXhpYW5nDQorICogRGF0ZTogICAgICAgICAgMjAxNC0wNy0wMw0KKyAqIEhpc3RvcnkgMToNCisgKiAgICAgRGF0ZToNCisgKiAgICAgVmVyc2lvbjoNCisgKiAgICAgQXV0aG9yOg0KKyAqICAgICBNb2RpZmljYXRpb246DQorICogSGlzdG9yeSAyOg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfRFJWU19JT19SVENfSA0KKyNkZWZpbmUgX0RSVlNfSU9fUlRDX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAiZHJ2c19pby5oIg0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBaRFJWX0RFVl9SVEMgICJydGMiDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZXMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKw0KK3R5cGVkZWYgc3RydWN0IA0KK3sgIA0KKyAgICBCT09MICAgIG1vZGVfMTJfaG91cjsgLyogVFJVRS0+MTIgaG91ciBtb2RlIDsgRkFMU0UtPiAyNCBob3VyIG1vZGUgKi8NCisgICAgQk9PTCAgICBQTV9mbGFnOyAgICAgIC8qIGlmIDEyIGhvdXIgZmxhZyA9IFRSVUUgICAgVFJVRS0+UE0gOyBGQUxTRS0+QU0gKi8NCisgICAgVUlOVDggICBzZWNvbmQ7ICAgICAgIC8qIHNlY29uZHMgYWZ0ZXIgdGhlIG1pbnV0ZSAgIC0gWzAsNTldICAqLw0KKyAgICBVSU5UOCAgIG1pbnV0ZTsgICAgICAgLyogbWludXRlcyBhZnRlciB0aGUgaG91ciAgICAgIC0gWzAsNTldICAqLw0KKyAgICBVSU5UOCAgIGhvdXI7ICAgICAgICAgLyogaG91cnMgYWZ0ZXIgdGhlIG1pZG5pZ2h0ICAgLSBbMCwyM10gICovDQorICAgIFVJTlQ4ICAgZGF5OyAgICAgICAgICAvKiBkYXkgb2YgdGhlIG1vbnRoICAgICAgICAgICAgLSBbMSwzMV0gICovDQorICAgIFVJTlQ4ICAgbW9udGg7ICAgICAgICAvKiBtb250aHMgICAgICAgICAgICAgICAgICAgICAtIFswMSwxMl0gKi8gICANCisgICAgVUlOVDggICB3ZGF5OyAgICAgICAgIC8qIGRheXMgaW4gYSB3ZWVrICAgICAgICAgICAgICAgLSBbMSw3XSAqLw0KKyAgICBVSU5UMTYgIHllYXI7ICAgICAgICAgLyogeWVhcnMgICAgICAgICAgICAgICAgICAgICAgICAtIFswMDAwLDk5OTldICovDQorfSBUX1pEcnZSdGNfVGltZURhdGU7DQorDQorDQordHlwZWRlZiBlbnVtIA0KK3sNCisgICAgUlRDX0lSUV9TRUNfSU5ULAkvKnNlY29uZCBpbnRlcnJ1cHQgICovDQorICAgIFJUQ19JUlFfTUlOX0lOVCwJLyogbWludXRlIGludGVycnVwdCAqLw0KKyAgICBSVENfSVJRX0hPVVJfSU5ULAkvKiBob3VyIGludGVycnVwdCAqLw0KKyAgICBSVENfSVJRX0RBWV9JTlQsCS8qIGRheSBpbnRlcnJ1cHQgKi8NCisNCisgICAgUlRDX0lSUV9JTlRfTUFYDQorfSBUX1pEcnZSdGNfRXZlbnRJbnQ7DQorDQordHlwZWRlZiBlbnVtIA0KK3sNCisgICAgUlRDX0lOVF9ESVNBQkxFLA0KKyAgICBSVENfSU5UX0VOQUJMRSwNCisNCisgICAgTUFYX1JUQ19JTlRfU0VUVVANCit9VF9aRHJ2UnRjX0ludFNldHVwOw0KKw0KK3R5cGVkZWYgZW51bSANCit7DQorICAgIEFMQVJNX1BPV0VSX09GRiwNCisgICAgQUxBUk1fUE9XRVJfT04sDQorDQorICAgIE1BWF9BTEFSTV9QT1dFUg0KK30gVF9aRHJ2UnRjX0FsYXJtUG93ZXI7DQorDQordHlwZWRlZiAgICBWT0lEICgqekRydlJ0Y19BbGFybUNhbGxiYWNrRnVuYykoVk9JRCk7DQordHlwZWRlZiAgICBWT0lEICgqekRydlJ0Y19DeWNsZUNhbGxiYWNrRnVuYykoVF9aRHJ2UnRjX0V2ZW50SW50KTsNCisNCisNCisvKklPQ1RMv9jWxrLZ1/e0q7Xdss7K/cDg0M0qLw0KK3R5cGVkZWYgc3RydWN0DQorew0KKwlUX1pEcnZSdGNfVGltZURhdGUgIFRpbWVEYXRlOw0KKwlUX1pEcnZSdGNfQWxhcm1Qb3dlciBBbGFybUVuYWJsZTsNCisgICAgVF9aRHJ2UnRjX0ludFNldHVwIEludEVuYWJsZTsNCisgICAgekRydlJ0Y19DeWNsZUNhbGxiYWNrRnVuYyBDeWNsZUNhbGxiYWNrOw0KKyAgICB6RHJ2UnRjX0FsYXJtQ2FsbGJhY2tGdW5jIEFsYXJtQ2FsbGJhY2s7DQorfVRfWkRydlJ0Y19EZXNjcmlwdG9yOw0KKw0KKw0KKw0KKy8qttTGvcyotaW2wMzhuam1xLbByKHT68no1sPKsbzkyNXG2rXEvdO/2iovDQorU0lOVDMyICBSdGNfR2V0RGF0ZVRpbWUoVF9aRHJ2UnRjX1RpbWVEYXRlICogcERhdGVUaW1lKTsNCitTSU5UMzIgIFJ0Y19TZXREYXRlVGltZShUX1pEcnZSdGNfVGltZURhdGUgKiBwRGF0ZVRpbWUpOw0KKw0KKw0KKyNlbmRpZi8qX0RSVlNfSU9fTEVEX0gqLw0KKw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19zaW8uaCBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb19zaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTEyYjc4Ci0tLSAvZGV2L251bGwKKysrIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX3Npby5oCkBAIC0wLDAgKzEsMTM4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIENvcHlyaWdodCAoQykgMjAwMSwgWlRFIENvcnBvcmF0aW9uLg0KKyogDQorKiBGaWxlIE5hbWU6IGRydnNfaW9fc2lvLmgNCisqIEZpbGUgTWFyazogIAkNCisqIERlc2NyaXB0aW9uOiAgc2lvIGRlZmluZS4NCisqIE90aGVyczogIAkNCisqIFZlcnNpb246ICAxLjQuOQ0KKyogQXV0aG9yOiAgIHdhbmd4aWENCisqIERhdGU6ICAgICAgMjAxMC0wNC0yDQorKiANCisqIEhpc3RvcnkgMTogIAkJDQorKiAgICAgRGF0ZTogDQorKiAgICAgVmVyc2lvbjoNCisqICAgICBBdXRob3I6IA0KKyogICAgIE1vZGlmaWNhdGlvbjogIA0KKw0KKyogSGlzdG9yeSAyOiANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICAiZHJ2c19pb19rZXlzLmgiDQorI2lmbmRlZiAgICBfRFJWU19TSU9fSF8NCisjZGVmaW5lICAgIF9EUlZTX1NJT19IXw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3R5cGVkZWYgc3RydWN0IF9UX1pEcnZTaW9fRGF0YUNvbmZpZw0KK3sNCisJVUlOVDMyCWJhdWRyYXRlOwkJCQkNCisJVUlOVDMyIGZsb3dDb250cm9sOw0KKwlVSU5UOCAgZGF0YUJpdHM7DQorCVVJTlQ4ICBzdG9wQml0czsNCisJVUlOVDggIHBhcml0eTsNCisJVUlOVDggIHdvcmtNb2RlOw0KK31UX1pEcnZTaW9fRGF0YUNvbmZpZzsNCisNCisNCit0eXBlZGVmIGVudW0NCit7DQorCVpEUlZfREVWX1VBUlRfRkNUTF9PRkYsDQorCVpEUlZfREVWX1VBUlRfRkNUTF9TVywNCisJWkRSVl9ERVZfVUFSVF9GQ1RMX0hXDQorfVRfWkRydlNpb19VYXJ0Rmxvd0N0cmxfVHlwZXM7DQorDQordHlwZWRlZiBlbnVtDQorew0KKwlaRFJWX0RFVl9VQVJUX1BBUklUWV9FVkVOLA0KKwlaRFJWX0RFVl9VQVJUX1BBUklUWV9PREQsDQorCVpEUlZfREVWX1VBUlRfUEFSSVRZX05VTEwNCit9VF9aRHJ2U2lvX1VhcnRQYXJpdHlfVHlwZXM7IA0KKw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJWkRSVl9ERVZfVUFSVF9NT0RFX0NQVSwNCisJWkRSVl9ERVZfVUFSVF9NT0RFX0RNQSwNCisJWkRSVl9ERVZfVUFSVF9NT0RFX05VTEwNCit9VF9aRHJ2U2lvX1VhcnRXb3JrTW9kZV9UeXBlczsNCisNCisvKnNpbyBpb2N0bCBjb21tYW5kKi8NCit0eXBlZGVmIGVudW0NCit7DQorCUlPQ1RMX1NJT19TRVRfREFUQSwgCQkJCS8qc2V0IGRhdGEgY29uZmlnIGNvbW1hbmQsc2V0IGJhdWRyYXRlLnBhcmFtOlRfWkRydlNpb19EYXRhQ29uZmlnKi8NCisJSU9DVExfU0lPX1NFVF9CVUZGRVIsCQkJIC8qc2V0IGRhdGEgYnVmZmVyIGNvbW1hbmQscGFyYW06VF9aRHJ2U2lvX1NldENvbmZpZyAqLw0KKwlJT0NUTF9TSU9fQ0xFQU5fQkxPQ0ssCQkJLypjbGVhbiB0aGUgc2lvIGJsb2NrIHJlYWQqLw0KKwlJT0NUTF9TSU9fQ0FMTEJBQ0ssIAkJCQkvKnNldCBzaW8gbm9uIGJsb2NrIGNhbGxiYWNrIGZ1bmN0aW9uLnBhcmFtOlRfWkRydlNpb19SZWFkX0NhbGxCYWNrKi8NCisJCSAgDQorCUlPQ1RMX1NJT19DTURfTUFYDQorfSBUX1pEcnZTaW9fSU9DVEw7IC8qc2lvIGlvY3RsIGNvbW1hbmQqLw0KKw0KKw0KKw0KK3R5cGVkZWYgc3RydWN0IF9UX1pEcnZVc2JTaW9fU2V0Q29uZmlnDQorew0KKwkNCisJVUlOVDgJCQkJCSBlbmRwb2ludDsNCisJVUlOVDMyCQkJCQl0eEJ1ZmZlclNpemU7DQorCVVJTlQzMgkJCQkJcnhCdWZmZXJTaXplOw0KKwlCT09MCQkJCQlibG9jazsNCisJVUlOVDMyCQkJCQkgIGJsb2NrdGltZTsNCisNCit9VF9aRHJ2VXNiU2lvX1NldENvbmZpZzsgLyp1c2JzaW8gdXNlIHRvIGNvbmZpZyB0aGUgcGFyYW0qLw0KKw0KK3R5cGVkZWYgc3RydWN0IF9UX1pEcnZTaW9fU2V0Q29uZmlnDQorew0KKwkNCisJVUlOVDgJCQkJCSBlbmRwb2ludDsNCisJVUlOVDMyCQkJCQl0eEJ1ZmZlclNpemU7DQorCVVJTlQzMgkJCQkJcnhCdWZmZXJTaXplOw0KKwlCT09MCQkJCQlibG9jazsNCisJVUlOVDMyCQkJCQkgIGJsb2NrdGltZTsNCisJVF9aRHJ2U2lvX0RhdGFDb25maWcJZGF0YWNvbmZpZzsNCit9VF9aRHJ2U2lvX1NldENvbmZpZzsgLyp1c2JzaW8gdXNlIHRvIGNvbmZpZyB0aGUgcGFyYW0qLw0KKw0KKw0KK3R5cGVkZWYgc3RydWN0IF9UX1Npb19EZXZfSHcNCit7DQorICAgIFZPSUQgKiByZWdzOw0KKyAgICBUX1pEcnZTaW9fRGF0YUNvbmZpZyBzZXR0aW5nczsNCisgICAgVk9JRCAqIHVwTGF5ZXJTZXQ7DQorDQorfQ0KK1RfU2lvX0Rldl9IdzsNCisNCisNCit0eXBlZGVmIHN0cnVjdCBfVF9TaW9fSGFsT3B0DQorew0KKyAgICBTSU5UMzIgKCpvcGVuKShVSU5UMzIgcG9ydE51bSxUX1pEcnZTaW9fRGF0YUNvbmZpZyAqIHBvcnRDb25maWcpOw0KKyAgICBTSU5UMzIgKCpyZWFkKShVSU5UMzIgcG9ydE51bSwgVUlOVDgqIHBCdWYsIFVJTlQzMiBsZW4pOw0KKyAgICBTSU5UMzIgKCp3cml0ZSkoVUlOVDMyIHBvcnROdW0sIFVJTlQ4KiBwQnVmLCBVSU5UMzIgbGVuKTsNCisgICAgU0lOVDMyICgqY2xvc2UpKFVJTlQzMiBwb3J0TnVtKTsNCisgICAgU0lOVDMyICgqY3RybCkoVUlOVDMyIHBvcnROdW0sVF9EUlZJT19DVFJMX0tFWSBmdW5jdGlvbiwgVk9JRCogYXJnKTsNCit9DQorVF9TaW9fSGFsT3B0Ow0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsICBWYXJpYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uIFByb3RvdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK1NJTlQzMiAgekRydlNpb19JbnN0YWxsKFVJTlQzMiBwb3J0TnVtLCBDSEFSKiBuYW1lLCBUX1Npb19IYWxPcHQgKiBwRGV2SGFsT3B0KTsNCisNCisNCisjZW5kaWYvKl9EUlZTX1NJT19IXyAqLw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb192aWIuaCBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb192aWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzAxNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX3ZpYi5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDA3LCBaVEUgQ29ycG9yYXRpb24uDQorICoNCisgKiBGaWxlIE5hbWU6ICAgIGRydnNfaW9fdmliLmgNCisgKiBGaWxlIE1hcms6DQorICogRGVzY3JpcHRpb246DQorICogT3RoZXJzOg0KKyAqIFZlcnNpb246ICAgICAgIDEuMA0KKyAqIEF1dGhvcjogICAgICAgIGxpdXlpDQorICogRGF0ZTogICAgICAgICAgMjAxNi0wOS0wMw0KKyAqIEhpc3RvcnkgMToNCisgKiAgICAgRGF0ZToNCisgKiAgICAgVmVyc2lvbjoNCisgKiAgICAgQXV0aG9yOg0KKyAqICAgICBNb2RpZmljYXRpb246DQorICogSGlzdG9yeSAyOg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfRFJWU19JT19WSUJfSA0KKyNkZWZpbmUgX0RSVlNfSU9fVklCX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAiZHJ2c19pby5oIg0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBaRFJWX0RFVl9WSUIgICJ2aWIiDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZXMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKw0KKy8qICAqLw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJVklCX1BPV0VSX0RJU0FCTEUsDQorCVZJQl9QT1dFUl9FTkFCTEUsDQorCQ0KKwlNQVhfVklCX1BPV0VSDQorfQ0KK1RfWkRydlZpYl9Qb3dlcjsNCisNCit0eXBlZGVmIGVudW0NCit7DQorCVZJQl9TVEFURV9PRkYsDQorCVZJQl9TVEFURV9PTiwNCisJDQorCU1BWF9WSUJfU1RBVEUNCit9DQorVF9aRHJ2VmliX1N0YXRlOw0KKw0KKw0KKw0KKyNlbmRpZi8qX0RSVlNfSU9fVklCX0gqLw0KKw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb192b2ljZS5oIGIvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX2lvX3ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE1NzMxMQotLS0gL2Rldi9udWxsCisrKyBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19pb192b2ljZS5oCkBAIC0wLDAgKzEsMjI0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAwNywgWlRFIENvcnBvcmF0aW9uLg0KKyAqDQorICogRmlsZSBOYW1lOiAgICBkcnZzX2lva2V5cy5oDQorICogRmlsZSBNYXJrOg0KKyAqIERlc2NyaXB0aW9uOg0KKyAqIE90aGVyczoNCisgKiBWZXJzaW9uOiAgICAgICAxLjANCisgKiBBdXRob3I6ICAgICAgICBnZWFuZmVuZw0KKyAqIERhdGU6ICAgICAgICAgIDIwMTQtMDItMTENCisgKiBIaXN0b3J5IDE6DQorICogICAgIERhdGU6DQorICogICAgIFZlcnNpb246DQorICogICAgIEF1dGhvcjoNCisgKiAgICAgTW9kaWZpY2F0aW9uOg0KKyAqIEhpc3RvcnkgMjoNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0RSVlNfSU9fVk9JQ0VfSA0KKyNkZWZpbmUgX0RSVlNfSU9fVk9JQ0VfSA0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgZmlsZXMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJkcnZzX2lvLmgiDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9zDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFpEUlZfREVWX1ZPSUNFICAgInZvaWNlIiAgLypUaGUgZGV2aWNlIG5hbWUgb2Ygdm9pY2UgZHJpdmVyLiovDQorI2RlZmluZSBaRFJWX0RFVl9WT0xURSAgICJ2b2x0ZSIgIC8qVGhlIGRldmljZSBuYW1lIG9mIHZvaWNlIGRyaXZlci4qLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKglWb2ljZSBpbnB1dCBjaGFubmVsIHNlbGVjdGlvbi4gKi8NCit0eXBlZGVmIGVudW0NCit7DQorCUNPREVDX0lOUFVUX01JQ1BIT05FCT0wLCAJCQkJCS8qaW5wdXQgcGF0aCBpbiBlYXJwaG9uZSBtaWMqLw0KKwlDT0RFQ19JTlBVVF9IRUFEU0VULAkJCQkJCQkgICAvKmlucHV0IHBhdGggaW4gaGVhZHNldCovDQorCUNPREVDX0lOUFVUX0JMVUVUT09USCwJCQkJCQkJIC8qaW5wdXQgcGF0aCBpbiBibHVldG9vdGgqLw0KKwlDT0RFQ19JTlBVVF9IQU5EU0ZSRUUsCQkJCQkJCSAvKmlucHV0IHBhdGggaW4gbWljKGhhbmRzZnJlZSkqLw0KKwkNCisJTUFYX0NPREVDX0lOUFVUX1BBVEgJCQkgICANCit9IFRfWkRydl9Db2RlY0lucHV0UGF0aDsNCisNCisvKglWb2ljZSBvdXRwdXQgY2hhbm5lbCBzZWxlY3Rpb24uICovDQordHlwZWRlZiBlbnVtDQorew0KKwlDT0RFQ19PVVRQVVRfUkVDRUlWRVIJID0wLAkJCQkvKm91dHB1dCBwYXRoIGluIHJlY2VpdmVyKi8NCisJQ09ERUNfT1VUUFVUX1NQRUFLRVIsCQkJCQkJICAvKm91dHB1dCBwYXRoIGluIHNwZWFrZXIqLw0KKwlDT0RFQ19PVVRQVVRfSEVBRFNFVCwJCQkJCQkgIC8qb3V0cHV0IHBhdGggaW4gaGVhZHNldCovDQorCUNPREVDX09VVFBVVF9CTFVFVE9PVEgsIAkJCQkJLypvdXRwdXQgcGF0aCBpbiBibHVldG9vdGgqLw0KKwlDT0RFQ19PVVRQVVRfSFNBTkRTUEssCQkJCQkgICAvKm91dHB1dCBwYXRoIGluIGJvdGggaGVhZHNldCBhbmQgc3BlYWtlciovDQorCQ0KKwkNCisJTUFYX0NPREVDX09VVFBVVF9QQVRICQkJICAgDQorfVRfWkRydl9Db2RlY091dHB1dFBhdGg7DQorDQorI2RlZmluZSBUX1pEcnZfQXVkaW9JbnB1dFBhdGggIFRfWkRydl9Db2RlY0lucHV0UGF0aA0KKyNkZWZpbmUgVF9aRHJ2X1ZvaWNlSW5wdXRQYXRoICBUX1pEcnZfQ29kZWNJbnB1dFBhdGgNCisjZGVmaW5lIFRfWkRydl9BdWRpb091dHB1dFBhdGggVF9aRHJ2X0NvZGVjT3V0cHV0UGF0aA0KKyNkZWZpbmUgVF9aRHJ2X1ZvaWNlT3V0cHV0UGF0aCBUX1pEcnZfQ29kZWNPdXRwdXRQYXRoDQorDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorCVVJTlQxNgl1aVN0YXJ0WDsNCisJVUlOVDE2CXVpU3RhcnRZOw0KKwlVSU5UMTYJdWlXaWR0aDsNCisJVUlOVDE2CXVpSGVpZ2h0Ow0KK30gVF9aRHJ2X1JlY3Q7DQorDQorLyogUmVjb3JkIGRhdGEgZm9ybWF0LiAqLw0KK3R5cGVkZWYgZW51bQ0KK3sNCisJIFJFQ09SRF9EQVRBX0ZPUk1BVF9BTVIgID0gMCwNCisJIFJFQ09SRF9EQVRBX0ZPUk1BVF9GUiwNCisJIFJFQ09SRF9EQVRBX0ZPUk1BVF9IUiwNCisJIFJFQ09SRF9EQVRBX0ZPUk1BVF9FRlIsDQorCSANCisJIE1BWF9SRUNPUkRfREFUQV9GT1JNQVQNCit9IFRfWkRydlJjZF9EYXRhRm9ybWF0Ow0KKw0KKy8qYWRkIG9uIHRoZSBwbGF0Zm9ybSBvZiA3NTAyIGZvciByZWNvcmQgdGhlIGRpZmZlcmVudCBvZiBjaGFubmVsIG9ubGluZSB2b2ljZSovDQorLyogY2hhbm5lbCBzZWxlY3Rpb24gZm9yIHZvaWNlIHJlY29yZCBmdW5jdGlvbiAqLw0KK3R5cGVkZWYgZW51bQkgDQorew0KKwlWT0lDRV9SRUNPUkRfVVBMSU5LID0gMCwNCisJVk9JQ0VfUkVDT1JEX0RPV05MSU5LLA0KKwlWT0lDRV9SRUNPUkRfVVBMSU5LX0FORF9ET1dOTElOSywNCisJTUFYX1ZPSUNFX1JFQ09SRF9DSEFOTkVMIA0KK30gVF9aRHJ2Vm9pY2VfUmVjb3JkQ2hhbm5lbDsNCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisJIFRfWkRydlJjZF9EYXRhRm9ybWF0CWRhdGFmb3JtYXQ7DQorCSBVSU5UMzIgYnVmc2l6ZTsNCisJIFRfWkRydlZvaWNlX1JlY29yZENoYW5uZWwgY2hhbm5lbDsgICAvKmFkZCBvbiB0aGUgcGxhdGZvcm0gb2YgNzUwMiBmb3IgcmVjb3JkIHRoZSBkaWZmZXJlbnQgb2YgY2hhbm5lbCBvbmxpbmUgdm9pY2UqLw0KK30gVF9aRHJ2UmNkX0luZm9QYXJhbTsNCisNCisvKiAgVm9pY2UgaW5wdXQgY2hhbm5lbCB2b2x1bSBsZXZlbCBzZWxlY3Rpb24uKi8NCit0eXBlZGVmIGVudW17DQorICAgIFZPSUNFX0lOUFVUX1ZPTF9MRVZFTF8wID0gMCwNCisgICAgVk9JQ0VfSU5QVVRfVk9MX0xFVkVMXzEgICAgLA0KKyAgICBWT0lDRV9JTlBVVF9WT0xfTEVWRUxfMiAgICAsDQorICAgIFZPSUNFX0lOUFVUX1ZPTF9MRVZFTF8zICAgICwNCisgICAgVk9JQ0VfSU5QVVRfVk9MX0xFVkVMXzQgICAgLA0KKyAgICBWT0lDRV9JTlBVVF9WT0xfTEVWRUxfNSAgICAsDQorDQorICAgIE1BWF9WT0lDRV9JTlBVVF9WT0xfTEVWRUwgICAgIA0KK30gVF9aRHJ2Vm9pY2VfSW5wdXRWb2xMZXZlbDsNCisNCisvKiAgQXVkaW8gb3V0cHV0IGNoYW5uZWwgdm9sdW0gbGV2ZWwgc2VsZWN0aW9uLiovDQordHlwZWRlZiBlbnVtew0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzAgPSAwLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzEgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzIgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzMgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzQgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzUgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzYgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzcgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzggICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzkgICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzEwICAgLA0KKyAgICBWT0lDRV9PVVRQVVRfVk9MX0xFVkVMXzExICAgLA0KKw0KKyAgICBNQVhfVk9JQ0VfT1VUUFVUX1ZPTF9MRVZFTCAgICAgDQorfSBUX1pEcnZWb2ljZV9PdXRwdXRWb2xMZXZlbDsNCisNCisvKiB2b2ljZSBzYW1wbGUgcmF0ZSBzZWxlY3Rpb24uICovDQordHlwZWRlZiBlbnVtDQorew0KKyAgICBWT0lDRV9TQU1QTEVfOEsgICAgPTAsICAvKiB2b2ljZSBzYW1wbGUgcmF0ZSA4Sy4gKi8NCisgICAgVk9JQ0VfU0FNUExFXzE2SyAgICAgLCAgLyogdm9pY2Ugc2FtcGxlIHJhdGUgMTZLLiAqLw0KKw0KKyAgICBNQVhfVk9JQ0VfU0FNUExFICAgICAgICAgICAgICAgDQorfSBUX1pEcnZWb2ljZV9TYW1wbGU7DQorDQorLyogdm9pY2UgY29kZWMgZm9ybWF0LCB3aGljaCBpcyBub3QgdGhlIGNvZGVjIG9mIFBDTSBmb3JtYXQgKi8NCit0eXBlZGVmIGVudW0NCit7DQorICAgICBWT0lDRV9EQVRBX0ZPUk1BVF9BTVIgID0gMCwNCisgICAgIFZPSUNFX0RBVEFfRk9STUFUX0ZSLA0KKyAgICAgVk9JQ0VfREFUQV9GT1JNQVRfSFIsDQorICAgICBWT0lDRV9EQVRBX0ZPUk1BVF9FRlIsDQorICAgICBNQVhfVk9JQ0VfREFUQV9GT1JNQVQNCit9IFRfWkRydlZvaWNlX0RhdGFGb3JtYXQ7DQorLyogY2hhbm5lbCBzZWxlY3Rpb24gZm9yIHZvaWNlIG11dGUgZnVuY3Rpb24gKi8NCit0eXBlZGVmIGVudW0NCit7DQorICAgIFZPSUNFX1VQTElOSyA9IDAsDQorICAgIFZPSUNFX0RPV05MSU5LLA0KKyAgICBWT0lDRV9VUExJTktfQU5EX0RPV05MSU5LLA0KKyAgICBNQVhfVk9JQ0VfTVVURV9DSEFOTkVMIA0KK30gVF9aRHJ2Vm9pY2VfTXV0ZUNoYW5uZWw7DQorDQorLyogdm9pY2UgbXV0ZSBzd2l0Y2ggKi8NCit0eXBlZGVmIGVudW0NCit7DQorICAgIFZPSUNFX01VVEVfRElTQUJMRSA9IDAsDQorICAgIFZPSUNFX01VVEVfRU5BQkxFLA0KKyAgICBNQVhfVk9JQ0VfTVVURV9TV0lUQ0ggDQorfSBUX1pEcnZWb2ljZV9tdXRlX1N3aXRjaDsNCisNCisvKiB2b2ljZSBtdXRlIGNvbnRyb2wgaW5mb3JtYXRpb24gKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgICAgVF9aRHJ2Vm9pY2VfbXV0ZV9Td2l0Y2ggZW5hYmxlOyAgDQorICAgIFRfWkRydlZvaWNlX011dGVDaGFubmVsIGNoYW5uZWw7ICAgIC8qIGlucHV0ICYgb3V0cHV0IGZ1bmN0aW9uICovDQorfSBUX1pEcnZWb2ljZV9NdXRlSW5mbzsNCisNCisvKiB2b2ljZSBzd2l0Y2ggKi8NCit0eXBlZGVmIGVudW0NCit7DQorICAgIFZPSUNFX0RJU0FCTEUgPSAwLA0KKyAgICBWT0lDRV9FTkFCTEUsDQorICAgIE1BWF9WT0lDRV9TV0lUQ0ggDQorfSBUX1pEcnZWb2ljZV9Td2l0Y2g7DQorDQorLyogdm9pY2UgYnVmZmVyIGluZm9ybWF0aW9uICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgIFZPSUQgICAqcEJ1ZjsgICAgICAgICAvKiB2b2ljZSBidWZmZXIgKi8NCisgICAgVUlOVDMyIGJ1ZmZlclNpemU7ICAgIC8qIHZvaWNlIGJ1ZmZlciBzaXplICovDQorfVRfWkRydlZvaWNlX0J1ZkluZm87DQorDQorLyogVGhlIGZyYW1lIHR5cGUgb2YgQU1SICovDQordHlwZWRlZiBlbnVtIHsNCisgICAgVk9JQ0VfRlJBTUVfTVI0NzUgPSAwLA0KKyAgICBWT0lDRV9GUkFNRV9NUjUxNSwNCisgICAgVk9JQ0VfRlJBTUVfTVI1OSwNCisgICAgVk9JQ0VfRlJBTUVfTVI2NywNCisgICAgVk9JQ0VfRlJBTUVfTVI3NCwNCisgICAgVk9JQ0VfRlJBTUVfTVI3OTUsDQorICAgIFZPSUNFX0ZSQU1FX01SMTAyLA0KKyAgICBWT0lDRV9GUkFNRV9NUjEyMiwNCisNCisgICAgTUFYX1ZPSUNFX0ZSQU1FX1RZUEUgDQorfVRfWkRydlZvaWNlX0ZyYW1lVHlwZTsNCisNCisvKiBUaGUgZnJhbWUgZm9ybWF0ZSBvZiBBTVIgKi8NCit0eXBlZGVmIGVudW0gew0KKyAgICBWT0lDRV9BTVJfSUYyLA0KKyAgICBWT0lDRV9BTVJfSUYxLA0KKw0KKyAgICBNQVhfVk9JQ0VfQU1SX0lGDQorfVRfWkRydlZvaWNlX0FtcklmOw0KKw0KKy8qIFRoZSBmcmFtZSBmb3JtYXRlIG9mIEFNUiBpbmZvcm1hdGlvbiovDQordHlwZWRlZiBzdHJ1Y3QgDQorew0KKyAgICBUX1pEcnZWb2ljZV9GcmFtZVR5cGUgZnJhbWV0eXBlOyAgIC8qIFRoZSBmcmFtZSB0eXBlIG9mIEFNUiAqLw0KKyAgICBUX1pEcnZWb2ljZV9BbXJJZiBhbXJpZjsgICAgICAgICAgIC8qIFRoZSBmcmFtZSBmb3JtYXRlIG9mIEFNUiAqLw0KK31UX1pEcnZWb2ljZV9BbXJJbmZvLCAqVF9aRHJ2Vm9pY2VfQW1ySW5mb1B0cjsNCisNCisvKiBBdWRpbyBjaGFubmVsICovDQordHlwZWRlZiBlbnVtDQorew0KKyAgICBBVURJT19NT05PX0NIQU5ORUwsDQorICAgIEFVRElPX0RVQUxfQ0hBTk5FTA0KK31UX1pEcnZBdWRpb19DaGFubmVsOw0KKyNlbmRpZi8qX0RSVlNfSU9fVk9JQ0VfSCovDQorDQpkaWZmIC0tZ2l0IGEvY3AvcHMvZHJpdmVyL2luYy9pby9kcnZzX3NlcmlhbF9kZXZpY2UuaCBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19zZXJpYWxfZGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRhN2Y2OAotLS0gL2Rldi9udWxsCisrKyBiL2NwL3BzL2RyaXZlci9pbmMvaW8vZHJ2c19zZXJpYWxfZGV2aWNlLmgKQEAgLTAsMCArMSw0OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIFpURSBDb3Jwb3JhdGlvbi4NCisgKg0KKyAqIEZpbGUgTmFtZTogICAgZHJ2c19zZXJpYWxfZGV2aWNlLmgNCisgKiBGaWxlIE1hcms6DQorICogRGVzY3JpcHRpb246DQorICogT3RoZXJzOg0KKyAqIFZlcnNpb246ICAgICAgIDEuMA0KKyAqIEF1dGhvcjogICAgICAgIHdlaXpoaWdhbmcNCisgKiBEYXRlOiAgICAgICAgICAyMDA5LTExLTEyDQorICogSGlzdG9yeSAxOg0KKyAqICAgICBEYXRlOg0KKyAqICAgICBWZXJzaW9uOg0KKyAqICAgICBBdXRob3I6DQorICogICAgIE1vZGlmaWNhdGlvbjoNCisgKiBIaXN0b3J5IDI6DQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9EUlZTX1NFUklBTF9ERVZJQ0VfSA0KKyNkZWZpbmUgX0RSVlNfU0VSSUFMX0RFVklDRV9IDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBmaWxlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2luY2x1ZGUgImRydnNfaW8uaCINCisjaW5jbHVkZSAiZHJ2c19pb19rZXlzLmgiDQorI2luY2x1ZGUgImRydnNfaW9fc2lvLmgiDQorI2luY2x1ZGUgImRydnNfaW9fbmFtZXMuaCINCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb3MNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKwkNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb24gUHJvdG90eXBlcw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorI2VuZGlmLypfRFJWU19TRVJJQUxfREVWSUNFX0gqLw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL2NwL3BzL2RyaXZlci9pbmMvaW8vZWFycGllY2VfYXBpLmggYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2VhcnBpZWNlX2FwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZDY3MTYKLS0tIC9kZXYvbnVsbAorKysgYi9jcC9wcy9kcml2ZXIvaW5jL2lvL2VhcnBpZWNlX2FwaS5oCkBAIC0wLDAgKzEsMTYxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIENvcHlyaWdodCAoQykgMjAwMSwgWlRFIENvcnBvcmF0aW9uLg0KKyogDQorKiBGaWxlIE5hbWU6IAllYXJwaWVjZV9hcGkuaA0KKyogRmlsZSBNYXJrOiAgCQ0KKyogRGVzY3JpcHRpb246ICBQcm92aWRlIGVhcnBpZWNlIG1vZHVsZSBmdW5jdGlvbiBwcm90b3R5cGUgZGVjbGFyYXRpb24gYW5kIHR5cGUgZGVjbGFyYXRpb24uDQorKiBPdGhlcnM6ICAJDQorKiBWZXJzaW9uOiAgCXYwLjUNCisqIEF1dGhvcjogIAlMdldlbmh1YQ0KKyogRGF0ZTogIAkgICAgICAyMDA3LTEwLTI1DQorKiANCisqIEhpc3RvcnkgMTogIAkJDQorKiAgICAgRGF0ZTogDQorKiAgICAgVmVyc2lvbjoNCisqICAgICBBdXRob3I6IA0KKyogICAgIE1vZGlmaWNhdGlvbjogIA0KKyogSGlzdG9yeSAyOiANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0VBUlBJRUNFX0FQSV9IDQorI2RlZmluZSBfRUFSUElFQ0VfQVBJX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgWkRSVl9ERVZfRUFSUCAgICJlYXJwaWVjZSIgIC8qVGhlIGRldmljZSBuYW1lIG9mIGVhcnBpZWNlIGRyaXZlci4qLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qSW5mb3JtYXRpb24gZnJvbSBkcml2ZXIgdG8gdXBwZXIgYXBwbGljYXRpb24uKi8NCit0eXBlZGVmIGVudW0gew0KKyAgICBFQVJQX0lORk9fUExVRyAgICAgICAgICAgPSAwLCAvKkVhcnBpZWNlIGlzIHBsdWdnZWQuKi8NCisgICAgRUFSUF9JTkZPX1VOUExVRyAgICAgICAgICAgICAgLCAvKkVhcnBpZWNlIGlzIHVucGx1Z2dlZC4qLw0KKyAgICBFQVJQX0lORk9fSE9PS19TV0lUQ0ggICAgICAsICAvKkVhcnBpZWNlIGhvb2sga2V5IGlzIHByZXNzZWQgYW5kIHJlbGVhc2VkLiovDQorDQorICAgIE1BWF9FQVJQX0lORk8gICAgICAgICAgICAgDQorfSBUX1pEcnZFYXJwX0luZm87DQorDQordHlwZWRlZiBlbnVtIHsNCisgICAgRUFSUF9TVEFURV9QTFVHICAgICAgICAgID0gMCwgLypFYXJwaWVjZSBpcyBwbHVnZ2VkLiovDQorICAgIEVBUlBfU1RBVEVfVU5QTFVHICAgICAgICAgICAsIC8qRWFycGllY2UgaXMgdW5wbHVnZ2VkLiovDQorDQorICAgIE1BWF9FQVJQX1NUQVRFICAgICAgICAgICAgIA0KK30gVF9aRHJ2RWFycF9TdGF0ZTsNCisNCit0eXBlZGVmIHZvaWQgKCpUX1pEcnZFYXJwX0NhbGxiYWNrRnVuYykgKFRfWkRydkVhcnBfSW5mbyk7DQorDQorI2lmIDANCit0eXBlZGVmIGVudW0gDQorew0KKyAgICBJT0NUTF9FQVJQX1NFVF9DQUxMQkFDSyAgICAgPSAwLCAgLypTZXQgY2FsbGJhY2sgZnVuY3Rpb24sIGl0IGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgc2VuZCB0aGUgZWFycGllY2Ugc3dpdGNoIHN0YXR1cyB0byB1c2VyLiovDQorICAgIElPQ1RMX0VBUlBfR0VUX1BMVUdfU1RBVFVTICAgLCAgLypHZXQgZWFycGllY2UgcGx1ZyBzdGF0dXMsIHJlcGxhY2UgdGhlIHJlYWQgZnVuY3Rpb24uKi8NCisgICAgSU9DVExfRUFSUF9TRVRfSE9PS19FTkFCTEUsDQorICAgIElPQ1RMX0VBUlBfU0VUX0hPT0tfRElTQUJMRSwNCisgICAgTUFYX0lPQ1RMX0VBUlANCit9VF9aRHJ2RWFycF9Jb0N0bDsNCisjZW5kaWYNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdsb2JhbCAgVmFyaWFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb24gUHJvdG90eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogekRydl9PcGVuDQorKiBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG9wZW4gZGV2aWNlIGFjY29yZGluZyB0byBkZXZpY2UgbmFtZS4NCisqIFBhcmFtZXRlcnM6IA0KKyogICBJbnB1dDoNCisgICAgICAgICAgICBwYXRobmFtZTpkZXZpY2UgbmFtZSwgWkRSVl9ERVZfRUFSUCBpbiBlYXJwaWVjZSANCisqCSAgICAgZmxhZ3M6IG5vIHVzZSwgMA0KKyogICBPdXRwdXQ6IE5vbmUNCisqIFJldHVybnM6ICAgDQorKiAgICAgICBkZXZpY2UgZmlsZSBkZXNjcmlwdG9yIGlmIHN1Y2Nlc3NlZC4gWzEsIFpEUlZfTUFYX0RFVl9GSUxFX05VTSksIHBsZWFzZSByZWZlciB0byBkYWxfYXBpLmgNCisqICAgICAgIERSVl9FUlJfTk9fVEhJU19ERVZJQ0U6IHRoaXMgZGV2aWNlIGhhc24ndCBiZWVuIGluc3RhbGxlZCB5ZXQNCisqICAgICAgIERSVl9FUlJfRkRfT1ZFUkZMT1c6IG5vIGZyZWUgZmQgZW50cnkNCisqICAgICAgIERSVl9FUlJfTk9UX1NVUFBPUlRFRDogdGhpcyBkZXZpY2UgZG9uJ3Qgc3VwcG9ydCBvcGVuIG9wZXJhdGlvbi4NCisqICAgICAgIERSVl9FUlJfT1BFTl9USU1FUzogaGFzIGJlZW4gb3BlbmVkIGFscmVhZHkuIA0KKyogICAgICAgb3RoZXJzOiBvdGhlcnMgZXJyb3IgY29kZS4gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGhlYWRlciBmaWxlIG9mIGhhbCBsYXllcg0KKyogT3RoZXJzOiBOb25lDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLypTSU5UMzIgekRydl9PcGVuIChjb25zdCBDSEFSICpwYXRobmFtZSwgU0lOVDMyIGZsYWdzKSovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogekRydl9DbG9zZQ0KKyogRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjbG9zZSBhIGRldmljZSBhY2NvcmRpbmcgdG8gZGV2aWNlIGZpbGUgZGVzY3JpcHRvci4NCisqIFBhcmFtZXRlcnM6IA0KKyogICBJbnB1dDoNCisqICAgICAgICAgICAgICBmZCA6ZGV2aWNlIGZpbGUgZGVzY3JpcHRvciANCisqICAgT3V0cHV0Ok5vbmUNCisqIFJldHVybnM6IA0KKyogICAgICAgRFJWX1NVQ0NFU1M6IHN1Y2Nlc3NlZC4NCisqICAgICAgIERSVl9FUlJfTk9UX09QRU5FRDogaGFzIG5vdCBiZWVuIG9wZW5kIHlldC4NCisqICAgICAgIERSVl9FUlJfRkRfVEFCTEU6IGRldmljZSBkcml2ZXIgdGFibGUgaGFzIGJlZW4gaW52YWxpZC4NCisqICAgICAgIERSVl9FUlJfTk9UX1NVUFBPUlRFRDogdGhpcyBkZXZpY2UgZG9uJ3Qgc3VwcG9ydCBjbG9zZSBvcGVyYXRpb24uDQorKiAgICAgICBvdGhlcnM6IG90aGVycyBlcnJvciBjb2RlLiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgaGVhZGVyIGZpbGUgb2YgaGFsIGxheWVyDQorKiBPdGhlcnM6IE5vbmUNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKlNJTlQzMiB6RHJ2X0Nsb3NlKFVJTlQzMiBmZCkqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246IHpEcnZfSW9jdGwNCisqIERlc2NyaXB0aW9uOiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnRyb2wgZGV2aWNlIGFjY29yZGluZyB0byBmZChkZXZpY2UgZmlsZSBkZXNjcmlwdG9yKS4NCisqIFBhcmFtZXRlcnM6IA0KKyogICBJbnB1dDoNCisqICAgICAgICAgICBmZDpkZXZpY2UgZmlsZSBkZXNjcmlwdG9yDQorKiAgICAgICAgICAgY21kOmNvbW1hbmQgY29kZQ0KKyogICAgICAgICAgIGFyZzpjb21tYW5kIHBhcmFtZXRlcnMNCisqICAgT3V0cHV0Ok5vbmUNCisqIFJldHVybnM6IA0KKyogICAgICAgRFJWX1NVQ0NFU1M6IHN1Y2Nlc3NlZC4NCisqICAgICAgIERSVl9FUlJfSU5WQUxJRF9QQVJBTTogdGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIGludmFsaWQNCisqICAgICAgIERSVl9FUlJfTk9UX09QRU5FRDogaGFzIG5vdCBiZWVuIG9wZW5kIHlldC4NCisqICAgICAgIERSVl9FUlJfRkRfVEFCTEU6IGRldmljZSBkcml2ZXIgdGFibGUgaGFzIGJlZW4gaW52YWxpZC4NCisqICAgICAgIERSVl9FUlJfTk9UX1NVUFBPUlRFRDogdGhpcyBkZXZpY2UgZG9uJ3Qgc3VwcG9ydCBpb2N0cmwgb3BlcmF0aW9uLg0KKyogICAgICAgRFJWX0VSUl9JTlZBTElEX0lPQ1RMX0NNRDogdGhpcyBjb21tYW5kIGhhcyBub3QgYmVlbiBzdXBwb3J0ZWQgeWV0Lg0KKyogICAgICAgb3RoZXJzOiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgaGVhZGVyIGZpbGUgb2YgaGFsIGxheWVyDQorKg0KKyogT3RoZXJzOiAJTm9uZQ0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qU0lOVDMyIHpEcnZfSW9jdGwoVUlOVDMyIGZkLCBVSU5UMzIgY21kLCBWT0lEKiBhcmcpKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiB6RHJ2RWFycF9Jbml0DQorKiBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluc3RhbGwgZWFycGllY2UgZHJpdmVyLg0KKyogUGFyYW1ldGVyczogDQorKiAgIElucHV0Ok5vbmUNCisqICAgT3V0cHV0Ok5vbmUNCisqIFJldHVybnM6IA0KKyogICAgICAgRFJWX1NVQ0NFU1M6IHN1Y2Nlc3NlZC4NCisqICAgICAgIERSVl9FUlJPUjogZXJyb3INCisqICAgICAgIERSVl9FUlJfREVWX09WRVJGTE9XOiBubyBmcmVlIGRldmljZSBkcml2ZXIgZW50cnkgaW4gdGFibGUNCisqICAgICAgIERSVl9FUlJfTUVNX0FMTE9DOiBmYWlsZWQgdG8gYWxsb2MgbWVtb3J5DQorKiBPdGhlcnM6IE5vbmUNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitTSU5UMzIgekRydkVhcnBfSW5pdChWT0lEKTsNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiB6RHJ2RWFycF9FeGl0DQorKiBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHVuaW5zdGFsbCBlYXJwaWVjZSBkcml2ZXIuDQorKiBQYXJhbWV0ZXJzOiANCisqICAgSW5wdXQ6Tm9uZQ0KKyogICBPdXRwdXQ6Tm9uZQ0KKyogUmV0dXJuczogDQorKiAgICAgICBEUlZfU1VDQ0VTUzogc3VjY2Vzc2VkLg0KKyogICAgICAgRFJWX0VSUk9SOiBlcnJvcg0KKyogICAgICAgRFJWX0VSUl9ERVZfVEFCTEU6IGRldmljZSBkcml2ZXIgdGFibGUgaGFzIGJlZW4gaW52YWxpZC4NCisqICAgICAgIERSVl9FUlJfTk9fVEhJU19ERVZJQ0U6IHRoaXMgZGV2aWNlIGhhc24ndCBiZWVuIGluc3RhbGxlZCB5ZXQNCisqIE90aGVyczogTm9uZQ0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK1NJTlQzMiB6RHJ2RWFycF9FeGl0KFZPSUQpOw0KKw0KKyNlbmRpZiAgLyogX0VBUlBJRUNFX0FQSV9IICovDQorDQo=