From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.6427.1619519286575272993 for ; Tue, 27 Apr 2021 03:28:09 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=iJKaXWaH; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: tien.hock.loh@intel.com) IronPort-SDR: tVLdYxmNfieOnpgkiaCy0std37pTFg211osBl3K1UcS/ghaKq9hnCUer6T2t/r78hTUoCqpyVA +jM+KTlnNKcQ== X-IronPort-AV: E=McAfee;i="6200,9189,9966"; a="193298644" X-IronPort-AV: E=Sophos;i="5.82,254,1613462400"; d="scan'208";a="193298644" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2021 03:28:03 -0700 IronPort-SDR: ocvvr6YI7zyjU5EtJLYRSKbANHp3yYuNRpp5twowwMuD3zlOwgf5PCWGgj+eqOHy2U78eS9+sx hz+r88sncpfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,254,1613462400"; d="scan'208";a="403226404" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga002.jf.intel.com with ESMTP; 27 Apr 2021 03:28:03 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 27 Apr 2021 03:28:02 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Tue, 27 Apr 2021 03:28:02 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.170) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Tue, 27 Apr 2021 03:28:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dI4erc7nRvTcMya3OUsvLjThJVSShFPGXtXCj7K3TH/uopl2Ujjw6r4DGg3icd5gVttNhyd0XrZktEQm7q1T6svsFNVI4aPX9rZ4ya+DPLPgt7dt5Cin0TnMKCs+1thxg9+TzJXH1uF/EKy83LGMvdtb749AnMXdYaHO2ocsn4Bg2u4Oa6hpSoPIuCrkPic8wnX2i4Qgv4TqgHXyp/WQJgVotOhl2nLIxN8srhzdLiv2j0xLIr00XLFa2TEHQtguLU8IDr5zh9njpNyHH4awJ+ggFKtJUGJvemI9eR7TW6/pEIjqY1ZKhmLDT0lNNSXPrhZwhjzSnZfqAFASsULKcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TywNRb3sAd0og6u5HsP4ZdhNvJBBvlcN4LUNx6Mw+5k=; b=JpJK+P6N87qZJuWtpDP8+fITsTOvPWpYSk4yUu13ioNqWJxKYCY1NHeChsEIaSZsnDTvtolkvLdYtmKZMvnnP6eJckcLZ69UCSgWbbHuCTuExYmz48KiGwnerBFoErJFAGCrb4k3CoqgtAHbUJgXO+orFCytaExa+2RBuVc9cGQGb45D2sVCW2q851K0bi5YS9bIgrfezcn9Pgg/enBn2vWidTCK4B3VjAV3pzN8Ugu8Vl4+b53uAJHDkwYXNFmbVDKTz/cglQ1IfhMY4oMa2wRq9LJR3XpozptB+dDgM4qM9u828L3BWk+dUnsB3bMzTg6XRWi+Oapfc/tVKL8LKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TywNRb3sAd0og6u5HsP4ZdhNvJBBvlcN4LUNx6Mw+5k=; b=iJKaXWaHSwbfUVfH9dpfegI/3ZT6C4ljhoI6IPQIm4CgdmPvsJECm/FldI9vtDoVCYxutLHpiVuCjs+9aRpTqgwUDC3uN3zxnyAGps6794WLOOpNsrCVGhYxvRWuYA2ShGZGPcbiAAN1bbpq4+tsvlcX8uD+/YBNOEyZks8Qx+E= Received: from SJ0PR11MB5136.namprd11.prod.outlook.com (2603:10b6:a03:2d1::18) by BY5PR11MB4104.namprd11.prod.outlook.com (2603:10b6:a03:18f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.25; Tue, 27 Apr 2021 10:27:56 +0000 Received: from SJ0PR11MB5136.namprd11.prod.outlook.com ([fe80::ac08:c378:ad50:dc67]) by SJ0PR11MB5136.namprd11.prod.outlook.com ([fe80::ac08:c378:ad50:dc67%7]) with mapi id 15.20.4087.025; Tue, 27 Apr 2021 10:27:56 +0000 From: "Loh, Tien Hock" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "thloh85@gmail.com" , Leif Lindholm , Ard Biesheuvel Subject: Re: [PATCH V5 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Topic: [PATCH V5 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Index: AQHXHsr8+cCyDCxc+UWpketwaiWuOaqPWDKAgDf0Z4CAAPmfoIAAGtww Date: Tue, 27 Apr 2021 10:27:56 +0000 Message-ID: References: <20210322032439.9312-1-tien.hock.loh@intel.com> <20210322032439.9312-2-tien.hock.loh@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [42.189.204.240] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f0b91dab-17cf-4eb1-75f3-08d909671f7a x-ms-traffictypediagnostic: BY5PR11MB4104: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hpoOdI1cBUWBEj/kueTeecmgiIMpu0dct6OO+QIl7FqP73iFUtoUo4WVDThWALwGNqGZvqWd26ExhutUuQ66w8Db0p9gS5/74cZv/OyBgAkxTyBTQhDNUi0wNcFXMVXpVY5bI785qskncEczzcAUx9yMGKYj3CLeRUi7n2Fc24+B40tPxNuy1L6fqQZwIcnlp1NeMVxtCxuX86QAiSBjI7StjLHwnVvOIP4fGBptGQVoDcFm/RMk67sfFWn0RdCLYsJ1/deWFQ+8aG5qOFXfJdoE1Bk8BMUBje/X/G8lwtne/ojnI+xsD1j2lLDy8HaYCrnrlcCIdMltD8WcCH+YkLiobJZ19BtoTzS2xUTEKabrOCp/7rPoCxTbt9rev3tCMAUwRP32KoQ4COlwfdW43DNzCeuqUXgV7lxz+ZodvmZpGcfC5IPEYXJoB0kg6pl11zGsVIpT9FCmYPFmvbm7suWUEL9G4TifDRkmXCQ9noVrzg563vRBBURbw6o1sD64B/Q9AmAFGr8uOGghJY7XfaEW27rNjOlY0GL2r3NU5Ik8Yh0gL+mleslmfgHHcjP9NjSN0bHPAnusRZy4NYA9UzP5T2GUgXfy144CWRXo8vAYBob2Hsp3DsPtlBD/wExZev+0rPWmSyAlLisET4pQB0ONbCjPuyY7Vcv4YiQ4vLQNcwitF1HiT5ZqkyZvg05EYvTJveWY9Ni0NWZXCgnkt9LMdBsTVfrZ5QPxQ8/9atXbGfgs8naauYjfE749foMQ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5136.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(366004)(136003)(346002)(376002)(39850400004)(396003)(4326008)(55016002)(2940100002)(19627235002)(9686003)(2906002)(5660300002)(15188155005)(33656002)(86362001)(38100700002)(71200400001)(54906003)(122000001)(16799955002)(8676002)(83380400001)(7696005)(76116006)(8936002)(66946007)(66476007)(186003)(26005)(64756008)(53546011)(66556008)(30864003)(966005)(478600001)(6506007)(110136005)(52536014)(66446008)(316002)(290074003)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?M1Q1VDFRT3ZsZ3EyQmdmRUhIZmZFYlZ2aU1GVm5iMFp0YkxMQk1XdEdZWTVN?= =?utf-8?B?cGptdERJYUwreEo3UFAwZks1U0Q5OTV5K2dDWkdoMEx6bXVvMy92TEpQNjJV?= =?utf-8?B?MExody9rUG5XNHNGdjMrOTYxekV6OFRuWkJkQ1lvbW1OMGJuY2w1VmRZTk5W?= =?utf-8?B?NmF5cjdOMWlrZzQvSjIzSEdqZHhzMDAxNktwdTUwQUxZbVJTTkpudzlqdmtC?= =?utf-8?B?OC9GNlA4RHFFYVFJU1VCcXI0dmQ0bWVyK1dGWlhvRU4vWkxWSkNHT0YyNFZC?= =?utf-8?B?bkhyR3hIbms2UUZWT0tKWVdVS2h3K0JRRnl0U0E0MEk5S2prT1g1b0d2ZXhZ?= =?utf-8?B?WFpjd1lWMEsvRDNHSWs2RFIxMklVZnZwcVpIb1JSOXI3d2xpeXBoT0ZYTGZm?= =?utf-8?B?Z2h4YjlOdlQwaWRnUHZFTW9YbkZYWm1yKzR1MDZmS1Eyc3doQnJVa3loMzB2?= =?utf-8?B?bStkSjF4WnZpWG9JTUF1TGcwWmNMSFU5Q0tFVnJ1bUdva0p6MDBUY1QyTUxz?= =?utf-8?B?M054ZDViTWZ2eHJCc25JTm02WE14a0xocVhLOXk1dkpibk1PVzVDaU1TNDZS?= =?utf-8?B?ZFNENlRRV2VhK0psSXJwQm95MFNJSHhZVTg5SFpZY1dsZWdoYThoWVBTQk9i?= =?utf-8?B?VVdNRmZFUjJXWHNDbmNaOGlQelFvYnBVTlJXY1ROUkRDTWZlN3RicUhINXhh?= =?utf-8?B?VWd2U09JQWRtU1VSM1NYQVVhRkxkcnJrejB6Ylh0WDQ4RXRPQ1pDV3hkbHlu?= =?utf-8?B?YUFLeXJqQjlxNHJUNk5uVlBaZUFLZGc2NDVhTW5mYmRTc3JvakpjN2FQSjBK?= =?utf-8?B?YXNWeXJOSFJzY3AxTHpacWhGSTVvOGpKR2phbXRPTXhMZ3lJNGNwWFZBTmNl?= =?utf-8?B?bE9uQ0VxNTEzOExwM0Y0VWVwc1lHTHRpWVVKMFl1eElnRDJkT3BMbkREbjRN?= =?utf-8?B?ME1EaVJUKy9BSFd6VDJIZVpHSHl6OURvT3JlR0JLVlpZTTFrM0JQUnRxUSsr?= =?utf-8?B?R1RUdEdoaFp0VHZKa05rVFpRQ1JPVkR5cmgvbkV5TE1KL0prKy9PSHBiSXVv?= =?utf-8?B?QytxN0FPbVc4K1c5RlRjMXVweG5SeEwvOUxUeWtITDQwZVBnUTRzTFdKTEts?= =?utf-8?B?ZnRTRHg2dGZhdGJJdGZCOVBoaHc3aUJDV2FJTFZWSTkxZmNDbCsraHdueGZ4?= =?utf-8?B?ZFV6TDdTcHdjMFdNRzB6aiswZEFWT1c4NG56SmZvNzVqdEZ0OXVzZUFxUzd5?= =?utf-8?B?Mk4xL3Y3NjI2RUJBV2lrelVEZndiUDloZThiRnBiOEZFM3IwSjRIRnZUcHQ1?= =?utf-8?B?ZXB0R0VDOVdjOVhwQUFrWWpyVkd2WXJJVTVvQVJ2dVp1RVpVU1huSm5yZ21W?= =?utf-8?B?V0p6b3Y0VFNURDlqbTZOUEdFQVNGRW42N1ZUY21vaFh3cmdXVDJUS09KV3Bx?= =?utf-8?B?RDh5WHgvTXZIdGJKZUZhWHlMRE5RKzFDSDZxOEtzZWNic2ZoeHBUREVoM0xJ?= =?utf-8?B?QjBYSTJFNWx3TE4vdHMybjZYVFBOTy80ZDdIQ2kydmU1UU9xUlc4TmQ1NnYv?= =?utf-8?B?Wm9ub1krT2Z3dG0xT1A2RHNtelZRSmxmQU0zUEFhcTczb1EzWHZudkZ5Uk1V?= =?utf-8?B?M0EwMW55L2h4V2tKWHVUNWdKQWtEREl1ME1uK0pSOERjQUtwdU1JQ1BscWl3?= =?utf-8?B?Yy9xZmtZZlJPUy80REovY2FmaHBFVVZJRlBQcS82MVpqYjgxdVZkL1FnbTl4?= =?utf-8?Q?S/1CjtlEarD7yZHHU3MkDpv5a8znBrnGaWne0dV?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5136.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0b91dab-17cf-4eb1-75f3-08d909671f7a X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Apr 2021 10:27:56.1746 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: u12GFl6nzp98+GucmyVdz83Mcol8sFrBvxTfRX/G8h4n8k1CSjzJpQcSxNEj1z5QmW+Dnc9or5iRxBxlOhkRHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4104 Return-Path: tien.hock.loh@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZSwNCg0KSnVzdCB0byBiZSBzdXJlLCBJJ20gcmVmZXJyaW5nIHRvIHJlZmFjdG9yaW5n IHRvIG1ha2luZyBmdW5jdGlvbnMgdGhhdCBtYWtlIGNhbGxzIHRoYXQgdXNlcyBFRklfUENJX0lP X1BST1RPQ09MIGEgZ2VuZXJpYyBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgaW1wbGVtZW50ZWQgYXMg YSBzZXBhcmF0ZSBQY2lJbyBTZCBkcml2ZXIsIGFuZCBNbWlvIERlc2lnbndhcmUgZHJpdmVyLCBh bmQgaW4gdGhlIGZ1dHVyZSBvdGhlciBNbWlvIElQIFNkIGRyaXZlci4NCg0KSSdsbCBwcm9jZWVk IGlmIHRoYXQgaXMgbm90IGEgY29uY2Vybi4gSWYgeW91IGhhdmUgb3RoZXIgc3VnZ2VzdGlvbnMg b24gdGhlIHBhdGhzIEkgc2hvdWxkIHB1cnN1ZSwgcGxlYXNlIGRvIGluZm9ybSBtZS4gDQoNClRo YW5rcw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExvaCwgVGllbiBI b2NrDQo+IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDI3LCAyMDIxIDU6MDggUE0NCj4gVG86IEtpbm5l eSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IENjOiB0aGxvaDg1QGdtYWlsLmNvbTsgTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZp YWluYy5jb20+OyBBcmQgQmllc2hldXZlbA0KPiA8YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZz4N Cj4gU3ViamVjdDogUkU6IFtQQVRDSCBWNSAxLzFdIEVtYmVkZGVkUGtnOiBEd01tY0hjRHhlOiBB ZGQgc3VwcG9ydCBmb3INCj4gRGVzaWdud2FyZSBTRE1NQyBkcml2ZXINCj4gDQo+IEhpIE1pa2UN Cj4gDQo+IFllcywgdGhlIGV4aXN0aW5nIFNkIGRyaXZlciBpcyB2ZXJ5IHRpZ2h0bHkgY291cGxl ZCB3aXRoIFBDSSBJTyBzdHJ1Y3QsIHRodXMgdGhlDQo+IHJlYXNvbiBmb3IgYSBuZXcgZHJpdmVy Lg0KPiBJIGNhbiBhdHRlbXB0IHRvIHJlZmFjdG9yIHRoZSBQY2kvU2RNbWNQY2lIY0R4ZSBhbmQg bWFrZSBQQ0kgYW5kIE1taW8gYQ0KPiBsaWJyYXJ5IGlmIHRoYXQncyB0aGUgYmVzdCByb3V0ZS4g SSByZW1lbWJlciBJIHRyaWVkIGJyaWVmbHkgdG8gcmVmYWN0b3IgdGhlIGNvZGUNCj4gYnV0IGl0 IHdhcyBxdWl0ZSBhIGJpdCBvZiB3b3JrLg0KPiANCj4gTGV0IG1lIGdpdmUgaXQgYW5vdGhlciBn bywgYW5kIGdldCBiYWNrIHRvIHlvdS4NCj4gDQo+IFRoYW5rcy4NCj4gDQo+IA0KPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDI3LCAyMDIx IDE6NTQgQU0NCj4gPiBUbzogTG9oLCBUaWVuIEhvY2sgPHRpZW4uaG9jay5sb2hAaW50ZWwuY29t PjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87DQo+ID4gS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IENjOiB0aGxvaDg1QGdtYWlsLmNvbTsgTGVpZiBMaW5k aG9sbSA8bGVpZkBudXZpYWluYy5jb20+OyBBcmQNCj4gQmllc2hldXZlbA0KPiA+IDxhcmRiK3Rp YW5vY29yZUBrZXJuZWwub3JnPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggVjUgMS8xXSBFbWJl ZGRlZFBrZzogRHdNbWNIY0R4ZTogQWRkIHN1cHBvcnQNCj4gZm9yDQo+ID4gRGVzaWdud2FyZSBT RE1NQyBkcml2ZXINCj4gPg0KPiA+IEkgc2VlIHRoZSBNZGVNb2R1bGVQa2cgaGFzIHRoZSBTZE1t Y1BjaUhjRHhlIG1vZHVsZSBhbmQgaXQgdXNlcyB0aGUNCj4gPiBFREsgSUkgU0QgTU1DIE92ZXJy aWRlDQo+ID4gUHJvdG9jb2wgZm9yIGhvc3QgY29udHJvbGxlciBzcGVjaWZpYyBiZWhhdmlvcnMu ICBXaHkgd2FzIHRoaXMgZHJpdmVyIGFuZCBhbg0KPiA+IGltcGxlbWVudGF0aW9uDQo+ID4gb2Yg dGhlIEVESyBJSSBTRCBNTUMgT3ZlcnJpZGUgUHJvdG9jb2wgZm9yIHRoZSBEZXNpZ25XYXJlIE1N QyBIQyBub3QNCj4gPiB1c2VkPw0KPiA+DQo+ID4gSWYgdGhlcmUgaXMgYSBnb29kIHJlYXNvbiB0 aGF0IHRoaXMgZXhpdGluZyBtb2R1bGUgYW5kIG92ZXJyaWRlIGV4dGVuc2lvbnMNCj4gY2FuDQo+ ID4gbm90IGJlIHVzZWQsDQo+ID4gdGhlbiBwbGVhc2UgYWRkIHRoYXQgYmFja2dyb3VuZCBhbmQg YW5hbHlzaXMgdG8gdGhlIEJaLg0KPiA+DQo+ID4gSSBzZWUgdGhlIGV4aXN0aW5nIG1vZHVsZSBp cyBQQ0kgYW5kIEkgdGhpbmsgdGhpcyBuZXcgb25lIGlzIGZvciBhIE1NSU8NCj4gYmFzZWQNCj4g PiBkZXZpY2UNCj4gPiB0aGF0IHJlcXVpcmVzIGRpZmZlcmVudCBETUEgc2VydmljZXMuICBJcyB0 aGlzIGNvcnJlY3Q/ICBJIGFtIHdvbmRlcmluZyBpZg0KPiB0aGVyZQ0KPiA+IGlzDQo+ID4gYSB3 YXkgdG8gaW1wbGVtZW50IHQgYSBzaW5nbGUgVUVGSSBEcml2ZXIgc291cmNlcyB0aGF0IGNhbiBz dXBwb3J0IGEgZGV2aWNlDQo+ID4gdGhhdCBpcw0KPiA+IHdpdGggUENJIG9yIE1NSU8/DQo+ID4N Cj4gPiBJZiBhIG5ldyBkcml2ZXIgaXMgcmVxdWlyZWQsIHRoZW4gaGVyZSBpcyBzb21lIG1vcmUg c3BlY2lmaWMgY29kZSByZXZpZXcNCj4gPiBmZWVkYmFjazoNCj4gPg0KPiA+IDEpIEVtYmVkZGVk UGtnL0luY2x1ZGUvUHJvdG9jb2wvUGxhdGZvcm1Td01tYy5oDQo+ID4NCj4gPiAgICBUaGUgZW51 bSBFRklfU0RfTU1DX1NMT1RfVFlQRSBjYW4gbm90IGJlaW5nIHdpdGggRUZJXyB1bmxlc3MgaXMg cGFydA0KPiA+IG9mIHRoZSBVRUZJIFNwZWMuDQo+ID4gICAgVGhpcyBmaWxlIGFwcGVhcnMgdG8g YmUgc3BlY2lmaWMgdG8gRFcsIHNvIHBlcmhhcHMgaXQgc2hvdWxkIGJlIHByZWZpeGVkDQo+IHdp dGgNCj4gPiBEV18gaW5zdGVhZA0KPiA+ICAgIHRvIG1hdGNoIHRoZSB1c2FnZSBvZiBEV19NTUNf SENfU0xPVF9DQVAuDQo+ID4NCj4gPiAgICBUaGUgc2FtZSBjb21tZW50IGFwcGxpZXMgdG8gU0Rf TU1DX0NBUkRfVFlQRS4gIFNob3VsZCB0aGF0IGJlDQo+ID4gRFdfU0RfTU1DX0NBUkRfVFlQRT8N Cj4gPg0KPiA+DQo+ID4gMikgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlDQo+ID4gICAg YSkgVGhlcmUgaXMgYSBwYWNrYWdlIC5kZWMgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS4gIFBhY2th Z2VzIGNhbiBuZXZlciBiZQ0KPiA+IG5lc3RlZC4gQW55DQo+ID4gICAgICAgaW50ZXJmYWNlcyB0 aGF0IG5lZWQgdG8gYmUgZXhwb3J0ZWQgZnJvbSB0aGUgRW1iZWRkZWRQa2cgc2hvdWxkIGJlDQo+ ID4gZGVjbGFyZWQgaW4NCj4gPiAgICAgICBFbWJlZGRlZFBrZy5kZWMgYW5kIER3TW1jRGNEeGUu ZGVjIHNob3VsZCBiZSByZW1vdmVkLg0KPiA+ICAgIGIpIER3TW1jRGNEeGUuZGVjIGRlY2xhcmVk IGEgdG9rZW4gc3BhY2UgR1VJRCwgYnV0IHRoZXJlIGFyZSBub3QNCj4gUENEcy4NCj4gPiBJIHRo aW5rIHRoaXMgR1VJRA0KPiA+ICAgICAgIGNhbiBiZSByZW1vdmVkLg0KPiA+ICAgIGMpIER3TW1j RGNEeGUuaW5mLiAgUmVtb3ZlIHJlZmVyZW5jZSB0byBEd01tY0RjRHhlLmRlYy4gIEFsc28sIGlz DQo+IHRoaXMNCj4gPiBVRUZJIERyaXZlciByZWFsbHkNCj4gPiAgICAgICBBUk0gc3BlY2lmaWM/ ICBXaHkgaXMgdGhlcmUgYSBkZXBlbmRlbmN5IG9uIEFybVBrZy9Bcm1Qa2cuZGVjPw0KPiBDYW4N Cj4gPiB0aGF0IGJlIHJlbW92ZWQ/DQo+ID4gICAgICAgQ2FuIHRoZSBkZXBlbmRlbmN5IG9uIEFy bUxpYiBiZSByZW1vdmVkPw0KPiA+DQo+ID4gMykgSSBzZWUgdXNlIG9mICNpZmRlZiBpbiB0aGUg RHdNbWNIY2kuaCBmaWxlLiAgVGhpcyBpcyBoaWdobHkgZGlzY291cmFnZWQuDQo+IFdoeQ0KPiA+ IGFyZQ0KPiA+ICAgIHRob3NlIHRoZXJlIGFuZCB3aHkgbm90IHVzZSBmZWF0dXJlZCBmbGFncyBQ Q0QgaW5zdGVhZD8gIElmIGl0IGlzIHJlbGF0ZWQgdG8NCj4gPiB0aGUNCj4gPiAgICBQQ0kgdnMg TU1JTyByZWdpc3RlciBtYXBwaW5nLCB0aGVuIHBlcmhhcHMgdGhlIFBDSSByZWxhdGVkIGNvbnRl bnQgY2FuDQo+ID4gYmUgcmVtb3ZlZA0KPiA+ICAgIGZyb20gdGhpcyBNTUlPIHNwZWNpZmljIGRy aXZlcj8NCj4gPg0KPiA+IEJlc3QgcmVnYXJkcywNCj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+ID4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IExvaCwgVGllbiBIb2NrIDx0 aWVuLmhvY2subG9oQGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IFN1bmRheSwgTWFyY2ggMjEsIDIw MjEgODoyNSBQTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiBDYzogdGhs b2g4NUBnbWFpbC5jb207IExvaCwgVGllbiBIb2NrIDx0aWVuLmhvY2subG9oQGludGVsLmNvbT47 DQo+IEtpbm5leSwNCj4gPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsg TGVpZg0KPiA+ID4gTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsgQXJkIEJpZXNoZXV2ZWwN Cj4gPiA8YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZz4NCj4gPiA+IFN1YmplY3Q6IFtQQVRDSCBW NSAxLzFdIEVtYmVkZGVkUGtnOiBEd01tY0hjRHhlOiBBZGQgc3VwcG9ydCBmb3INCj4gPiBEZXNp Z253YXJlIFNETU1DIGRyaXZlcg0KPiA+ID4NCj4gPiA+IEZyb206ICJUaWVuIEhvY2ssIExvaCIg PHRpZW4uaG9jay5sb2hAaW50ZWwuY29tPg0KPiA+ID4NCj4gPiA+IFRoaXMgYWRkcyBzdXBwb3J0 IGZvciBEZXNpZ253YXJlIFNETU1DIGRyaXZlci4gVGhlIFNETU1DIGRyaXZlcg0KPiA+IGRlcGVu ZHMgb24NCj4gPiA+IE1kZU1vZHVsZVBrZy9CdXMvU2QvLCBhbmQgcHJvZHVjZXMNCj4gPiBFRklf U0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTC4gVGhlDQo+ID4gPiBkcml2ZXIgdXNlcyBNTUlPIHRv IHJlYWQvd3JpdGUsIGFuZCB1c2VzDQo+ID4gPiBnRWRraWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQ cm90b2NvbEd1aWQuIFBsYXRmb3JtIG5lZWRzIHRvIHJlZ2lzdGVyDQo+ID4gZGV2aWNlDQo+ID4g PiB3aXRoIGdFZGtpaU5vbkRpc2NvdmVyYWJsZURldmljZVByb3RvY29sR3VpZC4NCj4gPiA+DQo+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBMb2ggVGllbiBIb2NrIDx0aWVuLmhvY2subG9oQGludGVsLmNv bT4NCj4gPiA+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCj4gPiA+IENj OiBBcmQgQmllc2hldXZlbCA8YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZz4NCj4gPiA+IC0tLQ0K PiA+ID4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYyAgfCAg IDQwICsNCj4gPiA+ICBFbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5p bmYgIHwgICA3MCArDQo+ID4gPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1j SGNEeGUuaCAgICB8ICA4MTcNCj4gPiArKysrKysrKysrDQo+ID4gPiAgRW1iZWRkZWRQa2cvRHJp dmVycy9Ed01tY0hjRHhlL0R3TW1jSGNpLmggICAgICB8ICA5ODUNCj4gPiArKysrKysrKysrKysN Cj4gPiA+ICBFbWJlZGRlZFBrZy9JbmNsdWRlL1Byb3RvY29sL1BsYXRmb3JtRHdNbWMuaCAgIHwg ICA3OSArDQo+ID4gPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0NvbXBvbmVudE5h bWUuYyB8ICAyMTQgKysrDQo+ID4gPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3 TW1jSGNEeGUuYyAgICB8IDEyOTYNCj4gPiArKysrKysrKysrKysrKysrDQo+ID4gPiAgRW1iZWRk ZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNpLmMgICAgICB8IDE2MDINCj4gPiArKysr KysrKysrKysrKysrKysrKw0KPiA+ID4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9F bW1jRGV2aWNlLmMgICAgfCAxMDQyDQo+ID4gKysrKysrKysrKysrKw0KPiA+ID4gIEVtYmVkZGVk UGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9TZERldmljZS5jICAgICAgfCAxMTA1DQo+ID4gKysrKysr KysrKysrKysNCj4gPiA+ICAxMCBmaWxlcyBjaGFuZ2VkLCA3MjUwIGluc2VydGlvbnMoKykNCj4g PiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3 TW1jSGNEeGUuZGVjDQo+ID4gYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNI Y0R4ZS5kZWMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAw MDAwMDAuLmNmODVjY2IxYTAzMA0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvRW1i ZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuZGVjDQo+ID4gPiBAQCAtMCww ICsxLDQwIEBADQo+ID4gPiArIy8qKiBAZmlsZQ0KPiA+ID4gKyMgRnJhbWV3b3JrIE1vZHVsZSBE ZXZlbG9wbWVudCBFbnZpcm9ubWVudCBJbmR1c3RyeSBTdGFuZGFyZHMNCj4gPiA+ICsjDQo+ID4g PiArIyBUaGlzIFBhY2thZ2UgcHJvdmlkZXMgaGVhZGVycyBhbmQgbGlicmFyaWVzIHRoYXQgY29u Zm9ybSB0byBFRkkvUEkNCj4gPiBJbmR1c3RyeSBzdGFuZGFyZHMuDQo+ID4gPiArIyBDb3B5cmln aHQgKGMpIDIwMDcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAxMi0yMDE0LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsjDQo+ID4gPiArIyAgICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiA+IGF2 YWlsYWJsZSB1bmRlcg0KPiA+ID4gKyMgICAgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQo+ID4gZGlzdHJpYnV0aW9uLg0K PiA+ID4gKyMgICAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Cj4gPiA+ICsjICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gPiA+ICsjDQo+ID4gPiArIyAgICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4gKyMg ICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ID4gKyMNCj4gPiA+ICsjKiovDQo+ID4g PiArDQo+ID4gPiArW0RlZmluZXNdDQo+ID4gPiArICBERUNfU1BFQ0lGSUNBVElPTiAgICAgICAg ICAgICAgPSAweDAwMDEwMDE5DQo+ID4gPiArICBQQUNLQUdFX05BTUUgICAgICAgICAgICAgICAg ICAgPSBEd01tY0hjRHhlUGtnDQo+ID4gPiArICBQQUNLQUdFX0dVSUQgICAgICAgICAgICAgICAg ICAgPSBlNzMwOTdjZS0xZmUyLTQxYTYtYTkzMC0zMTM2YmM2ZDIzZWYNCj4gPiA+ICsgIFBBQ0tB R0VfVkVSU0lPTiAgICAgICAgICAgICAgICA9IDAuMQ0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4N Cj4gPg0KPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjDQo+ID4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPiA+ICsjDQo+ID4gPiAr IyBJbmNsdWRlIFNlY3Rpb24gLSBsaXN0IG9mIEluY2x1ZGUgUGF0aHMgdGhhdCBhcmUgcHJvdmlk ZWQgYnkgdGhpcw0KPiBwYWNrYWdlLg0KPiA+ID4gKyMgICAgICAgICAgICAgICAgICAgQ29tbWVu dHMgYXJlIHVzZWQgZm9yIEtleXdvcmRzIGFuZCBNb2R1bGUgVHlwZXMuDQo+ID4gPiArIw0KPiA+ ID4gKyMgU3VwcG9ydGVkIE1vZHVsZSBUeXBlczoNCj4gPiA+ICsjICBCQVNFIFNFQyBQRUlfQ09S RSBQRUlNIERYRV9DT1JFIERYRV9EUklWRVINCj4gPiBEWEVfUlVOVElNRV9EUklWRVIgRFhFX1NN TV9EUklWRVIgRFhFX1NBTF9EUklWRVIgVUVGSV9EUklWRVINCj4gPiA+IFVFRklfQVBQTElDQVRJ T04NCj4gPiA+ICsjDQo+ID4gPg0KPiA+DQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Iw0KPiA+ID4gKw0KPiA+ID4gK1tHdWlkcy5jb21tb25dDQo+ID4gPiArICBnRHdNbWNIY0R4ZVRv a2VuU3BhY2VHdWlkICAgICA9IHsgMHg1NzZjMTMyZSwgMHg3ZDUxLCAweDRhYmIsIHsNCj4gPiAw eGJjLCAweDYwLCAweDEzLCAweDA4LCAweDA0LCAweDBlLCAweDkwLCAweDkyIH19DQo+ID4gPiAr DQo+ID4gPiArW1Byb3RvY29scy5jb21tb25dDQo+ID4gPiArICBnUGxhdGZvcm1Ed01tY1Byb3Rv Y29sR3VpZCAgICA9IHsgMHgxZDZkZmRlNSwgMHg3NmE3LCAweDQ0MDQsIHsNCj4gMHg4NSwNCj4g PiAweDc0LCAweDdhLCAweGRmLCAweDFhLCAweDhhLCAweGEyLCAweDBkIH19DQo+ID4gPiBkaWZm IC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuaW5mDQo+ ID4gYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5pbmYNCj4gPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRjZDA5NjBl ZjljMw0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVy cy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuaW5mDQo+ID4gPiBAQCAtMCwwICsxLDcwIEBADQo+ID4g PiArIyMgQGZpbGUNCj4gPiA+ICsjICBEd1NkTW1jSGNEeGUgZHJpdmVyIGlzIHVzZWQgdG8gbWFu YWdlIHRob3NlIGhvc3QgY29udHJvbGxlcnMNCj4gd2hpY2gNCj4gPiBjb21wbHkgd2l0aA0KPiA+ ID4gKyMgIERlc2lnbndhcmUgU0QgSG9zdCBDb250cm9sbGVyLg0KPiA+ID4gKyMNCj4gPiA+ICsj ICBJdCB3aWxsIHByb2R1Y2UgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgdG8gYWxsb3cN Cj4gc2VuZGluZw0KPiA+IFNEL01NQy9lTU1DIGNtZHMNCj4gPiA+ICsjICB0byBzcGVjaWZpZWQg ZGV2aWNlcyBmcm9tIHVwcGVyIGxheWVyLg0KPiA+ID4gKyMNCj4gPiA+ICsjICBDb3B5cmlnaHQg KGMpIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g PiA+ICsjICBDb3B5cmlnaHQgKEMpIDIwMTYsIE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyMgIENvcHlyaWdodCAoYykgMjAxOCwgTGlu YXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArIw0KPiA+ID4gKyMgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiA+ICsjICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ID4gKyMgIHdoaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heQ0KPiBi ZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocA0KPiA+ID4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPiAr IyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ID4gKyMNCj4gPiA+ICsjDQo+ID4gPiAr IyMNCj4gPiA+ICsNCj4gPiA+ICtbRGVmaW5lc10NCj4gPiA+ICsgIElORl9WRVJTSU9OICAgICAg ICAgICAgICAgICAgICA9IDB4MDAwMTAwMTkNCj4gPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAg ICAgICAgICAgICA9IER3TW1jSGNEeGUNCj4gPiA+ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAg ICAgICAgICA9IER3TW1jSGNEeGUudW5pDQo+ID4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAg ICAgICAgICAgPSA5YmU0ZDI2MC0yMDhjLTRlZmUtYTUyNC0wYjVkM2JmNzdmOWQNCj4gPiA+ICsg IE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFVFRklfRFJJVkVSDQo+ID4gPiArICBW RVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiA+ICsgIEVOVFJZX1BPSU5U ICAgICAgICAgICAgICAgICAgICA9IEluaXRpYWxpemVEd01tY0hjRHhlDQo+ID4gPiArDQo+ID4g PiArW1NvdXJjZXNdDQo+ID4gPiArICBDb21wb25lbnROYW1lLmMNCj4gPiA+ICsgIER3TW1jSGNE eGUuYw0KPiA+ID4gKyAgRHdNbWNIY0R4ZS5oDQo+ID4gPiArICBEd01tY0hjaS5jDQo+ID4gPiAr ICBEd01tY0hjaS5oDQo+ID4gPiArICBFbW1jRGV2aWNlLmMNCj4gPiA+ICsgIFNkRGV2aWNlLmMN Cj4gPiA+ICsNCj4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPiArICBBcm1Qa2cvQXJtUGtnLmRlYw0K PiA+ID4gKyAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuZGVjDQo+ ID4gPiArICBFbWJlZGRlZFBrZy9FbWJlZGRlZFBrZy5kZWMNCj4gPiA+ICsgIE1kZU1vZHVsZVBr Zy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4gKw0K PiA+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ICsgIEFybUxpYg0KPiA+ID4gKyAgQmFzZUxp Yg0KPiA+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ID4gKyAgQ2FjaGVNYWludGVuYW5jZUxpYg0K PiA+ID4gKyAgRGVidWdMaWINCj4gPiA+ICsgIERldmljZVBhdGhMaWINCj4gPiA+ICsgIERtYUxp Yg0KPiA+ID4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ID4gKyAgVGltZXJMaWINCj4gPiA+ ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiA+ID4gKyAgVWVmaURyaXZlckVudHJ5UG9p bnQNCj4gPiA+ICsgIFVlZmlMaWINCj4gPiA+ICsgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxp Yg0KPiA+ID4gKw0KPiA+ID4gK1tQcm90b2NvbHNdDQo+ID4gPiArICBnRWRraWlOb25EaXNjb3Zl cmFibGVEZXZpY2VQcm90b2NvbEd1aWQNCj4gPiA+ICsgIGdFZmlEZXZpY2VQYXRoUHJvdG9jb2xH dWlkICAgICAgICAgICAgICAgICAgICAjIyBUT19TVEFSVA0KPiA+ID4gKyAgZ0VmaVBjaUlvUHJv dG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICMjIFRPX1NUQVJUDQo+ID4gPiArICBn RWZpU2RNbWNQYXNzVGhydVByb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgIyMgQllfU1RBUlQN Cj4gPiA+ICsgIGdQbGF0Zm9ybUR3TW1jUHJvdG9jb2xHdWlkDQo+ID4gPiArDQo+ID4gPiArW1Vz ZXJFeHRlbnNpb25zLlRpYW5vQ29yZS4iRXh0cmFGaWxlcyJdDQo+ID4gPiArICBEd01tY0hjRHhl RXh0cmEudW5pDQo+ID4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hj RHhlL0R3TW1jSGNEeGUuaA0KPiA+IGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3 TW1jSGNEeGUuaA0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAw MDAwMDAwMC4uYjc4M2Q5ODMwMzI1DQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9F bWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5oDQo+ID4gPiBAQCAtMCww ICsxLDgxNyBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKw0KPiA+ID4gKyAgUHJvdmlkZXMg c29tZSBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB1c2VkIGJ5IHRoZSBEZXNpZ253YXJlDQo+ ID4gU0QvTU1DDQo+ID4gPiArICBob3N0IGNvbnRyb2xsZXIgZHJpdmVyLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gPiArICBDb3B5cmlnaHQgKEMpIDIwMTgsIExpbmFybyBMdGQuIEFs bCByaWd0aHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUNCj4gPiBh dmFpbGFibGUNCj4gPiA+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg QlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMNCj4gPiB0aGlzDQo+ID4gPiArICBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ ID4gKw0KPiA+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyINCj4gPiBCQVNJUywNCj4gPiA+ICsgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVYUFJFU1Mg T1IgSU1QTElFRC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaWZuZGVm IF9EV19NTUNfSENfRFhFX0hfDQo+ID4gPiArI2RlZmluZSBfRFdfTU1DX0hDX0RYRV9IXw0KPiA+ ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9D b21wb25lbnROYW1lLmg+DQo+ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL0NvbXBvbmVudE5hbWUy Lmg+DQo+ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL0RldmljZUlvLmg+DQo+ID4gPiArI2luY2x1 ZGUgPFByb3RvY29sL0RyaXZlckJpbmRpbmcuaD4NCj4gPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wv U2RNbWNQYXNzVGhydS5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlICJEd01tY0hjaS5oIg0K PiA+ID4gKw0KPiA+ID4gK2V4dGVybiBFRklfQ09NUE9ORU5UX05BTUVfUFJPVE9DT0wNCj4gPiBn RHdNbWNIY0NvbXBvbmVudE5hbWU7DQo+ID4gPiArZXh0ZXJuIEVGSV9DT01QT05FTlRfTkFNRTJf UFJPVE9DT0wNCj4gPiBnRHdNbWNIY0NvbXBvbmVudE5hbWUyOw0KPiA+ID4gK2V4dGVybiBFRklf RFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgIGdEd01tY0hjRHJpdmVyQmluZGluZzsNCj4gPiA+ICsN Cj4gPiA+ICsjZGVmaW5lIERXX01NQ19IQ19QUklWQVRFX1NJR05BVFVSRSAgU0lHTkFUVVJFXzMy ICgnZCcsICd3JywNCj4gJ3MnLA0KPiA+ICdkJykNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIERX X01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyhhKSBcDQo+ID4gPiArICAgIENSKGEsIERXX01NQ19I Q19QUklWQVRFX0RBVEEsIFBhc3NUaHJ1LA0KPiA+IERXX01NQ19IQ19QUklWQVRFX1NJR05BVFVS RSkNCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIEdlbmVyaWMgdGltZSBvdXQgdmFsdWUs IDEgbWljcm9zZWNvbmQgYXMgdW5pdC4NCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1D X0hDX0dFTkVSSUNfVElNRU9VVCAgICAgKDEgKiAxMDAwICogMTAwMCkNCj4gPiA+ICsNCj4gPiA+ ICsvLw0KPiA+ID4gKy8vIFNEL01NQyBhc3luYyB0cmFuc2ZlciB0aW1lciBpbnRlcnZhbCwgc2V0 IGJ5IGV4cGVyaWVuY2UuDQo+ID4gPiArLy8gVGhlIHVuaXQgaXMgMTAwdXMsIHRha2VzIDFtcyBh cyBpbnRlcnZhbC4NCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0hDX0FTWU5DX1RJ TUVSDQo+ID4gRUZJX1RJTUVSX1BFUklPRF9NSUxMSVNFQ09ORFMoMSkNCj4gPiA+ICsvLw0KPiA+ ID4gKy8vIFNEL01NQyByZW1vdmFibGUgZGV2aWNlIGVudW1lcmF0aW9uIHRpbWVyIGludGVydmFs LCBzZXQgYnkNCj4gPiBleHBlcmllbmNlLg0KPiA+ID4gKy8vIFRoZSB1bml0IGlzIDEwMHVzLCB0 YWtlcyAxMDBtcyBhcyBpbnRlcnZhbC4NCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1D X0hDX0VOVU1fVElNRVINCj4gPiBFRklfVElNRVJfUEVSSU9EX01JTExJU0VDT05EUygxMDApDQo+ ID4gPiArDQo+ID4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4gKyAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRW5hYmxlOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TTE9UX1RZ UEUgICAgICAgICAgICAgICAgU2xvdFR5cGU7DQo+ID4gPiArICBCT09MRUFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNZWRpYVByZXNlbnQ7DQo+ID4gPiArICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplZDsNCj4gPiA+ICsgIFNEX01NQ19DQVJEX1RZ UEUgICAgICAgICAgICAgICAgICAgIENhcmRUeXBlOw0KPiA+ID4gK30gRFdfTU1DX0hDX1NMT1Q7 DQo+ID4gPiArDQo+ID4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+ID4gKw0KPiA+ID4gKyAgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZTsNCj4gPiA+ ICsNCj4gPiA+ICsgIC8vIE1taW8gYmFzZSBhZGRyZXNzDQo+ID4gPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ID4gKw0KPiA+ID4gKyAgRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgUGFzc1RocnU7DQo+ID4gPiArDQo+ID4gPiAr ICBQTEFURk9STV9EV19NTUNfUFJPVE9DT0wgICAgICAgICAgICAqUGxhdGZvcm1Ed01tYzsNCj4g PiA+ICsgIC8vDQo+ID4gPiArICAvLyBUaGUgZmllbGQgaXMgdXNlZCB0byByZWNvcmQgdGhlIHBy ZXZpb3VzIHNsb3QgaW4gR2V0TmV4dFNsb3QoKS4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBVSU5U OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmV2aW91c1Nsb3Q7DQo+ID4gPiArICAv Lw0KPiA+ID4gKyAgLy8gRm9yIE5vbi1ibG9ja2luZyBvcGVyYXRpb24uDQo+ID4gPiArICAvLw0K PiA+ID4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXJFdmVudDsN Cj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBGb3IgU2QgcmVtb3ZhYmxlIGRldmljZSBlbnVtZXJh dGlvbi4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAg ICAgICAgICBDb25uZWN0RXZlbnQ7DQo+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAg ICAgICAgICAgICBRdWV1ZTsNCj4gPiA+ICsNCj4gPiA+ICsgIERXX01NQ19IQ19TTE9UICAgICAg ICAgICAgICAgICAgICAgIFNsb3RbRFdfTU1DX0hDX01BWF9TTE9UXTsNCj4gPiA+ICsgIERXX01N Q19IQ19TTE9UX0NBUA0KPiA+IENhcGFiaWxpdHlbRFdfTU1DX0hDX01BWF9TTE9UXTsNCj4gPiA+ ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heEN1cnJlbnRbRFdfTU1D X0hDX01BWF9TTE9UXTsNCj4gPiA+ICsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENvbnRyb2xsZXJWZXJzaW9uOw0KPiA+ID4gK30gRFdfTU1DX0hDX1BSSVZB VEVfREFUQTsNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19IQ19UUkJfU0lHICAgICAg ICAgICAgIFNJR05BVFVSRV8zMiAoJ0QnLCAnVCcsICdSJywgJ0InKQ0KPiA+ID4gKw0KPiA+ID4g Ky8vDQo+ID4gPiArLy8gVFJCIChUcmFuc2ZlciBSZXF1ZXN0IEJsb2NrKSBjb250YWlucyBpbmZv cm1hdGlvbiBmb3IgdGhlIGNtZA0KPiByZXF1ZXN0Lg0KPiA+ID4gKy8vDQo+ID4gPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U2lnbmF0dXJlOw0KPiA+ID4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICAgICAg VHJiTGlzdDsNCj4gPiA+ICsNCj4gPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNsb3Q7DQo+ID4gPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCbG9ja1NpemU7DQo+ID4gPiArDQo+ID4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01N QU5EX1BBQ0tFVCAqUGFja2V0Ow0KPiA+ID4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKkRhdGE7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEYXRhTGVuOw0KPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVhZDsNCj4gPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICAgICAgICAgIERh dGFQaHk7DQo+ID4gPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0 YU1hcDsNCj4gPiA+ICsgIERXX01NQ19IQ19UUkFOU0ZFUl9NT0RFICAgICAgICAgICAgIE1vZGU7 DQo+ID4gPiArDQo+ID4gPiArICBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICBF dmVudDsNCj4gPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0 ZWQ7DQo+ID4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0 Ow0KPiA+ID4gKw0KPiA+ID4gKyAgRFdfTU1DX0hDX0RNQV9ERVNDX0xJTkUgICAgICAgICAgICAg KkRtYURlc2M7DQo+ID4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgICAgICAgICBE bWFEZXNjUGh5Ow0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RG1hRGVzY1BhZ2VzOw0KPiA+ID4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKkRtYU1hcDsNCj4gPiA+ICsNCj4gPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFVzZUZpZm87DQo+ID4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVc2VCRTsgICAgICAgICAgICAgICAgICAvLyBCaWctZW5kaWFuDQo+ID4gPiArDQo+ ID4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICAqUHJpdmF0ZTsNCj4g PiA+ICt9IERXX01NQ19IQ19UUkI7DQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBEV19NTUNfSENf VFJCX0ZST01fVEhJUyhhKSBcDQo+ID4gPiArICAgIENSKGEsIERXX01NQ19IQ19UUkIsIFRyYkxp c3QsIERXX01NQ19IQ19UUkJfU0lHKQ0KPiA+ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gVGFz ayBmb3IgTm9uLWJsb2NraW5nIG1vZGUuDQo+ID4gPiArLy8NCj4gPiA+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1 cmU7DQo+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rOw0K PiA+ID4gKw0KPiA+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xv dDsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQ7 DQo+ID4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc1N0YXJ0Ow0K PiA+ID4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQ7DQo+ID4g PiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXRyeVRpbWVzOw0KPiA+ ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5maW5pdGVXYWl0Ow0K PiA+ID4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKk1hcDsNCj4gPiA+ ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpNYXBBZGRyZXNzOw0KPiA+ ID4gK30gRFdfTU1DX0hDX1FVRVVFOw0KPiA+ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gUHJv dG90eXBlcw0KPiA+ID4gKy8vDQo+ID4gPiArLyoqDQo+ID4gPiArICBFeGVjdXRlIGNhcmQgaWRl bnRpZmljYXRpb24gcHJvY2VkdXJlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQcml2 YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gPiBp bnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IGNhcmQgaXMgaWRlbnRpZmllZCBjb3JyZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIFRoZSBjYXJkIGNhbid0IGJlIGlkZW50aWZpZWQuDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArdHlwZWRlZg0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICsoKkRXTU1DX0NB UkRfVFlQRV9ERVRFQ1RfUk9VVElORSkgKA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVf REFUQSAgICAgICAgICAgICAqUHJpdmF0ZQ0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFNlbmRzIFNEIGNvbW1hbmQgdG8gYW4gU0QgY2FyZCB0aGF0IGlzIGF0dGFj aGVkIHRvIHRoZSBTRCBjb250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhlIFBhc3NUaHJ1 KCkgZnVuY3Rpb24gc2VuZHMgdGhlIFNEIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IFBhY2tldCB0bw0K PiA+IHRoZSBTRA0KPiA+ID4gKyAgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4NCj4gPiA+ICsNCj4g PiA+ICsgIElmIFBhY2tldCBpcyBzdWNjZXNzZnVsbHkgc2VudCB0byB0aGUgU0QgY2FyZCwgdGhl biBFRklfU1VDQ0VTUyBpcw0KPiA+IHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgYSBk ZXZpY2UgZXJyb3Igb2NjdXJzIHdoaWxlIHNlbmRpbmcgdGhlIFBhY2tldCwgdGhlbg0KPiA+IEVG SV9ERVZJQ0VfRVJST1IgaXMNCj4gPiA+ICsgIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAg SWYgU2xvdCBpcyBub3QgaW4gYSB2YWxpZCByYW5nZSBmb3IgdGhlIFNEIGNvbnRyb2xsZXIsIHRo ZW4NCj4gPiA+ICsgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gPiA+ICsN Cj4gPiA+ICsgIElmIFBhY2tldCBkZWZpbmVzIGEgZGF0YSBjb21tYW5kIGJ1dCBib3RoIEluRGF0 YUJ1ZmZlciBhbmQNCj4gPiBPdXREYXRhQnVmZmVyIGFyZQ0KPiA+ID4gKyAgTlVMTCwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIGlzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgVGhpcyAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIFNsb3QgICAgICAgICAgIFRoZSBzbG90 IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29tbWFuZCB0by4NCj4gPiA+ICsgIEBwYXJhbVtpbixvdXRdIFBh Y2tldCAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgU0QgY29tbWFuZCBkYXRhDQo+IHN0cnVjdHVy ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEV2ZW50ICAgICAgICAgIElmIEV2ZW50IGlzIE5V TEwsIGJsb2NraW5nIEkvTyBpcyBwZXJmb3JtZWQuIElmDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFdmVudCBpcyBub3QgTlVMTCwgdGhlbiBub25ibG9ja2luZyBJL08g aXMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1lZCwgYW5k IEV2ZW50IHdpbGwgYmUgc2lnbmFsZWQgd2hlbiB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBhY2tldCBjb21wbGV0ZXMuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgU0QgQ29tbWFuZCBQYWNrZXQgd2FzIHNlbnQg YnkgdGhlDQo+ID4gaG9zdC4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAg IEEgZGV2aWNlIGVycm9yIG9jY3VycmVkIHdoaWxlDQo+IGF0dGVtcHRpbmcNCj4gPiB0byBzZW5k DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29tbWFuZCBQ YWNrZXQuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBQYWNrZXQsIFNs b3QsIG9yIHRoZSBjb250ZW50cyBvZiB0aGUNCj4gPiBQYWNrZXQgaXMNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBQYWNrZXQgZGVmaW5lcyBhIGRhdGEgY29tbWFuZCBidXQNCj4gPiBi b3RoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbkRhdGFCdWZmZXIg YW5kIE91dERhdGFCdWZmZXIgYXJlIE5VTEwuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9OT19NRURJ QSAgICAgICAgICBTRCBEZXZpY2Ugbm90IHByZXNlbnQgaW4gdGhlIFNsb3QuDQo+ID4gPiArICBA cmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgY29tbWFuZCBkZXNjcmliZWQgYnkgdGhl IFNEDQo+ID4gQ29tbWFuZCBQYWNrZXQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgY29udHJvbGxlci4NCj4gPiA+ICsg IEByZXR2YWwgRUZJX0JBRF9CVUZGRVJfU0laRSAgIFRoZSBJblRyYW5zZmVyTGVuZ3RoIG9yDQo+ ID4gT3V0VHJhbnNmZXJMZW5ndGgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGV4Y2VlZHMgdGhlIGxpbWl0IHN1cHBvcnRlZCBieSBTRCBjYXJkICggaS5lLiBpZg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBieXRlcyBl eGNlZWQgdGhlIExhc3QgTEJBKS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RB VFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRHdNbWNQYXNzVGhydVBhc3NUaHJ1ICgNCj4gPiA+ ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAgICpUaGlzLA0K PiA+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xv dCwNCj4gPiA+ICsgIElOIE9VVCBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAg ICpQYWNrZXQsDQo+ID4gPiArICBJTiAgICAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFdmVudCAgICBPUFRJT05BTA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFVzZWQgdG8gcmV0cmlldmUgbmV4dCBzbG90IG51bWJlcnMgc3VwcG9ydGVk IGJ5IHRoZSBTRCBjb250cm9sbGVyLiBUaGUNCj4gPiA+ICsgIGZ1bmN0aW9uIHJldHVybnMgaW5m b3JtYXRpb24gYWJvdXQgYWxsIGF2YWlsYWJsZSBzbG90cyAocG9wdWxhdGVkIG9yDQo+ID4gPiAr ICBub3QtcG9wdWxhdGVkKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoZSBHZXROZXh0U2xvdCgpIGZ1 bmN0aW9uIHJldHJpZXZlcyB0aGUgbmV4dCBzbG90IG51bWJlciBvbiBhbiBTRA0KPiA+IGNvbnRy b2xsZXIuDQo+ID4gPiArICBJZiBvbiBpbnB1dCBTbG90IGlzIDB4RkYsIHRoZW4gdGhlIHNsb3Qg bnVtYmVyIG9mIHRoZSBmaXJzdCBzbG90IG9uIHRoZSBTRA0KPiA+ID4gKyAgY29udHJvbGxlciBp cyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIFNsb3QgaXMgYSBzbG90IG51bWJlciB0 aGF0IHdhcyByZXR1cm5lZCBvbiBhIHByZXZpb3VzIGNhbGwgdG8NCj4gPiA+ICsgIEdldE5leHRT bG90KCksIHRoZW4gdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBuZXh0IHNsb3Qgb24gdGhlIFNEDQo+ IGNvbnRyb2xsZXINCj4gPiBpcw0KPiA+ID4gKyAgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiAr ICBJZiBTbG90IGlzIG5vdCAweEZGIGFuZCBTbG90IHdhcyBub3QgcmV0dXJuZWQgb24gYSBwcmV2 aW91cyBjYWxsIHRvDQo+ID4gPiArICBHZXROZXh0U2xvdCgpLCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgaXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiArICBJZiBTbG90IGlzIHRoZSBzbG90IG51 bWJlciBvZiB0aGUgbGFzdCBzbG90IG9uIHRoZSBTRCBjb250cm9sbGVyLCB0aGVuDQo+ID4gPiAr ICBFRklfTk9UX0ZPVU5EIGlzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgVGhpcyAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9TRF9NTU1DX1BB U1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW4sb3V0XSBTbG90ICAgICAgICAgICBPbiBpbnB1 dCwgYSBwb2ludGVyIHRvIGEgc2xvdCBudW1iZXIgb24gdGhlDQo+IFNEDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLg0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCBhIHBvaW50ZXIgdG8gdGhlIG5leHQgc2xv dCBudW1iZXIgb24NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBT RCBjb250cm9sbGVyLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW4g aW5wdXQgdmFsdWUgb2YgMHhGRiByZXRyaWV2ZXMgdGhlIGZpcnN0IHNsb3QNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvbiB0aGUgU0QgY29udHJvbGxlci4N Cj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBuZXh0 IHNsb3QgbnVtYmVyIG9uIHRoZSBTRCBjb250cm9sbGVyDQo+ID4gd2FzDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBTbG90Lg0KPiA+ID4gKyAgQHJl dHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlcmUgYXJlIG5vIG1vcmUgc2xvdHMgb24gdGhp cyBTRA0KPiA+IGNvbnRyb2xsZXIuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBTbG90IGlzIG5vdCAweEZGIGFuZCBTbG90IHdhcyBub3QNCj4gPiByZXR1cm5lZCBvbiBh DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBjYWxsIHRv IEdldE5leHRTbG90KCkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0R3TW1jUGFzc1RocnVHZXROZXh0U2xvdCAoDQo+ID4gPiAr ICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICpUaGlzLA0KPiA+ ID4gKyAgSU4gT1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU2xvdA0K PiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFVzZWQgdG8gYWxsb2Nh dGUgYW5kIGJ1aWxkIGEgZGV2aWNlIHBhdGggbm9kZSBmb3IgYW4gU0QgY2FyZCBvbiB0aGUgU0QN Cj4gPiA+ICsgIGNvbnRyb2xsZXIuDQo+ID4gPiArDQo+ID4gPiArICBUaGUgQnVpbGREZXZpY2VQ YXRoKCkgZnVuY3Rpb24gYWxsb2NhdGVzIGFuZCBidWlsZHMgYSBzaW5nbGUgZGV2aWNlDQo+IG5v ZGUNCj4gPiA+ICsgIGZvciB0aGUgU0QNCj4gPiA+ICsgIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3Qu DQo+ID4gPiArDQo+ID4gPiArICBJZiB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBpcyBu b3QgcHJlc2VudCBvbiB0aGUgU0QgY29udHJvbGxlciwgdGhlbg0KPiA+ID4gKyAgRUZJX05PVF9G T1VORCBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIERldmljZVBhdGggaXMgTlVM TCwgdGhlbiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4g PiArICBJZiB0aGVyZSBhcmUgbm90IGVub3VnaCByZXNvdXJjZXMgdG8gYWxsb2NhdGUgdGhlIGRl dmljZSBwYXRoIG5vZGUsDQo+IHRoZW4NCj4gPiA+ICsgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIGlz IHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgT3RoZXJ3aXNlLCBEZXZpY2VQYXRoIGlzIGFs bG9jYXRlZCB3aXRoIHRoZSBib290IHNlcnZpY2UNCj4gQWxsb2NhdGVQb29sKCksDQo+ID4gdGhl DQo+ID4gPiArICBjb250ZW50cyBvZiBEZXZpY2VQYXRoIGFyZSBpbml0aWFsaXplZCB0byBkZXNj cmliZSB0aGUgU0QgY2FyZCBzcGVjaWZpZWQNCj4gYnkNCj4gPiA+ICsgIFNsb3QsIGFuZCBFRklf U1VDQ0VTUyBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIFRo aXMgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgU2xvdCAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBz bG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCBmb3INCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdoaWNoIGEgZGV2aWNlIHBhdGggbm9kZSBpcyB0byBiZSBhbGxvY2F0ZWQg YW5kDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdC4NCj4gPiA+ ICsgIEBwYXJhbVtpbixvdXRdIERldmljZVBhdGggICAgIEEgcG9pbnRlciB0byBhIHNpbmdsZSBk ZXZpY2UgcGF0aCBub2RlDQo+IHRoYXQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlc2NyaWJlcyB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4gVGhpcw0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaXMgcmVzcG9uc2li bGUgZm9yIGFsbG9jYXRpbmcgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBidWZmZXIgRGV2aWNlUGF0aCB3aXRoIHRoZSBib290IHNlcnZpY2UNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUG9vbCgpLiBJdCBpcyB0aGUgY2Fs bGVyJ3MgcmVzcG9uc2liaS0NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpdHkgdG8gZnJlZSBEZXZpY2VQYXRoIHdoZW4gdGhlIGNhbGxlciBpcw0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgd2l0aCBEZXZpY2VQYXRoLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGRldmljZSBw YXRoIG5vZGUgdGhhdCBkZXNjcmliZXMgdGhlIFNEDQo+ID4gY2FyZA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFNsb3Qgd2FzIGFsbG9jYXRlZCBh bmQgcmV0dXJuZWQgaW4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl dmljZVBhdGguDQo+ID4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgU0Qg Y2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBkb2VzIG5vdA0KPiA+IGV4aXN0IG9uDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29udHJvbGxlci4NCj4gPiA+ICsg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIERldmljZVBhdGggaXMgTlVMTC4NCj4gPiA+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIFRoZXJlIGFyZSBub3QgZW5vdWdoIHJl c291cmNlcyB0bw0KPiA+IGFsbG9jYXRlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEZXZpY2VQYXRoLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY1Bhc3NUaHJ1QnVpbGREZXZpY2VQYXRoICgN Cj4gPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAqVGhp cywNCj4gPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT bG90LA0KPiA+ID4gKyAgSU4gT1VUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAg ICoqRGV2aWNlUGF0aA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIGFuIFNEIGNhcmQgc2xvdCBudW1iZXIgYmFzZWQgb24g dGhlIGlucHV0DQo+IGRldmljZQ0KPiA+IHBhdGguDQo+ID4gPiArDQo+ID4gPiArICBUaGUgR2V0 U2xvdE51bWJlcigpIGZ1bmN0aW9uIHJldHJpZXZlcyBzbG90IG51bWJlciBmb3IgdGhlIFNEIGNh cmQNCj4gPiBzcGVjaWZpZWQNCj4gPiA+ICsgIGJ5IHRoZSBEZXZpY2VQYXRoIG5vZGUuIElmIERl dmljZVBhdGggaXMgTlVMTCwNCj4gPiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMNCj4gPiA+ICsg IHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgRGV2aWNlUGF0aCBpcyBub3QgYSBkZXZp Y2UgcGF0aCBub2RlIHR5cGUgdGhhdCB0aGUgU0QgUGFzcyBUaHJ1DQo+IGRyaXZlcg0KPiA+ID4g KyAgc3VwcG9ydHMsIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dICBEZXZpY2VQYXRoICAg ICAgICBBIHBvaW50ZXIgdG8gdGhlIGRldmljZSBwYXRoIG5vZGUgdGhhdA0KPiA+IGRlc2NyaWJl cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBTRCBjYXJkIG9uIHRo ZSBTRCBjb250cm9sbGVyLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gU2xvdCAgICAgICAgICAgICAg T24gcmV0dXJuLCBwb2ludHMgdG8gdGhlIHNsb3QgbnVtYmVyIG9mIGFuIFNEDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkIG9uIHRoZSBTRCBjb250cm9sbGVyLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU0QgY2FyZCBz bG90IG51bWJlciBpcyByZXR1cm5lZCBpbiBTbG90Lg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgU2xvdCBvciBEZXZpY2VQYXRoIGlzIE5VTEwuDQo+ID4gPiArICBAcmV0 dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBEZXZpY2VQYXRoIGlzIG5vdCBhIGRldmljZSBwYXRo IG5vZGUNCj4gPiB0eXBlIHRoYXQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoZSBTRCBQYXNzIFRocnUgZHJpdmVyIHN1cHBvcnRzLg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY1Bhc3NUaHJ1 R2V0U2xvdE51bWJlciAoDQo+ID4gPiArICBJTiAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICAgICAgICAgKlRoaXMsDQo+ID4gPiArICBJTiAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAgICAgICAgICAgICAgKkRldmljZVBhdGgsDQo+ID4gPiArICBPVVQgVUlOVDggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKlNsb3QNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBSZXNldHMgYW4gU0QgY2FyZCB0aGF0IGlzIGNvbm5lY3RlZCB0byB0 aGUgU0QgY29udHJvbGxlci4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoZSBSZXNldERldmljZSgpIGZ1 bmN0aW9uIHJlc2V0cyB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4NCj4gPiA+ICsNCj4g PiA+ICsgIElmIHRoaXMgU0QgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IGEgZGV2aWNlIHJl c2V0IG9wZXJhdGlvbiwNCj4gPiA+ICsgIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4NCj4g PiA+ICsNCj4gPiA+ICsgIElmIFNsb3QgaXMgbm90IGluIGEgdmFsaWQgc2xvdCBudW1iZXIgZm9y IHRoaXMgU0QgY29udHJvbGxlciwNCj4gPiA+ICsgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyBy ZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIHRoZSBkZXZpY2UgcmVzZXQgb3BlcmF0aW9u IGlzIGNvbXBsZXRlZCwgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiAr ICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJ X1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAg ICAgU3BlY2lmaWVzIHRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBiZQ0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkg U2xvdCB3YXMgcmVzZXQuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBU aGUgU0QgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IGENCj4gPiBkZXZpY2UNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0IG9wZXJhdGlvbi4NCj4gPiA+ICsg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFNsb3QgbnVtYmVyIGlzIGludmFsaWQuDQo+ ID4gPiArICBAcmV0dmFsIEVGSV9OT19NRURJQSAgICAgICAgICBTRCBEZXZpY2Ugbm90IHByZXNl bnQgaW4gdGhlIFNsb3QuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBU aGUgcmVzZXQgY29tbWFuZCBmYWlsZWQgZHVlIHRvIGENCj4gZGV2aWNlDQo+ID4gZXJyb3INCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4g PiArRHdNbWNQYXNzVGhydVJlc2V0RGV2aWNlICgNCj4gPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MICAgICAgICAgICAqVGhpcywNCj4gPiA+ICsgIElOIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90DQo+ID4gPiArICApOw0KPiA+ID4gKw0K PiA+ID4gKy8vDQo+ID4gPiArLy8gRHJpdmVyIG1vZGVsIHByb3RvY29sIGludGVyZmFjZXMNCj4g PiA+ICsvLw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgVGVzdHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVy IHN1cHBvcnRzIGEgZ2l2ZW4gY29udHJvbGxlci4gSWYgYSBjaGlsZCBkZXZpY2UgaXMNCj4gPiA+ ICsgIHByb3ZpZGVkLCBpdCBmdXJ0aGVyIHRlc3RzIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBzdXBw b3J0cyBjcmVhdGluZyBhIGhhbmRsZQ0KPiA+ID4gKyAgZm9yIHRoZSBzcGVjaWZpZWQgY2hpbGQg ZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlm IHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgc3VwcG9ydHMgdGhlDQo+ID4gPiArICBkZXZp Y2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUuIERyaXZlcnMgd2lsbCB0eXBpY2FsbHkg dXNlIHRoZQ0KPiBkZXZpY2UNCj4gPiA+ICsgIHBhdGggYXR0YWNoZWQgdG8gQ29udHJvbGxlckhh bmRsZSBhbmQvb3IgdGhlIHNlcnZpY2VzIGZyb20gdGhlIGJ1cyBJL08NCj4gPiA+ICsgIGFic3Ry YWN0aW9uIGF0dGFjaGVkIHRvIENvbnRyb2xsZXJIYW5kbGUgdG8gZGV0ZXJtaW5lIGlmIHRoZSBk cml2ZXINCj4gPiBzdXBwb3J0cw0KPiA+ID4gKyAgQ29udHJvbGxlckhhbmRsZS4gVGhpcyBmdW5j dGlvbiBtYXkgYmUgY2FsbGVkIG1hbnkgdGltZXMgZHVyaW5nDQo+ID4gcGxhdGZvcm0NCj4gPiA+ ICsgIGluaXRpYWxpemF0aW9uLiBJbiBvcmRlciB0byByZWR1Y2UgYm9vdCB0aW1lcywgdGhlIHRl c3RzIHBlcmZvcm1lZCBieSB0aGlzDQo+ID4gPiArICBmdW5jdGlvbiBtdXN0IGJlIHZlcnkgc21h bGwsIGFuZCB0YWtlIGFzIGxpdHRsZSB0aW1lIGFzIHBvc3NpYmxlIHRvDQo+ID4gZXhlY3V0ZS4N Cj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiBhbnkg aGFyZHdhcmUgZGV2aWNlcywgYW5kDQo+ID4gdGhpcw0KPiA+ID4gKyAgZnVuY3Rpb24gbXVzdCBi ZSBhd2FyZSB0aGF0IHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUNCj4g PiBtYXkNCj4gPiA+ICsgIGFscmVhZHkgYmUgbWFuYWdlZCBieSB0aGUgc2FtZSBkcml2ZXIgb3Ig YSBkaWZmZXJlbnQgZHJpdmVyLiBUaGlzDQo+ID4gZnVuY3Rpb24NCj4gPiA+ICsgIG11c3QgbWF0 Y2ggaXRzIGNhbGxzIHRvIEFsbG9jYXRlUGFnZXMoKSB3aXRoIEZyZWVQYWdlcygpLCBBbGxvY2F0 ZVBvb2woKQ0KPiA+IHdpdGgNCj4gPiA+ICsgIEZyZWVQb29sKCksIGFuZCBPcGVuUHJvdG9jb2wo KSB3aXRoIENsb3NlUHJvdG9jb2woKS4NCj4gPiA+ICsgIFNpbmNlIENvbnRyb2xsZXJIYW5kbGUg bWF5IGhhdmUgYmVlbiBwcmV2aW91c2x5IHN0YXJ0ZWQgYnkgdGhlIHNhbWUNCj4gPiBkcml2ZXIs IGlmDQo+ID4gPiArICBhIHByb3RvY29sIGlzIGFscmVhZHkgaW4gdGhlIG9wZW5lZCBzdGF0ZSwg dGhlbiBpdCBtdXN0IG5vdCBiZSBjbG9zZWQNCj4gd2l0aA0KPiA+ID4gKyAgQ2xvc2VQcm90b2Nv bCgpLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGd1YXJhbnRlZSB0aGUgc3RhdGUgb2YNCj4gPiBDb250 cm9sbGVySGFuZGxlDQo+ID4gPiArICBpcyBub3QgbW9kaWZpZWQgYnkgdGhpcyBmdW5jdGlvbi4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUNCj4gPiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFt W2luXSAgQ29udHJvbGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0 byB0ZXN0Lg0KPiBUaGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoYW5kbGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wgaW50ZXJmYWNlIHRoYXQNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVzIGFuIEkvTyBhYnN0cmFj dGlvbiB0byB0aGUgZHJpdmVyLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgUmVtYWluaW5nRGV2aWNl UGF0aCAgQSBwb2ludGVyIHRvIHRoZSByZW1haW5pbmcgcG9ydGlvbg0KPiBvZg0KPiA+IGENCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBwYXRoLiAgVGhp cyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBieQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGV2aWNlIGRyaXZlcnMsIGFuZCBpcyBvcHRpb25hbCBmb3IgYnVzDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzLiBGb3IgYnVzIGRy aXZlcnMsIGlmIHRoaXMgcGFyYW1ldGVyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpcyBub3QgTlVMTCwgdGhlbiB0aGUgYnVzIGRyaXZlciBtdXN0IGRldGVyLQ0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluZSBpZiB0aGUgYnVz IGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDb250cm9sbGVySGFuZGxlIGFuZCB0aGUgY2hpbGQgY29udHJvbGxlcg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFJlbWFp bmluZ0RldmljZVBhdGggYXJlIGJvdGgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGlzIGJ1cyBkcml2ZXIuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBi eSBDb250cm9sbGVySGFuZGxlDQo+ID4gYW5kDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIHN1cHBvcnRlZCBieSB0aGUNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQg YnkgVGhpcy4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgICAgIFRoZSBk ZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+ID4gQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgYWxy ZWFkeSBiZWluZyBtYW5hZ2VkDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBieSB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzLg0KPiA+ID4gKyAgQHJldHZhbCBF RklfQUNDRVNTX0RFTklFRCAgICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkNCj4gPiBDb250 cm9sbGVySGFuZGxlIGFuZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBhbHJlYWR5IGJlaW5nIG1hbmFnZWQNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGEgZGlmZmVyZW50IGRyaXZlciBv ciBhbiBhcHBsaWNhdGlvbiB0aGF0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXF1aXJlcyBleGNsdXNpdmUgYWNjZXNzLg0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gPiA+ICsg IEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5 DQo+ID4gQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZp ZWQgYnkgVGhpcy4NCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRUZJQVBJ DQo+ID4gPiArRHdNbWNIY0RyaXZlckJpbmRpbmdTdXBwb3J0ZWQgKA0KPiA+ID4gKyAgSU4gRUZJ X0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICpUaGlzLA0KPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAg ICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gPiArICBJTiBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICAgKlJlbWFpbmluZ0RldmljZVBhdGgNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ ID4gPiArLyoqDQo+ID4gPiArICBTdGFydHMgYSBkZXZpY2UgY29udHJvbGxlciBvciBhIGJ1cyBj b250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhlIFN0YXJ0KCkgZnVuY3Rpb24gaXMgZGVz aWduZWQgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBFRkkgYm9vdCBzZXJ2aWNlDQo+ID4gPiArICBD b25uZWN0Q29udHJvbGxlcigpLg0KPiA+ID4gKyAgQXMgYSByZXN1bHQsIG11Y2ggb2YgdGhlIGVy cm9yIGNoZWNraW5nIG9uIHRoZSBwYXJhbWV0ZXJzIHRvIFN0YXJ0KCkgaGFzDQo+ID4gYmVlbg0K PiA+ID4gKyAgbW92ZWQgaW50byB0aGlzIGNvbW1vbiBib290IHNlcnZpY2UuIEl0IGlzIGxlZ2Fs IHRvIGNhbGwgU3RhcnQoKSBmcm9tDQo+IG90aGVyDQo+ID4gPiArICBsb2NhdGlvbnMsDQo+ID4g PiArICBidXQgdGhlIGZvbGxvd2luZyBjYWxsaW5nIHJlc3RyaWN0aW9ucyBtdXN0IGJlIGZvbGxv d2VkIG9yIHRoZSBzeXN0ZW0NCj4gPiBiZWhhdmlvcg0KPiA+ID4gKyAgd2lsbCBub3QgYmUgZGV0 ZXJtaW5pc3RpYy4NCj4gPiA+ICsgIDEuIENvbnRyb2xsZXJIYW5kbGUgbXVzdCBiZSBhIHZhbGlk IEVGSV9IQU5ETEUuDQo+ID4gPiArICAyLiBJZiBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIG5vdCBO VUxMLCB0aGVuIGl0IG11c3QgYmUgYSBwb2ludGVyIHRvIGENCj4gPiBuYXR1cmFsLQ0KPiA+ID4g KyAgICAgbHkgYWxpZ25lZCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wuDQo+ID4gPiArICAzLiBQ cmlvciB0byBjYWxsaW5nIFN0YXJ0KCksIHRoZSBTdXBwb3J0ZWQoKSBmdW5jdGlvbiBmb3IgdGhl IGRyaXZlcg0KPiBzcGVjaWZpZWQNCj4gPiA+ICsgICAgIGJ5IFRoaXMgbXVzdCBoYXZlIGJlZW4g Y2FsbGVkIHdpdGggdGhlIHNhbWUgY2FsbGluZyBwYXJhbWV0ZXJzLCBhbmQNCj4gPiA+ICsgICAg IFN1cHBvcnRlZCgpIG11c3QgaGF2ZSByZXR1cm5lZCBFRklfU1VDQ0VTUy4NCj4gPiA+ICsNCj4g PiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUN Cj4gPiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ29udHJv bGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byBzdGFydC4NCj4g PiBUaGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUg bXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wgaW50ZXJmYWNlIHRoYXQNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVzIGFuIEkvTyBhYnN0cmFjdGlvbiB0byB0 aGUgZHJpdmVyLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgUmVtYWluaW5nRGV2aWNlUGF0aCAgQSBw b2ludGVyIHRvIHRoZSByZW1haW5pbmcgcG9ydGlvbg0KPiBvZg0KPiA+IGENCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBwYXRoLiAgVGhpcyBwYXJhbWV0 ZXIgaXMgaWdub3JlZCBieQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGV2aWNlIGRyaXZlcnMsIGFuZCBpcyBvcHRpb25hbCBmb3IgYnVzIGRyaS0NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnMuIEZvciBhIGJ1cyBkcml2ZXIs IGlmIHRoaXMgcGFyYW1ldGVyIGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLCB0aGVuIGhhbmRsZXMgZm9yIGFsbCB0aGUgY2hpbGRyZW4gb2YNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIgYXJlIGNyZWF0 ZWQgYnkgdGhpcyBkcml2ZXIuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3QgTlVMTCBhbmQgdGhlIGZpcnN0DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgUGF0aCBOb2RlIGlzIG5v dCB0aGUgRW5kIG9mIERldmljZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUGF0aCBOb2RlLCB0aGVuIG9ubHkgdGhlIGhhbmRsZSBmb3IgdGhlDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCBkZXZpY2Ugc3BlY2lmaWVkIGJ5 IHRoZSBmaXJzdCBEZXZpY2UNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBhdGggTm9kZSBvZiBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIGNyZWF0ZWQNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoaXMgZHJpdmVyLg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpcnN0IERldmljZSBQ YXRoIE5vZGUgb2YNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl bWFpbmluZ0RldmljZVBhdGggaXMgdGhlIEVuZCBvZiBEZXZpY2UgUGF0aA0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSwgbm8gY2hpbGQgaGFuZGxlIGlzIGNy ZWF0ZWQgYnkgdGhpcw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZHJpdmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg ICAgVGhlIGRldmljZSB3YXMgc3RhcnRlZC4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9F UlJPUiAgICAgICAgIFRoZSBkZXZpY2UgY291bGQgbm90IGJlIHN0YXJ0ZWQgZHVlIHRvDQo+IGEN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBlcnJvci4g Q3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9S RVNPVVJDRVMgICAgIFRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZQ0KPiA+IGNvbXBsZXRlZCBkdWUg dG8gYQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFjayBvZiBy ZXNvdXJjZXMuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICAgICBUaGUg ZHJpdmVyIGZhaWxkZWQgdG8gc3RhcnQgdGhlIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8N Cj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRHdNbWNIY0RyaXZlckJp bmRpbmdTdGFydCAoDQo+ID4gPiArICBJTiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgICAg ICpUaGlzLA0KPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBDb250 cm9sbGVyLA0KPiA+ID4gKyAgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAqUmVt YWluaW5nRGV2aWNlUGF0aA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIFN0b3BzIGEgZGV2aWNlIGNvbnRyb2xsZXIgb3IgYSBidXMgY29udHJvbGxlci4NCj4gPiA+ ICsNCj4gPiA+ICsgIFRoZSBTdG9wKCkgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tl ZCBmcm9tIHRoZSBFRkkgYm9vdCBzZXJ2aWNlDQo+ID4gPiArICBEaXNjb25uZWN0Q29udHJvbGxl cigpLg0KPiA+ID4gKyAgQXMgYSByZXN1bHQsIG11Y2ggb2YgdGhlIGVycm9yIGNoZWNraW5nIG9u IHRoZSBwYXJhbWV0ZXJzIHRvIFN0b3AoKSBoYXMNCj4gPiBiZWVuDQo+ID4gPiArICBtb3ZlZCBp bnRvIHRoaXMgY29tbW9uIGJvb3Qgc2VydmljZS4gSXQgaXMgbGVnYWwgdG8gY2FsbCBTdG9wKCkg ZnJvbQ0KPiBvdGhlcg0KPiA+ID4gKyAgbG9jYXRpb25zLCBidXQgdGhlIGZvbGxvd2luZyBjYWxs aW5nIHJlc3RyaWN0aW9ucyBtdXN0IGJlIGZvbGxvd2VkIG9yIHRoZQ0KPiA+ID4gKyAgc3lzdGVt IGJlaGF2aW9yIHdpbGwgbm90IGJlIGRldGVybWluaXN0aWMuDQo+ID4gPiArICAxLiBDb250cm9s bGVySGFuZGxlIG11c3QgYmUgYSB2YWxpZCBFRklfSEFORExFIHRoYXQgd2FzIHVzZWQgb24gYQ0K PiA+IHByZXZpb3VzDQo+ID4gPiArICAgICBjYWxsIHRvIHRoaXMgc2FtZSBkcml2ZXIncyBTdGFy dCgpIGZ1bmN0aW9uLg0KPiA+ID4gKyAgMi4gVGhlIGZpcnN0IE51bWJlck9mQ2hpbGRyZW4gaGFu ZGxlcyBvZiBDaGlsZEhhbmRsZUJ1ZmZlciBtdXN0IGFsbA0KPiBiZSBhDQo+ID4gdmFsaWQNCj4g PiA+ICsgICAgIEVGSV9IQU5ETEUuIEluIGFkZGl0aW9uLCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBt dXN0IGhhdmUgYmVlbiBjcmVhdGVkDQo+ID4gaW4NCj4gPiA+ICsgICAgIHRoaXMgZHJpdmVyJ3Mg U3RhcnQoKSBmdW5jdGlvbiwgYW5kIHRoZSBTdGFydCgpIGZ1bmN0aW9uIG11c3QgaGF2ZSBjYWxs ZWQNCj4gPiA+ICsgICAgIE9wZW5Qcm90b2NvbCgpIG9uIENvbnRyb2xsZXJIYW5kbGUgd2l0aCBh biBBdHRyaWJ1dGUgb2YNCj4gPiA+ICsgICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0NISUxEX0NP TlRST0xMRVIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAg ICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgIEEgaGFuZGxlIHRvIHRoZSBkZXZpY2UgYmVpbmcg c3RvcHBlZC4NCj4gPiBUaGUgaGFuZGxlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtdXN0IHN1cHBvcnQgYSBidXMgc3BlY2lmaWMgSS9PIHByb3RvY29sIGZvciB0aGUN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0byB1c2UgdG8g c3RvcCB0aGUgZGV2aWNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgTnVtYmVyT2ZDaGlsZHJlbiAg VGhlIG51bWJlciBvZiBjaGlsZCBkZXZpY2UgaGFuZGxlcyBpbg0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ2hpbGRIYW5kbGVCdWZmZXIuDQo+ID4gPiArICBAcGFyYW1b aW5dICBDaGlsZEhhbmRsZUJ1ZmZlciBBbiBhcnJheSBvZiBjaGlsZCBoYW5kbGVzIHRvIGJlIGZy ZWVkLg0KPiA+IE1heSBiZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCBpZiBOdW1iZXJPZkNoaWxkcmVuIGlzIDAuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBzdG9wcGVkLg0KPiA+ID4gKyAg QHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3Rv cHBlZCBkdWUgdG8NCj4gYQ0KPiA+IGRldmljZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXJyb3IuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRV Uw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0R3TW1jSGNEcml2ZXJCaW5kaW5nU3RvcCAoDQo+ID4g PiArICBJTiAgRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiA+ICsg IElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gPiAr ICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZkNoaWxkcmVuLA0K PiA+ID4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgKkNoaWxkSGFuZGxl QnVmZmVyDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gRUZJIENv bXBvbmVudCBOYW1lIEZ1bmN0aW9ucw0KPiA+ID4gKy8vDQo+ID4gPiArLyoqDQo+ID4gPiArICBS ZXRyaWV2ZXMgYSBVbmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUg b2YgdGhlIGRyaXZlci4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVz IHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgYSBkcml2ZXIgaW4gdGhlIGZvcm0NCj4gb2YNCj4g PiBhDQo+ID4gPiArICBVbmljb2RlIHN0cmluZy4gSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkg VGhpcyBoYXMgYSB1c2VyIHJlYWRhYmxlIG5hbWUNCj4gaW4NCj4gPiA+ICsgIHRoZSBsYW5ndWFn ZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2UsIHRoZW4gYSBwb2ludGVyIHRvIHRoZSBkcml2ZXIgbmFt ZQ0KPiBpcw0KPiA+ID4gKyAgcmV0dXJuZWQgaW4gRHJpdmVyTmFtZSwgYW5kIEVGSV9TVUNDRVNT IGlzIHJldHVybmVkLiBJZiB0aGUgZHJpdmVyDQo+ID4gc3BlY2lmaWVkDQo+ID4gPiArICBieSBU aGlzIGRvZXMgbm90IHN1cHBvcnQgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwN Cj4gPiA+ICsgIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtICBUaGlzW2luXSAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+ IEVGSV9DT01QT05FTlRfTkFNRTJfUFJPVE9DT0wgb3INCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4g PiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgTGFuZ3VhZ2VbaW5dICAgICAgICAgIEEgcG9pbnRlciB0 byBhIE51bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFycmF5IGluZGljYXRpbmcgdGhlIGxhbmd1YWdlLiBUaGlzIGlzIHRo ZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugb2YgdGhl IGRyaXZlciBuYW1lIHRoYXQgdGhlIGNhbGxlciBpcw0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVxdWVzdGluZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzIHNwZWNpZmll ZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMuIFRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbnVtYmVyIG9mIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgYSBkcml2ZXIgaXMg dXANCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkcml2ZXIg d3JpdGVyLiBMYW5ndWFnZSBpcyBzcGVjaWZpZWQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluIFJGQyA0NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1h dC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgRHJpdmVyTmFtZVtvdXRdICAgICAgIEEgcG9p bnRlciB0byB0aGUgVW5pY29kZSBzdHJpbmcgdG8gcmV0dXJuLg0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGhpcyBVbmljb2RlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiB0 aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZp ZWQgYnkgVGhpcyBpbiB0aGUgbGFuZ3VhZ2UNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNwZWNpZmllZCBieSBMYW5ndWFnZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBVbmljb2RlIHN0cmluZyBmb3IgdGhlIERyaXZl ciBzcGVjaWZpZWQNCj4gYnkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRoaXMgYW5kIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2Ugd2FzDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBEcml2ZXJOYW1lLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgTGFuZ3VhZ2Ug aXMgTlVMTC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IERyaXZlck5hbWUgaXMgTlVMTC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQ UE9SVEVEICAgICAgIFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3QNCj4gPiBz dXBwb3J0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3Vh Z2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VG SV9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY0hjQ29tcG9uZW50TmFtZUdldERy aXZlck5hbWUgKA0KPiA+ID4gKyAgSU4gIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAgICAg KlRoaXMsDQo+ID4gPiArICBJTiAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAqTGFu Z3VhZ2UsDQo+ID4gPiArICBPVVQgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqKkRy aXZlck5hbWUNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXRy aWV2ZXMgYSBVbmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2Yg dGhlDQo+ID4gY29udHJvbGxlcg0KPiA+ID4gKyAgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGJ5IGEg ZHJpdmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHVz ZXIgcmVhZGFibGUgbmFtZSBvZiB0aGUgY29udHJvbGxlcg0KPiBzcGVjaWZpZWQNCj4gPiBieQ0K PiA+ID4gKyAgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUgaW4gdGhlIGZvcm0gb2Yg YSBVbmljb2RlIHN0cmluZy4gSWYgdGhlDQo+ID4gPiArICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRo aXMgaGFzIGEgdXNlciByZWFkYWJsZSBuYW1lIGluIHRoZSBsYW5ndWFnZQ0KPiA+IHNwZWNpZmll ZCBieQ0KPiA+ID4gKyAgTGFuZ3VhZ2UsIHRoZW4gYSBwb2ludGVyIHRvIHRoZSBjb250cm9sbGVy IG5hbWUgaXMgcmV0dXJuZWQgaW4NCj4gPiBDb250cm9sbGVyTmFtZSwNCj4gPiA+ICsgIGFuZCBF RklfU1VDQ0VTUyBpcyByZXR1cm5lZC4gIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMg aXMgbm90DQo+ID4gY3VycmVudGx5DQo+ID4gPiArICBtYW5hZ2luZyB0aGUgY29udHJvbGxlciBz cGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUsDQo+ID4gPiArICB0 aGVuIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4gIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVk IGJ5IFRoaXMNCj4gZG9lcw0KPiA+IG5vdA0KPiA+ID4gKyAgc3VwcG9ydCB0aGUgbGFuZ3VhZ2Ug c3BlY2lmaWVkIGJ5IExhbmd1YWdlLCB0aGVuIEVGSV9VTlNVUFBPUlRFRA0KPiBpcw0KPiA+IHJl dHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBUaGlzW2luXSAgICAgICAgICAgICAg QSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9DT01QT05FTlRfTkFNRTJfUFJPVE9DT0wgb3INCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9DT01QT05FTlRfTkFNRV9Q Uk9UT0NPTCBpbnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQ29udHJvbGxlckhh bmRsZVtpbl0gIFRoZSBoYW5kbGUgb2YgYSBjb250cm9sbGVyIHRoYXQgdGhlDQo+IGRyaXZlcg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFRoaXMg aXMgbWFuYWdpbmcuICBUaGlzIGhhbmRsZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3BlY2lmaWVzIHRoZSBjb250cm9sbGVyIHdob3NlIG5hbWUgaXMgdG8gYmUNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHBhcmFtICBDaGlsZEhhbmRsZVtpbl0gICAgICAgVGhlIGhhbmRsZSBvZiB0aGUg Y2hpbGQgY29udHJvbGxlciB0bw0KPiByZXRyaWV2ZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhlIG5hbWUgb2YuICBUaGlzIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRl ciB0aGF0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgTlVM TC4gIEl0IHdpbGwgYmUgTlVMTCBmb3IgZGV2aWNlDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkcml2ZXJzLiAgSXQgd2lsbCBhbHNvIGJlIE5VTEwgZm9yIGEgYnVzIGRy aXZlcnMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lzaCB0 byByZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgYnVzDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250cm9sbGVyLiAgSXQgd2lsbCBub3QgYmUgTlVMTCBmb3IgYSBidXMN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0aGF0IHdpc2hl cyB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiBhDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGlsZCBjb250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBM YW5ndWFnZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkIEFTQ0lJ IHN0cmluZw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgaW5k aWNhdGluZyB0aGUgbGFuZ3VhZ2UuICBUaGlzIGlzIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRoYXQgdGhlIGNh bGxlciBpcw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGlu ZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGFuZ3VhZ2VzIHNwZWNpZmllZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMu IFRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGxh bmd1YWdlcyBzdXBwb3J0ZWQgYnkgYSBkcml2ZXIgaXMgdXANCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVyLiBMYW5ndWFnZSBpcyBzcGVj aWZpZWQgaW4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJGQyA0NjQ2 IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1hdC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBw YXJhbSAgQ29udHJvbGxlck5hbWVbb3V0XSAgIEEgcG9pbnRlciB0byB0aGUgVW5pY29kZSBzdHJp bmcgdG8NCj4gPiByZXR1cm4uDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUaGlzIFVuaWNvZGUgc3RyaW5nIGlzIHRoZSBuYW1lIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxl ckhhbmRsZSBhbmQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoaWxk SGFuZGxlIGluIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhl IGRyaXZlcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVk IGJ5IFRoaXMuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgVW5pY29kZSBzdHJpbmcgZm9yIHRoZSB1c2VyIHJlYWRhYmxlDQo+ID4gbmFtZSBpbg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNp ZmllZCBieSBMYW5ndWFnZSBmb3IgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgd2FzIHJldHVybmVkIGluDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXJOYW1lLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQ29udHJvbGxlckhhbmRsZSBpcyBu b3QgYSB2YWxpZA0KPiA+IEVGSV9IQU5ETEUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBDaGlsZEhhbmRsZSBpcyBub3QgTlVMTCBhbmQgaXQgaXMgbm90 DQo+IGENCj4gPiB2YWxpZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RUZJX0hBTkRMRS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIExhbmd1YWdlIGlzIE5VTEwuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBDb250cm9sbGVyTmFtZSBpcyBOVUxMLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhp cyBpcyBub3QNCj4gPiBjdXJyZW50bHkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hbmFnaW5nIHRoZSBjb250cm9sbGVyIHNwZWNpZmllZCBieQ0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5k bGUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUg ZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGRvZXMgbm90DQo+ID4gc3VwcG9ydA0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBM YW5ndWFnZS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRHdNbWNIY0NvbXBvbmVudE5hbWVHZXRDb250cm9sbGVyTmFtZSAoDQo+ ID4gPiArICBJTiAgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiA+ ICsgIElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUs DQo+ID4gPiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBDaGlsZEhhbmRs ZSwgT1BUSU9OQUwNCj4gPiA+ICsgIElOICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICpMYW5ndWFnZSwNCj4gPiA+ICsgIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAg ICoqQ29udHJvbGxlck5hbWUNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBDcmVhdGUgYSBuZXcgVFJCIGZvciB0aGUgU0QvTU1DIGNtZCByZXF1ZXN0Lg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERX X01NQ19IQ19QUklWQVRFX0RBVEENCj4gPiBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g U2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhl DQo+ID4gY29tbWFuZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gUGFja2V0ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBTRCBjb21t YW5kIGRhdGEgc3RydWN0dXJlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBFdmVudCAgICAgICAgICBJ ZiBFdmVudCBpcyBOVUxMLCBibG9ja2luZyBJL08gaXMgcGVyZm9ybWVkLg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJZiBFdmVudCBpcyBub3QgTlVMTCwgdGhlbiBub25ibG9j a2luZyBJL08gaXMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWVk LCBhbmQgRXZlbnQgd2lsbCBiZSBzaWduYWxlZCB3aGVuIHRoZQ0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQYWNrZXQgY29tcGxldGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHVybiBDcmVhdGVkIFRyYiBvciBOVUxMLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0RX X01NQ19IQ19UUkIgKg0KPiA+ID4gK0R3TW1jQ3JlYXRlVHJiICgNCj4gPiA+ICsgIElOIERXX01N Q19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICAgICpQcml2YXRlLA0KPiA+ID4gKyAgSU4gVUlO VDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiA+ICsgIElOIEVGSV9T RF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQsDQo+ID4gPiArICBJTiBFRklf RVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudA0KPiA+ID4gKyAgKTsNCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEZyZWUgdGhlIHJlc291cmNlIHVzZWQgYnkgdGhlIFRS Qi4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50 ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2UuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ ID4gPiArVk9JRA0KPiA+ID4gK0R3TW1jRnJlZVRyYiAoDQo+ID4gPiArICBJTiBEV19NTUNfSENf VFJCICAgICAgICAgICAqVHJiDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgQ2hlY2sgaWYgdGhlIGVudiBpcyByZWFkeSBmb3IgZXhlY3V0ZSBzcGVjaWZpZWQgVFJC Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIg dG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gPiBpbnN0YW5jZS4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIg aW5zdGFuY2UuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBlbnYgaXMgcmVhZHkgZm9yIFRSQiBleGVjdXRpb24uDQo+ID4gPiArICBAcmV0dmFsIEVGSV9O T1RfUkVBRFkgICAgIFRoZSBlbnYgaXMgbm90IHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uLg0KPiA+ ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBlbi4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNDaGVja1RyYkVu diAoDQo+ID4gPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0 ZSwNCj4gPiA+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4g PiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBXYWl0IGZvciB0aGUgZW52 IHRvIGJlIHJlYWR5IGZvciBleGVjdXRlIHNwZWNpZmllZCBUUkIuDQo+ID4gPiArDQo+ID4gPiAr ICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BS SVZBVEVfREFUQQ0KPiA+IGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAg ICAgICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiA+ICsN Cj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGVudiBpcyByZWFkeSBmb3Ig VFJCIGV4ZWN1dGlvbi4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1RJTUVPVVQgICAgICAgVGhlIGVu diBpcyBub3QgcmVhZHkgZm9yIFRSQiBleGVjdXRpb24gaW4NCj4gdGltZS4NCj4gPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4uDQo+ID4gPiArDQo+ID4g PiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jV2FpdFRyYkVudiAoDQo+ID4g PiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiA+ ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gPiA+ICsgICk7 DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFeGVjdXRlIHRoZSBzcGVjaWZpZWQgVFJC Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIg dG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gPiBpbnN0YW5jZS4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIg aW5zdGFuY2UuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBUUkIgaXMgc2VudCB0byBob3N0IGNvbnRyb2xsZXIgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBlbiB3aGVuIHNlbmRpbmcg dGhpcyByZXF1ZXN0IHRvDQo+ID4gdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGhvc3QgY29udHJvbGxlci4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RB VFVTDQo+ID4gPiArRHdNbWNFeGVjVHJiICgNCj4gPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRF X0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAg ICAgICAgICAgICAgICAgKlRyYg0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIENoZWNrIHRoZSBUUkIgZXhlY3V0aW9uIHJlc3VsdC4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJ VkFURV9EQVRBDQo+ID4gaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAg ICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIGV4ZWN1dGVkIHN1 Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgVGhlIFRSQiBp cyBub3QgY29tcGxldGVkIGZvciBleGVjdXRpb24uDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIFNvbWUgZXJyb3MgaGFwcGVuIHdoZW4gZXhlY3V0aW5nIHRoaXMgcmVxdWVzdC4N Cj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNDaGVj a1RyYlJlc3VsdCAoDQo+ID4gPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAg ICAqUHJpdmF0ZSwNCj4gPiA+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAg ICpUcmINCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBXYWl0IGZv ciB0aGUgVFJCIGV4ZWN1dGlvbiByZXN1bHQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d IFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0K PiA+IGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBUaGUgcG9p bnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBleGVjdXRlZCBzdWNjZXNzZnVsbHku DQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNvbWUgZXJyb3MgaGFwcGVuIHdo ZW4gZXhlY3V0aW5nIHRoaXMgcmVxdWVzdC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtF RklfU1RBVFVTDQo+ID4gPiArRHdNbWNXYWl0VHJiUmVzdWx0ICgNCj4gPiA+ICsgIElOIERXX01N Q19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ID4gKyAgSU4gRFdfTU1D X0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4g PiA+ICsvKioNCj4gPiA+ICsgIEV4ZWN1dGUgRU1NQyBkZXZpY2UgaWRlbnRpZmljYXRpb24gcHJv Y2VkdXJlLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5k YXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklW QVRFX0RBVEENCj4gPiBpbnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgVGhlcmUgaXMgYSBFTU1DIGNhcmQuDQo+ID4gPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZXJlIGlzIG5vdCBhIEVNTUMgY2FyZC4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRW1tY0lkZW50aWZpY2F0aW9uICgNCj4gPiA+ ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICAgKlByaXZhdGUNCj4gPiA+ ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFeGVjdXRlIEVNTUMgZGV2aWNl IGlkZW50aWZpY2F0aW9uIHByb2NlZHVyZS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIEVN TUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNCBmb3IgZGV0YWlscy4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRv IHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBDQo+ID4gaW5zdGFuY2UuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZXJlIGlzIGEgRU1NQyBjYXJkLg0KPiA+ ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGVyZSBpcyBub3QgYSBFTU1DIGNhcmQu DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK1NkQ2FyZElk ZW50aWZpY2F0aW9uICgNCj4gPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAg ICAgICAgKlByaXZhdGUNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArI2VuZGlmIC8qIF9E V19NTUNfSENfRFhFX0hfICovDQo+ID4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVy cy9Ed01tY0hjRHhlL0R3TW1jSGNpLmgNCj4gPiBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNI Y0R4ZS9Ed01tY0hjaS5oDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXgg MDAwMDAwMDAwMDAwLi4xMmVmNThhMzczNjgNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsr KyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjaS5oDQo+ID4gPiBAQCAt MCwwICsxLDk4NSBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKw0KPiA+ID4gKyAgUHJvdmlk ZXMgc29tZSBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB1c2VkIGJ5IHRoZSBTRC9NTUMgaG9z dA0KPiA+IGNvbnRyb2xsZXINCj4gPiA+ICsgIGRyaXZlci4NCj4gPiA+ICsNCj4gPiA+ICsgIENv cHlyaWdodCAoYykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8gTHRkLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlDQo+ID4gYXZhaWxhYmxl DQo+ID4gPiArICB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNl bnNlIHdoaWNoIGFjY29tcGFuaWVzDQo+ID4gdGhpcw0KPiA+ID4gKyAgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gPiA+ICsgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+ICsNCj4g PiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMgSVMiDQo+ID4gQkFTSVMsDQo+ID4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2lmbmRlZiBfRFdfTU1D X0hDSV9IXw0KPiA+ID4gKyNkZWZpbmUgX0RXX01NQ19IQ0lfSF8NCj4gPiA+ICsNCj4gPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9DYWNoZU1haW50ZW5hbmNlTGliLmg+DQo+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvVGltZXJMaWIuaD4NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wv UGxhdGZvcm1Ed01tYy5oPg0KPiA+ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gU0QgSG9zdCBD b250cm9sbGVyIFNsb3RJbmZvIFJlZ2lzdGVyIE9mZnNldA0KPiA+ID4gKy8vDQo+ID4gPiArI2Rl ZmluZSBEV19NTUNfSENfU0xPVF9PRkZTRVQgICAgICAgICAweDQwDQo+ID4gPiArDQo+ID4gPiAr I2RlZmluZSBEV19NTUNfSENfTUFYX1NMT1QgICAgICAgICAgICAxDQo+ID4gPiArDQo+ID4gPiAr Ly8NCj4gPiA+ICsvLyBTRCBIb3N0IENvbnRyb2xsZXIgTU1JTyBSZWdpc3RlciBPZmZzZXQNCj4g PiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0NUUkwgICAgICAgICAgICAgICAgICAgMHgw MDANCj4gPiA+ICsjZGVmaW5lIERXX01NQ19QV1JFTiAgICAgICAgICAgICAgICAgIDB4MDA0DQo+ ID4gPiArI2RlZmluZSBEV19NTUNfQ0xLRElWICAgICAgICAgICAgICAgICAweDAwOA0KPiA+ID4g KyNkZWZpbmUgRFdfTU1DX0NMS1NSQyAgICAgICAgICAgICAgICAgMHgwMGMNCj4gPiA+ICsjZGVm aW5lIERXX01NQ19DTEtFTkEgICAgICAgICAgICAgICAgIDB4MDEwDQo+ID4gPiArI2RlZmluZSBE V19NTUNfVE1PVVQgICAgICAgICAgICAgICAgICAweDAxNA0KPiA+ID4gKyNkZWZpbmUgRFdfTU1D X0NUWVBFICAgICAgICAgICAgICAgICAgMHgwMTgNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19CTEtT SVogICAgICAgICAgICAgICAgIDB4MDFjDQo+ID4gPiArI2RlZmluZSBEV19NTUNfQllUQ05UICAg ICAgICAgICAgICAgICAweDAyMA0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVE1BU0sgICAgICAg ICAgICAgICAgMHgwMjQNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19DTURBUkcgICAgICAgICAgICAg ICAgIDB4MDI4DQo+ID4gPiArI2RlZmluZSBEV19NTUNfQ01EICAgICAgICAgICAgICAgICAgICAw eDAyYw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX1JFU1AwICAgICAgICAgICAgICAgICAgMHgwMzAN Cj4gPiA+ICsjZGVmaW5lIERXX01NQ19SRVNQMSAgICAgICAgICAgICAgICAgIDB4MDM0DQo+ID4g PiArI2RlZmluZSBEV19NTUNfUkVTUDIgICAgICAgICAgICAgICAgICAweDAzOA0KPiA+ID4gKyNk ZWZpbmUgRFdfTU1DX1JFU1AzICAgICAgICAgICAgICAgICAgMHgwM2MNCj4gPiA+ICsjZGVmaW5l IERXX01NQ19SSU5UU1RTICAgICAgICAgICAgICAgIDB4MDQ0DQo+ID4gPiArI2RlZmluZSBEV19N TUNfU1RBVFVTICAgICAgICAgICAgICAgICAweDA0OA0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0ZJ Rk9USCAgICAgICAgICAgICAgICAgMHgwNGMNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19HUElPICAg ICAgICAgICAgICAgICAgIDB4MDU4DQo+ID4gPiArI2RlZmluZSBEV19NTUNfREVCTkNFICAgICAg ICAgICAgICAgICAweDA2NA0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX1VTUklEICAgICAgICAgICAg ICAgICAgMHgwNjgNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19WRVJJRCAgICAgICAgICAgICAgICAg IDB4MDZjDQo+ID4gPiArI2RlZmluZSBEV19NTUNfSENPTiAgICAgICAgICAgICAgICAgICAweDA3 MA0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX1VIU1JFRyAgICAgICAgICAgICAgICAgMHgwNzQNCj4g PiA+ICsjZGVmaW5lIERXX01NQ19CTU9EICAgICAgICAgICAgICAgICAgIDB4MDgwDQo+ID4gPiAr I2RlZmluZSBEV19NTUNfREJBRERSICAgICAgICAgICAgICAgICAweDA4OA0KPiA+ID4gKyNkZWZp bmUgRFdfTU1DX0lEU1RTICAgICAgICAgICAgICAgICAgMHgwOGMNCj4gPiA+ICsjZGVmaW5lIERX X01NQ19JRElOVEVOICAgICAgICAgICAgICAgIDB4MDkwDQo+ID4gPiArI2RlZmluZSBEV19NTUNf RFNDQUREUiAgICAgICAgICAgICAgICAweDA5NA0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0JVRkFE RFIgICAgICAgICAgICAgICAgMHgwOTgNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19DQVJEVEhSQ1RM ICAgICAgICAgICAgIDB4MTAwDQo+ID4gPiArI2RlZmluZSBEV19NTUNfVUhTUkVHX0VYVCAgICAg ICAgICAgICAweDEwOA0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0VOQUJMRV9TSElGVCAgICAgICAg ICAgMHgxMTANCj4gPiA+ICsjZGVmaW5lIERXX01NQ19GSUZPX1NUQVJUICAgICAgICAgICAgIDB4 MjAwDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBHRVRfSURTVFNfRE1BQ19GU00oeCkgICAgICAg ICAgICAgICAgICAgKCgoeCkgPj4gMTMpICYgMHhmKQ0KPiA+ID4gKyNkZWZpbmUgSURTVFNfRlNN X0RNQV9JRExFICAgICAgICAgICAgICAgICAgICAgIDANCj4gPiA+ICsjZGVmaW5lIElEU1RTX0ZT TV9ETUFfU1VTUEVORCAgICAgICAgICAgICAgICAgICAxDQo+ID4gPiArI2RlZmluZSBJRFNUU19G U01fREVTQ19SRCAgICAgICAgICAgICAgICAgICAgICAgMg0KPiA+ID4gKyNkZWZpbmUgSURTVFNf RlNNX0RFU0NfQ0hLICAgICAgICAgICAgICAgICAgICAgIDMNCj4gPiA+ICsjZGVmaW5lIElEU1RT X0ZTTV9ETUFfUkRfUkVRX1dBSVQgICAgICAgICAgICAgICA0DQo+ID4gPiArI2RlZmluZSBJRFNU U19GU01fRE1BX1dSX1JFUV9XQUlUICAgICAgICAgICAgICAgNQ0KPiA+ID4gKyNkZWZpbmUgSURT VFNfRlNNX0RNQV9SRCAgICAgICAgICAgICAgICAgICAgICAgIDYNCj4gPiA+ICsjZGVmaW5lIElE U1RTX0ZTTV9ETUFfV1IgICAgICAgICAgICAgICAgICAgICAgICA3DQo+ID4gPiArI2RlZmluZSBJ RFNUU19GU01fREVTQ19DTE9TRSAgICAgICAgICAgICAgICAgICAgOA0KPiA+ID4gKyNkZWZpbmUg SURTVFNfRlNNX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Zg0KPiA+ID4gKw0KPiA+ ID4gKyNkZWZpbmUgQ01EX1VQREFURV9DTEsgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAy MDIwMDANCj4gPiA+ICsjZGVmaW5lIENNRF9TVEFSVF9CSVQgICAgICAgICAgICAgICAgICAgICAg ICAgICAoMSA8PCAzMSkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIE1NQ184QklUX01PREUgICAg ICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxNikNCj4gPiA+ICsjZGVmaW5lIE1NQ180QklU X01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAwKQ0KPiA+ID4gKyNkZWZpbmUg TU1DXzFCSVRfTU9ERSAgICAgICAgICAgICAgICAgICAgICAgICAgIDANCj4gPiA+ICsNCj4gPiA+ ICsjZGVmaW5lIERXX01NQ19CTE9DS19TSVpFICAgICAgICAgICAgICAgICAgICAgICA1MTINCj4g PiA+ICsNCj4gPiA+ICsjZGVmaW5lIENNRF9JTkRFWF9NQVNLICAgICAgICAgICAgICAgICAgICAg ICAgICAweDNGDQo+ID4gPiArI2RlZmluZSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCAgICAgICAg ICAgICAgICAgKDEgPDwgNikNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfTE9OR19SRVNQT05TRSAg ICAgICAgICAgICAgICAgICAoMSA8PCA3KQ0KPiA+ID4gKyNkZWZpbmUgQklUX0NNRF9DSEVDS19S RVNQT05TRV9DUkMgICAgICAgICAgICAgICgxIDw8IDgpDQo+ID4gPiArI2RlZmluZSBCSVRfQ01E X0RBVEFfRVhQRUNURUQgICAgICAgICAgICAgICAgICAgKDEgPDwgOSkNCj4gPiA+ICsjZGVmaW5l IEJJVF9DTURfUkVBRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCA8PCAxMCkNCj4gPiA+ ICsjZGVmaW5lIEJJVF9DTURfV1JJVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAx MCkNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfQkxPQ0tfVFJBTlNGRVIgICAgICAgICAgICAgICAg ICAoMCA8PCAxMSkNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfU1RSRUFNX1RSQU5TRkVSICAgICAg ICAgICAgICAgICAoMSA8PCAxMSkNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfU0VORF9BVVRPX1NU T1AgICAgICAgICAgICAgICAgICAoMSA8PCAxMikNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfV0FJ VF9QUlZEQVRBX0NPTVBMRVRFICAgICAgICAgICAoMSA8PCAxMykNCj4gPiA+ICsjZGVmaW5lIEJJ VF9DTURfU1RPUF9BQk9SVF9DTUQgICAgICAgICAgICAgICAgICAoMSA8PCAxNCkNCj4gPiA+ICsj ZGVmaW5lIEJJVF9DTURfU0VORF9JTklUICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxNSkN Cj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfVVBEQVRFX0NMT0NLX09OTFkgICAgICAgICAgICAgICAo MSA8PCAyMSkNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfUkVBRF9DRUFUQV9ERVZJQ0UgICAgICAg ICAgICAgICAoMSA8PCAyMikNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfQ0NTX0VYUEVDVEVEICAg ICAgICAgICAgICAgICAgICAoMSA8PCAyMykNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfRU5BQkxF X0JPT1QgICAgICAgICAgICAgICAgICAgICAoMSA8PCAyNCkNCj4gPiA+ICsjZGVmaW5lIEJJVF9D TURfRVhQRUNUX0JPT1RfQUNLICAgICAgICAgICAgICAgICAoMSA8PCAyNSkNCj4gPiA+ICsjZGVm aW5lIEJJVF9DTURfRElTQUJMRV9CT09UICAgICAgICAgICAgICAgICAgICAoMSA8PCAyNikNCj4g PiA+ICsjZGVmaW5lIEJJVF9DTURfTUFOREFUT1JZX0JPT1QgICAgICAgICAgICAgICAgICAoMCA8 PCAyNykNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfQUxURVJOQVRFX0JPT1QgICAgICAgICAgICAg ICAgICAoMSA8PCAyNykNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfVk9MVF9TV0lUQ0ggICAgICAg ICAgICAgICAgICAgICAoMSA8PCAyOCkNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURfVVNFX0hPTERf UkVHICAgICAgICAgICAgICAgICAgICAoMSA8PCAyOSkNCj4gPiA+ICsjZGVmaW5lIEJJVF9DTURf U1RBUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAzMSkNCj4gPiA+ICsNCj4gPiA+ ICsjZGVmaW5lIENNRF9JTkRFWCh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHgpICYg Q01EX0lOREVYX01BU0spDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBEV19NTUNfSU5UX0VCRSAg ICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTUpICAgICAgIC8qIEVuZC1iaXQgRXJyICov DQo+ID4gPiArI2RlZmluZSBEV19NTUNfSU5UX1NCRSAgICAgICAgICAgICAgICAgICAgICAgICAg KDEgPDwgMTMpICAgICAgIC8qIFN0YXJ0LWJpdCAgRXJyICovDQo+ID4gPiArI2RlZmluZSBEV19N TUNfSU5UX0hMRSAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTIpICAgICAgIC8qIEhh cmR3YXJlLWxvY2sNCj4gPiBFcnIgKi8NCj4gPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfRlJVTiAg ICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMSkgICAgICAgLyogRklGTyBVTi9PVg0KPiA+ IFJVTiAqLw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9EUlQgICAgICAgICAgICAgICAgICAg ICAgICAgICgxIDw8IDkpICAgICAgICAvKiBEYXRhIHRpbWVvdXQgKi8NCj4gPiA+ICsjZGVmaW5l IERXX01NQ19JTlRfUlRPICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCA4KSAgICAgICAg LyogUmVzcG9uc2UNCj4gPiB0aW1lb3V0ICovDQo+ID4gPiArI2RlZmluZSBEV19NTUNfSU5UX0RD UkMgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgNykgICAgICAgIC8qIERhdGEgQ1JDIGVy ciAqLw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9SQ1JDICAgICAgICAgICAgICAgICAgICAg ICAgICgxIDw8IDYpICAgICAgICAvKiBSZXNwb25zZSBDUkMNCj4gPiBlcnIgKi8NCj4gPiA+ICsj ZGVmaW5lIERXX01NQ19JTlRfUlhEUiAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCA1KSAg ICAgICAgLyogUmVjZWl2ZSBGSUZPDQo+ID4gZGF0YSByZXF1ZXN0ICovDQo+ID4gPiArI2RlZmlu ZSBEV19NTUNfSU5UX1RYRFIgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgNCkgICAgICAg IC8qIFRyYW5zbWl0IEZJRk8NCj4gPiBkYXRhIHJlcXVlc3QgKi8NCj4gPiA+ICsjZGVmaW5lIERX X01NQ19JTlRfRFRPICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAzKSAgICAgICAgLyog RGF0YSB0cmFucyBvdmVyDQo+ID4gKi8NCj4gPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfQ01EX0RP TkUgICAgICAgICAgICAgICAgICAgICAoMSA8PCAyKSAgICAgICAgLyogQ29tbWFuZA0KPiA+IGRv bmUgKi8NCj4gPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfUkUgICAgICAgICAgICAgICAgICAgICAg ICAgICAoMSA8PCAxKSAgICAgICAgLyogUmVzcG9uc2UgZXJyb3INCj4gKi8NCj4gPiA+ICsNCj4g PiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0RJQyAgICAgICAgICAgICAgICAgICAoMSA8 PCAxKQ0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0lETUFDX0RFUzBfTEQgICAgICAgICAgICAgICAg ICAgICgxIDw8IDIpDQo+ID4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfREVTMF9GUyAgICAgICAg ICAgICAgICAgICAgKDEgPDwgMykNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0NI ICAgICAgICAgICAgICAgICAgICAoMSA8PCA0KQ0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0lETUFD X0RFUzBfRVIgICAgICAgICAgICAgICAgICAgICgxIDw8IDUpDQo+ID4gPiArI2RlZmluZSBEV19N TUNfSURNQUNfREVTMF9DRVMgICAgICAgICAgICAgICAgICAgKDEgPDwgMzApDQo+ID4gPiArI2Rl ZmluZSBEV19NTUNfSURNQUNfREVTMF9PV04gICAgICAgICAgICAgICAgICAgKDEgPDwgMzEpDQo+ ID4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfREVTMV9CUzEoeCkgICAgICAgICAgICAgICAgKCh4 KSAmIDB4MWZmZikNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMyX0JTMih4KSAgICAg ICAgICAgICAgICAoKCh4KSAmIDB4MWZmZikgPDwgMTMpDQo+ID4gPiArI2RlZmluZSBEV19NTUNf SURNQUNfU1dSRVNFVCAgICAgICAgICAgICAgICAgICAgKDEgPDwgMCkNCj4gPiA+ICsjZGVmaW5l IERXX01NQ19JRE1BQ19GQiAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxKQ0KPiA+ID4g KyNkZWZpbmUgRFdfTU1DX0lETUFDX0VOQUJMRSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDcp DQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBEV19NTUNfQ1RSTF9SRVNFVCAgICAgICAgICAgICAg ICAgICAgICAgKDEgPDwgMCkNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19DVFJMX0ZJRk9fUkVTRVQg ICAgICAgICAgICAgICAgICAoMSA8PCAxKQ0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0NUUkxfRE1B X1JFU0VUICAgICAgICAgICAgICAgICAgICgxIDw8IDIpDQo+ID4gPiArI2RlZmluZSBEV19NTUNf Q1RSTF9JTlRfRU4gICAgICAgICAgICAgICAgICAgICAgKDEgPDwgNCkNCj4gPiA+ICsjZGVmaW5l IERXX01NQ19DVFJMX0RNQV9FTiAgICAgICAgICAgICAgICAgICAgICAoMSA8PCA1KQ0KPiA+ID4g KyNkZWZpbmUgRFdfTU1DX0NUUkxfSURNQUNfRU4gICAgICAgICAgICAgICAgICAgICgxIDw8IDI1 KQ0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0NUUkxfUkVTRVRfQUxMICAgICAgICAgICAgICAgICAg IChEV19NTUNfQ1RSTF9SRVNFVA0KPiB8DQo+ID4gRFdfTU1DX0NUUkxfRklGT19SRVNFVCB8IERX X01NQ19DVFJMX0RNQV9SRVNFVCkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19TVFNf REFUQV9CVVNZICAgICAgICAgICAgICAgICAgICAoMSA8PCA5KQ0KPiA+ID4gKyNkZWZpbmUgRFdf TU1DX1NUU19GSUZPX0NPVU5UKHgpICAgICAgICAgICAgICAgICgoKHgpICYgMHgxZmZmKSA8PCAx NykNCj4gLyoNCj4gPiBOdW1iZXIgb2YgZmlsbGVkIGxvY2F0aW9ucyBpbiBGSUZPICovDQo+ID4g PiArI2RlZmluZSBHRVRfU1RTX0ZJRk9fQ09VTlQoeCkgICAgICAgICAgICAgICAgICAgKCgoeCkg Pj4gMTcpICYgMHgxZmZmKQ0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX1NUU19GSUZPX0ZVTEwoeCkg ICAgICAgICAgICAgICAgICgoKHgpID4+IDMpICYgMSkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5l IERXX01NQ19CTU9EX1NXUiAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAwKSAgICAgICAg IC8qIFNvZnR3YXJlDQo+ID4gUmVzZXQgKi8NCj4gPiA+ICsjZGVmaW5lIERXX01NQ19CTU9EX0ZC ICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxKSAgICAgICAgIC8qIEZpeCBCdXJzdCAq Lw0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0JNT0RfREUgICAgICAgICAgICAgICAgICAgICAgICAg ICgxIDw8IDcpICAgICAgICAgLyogSURNQUMNCj4gRW5hYmxlDQo+ID4gKi8NCj4gPiA+ICsNCj4g PiA+ICsjZGVmaW5lIERXX01NQ19JRFNUU19USSAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8 PCAwKSAgICAgICAgIC8qIFRyYW5zbWl0DQo+ID4gSW50ZXJydXB0ICovDQo+ID4gPiArI2RlZmlu ZSBEV19NTUNfSURTVFNfUkkgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMSkgICAgICAg ICAvKiBSZWNlaXZlDQo+IEludGVycnVwdA0KPiA+ICovDQo+ID4gPiArDQo+ID4gPiArI2RlZmlu ZSBEV19NTUNfRklGT19UV01BUksoeCkgICAgICAgICAgICAgICAgICAgKCh4KSAmIDB4ZmZmKQ0K PiA+ID4gKyNkZWZpbmUgRFdfTU1DX0ZJRk9fUldNQVJLKHgpICAgICAgICAgICAgICAgICAgICgo KHgpICYgMHgxZmYpIDw8IDE2KQ0KPiA+ID4gKyNkZWZpbmUgRFdfTU1DX0RNQV9CVVJTVF9TSVpF KHgpICAgICAgICAgICAgICAgICgoKHgpICYgMHg3KSA8PCAyOCkNCj4gPiA+ICsNCj4gPiA+ICsj ZGVmaW5lIERXX01NQ19DQVJEX1JEX1RIUih4KSAgICAgICAgICAgICAgICAgICAoKCh4KSAmIDB4 ZmZmKSA8PCAxNikNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19DQVJEX1JEX1RIUl9FTiAgICAgICAg ICAgICAgICAgICAoMSA8PCAwKQ0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgVUhTX0REUl9NT0RF ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDE2KQ0KPiA+ID4gKw0KPiA+ID4gKyNk ZWZpbmUgR0VOQ0xLX0RJViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcNCj4gPiA+ICsN Cj4gPiA+ICsjZGVmaW5lIERXX01NQ19HUElPX0NMS19ESVYoeCkgICAgICAgICAgICAgICAgICAo KCh4KSAmIDB4ZikgPDwgOCkNCj4gPiA+ICsjZGVmaW5lIERXX01NQ19HUElPX1VTRV9TQU1QTEVf RExZKHgpICAgICAgICAgICAoKCh4KSAmIDEpIDw8IDEzKQ0KPiA+ID4gKyNkZWZpbmUgRFdfTU1D X0dQSU9fQ0xLX0VOQUJMRSAgICAgICAgICAgICAgICAgIEJJVDE2DQo+ID4gPiArDQo+ID4gPiAr I2RlZmluZSBVSFNFWFRfU0FNUExFX1BIQVNFKHgpICAgICAgICAgICAgICAgICAgKCgoeCkgJiAw eDFmKSA8PCAxNikNCj4gPiA+ICsjZGVmaW5lIFVIU0VYVF9TQU1QTEVfRFJWUEhBU0UoeCkgICAg ICAgICAgICAgICAoKCh4KSAmIDB4MWYpIDw8IDIxKQ0KPiA+ID4gKyNkZWZpbmUgVUhTRVhUX1NB TVBMRV9ETFkoeCkgICAgICAgICAgICAgICAgICAgICgoKHgpICYgMHgxZikgPDwgMjYpDQo+ID4g PiArDQo+ID4gPiArI2RlZmluZSBEV01NQ19ETUFfQlVGX1NJWkUgICAgICAgICAgICAgICAgICAg ICAgKDUxMiAqIDgpDQo+ID4gPiArI2RlZmluZSBEV01NQ19GSUZPX1RIUkVTSE9MRCAgICAgICAg ICAgICAgICAgICAgMTYNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIERXTU1DX0lOSVRfQ0xPQ0tf RlJFUSAgICAgICAgICAgICAgICAgICA0MDAgICAgICAgICAgICAgIC8qIEtIeiAqLw0KPiA+ID4g Kw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gVGhlIHRyYW5zZmVyIG1vZGVzIHN1cHBvcnRlZCBieSBT RCBIb3N0IENvbnRyb2xsZXINCj4gPiA+ICsvLyBTaW1wbGlmaWVkIFNwZWMgMy4wIFRhYmxlIDEt Mg0KPiA+ID4gKy8vDQo+ID4gPiArdHlwZWRlZiBlbnVtIHsNCj4gPiA+ICsgIFNkTW1jTm9EYXRh LA0KPiA+ID4gKyAgU2RNbWNQaW9Nb2RlLA0KPiA+ID4gKyAgU2RNbWNTZG1hTW9kZSwNCj4gPiA+ ICsgIFNkTW1jQWRtYU1vZGUNCj4gPiA+ICt9IERXX01NQ19IQ19UUkFOU0ZFUl9NT0RFOw0KPiA+ ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gVGhlIG1heGltdW0gZGF0YSBsZW5ndGggb2YgZWFj aCBkZXNjcmlwdG9yIGxpbmUNCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgQURNQV9NQVhfREFU QV9QRVJfTElORSAgICAgMHgxMDAwMA0KPiA+ID4gKw0KPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsN Cj4gPiA+ICsgIFVJTlQzMiAgIERlczA7DQo+ID4gPiArICBVSU5UMzIgICBEZXMxOw0KPiA+ID4g KyAgVUlOVDMyICAgRGVzMjsNCj4gPiA+ICsgIFVJTlQzMiAgIERlczM7DQo+ID4gPiArfSBEV19N TUNfSENfRE1BX0RFU0NfTElORTsNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFNEX01NQ19TRE1B X0JPVU5EQVJZICAgICAgICAgIDUxMiAqIDEwMjQNCj4gPiA+ICsjZGVmaW5lIFNEX01NQ19TRE1B X1JPVU5EX1VQKHgsIG4pICAgICgoKHgpICsgbikgJiB+KG4gLSAxKSkNCj4gPiA+ICsNCj4gPiA+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiArICBVSU5UOCAgICBGaXJzdEJhcjozOyAgICAgICAg Ly8gYml0IDA6Mg0KPiA+ID4gKyAgVUlOVDggICAgUmVzZXJ2ZWQ6MTsgICAgICAgIC8vIGJpdCAz DQo+ID4gPiArICBVSU5UOCAgICBTbG90TnVtOjM7ICAgICAgICAgLy8gYml0IDQ6Ng0KPiA+ID4g KyAgVUlOVDggICAgUmVzZXJ2ZWQxOjE7ICAgICAgIC8vIGJpdCA3DQo+ID4gPiArfSBEV19NTUNf SENfU0xPVF9JTkZPOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRHVtcCB0aGUgY29u dGVudCBvZiBTRC9NTUMgaG9zdCBjb250cm9sbGVyJ3MgQ2FwYWJpbGl0eSBSZWdpc3Rlci4NCj4g PiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgICBUaGUgc2xvdCBudW1i ZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gPiBjb21tYW5kIHRvLg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgQ2FwYWJpbGl0eSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIGNhcGFi aWxpdHkgZGF0YS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRHVt cENhcGFiaWxpdHlSZWcgKA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgU2xvdCwN Cj4gPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICpDYXBhYmlsaXR5DQo+ID4gPiArICAp Ow0KPiA+ID4gKw0KPiA+ID4gKyNpZiAwDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkIFNsb3RJ bmZvIHJlZ2lzdGVyIGZyb20gU0QvTU1DIGhvc3QgY29udHJvbGxlciBwY2kgY29uZmlnIHNwYWNl Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgUGNpSW8gICAgICAgIFRoZSBQQ0kgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBGaXJzdEJhciAgICAgVGhl IGJ1ZmZlciB0byBzdG9yZSB0aGUgZmlyc3QgQkFSIHZhbHVlLg0KPiA+ID4gKyAgQHBhcmFtW291 dF0gU2xvdE51bSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIHN1cHBvcnRlZCBzbG90DQo+ IG51bWJlci4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICBUaGUg b3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgIFRo ZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRV Uw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0R3TW1jSGNHZXRTbG90SW5mbyAoDQo+ID4gPiArICBJ TiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICpQY2lJbywNCj4gPiA+ICsgICAgIE9VVCBVSU5U OCAgICAgICAgICAgICAgICAgKkZpcnN0QmFyLA0KPiA+ID4gKyAgICAgT1VUIFVJTlQ4ICAgICAg ICAgICAgICAgICAqU2xvdE51bQ0KPiA+ID4gKyAgKTsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+ICsN Cj4gPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkL1dyaXRl IHNwZWNpZmllZCBTRC9NTUMgaG9zdCBjb250cm9sbGVyIG1taW8gcmVnaXN0ZXIuDQo+ID4gPiAr DQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgUGNpSW8gICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9j b2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgQmFySW5kZXggICAgIFRoZSBC QVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBDSQ0KPiA+IENvbmZpZ3VyYXRpb24NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBh ZGRyZXNzIGZvciB0aGUgbWVtb3J5DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wZXJhdGlvbiB0byBwZXJmb3JtLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgIE9mZnNl dCAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9uLg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgICAgIFJlYWQgICAgICAgICBBIGJvb2xlYW4gdG8gaW5kaWNh dGUgaXQncyByZWFkIG9yIHdyaXRlDQo+ID4gb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgIENvdW50ICAgICAgICBUaGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0 ZXMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiAs IDQgb3IgOCBieXRlcy4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSBEYXRhICAgICAgICAgRm9y IHJlYWQgb3BlcmF0aW9ucywgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcg0KPiB0bw0KPiA+IHN0b3Jl DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHRzLiBGb3Ig d3JpdGUgb3BlcmF0aW9ucywgdGhlIHNvdXJjZSBidWZmZXINCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdG8gd3JpdGUgZGF0YSBmcm9tLiBUaGUgY2FsbGVyIGlzIHJlc3Bv bnNpYmxlIGZvcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZpbmcg b3duZXJzaGlwIG9mIHRoZSBkYXRhIGJ1ZmZlciBhbmQgZW5zdXJpbmcgaXRzDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgbm90IGxlc3MgdGhhbiBDb3VudCBieXRl cy4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSBQ Y2lJbyBvciBEYXRhIGlzIE5VTEwgb3IgdGhlDQo+IENvdW50DQo+ID4gaXMgbm90IHZhbGlkLg0K PiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHJlYWQvd3JpdGUgb3Bl cmF0aW9uIHN1Y2NlZWRzLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAg VGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY0hjUndNbWlvICgNCj4g PiA+ICsgIElOICAgICBFRklfUENJX0lPX1BST1RPQ09MICAgKlBjaUlvLA0KPiA+ID4gKyAgSU4g ICAgIFVJTlQ4ICAgICAgICAgICAgICAgICBCYXJJbmRleCwNCj4gPiA+ICsgIElOICAgICBVSU5U MzIgICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAg ICAgICAgICBSZWFkLA0KPiA+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICBDb3Vu dCwNCj4gPiA+ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgKkRhdGENCj4gPiA+ICsg ICk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWQvV3JpdGUgc3BlY2lm aWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgbW1pbyByZWdpc3Rlci4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gICAgICBEZXZJbyAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBp bnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICBPZmZzZXQgICAgICAgVGhlIG9mZnNl dCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJBUiB0byBzdGFydCB0aGUNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IG9wZXJhdGlvbi4NCj4gPiA+ICsgIEBwYXJhbVtp bl0gICAgICBSZWFkICAgICAgICAgQSBib29sZWFuIHRvIGluZGljYXRlIGl0J3MgcmVhZCBvciB3 cml0ZQ0KPiA+IG9wZXJhdGlvbi4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICBDb3VudCAgICAg ICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIDEsIDIgLCA0IG9yIDggYnl0ZXMuDQo+ ID4gPiArICBAcGFyYW1baW4sIG91dF0gRGF0YSAgICAgICAgIEZvciByZWFkIG9wZXJhdGlvbnMs IHRoZSBkZXN0aW5hdGlvbiBidWZmZXINCj4gdG8NCj4gPiBzdG9yZQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVzdWx0cy4gRm9yIHdyaXRlIG9wZXJhdGlvbnMs IHRoZSBzb3VyY2UgYnVmZmVyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRvIHdyaXRlIGRhdGEgZnJvbS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3INCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2aW5nIG93bmVyc2hpcCBvZiB0aGUg ZGF0YSBidWZmZXIgYW5kIGVuc3VyaW5nIGl0cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplIG5vdCBsZXNzIHRoYW4gQ291bnQgYnl0ZXMuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgUGNpSW8gb3IgRGF0YSBpcyBO VUxMIG9yIHRoZQ0KPiBDb3VudA0KPiA+IGlzIG5vdCB2YWxpZC4NCj4gPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSByZWFkL3dyaXRlIG9wZXJhdGlvbiBzdWNjZWVkcy4N Cj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSByZWFkL3dyaXRlIG9w ZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArRHdNbWNIY1J3TW1pbyAoDQo+ID4gPiArICBJTiAgICAgVUlO VE4gICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgIElOICAgICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICBSZWFkLA0KPiA+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBD b3VudCwNCj4gPiA+ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgKkRhdGENCj4g PiA+ICsgICk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiArI2lmZGVmIERXTU1DX1BD SQ0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRG8gT1Igb3BlcmF0aW9uIHdpdGggdGhlIHZhbHVlIG9m IHRoZSBzcGVjaWZpZWQgU0QvTU1DIGhvc3QNCj4gY29udHJvbGxlcg0KPiA+IG1taW8gcmVnaXN0 ZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgICAgIFRoZSBQ Q0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIEJhckluZGV4ICAg ICAgICAgIFRoZSBCQVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBDSQ0KPiA+IENvbmZpZ3VyYXRp b24NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBh cyB0aGUgYmFzZSBhZGRyZXNzIGZvciB0aGUgbWVtb3J5DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9wZXJhdGlvbiB0byBwZXJmb3JtLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSBPZmZzZXQgICAgICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRv IHN0YXJ0IHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkg b3BlcmF0aW9uLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAgICAgICAgICBUaGUgd2lk dGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiAsIDQgb3IgOCBieXRlcy4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gT3JEYXRhICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgdXNlZCB0 byBkbyBPUg0KPiA+IG9wZXJhdGlvbi4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaGF2aW5nIG93bmVyc2hpcCBvZg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGF0YSBidWZmZXIgYW5k IGVuc3VyaW5nIGl0cyBzaXplIG5vdCBsZXNzIHRoYW4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ291bnQgYnl0ZXMuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgUGNpSW8gb3IgT3JEYXRhIGlzIE5VTEwgb3IgdGhlDQo+ ID4gQ291bnQgaXMgbm90IHZhbGlkLg0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIE9SIG9wZXJhdGlvbiBzdWNjZWVkcy4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJz ICAgICAgICAgICAgICAgIFRoZSBPUiBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0R3TW1jSGNPck1t aW8gKA0KPiA+ID4gKyAgSU4gIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgICAqUGNpSW8sDQo+ID4g PiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgIEJhckluZGV4LA0KPiA+ID4gKyAgSU4g IFVJTlQzMiAgICAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ID4gPiArICBJTiAgVUlOVDggICAg ICAgICAgICAgICAgICAgIENvdW50LA0KPiA+ID4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAg ICAgICAqT3JEYXRhDQo+ID4gPiArICApOw0KPiA+ID4gKyNlbHNlDQo+ID4gPiArLyoqDQo+ID4g PiArICBEbyBPUiBvcGVyYXRpb24gd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBTRC9N TUMgaG9zdA0KPiBjb250cm9sbGVyDQo+ID4gbW1pbyByZWdpc3Rlci4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBp bnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQmFySW5kZXggICAgICAgICAgVGhlIEJBUiBp bmRleCBvZiB0aGUgc3RhbmRhcmQgUENJDQo+ID4gQ29uZmlndXJhdGlvbg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGFkZHJl c3MgZm9yIHRoZSBtZW1vcnkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3BlcmF0aW9uIHRvIHBlcmZvcm0uDQo+ID4gPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAg ICAgIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ID4g PiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1pbyBy ZWdpc3RlciBpbiBieXRlcy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TXVzdCBiZSAxLCAyICwgNCBvciA4IGJ5dGVzLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBPckRhdGEg ICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0YSB1c2VkIHRvIGRvIE9SDQo+ID4gb3Bl cmF0aW9uLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2FsbGVy IGlzIHJlc3BvbnNpYmxlIGZvciBoYXZpbmcgb3duZXJzaGlwIG9mDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZlciBhbmQgZW5zdXJpbmcgaXRzIHNp emUgbm90IGxlc3MgdGhhbg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD b3VudCBieXRlcy4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIFRoZSBQY2lJbyBvciBPckRhdGEgaXMgTlVMTCBvciB0aGUNCj4gPiBDb3VudCBpcyBub3Qg dmFsaWQuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgT1Igb3Bl cmF0aW9uIHN1Y2NlZWRzLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAg VGhlIE9SIG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklf U1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRHdNbWNIY09yTW1pbyAoDQo+ID4gPiArICBJ TiAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgIElOICBVSU5U MzIgICAgICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ID4gKyAgSU4gIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICBDb3VudCwNCj4gPiA+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAg Kk9yRGF0YQ0KPiA+ID4gKyAgKTsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsjaWZk ZWYgRFdNTUNfUENJDQo+ID4gPiArLyoqDQo+ID4gPiArICBEbyBBTkQgb3BlcmF0aW9uIHdpdGgg dGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgU0QvTU1DIGhvc3QNCj4gPiBjb250cm9sbGVyIG1t aW8gcmVnaXN0ZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAg ICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIEJh ckluZGV4ICAgICAgICAgIFRoZSBCQVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBDSQ0KPiA+IENv bmZpZ3VyYXRpb24NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVy IHRvIHVzZSBhcyB0aGUgYmFzZSBhZGRyZXNzIGZvciB0aGUgbWVtb3J5DQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiB0byBwZXJmb3JtLg0KPiA+ID4gKyAg QHBhcmFtW2luXSBPZmZzZXQgICAgICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0 ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtZW1vcnkgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAgICAgICAg ICBUaGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiAsIDQgb3IgOCBieXRlcy4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gQW5kRGF0YSAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRh dGEgdXNlZCB0byBkbyBBTkQNCj4gPiBvcGVyYXRpb24uDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGhhdmluZyBvd25l cnNoaXAgb2YNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRhdGEg YnVmZmVyIGFuZCBlbnN1cmluZyBpdHMgc2l6ZSBub3QgbGVzcyB0aGFuDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50IGJ5dGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIFBjaUlvIG9yIEFuZERhdGEgaXMgTlVM TCBvciB0aGUNCj4gPiBDb3VudCBpcyBub3QgdmFsaWQuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgQU5EIG9wZXJhdGlvbiBzdWNjZWVkcy4NCj4gPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSBBTkQgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ ICtEd01tY0hjQW5kTW1pbyAoDQo+ID4gPiArICBJTiAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAg ICpQY2lJbywNCj4gPiA+ICsgIElOICBVSU5UOCAgICAgICAgICAgICAgICAgICAgQmFySW5kZXgs DQo+ID4gPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIE9mZnNldCwNCj4gPiA+ICsg IElOICBVSU5UOCAgICAgICAgICAgICAgICAgICAgQ291bnQsDQo+ID4gPiArICBJTiAgVk9JRCAg ICAgICAgICAgICAgICAgICAgICpBbmREYXRhDQo+ID4gPiArICApOw0KPiA+ID4gKyNlbHNlDQo+ ID4gPiArLyoqDQo+ID4gPiArICBEbyBBTkQgb3BlcmF0aW9uIHdpdGggdGhlIHZhbHVlIG9mIHRo ZSBzcGVjaWZpZWQgU0QvTU1DIGhvc3QNCj4gPiBjb250cm9sbGVyIG1taW8gcmVnaXN0ZXIuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgICAgIFRoZSBERVZJQ0Ug SU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAg ICAgIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ID4g PiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1pbyBy ZWdpc3RlciBpbiBieXRlcy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TXVzdCBiZSAxLCAyICwgNCBvciA4IGJ5dGVzLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBBbmREYXRh ICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0YSB1c2VkIHRvIGRvIEFORA0KPiA+IG9w ZXJhdGlvbi4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNhbGxl ciBpcyByZXNwb25zaWJsZSBmb3IgaGF2aW5nIG93bmVyc2hpcCBvZg0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGF0YSBidWZmZXIgYW5kIGVuc3VyaW5nIGl0cyBz aXplIG5vdCBsZXNzIHRoYW4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q291bnQgYnl0ZXMuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBUaGUgUGNpSW8gb3IgQW5kRGF0YSBpcyBOVUxMIG9yIHRoZQ0KPiA+IENvdW50IGlzIG5v dCB2YWxpZC4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBBTkQg b3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAg ICAgVGhlIEFORCBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiAr RUZJX1NUQVRVUw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0R3TW1jSGNBbmRNbWlvICgNCj4gPiA+ ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgIElOICBV SU5UMzIgICAgICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ID4gKyAgSU4gIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICBDb3VudCwNCj4gPiA+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAg ICAgKkFuZERhdGENCj4gPiA+ICsgICk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiAr I2lmZGVmIERXTU1DX1BDSQ0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgV2FpdCBmb3IgdGhlIHZhbHVl IG9mIHRoZSBzcGVjaWZpZWQgTU1JTyByZWdpc3RlciBzZXQgdG8gdGhlIHRlc3QgdmFsdWUuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAgIFRoZSBQQ0kgSU8gcHJv dG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dICBCYXJJbmRleCAgICAgIFRoZSBC QVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBDSQ0KPiA+IENvbmZpZ3VyYXRpb24NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBhZGRy ZXNzIGZvciB0aGUgbWVtb3J5DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w ZXJhdGlvbiB0byBwZXJmb3JtLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgT2Zmc2V0ICAgICAgICBU aGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgQ291bnQgICAgICAgICBUaGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4g Ynl0ZXMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiwg NCBvciA4IGJ5dGVzLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgTWFza1ZhbHVlICAgICBUaGUgbWFz ayB2YWx1ZSBvZiBtZW1vcnkuDQo+ID4gPiArICBAcGFyYW1baW5dICBUZXN0VmFsdWUgICAgIFRo ZSB0ZXN0IHZhbHVlIG9mIG1lbW9yeS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFRpbWVvdXQgICAg ICAgVGhlIHRpbWUgb3V0IHZhbHVlIGZvciB3YWl0IG1lbW9yeSBzZXQsIHVzZXMNCj4gMQ0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCBhcyBhIHVuaXQuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgIFRoZSBNTUlPIHJlZ2lz dGVyIGhhc24ndCBleHBlY3RlZCB2YWx1ZSBpbg0KPiA+IHRpbWVvdXQNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSBNTUlPIHJlZ2lzdGVyIGhhcyBleHBlY3RlZCB2YWx1ZS4NCj4gPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIE1NSU8gb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4g Kw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtE d01tY0hjV2FpdE1taW9TZXQgKA0KPiA+ID4gKyAgSU4gIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAg ICAgKlBjaUlvLA0KPiA+ID4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgQmFySW5k ZXgsDQo+ID4gPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ID4g PiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPiA+ICsgIElOICBV SU5UNjQgICAgICAgICAgICAgICAgICAgIE1hc2tWYWx1ZSwNCj4gPiA+ICsgIElOICBVSU5UNjQg ICAgICAgICAgICAgICAgICAgIFRlc3RWYWx1ZSwNCj4gPiA+ICsgIElOICBVSU5UNjQgICAgICAg ICAgICAgICAgICAgIFRpbWVvdXQNCj4gPiA+ICsgICk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFdhaXQgZm9yIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIE1NSU8gcmVn aXN0ZXIgc2V0IHRvIHRoZSB0ZXN0IHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgRGV2SW8gICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgT2Zmc2V0ICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0 ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt ZW1vcnkgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ291bnQgICAgICAgICBUaGUg d2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiwgNCBvciA4IGJ5dGVzLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgTWFza1ZhbHVlICAgICBUaGUgbWFzayB2YWx1ZSBvZiBtZW1vcnkuDQo+ID4gPiAr ICBAcGFyYW1baW5dICBUZXN0VmFsdWUgICAgIFRoZSB0ZXN0IHZhbHVlIG9mIG1lbW9yeS4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gIFRpbWVvdXQgICAgICAgVGhlIHRpbWUgb3V0IHZhbHVlIGZvciB3 YWl0IG1lbW9yeSBzZXQsIHVzZXMNCj4gMQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtaWNyb3NlY29uZCBhcyBhIHVuaXQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVG SV9USU1FT1VUICAgICAgIFRoZSBNTUlPIHJlZ2lzdGVyIGhhc24ndCBleHBlY3RlZCB2YWx1ZSBp bg0KPiA+IHRpbWVvdXQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uu DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBNTUlPIHJlZ2lzdGVyIGhh cyBleHBlY3RlZCB2YWx1ZS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhl IE1NSU8gb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9T VEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY0hjV2FpdE1taW9TZXQgKA0KPiA+ID4g KyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ID4gKyAgSU4gIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ID4gKyAgSU4gIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgQ291bnQsDQo+ID4gPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICBNYXNrVmFsdWUsDQo+ID4gPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBU ZXN0VmFsdWUsDQo+ID4gPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBUaW1lb3V0 DQo+ID4gPiArICApOw0KPiA+ID4gKyNlbmRpZg0KPiA+ID4gKw0KPiA+ID4gKyNpZmRlZiBEV01N Q19QQ0kNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNvZnR3YXJlIHJlc2V0IHRoZSBzcGVjaWZpZWQg U0QvTU1DIGhvc3QgY29udHJvbGxlci4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUGNp SW8gICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNl bmQgdGhlDQo+ID4gY29tbWFuZCB0by4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgVGhlIHNvZnR3YXJlIHJlc2V0IGV4ZWN1dGVzIHN1Y2Nlc3NmdWxseS4NCj4g PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHNvZnR3YXJlIHJlc2V0IGZhaWxz Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0hj UmVzZXQgKA0KPiA+ID4gK2ZhcmsNCj4gPiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAg KlBjaUlvLA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ID4g KyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ID4gPiArICApOw0KPiA+ ID4gKyNlbHNlDQo+ID4gPiArLyoqDQo+ID4gPiArICBTb2Z0d2FyZSByZXNldCB0aGUgc3BlY2lm aWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d IERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiAr DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBzb2Z0d2FyZSByZXNldCBl eGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAg IFRoZSBzb2Z0d2FyZSByZXNldCBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtF RklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY1Jlc2V0ICgNCj4gPiA+ICsgIElOIFVJTlROICAgICAg ICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAg ICBDYXBhYmlsaXR5DQo+ID4gPiArICApOw0KPiA+ID4gKyNlbmRpZg0KPiA+ID4gKw0KPiA+ID4g KyNpZmRlZiBEV01NQ19QQ0kNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNldCBhbGwgaW50ZXJydXB0 IHN0YXR1cyBiaXRzIGluIE5vcm1hbCBhbmQgRXJyb3IgSW50ZXJydXB0IFN0YXR1cyBFbmFibGUN Cj4gPiA+ICsgIHJlZ2lzdGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAg ICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0 aGUNCj4gPiBjb21tYW5kIHRvLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICBUaGUgb3BlcmF0aW9uIGV4ZWN1dGVzIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4g PiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY0VuYWJsZUludGVycnVw dCAoDQo+ID4gPiArICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAgICpQY2lJbywNCj4gPiA+ICsg IElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsjZWxz ZQ0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IGFsbCBpbnRlcnJ1cHQgc3RhdHVzIGJpdHMgaW4g Tm9ybWFsIGFuZCBFcnJvciBJbnRlcnJ1cHQgU3RhdHVzIEVuYWJsZQ0KPiA+ID4gKyAgcmVnaXN0 ZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJ Q0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAg ICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiA+IGNvbW1h bmQgdG8uDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBv cGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0hjRW5hYmxlSW50ZXJydXB0ICgNCj4gPiA+ICsg IElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0KPiA+ID4gKyAgKTsNCj4gPiA+ ICsjZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gPiArLyoqDQo+ ID4gPiArICBHZXQgdGhlIGNhcGFiaWxpdHkgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgc2xvdC4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFBjaUlvICAgICAgICAgICBUaGUgUENJIElP IHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAg IFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiA+IGNvbW1hbmQg dG8uDQo+ID4gPiArICBAcGFyYW1bb3V0XSBDYXBhYmlsaXR5ICAgICAgVGhlIGJ1ZmZlciB0byBz dG9yZSB0aGUgY2FwYWJpbGl0eSBkYXRhLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgIFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNHZXRD YXBhYmlsaXR5ICgNCj4gPiA+ICsgIElOICAgICBFRklfUENJX0lPX1BST1RPQ09MICAqUGNpSW8s DQo+ID4gPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICBTbG90LA0KPiA+ID4gKyAgICAgT1VUIERX X01NQ19IQ19TTE9UX0NBUCAgICpDYXBhYmlsaXR5DQo+ID4gPiArICApOw0KPiA+ID4gKyNlbHNl DQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQgdGhlIGNhcGFiaWxpdHkgZGF0YSBmcm9tIHRoZSBz cGVjaWZpZWQgc2xvdC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIERldklvICAgICAg ICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgU2xvdCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5k IHRoZQ0KPiA+IGNvbW1hbmQgdG8uDQo+ID4gPiArICBAcGFyYW1bb3V0XSBDYXBhYmlsaXR5ICAg ICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgY2FwYWJpbGl0eSBkYXRhLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgIFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMg c3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgIFRoZSBv cGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0K PiA+ID4gK0R3TW1jSGNHZXRDYXBhYmlsaXR5ICgNCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAg ICAgICBDb250cm9sbGVyLA0KPiA+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAg IFNsb3QsDQo+ID4gPiArICAgICBPVVQgRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAgKkNhcGFiaWxp dHkNCj4gPiA+ICsgICk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiArI2lmIDANCj4g PiA+ICsvKioNCj4gPiA+ICsgIEdldCB0aGUgbWF4aW11bSBjdXJyZW50IGNhcGFiaWxpdHkgZGF0 YSBmcm9tIHRoZSBzcGVjaWZpZWQgc2xvdC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0g IFBjaUlvICAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2Fy ZCB0byBzZW5kIHRoZQ0KPiA+IGNvbW1hbmQgdG8uDQo+ID4gPiArICBAcGFyYW1bb3V0XSBNYXhD dXJyZW50ICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgbWF4aW11bSBjdXJyZW50DQo+ID4g Y2FwYWJpbGl0eSBkYXRhLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgIFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNHZXRNYXhDdXJyZW50 ICgNCj4gPiA+ICsgIElOICAgICBFRklfUENJX0lPX1BST1RPQ09MICAqUGNpSW8sDQo+ID4gPiAr ICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgU2xvdCwNCj4gPiA+ICsgICAgIE9VVCBVSU5U NjQgICAgICAgICAgICAgICAqTWF4Q3VycmVudA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsjZW5kaWYN Cj4gPiA+ICsNCj4gPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gPiArLyoqDQo+ID4gPiArICBE ZXRlY3Qgd2hldGhlciB0aGVyZSBpcyBhIFNEL01NQyBjYXJkIGF0dGFjaGVkIGF0IHRoZSBzcGVj aWZpZWQNCj4gPiBTRC9NTUMgaG9zdCBjb250cm9sbGVyDQo+ID4gPiArICBzbG90Lg0KPiA+ID4g Kw0KPiA+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAz LjAgU2VjdGlvbiAzLjEgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d ICBQY2lJbyAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBA cGFyYW1baW5dICBTbG90ICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0 byBzZW5kIHRoZQ0KPiA+IGNvbW1hbmQgdG8uDQo+ID4gPiArICBAcGFyYW1bb3V0XSBNZWRpYVBy ZXNlbnQgIFRoZSBwb2ludGVyIHRvIHRoZSBtZWRpYSBwcmVzZW50DQo+IGJvb2xlYW4NCj4gPiB2 YWx1ZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlcmUg aXMgbm8gbWVkaWEgY2hhbmdlIGhhcHBlbmVkLg0KPiA+ID4gKyAgQHJldHZhbCBFRklfTUVESUFf Q0hBTkdFRCBUaGVyZSBpcyBtZWRpYSBjaGFuZ2UgaGFwcGVuZWQuDQo+ID4gPiArICBAcmV0dmFs IE90aGVycyAgICAgICAgICAgIFRoZSBkZXRlY3Rpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNDYXJkRGV0ZWN0ICgNCj4gPiA+ ICsgIElOICAgICBFRklfUENJX0lPX1BST1RPQ09MICAqUGNpSW8sDQo+ID4gPiArICBJTiAgICAg RUZJX0hBTkRMRSAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ICsgIElOICAgICBVSU5UOCAg ICAgICAgICAgICAgICBTbG90LA0KPiA+ID4gKyAgICAgT1VUIEJPT0xFQU4gICAgICAgICAgICAg ICpNZWRpYVByZXNlbnQNCj4gPiA+ICsgICk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsvKioNCj4g PiA+ICsgIERldGVjdCB3aGV0aGVyIHRoZXJlIGlzIGEgU0QvTU1DIGNhcmQgYXR0YWNoZWQgYXQg dGhlIHNwZWNpZmllZA0KPiA+IFNEL01NQyBob3N0IGNvbnRyb2xsZXINCj4gPiA+ICsgIHNsb3Qu DQo+ID4gPiArDQo+ID4gPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmll ZCBzcGVjIDMuMCBTZWN0aW9uIDMuMSBmb3IgZGV0YWlscy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBw YXJhbVtpbl0gIERldklvICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRo ZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+ID4gY29tbWFuZCB0by4NCj4gPiA+ICsgIEBwYXJhbVtv dXRdIE1lZGlhUHJlc2VudCAgVGhlIHBvaW50ZXIgdG8gdGhlIG1lZGlhIHByZXNlbnQNCj4gYm9v bGVhbg0KPiA+IHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGVyZSBpcyBubyBtZWRpYSBjaGFuZ2UgaGFwcGVuZWQuDQo+ID4gPiArICBAcmV0dmFs IEVGSV9NRURJQV9DSEFOR0VEIFRoZXJlIGlzIG1lZGlhIGNoYW5nZSBoYXBwZW5lZC4NCj4gPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGRldGVjdGlvbiBmYWlscy4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY0NhcmREZXRl Y3QgKA0KPiA+ID4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ ID4gPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ID4gKyAgICAgT1VU IEJPT0xFQU4gICAgICAgICAgICAgICAgICpNZWRpYVByZXNlbnQNCj4gPiA+ICsgICk7DQo+ID4g PiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ID4gKy8qKg0K PiA+ID4gKyAgU3RvcCBTRC9NTUMgY2FyZCBjbG9jay4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVy IHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy4yLjIg Zm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAg IFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFNsb3Qg ICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiA+ IGNvbW1hbmQgdG8uDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg IFN1Y2NlZWQgdG8gc3RvcCBTRC9NTUMgY2xvY2suDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIEZhaWwgdG8gc3RvcCBTRC9NTUMgY2xvY2suDQo+ID4gPiArDQo+ID4gPiArKiov DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNTdG9wQ2xvY2sgKA0KPiA+ID4gKyAg SU4gRUZJX1BDSV9JT19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gPiArICBJTiBVSU5UOCAgICAg ICAgICAgICAgICAgIFNsb3QNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBTRC9NTUMgY2FyZCBjbG9jayBzdXBwbHkuDQo+ID4gPiArDQo+ID4gPiArICBSZWZlciB0 byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuMi4xIGZv ciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBU aGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAg ICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gPiBj b21tYW5kIHRvLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBDbG9ja0ZyZXEgICAgICBUaGUgbWF4IGNs b2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQuIFRoZSB1bml0IGlzDQo+ID4gS0h6Lg0KPiA+ID4gKyAg QHBhcmFtW2luXSBDYXBhYmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGNsb2NrIGlzIHN1 cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg VGhlIGNsb2NrIGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY0Nsb2NrU3VwcGx5ICgNCj4gPiA+ ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ID4gKyAgSU4gVUlOVDgg ICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ID4gKyAgSU4gVUlOVDY0ICAgICAgICAgICAgICAg ICBDbG9ja0ZyZXEsDQo+ID4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgIENhcGFiaWxp dHkNCj4gPiA+ICsgICk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFN0b3Ag U0QvTU1DIGNhcmQgY2xvY2suDQo+ID4gPiArDQo+ID4gPiArICBSZWZlciB0byBTRCBIb3N0IENv bnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuMi4yIGZvciBkZXRhaWxzLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElP IHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICBTdWNjZWVkIHRvIHN0b3AgU0QvTU1DIGNsb2NrLg0KPiA+ID4gKyAgQHJldHZhbCBP dGhlcnMgICAgICAgICAgICBGYWlsIHRvIHN0b3AgU0QvTU1DIGNsb2NrLg0KPiA+ID4gKw0KPiA+ ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0hjU3RvcENsb2NrICgNCj4g PiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0KPiA+ID4gKyAgKTsN Cj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNEL01NQyBjYXJkIGNsb2NrIHN1cHBseS4N Cj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVk IHNwZWMgMy4wIFNlY3Rpb24gMy4yLjEgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBA cGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2Uu DQo+ID4gPiArICBAcGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVl bmN5IHRvIGJlIHNldC4gVGhlIHVuaXQgaXMNCj4gPiBLSHouDQo+ID4gPiArICBAcGFyYW1baW5d IENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3Vj Y2Vzc2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgY2xvY2sg aXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0hjQ2xvY2tTdXBwbHkgKA0KPiA+ID4gKyAgSU4gIFVJ TlROICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ID4gKyAgSU4gVUlOVDY0ICAgICAg ICAgICAgICAgICBDbG9ja0ZyZXEsDQo+ID4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAg IENhcGFiaWxpdHkNCj4gPiA+ICsgICk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiAr I2lmIDANCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNEL01NQyBidXMgcG93ZXIgY29udHJvbC4NCj4g PiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNw ZWMgMy4wIFNlY3Rpb24gMy4zIGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFt W2luXSBQY2lJbyAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4g KyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNh cmQgdG8gc2VuZCB0aGUNCj4gPiBjb21tYW5kIHRvLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBQb3dl ckN0cmwgICAgICBUaGUgdmFsdWUgc2V0dGluZyB0byB0aGUgcG93ZXIgY29udHJvbA0KPiByZWdp c3Rlci4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICAgICAgVGhlcmUg aXMgYSBTRC9NTUMgY2FyZCBhdHRhY2hlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAg ICAgICAgVGhlcmUgaXMgbm8gYSBTRC9NTUMgY2FyZCBhdHRhY2hlZC4NCj4gPiA+ICsNCj4gPiA+ ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY1Bvd2VyQ29udHJvbCAoDQo+ ID4gPiArICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAgICpQY2lJbywNCj4gPiA+ICsgIElOIFVJ TlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgUG93ZXJDdHJsDQo+ID4gPiArICApOw0KPiA+ID4gKyNlbmRpZg0KPiA+ID4gKw0KPiA+ ID4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNldCB0aGUgU0QvTU1D IGJ1cyB3aWR0aC4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxl ciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy40IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGlu c3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1i ZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gPiBjb21tYW5kIHRvLg0KPiA+ID4gKyAg QHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRoIHVzZWQgYnkgdGhlIFNEL01N QyBkZXZpY2UsIGl0DQo+ID4gbXVzdCBiZSAxLCA0IG9yIDguDQo+ID4gPiArDQo+ID4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBidXMgd2lkdGggaXMgc2V0IHN1Y2Nlc3NmdWxs eS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGJ1cyB3aWR0aCBpc24n dCBzZXQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtEd01tY0hjU2V0QnVzV2lkdGggKA0KPiA+ID4gKyAgSU4gRUZJX1BDSV9JT19Q Uk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNs b3QsDQo+ID4gPiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ID4gKyAg SU4gVUlOVDE2ICAgICAgICAgICAgICAgICBCdXNXaWR0aA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsj ZWxzZQ0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IHRoZSBTRC9NTUMgYnVzIHdpZHRoLg0KPiA+ ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3Bl YyAzLjAgU2VjdGlvbiAzLjQgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4g PiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdXNlZCBieSB0aGUg U0QvTU1DIGRldmljZSwgaXQNCj4gPiBtdXN0IGJlIDEsIDQgb3IgOC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGJ1cyB3aWR0aCBpcyBzZXQgc3VjY2Vz c2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgYnVzIHdpZHRo IGlzbid0IHNldCBzdWNjZXNzZnVsbHkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJ X1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNTZXRCdXNXaWR0aCAoDQo+ID4gPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gPiArICBJTiBCT09MRUFOICAgICAgICAg ICAgICAgIElzRGRyLA0KPiA+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICBCdXNXaWR0 aA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsjaWZkZWYgRFdN TUNfUENJDQo+ID4gPiArLyoqDQo+ID4gPiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBsb3dl c3QgY2xvY2sgZnJlcXVlbmN5IGF0IGluaXRpYWxpemF0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0K PiA+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhl IFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gPiBjb21tYW5kIHRvLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSBDYXBhYmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGNsb2NrIGlzIHN1cHBsaWVkIHN1 Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2Nr IGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY0luaXRDbG9ja0ZyZXEgKA0KPiA+ID4gKyAgSU4g RUZJX1BDSV9JT19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gPiArICBJTiBVSU5UOCAgICAgICAg ICAgICAgICAgIFNsb3QsDQo+ID4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgIENhcGFi aWxpdHkNCj4gPiA+ICsgICk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFN1 cHBseSBTRC9NTUMgY2FyZCB3aXRoIGxvd2VzdCBjbG9jayBmcmVxdWVuY3kgYXQgaW5pdGlhbGl6 YXRpb24uDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBE RVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIENhcGFiaWxp dHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5 Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgY2xvY2sgaXNuJ3Qgc3Vw cGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtEd01tY0hjSW5pdENsb2NrRnJlcSAoDQo+ID4gPiArICBJTiBVSU5UTiAgICAg ICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAg IENhcGFiaWxpdHkNCj4gPiA+ICsgICk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiAr I2lmZGVmIERXTU1DX1BDSQ0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU3VwcGx5IFNEL01NQyBjYXJk IHdpdGggbWF4aW11bSB2b2x0YWdlIGF0IGluaXRpYWxpemF0aW9uLg0KPiA+ID4gKw0KPiA+ID4g KyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlv biAzLjMgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBjaUlvICAg ICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5d IFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRo ZQ0KPiA+IGNvbW1hbmQgdG8uDQo+ID4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRo ZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgdm9sdGFnZSBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4g PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSB2b2x0YWdlIGlzbid0IHN1cHBsaWVk IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ ID4gPiArRHdNbWNIY0luaXRQb3dlclZvbHRhZ2UgKA0KPiA+ID4gKyAgSU4gRUZJX1BDSV9JT19Q Uk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNs b3QsDQo+ID4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgIENhcGFiaWxpdHkNCj4gPiA+ ICsgICk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFN1cHBseSBTRC9NTUMg Y2FyZCB3aXRoIG1heGltdW0gdm9sdGFnZSBhdCBpbml0aWFsaXphdGlvbi4NCj4gPiA+ICsNCj4g PiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNl Y3Rpb24gMy4zIGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBEZXZJ byAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBh cmFtW2luXSBDYXBhYmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHZvbHRhZ2UgaXMgc3Vw cGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBU aGUgdm9sdGFnZSBpc24ndCBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNJbml0UG93ZXJWb2x0YWdlICgN Cj4gPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgIElO IERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiA+ID4gKyAgKTsNCj4gPiA+ICsj ZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gPiArLyoqDQo+ID4g PiArICBJbml0aWFsaXplIHRoZSBUaW1lb3V0IENvbnRyb2wgcmVnaXN0ZXIgd2l0aCBtb3N0IGNv bnNlcnZhdGl2ZSB2YWx1ZSBhdA0KPiA+IGluaXRpYWxpemF0aW9uLg0KPiA+ID4gKw0KPiA+ID4g KyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlv biAyLjIuMTUgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBjaUlv ICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1b aW5dIFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5k IHRoZQ0KPiA+IGNvbW1hbmQgdG8uDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgIFRoZSB0aW1lb3V0IGNvbnRyb2wgcmVnaXN0ZXIgaXMgY29uZmlndXJlZA0KPiA+ IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHRp bWVvdXQgY29udHJvbCByZWdpc3RlciBpc24ndCBjb25maWd1cmVkDQo+ID4gc3VjY2Vzc2Z1bGx5 Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0hj SW5pdFRpbWVvdXRDdHJsICgNCj4gPiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBj aUlvLA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBTbG90DQo+ID4gPiArICAp Ow0KPiA+ID4gKyNlbHNlDQo+ID4gPiArLyoqDQo+ID4gPiArICBJbml0aWFsaXplIHRoZSBUaW1l b3V0IENvbnRyb2wgcmVnaXN0ZXIgd2l0aCBtb3N0IGNvbnNlcnZhdGl2ZSB2YWx1ZSBhdA0KPiA+ IGluaXRpYWxpemF0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250 cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAyLjIuMTUgZm9yIGRldGFpbHMuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRo ZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiA+IGNvbW1hbmQgdG8u DQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSB0aW1lb3V0 IGNvbnRyb2wgcmVnaXN0ZXIgaXMgY29uZmlndXJlZA0KPiA+IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHRpbWVvdXQgY29udHJvbCByZWdpc3Rl ciBpc24ndCBjb25maWd1cmVkDQo+ID4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0hjSW5pdFRpbWVvdXRDdHJsICgNCj4g PiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0KPiA+ID4gKyAgKTsN Cj4gPiA+ICsjZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gPiAr LyoqDQo+ID4gPiArICBJbml0aWFsIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgd2l0aCBsb3dlc3Qg Y2xvY2sgZnJlcXVlbmN5LCBtYXggcG93ZXINCj4gPiBhbmQgbWF4IHRpbWVvdXQgdmFsdWUNCj4g PiA+ICsgIGF0IGluaXRpYWxpemF0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQ Y2lJbyAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBh cmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8g c2VuZCB0aGUNCj4gPiBjb21tYW5kIHRvLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBDYXBhYmlsaXR5 ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpcyBpbml0aWFsaXplZCBz dWNjZXNzZnVsbHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBob3N0 IGNvbnRyb2xsZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKw0KPiA+ ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0hjSW5pdEhvc3QgKA0KPiA+ ID4gKyAgSU4gRUZJX1BDSV9JT19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gPiArICBJTiBVSU5U OCAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAg ICAgIENhcGFiaWxpdHkNCj4gPiA+ICsgICk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsvKioNCj4g PiA+ICsgIEluaXRpYWwgU0QvTU1DIGhvc3QgY29udHJvbGxlciB3aXRoIGxvd2VzdCBjbG9jayBm cmVxdWVuY3ksIG1heCBwb3dlcg0KPiA+IGFuZA0KPiA+ID4gKyAgbWF4IHRpbWVvdXQgdmFsdWUg YXQgaW5pdGlhbGl6YXRpb24uDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAg ICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1b aW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgaG9zdCBjb250cm9sbGVyIGlz IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAg ICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpc24ndCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHku DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNJ bml0SG9zdCAoDQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgIERldkJhc2Us DQo+ID4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgICAgIENhcGFiaWxpdHkNCj4gPiA+ ICsgICk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiArI2VuZGlmIC8qIF9EV19NTUNf SENJX0hfICovDQo+ID4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvSW5jbHVkZS9Qcm90b2Nv bC9QbGF0Zm9ybUR3TW1jLmgNCj4gPiBiL0VtYmVkZGVkUGtnL0luY2x1ZGUvUHJvdG9jb2wvUGxh dGZvcm1Ed01tYy5oDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAw MDAwMDAwMDAwLi5hY2JjM2UxNTNkYWMNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBi L0VtYmVkZGVkUGtnL0luY2x1ZGUvUHJvdG9jb2wvUGxhdGZvcm1Ed01tYy5oDQo+ID4gPiBAQCAt MCwwICsxLDc5IEBADQo+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiArDQo+ID4gPiArICBDb3B5cmln aHQgKGMpIDIwMTgsIExpbmFyby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+ICsNCj4gPiA+ ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlDQo+ID4gYXZhaWxhYmxlDQo+ID4gPiArICB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzDQo+ID4gdGhp cw0KPiA+ID4gKyAgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBt YXkgYmUgZm91bmQgYXQNCj4gPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCj4gPiA+ICsNCj4gPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJV VEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ID4gQkFTSVMsDQo+ID4g PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4g PiArDQo+ID4gPiArI2lmbmRlZiBfX1BMQVRGT1JNX0RXX01NQ19IX18NCj4gPiA+ICsjZGVmaW5l IF9fUExBVEZPUk1fRFdfTU1DX0hfXw0KPiA+ID4gKw0KPiA+ID4gK3R5cGVkZWYgZW51bSB7DQo+ ID4gPiArICBSZW1vdmFibGVTbG90LA0KPiA+ID4gKyAgRW1iZWRkZWRTbG90LA0KPiA+ID4gKyAg U2hhcmVkQnVzU2xvdCwNCj4gPiA+ICsgIFVua25vd25TbG90DQo+ID4gPiArfSBFRklfU0RfTU1D X1NMT1RfVFlQRTsNCj4gPiA+ICsNCj4gPiA+ICt0eXBlZGVmIGVudW0gew0KPiA+ID4gKyAgVW5r bm93bkNhcmRUeXBlLA0KPiA+ID4gKyAgU2RDYXJkVHlwZSwNCj4gPiA+ICsgIFNkaW9DYXJkVHlw ZSwNCj4gPiA+ICsgIE1tY0NhcmRUeXBlLA0KPiA+ID4gKyAgRW1tY0NhcmRUeXBlDQo+ID4gPiAr fSBTRF9NTUNfQ0FSRF9UWVBFOw0KPiA+ID4gKw0KPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4g PiA+ICsgIFVJTlQzMiAgICAgICAgRGVmYXVsdFNwZWVkOjE7ICAgIC8vIGJpdCAwDQo+ID4gPiAr ICBVSU5UMzIgICAgICAgIEhpZ2hTcGVlZDoxOyAgICAgICAvLyBiaXQgMQ0KPiA+ID4gKyAgVUlO VDMyICAgICAgICBTZHIxMjoxOyAgICAgICAgICAgLy8gYml0IDINCj4gPiA+ICsgIFVJTlQzMiAg ICAgICAgU2RyMjU6MTsgICAgICAgICAgIC8vIGJpdCAzDQo+ID4gPiArICBVSU5UMzIgICAgICAg IFNkcjUwOjE7ICAgICAgICAgICAvLyBiaXQgNA0KPiA+ID4gKyAgVUlOVDMyICAgICAgICBTZHIx MDQ6MTsgICAgICAgICAgLy8gYml0IDUNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgRGRyNTA6MTsg ICAgICAgICAgIC8vIGJpdCA2DQo+ID4gPiArICBVSU5UMzIgICAgICAgIFN5c0J1czY0OjE7ICAg ICAgICAvLyBiaXQgNw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICBCdXNXaWR0aDo0OyAgICAgICAg Ly8gYml0IDExOjgNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgU2xvdFR5cGU6MjsgICAgICAgIC8v IGJpdCAxMzoxMg0KPiA+ID4gKyAgVUlOVDMyICAgICAgICBDYXJkVHlwZTozOyAgICAgICAgLy8g Yml0IDE2OjE0DQo+ID4gPiArICBVSU5UMzIgICAgICAgIFZvbHRhZ2UxODoxOyAgICAgICAvLyBi aXQgMTcNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgVm9sdGFnZTMwOjE7ICAgICAgIC8vIGJpdCAx OA0KPiA+ID4gKyAgVUlOVDMyICAgICAgICBWb2x0YWdlMzM6MTsgICAgICAgLy8gYml0IDE5DQo+ ID4gPiArICBVSU5UMzIgICAgICAgIEJhc2VDbGtGcmVxOw0KPiA+ID4gKyAgRUZJX0hBTkRMRSAg ICBDb250cm9sbGVyOw0KPiA+ID4gK30gRFdfTU1DX0hDX1NMT1RfQ0FQOw0KPiA+ID4gKw0KPiA+ ID4gKy8vDQo+ID4gPiArLy8gUHJvdG9jb2wgaW50ZXJmYWNlIHN0cnVjdHVyZQ0KPiA+ID4gKy8v DQo+ID4gPiArdHlwZWRlZiBzdHJ1Y3QgX1BMQVRGT1JNX0RXX01NQ19QUk9UT0NPTA0KPiA+IFBM QVRGT1JNX0RXX01NQ19QUk9UT0NPTDsNCj4gPiA+ICsNCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiAr RUZJX1NUQVRVUw0KPiA+ID4gKyhFRklBUEkgKlBMQVRGT1JNX0RXX01NQ19HRVRfQ0FQQUJJTElU WSkgKA0KPiA+ID4gKyAgSU4gICAgIEVGSV9IQU5ETEUgICAgICAgICAgICAgQ29udHJvbGxlciwN Cj4gPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gPiArICAg ICBPVVQgRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAqQ2FwYWJpbGl0eQ0KPiA+ID4gKyAgKTsNCj4g PiA+ICsNCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gKyhFRklBUEkgKlBM QVRGT1JNX0RXX01NQ19DQVJEX0RFVEVDVCkgKA0KPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgIFNsb3QNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArc3RydWN0IF9QTEFURk9S TV9EV19NTUNfUFJPVE9DT0wgew0KPiA+ID4gKyAgUExBVEZPUk1fRFdfTU1DX0dFVF9DQVBBQklM SVRZICAgICAgICAgICAgICAgR2V0Q2FwYWJpbGl0eTsNCj4gPiA+ICsgIFBMQVRGT1JNX0RXX01N Q19DQVJEX0RFVEVDVCAgICAgICAgICAgICAgICAgIENhcmREZXRlY3Q7DQo+ID4gPiArfTsNCj4g PiA+ICsNCj4gPiA+ICtleHRlcm4gRUZJX0dVSUQgZ1BsYXRmb3JtRHdNbWNQcm90b2NvbEd1aWQ7 DQo+ID4gPiArDQo+ID4gPiArI2VuZGlmIC8qIF9fUExBVEZPUk1fRFdfTU1DX0hfXyAqLw0KPiA+ ID4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Db21wb25lbnRO YW1lLmMNCj4gPiBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Db21wb25lbnROYW1l LmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LjFlZGFkZTY5ZDA5MQ0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvRW1iZWRkZWRQ a2cvRHJpdmVycy9Ed01tY0hjRHhlL0NvbXBvbmVudE5hbWUuYw0KPiA+ID4gQEAgLTAsMCArMSwy MTQgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIFVFRkkgQ29tcG9uZW50IE5hbWUoMikg cHJvdG9jb2wgaW1wbGVtZW50YXRpb24gZm9yIERlc2lnbndhcmUNCj4gPiBTRC9NTUMgaG9zdA0K PiA+ID4gKyAgY29udHJvbGxlciBkcml2ZXIuDQo+ID4gPiArDQo+ID4gPiArICBDb3B5cmlnaHQg KGMpIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g PiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gPiArDQo+ID4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiA+IGF2YWlsYWJsZQ0KPiA+ID4g KyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGlj aCBhY2NvbXBhbmllcw0KPiA+IHRoaXMNCj4gPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gPiArICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPiArDQo+ID4gPiArICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlICJEd01tY0hjRHhlLmgi DQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBFRkkgQ29tcG9uZW50IE5hbWUgUHJvdG9j b2wNCj4gPiA+ICsvLw0KPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEDQo+ID4g RUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MIGdEd01tY0hjQ29tcG9uZW50TmFtZSA9IHsNCj4g PiA+ICsgIER3TW1jSGNDb21wb25lbnROYW1lR2V0RHJpdmVyTmFtZSwNCj4gPiA+ICsgIER3TW1j SGNDb21wb25lbnROYW1lR2V0Q29udHJvbGxlck5hbWUsDQo+ID4gPiArICAiZW5nIg0KPiA+ID4g K307DQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBFRkkgQ29tcG9uZW50IE5hbWUgMiBQ cm90b2NvbA0KPiA+ID4gKy8vDQo+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQN Cj4gPiBFRklfQ09NUE9ORU5UX05BTUUyX1BST1RPQ09MIGdEd01tY0hjQ29tcG9uZW50TmFtZTIg PSB7DQo+ID4gPiArICAoRUZJX0NPTVBPTkVOVF9OQU1FMl9HRVRfRFJJVkVSX05BTUUpDQo+ID4g RHdNbWNIY0NvbXBvbmVudE5hbWVHZXREcml2ZXJOYW1lLA0KPiA+ID4gKyAgKEVGSV9DT01QT05F TlRfTkFNRTJfR0VUX0NPTlRST0xMRVJfTkFNRSkNCj4gPiBEd01tY0hjQ29tcG9uZW50TmFtZUdl dENvbnRyb2xsZXJOYW1lLA0KPiA+ID4gKyAgImVuIg0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4g PiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgRUZJX1VOSUNPREVfU1RSSU5HX1RBQkxF DQo+ID4gbUR3TW1jSGNEcml2ZXJOYW1lVGFibGVbXSA9IHsNCj4gPiA+ICsgIHsgImVuZztlbiIs IEwiRGVzaWdud2FyZSBTZC9NbWMgSG9zdCBDb250cm9sbGVyIERyaXZlciIgfSwNCj4gPiA+ICsg IHsgTlVMTCAsIE5VTEwgfQ0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArR0xPQkFMX1JFTU9W RV9JRl9VTlJFRkVSRU5DRUQgRUZJX1VOSUNPREVfU1RSSU5HX1RBQkxFDQo+ID4gbUR3TW1jSGND b250cm9sbGVyTmFtZVRhYmxlW10gPSB7DQo+ID4gPiArICB7ICJlbmc7ZW4iLCBMIkRlc2lnbndh cmUgU2QvTW1jIEhvc3QgQ29udHJvbGxlciIgfSwNCj4gPiA+ICsgIHsgTlVMTCAsIE5VTEwgfQ0K PiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXRyaWV2ZXMgYSBVbmlj b2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGRyaXZlci4N Cj4gPiA+ICsNCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSB1c2VyIHJlYWRh YmxlIG5hbWUgb2YgYSBkcml2ZXIgaW4gdGhlIGZvcm0NCj4gb2YNCj4gPiBhDQo+ID4gPiArICBV bmljb2RlIHN0cmluZy4gSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBoYXMgYSB1c2Vy IHJlYWRhYmxlIG5hbWUNCj4gaW4NCj4gPiA+ICsgIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkg TGFuZ3VhZ2UsIHRoZW4gYSBwb2ludGVyIHRvIHRoZSBkcml2ZXIgbmFtZQ0KPiBpcw0KPiA+ID4g KyAgcmV0dXJuZWQgaW4gRHJpdmVyTmFtZSwgYW5kIEVGSV9TVUNDRVNTIGlzIHJldHVybmVkLiBJ ZiB0aGUgZHJpdmVyDQo+ID4gc3BlY2lmaWVkDQo+ID4gPiArICBieSBUaGlzIGRvZXMgbm90IHN1 cHBvcnQgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwNCj4gPiA+ICsgIHRoZW4g RUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBU aGlzW2luXSAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9DT01QT05FTlRf TkFNRTJfUFJPVE9DT0wgb3INCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbSAgTGFuZ3VhZ2VbaW5dICAgICAgICAgIEEgcG9pbnRlciB0byBhIE51bGwtdGVybWlu YXRlZCBBU0NJSSBzdHJpbmcNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFycmF5IGluZGljYXRpbmcgdGhlIGxhbmd1YWdlLiBUaGlzIGlzIHRoZQ0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRo YXQgdGhlIGNhbGxlciBpcw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVxdWVzdGluZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzIHNwZWNpZmllZCBpbiBTdXBwb3J0ZWRM YW5ndWFnZXMuIFRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt YmVyIG9mIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgYSBkcml2ZXIgaXMgdXANCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVyLiBMYW5ndWFn ZSBpcyBzcGVjaWZpZWQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu IFJGQyA0NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1hdC4NCj4gPiA+ICsNCj4g PiA+ICsgIEBwYXJhbSAgRHJpdmVyTmFtZVtvdXRdICAgICAgIEEgcG9pbnRlciB0byB0aGUgVW5p Y29kZSBzdHJpbmcgdG8gcmV0dXJuLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGhpcyBVbmljb2RlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiB0aGUNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBpbiB0 aGUgbGFuZ3VhZ2UNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNp ZmllZCBieSBMYW5ndWFnZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBVbmljb2RlIHN0cmluZyBmb3IgdGhlIERyaXZlciBzcGVjaWZpZWQNCj4g YnkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYW5kIHRoZSBs YW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2Ugd2FzDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBEcml2ZXJOYW1lLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgTGFuZ3VhZ2UgaXMgTlVMTC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIERyaXZlck5hbWUgaXMg TlVMTC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRo ZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3QNCj4gPiBzdXBwb3J0DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5 IExhbmd1YWdlLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtEd01tY0hjQ29tcG9uZW50TmFtZUdldERyaXZlck5hbWUgKA0KPiA+ ID4gKyAgSU4gIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAgICAgKlRoaXMsDQo+ID4gPiAr ICBJTiAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAqTGFuZ3VhZ2UsDQo+ID4gPiAr ICBPVVQgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqKkRyaXZlck5hbWUNCj4gPiA+ ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gTG9va3VwVW5pY29kZVN0cmluZzIgKA0K PiA+ID4gKyAgICAgICAgICAgTGFuZ3VhZ2UsDQo+ID4gPiArICAgICAgICAgICBUaGlzLT5TdXBw b3J0ZWRMYW5ndWFnZXMsDQo+ID4gPiArICAgICAgICAgICBtRHdNbWNIY0RyaXZlck5hbWVUYWJs ZSwNCj4gPiA+ICsgICAgICAgICAgIERyaXZlck5hbWUsDQo+ID4gPiArICAgICAgICAgICAoQk9P TEVBTikoVGhpcyA9PSAmZ0R3TW1jSGNDb21wb25lbnROYW1lKQ0KPiA+ID4gKyAgICAgICAgICAg KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXRyaWV2ZXMgYSBV bmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlDQo+ID4g Y29udHJvbGxlcg0KPiA+ID4gKyAgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGJ5IGEgZHJpdmVyLg0K PiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHVzZXIgcmVhZGFi bGUgbmFtZSBvZiB0aGUgY29udHJvbGxlcg0KPiBzcGVjaWZpZWQNCj4gPiBieQ0KPiA+ID4gKyAg Q29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUgaW4gdGhlIGZvcm0gb2YgYSBVbmljb2Rl IHN0cmluZy4gSWYgdGhlDQo+ID4gPiArICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaGFzIGEg dXNlciByZWFkYWJsZSBuYW1lIGluIHRoZSBsYW5ndWFnZQ0KPiA+IHNwZWNpZmllZCBieQ0KPiA+ ID4gKyAgTGFuZ3VhZ2UsIHRoZW4gYSBwb2ludGVyIHRvIHRoZSBjb250cm9sbGVyIG5hbWUgaXMg cmV0dXJuZWQgaW4NCj4gPiBDb250cm9sbGVyTmFtZSwNCj4gPiA+ICsgIGFuZCBFRklfU1VDQ0VT UyBpcyByZXR1cm5lZC4gIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbm90DQo+ ID4gY3VycmVudGx5DQo+ID4gPiArICBtYW5hZ2luZyB0aGUgY29udHJvbGxlciBzcGVjaWZpZWQg YnkgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUsDQo+ID4gPiArICB0aGVuIEVGSV9V TlNVUFBPUlRFRCBpcyByZXR1cm5lZC4gIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMN Cj4gZG9lcw0KPiA+IG5vdA0KPiA+ID4gKyAgc3VwcG9ydCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVk IGJ5IExhbmd1YWdlLCB0aGVuIEVGSV9VTlNVUFBPUlRFRA0KPiBpcw0KPiA+IHJldHVybmVkLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBUaGlzW2luXSAgICAgICAgICAgICAgQSBwb2ludGVy IHRvIHRoZQ0KPiA+IEVGSV9DT01QT05FTlRfTkFNRTJfUFJPVE9DT0wgb3INCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBp bnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQ29udHJvbGxlckhhbmRsZVtpbl0g IFRoZSBoYW5kbGUgb2YgYSBjb250cm9sbGVyIHRoYXQgdGhlDQo+IGRyaXZlcg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbWFuYWdp bmcuICBUaGlzIGhhbmRsZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3BlY2lmaWVzIHRoZSBjb250cm9sbGVyIHdob3NlIG5hbWUgaXMgdG8gYmUNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtICBDaGlsZEhhbmRsZVtpbl0gICAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY2hpbGQgY29u dHJvbGxlciB0bw0KPiByZXRyaWV2ZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhlIG5hbWUgb2YuICBUaGlzIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0DQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgTlVMTC4gIEl0IHdp bGwgYmUgTlVMTCBmb3IgZGV2aWNlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkcml2ZXJzLiAgSXQgd2lsbCBhbHNvIGJlIE5VTEwgZm9yIGEgYnVzIGRyaXZlcnMNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lzaCB0byByZXRyaWV2 ZSB0aGUgbmFtZSBvZiB0aGUgYnVzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250cm9sbGVyLiAgSXQgd2lsbCBub3QgYmUgTlVMTCBmb3IgYSBidXMNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0aGF0IHdpc2hlcyB0byByZXRy aWV2ZSB0aGUgbmFtZSBvZiBhDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGlsZCBjb250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBMYW5ndWFnZVtp bl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZw0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgaW5kaWNhdGluZyB0 aGUgbGFuZ3VhZ2UuICBUaGlzIGlzIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRoYXQgdGhlIGNhbGxlciBpcw0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGluZywgYW5kIGl0 IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGFuZ3VhZ2VzIHNwZWNpZmllZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMuIFRoZQ0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGxhbmd1YWdlcyBz dXBwb3J0ZWQgYnkgYSBkcml2ZXIgaXMgdXANCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVyLiBMYW5ndWFnZSBpcyBzcGVjaWZpZWQgaW4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJGQyA0NjQ2IG9yIElTTyA2 MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1hdC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQ29u dHJvbGxlck5hbWVbb3V0XSAgIEEgcG9pbnRlciB0byB0aGUgVW5pY29kZSBzdHJpbmcgdG8NCj4g PiByZXR1cm4uDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIFVu aWNvZGUgc3RyaW5nIGlzIHRoZSBuYW1lIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBh bmQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoaWxkSGFuZGxlIGlu IHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExhbmd1YWdlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIGRyaXZlcg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFRoaXMu DQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgVW5p Y29kZSBzdHJpbmcgZm9yIHRoZSB1c2VyIHJlYWRhYmxlDQo+ID4gbmFtZSBpbg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBM YW5ndWFnZSBmb3IgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk cml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgd2FzIHJldHVybmVkIGluDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXJOYW1lLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQ29udHJvbGxlckhhbmRsZSBpcyBub3QgYSB2YWxp ZA0KPiA+IEVGSV9IQU5ETEUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBDaGlsZEhhbmRsZSBpcyBub3QgTlVMTCBhbmQgaXQgaXMgbm90DQo+IGENCj4g PiB2YWxpZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0hBTkRM RS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIExhbmd1 YWdlIGlzIE5VTEwuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBDb250cm9sbGVyTmFtZSBpcyBOVUxMLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBF RklfVU5TVVBQT1JURUQgICAgICAgVGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBpcyBub3QN Cj4gPiBjdXJyZW50bHkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h bmFnaW5nIHRoZSBjb250cm9sbGVyIHNwZWNpZmllZCBieQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgZHJpdmVyIHNw ZWNpZmllZCBieSBUaGlzIGRvZXMgbm90DQo+ID4gc3VwcG9ydA0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZS4N Cj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ ID4gPiArRHdNbWNIY0NvbXBvbmVudE5hbWVHZXRDb250cm9sbGVyTmFtZSAoDQo+ID4gPiArICBJ TiAgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiA+ICsgIElOICBF RklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiAr ICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBDaGlsZEhhbmRsZSwgT1BUSU9O QUwNCj4gPiA+ICsgIElOICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAgICpMYW5ndWFn ZSwNCj4gPiA+ICsgIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICoqQ29udHJv bGxlck5hbWUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAg ICAgU3RhdHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKExhbmd1YWdlID09IE5VTEwgfHwgQ29u dHJvbGxlck5hbWUgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFRo aXMgaXMgYSBkZXZpY2UgZHJpdmVyLCBzbyBDaGlsZEhhbmRsZSBtdXN0IGJlIE5VTEwuDQo+ID4g PiArICAvLw0KPiA+ID4gKyAgaWYgKENoaWxkSGFuZGxlICE9IE5VTEwpIHsNCj4gPiA+ICsgICAg cmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8v DQo+ID4gPiArICAvLyBNYWtlIHN1cmUgdGhpcyBkcml2ZXIgaXMgY3VycmVudGx5IG1hbmFnaW5n IENvbnRyb2xsZXJIYW5kbGUNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBTdGF0dXMgPSBFZmlUZXN0 TWFuYWdlZERldmljZSAoDQo+ID4gPiArICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ ID4gPiArICAgICAgICAgICAgIGdEd01tY0hjRHJpdmVyQmluZGluZy5Ecml2ZXJCaW5kaW5nSGFu ZGxlLA0KPiA+ID4gKyAgICAgICAgICAgICAmZ0VmaVBjaUlvUHJvdG9jb2xHdWlkDQo+ID4gPiAr ICAgICAgICAgICAgICk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1 cm4gTG9va3VwVW5pY29kZVN0cmluZzIgKA0KPiA+ID4gKyAgICAgICAgICAgTGFuZ3VhZ2UsDQo+ ID4gPiArICAgICAgICAgICBUaGlzLT5TdXBwb3J0ZWRMYW5ndWFnZXMsDQo+ID4gPiArICAgICAg ICAgICBtRHdNbWNIY0NvbnRyb2xsZXJOYW1lVGFibGUsDQo+ID4gPiArICAgICAgICAgICBDb250 cm9sbGVyTmFtZSwNCj4gPiA+ICsgICAgICAgICAgIChCT09MRUFOKShUaGlzID09ICZnRHdNbWNI Y0NvbXBvbmVudE5hbWUpDQo+ID4gPiArICAgICAgICAgICApOw0KPiA+ID4gK30NCj4gPiA+IGRp ZmYgLS1naXQgYS9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5jDQo+ ID4gYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5jDQo+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5hZWExMjE3MGQy Y2MNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMv RHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmMNCj4gPiA+IEBAIC0wLDAgKzEsMTI5NiBAQA0KPiA+ID4g Ky8qKiBAZmlsZQ0KPiA+ID4gKyAgVGhpcyBkcml2ZXIgaXMgdXNlZCB0byBtYW5hZ2UgRGVzaWdu d2FyZSBTRC9NTUMgaG9zdCBjb250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgSXQgd291bGQg ZXhwb3NlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MIGZvciB1cHBlcg0KPiBsYXllcg0K PiA+IHVzZS4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMjEsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgIENvcHly aWdodCAoQykgMjAxNiBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLiBBbGwgcmlndGhzIHJlc2Vy dmVkLjxCUj4NCj4gPiA+ICsgIENvcHlyaWdodCAoQykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJp Z3RocyByZXNlcnZlZC48QlI+DQo+ID4gPiArDQo+ID4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gPiBCU0Qg TGljZW5zZQ0KPiA+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPiAr ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPiAr DQo+ID4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIg0KPiA+IEJBU0lTLA0KPiA+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xp Yi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RldmljZVBhdGhMaWIuaD4NCj4gPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9y eUFsbG9jYXRpb25MaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvTm9uRGlzY292ZXJh YmxlRGV2aWNlLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaURyaXZlckVudHJ5UG9pbnQu aD4NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvRGV2aWNlUGF0aC5oPg0KPiA+ ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9QbGF0Zm9ybUR3TW1jLmg+DQo+ID4gPiArDQo+ID4gPiAr I2luY2x1ZGUgIkR3TW1jSGNEeGUuaCINCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIERy aXZlciBHbG9iYWwgVmFyaWFibGVzDQo+ID4gPiArLy8NCj4gPiA+ICtFRklfRFJJVkVSX0JJTkRJ TkdfUFJPVE9DT0wgZ0R3TW1jSGNEcml2ZXJCaW5kaW5nID0gew0KPiA+ID4gKyAgRHdNbWNIY0Ry aXZlckJpbmRpbmdTdXBwb3J0ZWQsDQo+ID4gPiArICBEd01tY0hjRHJpdmVyQmluZGluZ1N0YXJ0 LA0KPiA+ID4gKyAgRHdNbWNIY0RyaXZlckJpbmRpbmdTdG9wLA0KPiA+ID4gKyAgMHgxMCwNCj4g PiA+ICsgIE5VTEwsDQo+ID4gPiArICBOVUxMDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICsv Lw0KPiA+ID4gKy8vIFRlbXBsYXRlIGZvciBEZXNpZ253YXJlIFNEL01NQyBob3N0IGNvbnRyb2xs ZXIgcHJpdmF0ZSBkYXRhLg0KPiA+ID4gKy8vDQo+ID4gPiArRFdfTU1DX0hDX1BSSVZBVEVfREFU QSBnRHdNbWNIY1RlbXBsYXRlID0gew0KPiA+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfU0lHTkFU VVJFLCAgICAgIC8vIFNpZ25hdHVyZQ0KPiA+ID4gKyAgTlVMTCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIENvbnRyb2xsZXJIYW5kbGUNCj4gPiA+ICsgIDB4MCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIE1taW8gYmFzZSBhZGRyZXNzDQo+ID4gPiArICB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFzc1RocnUNCj4gPiA+ICsgICAgc2l6ZW9mIChV SU5UMzIpLA0KPiA+ID4gKyAgICBEd01tY1Bhc3NUaHJ1UGFzc1RocnUsDQo+ID4gPiArICAgIER3 TW1jUGFzc1RocnVHZXROZXh0U2xvdCwNCj4gPiA+ICsgICAgRHdNbWNQYXNzVGhydUJ1aWxkRGV2 aWNlUGF0aCwNCj4gPiA+ICsgICAgRHdNbWNQYXNzVGhydUdldFNsb3ROdW1iZXIsDQo+ID4gPiAr ICAgIER3TW1jUGFzc1RocnVSZXNldERldmljZQ0KPiA+ID4gKyAgfSwNCj4gPiA+ICsgIE5VTEws ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQbGF0Zm9ybUR3TW1jDQo+ID4gPiArICAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJldmlvdXNTbG90DQo+ID4gPiAr ICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGltZXJFdmVudA0KPiA+ID4g KyAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbm5lY3RFdmVudA0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFF1ZXVlDQo+ID4gPiAr ICBJTklUSUFMSVpFX0xJU1RfSEVBRF9WQVJJQUJMRSAoZ0R3TW1jSGNUZW1wbGF0ZS5RdWV1ZSks DQo+ID4gPiArICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2xvdA0KPiA+ ID4gKyAgICB7MCwgVW5rbm93blNsb3QsIDAsIDAsIDB9DQo+ID4gPiArICB9LA0KPiA+ID4gKyAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhcGFiaWxpdHkNCj4gPiA+ICsg ICAgezB9DQo+ID4gPiArICB9LA0KPiA+ID4gKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIE1heEN1cnJlbnQNCj4gPiA+ICsgICAgMA0KPiA+ID4gKyAgfSwNCj4gPiA+ICsg IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sbGVyVmVyc2lvbg0K PiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArU0RfREVWSUNFX1BBVEggICAgbVNkRHBUZW1wbGF0 ZSA9IHsNCj4gPiA+ICsgIHsNCj4gPiA+ICsgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiA+ ID4gKyAgICBNU0dfU0RfRFAsDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICAoVUlOVDgpIChz aXplb2YgKFNEX0RFVklDRV9QQVRIKSksDQo+ID4gPiArICAgICAgKFVJTlQ4KSAoKHNpemVvZiAo U0RfREVWSUNFX1BBVEgpKSA+PiA4KQ0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9LA0KPiA+ID4g KyAgMA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArRU1NQ19ERVZJQ0VfUEFUSCAgICBtRW1t Y0RwVGVtcGxhdGUgPSB7DQo+ID4gPiArICB7DQo+ID4gPiArICAgIE1FU1NBR0lOR19ERVZJQ0Vf UEFUSCwNCj4gPiA+ICsgICAgTVNHX0VNTUNfRFAsDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAg ICAoVUlOVDgpIChzaXplb2YgKEVNTUNfREVWSUNFX1BBVEgpKSwNCj4gPiA+ICsgICAgICAoVUlO VDgpICgoc2l6ZW9mIChFTU1DX0RFVklDRV9QQVRIKSkgPj4gOCkNCj4gPiA+ICsgICAgfQ0KPiA+ ID4gKyAgfSwNCj4gPiA+ICsgIDANCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gKy8vDQo+ID4g PiArLy8gUHJpb3JpdGl6ZWQgZnVuY3Rpb24gbGlzdCB0byBkZXRlY3QgY2FyZCB0eXBlLg0KPiA+ ID4gKy8vIFVzZXIgY291bGQgYWRkIG90aGVyIGNhcmQgZGV0ZWN0aW9uIGxvZ2ljIGhlcmUuDQo+ ID4gPiArLy8NCj4gPiA+ICtEV01NQ19DQVJEX1RZUEVfREVURUNUX1JPVVRJTkUNCj4gPiBtQ2Fy ZFR5cGVEZXRlY3RSb3V0aW5lVGFibGVbXSA9IHsNCj4gPiA+ICsgIEVtbWNJZGVudGlmaWNhdGlv biwNCj4gPiA+ICsgIFNkQ2FyZElkZW50aWZpY2F0aW9uLA0KPiA+ID4gKyAgTlVMTA0KPiA+ID4g K307DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBUaGUgZW50cnkgcG9pbnQgZm9yIFNE IGhvc3QgY29udHJvbGxlciBkcml2ZXIsIHVzZWQgdG8gaW5zdGFsbCB0aGlzIGRyaXZlcg0KPiBv bg0KPiA+IHRoZSBJbWFnZUhhbmRsZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIElt YWdlSGFuZGxlICAgVGhlIGZpcm13YXJlIGFsbG9jYXRlZCBoYW5kbGUgZm9yIHRoaXMNCj4gZHJp dmVyDQo+ID4gaW1hZ2UuDQo+ID4gPiArICBAcGFyYW1baW5dICBTeXN0ZW1UYWJsZSAgIFBvaW50 ZXIgdG8gdGhlIEVGSSBzeXN0ZW0gdGFibGUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgRHJpdmVyIGxvYWRlZC4NCj4gPiA+ICsgIEByZXR2YWwgb3RoZXIgICAgICAg ICBEcml2ZXIgbm90IGxvYWRlZC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RB VFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArSW5pdGlhbGl6ZUR3TW1jSGNEeGUgKA0KPiA+ID4g KyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiArICBJTiBFRklfU1lT VEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBF RklfU1RBVFVTICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBF ZmlMaWJJbnN0YWxsRHJpdmVyQmluZGluZ0NvbXBvbmVudE5hbWUyICgNCj4gPiA+ICsgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiArICAgICAgICAgICAgIFN5c3RlbVRhYmxlLA0KPiA+ ID4gKyAgICAgICAgICAgICAmZ0R3TW1jSGNEcml2ZXJCaW5kaW5nLA0KPiA+ID4gKyAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ICsgICAgICAgICAgICAgJmdEd01tY0hjQ29tcG9uZW50 TmFtZSwNCj4gPiA+ICsgICAgICAgICAgICAgJmdEd01tY0hjQ29tcG9uZW50TmFtZTINCj4gPiA+ ICsgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIENhbGwgYmFjayBmdW5jdGlvbiB3aGVuIHRoZSB0aW1lciBldmVudCBp cyBzaWduYWxlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEV2ZW50ICAgICBUaGUg RXZlbnQgdGhpcyBub3RpZnkgZnVuY3Rpb24gcmVnaXN0ZXJlZCB0by4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gIENvbnRleHQgICBQb2ludGVyIHRvIHRoZSBjb250ZXh0IGRhdGEgcmVnaXN0ZXJlZCB0 byB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBFdmVudC4NCj4gPiA+ICsNCj4g PiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArUHJvY2Vzc0FzeW5j VGFza0xpc3QgKA0KPiA+ID4gKyAgSU4gRUZJX0VWRU5UICAgICAgICAgIEV2ZW50LA0KPiA+ID4g KyAgSU4gVk9JRCogICAgICAgICAgICAgIENvbnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ ID4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICAqUHJpdmF0ZTsNCj4g PiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAgICAgICAgICAgICpMaW5rOw0KPiA+ID4g KyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgICAgKlRyYjsNCj4gPiA+ICsgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsgIEVGSV9T RF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQ7DQo+ID4gPiArICBCT09MRUFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZpbml0ZVdhaXQ7DQo+ID4gPiArICBFRklf RVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmJFdmVudDsNCj4gPiA+ICsNCj4gPiA+ ICsgIFByaXZhdGUgPSAoRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAqKUNvbnRleHQ7DQo+ID4gPiAr DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gQ2hlY2sgaWYgdGhlIGZpcnN0IGVudHJ5IGluIHRo ZSBhc3luYyBJL08gcXVldWUgaXMgZG9uZSBvciBub3QuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAg U3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiArICBUcmIgICAgPSBOVUxMOw0KPiA+ID4gKyAg TGluayAgID0gR2V0Rmlyc3ROb2RlICgmUHJpdmF0ZS0+UXVldWUpOw0KPiA+ID4gKyAgaWYgKCFJ c051bGwgKCZQcml2YXRlLT5RdWV1ZSwgTGluaykpIHsNCj4gPiA+ICsgICAgVHJiID0gRFdfTU1D X0hDX1RSQl9GUk9NX1RISVMgKExpbmspOw0KPiA+ID4gKyAgICBpZiAoIVByaXZhdGUtPlNsb3Rb VHJiLT5TbG90XS5NZWRpYVByZXNlbnQpIHsNCj4gPiA+ICsgICAgICBTdGF0dXMgPSBFRklfTk9f TUVESUE7DQo+ID4gPiArICAgICAgZ290byBEb25lOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAg IGlmICghVHJiLT5TdGFydGVkKSB7DQo+ID4gPiArICAgICAgLy8NCj4gPiA+ICsgICAgICAvLyBD aGVjayB3aGV0aGVyIHRoZSBjbWQvZGF0YSBsaW5lIGlzIHJlYWR5IGZvciB0cmFuc2Zlci4NCj4g PiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIFN0YXR1cyA9IER3TW1jQ2hlY2tUcmJFbnYgKFBy aXZhdGUsIFRyYik7DQo+ID4gPiArICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g PiA+ICsgICAgICAgIFRyYi0+U3RhcnRlZCA9IFRSVUU7DQo+ID4gPiArICAgICAgICBTdGF0dXMg PSBEd01tY0V4ZWNUcmIgKFByaXZhdGUsIFRyYik7DQo+ID4gPiArICAgICAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgICAgIGdvdG8gRG9uZTsNCj4gPiA+ICsgICAg ICAgIH0NCj4gPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ID4gKyAgICAgICAgZ290byBEb25lOw0K PiA+ID4gKyAgICAgIH0NCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgICBTdGF0dXMgPSBEd01tY0No ZWNrVHJiUmVzdWx0IChQcml2YXRlLCBUcmIpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g K0RvbmU6DQo+ID4gPiArICBpZiAoKFRyYiAhPSBOVUxMKSAmJiAoU3RhdHVzID09IEVGSV9OT1Rf UkVBRFkpKSB7DQo+ID4gPiArICAgIFBhY2tldCA9IFRyYi0+UGFja2V0Ow0KPiA+ID4gKyAgICBp ZiAoUGFja2V0LT5UaW1lb3V0ID09IDApIHsNCj4gPiA+ICsgICAgICBJbmZpbml0ZVdhaXQgPSBU UlVFOw0KPiA+ID4gKyAgICB9IGVsc2Ugew0KPiA+ID4gKyAgICAgIEluZmluaXRlV2FpdCA9IEZB TFNFOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIGlmICgoIUluZmluaXRlV2FpdCkgJiYgKFRy Yi0+VGltZW91dC0tID09IDApKSB7DQo+ID4gPiArICAgICAgUmVtb3ZlRW50cnlMaXN0IChMaW5r KTsNCj4gPiA+ICsgICAgICBUcmItPlBhY2tldC0+VHJhbnNhY3Rpb25TdGF0dXMgPSBFRklfVElN RU9VVDsNCj4gPiA+ICsgICAgICBUcmJFdmVudCA9IFRyYi0+RXZlbnQ7DQo+ID4gPiArICAgICAg RHdNbWNGcmVlVHJiIChUcmIpOw0KPiA+ID4gKyAgICAgIERFQlVHICgoDQo+ID4gPiArICAgICAg ICBERUJVR19WRVJCT1NFLA0KPiA+ID4gKyAgICAgICAgIlByb2Nlc3NBc3luY1Rhc2tMaXN0KCk6 IFNpZ25hbCBFdmVudCAlcCBFRklfVElNRU9VVFxuIiwNCj4gPiA+ICsgICAgICAgIFRyYkV2ZW50 DQo+ID4gPiArICAgICAgICApKTsNCj4gPiA+ICsgICAgICBnQlMtPlNpZ25hbEV2ZW50IChUcmJF dmVudCk7DQo+ID4gPiArICAgICAgcmV0dXJuOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9DQo+ ID4gPiArICBpZiAoKFRyYiAhPSBOVUxMKSAmJiAoU3RhdHVzICE9IEVGSV9OT1RfUkVBRFkpKSB7 DQo+ID4gPiArICAgIFJlbW92ZUVudHJ5TGlzdCAoTGluayk7DQo+ID4gPiArICAgIFRyYi0+UGFj a2V0LT5UcmFuc2FjdGlvblN0YXR1cyA9IFN0YXR1czsNCj4gPiA+ICsgICAgVHJiRXZlbnQgPSBU cmItPkV2ZW50Ow0KPiA+ID4gKyAgICBEd01tY0ZyZWVUcmIgKFRyYik7DQo+ID4gPiArICAgIERF QlVHICgoDQo+ID4gPiArICAgICAgREVCVUdfVkVSQk9TRSwNCj4gPiA+ICsgICAgICAiUHJvY2Vz c0FzeW5jVGFza0xpc3QoKTogU2lnbmFsIEV2ZW50ICVwIHdpdGggJXJcbiIsDQo+ID4gPiArICAg ICAgVHJiRXZlbnQsDQo+ID4gPiArICAgICAgU3RhdHVzDQo+ID4gPiArICAgICAgKSk7DQo+ID4g PiArICAgIGdCUy0+U2lnbmFsRXZlbnQgKFRyYkV2ZW50KTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsg IHJldHVybjsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZCByZW1v dmFibGUgZGV2aWNlIGVudW1lcmF0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gdGhlIHRpbWVy DQo+ID4gZXZlbnQgaXMgc2lnbmFsZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBF dmVudCAgICAgVGhlIEV2ZW50IHRoaXMgbm90aWZ5IGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdG8uDQo+ ID4gPiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgUG9pbnRlciB0byB0aGUgY29udGV4dCBkYXRh IHJlZ2lzdGVyZWQgdG8gdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQu DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4g K0R3TW1jSGNFbnVtZXJhdGVEZXZpY2UgKA0KPiA+ID4gKyAgSU4gRUZJX0VWRU5UICAgICAgICAg IEV2ZW50LA0KPiA+ID4gKyAgSU4gVk9JRCogICAgICAgICAgICAgIENvbnRleHQNCj4gPiA+ICsg ICkNCj4gPiA+ICt7DQo+ID4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAg ICAqUHJpdmF0ZTsNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1l ZGlhUHJlc2VudDsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJvdXRpbmVOdW07DQo+ID4gPiArICBEV01NQ19DQVJEX1RZUEVfREVURUNUX1JPVVRJTkUgICAg ICAqUm91dGluZTsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4Ow0KPiA+ID4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICAgICAgKkxp bms7DQo+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAgICAqTmV4dExp bms7DQo+ID4gPiArICBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAgICAqVHJiOw0K PiA+ID4gKyAgRUZJX1RQTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2xkVHBsOw0KPiA+ ID4gKw0KPiA+ID4gKyAgUHJpdmF0ZSA9IChEV19NTUNfSENfUFJJVkFURV9EQVRBICopQ29udGV4 dDsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmICgoUHJpdmF0ZS0+U2xvdFswXS5FbmFibGUpICYmDQo+ ID4gPiArICAgICAgKFByaXZhdGUtPlNsb3RbMF0uU2xvdFR5cGUgPT0gUmVtb3ZhYmxlU2xvdCkp IHsNCj4gPiA+ICsgICAgU3RhdHVzID0gRHdNbWNIY0NhcmREZXRlY3QgKA0KPiA+ID4gKyAgICAg ICAgICAgICAgIFByaXZhdGUtPkRldkJhc2UsDQo+ID4gPiArICAgICAgICAgICAgICAgUHJpdmF0 ZS0+Q29udHJvbGxlckhhbmRsZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAwLA0KPiA+ID4gKyAg ICAgICAgICAgICAgICZNZWRpYVByZXNlbnQNCj4gPiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ ID4gKyAgICBpZiAoKFN0YXR1cyA9PSBFRklfTUVESUFfQ0hBTkdFRCkgJiYgIU1lZGlhUHJlc2Vu dCkgew0KPiA+ID4gKyAgICAgIERFQlVHICgoDQo+ID4gPiArICAgICAgICBERUJVR19JTkZPLA0K PiA+ID4gKyAgICAgICAgIkR3TW1jSGNFbnVtZXJhdGVEZXZpY2U6IGRldmljZSBkaXNjb25uZWN0 ZWQgYXQgJXBcbiIsDQo+ID4gPiArICAgICAgICBQcml2YXRlLT5EZXZCYXNlDQo+ID4gPiArICAg ICAgICApKTsNCj4gPiA+ICsgICAgICBQcml2YXRlLT5TbG90WzBdLk1lZGlhUHJlc2VudCA9IEZB TFNFOw0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAgICAgLy8gU2lnbmFsIGFsbCBhc3luYyB0 YXNrIGV2ZW50cyBhdCB0aGUgc2xvdCB3aXRoIEVGSV9OT19NRURJQSBzdGF0dXMuDQo+ID4gPiAr ICAgICAgLy8NCj4gPiA+ICsgICAgICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChUUExfTk9USUZZ KTsNCj4gPiA+ICsgICAgICBmb3IgKExpbmsgPSBHZXRGaXJzdE5vZGUgKCZQcml2YXRlLT5RdWV1 ZSk7DQo+ID4gPiArICAgICAgICAgICAhSXNOdWxsICgmUHJpdmF0ZS0+UXVldWUsIExpbmspOw0K PiA+ID4gKyAgICAgICAgICAgTGluayA9IE5leHRMaW5rKSB7DQo+ID4gPiArICAgICAgICBOZXh0 TGluayA9IEdldE5leHROb2RlICgmUHJpdmF0ZS0+UXVldWUsIExpbmspOw0KPiA+ID4gKyAgICAg ICAgVHJiID0gRFdfTU1DX0hDX1RSQl9GUk9NX1RISVMgKExpbmspOw0KPiA+ID4gKyAgICAgICAg aWYgKFRyYi0+U2xvdCA9PSAwKSB7DQo+ID4gPiArICAgICAgICAgIFJlbW92ZUVudHJ5TGlzdCAo TGluayk7DQo+ID4gPiArICAgICAgICAgIFRyYi0+UGFja2V0LT5UcmFuc2FjdGlvblN0YXR1cyA9 IEVGSV9OT19NRURJQTsNCj4gPiA+ICsgICAgICAgICAgZ0JTLT5TaWduYWxFdmVudCAoVHJiLT5F dmVudCk7DQo+ID4gPiArICAgICAgICAgIER3TW1jRnJlZVRyYiAoVHJiKTsNCj4gPiA+ICsgICAg ICAgIH0NCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgICAgZ0JTLT5SZXN0b3JlVFBMIChPbGRU cGwpOw0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAgICAgLy8gTm90aWZ5IHRoZSB1cHBlciBs YXllciB0aGUgY29ubmVjdCBzdGF0ZSBjaGFuZ2UgdGhyb3VnaA0KPiA+ID4gKyAgICAgIC8vIFJl aW5zdGFsbFByb3RvY29sSW50ZXJmYWNlLg0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAgICAg Z0JTLT5SZWluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoDQo+ID4gPiArICAgICAgICAgICAgUHJp dmF0ZS0+Q29udHJvbGxlckhhbmRsZSwNCj4gPiA+ICsgICAgICAgICAgICAmZ0VmaVNkTW1jUGFz c1RocnVQcm90b2NvbEd1aWQsDQo+ID4gPiArICAgICAgICAgICAgJlByaXZhdGUtPlBhc3NUaHJ1 LA0KPiA+ID4gKyAgICAgICAgICAgICZQcml2YXRlLT5QYXNzVGhydQ0KPiA+ID4gKyAgICAgICAg ICAgICk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgaWYgKChTdGF0dXMgPT0gRUZJX01FRElB X0NIQU5HRUQpICYmIE1lZGlhUHJlc2VudCkgew0KPiA+ID4gKyAgICAgIERFQlVHICgoDQo+ID4g PiArICAgICAgICBERUJVR19JTkZPLA0KPiA+ID4gKyAgICAgICAgIkR3TW1jSGNFbnVtZXJhdGVE ZXZpY2U6IGRldmljZSBjb25uZWN0ZWQgYXQgJXBcbiIsDQo+ID4gPiArICAgICAgICBQcml2YXRl LT5EZXZCYXNlDQo+ID4gPiArICAgICAgICApKTsNCj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAg ICAgIC8vIEluaXRpYWxpemUgc2xvdCBhbmQgc3RhcnQgaWRlbnRpZmljYXRpb24gcHJvY2VzcyBm b3IgdGhlIG5ldw0KPiA+ID4gKyAgICAgIC8vIGF0dGFjaGVkIGRldmljZQ0KPiA+ID4gKyAgICAg IC8vDQo+ID4gPiArICAgICAgU3RhdHVzID0gRHdNbWNIY0luaXRIb3N0IChQcml2YXRlLT5EZXZC YXNlLCBQcml2YXRlLQ0KPiA+Q2FwYWJpbGl0eVswXSk7DQo+ID4gPiArICAgICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICAgICAgcmV0dXJuOw0KPiA+ID4gKyAgICAgIH0N Cj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIC8vIFJlc2V0IHRoZSBzcGVjaWZpZWQgc2xv dCBvZiB0aGUgU0QvTU1DIFBjaSBIb3N0IENvbnRyb2xsZXINCj4gPiA+ICsgICAgICAvLw0KPiA+ ID4gKyAgICAgIFN0YXR1cyA9IER3TW1jSGNSZXNldCAoUHJpdmF0ZS0+RGV2QmFzZSwgUHJpdmF0 ZS0+Q2FwYWJpbGl0eVswXSk7DQo+ID4gPiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ID4gKyAgICAgICAgcmV0dXJuOw0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICsNCj4gPiA+ ICsgICAgICBQcml2YXRlLT5TbG90WzBdLk1lZGlhUHJlc2VudCA9IFRSVUU7DQo+ID4gPiArICAg ICAgUm91dGluZU51bSA9IHNpemVvZiAobUNhcmRUeXBlRGV0ZWN0Um91dGluZVRhYmxlKSAvDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgIHNpemVvZiAoRFdNTUNfQ0FSRF9UWVBFX0RFVEVDVF9S T1VUSU5FKTsNCj4gPiA+ICsgICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBSb3V0aW5lTnVt OyBJbmRleCsrKSB7DQo+ID4gPiArICAgICAgICBSb3V0aW5lID0gJm1DYXJkVHlwZURldGVjdFJv dXRpbmVUYWJsZVtJbmRleF07DQo+ID4gPiArICAgICAgICBpZiAoKlJvdXRpbmUgIT0gTlVMTCkg ew0KPiA+ID4gKyAgICAgICAgICBTdGF0dXMgPSAoKlJvdXRpbmUpIChQcml2YXRlKTsNCj4gPiA+ ICsgICAgICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgICAgICAg ICBicmVhazsNCj4gPiA+ICsgICAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gKyAg ICAgIH0NCj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIC8vIFRoaXMgY2FyZCBkb2Vzbid0 IGdldCBpbml0aWFsaXplZCBjb3JyZWN0bHkuDQo+ID4gPiArICAgICAgLy8NCj4gPiA+ICsgICAg ICBpZiAoSW5kZXggPT0gUm91dGluZU51bSkgew0KPiA+ID4gKyAgICAgICAgcmV0dXJuOw0KPiA+ ID4gKyAgICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIC8vIE5v dGlmeSB0aGUgdXBwZXIgbGF5ZXIgdGhlIGNvbm5lY3Qgc3RhdGUgY2hhbmdlIHRocm91Z2gNCj4g PiA+ICsgICAgICAvLyBSZWluc3RhbGxQcm90b2NvbEludGVyZmFjZS4NCj4gPiA+ICsgICAgICAv Lw0KPiA+ID4gKyAgICAgIGdCUy0+UmVpbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiA+ID4g KyAgICAgICAgICAgICBQcml2YXRlLT5Db250cm9sbGVySGFuZGxlLA0KPiA+ID4gKyAgICAgICAg ICAgICAmZ0VmaVNkTW1jUGFzc1RocnVQcm90b2NvbEd1aWQsDQo+ID4gPiArICAgICAgICAgICAg ICZQcml2YXRlLT5QYXNzVGhydSwNCj4gPiA+ICsgICAgICAgICAgICAgJlByaXZhdGUtPlBhc3NU aHJ1DQo+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0NCj4g PiA+ICsNCj4gPiA+ICsgIHJldHVybjsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBSZXNldCB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgYW5kIGVu YWJsZSBhbGwgaW50ZXJydXB0cy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gRGV2QmFz ZSAgICAgICAgVGhlIE1taW8gRGV2aWNlIEJhc2UgQWRkcmVzcy4NCj4gPiA+ICsNCj4gPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHNvZnR3YXJlIHJlc2V0IGV4ZWN1dGVzIHN1 Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHNvZnR3 YXJlIHJlc2V0IGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMN Cj4gPiA+ICtEd01tY0hjUmVzZXQgKA0KPiA+ID4gKyAgSU4gVUlOVE4gICAgRGV2QmFzZSwNCj4g PiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgICAgQ2FwYWJpbGl0eQ0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBCbGtTaXplOw0KPiA+ID4gKw0KPiA+ ID4gKyAgLy8NCj4gPiA+ICsgIC8vIEVuYWJsZSBhbGwgaW50ZXJydXB0IGFmdGVyIHJlc2V0IGFs bC4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjRW5hYmxlSW50ZXJydXB0 IChEZXZCYXNlKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIkR3TW1jSGNSZXNldDogZW5hYmxlIGludGVycnVwdHMg ZmFpbDoNCj4gPiAlclxuIiwgU3RhdHVzKSk7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ ID4gPiArICB9DQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjSW5pdFRpbWVvdXRDdHJsIChEZXZC YXNlKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIEJsa1NpemUgPSBEV19N TUNfQkxPQ0tfU0laRTsNCj4gPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JM S1NJWiwgQmxrU2l6ZSk7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjSW5pdENs b2NrRnJlcSAoRGV2QmFzZSwgQ2FwYWJpbGl0eSk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjU2V0QnVzV2lkdGggKERldkJhc2UsIEZBTFNFLCAx KTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgVGVzdHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHN1cHBvcnRz IGEgZ2l2ZW4gY29udHJvbGxlci4gSWYgYSBjaGlsZCBkZXZpY2UNCj4gPiA+ICsgIGlzIHByb3Zp ZGVkLCBpdCBmdXJ0aGVyIHRlc3RzIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBzdXBwb3J0cyBjcmVh dGluZyBhDQo+ID4gPiArICBoYW5kbGUgZm9yIHRoZSBzcGVjaWZpZWQgY2hpbGQgZGV2aWNlLg0K PiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRoZSBkcml2 ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgc3VwcG9ydHMgdGhlDQo+ID4gPiArICBkZXZpY2Ugc3BlY2lm aWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUuIERyaXZlcnMgd2lsbCB0eXBpY2FsbHkgdXNlIHRoZQ0K PiBkZXZpY2UNCj4gPiA+ICsgIHBhdGggYXR0YWNoZWQgdG8gQ29udHJvbGxlckhhbmRsZSBhbmQv b3IgdGhlIHNlcnZpY2VzIGZyb20gdGhlIGJ1cyBJL08NCj4gPiA+ICsgIGFic3RyYWN0aW9uIGF0 dGFjaGVkIHRvIENvbnRyb2xsZXJIYW5kbGUgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXINCj4g PiBzdXBwb3J0cw0KPiA+ID4gKyAgQ29udHJvbGxlckhhbmRsZS4gVGhpcyBmdW5jdGlvbiBtYXkg YmUgY2FsbGVkIG1hbnkgdGltZXMgZHVyaW5nDQo+ID4gcGxhdGZvcm0NCj4gPiA+ICsgIGluaXRp YWxpemF0aW9uLiBJbiBvcmRlciB0byByZWR1Y2UgYm9vdCB0aW1lcywgdGhlIHRlc3RzIHBlcmZv cm1lZCBieSB0aGlzDQo+ID4gPiArICBmdW5jdGlvbiBtdXN0IGJlIHZlcnkgc21hbGwsIGFuZCB0 YWtlIGFzIGxpdHRsZSB0aW1lIGFzIHBvc3NpYmxlIHRvDQo+ID4gZXhlY3V0ZS4NCj4gPiA+ICsg IFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiBhbnkgaGFyZHdhcmUg ZGV2aWNlcywgYW5kDQo+ID4gdGhpcw0KPiA+ID4gKyAgZnVuY3Rpb24gbXVzdCBiZSBhd2FyZSB0 aGF0IHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUNCj4gPiBtYXkNCj4g PiA+ICsgIGFscmVhZHkgYmUgbWFuYWdlZCBieSB0aGUgc2FtZSBkcml2ZXIgb3IgYSBkaWZmZXJl bnQgZHJpdmVyLiBUaGlzDQo+ID4gZnVuY3Rpb24NCj4gPiA+ICsgIG11c3QgbWF0Y2ggaXRzIGNh bGxzIHRvIEFsbG9jYXRlUGFnZXMoKSB3aXRoIEZyZWVQYWdlcygpLCBBbGxvY2F0ZVBvb2woKQ0K PiA+IHdpdGgNCj4gPiA+ICsgIEZyZWVQb29sKCksIGFuZCBPcGVuUHJvdG9jb2woKSB3aXRoIENs b3NlUHJvdG9jb2woKS4gU2luY2UNCj4gPiBDb250cm9sbGVySGFuZGxlDQo+ID4gPiArICBtYXkg aGF2ZSBiZWVuIHByZXZpb3VzbHkgc3RhcnRlZCBieSB0aGUgc2FtZSBkcml2ZXIsIGlmIGEgcHJv dG9jb2wgaXMNCj4gPiBhbHJlYWR5DQo+ID4gPiArICBpbiB0aGUgb3BlbmVkIHN0YXRlLCB0aGVu IGl0IG11c3Qgbm90IGJlIGNsb3NlZCB3aXRoIENsb3NlUHJvdG9jb2woKS4NCj4gVGhpcw0KPiA+ IGlzDQo+ID4gPiArICByZXF1aXJlZCB0byBndWFyYW50ZWUgdGhlIHN0YXRlIG9mIENvbnRyb2xs ZXJIYW5kbGUgaXMgbm90IG1vZGlmaWVkIGJ5DQo+ID4gdGhpcw0KPiA+ID4gKyAgZnVuY3Rpb24u DQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlDQo+ID4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNvbnRyb2xsZXIg dG8gdGVzdC4NCj4gVGhpcw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlIG11c3Qgc3VwcG9ydCBhIHByb3RvY29sIGludGVyZmFjZSB0aGF0DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllcyBhbiBJL08gYWJzdHJh Y3Rpb24gdG8gdGhlIGRyaXZlci4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFJlbWFpbmluZ0Rldmlj ZVBhdGggIEEgcG9pbnRlciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24NCj4gb2YNCj4gPiBhDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aC4gIFRo aXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRldmljZSBkcml2ZXJzLCBhbmQgaXMgb3B0aW9uYWwgZm9yIGJ1cw0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycy4gRm9yIGJ1cyBk cml2ZXJzLCBpZiB0aGlzIHBhcmFtZXRlcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXMgbm90IE5VTEwsIHRoZW4gdGhlIGJ1cyBkcml2ZXIgbXVzdCBkZXRlci0N Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmUgaWYgdGhlIGJ1 cyBjb250cm9sbGVyIHNwZWNpZmllZCBieQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSBhbmQgdGhlIGNoaWxkIGNvbnRyb2xsZXINCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBSZW1h aW5pbmdEZXZpY2VQYXRoIGFyZSBib3RoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdXBwb3J0ZWQgYnkgdGhpcyBidXMgZHJpdmVyLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQg YnkgQ29udHJvbGxlckhhbmRsZQ0KPiA+IGFuZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBzdXBwb3J0ZWQgYnkgdGhlDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVk IGJ5IFRoaXMuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICAgICBUaGUg ZGV2aWNlIHNwZWNpZmllZCBieQ0KPiA+IENvbnRyb2xsZXJIYW5kbGUgYW5kDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIGFs cmVhZHkgYmVpbmcgbWFuYWdlZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnkgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gPiA+ICsgIEByZXR2YWwg RUZJX0FDQ0VTU19ERU5JRUQgICAgICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+ID4gQ29u dHJvbGxlckhhbmRsZSBhbmQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgYWxyZWFkeSBiZWluZyBtYW5hZ2VkDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBhIGRpZmZlcmVudCBkcml2ZXIg b3IgYW4gYXBwbGljYXRpb24gdGhhdA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVxdWlyZXMgZXhjbHVzaXZlIGFjY2Vzcy4NCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuDQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBi eQ0KPiA+IENvbnRyb2xsZXJIYW5kbGUgYW5kDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhl DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lm aWVkIGJ5IFRoaXMuDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gK0R3TW1jSGNEcml2ZXJCaW5kaW5nU3VwcG9ydGVkICgNCj4gPiA+ICsgIElOIEVG SV9EUklWRVJfQklORElOR19QUk9UT0NPTCAqVGhpcywNCj4gPiA+ICsgIElOIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ID4gKyAgSU4gRUZJX0RFVklDRV9QQVRI X1BST1RPQ09MICAgICpSZW1haW5pbmdEZXZpY2VQYXRoDQo+ID4gPiArICApDQo+ID4gPiArew0K PiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArICBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICpQYXJlbnREZXZpY2VQYXRoOw0KPiA+ID4gKyAgTk9OX0RJ U0NPVkVSQUJMRV9ERVZJQ0UgICAqRGV2Ow0KPiA+ID4gKyAgUExBVEZPUk1fRFdfTU1DX1BST1RP Q09MICAqUGxhdGZvcm1Ed01tYzsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhcmVudERldmljZVBhdGgg PSBOVUxMOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAo DQo+ID4gPiArICAgICAgICAgICAgICAgICAgJmdQbGF0Zm9ybUR3TW1jUHJvdG9jb2xHdWlkLA0K PiA+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gPiArICAgICAgICAgICAgICAgICAg KFZPSUQgKiopICZQbGF0Zm9ybUR3TW1jDQo+ID4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4g PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IGdCUy0+T3BlblByb3Rv Y29sICgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICZnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAoVk9JRCAqKSAmUGFyZW50RGV2aWNlUGF0aCwNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgIENvbnRyb2xsZXIsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9D T0xfQllfRFJJVkVSDQo+ID4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgLy8gRUZJX0FM UkVBRFlfU1RBUlRFRCBpcyBhbHNvIGFuIGVycm9yLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIENs b3NlIHRoZSBwcm90b2NvbCBiZWNhdXNlIHdlIGRvbid0IHVzZSBpdCBoZXJlLg0KPiA+ID4gKyAg Ly8NCj4gPiA+ICsgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQo+ID4gPiArICAgICAgICBDb250cm9s bGVyLA0KPiA+ID4gKyAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KPiA+ID4g KyAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCj4gPiA+ICsgICAgICAgIENvbnRy b2xsZXINCj4gPiA+ICsgICAgICAgICk7DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAg Ly8gTm93IHRlc3QgdGhlIEVtYmVkZGVkTm9uRGlzY292ZXJhYmxlSW9Qcm90b2NvbC4NCj4gPiA+ ICsgIC8vDQo+ID4gPiArICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAmZ0Vk a2lpTm9uRGlzY292ZXJhYmxlRGV2aWNlUHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgIChWT0lEICoqKSAmRGV2LA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIFRoaXMtPkRy aXZlckJpbmRpbmdIYW5kbGUsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9CWV9EUklWRVINCj4g PiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgZ0JT LT5DbG9zZVByb3RvY29sICgNCj4gPiA+ICsgICAgICAgICBDb250cm9sbGVyLA0KPiA+ID4gKyAg ICAgICAgICZnRWRraWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQcm90b2NvbEd1aWQsDQo+ID4gPiAr ICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCj4gPiA+ICsgICAgICAgICBDb250 cm9sbGVyDQo+ID4gPiArICAgICAgICAgKTsNCj4gPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTdGFydHMgYSBkZXZpY2Ug Y29udHJvbGxlciBvciBhIGJ1cyBjb250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhlIFN0 YXJ0KCkgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBFRkkgYm9v dCBzZXJ2aWNlDQo+ID4gPiArICBDb25uZWN0Q29udHJvbGxlcigpLg0KPiA+ID4gKyAgQXMgYSBy ZXN1bHQsIG11Y2ggb2YgdGhlIGVycm9yIGNoZWNraW5nIG9uIHRoZSBwYXJhbWV0ZXJzIHRvIFN0 YXJ0KCkgaGFzDQo+ID4gPiArICBiZWVuIG1vdmVkIGludG8gdGhpcw0KPiA+ID4gKyAgY29tbW9u IGJvb3Qgc2VydmljZS4gSXQgaXMgbGVnYWwgdG8gY2FsbCBTdGFydCgpIGZyb20gb3RoZXIgbG9j YXRpb25zLA0KPiA+ID4gKyAgYnV0IHRoZSBmb2xsb3dpbmcgY2FsbGluZyByZXN0cmljdGlvbnMg bXVzdCBiZSBmb2xsb3dlZCBvciB0aGUgc3lzdGVtDQo+ID4gPiArICBiZWhhdmlvciB3aWxsIG5v dCBiZSBkZXRlcm1pbmlzdGljLg0KPiA+ID4gKyAgMS4gQ29udHJvbGxlckhhbmRsZSBtdXN0IGJl IGEgdmFsaWQgRUZJX0hBTkRMRS4NCj4gPiA+ICsgIDIuIElmIFJlbWFpbmluZ0RldmljZVBhdGgg aXMgbm90IE5VTEwsIHRoZW4gaXQgbXVzdCBiZSBhIHBvaW50ZXIgdG8gYQ0KPiA+ID4gKyAgICAg bmF0dXJhbGx5IGFsaWduZWQgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MLg0KPiA+ID4gKyAgMy4g UHJpb3IgdG8gY2FsbGluZyBTdGFydCgpLCB0aGUgU3VwcG9ydGVkKCkgZnVuY3Rpb24gZm9yIHRo ZSBkcml2ZXINCj4gPiA+ICsgICAgIHNwZWNpZmllZCBieSBUaGlzIG11c3QgaGF2ZSBiZWVuIGNh bGxlZCB3aXRoIHRoZSBzYW1lIGNhbGxpbmcNCj4gPiBwYXJhbWV0ZXJzLA0KPiA+ID4gKyAgICAg YW5kIFN1cHBvcnRlZCgpIG11c3QgaGF2ZSByZXR1cm5lZCBFRklfU1VDQ0VTUy4NCj4gPiA+ICsN Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0 aGUNCj4gPiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ29u dHJvbGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byBzdGFydC4N Cj4gPiBUaGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5k bGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wgaW50ZXJmYWNlDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHN1cHBsaWVzIGFuIEkvTyBhYnN0cmFjdGlvbiB0 byB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlci4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIFJlbWFpbmluZ0RldmljZVBhdGggIEEgcG9pbnRlciB0byB0 aGUgcmVtYWluaW5nIHBvcnRpb24NCj4gb2YNCj4gPiBhDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aC4gIFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9y ZWQgYnkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBk cml2ZXJzLCBhbmQgaXMgb3B0aW9uYWwgZm9yIGJ1cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZHJpdmVycy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZvciBhIGJ1cyBkcml2ZXIsIGlmIHRoaXMgcGFyYW1ldGVyIGlzIE5VTEws DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGhhbmRsZXMg Zm9yIGFsbCB0aGUgY2hpbGRyZW4gb2YNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENvbnRyb2xsZXIgYXJlIGNyZWF0ZWQgYnkgdGhpcyBkcml2ZXIuDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBu b3QgTlVMTCBhbmQgdGhlIGZpcnN0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEZXZpY2UgUGF0aCBOb2RlIGlzIG5vdCB0aGUgRW5kIG9mIERldmljZQ0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aCBOb2RlLCB0aGVuIG9ubHkg dGhlIGhhbmRsZSBmb3IgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGlsZCBkZXZpY2Ugc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdCBEZXZpY2UNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGggTm9kZSBvZiBSZW1haW5pbmdE ZXZpY2VQYXRoIGlzIGNyZWF0ZWQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJ5IHRoaXMgZHJpdmVyLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSWYgdGhlIGZpcnN0IERldmljZSBQYXRoIE5vZGUgb2YNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgdGhlIEVu ZCBvZiBEZXZpY2UgUGF0aA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTm9kZSwgbm8gY2hpbGQgaGFuZGxlIGlzIGNyZWF0ZWQgYnkgdGhpcw0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIGRldmljZSB3YXMgc3RhcnRlZC4N Cj4gPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgIFRoZSBkZXZpY2UgY291 bGQgbm90IGJlIHN0YXJ0ZWQgZHVlIHRvDQo+IGENCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRldmljZSBlcnJvci4gQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4N Cj4gPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgIFRoZSByZXF1ZXN0IGNv dWxkIG5vdCBiZQ0KPiA+IGNvbXBsZXRlZCBkdWUgdG8gYQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGFjayBvZiByZXNvdXJjZXMuDQo+ID4gPiArICBAcmV0dmFs IE90aGVycyAgICAgICAgICAgICAgICAgICBUaGUgZHJpdmVyIGZhaWxkZWQgdG8gc3RhcnQgdGhl IGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRHdNbWNIY0RyaXZlckJpbmRpbmdTdGFydCAoDQo+ID4gPiArICBJTiBF RklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgICAgICpUaGlzLA0KPiA+ID4gKyAgSU4gRUZJX0hB TkRMRSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ID4gKyAgSU4gRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICAgICAgICAqUmVtYWluaW5nRGV2aWNlUGF0aA0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsN Cj4gPiA+ICsNCj4gPiA+ICsgIE5PTl9ESVNDT1ZFUkFCTEVfREVWSUNFICAgICAgICAgKkRldjsN Cj4gPiA+ICsNCj4gPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFQ cmVzZW50Ow0KPiA+ID4gKyAgRFdNTUNfQ0FSRF9UWVBFX0RFVEVDVF9ST1VUSU5FICAqUm91dGlu ZTsNCj4gPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4g PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRpbmVOdW07DQo+ID4gPiAr ICBQTEFURk9STV9EV19NTUNfUFJPVE9DT0wgICAgICAgICpQbGF0Zm9ybUR3TW1jOw0KPiA+ID4g Kw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgJmdQbGF0Zm9ybUR3TW1jUHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgIE5VTEwsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZQbGF0 Zm9ybUR3TW1jDQo+ID4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdfRVJST1IsICJlcnIgJWQi LCBfX0xJTkVfXykpOw0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgJmdFZGtp aU5vbkRpc2NvdmVyYWJsZURldmljZVByb3RvY29sR3VpZCwNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAoVk9JRCAqKikgJkRldiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBUaGlzLT5Ecml2 ZXJCaW5kaW5nSGFuZGxlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfQllfRFJJVkVSDQo+ID4g PiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdfRVJST1IsICJlcnIgJWQiLCBfX0xJTkVfXykpOw0K PiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg UHJpdmF0ZSA9IEFsbG9jYXRlQ29weVBvb2wgKHNpemVvZiAoRFdfTU1DX0hDX1BSSVZBVEVfREFU QSksDQo+ID4gJmdEd01tY0hjVGVtcGxhdGUpOw0KPiA+ID4gKyAgaWYgKFByaXZhdGUgPT0gTlVM TCkgew0KPiA+ID4gKyAgREVCVUcgKChERUJVR19FUlJPUiwgImVyciAlZCIsIF9fTElORV9fKSk7 DQo+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gKyAgICBn b3RvIERvbmU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBQcml2YXRlLT5Db250cm9s bGVySGFuZGxlID0gQ29udHJvbGxlcjsNCj4gPiA+ICsgIFByaXZhdGUtPkRldkJhc2UgICAgICAg ICAgPSBEZXYtPlJlc291cmNlc1swXS5BZGRyUmFuZ2VNaW47DQo+ID4gPiArICBQcml2YXRlLT5Q bGF0Zm9ybUR3TW1jICAgID0gUGxhdGZvcm1Ed01tYzsNCj4gPiA+ICsgIEluaXRpYWxpemVMaXN0 SGVhZCAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFByaXZh dGUtPlBsYXRmb3JtRHdNbWMtPkdldENhcGFiaWxpdHkgKENvbnRyb2xsZXIsIDAsDQo+ID4gJlBy aXZhdGUtPkNhcGFiaWxpdHlbMF0pOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBpZiAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5CYXNlQ2xrRnJlcSA9PSAwKSB7DQo+ ID4gPiArICAgIGdvdG8gRG9uZTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIER1bXBD YXBhYmlsaXR5UmVnICgwLCAmUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXSk7DQo+ID4gPiArDQo+ID4g PiArICBNZWRpYVByZXNlbnQgPSBGQUxTRTsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBy aXZhdGUtPlBsYXRmb3JtRHdNbWMtPkNhcmREZXRlY3QgKENvbnRyb2xsZXIsIDApOw0KPiA+ID4g KyAgU3RhdHVzID0gRHdNbWNIY0NhcmREZXRlY3QgKFByaXZhdGUtPkRldkJhc2UsIENvbnRyb2xs ZXIsIDAsDQo+ID4gJk1lZGlhUHJlc2VudCk7DQo+ID4gPiArICBpZiAoTWVkaWFQcmVzZW50ID09 IEZBTFNFKSB7DQo+ID4gPiArICAgIGdvdG8gRG9uZTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4g PiA+ICsgIC8vDQo+ID4gPiArICAvLyBJbml0aWFsaXplIHNsb3QgYW5kIHN0YXJ0IGlkZW50aWZp Y2F0aW9uIHByb2Nlc3MgZm9yIHRoZSBuZXcgYXR0YWNoZWQNCj4gPiBkZXZpY2UNCj4gPiA+ICsg IC8vDQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjSW5pdEhvc3QgKFByaXZhdGUtPkRldkJhc2Us IFByaXZhdGUtPkNhcGFiaWxpdHlbMF0pOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiAr ICAvLw0KPiA+ID4gKyAgLy8gUmVzZXQgSEMNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBTdGF0dXMg PSBEd01tY0hjUmVzZXQgKFByaXZhdGUtPkRldkJhc2UsIFByaXZhdGUtPkNhcGFiaWxpdHlbMF0p Ow0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBnb3RvIERv bmU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBQcml2YXRlLT5TbG90WzBdLkNhcmRU eXBlID0gUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5DYXJkVHlwZTsNCj4gPiA+ICsgIFByaXZhdGUt PlNsb3RbMF0uRW5hYmxlID0gVFJVRTsNCj4gPiA+ICsgIFByaXZhdGUtPlNsb3RbMF0uTWVkaWFQ cmVzZW50ID0gVFJVRTsNCj4gPiA+ICsNCj4gPiA+ICsgIFJvdXRpbmVOdW0gPSBzaXplb2YgKG1D YXJkVHlwZURldGVjdFJvdXRpbmVUYWJsZSkgLyBzaXplb2YNCj4gPiAoRFdNTUNfQ0FSRF9UWVBF X0RFVEVDVF9ST1VUSU5FKTsNCj4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFJvdXRp bmVOdW07IEluZGV4KyspIHsNCj4gPiA+ICsgICAgUm91dGluZSA9ICZtQ2FyZFR5cGVEZXRlY3RS b3V0aW5lVGFibGVbSW5kZXhdOw0KPiA+ID4gKyAgICBpZiAoKlJvdXRpbmUgIT0gTlVMTCkgew0K PiA+ID4gKyAgICAgIFN0YXR1cyA9ICgqUm91dGluZSkgKFByaXZhdGUpOw0KPiA+ID4gKyAgICAg IGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+ ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8v DQo+ID4gPiArICAvLyBTdGFydCB0aGUgYXN5bmNocm9ub3VzIEkvTyBtb25pdG9yDQo+ID4gPiAr ICAvLw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgRVZUX1RJTUVSIHwgRVZUX05PVElGWV9TSUdOQUwsDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgVFBMX05PVElGWSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBQcm9jZXNz QXN5bmNUYXNrTGlzdCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBQcml2YXRlLA0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICZQcml2YXRlLT5UaW1lckV2ZW50DQo+ID4gPiArICAgICAgICAg ICAgICAgICAgKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsg ICAgZ290byBEb25lOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JT LT5TZXRUaW1lciAoUHJpdmF0ZS0+VGltZXJFdmVudCwgVGltZXJQZXJpb2RpYywNCj4gPiBEV19N TUNfSENfQVNZTkNfVElNRVIpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAvLw0K PiA+ID4gKyAgLy8gU3RhcnQgdGhlIFNkIHJlbW92YWJsZSBkZXZpY2UgY29ubmVjdGlvbiBlbnVt ZXJhdGlvbg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnQg KA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIEVWVF9USU1FUiB8IEVWVF9OT1RJRllfU0lHTkFM LA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIFRQTF9DQUxMQkFDSywNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICBEd01tY0hjRW51bWVyYXRlRGV2aWNlLA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgIFByaXZhdGUsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgJlByaXZhdGUtPkNvbm5lY3RF dmVudA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gPiArICAgIGdvdG8gRG9uZTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsN Cj4gPiA+ICsgIFN0YXR1cyA9IGdCUy0+U2V0VGltZXIgKFByaXZhdGUtPkNvbm5lY3RFdmVudCwg VGltZXJQZXJpb2RpYywNCj4gPiBEV19NTUNfSENfRU5VTV9USU1FUik7DQo+ID4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIGdvdG8gRG9uZTsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IGdCUy0+SW5zdGFsbE11bHRpcGxlUHJvdG9jb2xJ bnRlcmZhY2VzICgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAmQ29udHJvbGxlciwNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAmZ0VmaVNkTW1jUGFzc1RocnVQcm90b2NvbEd1aWQsDQo+ID4g PiArICAgICAgICAgICAgICAgICAgJihQcml2YXRlLT5QYXNzVGhydSksDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgTlVMTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiArDQo+ ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJEd01tY0hjRHJpdmVyQmluZGluZ1N0YXJ0OiAl ciBFbmQgb24NCj4gJXhcbiIsDQo+ID4gU3RhdHVzLCBDb250cm9sbGVyKSk7DQo+ID4gPiArDQo+ ID4gPiArRG9uZToNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsg ICAgaWYgKChQcml2YXRlICE9IE5VTEwpICYmIChQcml2YXRlLT5UaW1lckV2ZW50ICE9IE5VTEwp KSB7DQo+ID4gPiArICAgICAgZ0JTLT5DbG9zZUV2ZW50IChQcml2YXRlLT5UaW1lckV2ZW50KTsN Cj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICBpZiAoKFByaXZhdGUgIT0gTlVMTCkg JiYgKFByaXZhdGUtPkNvbm5lY3RFdmVudCAhPSBOVUxMKSkgew0KPiA+ID4gKyAgICAgIGdCUy0+ Q2xvc2VFdmVudCAoUHJpdmF0ZS0+Q29ubmVjdEV2ZW50KTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgICBpZiAoUHJpdmF0ZSAhPSBOVUxMKSB7DQo+ID4gPiArICAgICAgRnJlZVBv b2wgKFByaXZhdGUpOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiAr ICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFN0b3BzIGEgZGV2aWNlIGNvbnRyb2xsZXIgb3IgYSBidXMgY29udHJvbGxlci4NCj4gPiA+ICsN Cj4gPiA+ICsgIFRoZSBTdG9wKCkgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBm cm9tIHRoZSBFRkkgYm9vdCBzZXJ2aWNlDQo+ID4gPiArICBEaXNjb25uZWN0Q29udHJvbGxlcigp Lg0KPiA+ID4gKyAgQXMgYSByZXN1bHQsIG11Y2ggb2YgdGhlIGVycm9yIGNoZWNraW5nIG9uIHRo ZSBwYXJhbWV0ZXJzIHRvIFN0b3AoKSBoYXMNCj4gPiBiZWVuDQo+ID4gPiArICBtb3ZlZCBpbnRv IHRoaXMgY29tbW9uIGJvb3Qgc2VydmljZS4gSXQgaXMgbGVnYWwgdG8gY2FsbCBTdG9wKCkgZnJv bQ0KPiBvdGhlcg0KPiA+ID4gKyAgbG9jYXRpb25zLCBidXQgdGhlIGZvbGxvd2luZyBjYWxsaW5n IHJlc3RyaWN0aW9ucyBtdXN0IGJlIGZvbGxvd2VkIG9yIHRoZQ0KPiA+ID4gKyAgc3lzdGVtIGJl aGF2aW9yIHdpbGwgbm90IGJlIGRldGVybWluaXN0aWMuDQo+ID4gPiArICAxLiBDb250cm9sbGVy SGFuZGxlIG11c3QgYmUgYSB2YWxpZCBFRklfSEFORExFIHRoYXQgd2FzIHVzZWQgb24gYQ0KPiA+ IHByZXZpb3VzDQo+ID4gPiArICAgICBjYWxsIHRvIHRoaXMgc2FtZSBkcml2ZXIncyBTdGFydCgp IGZ1bmN0aW9uLg0KPiA+ID4gKyAgMi4gVGhlIGZpcnN0IE51bWJlck9mQ2hpbGRyZW4gaGFuZGxl cyBvZiBDaGlsZEhhbmRsZUJ1ZmZlciBtdXN0IGFsbA0KPiBiZSBhDQo+ID4gdmFsaWQNCj4gPiA+ ICsgICAgIEVGSV9IQU5ETEUuIEluIGFkZGl0aW9uLCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBtdXN0 IGhhdmUgYmVlbiBjcmVhdGVkDQo+ID4gaW4NCj4gPiA+ICsgICAgIHRoaXMgZHJpdmVyJ3MgU3Rh cnQoKSBmdW5jdGlvbiwgYW5kIHRoZSBTdGFydCgpIGZ1bmN0aW9uIG11c3QgaGF2ZSBjYWxsZWQN Cj4gPiA+ICsgICAgIE9wZW5Qcm90b2NvbCgpIG9uIENvbnRyb2xsZXJIYW5kbGUgd2l0aCBhbiBB dHRyaWJ1dGUgb2YNCj4gPiA+ICsgICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0NISUxEX0NPTlRS T0xMRVIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgIEEgaGFuZGxlIHRvIHRoZSBkZXZpY2UgYmVpbmcgc3Rv cHBlZC4NCj4gPiBUaGUgaGFuZGxlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtdXN0IHN1cHBvcnQgYSBidXMgc3BlY2lmaWMgSS9PIHByb3RvY29sIGZvciB0aGUNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0byB1c2UgdG8gc3Rv cCB0aGUgZGV2aWNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgTnVtYmVyT2ZDaGlsZHJlbiAgVGhl IG51bWJlciBvZiBjaGlsZCBkZXZpY2UgaGFuZGxlcyBpbg0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ2hpbGRIYW5kbGVCdWZmZXIuDQo+ID4gPiArICBAcGFyYW1baW5d ICBDaGlsZEhhbmRsZUJ1ZmZlciBBbiBhcnJheSBvZiBjaGlsZCBoYW5kbGVzIHRvIGJlIGZyZWVk Lg0KPiA+IE1heSBiZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCBpZiBOdW1iZXJPZkNoaWxkcmVuIGlzIDAuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBzdG9wcGVkLg0KPiA+ID4gKyAgQHJl dHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3RvcHBl ZCBkdWUgdG8NCj4gYQ0KPiA+IGRldmljZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJyb3IuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0R3TW1jSGNEcml2ZXJCaW5kaW5nU3RvcCAoDQo+ID4gPiAr ICBJTiAgRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiA+ICsgIElO ICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gPiArICBJ TiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZkNoaWxkcmVuLA0KPiA+ ID4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgKkNoaWxkSGFuZGxlQnVm ZmVyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJP VE9DT0wgICAgICAgKlBhc3NUaHJ1Ow0KPiA+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAg ICAgICAgICAgICAgKlByaXZhdGU7DQo+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAg ICAgICAgICAgICAqTGluazsNCj4gPiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAgICAg ICAgICAgICpOZXh0TGluazsNCj4gPiA+ICsgIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAg ICAgICAgICpUcmI7DQo+ID4gPiArDQo+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJEd01t Y0hjRHJpdmVyQmluZGluZ1N0b3A6IFN0YXJ0XG4iKSk7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0 dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgQ29udHJv bGxlciwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVNkTW1jUGFzc1RocnVQcm90b2Nv bEd1aWQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQqKikgJlBhc3NUaHJ1LA0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBF RklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAp Ow0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICByZXR1cm4g U3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19I Q19QUklWQVRFX0ZST01fVEhJUyAoUGFzc1RocnUpOw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8v IENsb3NlIE5vbi1CbG9ja2luZyB0aW1lciBhbmQgZnJlZSBUYXNrIGxpc3QuDQo+ID4gPiArICAv Lw0KPiA+ID4gKyAgaWYgKFByaXZhdGUtPlRpbWVyRXZlbnQgIT0gTlVMTCkgew0KPiA+ID4gKyAg ICBnQlMtPkNsb3NlRXZlbnQgKFByaXZhdGUtPlRpbWVyRXZlbnQpOw0KPiA+ID4gKyAgICBQcml2 YXRlLT5UaW1lckV2ZW50ID0gTlVMTDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIGlmIChQcml2YXRl LT5Db25uZWN0RXZlbnQgIT0gTlVMTCkgew0KPiA+ID4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKFBy aXZhdGUtPkNvbm5lY3RFdmVudCk7DQo+ID4gPiArICAgIFByaXZhdGUtPkNvbm5lY3RFdmVudCA9 IE5VTEw7DQo+ID4gPiArICB9DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gQXMgdGhlIHRpbWVy IGlzIGNsb3NlZCwgdGhlcmUgaXMgbm8gbmVlZHMgdG8gdXNlIFRQTCBsb2NrIHRvDQo+ID4gPiAr ICAvLyBwcm90ZWN0IHRoZSBjcml0aWNhbCByZWdpb24gInF1ZXVlIi4NCj4gPiA+ICsgIC8vDQo+ ID4gPiArICBmb3IgKExpbmsgPSBHZXRGaXJzdE5vZGUgKCZQcml2YXRlLT5RdWV1ZSk7DQo+ID4g PiArICAgICAgICFJc051bGwgKCZQcml2YXRlLT5RdWV1ZSwgTGluayk7DQo+ID4gPiArICAgICAg IExpbmsgPSBOZXh0TGluaykgew0KPiA+ID4gKyAgICBOZXh0TGluayA9IEdldE5leHROb2RlICgm UHJpdmF0ZS0+UXVldWUsIExpbmspOw0KPiA+ID4gKyAgICBSZW1vdmVFbnRyeUxpc3QgKExpbmsp Ow0KPiA+ID4gKyAgICBUcmIgPSBEV19NTUNfSENfVFJCX0ZST01fVEhJUyAoTGluayk7DQo+ID4g PiArICAgIFRyYi0+UGFja2V0LT5UcmFuc2FjdGlvblN0YXR1cyA9IEVGSV9BQk9SVEVEOw0KPiA+ ID4gKyAgICBnQlMtPlNpZ25hbEV2ZW50IChUcmItPkV2ZW50KTsNCj4gPiA+ICsgICAgRHdNbWNG cmVlVHJiIChUcmIpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsg IC8vIFVuaW5zdGFsbCBCbG9jayBJL08gcHJvdG9jb2wgZnJvbSB0aGUgZGV2aWNlIGhhbmRsZQ0K PiA+ID4gKyAgLy8NCj4gPiA+ICsgIFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsUHJvdG9jb2xJbnRl cmZhY2UgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgJmdFZmlTZE1tY1Bhc3NUaHJ1UHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICYoUHJpdmF0ZS0+UGFzc1RocnUpDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgKTsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g PiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGdC Uy0+Q2xvc2VQcm90b2NvbCAoDQo+ID4gPiArICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ICsg ICAgICAgICAmZ0VmaVBjaUlvUHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgICAgICAgIFRoaXMtPkRy aXZlckJpbmRpbmdIYW5kbGUsDQo+ID4gPiArICAgICAgICAgQ29udHJvbGxlcg0KPiA+ID4gKyAg ICAgICAgICk7DQo+ID4gPiArDQo+ID4gPiArICBGcmVlUG9vbCAoUHJpdmF0ZSk7DQo+ID4gPiAr DQo+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJEd01tY0hjRHJpdmVyQmluZGluZ1N0b3A6 IEVuZCB3aXRoICVyXG4iLA0KPiA+IFN0YXR1cykpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJu IFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5kcyBT RCBjb21tYW5kIHRvIGFuIFNEIGNhcmQgdGhhdCBpcyBhdHRhY2hlZCB0byB0aGUgU0QgY29udHJv bGxlci4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoZSBQYXNzVGhydSgpIGZ1bmN0aW9uIHNlbmRzIHRo ZSBTRCBjb21tYW5kIHNwZWNpZmllZCBieSBQYWNrZXQgdG8NCj4gPiB0aGUgU0QNCj4gPiA+ICsg IGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QuDQo+ID4gPiArDQo+ID4gPiArICBJZiBQYWNrZXQgaXMg c3VjY2Vzc2Z1bGx5IHNlbnQgdG8gdGhlIFNEIGNhcmQsIHRoZW4gRUZJX1NVQ0NFU1MgaXMNCj4g PiByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIGEgZGV2aWNlIGVycm9yIG9jY3VycyB3 aGlsZSBzZW5kaW5nIHRoZSBQYWNrZXQsIHRoZW4NCj4gPiBFRklfREVWSUNFX0VSUk9SIGlzDQo+ ID4gPiArICByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIFNsb3QgaXMgbm90IGluIGEg dmFsaWQgcmFuZ2UgZm9yIHRoZSBTRCBjb250cm9sbGVyLCB0aGVuDQo+ID4gPiArICBFRklfSU5W QUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiArICBJZiBQYWNrZXQg ZGVmaW5lcyBhIGRhdGEgY29tbWFuZCBidXQgYm90aCBJbkRhdGFCdWZmZXIgYW5kDQo+ID4gT3V0 RGF0YUJ1ZmZlciBhcmUNCj4gPiA+ICsgIE5VTEwsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyBy ZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIFRoaXMgICAgICAgICAg IEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gPiArICBA cGFyYW1baW5dICAgICBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNh cmQgdG8gc2VuZCB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bW1hbmQgdG8uDQo+ID4gPiArICBAcGFyYW1baW4sb3V0XSBQYWNrZXQgICAgICAgICBBIHBvaW50 ZXIgdG8gdGhlIFNEIGNvbW1hbmQgZGF0YQ0KPiBzdHJ1Y3R1cmUuDQo+ID4gPiArICBAcGFyYW1b aW5dICAgICBFdmVudCAgICAgICAgICBJZiBFdmVudCBpcyBOVUxMLCBibG9ja2luZyBJL08gaXMg cGVyZm9ybWVkLiBJZg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZl bnQgaXMgbm90IE5VTEwsIHRoZW4gbm9uYmxvY2tpbmcgSS9PIGlzDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQsIGFuZCBFdmVudCB3aWxsIGJlIHNpZ25h bGVkIHdoZW4gdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNr ZXQgY29tcGxldGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIFNEIENvbW1hbmQgUGFja2V0IHdhcyBzZW50IGJ5IHRoZQ0KPiA+IGhvc3QuDQo+ ID4gPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBBIGRldmljZSBlcnJvciBvY2N1 cnJlZCB3aGlsZQ0KPiBhdHRlbXB0aW5nDQo+ID4gdG8gc2VuZA0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIFNEIGNvbW1hbmQgUGFja2V0Lg0KPiA+ID4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgUGFja2V0LCBTbG90LCBvciB0aGUgY29udGVudHMg b2YgdGhlDQo+ID4gUGFja2V0IGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnZhbGlkLg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgUGFj a2V0IGRlZmluZXMgYSBkYXRhIGNvbW1hbmQgYnV0DQo+ID4gYm90aA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5EYXRhQnVmZmVyIGFuZCBPdXREYXRhQnVmZmVyIGFy ZSBOVUxMLg0KPiA+ID4gKyAgQHJldHZhbCBFRklfTk9fTUVESUEgICAgICAgICAgU0QgRGV2aWNl IG5vdCBwcmVzZW50IGluIHRoZSBTbG90Lg0KPiA+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JU RUQgICAgICAgVGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5IHRoZSBTRA0KPiA+IENvbW1hbmQgUGFj a2V0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3Qgc3VwcG9y dGVkIGJ5IHRoZSBob3N0IGNvbnRyb2xsZXIuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9CQURfQlVG RkVSX1NJWkUgICBUaGUgSW5UcmFuc2Zlckxlbmd0aCBvcg0KPiA+IE91dFRyYW5zZmVyTGVuZ3Ro DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRzIHRoZSBsaW1p dCBzdXBwb3J0ZWQgYnkgU0QgY2FyZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCBpLmUuIGlmIHRoZSBudW1iZXIgb2YgYnl0ZXMgZXhjZWVkIHRoZSBMYXN0DQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQkEpLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY1Bhc3NU aHJ1UGFzc1RocnUgKA0KPiA+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RP Q09MICAgICAgICAgKlRoaXMsDQo+ID4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ID4gKyAgSU4gT1VUIEVGSV9TRF9NTUNfUEFTU19U SFJVX0NPTU1BTkRfUEFDS0VUICAgKlBhY2tldCwNCj4gPiA+ICsgIElOICAgICBFRklfRVZFTlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgIE9QVElPTkFMDQo+ID4gPiArICAp DQo+ID4gPiArew0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICpQcml2YXRlOw0K PiA+ID4gKyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAqVHJiOw0KPiA+ID4gKyAg RUZJX1RQTCAgICAgICAgICAgICAgICAgICAgICAgICBPbGRUcGw7DQo+ID4gPiArDQo+ID4gPiAr ICBpZiAoKFRoaXMgPT0gTlVMTCkgfHwgKFBhY2tldCA9PSBOVUxMKSkgew0KPiA+ID4gKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgaWYgKChQYWNrZXQtPlNkTW1jQ21kQmxrID09IE5VTEwpIHx8IChQYWNrZXQtPlNkTW1jU3Rh dHVzQmxrID09DQo+ID4gTlVMTCkpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmICgoUGFja2V0LT5PdXRE YXRhQnVmZmVyID09IE5VTEwpICYmIChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoDQo+ICE9DQo+ ID4gMCkpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmICgoUGFja2V0LT5JbkRhdGFCdWZmZXIgPT0gTlVM TCkgJiYgKFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCAhPQ0KPiAwKSkNCj4gPiB7DQo+ID4gPiAr ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBQcml2YXRlID0gRFdfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChUaGlzKTsNCj4g PiA+ICsNCj4gPiA+ICsgIGlmICghUHJpdmF0ZS0+U2xvdFtTbG90XS5FbmFibGUpIHsNCj4gPiA+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsN Cj4gPiA+ICsgIGlmICghUHJpdmF0ZS0+U2xvdFtTbG90XS5NZWRpYVByZXNlbnQpIHsNCj4gPiA+ ICsgICAgcmV0dXJuIEVGSV9OT19NRURJQTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsg IFRyYiA9IER3TW1jQ3JlYXRlVHJiIChQcml2YXRlLCBTbG90LCBQYWNrZXQsIEV2ZW50KTsNCj4g PiA+ICsgIGlmIChUcmIgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+ID4gPiArICB9DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gSW1tZWRpYXRl bHkgcmV0dXJuIGZvciBhc3luYyBJL08uDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgaWYgKEV2ZW50 ICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFdhaXQgYXN5bmMgSS9PIGxpc3QgaXMg ZW1wdHkgYmVmb3JlIGV4ZWN1dGUgc3luYyBJL08gb3BlcmF0aW9uLg0KPiA+ID4gKyAgLy8NCj4g PiA+ICsgIHdoaWxlIChUUlVFKSB7DQo+ID4gPiArICAgIE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwg KFRQTF9OT1RJRlkpOw0KPiA+ID4gKyAgICBpZiAoSXNMaXN0RW1wdHkgKCZQcml2YXRlLT5RdWV1 ZSkpIHsNCj4gPiA+ICsgICAgICBnQlMtPlJlc3RvcmVUUEwgKE9sZFRwbCk7DQo+ID4gPiArICAg ICAgYnJlYWs7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgZ0JTLT5SZXN0b3JlVFBMIChPbGRU cGwpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gRHdNbWNXYWl0VHJi RW52IChQcml2YXRlLCBUcmIpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBTdGF0 dXMgPSBEd01tY0V4ZWNUcmIgKFByaXZhdGUsIFRyYik7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gPiArICAgIGdvdG8gRG9uZTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsN Cj4gPiA+ICsgIFN0YXR1cyA9IER3TW1jV2FpdFRyYlJlc3VsdCAoUHJpdmF0ZSwgVHJiKTsNCj4g PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgZ290byBEb25lOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gK0RvbmU6DQo+ID4gPiArICBpZiAoVHJiICE9IE5V TEwpIHsNCj4gPiA+ICsgICAgRHdNbWNGcmVlVHJiIChUcmIpOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBVc2VkIHRvIHJldHJpZXZlIG5leHQgc2xvdCBudW1iZXJzIHN1cHBvcnRlZCBi eSB0aGUgU0QgY29udHJvbGxlci4gVGhlDQo+ID4gPiArICBmdW5jdGlvbiByZXR1cm5zIGluZm9y bWF0aW9uIGFib3V0IGFsbCBhdmFpbGFibGUgc2xvdHMgKHBvcHVsYXRlZCBvcg0KPiA+ID4gKyAg bm90LXBvcHVsYXRlZCkuDQo+ID4gPiArDQo+ID4gPiArICBUaGUgR2V0TmV4dFNsb3QoKSBmdW5j dGlvbiByZXRyaWV2ZXMgdGhlIG5leHQgc2xvdCBudW1iZXIgb24gYW4gU0QNCj4gPiBjb250cm9s bGVyLg0KPiA+ID4gKyAgSWYgb24gaW5wdXQgU2xvdCBpcyAweEZGLCB0aGVuIHRoZSBzbG90IG51 bWJlciBvZiB0aGUgZmlyc3Qgc2xvdCBvbiB0aGUgU0QNCj4gPiA+ICsgIGNvbnRyb2xsZXIgaXMg cmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiArICBJZiBTbG90IGlzIGEgc2xvdCBudW1iZXIgdGhh dCB3YXMgcmV0dXJuZWQgb24gYSBwcmV2aW91cyBjYWxsIHRvDQo+ID4gPiArICBHZXROZXh0U2xv dCgpLCB0aGVuIHRoZSBzbG90IG51bWJlciBvZiB0aGUgbmV4dCBzbG90IG9uIHRoZSBTRA0KPiBj b250cm9sbGVyDQo+ID4gaXMNCj4gPiA+ICsgIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAg SWYgU2xvdCBpcyBub3QgMHhGRiBhbmQgU2xvdCB3YXMgbm90IHJldHVybmVkIG9uIGEgcHJldmlv dXMgY2FsbCB0bw0KPiA+ID4gKyAgR2V0TmV4dFNsb3QoKSwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IGlzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgU2xvdCBpcyB0aGUgc2xvdCBudW1i ZXIgb2YgdGhlIGxhc3Qgc2xvdCBvbiB0aGUgU0QgY29udHJvbGxlciwgdGhlbg0KPiA+ID4gKyAg RUZJX05PVF9GT1VORCBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0g ICAgIFRoaXMgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1NQ19QQVNT X1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu c3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luLG91dF0gU2xvdCAgICAgICAgICAgT24gaW5wdXQs IGEgcG9pbnRlciB0byBhIHNsb3QgbnVtYmVyIG9uIHRoZQ0KPiBTRA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci4NCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgYSBwb2ludGVyIHRvIHRoZSBuZXh0IHNsb3Qg bnVtYmVyIG9uDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0Qg Y29udHJvbGxlci4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuIGlu cHV0IHZhbHVlIG9mIDB4RkYgcmV0cmlldmVzIHRoZSBmaXJzdCBzbG90DQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb24gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgbmV4dCBz bG90IG51bWJlciBvbiB0aGUgU0QgY29udHJvbGxlcg0KPiA+IHdhcw0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgaW4gU2xvdC4NCj4gPiA+ICsgIEByZXR2 YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZXJlIGFyZSBubyBtb3JlIHNsb3RzIG9uIHRoaXMg U0QNCj4gPiBjb250cm9sbGVyLg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgU2xvdCBpcyBub3QgMHhGRiBhbmQgU2xvdCB3YXMgbm90DQo+ID4gcmV0dXJuZWQgb24gYQ0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgY2FsbCB0byBH ZXROZXh0U2xvdCgpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY1Bhc3NUaHJ1R2V0TmV4dFNsb3QgKA0KPiA+ID4gKyAg SU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgICAqVGhpcywNCj4gPiA+ ICsgIElOIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNsb3QNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAg ICAgICpQcml2YXRlOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChUaGlzID09IE5VTEwpIHx8IChT bG90ID09IE5VTEwpKSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBQcml2YXRlID0gRFdfTU1DX0hDX1BSSVZB VEVfRlJPTV9USElTIChUaGlzKTsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmICgqU2xvdCA9PSAweEZG KSB7DQo+ID4gPiArICAgIGlmIChQcml2YXRlLT5TbG90WzBdLkVuYWJsZSkgew0KPiA+ID4gKyAg ICAgICpTbG90ID0gMDsNCj4gPiA+ICsgICAgICBQcml2YXRlLT5QcmV2aW91c1Nsb3QgPSAwOw0K PiA+ID4gKyAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAg ICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiA+ICsgIH0gZWxzZSBpZiAoKlNsb3QgPT0gUHJp dmF0ZS0+UHJldmlvdXNTbG90KSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0K PiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gPiA+ICsgIH0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBV c2VkIHRvIGFsbG9jYXRlIGFuZCBidWlsZCBhIGRldmljZSBwYXRoIG5vZGUgZm9yIGFuIFNEIGNh cmQgb24gdGhlIFNEDQo+ID4gPiArICBjb250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhl IEJ1aWxkRGV2aWNlUGF0aCgpIGZ1bmN0aW9uIGFsbG9jYXRlcyBhbmQgYnVpbGRzIGEgc2luZ2xl IGRldmljZQ0KPiBub2RlDQo+ID4gPiArICBmb3IgdGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNs b3QuDQo+ID4gPiArDQo+ID4gPiArICBJZiB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBp cyBub3QgcHJlc2VudCBvbiB0aGUgU0QgY29udHJvbGxlciwgdGhlbg0KPiA+ID4gKyAgRUZJX05P VF9GT1VORCBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIERldmljZVBhdGggaXMg TlVMTCwgdGhlbiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ ID4gPiArICBJZiB0aGVyZSBhcmUgbm90IGVub3VnaCByZXNvdXJjZXMgdG8gYWxsb2NhdGUgdGhl IGRldmljZSBwYXRoIG5vZGUsDQo+IHRoZW4NCj4gPiA+ICsgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT IGlzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgT3RoZXJ3aXNlLCBEZXZpY2VQYXRoIGlz IGFsbG9jYXRlZCB3aXRoIHRoZSBib290IHNlcnZpY2UNCj4gQWxsb2NhdGVQb29sKCksDQo+ID4g PiArICB0aGUgY29udGVudHMgb2YgRGV2aWNlUGF0aCBhcmUgaW5pdGlhbGl6ZWQgdG8gZGVzY3Jp YmUgdGhlIFNEIGNhcmQNCj4gPiBzcGVjaWZpZWQNCj4gPiA+ICsgIGJ5IFNsb3QsIGFuZCBFRklf U1VDQ0VTUyBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIFRo aXMgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgU2xvdCAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBz bG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCBmb3INCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdoaWNoIGEgZGV2aWNlIHBhdGggbm9kZSBpcyB0byBiZSBhbGxvY2F0ZWQg YW5kDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdC4NCj4gPiA+ ICsgIEBwYXJhbVtpbixvdXRdIERldmljZVBhdGggICAgIEEgcG9pbnRlciB0byBhIHNpbmdsZSBk ZXZpY2UgcGF0aCBub2RlDQo+IHRoYXQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlc2NyaWJlcyB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4gVGhpcw0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaXMgcmVzcG9uc2li bGUgZm9yIGFsbG9jYXRpbmcgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBidWZmZXIgRGV2aWNlUGF0aCB3aXRoIHRoZSBib290IHNlcnZpY2UNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUG9vbCgpLiBJdCBpcyB0aGUgY2Fs bGVyJ3MgcmVzcG9uc2ktDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi aWxpdHkgdG8gZnJlZSBEZXZpY2VQYXRoIHdoZW4gdGhlIGNhbGxlciBpcw0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgd2l0aCBEZXZpY2VQYXRoLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGRldmljZSBw YXRoIG5vZGUgdGhhdCBkZXNjcmliZXMgdGhlIFNEDQo+ID4gY2FyZA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFNsb3Qgd2FzIGFsbG9jYXRlZCBh bmQgcmV0dXJuZWQgaW4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl dmljZVBhdGguDQo+ID4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgU0Qg Y2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBkb2VzIG5vdA0KPiA+IGV4aXN0IG9uDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29udHJvbGxlci4NCj4gPiA+ICsg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIERldmljZVBhdGggaXMgTlVMTC4NCj4gPiA+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIFRoZXJlIGFyZSBub3QgZW5vdWdoIHJl c291cmNlcyB0bw0KPiA+IGFsbG9jYXRlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEZXZpY2VQYXRoLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtEd01tY1Bhc3NUaHJ1QnVpbGREZXZpY2VQYXRoICgN Cj4gPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAqVGhp cywNCj4gPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT bG90LA0KPiA+ID4gKyAgSU4gT1VUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAg ICoqRGV2aWNlUGF0aA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIERXX01NQ19IQ19Q UklWQVRFX0RBVEEgICAgICAgICAgKlByaXZhdGU7DQo+ID4gPiArICBTRF9ERVZJQ0VfUEFUSCAg ICAgICAgICAgICAgICAgICpTZE5vZGU7DQo+ID4gPiArICBFTU1DX0RFVklDRV9QQVRIICAgICAg ICAgICAgICAgICpFbW1jTm9kZTsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmICgoVGhpcyA9PSBOVUxM KSB8fCAoRGV2aWNlUGF0aCA9PSBOVUxMKSB8fCAoU2xvdCA+PQ0KPiA+IERXX01NQ19IQ19NQVhf U0xPVCkpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9GUk9N X1RISVMgKFRoaXMpOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKCghUHJpdmF0ZS0+U2xvdFtTbG90 XS5FbmFibGUpIHx8ICghUHJpdmF0ZS0+U2xvdFtTbG90XS5NZWRpYVByZXNlbnQpKQ0KPiB7DQo+ ID4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgaWYgKFByaXZhdGUtPlNsb3RbU2xvdF0uQ2FyZFR5cGUgPT0gU2RDYXJkVHlwZSkgew0K PiA+ID4gKyAgICBTZE5vZGUgPSBBbGxvY2F0ZUNvcHlQb29sIChzaXplb2YgKFNEX0RFVklDRV9Q QVRIKSwNCj4gPiAmbVNkRHBUZW1wbGF0ZSk7DQo+ID4gPiArICAgIGlmIChTZE5vZGUgPT0gTlVM TCkgew0KPiA+ID4gKyAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ICsg ICAgfQ0KPiA+ID4gKyAgICBTZE5vZGUtPlNsb3ROdW1iZXIgPSBTbG90Ow0KPiA+ID4gKw0KPiA+ ID4gKyAgICAqRGV2aWNlUGF0aCA9IChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgU2ROb2Rl Ow0KPiA+ID4gKyAgfSBlbHNlIGlmIChQcml2YXRlLT5TbG90W1Nsb3RdLkNhcmRUeXBlID09IEVt bWNDYXJkVHlwZSkgew0KPiA+ID4gKyAgICBFbW1jTm9kZSA9IEFsbG9jYXRlQ29weVBvb2wgKHNp emVvZiAoRU1NQ19ERVZJQ0VfUEFUSCksDQo+ID4gJm1FbW1jRHBUZW1wbGF0ZSk7DQo+ID4gPiAr ICAgIGlmIChFbW1jTm9kZSA9PSBOVUxMKSB7DQo+ID4gPiArICAgICAgcmV0dXJuIEVGSV9PVVRf T0ZfUkVTT1VSQ0VTOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIEVtbWNOb2RlLT5TbG90TnVt YmVyID0gU2xvdDsNCj4gPiA+ICsNCj4gPiA+ICsgICAgKkRldmljZVBhdGggPSAoRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICopIEVtbWNOb2RlOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsg ICAgLy8NCj4gPiA+ICsgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBTRCBhbmQgRU1N QyB0d28gZGV2aWNlIG5vZGVzLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICByZXR1cm4gRUZJ X05PVF9GT1VORDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBUaGlzIGZ1bmN0 aW9uIHJldHJpZXZlcyBhbiBTRCBjYXJkIHNsb3QgbnVtYmVyIGJhc2VkIG9uIHRoZSBpbnB1dA0K PiBkZXZpY2UNCj4gPiBwYXRoLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhlIEdldFNsb3ROdW1iZXIo KSBmdW5jdGlvbiByZXRyaWV2ZXMgc2xvdCBudW1iZXIgZm9yIHRoZSBTRCBjYXJkDQo+ID4gc3Bl Y2lmaWVkDQo+ID4gPiArICBieSB0aGUgRGV2aWNlUGF0aCBub2RlLiBJZiBEZXZpY2VQYXRoIGlz IE5VTEwsDQo+ID4gRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlzDQo+ID4gPiArICByZXR1cm5lZC4N Cj4gPiA+ICsNCj4gPiA+ICsgIElmIERldmljZVBhdGggaXMgbm90IGEgZGV2aWNlIHBhdGggbm9k ZSB0eXBlIHRoYXQgdGhlIFNEIFBhc3MgVGhydQ0KPiBkcml2ZXINCj4gPiA+ICsgIHN1cHBvcnRz LCBFRklfVU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dICBUaGlzICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRGV2aWNlUGF0aCAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBkZXZpY2UgcGF0aCBub2RlIHRoYXQNCj4gPiBkZXNjcmliZXMNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgU0QgY2FyZCBvbiB0aGUgU0QgY29udHJv bGxlci4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIFNsb3QgICAgICAgICAgICAgIE9uIHJldHVybiwg cG9pbnRzIHRvIHRoZSBzbG90IG51bWJlciBvZiBhbiBTRA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2FyZCBvbiB0aGUgU0QgY29udHJvbGxlci4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFNEIGNhcmQgc2xvdCBudW1iZXIg aXMgcmV0dXJuZWQgaW4gU2xvdC4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIFNsb3Qgb3IgRGV2aWNlUGF0aCBpcyBOVUxMLg0KPiA+ID4gKyAgQHJldHZhbCBFRklfVU5T VVBQT1JURUQgICAgICAgRGV2aWNlUGF0aCBpcyBub3QgYSBkZXZpY2UgcGF0aCBub2RlDQo+ID4g dHlwZSB0aGF0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0Qg UGFzcyBUaHJ1IGRyaXZlciBzdXBwb3J0cy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtF RklfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRHdNbWNQYXNzVGhydUdldFNsb3ROdW1i ZXIgKA0KPiA+ID4gKyAgSU4gIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgICAg ICpUaGlzLA0KPiA+ID4gKyAgSU4gIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAg ICAgICpEZXZpY2VQYXRoLA0KPiA+ID4gKyAgT1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpTbG90DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRFdfTU1D X0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4gPiA+ICsgIFNEX0RFVklDRV9Q QVRIICAgICAgICAgICAgICAgICAgKlNkTm9kZTsNCj4gPiA+ICsgIEVNTUNfREVWSUNFX1BBVEgg ICAgICAgICAgICAgICAgKkVtbWNOb2RlOw0KPiA+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICBTbG90TnVtYmVyOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChUaGlzID09IE5V TEwpIHx8IChEZXZpY2VQYXRoID09IE5VTEwpIHx8IChTbG90ID09IE5VTEwpKSB7DQo+ID4gPiAr ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBQcml2YXRlID0gRFdfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChUaGlzKTsNCj4g PiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBDaGVjayB3aGV0aGVyIHRoZSBEZXZpY2VQ YXRoIGJlbG9uZ3MgdG8gU0RfREVWSUNFX1BBVEggb3INCj4gPiBFTU1DX0RFVklDRV9QQVRIDQo+ ID4gPiArICAvLw0KPiA+ID4gKyAgaWYgKChEZXZpY2VQYXRoLT5UeXBlICE9IE1FU1NBR0lOR19E RVZJQ0VfUEFUSCkgfHwNCj4gPiA+ICsgICAgICAoKERldmljZVBhdGgtPlN1YlR5cGUgIT0gTVNH X1NEX0RQKSAmJg0KPiA+ID4gKyAgICAgICAoRGV2aWNlUGF0aC0+U3ViVHlwZSAhPSBNU0dfRU1N Q19EUCkpIHx8DQo+ID4gPiArICAgICAgKERldmljZVBhdGhOb2RlTGVuZ3RoKERldmljZVBhdGgp ICE9IHNpemVvZihTRF9ERVZJQ0VfUEFUSCkpDQo+IHx8DQo+ID4gPiArICAgICAgKERldmljZVBh dGhOb2RlTGVuZ3RoKERldmljZVBhdGgpICE9DQo+ID4gc2l6ZW9mKEVNTUNfREVWSUNFX1BBVEgp KSkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ID4gKyAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgaWYgKERldmljZVBhdGgtPlN1YlR5cGUgPT0gTVNHX1NEX0RQKSB7DQo+ ID4gPiArICAgIFNkTm9kZSA9IChTRF9ERVZJQ0VfUEFUSCAqKSBEZXZpY2VQYXRoOw0KPiA+ID4g KyAgICBTbG90TnVtYmVyID0gU2ROb2RlLT5TbG90TnVtYmVyOw0KPiA+ID4gKyAgfSBlbHNlIHsN Cj4gPiA+ICsgICAgRW1tY05vZGUgPSAoRU1NQ19ERVZJQ0VfUEFUSCAqKSBEZXZpY2VQYXRoOw0K PiA+ID4gKyAgICBTbG90TnVtYmVyID0gRW1tY05vZGUtPlNsb3ROdW1iZXI7DQo+ID4gPiArICB9 DQo+ID4gPiArDQo+ID4gPiArICBpZiAoU2xvdE51bWJlciA+PSBEV19NTUNfSENfTUFYX1NMT1Qp IHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICBpZiAoUHJpdmF0ZS0+U2xvdFtTbG90TnVtYmVyXS5FbmFibGUpIHsNCj4gPiA+ ICsgICAgKlNsb3QgPSBTbG90TnVtYmVyOw0KPiA+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4g PiA+ICsgIH0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXNldHMg YW4gU0QgY2FyZCB0aGF0IGlzIGNvbm5lY3RlZCB0byB0aGUgU0QgY29udHJvbGxlci4NCj4gPiA+ ICsNCj4gPiA+ICsgIFRoZSBSZXNldERldmljZSgpIGZ1bmN0aW9uIHJlc2V0cyB0aGUgU0QgY2Fy ZCBzcGVjaWZpZWQgYnkgU2xvdC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIHRoaXMgU0QgY29udHJv bGxlciBkb2VzIG5vdCBzdXBwb3J0IGEgZGV2aWNlIHJlc2V0IG9wZXJhdGlvbiwNCj4gPiA+ICsg IEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIFNsb3Qg aXMgbm90IGluIGEgdmFsaWQgc2xvdCBudW1iZXIgZm9yIHRoaXMgU0QgY29udHJvbGxlciwNCj4g PiA+ICsgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ ICsgIElmIHRoZSBkZXZpY2UgcmVzZXQgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgRUZJX1NVQ0NF U1MgaXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAg ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBzbG90IG51 bWJlciBvZiB0aGUgU0QgY2FyZCB0byBiZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzZXQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCB3YXMgcmVzZXQuDQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgU0QgY29udHJvbGxlciBkb2VzIG5v dCBzdXBwb3J0IGENCj4gPiBkZXZpY2UNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2V0IG9wZXJhdGlvbi4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIFNsb3QgbnVtYmVyIGlzIGludmFsaWQuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9OT19N RURJQSAgICAgICAgICBTRCBEZXZpY2Ugbm90IHByZXNlbnQgaW4gdGhlIFNsb3QuDQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBUaGUgcmVzZXQgY29tbWFuZCBmYWlsZWQg ZHVlIHRvIGENCj4gZGV2aWNlDQo+ID4gZXJyb3INCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRHdNbWNQYXNzVGhydVJlc2V0RGV2 aWNlICgNCj4gPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgICAg ICAqVGhpcywNCj4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTbG90DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRFdfTU1DX0hDX1BSSVZB VEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4gPiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAg ICAgICAgICAgICAgKkxpbms7DQo+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAg ICAgICpOZXh0TGluazsNCj4gPiA+ICsgIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAg KlRyYjsNCj4gPiA+ICsgIEVGSV9UUEwgICAgICAgICAgICAgICAgICAgICAgICAgT2xkVHBsOw0K PiA+ID4gKw0KPiA+ID4gKyAgaWYgKFRoaXMgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgUHJp dmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAoVGhpcyk7DQo+ID4gPiArDQo+ID4g PiArICBpZiAoIVByaXZhdGUtPlNsb3RbU2xvdF0uRW5hYmxlKSB7DQo+ID4gPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBp ZiAoIVByaXZhdGUtPlNsb3RbU2xvdF0uTWVkaWFQcmVzZW50KSB7DQo+ID4gPiArICAgIHJldHVy biBFRklfTk9fTUVESUE7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4g KyAgLy8gRnJlZSBhbGwgYXN5bmMgSS9PIHJlcXVlc3RzIGluIHRoZSBxdWV1ZQ0KPiA+ID4gKyAg Ly8NCj4gPiA+ICsgIE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9OT1RJRlkpOw0KPiA+ID4g Kw0KPiA+ID4gKyAgZm9yIChMaW5rID0gR2V0Rmlyc3ROb2RlICgmUHJpdmF0ZS0+UXVldWUpOw0K PiA+ID4gKyAgICAgICAhSXNOdWxsICgmUHJpdmF0ZS0+UXVldWUsIExpbmspOw0KPiA+ID4gKyAg ICAgICBMaW5rID0gTmV4dExpbmspIHsNCj4gPiA+ICsgICAgTmV4dExpbmsgPSBHZXROZXh0Tm9k ZSAoJlByaXZhdGUtPlF1ZXVlLCBMaW5rKTsNCj4gPiA+ICsgICAgUmVtb3ZlRW50cnlMaXN0IChM aW5rKTsNCj4gPiA+ICsgICAgVHJiID0gRFdfTU1DX0hDX1RSQl9GUk9NX1RISVMgKExpbmspOw0K PiA+ID4gKyAgICBUcmItPlBhY2tldC0+VHJhbnNhY3Rpb25TdGF0dXMgPSBFRklfQUJPUlRFRDsN Cj4gPiA+ICsgICAgZ0JTLT5TaWduYWxFdmVudCAoVHJiLT5FdmVudCk7DQo+ID4gPiArICAgIER3 TW1jRnJlZVRyYiAoVHJiKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGdCUy0+UmVz dG9yZVRQTCAoT2xkVHBsKTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hj RHhlL0R3TW1jSGNpLmMNCj4gPiBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01t Y0hjaS5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi5iMDkxZjk4MDNiMmUNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL0VtYmVk ZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjaS5jDQo+ID4gPiBAQCAtMCwwICsxLDE2 MDIgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIFRoaXMgZHJpdmVyIGlzIHVzZWQgdG8g bWFuYWdlIERlc2lnbndhcmUgU0QvTU1DIFBDSSBob3N0DQo+IGNvbnRyb2xsZXJzLg0KPiA+ID4g Kw0KPiA+ID4gKyAgSXQgd291bGQgZXhwb3NlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09M IGZvciB1cHBlcg0KPiBsYXllcg0KPiA+IHVzZS4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdo dCAoYykgMjAxNSAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gPiArDQo+ID4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiA+IGF2YWlsYWJs ZQ0KPiA+ID4gKyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGlj ZW5zZSB3aGljaCBhY2NvbXBhbmllcw0KPiA+IHRoaXMNCj4gPiA+ICsgIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gPiArICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPiArDQo+ ID4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0Ug T04gQU4gIkFTIElTIg0KPiA+IEJBU0lTLA0KPiA+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBM SUVELg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxJbmR1 c3RyeVN0YW5kYXJkL0VtbWMuaD4NCj4gPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9T ZC5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FybUxpYi5oPg0KPiA+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8TGli cmFyeS9EbWFMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiA+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkv TWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290 U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlICJEd01tY0hjRHhl LmgiDQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBEdW1wIHRoZSBjb250ZW50IG9mIFNE L01NQyBob3N0IGNvbnRyb2xsZXIncyBDYXBhYmlsaXR5IFJlZ2lzdGVyLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUg U0QgY2FyZCB0byBzZW5kIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbW1hbmQgdG8uDQo+ID4gPiArICBAcGFyYW1baW5dICBDYXBhYmlsaXR5ICAgICAgVGhlIGJ1 ZmZlciB0byBzdG9yZSB0aGUgY2FwYWJpbGl0eSBkYXRhLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0K PiA+ID4gK1ZPSUQNCj4gPiA+ICtEdW1wQ2FwYWJpbGl0eVJlZyAoDQo+ID4gPiArICBJTiBVSU5U OCAgICAgICAgICAgICAgICBTbG90LA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAg KkNhcGFiaWxpdHkNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICAvLw0KPiA+ID4gKyAg Ly8gRHVtcCBDYXBhYmlsaXR5IERhdGENCj4gPiA+ICsgIC8vDQo+ID4gPiArICBERUJVRyAoKA0K PiA+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ID4gKyAgICAiID09IFNsb3QgWyVkXSBDYXBhYmls aXR5IGlzIDB4JXggPT1cbiIsDQo+ID4gPiArICAgIFNsb3QsDQo+ID4gPiArICAgIENhcGFiaWxp dHkNCj4gPiA+ICsgICAgKSk7DQo+ID4gPiArICBERUJVRyAoKA0KPiA+ID4gKyAgICBERUJVR19J TkZPLA0KPiA+ID4gKyAgICAiICAgQmFzZSBDbGsgRnJlcSAgICAgJWRLSHpcbiIsDQo+ID4gPiAr ICAgIENhcGFiaWxpdHktPkJhc2VDbGtGcmVxDQo+ID4gPiArICAgICkpOw0KPiA+ID4gKyAgREVC VUcgKCgNCj4gPiA+ICsgICAgREVCVUdfSU5GTywNCj4gPiA+ICsgICAgIiAgIEJ1c1dpZHRoICAg ICAgICAgICVkXG4iLA0KPiA+ID4gKyAgICBDYXBhYmlsaXR5LT5CdXNXaWR0aA0KPiA+ID4gKyAg ICApKTsNCj4gPiA+ICsgIERFQlVHICgoDQo+ID4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gPiAr ICAgICIgICBIaWdoU3BlZWQgU3VwcG9ydCAlYVxuIiwNCj4gPiA+ICsgICAgQ2FwYWJpbGl0eS0+ SGlnaFNwZWVkID8gIlRSVUUiIDogIkZBTFNFIg0KPiA+ID4gKyAgICApKTsNCj4gPiA+ICsgIERF QlVHICgoDQo+ID4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gPiArICAgICIgICBWb2x0YWdlIDEu OCAgICAgICAlYVxuIiwNCj4gPiA+ICsgICAgQ2FwYWJpbGl0eS0+Vm9sdGFnZTE4ID8gIlRSVUUi IDogIkZBTFNFIg0KPiA+ID4gKyAgICApKTsNCj4gPiA+ICsgIERFQlVHICgoDQo+ID4gPiArICAg IERFQlVHX0lORk8sDQo+ID4gPiArICAgICIgICA2NC1iaXQgU3lzIEJ1cyAgICAlYVxuIiwNCj4g PiA+ICsgICAgQ2FwYWJpbGl0eS0+U3lzQnVzNjQgPyAiVFJVRSIgOiAiRkFMU0UiDQo+ID4gPiAr ICAgICkpOw0KPiA+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiICAgU2xvdFR5cGUgICAgICAg ICAgIikpOw0KPiA+ID4gKyAgaWYgKENhcGFiaWxpdHktPlNsb3RUeXBlID09IDB4MDApIHsNCj4g PiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWFcbiIsICJSZW1vdmFibGUgU2xvdCIpKTsN Cj4gPiA+ICsgIH0gZWxzZSBpZiAoQ2FwYWJpbGl0eS0+U2xvdFR5cGUgPT0gMHgwMSkgew0KPiA+ ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYVxuIiwgIkVtYmVkZGVkIFNsb3QiKSk7DQo+ ID4gPiArICB9IGVsc2UgaWYgKENhcGFiaWxpdHktPlNsb3RUeXBlID09IDB4MDIpIHsNCj4gPiA+ ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWFcbiIsICJTaGFyZWQgQnVzIFNsb3QiKSk7DQo+ ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYVxuIiwg IlJlc2VydmVkIikpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgREVCVUcgKCgNCj4gPiA+ICsgICAg REVCVUdfSU5GTywNCj4gPiA+ICsgICAgIiAgIFNEUjUwICBTdXBwb3J0ICAgICVhXG4iLA0KPiA+ ID4gKyAgICBDYXBhYmlsaXR5LT5TZHI1MCA/ICJUUlVFIiA6ICJGQUxTRSINCj4gPiA+ICsgICAg KSk7DQo+ID4gPiArICBERUJVRyAoKA0KPiA+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ID4gKyAg ICAiICAgU0RSMTA0IFN1cHBvcnQgICAgJWFcbiIsDQo+ID4gPiArICAgIENhcGFiaWxpdHktPlNk cjEwNCA/ICJUUlVFIiA6ICJGQUxTRSINCj4gPiA+ICsgICAgKSk7DQo+ID4gPiArICBERUJVRyAo KA0KPiA+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ID4gKyAgICAiICAgRERSNTAgIFN1cHBvcnQg ICAgJWFcbiIsDQo+ID4gPiArICAgIENhcGFiaWxpdHktPkRkcjUwID8gIlRSVUUiIDogIkZBTFNF Ig0KPiA+ID4gKyAgICApKTsNCj4gPiA+ICsgIHJldHVybjsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ ID4gPiArLyoqDQo+ID4gPiArICBTZXQgYWxsIGludGVycnVwdCBzdGF0dXMgYml0cyBpbiBOb3Jt YWwgYW5kIEVycm9yIEludGVycnVwdCBTdGF0dXMgRW5hYmxlDQo+ID4gPiArICByZWdpc3Rlci4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklDRSBJ TyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgVGhlIG9wZXJhdGlvbiBleGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gPiArICBA cmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNFbmFibGVJbnRlcnJ1 cHQgKA0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIElu dFN0YXR1czsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSWRJbnRFbjsNCj4g PiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSWRTdHM7DQo+ID4gPiArDQo+ID4gPiAr ICAvLw0KPiA+ID4gKyAgLy8gRW5hYmxlIGFsbCBiaXRzIGluIEludGVycnVwdCBNYXNrIFJlZ2lz dGVyDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgSW50U3RhdHVzID0gMDsNCj4gPiA+ICsgIE1taW9X cml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0lOVE1BU0ssIEludFN0YXR1cyk7DQo+ID4gPiArDQo+ ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gQ2xlYXIgc3RhdHVzIGluIEludGVycnVwdCBTdGF0dXMg UmVnaXN0ZXINCj4gPiA+ICsgIC8vDQo+ID4gPiArICBJbnRTdGF0dXMgPSB+MDsNCj4gPiA+ICsg IE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIEludFN0YXR1cyk7DQo+ID4g PiArDQo+ID4gPiArICBJZEludEVuID0gfjA7DQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFz ZSArIERXX01NQ19JRElOVEVOLCBJZEludEVuKTsNCj4gPiA+ICsNCj4gPiA+ICsgIElkU3RzID0g fjA7DQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19JRFNUUywgSWRTdHMp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ ICsNCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY0dldENhcGFiaWxpdHkgKA0KPiA+ ID4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gPiArICBJ TiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiA+ICsgIElOICAg ICBVSU5UOCAgICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ID4gKyAgICAgT1VUIERXX01NQ19I Q19TTE9UX0NBUCAgICAgICpDYXBhY2l0eQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IFBMQVRGT1JNX0RXX01NQ19QUk9UT0NPTCAgICAgICAqUGxhdGZvcm1Ed01tYzsNCj4gPiA+ICsg IEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiAr ICBpZiAoQ2FwYWNpdHkgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURf UEFSQU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90 b2NvbCAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgJmdQbGF0Zm9ybUR3TW1jUHJvdG9jb2xH dWlkLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgKFZPSUQgKiopICZQbGF0Zm9ybUR3TW1jDQo+ID4gPiArICAgICAgICAgICAgICAgICAg KTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJu IFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIFN0YXR1cyA9IFBsYXRmb3JtRHdNbWMtPkdl dENhcGFiaWxpdHkgKENvbnRyb2xsZXIsIFNsb3QsIENhcGFjaXR5KTsNCj4gPiA+ICsgIHJldHVy biBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRGV0ZWN0 IHdoZXRoZXIgdGhlcmUgaXMgYSBTRC9NTUMgY2FyZCBhdHRhY2hlZCBhdCB0aGUgc3BlY2lmaWVk DQo+ID4gU0QvTU1DIGhvc3QNCj4gPiA+ICsgIGNvbnRyb2xsZXIgc2xvdC4NCj4gPiA+ICsNCj4g PiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNl Y3Rpb24gMy4xIGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRGV2 SW8gICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgU2xvdCAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8g c2VuZCB0aGUNCj4gPiBjb21tYW5kDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRvLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gTWVkaWFQcmVzZW50ICBUaGUgcG9pbnRlciB0byB0 aGUgbWVkaWEgcHJlc2VudA0KPiBib29sZWFuDQo+ID4gdmFsdWUuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZXJlIGlzIG5vIG1lZGlhIGNoYW5nZSBoYXBw ZW5lZC4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX01FRElBX0NIQU5HRUQgVGhlcmUgaXMgbWVkaWEg Y2hhbmdlIGhhcHBlbmVkLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUg ZGV0ZWN0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMN Cj4gPiA+ICtEd01tY0hjQ2FyZERldGVjdCAoDQo+ID4gPiArICBJTiAgICAgVUlOVE4gICAgICAg ICAgICAgICAgICBEZXZCYXNlLA0KPiA+ID4gKyAgSU4gICAgIEVGSV9IQU5ETEUgICAgICAgICAg ICAgQ29udHJvbGxlciwNCj4gPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgIFNs b3QsDQo+ID4gPiArICAgICBPVVQgQk9PTEVBTiAgICAgICAgICAgICAgICAqTWVkaWFQcmVzZW50 DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgUExBVEZPUk1fRFdfTU1DX1BST1RPQ09M ICAqUGxhdGZvcm1Ed01tYzsNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKE1lZGlhUHJlc2VudCA9PSBOVUxMKSB7DQo+ID4g PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiAr ICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAmZ1BsYXRmb3JtRHdNbWNQcm90b2NvbEd1aWQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAg TlVMTCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlBsYXRmb3JtRHdNbWMN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAg Kk1lZGlhUHJlc2VudCA9IFBsYXRmb3JtRHdNbWMtPkNhcmREZXRlY3QgKENvbnRyb2xsZXIsIFNs b3QpOw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICtTVEFUSUMNCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY1VwZGF0ZUNsb2Nr ICgNCj4gPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQ21kOw0KPiA+ ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbnRTdGF0dXM7DQo+ID4gPiArDQo+ID4g PiArICBDbWQgPSBCSVRfQ01EX1dBSVRfUFJWREFUQV9DT01QTEVURSB8DQo+ID4gQklUX0NNRF9V UERBVEVfQ0xPQ0tfT05MWSB8DQo+ID4gPiArICAgICAgICBCSVRfQ01EX1NUQVJUOw0KPiA+ID4g KyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ01ELCBDbWQpOw0KPiA+ID4gKw0KPiA+ ID4gKyAgd2hpbGUgKDEpIHsNCj4gPiA+ICsgICAgQ21kID0gTW1pb1JlYWQzMiAoRGV2QmFzZSAr IERXX01NQ19DTUQpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBpZiAoIShDbWQgJiBDTURfU1RBUlRf QklUKSkgew0KPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4g PiArICAgIEludFN0YXR1cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfUklOVFNUUyk7 DQo+ID4gPiArDQo+ID4gPiArICAgIGlmIChJbnRTdGF0dXMgJiBEV19NTUNfSU5UX0hMRSkgew0K PiA+ID4gKyAgICAgIERFQlVHICgoDQo+ID4gPiArICAgICAgICBERUJVR19FUlJPUiwNCj4gPiA+ ICsgICAgICAgICJEd01tY0hjVXBkYXRlQ2xvY2s6IGZhaWxlZCB0byB1cGRhdGUgbW1jIGNsb2Nr IGZyZXF1ZW5jeVxuIg0KPiA+ID4gKyAgICAgICAgKSk7DQo+ID4gPiArICAgICAgcmV0dXJuIEVG SV9ERVZJQ0VfRVJST1I7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBTdG9wIFNEL01NQyBjYXJkIGNsb2NrLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFt W2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBTdWNjZWVkIHRvIHN0b3Ag U0QvTU1DIGNsb2NrLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBGYWlsIHRv IHN0b3AgU0QvTU1DIGNsb2NrLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtEd01tY0hjU3RvcENsb2NrICgNCj4gPiA+ICsgIElOIFVJTlROICAgICAgICAg ICAgICAgICAgRGV2QmFzZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBDbGtFbmE7DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gRGlzYWJsZSBN TUMgY2xvY2sgZmlyc3QNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBDbGtFbmEgPSAwOw0KPiA+ID4g KyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ0xLRU5BLCBDbGtFbmEpOw0KPiA+ID4g Kw0KPiA+ID4gKyAgU3RhdHVzID0gRHdNbWNIY1VwZGF0ZUNsb2NrIChEZXZCYXNlKTsNCj4gPiA+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gPiA+ICsgIH0NCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgU0QvTU1DIGNhcmQgY2xvY2sgc3VwcGx5Lg0KPiA+ID4gKw0K PiA+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29s IGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBDbG9ja0ZyZXEgICAgICBUaGUgbWF4IGNs b2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQuIFRoZSB1bml0IGlzDQo+ID4gS0h6Lg0KPiA+ID4gKyAg QHBhcmFtW2luXSBDYXBhYmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGNsb2NrIGlzIHN1 cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg VGhlIGNsb2NrIGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY0Nsb2NrU3VwcGx5ICgNCj4gPiA+ ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgIElOIFVJTlQ2 NCAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxLA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1Rf Q0FQICAgICBDYXBhYmlsaXR5DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJX1NU QVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgIEJhc2VDbGtGcmVxOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBT ZXR0aW5nRnJlcTsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGl2aXNvcjsN Cj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgUmVtYWluZGVyOw0KPiA+ID4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBNbWNTdGF0dXM7DQo+ID4gPiArICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgIENsa0VuYTsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgQ2xrU3JjOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIENhbGN1bGF0ZSBh IGRpdmlzb3IgZm9yIFNEIGNsb2NrIGZyZXF1ZW5jeQ0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIEFT U0VSVCAoQ2FwYWJpbGl0eS5CYXNlQ2xrRnJlcSAhPSAwKTsNCj4gPiA+ICsNCj4gPiA+ICsgIEJh c2VDbGtGcmVxID0gQ2FwYWJpbGl0eS5CYXNlQ2xrRnJlcTsNCj4gPiA+ICsgIGlmIChDbG9ja0Zy ZXEgPT0gMCkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKENsb2NrRnJlcSA+IEJhc2VDbGtGcmVxKSB7 DQo+ID4gPiArICAgIENsb2NrRnJlcSA9IEJhc2VDbGtGcmVxOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIENhbGN1bGF0ZSB0aGUgZGl2aXNvciBvZiBiYXNl IGZyZXF1ZW5jeS4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBEaXZpc29yICAgICA9IDA7DQo+ID4g PiArICBTZXR0aW5nRnJlcSA9IEJhc2VDbGtGcmVxOw0KPiA+ID4gKyAgd2hpbGUgKENsb2NrRnJl cSA8IFNldHRpbmdGcmVxKSB7DQo+ID4gPiArICAgIERpdmlzb3IrKzsNCj4gPiA+ICsNCj4gPiA+ ICsgICAgU2V0dGluZ0ZyZXEgPSBCYXNlQ2xrRnJlcSAvICgyICogRGl2aXNvcik7DQo+ID4gPiAr ICAgIFJlbWFpbmRlciAgID0gQmFzZUNsa0ZyZXEgJSAoMiAqIERpdmlzb3IpOw0KPiA+ID4gKyAg ICBpZiAoKENsb2NrRnJlcSA9PSBTZXR0aW5nRnJlcSkgJiYgKFJlbWFpbmRlciA9PSAwKSkgew0K PiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIGlmICgoQ2xvY2tG cmVxID09IFNldHRpbmdGcmVxKSAmJiAoUmVtYWluZGVyICE9IDApKSB7DQo+ID4gPiArICAgICAg U2V0dGluZ0ZyZXEgKys7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ ICsgIERFQlVHICgoDQo+ID4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gPiArICAgICJCYXNlQ2xr RnJlcSAlZEtIeiBEaXZpc29yICVkIENsb2NrRnJlcSAlZEtoelxuIiwNCj4gPiA+ICsgICAgQmFz ZUNsa0ZyZXEsDQo+ID4gPiArICAgIERpdmlzb3IsDQo+ID4gPiArICAgIENsb2NrRnJlcQ0KPiA+ ID4gKyAgICApKTsNCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBXYWl0IHVudGls IE1NQyBpcyBpZGxlDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgZG8gew0KPiA+ID4gKyAgICBNbWNT dGF0dXMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1NUQVRVUyk7DQo+ID4gPiArICB9 IHdoaWxlIChNbWNTdGF0dXMgJiBEV19NTUNfU1RTX0RBVEFfQlVTWSk7DQo+ID4gPiArDQo+ID4g PiArICBkbyB7DQo+ID4gPiArICAgIFN0YXR1cyA9IER3TW1jSGNTdG9wQ2xvY2sgKERldkJhc2Up Ow0KPiA+ID4gKyAgfSB3aGlsZSAoRUZJX0VSUk9SIChTdGF0dXMpKTsNCj4gPiA+ICsNCj4gPiA+ ICsgIGRvIHsNCj4gPiA+ICsgICAgQ2xrU3JjID0gMDsNCj4gPiA+ICsgICAgTW1pb1dyaXRlMzIg KERldkJhc2UgKyBEV19NTUNfQ0xLU1JDLCBDbGtTcmMpOw0KPiA+ID4gKyAgICAvLw0KPiA+ID4g KyAgICAvLyBTZXQgY2xvY2sgZGl2aXNvcg0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICBNbWlv V3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DTEtESVYsIERpdmlzb3IpOw0KPiA+ID4gKyAgICAv Lw0KPiA+ID4gKyAgICAvLyBFbmFibGUgTU1DIGNsb2NrDQo+ID4gPiArICAgIC8vDQo+ID4gPiAr ICAgIENsa0VuYSA9IDE7DQo+ID4gPiArICAgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1D X0NMS0VOQSwgQ2xrRW5hKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgU3RhdHVzID0gRHdNbWNIY1Vw ZGF0ZUNsb2NrIChEZXZCYXNlKTsNCj4gPiA+ICsgIH0gd2hpbGUgKEVGSV9FUlJPUiAoU3RhdHVz KSk7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IHRoZSBTRC9NTUMgYnVzIHdpZHRoLg0KPiA+ ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3Bl YyAzLjAgU2VjdGlvbiAzLjQgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4g PiArICBAcGFyYW1baW5dIElzRGRyICAgICAgICAgIEEgYm9vbGVhbiB0byBpbmRpY2F0ZSBpdCdz IGR1YWwgZGF0YSByYXRlIG9yIG5vdC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQnVzV2lkdGggICAg ICAgVGhlIGJ1cyB3aWR0aCB1c2VkIGJ5IHRoZSBTRC9NTUMgZGV2aWNlLCBpdA0KPiA+IG11c3Qg YmUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgNCBvciA4Lg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgYnVzIHdpZHRoIGlzIHNl dCBzdWNjZXNzZnVsbHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBi dXMgd2lkdGggaXNuJ3Qgc2V0IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4g PiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY1NldEJ1c1dpZHRoICgNCj4gPiA+ICsgIElO IFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgIElOIEJPT0xFQU4gICAg ICAgICAgICAgICAgSXNEZHIsDQo+ID4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgIEJ1 c1dpZHRoDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICBDdHlwZTsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgVWhzOw0K PiA+ID4gKw0KPiA+ID4gKyAgc3dpdGNoIChCdXNXaWR0aCkgew0KPiA+ID4gKyAgY2FzZSAxOg0K PiA+ID4gKyAgICBDdHlwZSA9IE1NQ18xQklUX01PREU7DQo+ID4gPiArICAgIGJyZWFrOw0KPiA+ ID4gKyAgY2FzZSA0Og0KPiA+ID4gKyAgICBDdHlwZSA9IE1NQ180QklUX01PREU7DQo+ID4gPiAr ICAgIGJyZWFrOw0KPiA+ID4gKyAgY2FzZSA4Og0KPiA+ID4gKyAgICBDdHlwZSA9IE1NQ184QklU X01PREU7DQo+ID4gPiArICAgIGJyZWFrOw0KPiA+ID4gKyAgZGVmYXVsdDoNCj4gPiA+ICsgICAg cmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIE1taW9X cml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NUWVBFLCBDdHlwZSk7DQo+ID4gPiArDQo+ID4gPiAr ICBVaHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1VIU1JFRyk7DQo+ID4gPiArDQo+ ID4gPiArICBpZiAoSXNEZHIpIHsNCj4gPiA+ICsgICAgVWhzIHw9IFVIU19ERFJfTU9ERTsNCj4g PiA+ICsgIH0gZWxzZSB7DQo+ID4gPiArICAgIFVocyAmPSB+KFVIU19ERFJfTU9ERSk7DQo+ID4g PiArICB9DQo+ID4gPiArDQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19V SFNSRUcsIFVocyk7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU3VwcGx5IFNEL01NQyBjYXJkIHdp dGggbG93ZXN0IGNsb2NrIGZyZXF1ZW5jeSBhdCBpbml0aWFsaXphdGlvbi4NCj4gPiA+ICsNCj4g PiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBp bnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxp dHkgb2YgdGhlIHNsb3QuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSBjbG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gPiArICBAcmV0dmFs IE90aGVycyAgICAgICAgICAgIFRoZSBjbG9jayBpc24ndCBzdXBwbGllZCBzdWNjZXNzZnVsbHku DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNJ bml0Q2xvY2tGcmVxICgNCj4gPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgRGV2 QmFzZSwNCj4gPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgICAgQ2FwYWJpbGl0eQ0K PiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg U3RhdHVzOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbml0RnJlcTsNCj4g PiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBDYWxjdWxhdGUgYSBkaXZpc29yIGZvciBT RCBjbG9jayBmcmVxdWVuY3kNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBpZiAoQ2FwYWJpbGl0eS5C YXNlQ2xrRnJlcSA9PSAwKSB7DQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIC8vIERvbid0IHN1 cHBvcnQgZ2V0IEJhc2UgQ2xvY2sgRnJlcXVlbmN5IGluZm9ybWF0aW9uIHZpYSBhbm90aGVyDQo+ ID4gbWV0aG9kDQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JU RUQ7DQo+ID4gPiArICB9DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gU3VwcGx5IDQwMEtIeiBj bG9jayBmcmVxdWVuY3kgYXQgaW5pdGlhbGl6YXRpb24gcGhhc2UuDQo+ID4gPiArICAvLw0KPiA+ ID4gKyAgSW5pdEZyZXEgPSBEV01NQ19JTklUX0NMT0NLX0ZSRVE7DQo+ID4gPiArICBTdGF0dXMg PSBEd01tY0hjQ2xvY2tTdXBwbHkgKERldkJhc2UsIEluaXRGcmVxLCBDYXBhYmlsaXR5KTsNCj4g PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIE1pY3JvU2Vjb25kRGVsYXkgKDEwMCk7DQo+ID4gPiAr ICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFN1cHBseSBTRC9NTUMgY2FyZCB3aXRoIG1heGltdW0gdm9sdGFnZSBhdCBpbml0aWFsaXphdGlv bi4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklD RSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAg ICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgIFRoZSB2b2x0YWdlIGlzIHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4N Cj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHZvbHRhZ2UgaXNuJ3Qgc3Vw cGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtEd01tY0hjSW5pdFBvd2VyVm9sdGFnZSAoDQo+ID4gPiArICBJTiBVSU5UTiBE ZXZCYXNlLA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBE YXRhOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiA+ID4g Kw0KPiA+ID4gKyAgRGF0YSA9IDB4MTsNCj4gPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsg RFdfTU1DX1BXUkVOLCBEYXRhKTsNCj4gPiA+ICsNCj4gPiA+ICsgIERhdGEgPSBEV19NTUNfQ1RS TF9SRVNFVF9BTEw7DQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DVFJM LCBEYXRhKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFRpbWVvdXQgPSBEV19NTUNfSENfR0VORVJJQ19U SU1FT1VUOw0KPiA+ID4gKyAgd2hpbGUgKFRpbWVvdXQgPiAwKSB7DQo+ID4gPiArICAgIERhdGEg PSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0NUUkwpOw0KPiA+ID4gKw0KPiA+ID4gKyAg ICBpZiAoKERhdGEgJiBEV19NTUNfQ1RSTF9SRVNFVF9BTEwpID09IDApIHsNCj4gPiA+ICsgICAg ICBicmVhazsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgICBnQlMtPlN0YWxsICgxKTsNCj4gPiA+ ICsNCj4gPiA+ICsgICAgVGltZW91dC0tOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg aWYgKFRpbWVvdXQgPD0gMCkgew0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sDQo+ID4g PiArICAgICAgIkR3TW1jSGNJbml0UG93ZXJWb2x0YWdlOiByZXNldCBmYWlsZWQgZHVlIHRvIHRp bWVvdXQiKSk7DQo+ID4gPiArDQo+ID4gPiArICAgIHJldHVybiBFRklfVElNRU9VVDsNCj4gPiA+ ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIERhdGEgPSBEV19NTUNfQ1RSTF9JTlRfRU47DQo+ID4g PiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DVFJMLCBEYXRhKTsNCj4gPiA+ICsN Cj4gPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyoqDQo+ID4gPiArICBJbml0aWFsaXplIHRoZSBUaW1lb3V0IENvbnRyb2wgcmVnaXN0ZXIgd2l0 aCBtb3N0IGNvbnNlcnZhdGl2ZSB2YWx1ZSBhdA0KPiA+ID4gKyAgaW5pdGlhbGl6YXRpb24uDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSB0aW1lb3V0IGNvbnRyb2wgcmVnaXN0ZXIgaXMgY29uZmlndXJlZA0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkuDQo+ID4gPiArICBAcmV0 dmFsIE90aGVycyAgICAgICAgICAgIFRoZSB0aW1lb3V0IGNvbnRyb2wgcmVnaXN0ZXIgaXNuJ3Qg Y29uZmlndXJlZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVs bHkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1j SGNJbml0VGltZW91dEN0cmwgKA0KPiA+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBE ZXZCYXNlDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICBEYXRhOw0KPiA+ID4gKw0KPiA+ID4gKyAgRGF0YSA9IH4wOw0KPiA+ID4gKyAgTW1p b1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfVE1PVVQsIERhdGEpOw0KPiA+ID4gKw0KPiA+ID4g KyAgRGF0YSA9IDB4MDBGRkZGRkY7DQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERX X01NQ19ERUJOQ0UsIERhdGEpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEluaXRpYWwgU0QvTU1D IGhvc3QgY29udHJvbGxlciB3aXRoIGxvd2VzdCBjbG9jayBmcmVxdWVuY3ksIG1heCBwb3dlcg0K PiA+IGFuZA0KPiA+ID4gKyAgbWF4IHRpbWVvdXQgdmFsdWUgYXQgaW5pdGlhbGl6YXRpb24uDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRo ZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiA+IGNvbW1hbmQNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8uDQo+ID4gPiArICBAcGFyYW1baW5d IENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgaG9zdCBjb250cm9sbGVyIGlzIGlu aXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgVGhlIGhvc3QgY29udHJvbGxlciBpc24ndCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNJbml0 SG9zdCAoDQo+ID4gPiArICBJTiBVSU5UTiAgICBEZXZCYXNlLA0KPiA+ID4gKyAgSU4gRFdfTU1D X0hDX1NMT1RfQ0FQICAgICAgICBDYXBhYmlsaXR5DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgRUZJX1NUQVRVUyAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMg PSBEd01tY0hjSW5pdFBvd2VyVm9sdGFnZSAoRGV2QmFzZSwgQ2FwYWJpbGl0eSk7DQo+ID4gPiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ ID4gPiArICB9DQo+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNIY1N0YXJ0RG1hICgNCj4gPiA+ICsgIElOIERX X01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ID4gKyAgSU4gRFdf TU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sN Cj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2U7DQo+ ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdHJsOw0KPiA+ID4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm1vZDsNCj4gPiA+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhOw0KPiA+ID4gKw0KPiA+ID4gKy8v ICBEZXZJbyAgPSBUcmItPlByaXZhdGUtPkRldklvOw0KPiA+ID4gKyAgRGV2QmFzZSA9IFRyYi0+ UHJpdmF0ZS0+RGV2QmFzZTsNCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBSZXNl dCBETUENCj4gPiA+ICsgIC8vDQo+ID4gPiArICBDdHJsID0gRFdfTU1DX0NUUkxfRE1BX1JFU0VU Ow0KPiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ1RSTCwgQ3RybCk7DQo+ ID4gPiArDQo+ID4gPiArICBUaW1lb3V0ID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4g PiA+ICsgIHdoaWxlIChUaW1lb3V0ID4gMCkgew0KPiA+ID4gKyAgICBEYXRhID0gTW1pb1JlYWQz MiAoRGV2QmFzZSArIERXX01NQ19DVFJMKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgaWYgKChEYXRh ICYgRFdfTU1DX0NUUkxfRE1BX1JFU0VUKSA9PSAwKSB7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ ID4gPiArICAgIH0NCj4gPiA+ICsgICAgZ0JTLT5TdGFsbCAoMSk7DQo+ID4gPiArDQo+ID4gPiAr ICAgIFRpbWVvdXQtLTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChUaW1lb3V0 IDw9IDApIHsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIlRpbWVkIG91dCB3YWl0 aW5nIGZvciBDVFJMX0RNQV9SRVNFVCIpKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgcmV0dXJuIEVG SV9USU1FT1VUOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgQm1vZCA9IERXX01NQ19J RE1BQ19TV1JFU0VUIHwgTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+ID4gRFdfTU1DX0JNT0QpOw0K PiA+ID4gKw0KPiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQk1PRCwgQm1v ZCk7DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gU2VsZWN0IElETUFDDQo+ID4g PiArICAvLw0KPiA+ID4gKyAgQ3RybCA9IERXX01NQ19DVFJMX0lETUFDX0VOOw0KPiA+ID4gKyAg Q3RybCB8PSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0NUUkwpOw0KPiA+ID4gKyAgTW1p b1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ1RSTCwgQ3RybCk7DQo+ID4gPiArDQo+ID4gPiAr ICAvLw0KPiA+ID4gKyAgLy8gRW5hYmxlIElETUFDDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgQm1v ZCA9IERXX01NQ19JRE1BQ19FTkFCTEUgfCBEV19NTUNfSURNQUNfRkI7DQo+ID4gPiArICBCbW9k IHw9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQk1PRCk7DQo+ID4gPiArDQo+ID4gPiAr ICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CTU9ELCBCbW9kKTsNCj4gPiA+ICsNCj4g PiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArRUZJ X1NUQVRVUw0KPiA+ID4gK0R3TW1jSGNTdG9wRG1hICgNCj4gPiA+ICsgIElOIERXX01NQ19IQ19Q UklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1RS QiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2U7DQo+ID4gPiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdHJsOw0KPiA+ID4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm1vZDsNCj4gPiA+ICsNCj4gPiA+ICsgIERl dkJhc2UgPSBUcmItPlByaXZhdGUtPkRldkJhc2U7DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ ID4gKyAgLy8gRGlzYWJsZSBhbmQgcmVzZXQgSURNQUMNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBD dHJsID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19DVFJMKTsNCj4gPiA+ICsgIEN0cmwg Jj0gfkRXX01NQ19DVFJMX0lETUFDX0VOOw0KPiA+ID4gKyAgQ3RybCB8PSBEV19NTUNfQ1RSTF9E TUFfUkVTRVQ7DQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DVFJMLCBD dHJsKTsNCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBTdG9wIElETUFDDQo+ID4g PiArICAvLw0KPiA+ID4gKyAgQm1vZCA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQk1P RCk7DQo+ID4gPiArICBCbW9kICY9IH4oRFdfTU1DX0JNT0RfRkIgfCBEV19NTUNfQk1PRF9ERSk7 DQo+ID4gPiArICBCbW9kIHw9IERXX01NQ19CTU9EX1NXUjsNCj4gPiA+ICsgIE1taW9Xcml0ZTMy IChEZXZCYXNlICsgRFdfTU1DX0JNT0QsIEJtb2QpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEJ1 aWxkIERNQSBkZXNjcmlwdG9yIHRhYmxlIGZvciB0cmFuc2Zlci4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19U UkIgaW5zdGFuY2UuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg IFRoZSBETUEgZGVzY3JpcHRvciB0YWJsZSBpcyBjcmVhdGVkDQo+ID4gc3VjY2Vzc2Z1bGx5Lg0K PiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgRE1BIGRlc2NyaXB0b3IgdGFi bGUgaXNuJ3QgY3JlYXRlZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0J1aWxkRG1hRGVzY1RhYmxlICgNCj4gPiA+ICsgIElO IERXX01NQ19IQ19UUkIgICAgICAgICAgKlRyYg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgRGF0YTsNCj4gPiA+ICsgIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgRGF0YUxlbjsNCj4gPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAg ICAgRW50cmllczsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ ID4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZzsNCj4gPiA+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgVGFibGVTaXplOw0KPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICBTdGF0dXM7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEJ5dGVzOw0KPiA+ ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBCbG9ja3M7DQo+ID4gPiArICBEV19NTUNf SENfRE1BX0RFU0NfTElORSAgICpEbWFEZXNjOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICBEbWFEZXNjUGh5Ow0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJ ZHN0czsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQnl0Q250Ow0KPiA+ID4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBCbGtTaXplOw0KPiA+ID4gKw0KPiA+ID4gKyAg RGF0YSAgICA9IFRyYi0+RGF0YVBoeTsNCj4gPiA+ICsgIERhdGFMZW4gPSBUcmItPkRhdGFMZW47 DQo+ID4gPiArICBEZXZCYXNlID0gVHJiLT5Qcml2YXRlLT5EZXZCYXNlOw0KPiA+ID4gKyAgLy8N Cj4gPiA+ICsgIC8vIE9ubHkgc3VwcG9ydCAzMmJpdCBETUEgRGVzY3JpcHRvciBUYWJsZQ0KPiA+ ID4gKyAgLy8NCj4gPiA+ICsgIGlmICgoRGF0YSA+PSAweDEwMDAwMDAwMHVsKSB8fCAoKERhdGEg KyBEYXRhTGVuKSA+IDB4MTAwMDAwMDAwdWwpKSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gQWRk cmVzcyBmaWVsZCBzaGFsbCBiZSBzZXQgb24gMzItYml0IGJvdW5kYXJ5IChMb3dlciAyLWJpdCBp cyBhbHdheXMNCj4gc2V0DQo+ID4gPiArICAvLyB0byAwKSBmb3IgMzItYml0IGFkZHJlc3MgZGVz Y3JpcHRvciB0YWJsZS4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBpZiAoKERhdGEgJiAoQklUMCB8 IEJJVDEpKSAhPSAwKSB7DQo+ID4gPiArICAgIERFQlVHICgoDQo+ID4gPiArICAgICAgREVCVUdf SU5GTywNCj4gPiA+ICsgICAgICAiVGhlIGJ1ZmZlciBbMHgleF0gdG8gY29uc3RydWN0IERNQSBk ZXNjIGlzIG5vdCBhbGlnbmVkIHRvIDQNCj4gYnl0ZXMhXG4iLA0KPiA+ID4gKyAgICAgIERhdGEN Cj4gPiA+ICsgICAgICApKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIEVudHJpZXMg ICA9IChEYXRhTGVuICsgRFdNTUNfRE1BX0JVRl9TSVpFIC0gMSkgLw0KPiA+IERXTU1DX0RNQV9C VUZfU0laRTsNCj4gPiA+ICsgIFRhYmxlU2l6ZSA9IEVudHJpZXMgKiBzaXplb2YgKERXX01NQ19I Q19ETUFfREVTQ19MSU5FKTsNCj4gPiA+ICsgIEJsb2NrcyAgICA9IChEYXRhTGVuICsgRFdfTU1D X0JMT0NLX1NJWkUgLSAxKSAvDQo+ID4gRFdfTU1DX0JMT0NLX1NJWkU7DQo+ID4gPiArDQo+ID4g PiArICBUcmItPkRtYURlc2NQYWdlcyA9IChVSU5UMzIpRUZJX1NJWkVfVE9fUEFHRVMgKEVudHJp ZXMgKg0KPiA+IERXTU1DX0RNQV9CVUZfU0laRSk7DQo+ID4gPiArLyogIFN0YXR1cyA9IERldklv LT5BbGxvY2F0ZUJ1ZmZlciAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBEZXZJbywNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlQW55UGFnZXMsDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICBFZmlCb290U2VydmljZXNEYXRhLA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgRUZJX1NJWkVfVE9fUEFHRVMgKFRhYmxlU2l6ZSksDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAoRUZJX1BIWVNJQ0FMX0FERFJFU1MgKikmVHJiLT5EbWFEZXNjDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICApOyovDQo+ID4gPiArICBTdGF0dXMgPSBEbWFBbGxvY2F0ZUJ1ZmZl ciAoRWZpQm9vdFNlcnZpY2VzRGF0YSwgRUZJX1NJWkVfVE9fUEFHRVMNCj4gPiAoVGFibGVTaXpl KSwNCj4gPiA+ICsgICAgICAgICAgICAgKFZPSUQgKikmVHJiLT5EbWFEZXNjKTsNCj4gPiA+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0Zf UkVTT1VSQ0VTOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgWmVyb01lbSAoVHJiLT5E bWFEZXNjLCBUYWJsZVNpemUpOw0KPiA+ID4gKyAgQnl0ZXMgID0gVGFibGVTaXplOw0KPiA+ID4g Kw0KPiA+ID4gKyAgU3RhdHVzID0gRG1hTWFwIChNYXBPcGVyYXRpb25CdXNNYXN0ZXJDb21tb25C dWZmZXIsDQo+ID4gPiArICAgICAgICAgICAgIChFRklfUEhZU0lDQUxfQUREUkVTUyAqKVRyYi0+ RG1hRGVzYywNCj4gPiA+ICsgICAgICAgICAgICAgJkJ5dGVzLCAmVHJiLT5EbWFEZXNjUGh5LCAm VHJiLT5EbWFNYXApOw0KPiA+ID4gKy8qICBTdGF0dXMgPSBEZXZJby0+TWFwICgNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgIERldklvLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgRWZp QnVzTWFzdGVyQ29tbW9uQnVmZmVyLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKEVGSV9Q SFlTSUNBTF9BRERSRVNTICopVHJiLT5EbWFEZXNjLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgJkJ5dGVzLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgJlRyYi0+RG1hRGVzY1BoeSwN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICZUcmItPkRtYU1hcA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgKTsqLw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSB8fCAoQnl0ZXMgIT0gVGFibGVTaXplKSkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAv LyBNYXAgZXJyb3Igb3IgdW5hYmxlIHRvIG1hcCB0aGUgd2hvbGUgUkZpcyBidWZmZXIgaW50byBh IGNvbnRpZ3VvdXMNCj4gPiA+ICsgICAgLy8gcmVnaW9uLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4g Ky8qICAgIERldklvLT5GcmVlQnVmZmVyICgNCj4gPiA+ICsgICAgICAgICAgICAgRGV2SW8sDQo+ ID4gPiArICAgICAgICAgICAgIEVGSV9TSVpFX1RPX1BBR0VTIChUYWJsZVNpemUpLA0KPiA+ID4g KyAgICAgICAgICAgICAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpVHJiLT5EbWFEZXNjDQo+ID4gPiAr ICAgICAgICAgICAgICk7Ki8NCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChVSU5UNjQpKFVJTlROKVRyYi0+ RG1hRGVzY1BoeSA+IDB4MTAwMDAwMDAwdWwpIHsNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAg Ly8gVGhlIERNQSBkb2Vzbid0IHN1cHBvcnQgNjRiaXQgYWRkcmVzc2luZy4NCj4gPiA+ICsgICAg Ly8NCj4gPiA+ICsgICAgRG1hVW5tYXAgKFRyYi0+RG1hTWFwKTsNCj4gPiA+ICsvKiAgICBEZXZJ by0+VW5tYXAgKA0KPiA+ID4gKyAgICAgIERldklvLA0KPiA+ID4gKyAgICAgIFRyYi0+RG1hTWFw DQo+ID4gPiArICAgICk7Ki8NCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoRGF0YUxlbiA8IERXX01NQ19CTE9DS19T SVpFKSB7DQo+ID4gPiArICAgIEJsa1NpemUgPSBEYXRhTGVuOw0KPiA+ID4gKyAgICBCeXRDbnQg PSBEYXRhTGVuOw0KPiA+ID4gKyAgICBSZW1haW5pbmcgPSBEYXRhTGVuOw0KPiA+ID4gKyAgfSBl bHNlIHsNCj4gPiA+ICsgICAgQmxrU2l6ZSA9IERXX01NQ19CTE9DS19TSVpFOw0KPiA+ID4gKyAg ICBCeXRDbnQgPSBEV19NTUNfQkxPQ0tfU0laRSAqIEJsb2NrczsNCj4gPiA+ICsgICAgUmVtYWlu aW5nID0gRFdfTU1DX0JMT0NLX1NJWkUgKiBCbG9ja3M7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CTEtTSVosIEJsa1NpemUpOw0K PiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQllUQ05ULCBCeXRDbnQpOw0K PiA+ID4gKyAgRG1hRGVzYyA9IFRyYi0+RG1hRGVzYzsNCj4gPiA+ICsgIGZvciAoSW5kZXggPSAw OyBJbmRleCA8IEVudHJpZXM7IEluZGV4KyssIERtYURlc2MrKykgew0KPiA+ID4gKyAgICBEbWFE ZXNjLT5EZXMwID0gRFdfTU1DX0lETUFDX0RFUzBfT1dOIHwNCj4gPiBEV19NTUNfSURNQUNfREVT MF9DSCB8DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBEV19NTUNfSURNQUNfREVTMF9ESUM7 DQo+ID4gPiArICAgIERtYURlc2MtPkRlczEgPSBEV19NTUNfSURNQUNfREVTMV9CUzENCj4gPiAo RFdNTUNfRE1BX0JVRl9TSVpFKTsNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgLy8gQnVmZmVy IEFkZHJlc3MNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgRG1hRGVzYy0+RGVzMiA9IChVSU5U MzIpKChVSU5UTilUcmItPkRhdGFQaHkgKw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKERX TU1DX0RNQV9CVUZfU0laRSAqIEluZGV4KSk7DQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIC8v IE5leHQgRGVzY3JpcHRvciBBZGRyZXNzDQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIERtYURl c2MtPkRlczMgPSAoVUlOVDMyKSgoVUlOVE4pVHJiLT5EbWFEZXNjUGh5ICsNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNpemVvZiAoRFdfTU1DX0hDX0RNQV9ERVNDX0xJTkUpICogKEluZGV4 ICsgMSkpOw0KPiA+ID4gKyAgICBSZW1haW5pbmcgPSBSZW1haW5pbmcgLSBEV01NQ19ETUFfQlVG X1NJWkU7DQo+ID4gPiArICB9DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gRmlyc3QgRGVzY3Jp cHRvcg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIFRyYi0+RG1hRGVzY1swXS5EZXMwIHw9IERXX01N Q19JRE1BQ19ERVMwX0ZTOw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIExhc3QgRGVzY3JpcHRv cg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIFRyYi0+RG1hRGVzY1tFbnRyaWVzIC0gMV0uRGVzMCAm PSB+KERXX01NQ19JRE1BQ19ERVMwX0NIIHwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBEV19NTUNfSURNQUNfREVTMF9ESUMpOw0KPiA+ID4gKyAgVHJiLT5EbWFE ZXNjW0VudHJpZXMgLSAxXS5EZXMwIHw9IERXX01NQ19JRE1BQ19ERVMwX09XTiB8DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdfTU1DX0lETUFDX0RFUzBfTEQ7 DQo+ID4gPiArICBUcmItPkRtYURlc2NbRW50cmllcyAtIDFdLkRlczEgPSBEV19NTUNfSURNQUNf REVTMV9CUzENCj4gPiAoUmVtYWluaW5nICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERXTU1DX0RNQV9CVUZfU0laRSk7DQo+ID4gPiArICAvLw0KPiA+ID4gKyAg Ly8gU2V0IHRoZSBuZXh0IGZpZWxkIG9mIHRoZSBMYXN0IERlc2NyaXB0b3INCj4gPiA+ICsgIC8v DQo+ID4gPiArICBUcmItPkRtYURlc2NbRW50cmllcyAtIDFdLkRlczMgPSAwOw0KPiA+ID4gKyAg RG1hRGVzY1BoeSA9IChVSU5UMzIpVHJiLT5EbWFEZXNjUGh5Ow0KPiA+ID4gKw0KPiA+ID4gKyAg TW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfREJBRERSLCBEbWFEZXNjUGh5KTsNCj4gPiA+ ICsNCj4gPiA+ICsgIEFybURhdGFTeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAg QXJtSW5zdHJ1Y3Rpb25TeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAgLy8NCj4g PiA+ICsgIC8vIENsZWFyIGludGVycnVwdHMNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBJZHN0cyA9 IH4wOw0KPiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfSURTVFMsIElkc3Rz KTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtUcmFuc2ZlckZpZm8gKA0KPiA+ID4gKyAgSU4gRFdf TU1DX0hDX1RSQiAgICAgICAgICAqVHJiDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ID4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICBEYXRhOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBS ZWNlaXZlZDsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQ291bnQ7DQo+ID4g PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEludHN0czsNCj4gPiA+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgU3RzOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBGaWZvQ291bnQ7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4OyAg ICAgLyogY291bnQgd2l0aCBieXRlcyAqLw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBBc2NlbmRpbmc7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIERlc2Nl bmRpbmc7DQo+ID4gPiArDQo+ID4gPiArICBEZXZCYXNlICAgPSBUcmItPlByaXZhdGUtPkRldkJh c2U7DQo+ID4gPiArICBSZWNlaXZlZCA9IDA7DQo+ID4gPiArICBDb3VudCA9IDA7DQo+ID4gPiAr ICBJbmRleCA9IDA7DQo+ID4gPiArICBBc2NlbmRpbmcgPSAwOw0KPiA+ID4gKyAgRGVzY2VuZGlu ZyA9ICgoVHJiLT5EYXRhTGVuICsgMykgJiB+MykgLSA0Ow0KPiA+ID4gKyAgZG8gew0KPiA+ID4g KyAgICBJbnRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMpOw0KPiA+ ID4gKw0KPiA+ID4gKyAgICBpZiAoVHJiLT5EYXRhTGVuICYmIChJbnRzdHMgJiBEV19NTUNfSU5U X1RYRFIpICYmICFUcmItPlJlYWQpIHsNCj4gPiA+ICsgICAgICBTdHMgPSBNbWlvUmVhZDMyIChE ZXZCYXNlICsgRFdfTU1DX1NUQVRVUyk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgd2hpbGUgKCEo RFdfTU1DX1NUU19GSUZPX0ZVTEwoU3RzKSkNCj4gPiA+ICsgICAgICAgICAgICAgICYmIChSZWNl aXZlZCA8IFRyYi0+RGF0YUxlbikNCj4gPiA+ICsgICAgICAgICAgICAgICYmIChJbnRzdHMgJiBE V19NTUNfSU5UX1RYRFIpKSB7DQo+ID4gPiArICAgICAgICBpZiAoVHJiLT5Vc2VCRSkgew0KPiA+ ID4gKyAgICAgICAgICBEYXRhID0gU3dhcEJ5dGVzMzIgKCooVUlOVDMyICopKChVSU5UTilUcmIt PkRhdGEgKw0KPiBEZXNjZW5kaW5nKSk7DQo+ID4gPiArICAgICAgICAgIERlc2NlbmRpbmcgPSBE ZXNjZW5kaW5nIC0gNDsNCj4gPiA+ICsgICAgICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgICAg IERhdGEgPSAqKFVJTlQzMiAqKSgoVUlOVE4pVHJiLT5EYXRhICsgQXNjZW5kaW5nKTsNCj4gPiA+ ICsgICAgICAgICAgQXNjZW5kaW5nICs9IDQ7DQo+ID4gPiArICAgICAgICB9DQo+ID4gPiArICAg ICAgICBJbmRleCArPSA0Ow0KPiA+ID4gKyAgICAgICAgUmVjZWl2ZWQgKz0gNDsNCj4gPiA+ICsN Cj4gPiA+ICsgICAgICAgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0ZJRk9fU1RBUlQs IERhdGEpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgSW50c3RzID0gRFdfTU1DX0lOVF9UWERS Ow0KPiA+ID4gKyAgICAgICAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfUklOVFNUUywg SW50c3RzKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgIEludHN0cyA9IE1taW9SZWFkMzIgKERl dkJhc2UgKyBEV19NTUNfUklOVFNUUyk7DQo+ID4gPiArICAgICAgICBTdHMgPSBNbWlvUmVhZDMy IChEZXZCYXNlICsgRFdfTU1DX1NUQVRVUyk7DQo+ID4gPiArICAgICAgICB9DQo+ID4gPiArICAg ICAgY29udGludWU7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgaWYgKFRyYi0+ RGF0YUxlbiAmJiAoKEludHN0cyAmIERXX01NQ19JTlRfUlhEUikgfHwNCj4gPiA+ICsgICAgICAg KEludHN0cyAmIERXX01NQ19JTlRfRFRPKSkgJiYgVHJiLT5SZWFkKSB7DQo+ID4gPiArICAgICAg U3RzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19TVEFUVVMpOw0KPiA+ID4gKyAgICAg IC8vDQo+ID4gPiArICAgICAgLy8gQ29udmVydCB0byBieXRlcw0KPiA+ID4gKyAgICAgIC8vDQo+ ID4gPiArICAgICAgRmlmb0NvdW50ID0gR0VUX1NUU19GSUZPX0NPVU5UIChTdHMpIDw8IDI7DQo+ ID4gPiArICAgICAgaWYgKChGaWZvQ291bnQgPT0gMCkgJiYgKFJlY2VpdmVkIDwgVHJiLT5EYXRh TGVuKSkgew0KPiA+ID4gKyAgICAgICAgY29udGludWU7DQo+ID4gPiArICAgICAgfQ0KPiA+ID4g KyAgICAgIEluZGV4ID0gMDsNCj4gPiA+ICsgICAgICBDb3VudCA9IChNSU4gKEZpZm9Db3VudCwg VHJiLT5EYXRhTGVuKSArIDMpICYgfjM7DQo+ID4gPiArICAgICAgd2hpbGUgKEluZGV4IDwgQ291 bnQpIHsNCj4gPiA+ICsgICAgICAgIERhdGEgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1D X0ZJRk9fU1RBUlQpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgaWYgKFRyYi0+VXNlQkUpIHsN Cj4gPiA+ICsgICAgICAgICAgKihVSU5UMzIgKikoKFVJTlROKVRyYi0+RGF0YSArIERlc2NlbmRp bmcpID0gU3dhcEJ5dGVzMzINCj4gKERhdGEpOw0KPiA+ID4gKyAgICAgICAgICBEZXNjZW5kaW5n ID0gRGVzY2VuZGluZyAtIDQ7DQo+ID4gPiArICAgICAgICB9IGVsc2Ugew0KPiA+ID4gKyAgICAg ICAgICAqKFVJTlQzMiAqKSgoVUlOVE4pVHJiLT5EYXRhICsgQXNjZW5kaW5nKSA9IERhdGE7DQo+ ID4gPiArICAgICAgICAgIEFzY2VuZGluZyArPSA0Ow0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4g KyAgICAgICAgSW5kZXggKz0gNDsNCj4gPiA+ICsgICAgICAgIFJlY2VpdmVkICs9IDQ7DQo+ID4g PiArICAgICAgfSAvKiB3aGlsZSAqLw0KPiA+ID4gKyAgICB9IC8qIGlmICovDQo+ID4gPiArICB9 IHdoaWxlICgoKEludHN0cyAmIERXX01NQ19JTlRfQ01EX0RPTkUpID09IDApIHx8IChSZWNlaXZl ZCA8DQo+IFRyYi0NCj4gPiA+RGF0YUxlbikpOw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIENs ZWFyIFJJTlRTVFMNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBJbnRzdHMgPSB+MDsNCj4gPiA+ICsg IE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIEludHN0cyk7DQo+ID4gPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgQ3JlYXRlIGEgbmV3IFRSQiBmb3IgdGhlIFNEL01NQyBjbWQgcmVxdWVzdC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBE V19NTUNfSENfUFJJVkFURV9EQVRBDQo+ID4gaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5d IFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRo ZQ0KPiA+IGNvbW1hbmQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8uDQo+ ID4gPiArICBAcGFyYW1baW5dIFBhY2tldCAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgU0QgY29t bWFuZCBkYXRhIHN0cnVjdHVyZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gRXZlbnQgICAgICAgICAg SWYgRXZlbnQgaXMgTlVMTCwgYmxvY2tpbmcgSS9PIGlzIHBlcmZvcm1lZC4gSWYNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQgaXMgbm90IE5VTEwsIHRoZW4gbm9uYmxv Y2tpbmcgSS9PIGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1l ZCwgYW5kIEV2ZW50IHdpbGwgYmUgc2lnbmFsZWQgd2hlbiB0aGUNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGFja2V0IGNvbXBsZXRlcy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBy ZXR1cm4gQ3JlYXRlZCBUcmIgb3IgTlVMTC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtE V19NTUNfSENfVFJCICoNCj4gPiA+ICtEd01tY0NyZWF0ZVRyYiAoDQo+ID4gPiArICBJTiBEV19N TUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiA+ICsgIElOIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gPiArICBJTiBFRklf U0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0LA0KPiA+ID4gKyAgSU4gRUZJ X0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQNCj4gPiA+ICsgICkNCj4gPiA+ ICt7DQo+ID4gPiArICBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAqVHJiOw0KPiA+ID4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKyAgRUZJX1RQ TCAgICAgICAgICAgICAgICAgICAgICAgT2xkVHBsOw0KPiA+ID4gKyAgRUZJX0lPX09QRVJBVElP Tl9UWVBFICAgICAgICAgRmxhZzsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgIE1hcExlbmd0aDsNCj4gPiA+ICsNCj4gPiA+ICsgIFRyYiA9IEFsbG9jYXRlWmVyb1Bvb2wg KHNpemVvZiAoRFdfTU1DX0hDX1RSQikpOw0KPiA+ID4gKyAgaWYgKFRyYiA9PSBOVUxMKSB7DQo+ ID4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgVHJi LT5TaWduYXR1cmUgPSBEV19NTUNfSENfVFJCX1NJRzsNCj4gPiA+ICsgIFRyYi0+U2xvdCAgICAg ID0gU2xvdDsNCj4gPiA+ICsgIFRyYi0+QmxvY2tTaXplID0gMHgyMDA7DQo+ID4gPiArICBUcmIt PlBhY2tldCAgICA9IFBhY2tldDsNCj4gPiA+ICsgIFRyYi0+RXZlbnQgICAgID0gRXZlbnQ7DQo+ ID4gPiArICBUcmItPlN0YXJ0ZWQgICA9IEZBTFNFOw0KPiA+ID4gKyAgVHJiLT5UaW1lb3V0ICAg PSBQYWNrZXQtPlRpbWVvdXQ7DQo+ID4gPiArICBUcmItPlByaXZhdGUgICA9IFByaXZhdGU7DQo+ ID4gPiArDQo+ID4gPiArICBpZiAoKFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCAhPSAwKSAmJiAo UGFja2V0LT5JbkRhdGFCdWZmZXIgIT0NCj4gTlVMTCkpIHsNCj4gPiA+ICsgICAgVHJiLT5EYXRh ICAgID0gUGFja2V0LT5JbkRhdGFCdWZmZXI7DQo+ID4gPiArICAgIFRyYi0+RGF0YUxlbiA9IFBh Y2tldC0+SW5UcmFuc2Zlckxlbmd0aDsNCj4gPiA+ICsgICAgVHJiLT5SZWFkICAgID0gVFJVRTsN Cj4gPiA+ICsgICAgWmVyb01lbSAoVHJiLT5EYXRhLCBUcmItPkRhdGFMZW4pOw0KPiA+ID4gKyAg fSBlbHNlIGlmIChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoICYmIChQYWNrZXQtPk91dERhdGFC dWZmZXIgIT0NCj4gPiBOVUxMKSkgew0KPiA+ID4gKyAgICBUcmItPkRhdGEgICAgPSBQYWNrZXQt Pk91dERhdGFCdWZmZXI7DQo+ID4gPiArICAgIFRyYi0+RGF0YUxlbiA9IFBhY2tldC0+T3V0VHJh bnNmZXJMZW5ndGg7DQo+ID4gPiArICAgIFRyYi0+UmVhZCAgICA9IEZBTFNFOw0KPiA+ID4gKyAg fSBlbHNlIGlmICghUGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoICYmICFQYWNrZXQtPk91dFRyYW5z ZmVyTGVuZ3RoKSB7DQo+ID4gPiArICAgIFRyYi0+RGF0YSAgICA9IE5VTEw7DQo+ID4gPiArICAg IFRyYi0+RGF0YUxlbiA9IDA7DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBnb3RvIEVy cm9yOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKCgoUHJpdmF0ZS0+U2xvdFtU cmItPlNsb3RdLkNhcmRUeXBlID09IEVtbWNDYXJkVHlwZSkgJiYNCj4gPiA+ICsgICAgICAgKFBh Y2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRJbmRleCA9PQ0KPiA+IEVNTUNfU0VORF9UVU5JTkdf QkxPQ0spKSB8fA0KPiA+ID4gKyAgICAgICgoUHJpdmF0ZS0+U2xvdFtUcmItPlNsb3RdLkNhcmRU eXBlID09IFNkQ2FyZFR5cGUpICYmDQo+ID4gPiArICAgICAgIChQYWNrZXQtPlNkTW1jQ21kQmxr LT5Db21tYW5kSW5kZXggPT0NCj4gPiBTRF9TRU5EX1RVTklOR19CTE9DSykpKSB7DQo+ID4gPiAr ICAgIFRyYi0+TW9kZSA9IFNkTW1jUGlvTW9kZTsNCj4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiAr ICAgIGlmIChUcmItPlJlYWQpIHsNCj4gPiA+ICsgICAgICBGbGFnID0gRWZpQnVzTWFzdGVyV3Jp dGU7DQo+ID4gPiArICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgRmxhZyA9IEVmaUJ1c01hc3Rl clJlYWQ7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgaWYgKFByaXZhdGUtPlNs b3RbVHJiLT5TbG90XS5DYXJkVHlwZSA9PSBTZENhcmRUeXBlKSB7DQo+ID4gPiArICAgICAgVHJi LT5Vc2VGaWZvID0gVFJVRTsNCj4gPiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ICsgICAgICBUcmIt PlVzZUZpZm8gPSBGQUxTRTsNCj4gPiA+ICsgICAgICBpZiAoVHJiLT5EYXRhTGVuKSB7DQo+ID4g PiArICAgICAgICBNYXBMZW5ndGggPSBUcmItPkRhdGFMZW47DQo+ID4gPiArICAgICAgICBTdGF0 dXMgPSBEbWFNYXAgKEZsYWcsIFRyYi0+RGF0YSwgJk1hcExlbmd0aCwgJlRyYi0+RGF0YVBoeSwN Cj4gPiAmVHJiLT5EYXRhTWFwKTsNCj4gPiA+ICsvKiAgICAgICAgU3RhdHVzID0gRGV2SW8tPk1h cCAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZJbywNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIEZsYWcsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICBUcmItPkRhdGEsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmTWFwTGVu Z3RoLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlRyYi0+RGF0YVBoeSwNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZUcmItPkRhdGFNYXANCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICk7Ki8NCj4gPiA+ICsgICAgICAgIGlmIChFRklfRVJST1Ig KFN0YXR1cykgfHwgKFRyYi0+RGF0YUxlbiAhPSBNYXBMZW5ndGgpKSB7DQo+ID4gPiArICAgICAg ICAgIFN0YXR1cyA9IEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ID4gPiArICAgICAgICAgIGdvdG8g RXJyb3I7DQo+ID4gPiArICAgICAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgICAgICBTdGF0dXMg PSBCdWlsZERtYURlc2NUYWJsZSAoVHJiKTsNCj4gPiA+ICsgICAgICAgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCj4gPiA+ICsgICAgICAgICAgRG1hVW5tYXAoVHJiLT5EYXRhTWFwKTsNCj4g PiA+ICsgICAgICAgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICsgICAg ICAgIFN0YXR1cyA9IER3TW1jSGNTdGFydERtYSAoUHJpdmF0ZSwgVHJiKTsNCj4gPiA+ICsgICAg ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgICAgICAgRG1hVW5tYXAo VHJiLT5EYXRhTWFwKTsNCj4gPiA+ICsgICAgICAgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgICAg ICAgIH0NCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0gLyogVHVuaW5n QmxvY2sgKi8NCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChFdmVudCAhPSBOVUxMKSB7DQo+ID4gPiAr ICAgIE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9OT1RJRlkpOw0KPiA+ID4gKyAgICBJbnNl cnRUYWlsTGlzdCAoJlByaXZhdGUtPlF1ZXVlLCAmVHJiLT5UcmJMaXN0KTsNCj4gPiA+ICsgICAg Z0JTLT5SZXN0b3JlVFBMIChPbGRUcGwpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg cmV0dXJuIFRyYjsNCj4gPiA+ICsNCj4gPiA+ICtFcnJvcjoNCj4gPiA+ICsgIHJldHVybiBOVUxM Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEZyZWUgdGhlIHJlc291 cmNlIHVzZWQgYnkgdGhlIFRSQi4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gVHJiICAg ICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2UuDQo+ID4g PiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0R3TW1jRnJlZVRyYiAoDQo+ID4g PiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAqVHJiDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgaWYgKFRyYi0+RG1hTWFwICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgRG1hVW5t YXAgKFRyYi0+RG1hTWFwKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIGlmIChUcmItPkRhdGFNYXAg IT0gTlVMTCkgew0KPiA+ID4gKyAgICBEbWFVbm1hcCAoVHJiLT5EYXRhTWFwKTsNCj4gPiA+ICsg IH0NCj4gPiA+ICsgIEZyZWVQb29sIChUcmIpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIENoZWNrIGlmIHRoZSBlbnYgaXMgcmVhZHkgZm9yIGV4ZWN1dGUgc3BlY2lm aWVkIFRSQi4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBw b2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBDQo+ID4gaW5zdGFuY2UuDQo+ID4g PiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNf SENfVFJCIGluc3RhbmNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgZW52IGlzIHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uLg0KPiA+ID4gKyAgQHJldHZh bCBFRklfTk9UX1JFQURZICAgICBUaGUgZW52IGlzIG5vdCByZWFkeSBmb3IgVFJCIGV4ZWN1dGlv bi4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4u DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jQ2hl Y2tUcmJFbnYgKA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAg KlByaXZhdGUsDQo+ID4gPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAq VHJiDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdhaXQgZm9yIHRoZSBlbnYg dG8gYmUgcmVhZHkgZm9yIGV4ZWN1dGUgc3BlY2lmaWVkIFRSQi4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJ VkFURV9EQVRBDQo+ID4gaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAg ICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgZW52IGlzIHJlYWR5IGZvciBU UkIgZXhlY3V0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBFRklfVElNRU9VVCAgICAgICBUaGUgZW52 IGlzIG5vdCByZWFkeSBmb3IgVFJCIGV4ZWN1dGlvbiBpbg0KPiB0aW1lLg0KPiA+ID4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBlbi4NCj4gPiA+ICsNCj4gPiA+ ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRHdNbWNXYWl0VHJiRW52ICgNCj4gPiA+ ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ID4g KyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgIFN0 YXR1czsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNr ZXQ7DQo+ID4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0 Ow0KPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5maW5pdGVX YWl0Ow0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFdhaXQgQ29tbWFuZCBDb21w bGV0ZSBJbnRlcnJ1cHQgU3RhdHVzIGJpdCBpbiBOb3JtYWwgSW50ZXJydXB0DQo+ID4gU3RhdHVz DQo+ID4gPiArICAvLyBSZWdpc3Rlcg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIFBhY2tldCAgPSBU cmItPlBhY2tldDsNCj4gPiA+ICsgIFRpbWVvdXQgPSBQYWNrZXQtPlRpbWVvdXQ7DQo+ID4gPiAr ICBpZiAoVGltZW91dCA9PSAwKSB7DQo+ID4gPiArICAgIEluZmluaXRlV2FpdCA9IFRSVUU7DQo+ ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBJbmZpbml0ZVdhaXQgPSBGQUxTRTsNCj4gPiA+ ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHdoaWxlIChJbmZpbml0ZVdhaXQgfHwgKFRpbWVvdXQg PiAwKSkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBDaGVjayBUcmIgZXhlY3V0aW9u IHJlc3VsdCBieSByZWFkaW5nIE5vcm1hbCBJbnRlcnJ1cHQgU3RhdHVzDQo+ID4gcmVnaXN0ZXIu DQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIFN0YXR1cyA9IER3TW1jQ2hlY2tUcmJFbnYgKFBy aXZhdGUsIFRyYik7DQo+ID4gPiArICAgIGlmIChTdGF0dXMgIT0gRUZJX05PVF9SRUFEWSkgew0K PiA+ID4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgLy8N Cj4gPiA+ICsgICAgLy8gU3RhbGwgZm9yIDEgbWljcm9zZWNvbmQuDQo+ID4gPiArICAgIC8vDQo+ ID4gPiArICAgIGdCUy0+U3RhbGwgKDEpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBUaW1lb3V0LS07 DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gRUZJX1RJTUVPVVQ7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd0VtbWNFeGVjVHJiICgN Cj4gPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0K PiA+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFD S0VUICpQYWNrZXQ7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEZXZCYXNlOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q21kOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW1jU3Rh dHVzOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U3Rh dHVzOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1l bnQ7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJNYXNr Ow0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZW91dDsN Cj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldCA9IFRyYi0+UGFja2V0Ow0KPiA+ID4gKyAgRGV2QmFz ZSA9IFRyYi0+UHJpdmF0ZS0+RGV2QmFzZTsNCj4gPiA+ICsNCj4gPiA+ICsgIEFybURhdGFTeW5j aHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAgQXJtSW5zdHJ1Y3Rpb25TeW5jaHJvbml6 YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFdhaXQgdW50aWwgTU1D IGlzIGlkbGUNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBkbyB7DQo+ID4gPiArICAgIE1tY1N0YXR1 cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfU1RBVFVTKTsNCj4gPiA+ICsgIH0gd2hp bGUgKE1tY1N0YXR1cyAmIERXX01NQ19TVFNfREFUQV9CVVNZKTsNCj4gPiA+ICsNCj4gPiA+ICsg IEludFN0YXR1cyA9IH4wOw0KPiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNf UklOVFNUUywgSW50U3RhdHVzKTsNCj4gPiA+ICsgIENtZCA9IENNRF9JTkRFWCAoUGFja2V0LT5T ZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4KTsNCj4gPiA+ICsgIGlmICgoUGFja2V0LT5TZE1tY0Nt ZEJsay0+Q29tbWFuZFR5cGUgPT0NCj4gPiBTZE1tY0NvbW1hbmRUeXBlQWMpIHx8DQo+ID4gPiAr ICAgICAgKFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRUeXBlID09DQo+ID4gU2RNbWNDb21t YW5kVHlwZUFkdGMpKSB7DQo+ID4gPiArICAgIHN3aXRjaCAoUGFja2V0LT5TZE1tY0NtZEJsay0+ Q29tbWFuZEluZGV4KSB7DQo+ID4gPiArICAgIGNhc2UgRU1NQ19TRVRfUkVMQVRJVkVfQUREUjoN Cj4gPiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9TRU5EX0lOSVQ7DQo+ID4gPiArICAgICAgYnJl YWs7DQo+ID4gPiArICAgIGNhc2UgRU1NQ19TRU5EX1NUQVRVUzoNCj4gPiA+ICsgICAgICBDbWQg fD0gQklUX0NNRF9XQUlUX1BSVkRBVEFfQ09NUExFVEU7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ ID4gPiArICAgIGNhc2UgRU1NQ19TVE9QX1RSQU5TTUlTU0lPTjoNCj4gPiA+ICsgICAgICBDbWQg fD0gQklUX0NNRF9TVE9QX0FCT1JUX0NNRDsNCj4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsg ICAgfQ0KPiA+ID4gKyAgICBpZiAoUGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gPiAr ICAgICAgQ21kIHw9IEJJVF9DTURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFIHwNCj4gPiBCSVRfQ01E X0RBVEFfRVhQRUNURUQgfA0KPiA+ID4gKyAgICAgICAgICAgICBCSVRfQ01EX1JFQUQ7DQo+ID4g PiArICAgIH0gZWxzZSBpZiAoUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCkgew0KPiA+ID4gKyAg ICAgIENtZCB8PSBCSVRfQ01EX1dBSVRfUFJWREFUQV9DT01QTEVURSB8DQo+ID4gQklUX0NNRF9E QVRBX0VYUEVDVEVEIHwNCj4gPiA+ICsgICAgICAgICAgICAgQklUX0NNRF9XUklURTsNCj4gPiA+ ICsgICAgfQ0KPiA+ID4gKyAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgfA0KPiA+ IEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0VfQ1JDOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsg ICAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kSW5kZXgpIHsNCj4gPiA+ICsg ICAgY2FzZSBFTU1DX0dPX0lETEVfU1RBVEU6DQo+ID4gPiArICAgICAgQ21kIHw9IEJJVF9DTURf U0VORF9JTklUOw0KPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICBjYXNlIEVNTUNfU0VO RF9PUF9DT05EOg0KPiA+ID4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVDsN Cj4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsgICAgY2FzZSBFTU1DX0FMTF9TRU5EX0NJRDoN Cj4gPiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgfCBCSVRfQ01EX0xP TkdfUkVTUE9OU0UNCj4gfA0KPiA+ID4gKyAgICAgICAgICAgICBCSVRfQ01EX0NIRUNLX1JFU1BP TlNFX0NSQyB8IEJJVF9DTURfU0VORF9JTklUOw0KPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4g KyAgICB9DQo+ID4gPiArICB9DQo+ID4gPiArICBzd2l0Y2ggKFBhY2tldC0+U2RNbWNDbWRCbGst PlJlc3BvbnNlVHlwZSkgew0KPiA+ID4gKyAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIyOg0KPiA+ ID4gKyAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgfA0KPiA+IEJJVF9DTURfQ0hF Q0tfUkVTUE9OU0VfQ1JDIHwNCj4gPiA+ICsgICAgICAgICAgIEJJVF9DTURfTE9OR19SRVNQT05T RTsNCj4gPiA+ICsgICAgYnJlYWs7DQo+ID4gPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjM6 DQo+ID4gPiArICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVDsNCj4gPiA+ICsgICAg YnJlYWs7DQo+ID4gPiArICB9DQo+ID4gPiArICBDbWQgfD0gQklUX0NNRF9VU0VfSE9MRF9SRUcg fCBCSVRfQ01EX1NUQVJUOw0KPiA+ID4gKw0KPiA+ID4gKyAgQXJndW1lbnQgPSBQYWNrZXQtPlNk TW1jQ21kQmxrLT5Db21tYW5kQXJndW1lbnQ7DQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFz ZSArIERXX01NQ19DTURBUkcsIEFyZ3VtZW50KTsNCj4gPiA+ICsNCj4gPiA+ICsgIEFybURhdGFT eW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAgQXJtSW5zdHJ1Y3Rpb25TeW5jaHJv bml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKw0KPiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJh c2UgKyBEV19NTUNfQ01ELCBDbWQpOw0KPiA+ID4gKyAgQXJtRGF0YVN5bmNocm9uaXphdGlvbkJh cnJpZXIgKCk7DQo+ID4gPiArICBBcm1JbnN0cnVjdGlvblN5bmNocm9uaXphdGlvbkJhcnJpZXIg KCk7DQo+ID4gPiArDQo+ID4gPiArICBFcnJNYXNrID0gRFdfTU1DX0lOVF9FQkUgfCBEV19NTUNf SU5UX0hMRSB8DQo+ID4gRFdfTU1DX0lOVF9SVE8gfA0KPiA+ID4gKyAgICAgICAgICAgIERXX01N Q19JTlRfUkNSQyB8IERXX01NQ19JTlRfUkU7DQo+ID4gPiArICBFcnJNYXNrIHw9IERXX01NQ19J TlRfRENSQyB8IERXX01NQ19JTlRfRFJUIHwNCj4gPiBEV19NTUNfSU5UX1NCRTsNCj4gPiA+ICsg IGRvIHsNCj4gPiA+ICsgICAgVGltZW91dCA9IDEwMDAwOw0KPiA+ID4gKyAgICBpZiAoLS1UaW1l b3V0ID09IDApIHsNCj4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAg ICBJbnRTdGF0dXMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMpOw0KPiA+ ID4gKyAgICBpZiAoSW50U3RhdHVzICYgRXJyTWFzaykgew0KPiA+ID4gKyAgICAgIHJldHVybiBF RklfREVWSUNFX0VSUk9SOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIGlmIChUcmItPkRhdGFM ZW4gJiYgKChJbnRTdGF0dXMgJiBEV19NTUNfSU5UX0RUTykgPT0gMCkpIHsNCj4gPiA+ICsgICAg ICAvLw0KPiA+ID4gKyAgICAgIC8vIFRyYW5zZmVyIE5vdCBEb25lDQo+ID4gPiArICAgICAgLy8N Cj4gPiA+ICsgICAgICBNaWNyb1NlY29uZERlbGF5ICgxMCk7DQo+ID4gPiArICAgICAgY29udGlu dWU7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgTWljcm9TZWNvbmREZWxheSAoMTApOw0KPiA+ ID4gKyAgfSB3aGlsZSAoIShJbnRTdGF0dXMgJiBEV19NTUNfSU5UX0NNRF9ET05FKSk7DQo+ID4g PiArICBzd2l0Y2ggKFBhY2tldC0+U2RNbWNDbWRCbGstPlJlc3BvbnNlVHlwZSkgew0KPiA+ID4g KyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjE6DQo+ID4gPiArICAgIGNhc2UgU2RNbWNSZXNw b25zZVR5cGVSMWI6DQo+ID4gPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMzoNCj4gPiA+ ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVI0Og0KPiA+ID4gKyAgICBjYXNlIFNkTW1jUmVz cG9uc2VUeXBlUjU6DQo+ID4gPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDAg PSBNbWlvUmVhZDMyIChEZXZCYXNlICsNCj4gPiBEV19NTUNfUkVTUDApOw0KPiA+ID4gKyAgICAg IGJyZWFrOw0KPiA+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjI6DQo+ID4gPiArICAg ICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDAgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsN Cj4gPiBEV19NTUNfUkVTUDApOw0KPiA+ID4gKyAgICAgIFBhY2tldC0+U2RNbWNTdGF0dXNCbGst PlJlc3AxID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+ID4gRFdfTU1DX1JFU1AxKTsNCj4gPiA+ ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMiA9IE1taW9SZWFkMzIgKERldkJh c2UgKw0KPiA+IERXX01NQ19SRVNQMik7DQo+ID4gPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1 c0Jsay0+UmVzcDMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsNCj4gPiBEV19NTUNfUkVTUDMpOw0K PiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4g PiA+ICsgIC8vIFRoZSB3b3JrYXJvdW5kIG9uIEVNTUNfU0VORF9DU0QgaXMgdXNlZCB0byBiZSBj b21wYXRpYmxlIHdpdGgNCj4gPiBTREhDLg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIGlmIChQYWNr ZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kSW5kZXggPT0gRU1NQ19TRU5EX0NTRCkgew0KPiA+ID4g KyAgICB7DQo+ID4gPiArICAgICAgVUlOVDMyICAgQnVmWzRdOw0KPiA+ID4gKyAgICAgIFplcm9N ZW0gKEJ1Ziwgc2l6ZW9mIChCdWYpKTsNCj4gPiA+ICsgICAgICBDb3B5TWVtICgNCj4gPiA+ICsg ICAgICAgIChVSU5UOCAqKUJ1ZiwNCj4gPiA+ICsgICAgICAgIChVSU5UOCAqKSZQYWNrZXQtPlNk TW1jU3RhdHVzQmxrLT5SZXNwMCArIDEsDQo+ID4gPiArICAgICAgICBzaXplb2YgKEJ1ZikgLSAx DQo+ID4gPiArICAgICAgICApOw0KPiA+ID4gKyAgICAgIENvcHlNZW0gKA0KPiA+ID4gKyAgICAg ICAgKFVJTlQ4ICopJlBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwLA0KPiA+ID4gKyAgICAg ICAgKFVJTlQ4ICopQnVmLA0KPiA+ID4gKyAgICAgICAgc2l6ZW9mIChCdWYpIC0gMQ0KPiA+ID4g KyAgICAgICAgKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtFRklfU1RBVFVT DQo+ID4gPiArRHdTZEV4ZWNUcmIgKA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFU QSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAg ICAgICAgICAgICAqVHJiDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJX1NEX01N Q19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4gPiA+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2U7DQo+ID4gPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDbWQ7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNbWNTdGF0dXM7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbnRTdGF0dXM7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBcmd1bWVudDsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVyck1hc2s7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSWRzdHM7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCeXRDbnQ7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCbGtTaXplOw0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgUGFja2V0ID0gVHJiLT5QYWNrZXQ7DQo+ID4g PiArICBEZXZCYXNlICA9IFRyYi0+UHJpdmF0ZS0+RGV2QmFzZTsNCj4gPiA+ICsNCj4gPiA+ICsg IEFybURhdGFTeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAgQXJtSW5zdHJ1Y3Rp b25TeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFdh aXQgdW50aWwgTU1DIGlzIGlkbGUNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBkbyB7DQo+ID4gPiAr ICAgIE1tY1N0YXR1cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfU1RBVFVTKTsNCj4g PiA+ICsgIH0gd2hpbGUgKE1tY1N0YXR1cyAmIERXX01NQ19TVFNfREFUQV9CVVNZKTsNCj4gPiA+ ICsNCj4gPiA+ICsgIEludFN0YXR1cyA9IH4wOw0KPiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJh c2UgKyBEV19NTUNfUklOVFNUUywgSW50U3RhdHVzKTsNCj4gPiA+ICsgIENtZCA9IENNRF9JTkRF WCAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4KTsNCj4gPiA+ICsgIGlmICgoUGFj a2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZFR5cGUgPT0NCj4gPiBTZE1tY0NvbW1hbmRUeXBlQWMp IHx8DQo+ID4gPiArICAgICAgKFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRUeXBlID09DQo+ ID4gU2RNbWNDb21tYW5kVHlwZUFkdGMpKSB7DQo+ID4gPiArICAgIHN3aXRjaCAoUGFja2V0LT5T ZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4KSB7DQo+ID4gPiArICAgIGNhc2UgU0RfU0VUX1JFTEFU SVZFX0FERFI6DQo+ID4gPiArICAgICAgQ21kIHw9IEJJVF9DTURfU0VORF9JTklUOw0KPiA+ID4g KyAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICBjYXNlIFNEX1NUT1BfVFJBTlNNSVNTSU9OOg0KPiA+ ID4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1NUT1BfQUJPUlRfQ01EOw0KPiA+ID4gKyAgICAgIGJy ZWFrOw0KPiA+ID4gKyAgICBjYXNlIFNEX1NFTkRfU0NSOg0KPiA+ID4gKyAgICAgIFRyYi0+VXNl QkUgPSBUUlVFOw0KPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAg IGlmIChQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGgpIHsNCj4gPiA+ICsgICAgICBDbWQgfD0gQklU X0NNRF9XQUlUX1BSVkRBVEFfQ09NUExFVEUgfA0KPiA+IEJJVF9DTURfREFUQV9FWFBFQ1RFRCB8 DQo+ID4gPiArICAgICAgICAgICAgIEJJVF9DTURfUkVBRDsNCj4gPiA+ICsgICAgfSBlbHNlIGlm IChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gPiArICAgICAgQ21kIHw9IEJJVF9D TURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFIHwNCj4gPiBCSVRfQ01EX0RBVEFfRVhQRUNURUQgfA0K PiA+ID4gKyAgICAgICAgICAgICBCSVRfQ01EX1dSSVRFOw0KPiA+ID4gKyAgICB9DQo+ID4gPiAr ICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCB8DQo+ID4gQklUX0NNRF9DSEVDS19S RVNQT05TRV9DUkMgfA0KPiA+ID4gKyAgICAgICAgICAgQklUX0NNRF9TRU5EX0FVVE9fU1RPUDsN Cj4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiArICAgIHN3aXRjaCAoUGFja2V0LT5TZE1tY0NtZEJs ay0+Q29tbWFuZEluZGV4KSB7DQo+ID4gPiArICAgIGNhc2UgU0RfR09fSURMRV9TVEFURToNCj4g PiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9TRU5EX0lOSVQ7DQo+ID4gPiArICAgICAgYnJlYWs7 DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0NCj4gPiA+ICsgIHN3aXRjaCAoUGFja2V0LT5TZE1t Y0NtZEJsay0+UmVzcG9uc2VUeXBlKSB7DQo+ID4gPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBl UjI6DQo+ID4gPiArICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCB8DQo+ID4gQklU X0NNRF9DSEVDS19SRVNQT05TRV9DUkMgfA0KPiA+ID4gKyAgICAgICAgICAgQklUX0NNRF9MT05H X1JFU1BPTlNFOw0KPiA+ID4gKyAgICBicmVhazsNCj4gPiA+ICsgIGNhc2UgU2RNbWNSZXNwb25z ZVR5cGVSMzoNCj4gPiA+ICsgICAgQ21kIHw9IEJJVF9DTURfUkVTUE9OU0VfRVhQRUNUOw0KPiA+ ID4gKyAgICBicmVhazsNCj4gPiA+ICsgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMWI6DQo+ID4g PiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjQ6DQo+ID4gPiArICBjYXNlIFNkTW1jUmVzcG9u c2VUeXBlUjY6DQo+ID4gPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjc6DQo+ID4gPiArICAg IENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCB8DQo+ID4gQklUX0NNRF9DSEVDS19SRVNQ T05TRV9DUkM7DQo+ID4gPiArICAgIGJyZWFrOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgQ21kIHw9 IEJJVF9DTURfVVNFX0hPTERfUkVHIHwgQklUX0NNRF9TVEFSVDsNCj4gPiA+ICsNCj4gPiA+ICsg IGlmIChUcmItPlVzZUZpZm8gPT0gVFJVRSkgew0KPiA+ID4gKyAgICBCeXRDbnQgPSBUcmItPlJl YWQgPyBQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGggOiBQYWNrZXQtDQo+ID4gPk91dFRyYW5zZmVy TGVuZ3RoOw0KPiA+ID4gKyAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CWVRDTlQs IEJ5dENudCk7DQo+ID4gPiArICAgIGlmIChUcmItPlJlYWQpIHsNCj4gPiA+ICsgICAgICBpZiAo UGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoID4gRFdfTU1DX0JMT0NLX1NJWkUpIHsNCj4gPiA+ICsg ICAgICAgIEJsa1NpemUgPSBEV19NTUNfQkxPQ0tfU0laRTsNCj4gPiA+ICsgICAgICB9IGVsc2Ug ew0KPiA+ID4gKyAgICAgICAgQmxrU2l6ZSA9IFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aDsNCj4g PiA+ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgZWxzZSB7DQo+ID4gPiArICAg ICAgaWYgKFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGggPiBEV19NTUNfQkxPQ0tfU0laRSkgew0K PiA+ID4gKyAgICAgICAgQmxrU2l6ZSA9IERXX01NQ19CTE9DS19TSVpFOw0KPiA+ID4gKyAgICAg IH0gZWxzZSB7DQo+ID4gPiArICAgICAgICBCbGtTaXplID0gUGFja2V0LT5PdXRUcmFuc2Zlckxl bmd0aDsNCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAg TW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQkxLU0laLCBCbGtTaXplKTsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIEFyZ3VtZW50ID0gUGFja2V0LT5TZE1tY0NtZEJsay0+Q29t bWFuZEFyZ3VtZW50Ow0KPiA+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ01E QVJHLCBBcmd1bWVudCk7DQo+ID4gPiArICBBcm1EYXRhU3luY2hyb25pemF0aW9uQmFycmllciAo KTsNCj4gPiA+ICsgIEFybUluc3RydWN0aW9uU3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4g PiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NNRCwgQ21kKTsNCj4gPiA+ICsg IEFybURhdGFTeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKyAgQXJtSW5zdHJ1Y3Rp b25TeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ID4gKw0KPiA+ID4gKyAgRXJyTWFzayA9 IERXX01NQ19JTlRfRUJFIHwgRFdfTU1DX0lOVF9ITEUgfA0KPiA+IERXX01NQ19JTlRfUlRPIHwN Cj4gPiA+ICsgICAgICAgICAgICBEV19NTUNfSU5UX1JDUkMgfCBEV19NTUNfSU5UX1JFOw0KPiA+ ID4gKyAgRXJyTWFzayB8PSBEV19NTUNfSU5UX0RSVCB8IERXX01NQ19JTlRfU0JFOw0KPiA+ID4g KyAgaWYgKFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCB8fCBQYWNrZXQtPk91dFRyYW5zZmVyTGVu Z3RoKSB7DQo+ID4gPiArICAgIEVyck1hc2sgfD0gRFdfTU1DX0lOVF9EQ1JDOw0KPiA+ID4gKyAg fQ0KPiA+ID4gKyAgaWYgKFRyYi0+VXNlRmlmbyA9PSBUUlVFKSB7DQo+ID4gPiArICAgIFN0YXR1 cyA9IFRyYW5zZmVyRmlmbyAoVHJiKTsNCj4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ID4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsg IH0gZWxzZSB7DQo+ID4gPiArICAgIFRpbWVvdXQgPSAxMDAwMDsNCj4gPiA+ICsgICAgZG8gew0K PiA+ID4gKyAgICAgIGlmICgtLVRpbWVvdXQgPT0gMCkgew0KPiA+ID4gKyAgICAgICAgYnJlYWs7 DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICAgIEludFN0YXR1cyA9IE1taW9SZWFkMzIgKERl dkJhc2UgKyBEV19NTUNfUklOVFNUUyk7DQo+ID4gPiArICAgICAgaWYgKEludFN0YXR1cyAmIEVy ck1hc2spIHsNCj4gPiA+ICsgICAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ID4g KyAgICAgIH0NCj4gPiA+ICsgICAgICBpZiAoVHJiLT5EYXRhTGVuICYmICgoSW50U3RhdHVzICYg RFdfTU1DX0lOVF9EVE8pID09IDApKSB7DQo+ID4gPiArICAgICAgICAvLw0KPiA+ID4gKyAgICAg ICAgLy8gVHJhbnNmZXIgbm90IERvbmUNCj4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiArICAgICAg ICBNaWNyb1NlY29uZERlbGF5ICgxMCk7DQo+ID4gPiArICAgICAgICBjb250aW51ZTsNCj4gPiA+ ICsgICAgICB9DQo+ID4gPiArICAgICAgTWljcm9TZWNvbmREZWxheSAoMTApOw0KPiA+ID4gKyAg ICB9IHdoaWxlICghKEludFN0YXR1cyAmIERXX01NQ19JTlRfQ01EX0RPTkUpKTsNCj4gPiA+ICsg ICAgaWYgKFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCkgew0KPiA+ID4gKyAgICAgIGRvIHsNCj4g PiA+ICsgICAgICAgIElkc3RzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19JRFNUUyk7 DQo+ID4gPiArICAgICAgfSB3aGlsZSAoKElkc3RzICYgRFdfTU1DX0lEU1RTX1JJKSA9PSAwKTsN Cj4gPiA+ICsgICAgICBTdGF0dXMgPSBEd01tY0hjU3RvcERtYSAoUHJpdmF0ZSwgVHJiKTsNCj4g PiA+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgICByZXR1 cm4gU3RhdHVzOw0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICsgICAgfSBlbHNlIGlmIChQYWNrZXQt Pk91dFRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gPiArICAgICAgZG8gew0KPiA+ID4gKyAgICAgICAg SWRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0lEU1RTKTsNCj4gPiA+ICsgICAg ICB9IHdoaWxlICgoSWRzdHMgJiBEV19NTUNfSURTVFNfVEkpID09IDApOw0KPiA+ID4gKyAgICAg IFN0YXR1cyA9IER3TW1jSGNTdG9wRG1hIChQcml2YXRlLCBUcmIpOw0KPiA+ID4gKyAgICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICB9IC8qIFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCAq Lw0KPiA+ID4gKyAgfSAvKiBVc2VGaWZvICovDQo+ID4gPiArICBzd2l0Y2ggKFBhY2tldC0+U2RN bWNDbWRCbGstPlJlc3BvbnNlVHlwZSkgew0KPiA+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VU eXBlUjE6DQo+ID4gPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMWI6DQo+ID4gPiArICAg IGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMzoNCj4gPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNl VHlwZVI0Og0KPiA+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjU6DQo+ID4gPiArICAg IGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSNjoNCj4gPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNl VHlwZVI3Og0KPiA+ID4gKyAgICAgIFBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwID0gTW1p b1JlYWQzMiAoRGV2QmFzZSArDQo+ID4gRFdfTU1DX1JFU1AwKTsNCj4gPiA+ICsgICAgICBicmVh azsNCj4gPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIyOg0KPiA+ID4gKyAgICAgIFBh Y2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+ID4g RFdfTU1DX1JFU1AwKTsNCj4gPiA+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNw MSA9IE1taW9SZWFkMzIgKERldkJhc2UgKw0KPiA+IERXX01NQ19SRVNQMSk7DQo+ID4gPiArICAg ICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDIgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsN Cj4gPiBEV19NTUNfUkVTUDIpOw0KPiA+ID4gKyAgICAgIFBhY2tldC0+U2RNbWNTdGF0dXNCbGst PlJlc3AzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+ID4gRFdfTU1DX1JFU1AzKTsNCj4gPiA+ ICsgICAgICBicmVhazsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiAr ICAvLyBUaGUgd29ya2Fyb3VuZCBvbiBTRF9TRU5EX0NTRCBpcyB1c2VkIHRvIGJlIGNvbXBhdGli bGUgd2l0aA0KPiA+IFNESEMuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgaWYgKFBhY2tldC0+U2RN bWNDbWRCbGstPkNvbW1hbmRJbmRleCA9PSBTRF9TRU5EX0NTRCkgew0KPiA+ID4gKyAgICB7DQo+ ID4gPiArICAgICAgVUlOVDMyICAgQnVmWzRdOw0KPiA+ID4gKyAgICAgIFplcm9NZW0gKEJ1Ziwg c2l6ZW9mIChCdWYpKTsNCj4gPiA+ICsgICAgICBDb3B5TWVtICgNCj4gPiA+ICsgICAgICAgIChV SU5UOCAqKUJ1ZiwNCj4gPiA+ICsgICAgICAgIChVSU5UOCAqKSZQYWNrZXQtPlNkTW1jU3RhdHVz QmxrLT5SZXNwMCArIDEsDQo+ID4gPiArICAgICAgICBzaXplb2YgKEJ1ZikgLSAxDQo+ID4gPiAr ICAgICAgICApOw0KPiA+ID4gKyAgICAgIENvcHlNZW0gKA0KPiA+ID4gKyAgICAgICAgKFVJTlQ4 ICopJlBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwLA0KPiA+ID4gKyAgICAgICAgKFVJTlQ4 ICopQnVmLA0KPiA+ID4gKyAgICAgICAgc2l6ZW9mIChCdWYpIC0gMQ0KPiA+ID4gKyAgICAgICAg KTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEV4ZWN1 dGUgdGhlIHNwZWNpZmllZCBUUkIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFByaXZh dGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiA+IGlu c3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBUaGUgcG9pbnRlciB0 byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBzZW50IHRvIGhvc3QgY29udHJvbGxlciBzdWNj ZXNzZnVsbHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNvbWUgZXJyb3Mg aGFwcGVuIHdoZW4gc2VuZGluZyB0aGlzIHJlcXVlc3QgdG8NCj4gPiB0aGUNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBjb250cm9sbGVyLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEd01tY0V4ZWNUcmIgKA0KPiA+ID4gKyAg SU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gPiArICBJ TiBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gPiArICApDQo+ID4g PiArew0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz ID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTbG90Ow0KPiA+ID4gKw0KPiA+ID4gKyAgU2xvdCA9IFRyYi0+U2xvdDsNCj4gPiA+ICsg IGlmIChQcml2YXRlLT5TbG90W1Nsb3RdLkNhcmRUeXBlID09IEVtbWNDYXJkVHlwZSkgew0KPiA+ ID4gKyAgICBTdGF0dXMgPSBEd0VtbWNFeGVjVHJiIChQcml2YXRlLCBUcmIpOw0KPiA+ID4gKyAg fSBlbHNlIGlmIChQcml2YXRlLT5TbG90W1Nsb3RdLkNhcmRUeXBlID09IFNkQ2FyZFR5cGUpIHsN Cj4gPiA+ICsgICAgU3RhdHVzID0gRHdTZEV4ZWNUcmIgKFByaXZhdGUsIFRyYik7DQo+ID4gPiAr ICB9IGVsc2Ugew0KPiA+ID4gKyAgICBBU1NFUlQgKDApOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAg cmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBD aGVjayB0aGUgVFJCIGV4ZWN1dGlvbiByZXN1bHQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFU QQ0KPiA+IGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBUaGUg cG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiA+ICsNCj4gPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBleGVjdXRlZCBzdWNjZXNzZnVs bHkuDQo+ID4gPiArICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgIFRoZSBUUkIgaXMgbm90IGNv bXBsZXRlZCBmb3IgZXhlY3V0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAg ICBTb21lIGVycm9zIGhhcHBlbiB3aGVuIGV4ZWN1dGluZyB0aGlzIHJlcXVlc3QuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0R3TW1jQ2hlY2tUcmJSZXN1 bHQgKA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZh dGUsDQo+ID4gPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFO RF9QQUNLRVQgKlBhY2tldDsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElkc3RzOw0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGV2QmFzZTsNCj4gPiA+ICsNCj4gPiA+ICsgIERldkJhc2UgPSBQcml2YXRlLT5EZXZCYXNl Ow0KPiA+ID4gKyAgUGFja2V0ICA9IFRyYi0+UGFja2V0Ow0KPiA+ID4gKyAgaWYgKFRyYi0+VXNl RmlmbyA9PSBUUlVFKSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICsg IH0NCj4gPiA+ICsgIGlmIChQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGgpIHsNCj4gPiA+ICsgICAg ZG8gew0KPiA+ID4gKyAgICAgIElkc3RzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19J RFNUUyk7DQo+ID4gPiArICAgIH0gd2hpbGUgKChJZHN0cyAmIEJJVDEpID09IDApOw0KPiA+ID4g KyAgfSBlbHNlIGlmIChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gPiArICAgIGRv IHsNCj4gPiA+ICsgICAgICBJZHN0cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfSURT VFMpOw0KPiA+ID4gKyAgICB9IHdoaWxlICgoSWRzdHMgJiBCSVQwKSA9PSAwKTsNCj4gPiA+ICsg IH0gZWxzZSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICsgIH0NCj4g PiA+ICsgIElkc3RzID0gfjA7DQo+ID4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01N Q19JRFNUUywgSWRzdHMpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdhaXQgZm9yIHRoZSBUUkIg ZXhlY3V0aW9uIHJlc3VsdC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBDQo+ID4gaW5zdGFu Y2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRo ZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsg IEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4gd2hlbiBleGVjdXRp bmcgdGhpcyByZXF1ZXN0Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMN Cj4gPiA+ICtEd01tY1dhaXRUcmJSZXN1bHQgKA0KPiA+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZB VEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gPiArICBJTiBEV19NTUNfSENfVFJCICAg ICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKyAgRUZJX1NE X01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4gPiA+ICsgIFVJTlQ2NCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gPiArICBCT09MRUFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZpbml0ZVdhaXQ7DQo+ID4gPiArDQo+ID4gPiAr ICBQYWNrZXQgPSBUcmItPlBhY2tldDsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBXYWl0IENv bW1hbmQgQ29tcGxldGUgSW50ZXJydXB0IFN0YXR1cyBiaXQgaW4gTm9ybWFsIEludGVycnVwdA0K PiA+IFN0YXR1cw0KPiA+ID4gKyAgLy8gUmVnaXN0ZXINCj4gPiA+ICsgIC8vDQo+ID4gPiArICBU aW1lb3V0ID0gUGFja2V0LT5UaW1lb3V0Ow0KPiA+ID4gKyAgaWYgKFRpbWVvdXQgPT0gMCkgew0K PiA+ID4gKyAgICBJbmZpbml0ZVdhaXQgPSBUUlVFOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ ICsgICAgSW5maW5pdGVXYWl0ID0gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiAr ICB3aGlsZSAoSW5maW5pdGVXYWl0IHx8IChUaW1lb3V0ID4gMCkpIHsNCj4gPiA+ICsgICAgLy8N Cj4gPiA+ICsgICAgLy8gQ2hlY2sgVHJiIGV4ZWN1dGlvbiByZXN1bHQgYnkgcmVhZGluZyBOb3Jt YWwgSW50ZXJydXB0IFN0YXR1cw0KPiA+IHJlZ2lzdGVyLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4g KyAgICBTdGF0dXMgPSBEd01tY0NoZWNrVHJiUmVzdWx0IChQcml2YXRlLCBUcmIpOw0KPiA+ID4g KyAgICBpZiAoU3RhdHVzICE9IEVGSV9OT1RfUkVBRFkpIHsNCj4gPiA+ICsgICAgICByZXR1cm4g U3RhdHVzOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIC8vIFN0YWxs IGZvciAxIG1pY3Jvc2Vjb25kLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICBnQlMtPlN0YWxs ICgxKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgVGltZW91dC0tOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9USU1FT1VUOw0KPiA+ID4gK30NCj4gPiA+IGRpZmYgLS1n aXQgYS9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRW1tY0RldmljZS5jDQo+ID4gYi9F bWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRW1tY0RldmljZS5jDQo+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5iN2E4Njg4YzRkMmUNCj4g PiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNI Y0R4ZS9FbW1jRGV2aWNlLmMNCj4gPiA+IEBAIC0wLDAgKzEsMTA0MiBAQA0KPiA+ID4gKy8qKiBA ZmlsZQ0KPiA+ID4gKyAgVGhpcyBmaWxlIHByb3ZpZGVzIHNvbWUgaGVscGVyIGZ1bmN0aW9ucyB3 aGljaCBhcmUgc3BlY2lmaWMgZm9yIEVNTUMNCj4gPiBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiAr ICBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFyby4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArDQo+ID4gPiArICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiA+IGF2 YWlsYWJsZQ0KPiA+ID4gKyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcw0KPiA+IHRoaXMNCj4gPiA+ICsgIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4g PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4g PiArDQo+ID4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiA+IEJBU0lTLA0KPiA+ID4gKyAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBP UiBJTVBMSUVELg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRl IDxJbmR1c3RyeVN0YW5kYXJkL0VtbWMuaD4NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8TGli cmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIu aD4NCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4N Cj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSAiRHdNbWNIY0R4ZS5oIg0KPiA+ID4gKw0KPiA+ID4g KyNkZWZpbmUgRU1NQ19HRVRfU1RBVEUoeCkgICAgICAgICAgICAgICAgICAgKCgoeCkgPj4gOSkg JiAweGYpDQo+ID4gPiArI2RlZmluZSBFTU1DX1NUQVRFX0lETEUgICAgICAgICAgICAgICAgICAg ICAwDQo+ID4gPiArI2RlZmluZSBFTU1DX1NUQVRFX1JFQURZICAgICAgICAgICAgICAgICAgICAx DQo+ID4gPiArI2RlZmluZSBFTU1DX1NUQVRFX0lERU5UICAgICAgICAgICAgICAgICAgICAyDQo+ ID4gPiArI2RlZmluZSBFTU1DX1NUQVRFX1NUQlkgICAgICAgICAgICAgICAgICAgICAzDQo+ID4g PiArI2RlZmluZSBFTU1DX1NUQVRFX1RSQU4gICAgICAgICAgICAgICAgICAgICA0DQo+ID4gPiAr I2RlZmluZSBFTU1DX1NUQVRFX0RBVEEgICAgICAgICAgICAgICAgICAgICA1DQo+ID4gPiArI2Rl ZmluZSBFTU1DX1NUQVRFX1JDViAgICAgICAgICAgICAgICAgICAgICA2DQo+ID4gPiArI2RlZmlu ZSBFTU1DX1NUQVRFX1BSRyAgICAgICAgICAgICAgICAgICAgICA3DQo+ID4gPiArI2RlZmluZSBF TU1DX1NUQVRFX0RJUyAgICAgICAgICAgICAgICAgICAgICA4DQo+ID4gPiArI2RlZmluZSBFTU1D X1NUQVRFX0JUU1QgICAgICAgICAgICAgICAgICAgICA5DQo+ID4gPiArI2RlZmluZSBFTU1DX1NU QVRFX1NMUCAgICAgICAgICAgICAgICAgICAgICAxMA0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUg RU1NQ19DTUQxX0NBUEFDSVRZX0xFU1NfVEhBTl8yR0IgICAgMHgwMEZGODA4MCAvLw0KPiA+IENh cGFjaXR5IDw9IDJHQiwgYnl0ZSBhZGRyZXNzaW5nIHVzZWQNCj4gPiA+ICsjZGVmaW5lIEVNTUNf Q01EMV9DQVBBQ0lUWV9HUkVBVEVSX1RIQU5fMkdCIDB4NDBGRjgwODAgLy8NCj4gPiBDYXBhY2l0 eSA+IDJHQiwgNTEyLWJ5dGUgc2VjdG9yIGFkZHJlc3NpbmcgdXNlZA0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgU2VuZCBjb21tYW5kIEdPX0lETEVfU1RBVEUgKENNRDAgd2l0aCBhcmd1 bWVudCBvZiAweDAwMDAwMDAwKQ0KPiB0bw0KPiA+IHRoZSBkZXZpY2UgdG8NCj4gPiA+ICsgIG1h a2UgaXQgZ28gdG8gSWRsZSBTdGF0ZS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIEVNTUMg RWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNCBmb3IgZGV0YWlscy4NCj4g PiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRo ZQ0KPiA+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAg ICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gPiBjb21t YW5kDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgRU1NQyBkZXZpY2UgaXMgcmVzZXQg Y29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgZGV2aWNl IHJlc2V0IGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4g PiA+ICtFbW1jUmVzZXQgKA0KPiA+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICAgICAqUGFzc1RocnUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0Rf TU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJ X1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiAr DQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsN Cj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0Js aykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBh Y2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiAr DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX0dPX0lETEVfU1RBVEU7 DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmM7 DQo+ID4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSAwOw0KPiA+ID4gKyAgU2RNbWND bWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsgIGdCUy0+U3RhbGwg KDEwMDApOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQ YXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3Rh dHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNlbmQgY29tbWFu ZCBTRU5EX09QX0NPTkQgdG8gdGhlIEVNTUMgZGV2aWNlIHRvIGdldCB0aGUgZGF0YQ0KPiBvZg0K PiA+IHRoZSBPQ1INCj4gPiA+ICsgIHJlZ2lzdGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIg dG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRh aWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgIFBhc3NUaHJ1ICBBIHBvaW50 ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW4sIG91 dF0gQXJndW1lbnQgIE9uIGlucHV0LCB0aGUgYXJndW1lbnQgb2YNCj4gU0VORF9PUF9DT05EDQo+ ID4gaXMgdG8gc2VuZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUg ZGV2aWNlLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRo ZSBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgT0NSDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZ2lzdGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZh bCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtFbW1jR2V0T2NyICgNCj4gPiA+ICsgIElO ICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ID4gKyAg SU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAqQXJndW1lbnQNCj4gPiA+ICsg ICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAg ICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAg ICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NP TU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWND bWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0 YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBh Y2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0Nt ZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9 ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01N Q19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21t YW5kSW5kZXggPSBFTU1DX1NFTkRfT1BfQ09ORDsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1h bmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ID4gPiArICBTZE1tY0NtZEJsay5SZXNw b25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIzOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29t bWFuZEFyZ3VtZW50ID0gKkFyZ3VtZW50Ow0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gUGFz c1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gPiArICBp ZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBG b3IgZGV0YWlscywgcmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgU3BlYyAz LjAgVGFibGUgMi0NCj4gMTIuDQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgICpBcmd1bWVudCA9 IFNkTW1jU3RhdHVzQmxrLlJlc3AwOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0 dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBCcm9h ZGNhc3QgY29tbWFuZCBBTExfU0VORF9DSUQgdG8gdGhlIGJ1cyB0byBhc2sgYWxsIHRoZSBFTU1D DQo+ID4gZGV2aWNlcyB0byBzZW5kDQo+ID4gPiArICB0aGUgZGF0YSBvZiB0aGVpciBDSUQgcmVn aXN0ZXJzLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5k YXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01N Q19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zdGFuY2UuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4g PiArRUZJX1NUQVRVUw0KPiA+ID4gK0VtbWNHZXRBbGxDaWQgKA0KPiA+ID4gKyAgSU4gRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUNCj4gPiA+ICsgICkNCj4gPiA+ ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1j Q21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBT ZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFD S0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNp emVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywg c2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6 ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9 ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0 YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5F UklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXgg PSBFTU1DX0FMTF9TRU5EX0NJRDsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9 IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ID4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUg PSBTZE1tY1Jlc3BvbnNlVHlwZVIyOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3Vt ZW50ID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAo UGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0 YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5kIGNvbW1h bmQgU0VUX1JFTEFUSVZFX0FERFIgdG8gdGhlIEVNTUMgZGV2aWNlIHRvIGFzc2lnbiBhDQo+ID4g UmVsYXRpdmUgZGV2aWNlDQo+ID4gPiArICBBZGRyZXNzIChSQ0EpLg0KPiA+ID4gKw0KPiA+ID4g KyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40 IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAg ICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFy YW1baW5dIFJjYSAgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBh c3NpZ25lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAg ICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPiArRW1tY1NldFJjYSAoDQo+ID4gPiArICBJTiBFRklfU0RfTU1D X1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiA+ICsgIElOIFVJTlQxNiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmNhDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsN Cj4gPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0 dXNCbGs7DQo+ID4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBh Y2tldDsNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNk TW1jQ21kQmxrKSk7DQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAo U2RNbWNTdGF0dXNCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFj a2V0KSk7DQo+ID4gPiArDQo+ID4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWND bWRCbGs7DQo+ID4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7 DQo+ID4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1F T1VUOw0KPiA+ID4gKw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gRU1NQ19T RVRfUkVMQVRJVkVfQUREUjsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNk TW1jQ29tbWFuZFR5cGVBYzsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNk TW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQg PSAoVUlOVDMyKVJjYSA8PCAxNjsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1 LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4g KyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBTZW5kIGNvbW1hbmQgU0VORF9DU0QgdG8gdGhlIEVNTUMgZGV2aWNlIHRvIGdldCB0aGUgZGF0 YSBvZiB0aGUNCj4gPiBDU0QgcmVnaXN0ZXIuDQo+ID4gPiArDQo+ID4gPiArICBSZWZlciB0byBF TU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjEwLjQgZm9yIGRldGFp bHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRl ciB0byB0aGUNCj4gPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFJj YSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIG9mIHNlbGVjdGVkIGRldmlj ZS4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIENzZCAgICAgICAgICAgVGhlIGJ1ZmZlciB0byBzdG9y ZSB0aGUgY29udGVudCBvZiB0aGUgQ1NEDQo+ID4gcmVnaXN0ZXIuDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIGNhbGxlciBzaG91bGQgaWdub3JlIHRoZSBsb3dl c3QgYnl0ZSBvZg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGJ1ZmZl ciBhcyB0aGUgY29udGVudCBvZiB0aGlzIGJ5dGUgaXMNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWVhbmluZ2xlc3MgZXZlbiBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9u IGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtFbW1jR2V0Q3NkICgNCj4gPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ID4gKyAgSU4gICAgIFVJTlQxNiAgICAgICAg ICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gPiArICAgICBPVVQgRU1NQ19DU0QgICAgICAgICAg ICAgICAgICAgICAgICpDc2QNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0Rf TU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJ X1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiAr DQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsN Cj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0Js aykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBh Y2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiAr DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NFTkRfQ1NEOw0KPiA+ ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiA+ ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMjsNCj4g PiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0K PiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwg MCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBDb3B5IDEyOGJpdCBkYXRhIGZvciBDU0Qgc3Ry dWN0dXJlLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICBDb3B5TWVtICgoVk9JRCAqKUNzZCAr IDEsICZTZE1tY1N0YXR1c0Jsay5SZXNwMCwgc2l6ZW9mDQo+ID4gKEVNTUNfQ1NEKSAtIDEpOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5kIGNvbW1hbmQgU0VMRUNUX0RFU0VMRUNU X0NBUkQgdG8gdGhlIEVNTUMgZGV2aWNlIHRvDQo+ID4gc2VsZWN0L2Rlc2VsZWN0IGl0Lg0KPiA+ ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4x IFNlY3Rpb24gNi4xMC40IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19QQVNTX1RI UlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uu DQo+ID4gPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2Ug YWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gPiAr ICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VtbWNTZWxlY3QgKA0KPiA+ ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ ID4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJjYQ0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAg ICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAg ICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVf Q09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1t Y0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlNkTW1j U3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gPiArICBaZXJvTWVtICgm UGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ID4gKw0KPiA+ID4gKyAgUGFja2V0LlNkTW1j Q21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxr ID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdf TU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiA+ICsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRJbmRleCA9IEVNTUNfU0VMRUNUX0RFU0VMRUNUX0NBUkQ7DQo+ID4gPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gPiArICBTZE1tY0Nt ZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ID4gKyAgU2RNbWND bWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ID4gPiArDQo+ID4g PiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBO VUxMKTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2VuZCBjb21tYW5kIFNFTkRfRVhUX0NTRCB0byB0aGUg RU1NQyBkZXZpY2UgdG8gZ2V0IHRoZSBkYXRhIG9mDQo+ID4gdGhlIEVYVF9DU0QNCj4gPiA+ICsg IHJlZ2lzdGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0 YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi4xMC40IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJ X1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBFeHRDc2QgICAgICAgIFRoZSBi dWZmZXIgdG8gc3RvcmUgdGhlIGNvbnRlbnQgb2YgdGhlDQo+IEVYVF9DU0QNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VtbWNHZXRFeHRD c2QgKA0KPiA+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFz c1RocnUsDQo+ID4gPiArICAgICBPVVQgRU1NQ19FWFRfQ1NEICAgICAgICAgICAgICAgICAgICpF eHRDc2QNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRf QkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFU VVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9N TUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRV UyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBa ZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFpl cm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4g KyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsg IFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5T ZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0 ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBT ZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NFTkRfRVhUX0NTRDsNCj4gPiA+ICsgIFNk TW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBZHRjOw0KPiA+ID4gKyAg U2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gPiA+ICsg IFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IDB4MDAwMDAwMDA7DQo+ID4gPiArDQo+ID4g PiArICBQYWNrZXQuSW5EYXRhQnVmZmVyICAgICA9IEV4dENzZDsNCj4gPiA+ICsgIFBhY2tldC5J blRyYW5zZmVyTGVuZ3RoID0gc2l6ZW9mIChFTU1DX0VYVF9DU0QpOw0KPiA+ID4gKw0KPiA+ID4g KyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVM TCk7DQo+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFNlbmQgY29tbWFuZCBTV0lUQ0ggdG8gdGhlIEVNTUMgZGV2aWNlIHRvIHN3 aXRjaCB0aGUgbW9kZSBvZg0KPiA+IG9wZXJhdGlvbiBvZiB0aGUNCj4gPiA+ICsgIHNlbGVjdGVk IERldmljZSBvciBtb2RpZmllcyB0aGUgRVhUX0NTRCByZWdpc3RlcnMuDQo+ID4gPiArDQo+ID4g PiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2 LjEwLjQgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBQYXNzVGhy dSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsg IEBwYXJhbVtpbl0gIEFjY2VzcyAgICAgICAgVGhlIGFjY2VzcyBtb2RlIG9mIFNXVElDSCBjb21t YW5kLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSW5kZXggICAgICAgICBUaGUgb2Zmc2V0IG9mIHRo ZSBmaWVsZCB0byBiZSBhY2Nlc3MuDQo+ID4gPiArICBAcGFyYW1baW5dICBWYWx1ZSAgICAgICAg IFRoZSB2YWx1ZSB0byBiZSBzZXQgdG8gdGhlIHNwZWNpZmllZCBmaWVsZCBvZg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFWFRfQ1NEIHJlZ2lzdGVyLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgQ21kU2V0ICAgICAgICBUaGUgdmFsdWUgb2YgQ21kU2V0IGZpZWxkIG9mIEVYVF9D U0QgcmVnaXN0ZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg IFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VtbWNTd2l0Y2ggKA0KPiA+ID4gKyAgSU4gRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gPiArICBJTiBVSU5U OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VzcywNCj4gPiA+ICsgIElOIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gPiArICBJTiBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlLA0KPiA+ID4gKyAgSU4gVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDbWRTZXQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxr Ow0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0 YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAg UGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBT dGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAo U2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9m IChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQ YWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1t Y0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0Js azsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJ TUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1D X1NXSVRDSDsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFu ZFR5cGVBYzsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9u c2VUeXBlUjFiOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKEFjY2Vz cyA8PCAyNCkgfCAoSW5kZXggPDwgMTYpIHwNCj4gXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFZhbHVlIDw8IDgpIHwgQ21kU2V0Ow0KPiA+ID4gKw0KPiA+ID4gKyAg U3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7 DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICsvKioNCj4gPiA+ICsgIFNlbmQgY29tbWFuZCBTRU5EX1NUQVRVUyB0byB0aGUgYWRkcmVz c2VkIEVNTUMgZGV2aWNlIHRvIGdldA0KPiBpdHMNCj4gPiBzdGF0dXMNCj4gPiA+ICsgIHJlZ2lz dGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJk IFNwZWMgNS4xIFNlY3Rpb24gNi4xMC40IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01N Q19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2 ZSBkZXZpY2UgYWRkcmVzcyBvZiBhZGRyZXNzZWQgZGV2aWNlLg0KPiA+ID4gKyAgQHBhcmFtW291 dF0gRGV2U3RhdHVzICAgICBUaGUgcmV0dXJuZWQgZGV2aWNlIHN0YXR1cy4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNv cnJlY3RseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlv biBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiAr RW1tY1NlbmRTdGF0dXMgKA0KPiA+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BS T1RPQ09MICAqUGFzc1RocnUsDQo+ID4gPiArICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAgICAg ICAgICAgICAgIFJjYSwNCj4gPiA+ICsgICAgIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICAgICAgKkRldlN0YXR1cw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TRF9N TUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gPiArICBFRklf U0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ID4g KyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gPiAr ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsN Cj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0K PiA+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxr KSk7DQo+ID4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ID4g Kw0KPiA+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ID4g KyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ID4gKyAgUGFj a2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiA+ICsN Cj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IEVNTUNfU0VORF9TVEFUVVM7DQo+ ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ ID4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0K PiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFVJTlQzMilSY2EgPDwgMTY7 DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1 LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiA+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gPiArICAgICpEZXZTdGF0dXMgPSBTZE1tY1N0YXR1c0Jsay5SZXNwMDsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgU2VuZCBjb21tYW5kIFNFTkRfVFVOSU5HX0JMT0NLIHRvIHRo ZSBFTU1DIGRldmljZSBmb3IgSFMyMDANCj4gPiBvcHRpbWFsIHNhbXBsaW5nDQo+ID4gPiArICBw b2ludCBkZXRlY3Rpb24uDQo+ID4gPiArDQo+ID4gPiArICBJdCBtYXkgYmUgc2VudCB1cCB0byA0 MCB0aW1lcyB1bnRpbCB0aGUgaG9zdCBmaW5pc2hlcyB0aGUgdHVuaW5nDQo+ID4gcHJvY2VkdXJl Lg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNw ZWMgNS4xIFNlY3Rpb24gNi42LjggZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFy YW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0 YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB0 byB3b3JrLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUg b3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K0VGSV9TVEFUVVMNCj4gPiA+ICtFbW1jU2VuZFR1bmluZ0JsayAoDQo+ID4gPiArICBJTiBFRklf U0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiA+ICsgIElOIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiA+ICsgICkNCj4g PiA+ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNk TW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAg ICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRf UEFDS0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTdGF0dXM7DQo+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFR1bmluZ0Jsb2NrWzEyOF07DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgmU2RN bWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1t Y1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAo JlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1t Y0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0Js ayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERX X01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5D b21tYW5kSW5kZXggPSBFTU1DX1NFTkRfVFVOSU5HX0JMT0NLOw0KPiA+ID4gKyAgU2RNbWNDbWRC bGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUFkdGM7DQo+ID4gPiArICBTZE1tY0Nt ZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ID4gKyAgU2RNbWND bWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5JbkRh dGFCdWZmZXIgPSBUdW5pbmdCbG9jazsNCj4gPiA+ICsgIGlmIChCdXNXaWR0aCA9PSA4KSB7DQo+ ID4gPiArICAgIFBhY2tldC5JblRyYW5zZmVyTGVuZ3RoID0gc2l6ZW9mIChUdW5pbmdCbG9jayk7 DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBQYWNrZXQuSW5UcmFuc2Zlckxlbmd0aCA9 IDY0Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBh c3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gPiArDQo+ID4gPiArICBy ZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFR1 bm5pbmcgdGhlIGNsb2NrIHRvIGdldCBIUzIwMCBvcHRpbWFsIHNhbXBsaW5nIHBvaW50Lg0KPiA+ ID4gKw0KPiA+ID4gKyAgQ29tbWFuZCBTRU5EX1RVTklOR19CTE9DSyBtYXkgYmUgc2VudCB1cCB0 byA0MCB0aW1lcyB1bnRpbCB0aGUNCj4gPiBob3N0IGZpbmlzaGVzDQo+ID4gPiArICB0aGUgdHVu aW5nIHByb2NlZHVyZS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNh bCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNi44Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBh cmFtW2luXSBEZXZJbyAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9ERVZJQ0VfSU9fUFJP VE9DT0wNCj4gPiBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAg QSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFt W2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRoIHRvIHdvcmsuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3Jy ZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24g ZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0Vt bWNUdW5pbmdDbGtGb3JIczIwMCAoDQo+ID4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9Q Uk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgU3dpdGNoIHRoZSBidXMgd2lkdGggdG8gc3BlY2lmaWVkIHdpZHRoLg0KPiA+ID4gKw0KPiA+ ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24g Ni42LjkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUgRUZJX0RFVklDRV9JT19QUk9UT0NPTA0KPiA+IGluc3RhbmNlLg0KPiA+ID4g KyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFJjYSAgICAgICAgICAgIFRoZSByZWxh dGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g SXNEZHIgICAgICAgICAgSWYgVFJVRSwgdXNlIGR1YWwgZGF0YSByYXRlIGRhdGEgc2ltcGxpbmcN Cj4gbWV0aG9kLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2Ug dXNlIHNpbmdsZSBkYXRhIHJhdGUgZGF0YSBzaW1wbGluZyBtZXRob2QuDQo+ID4gPiArICBAcGFy YW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdG8gYmUgc2V0LCBpdCBjb3VsZCBi ZSA0IG9yIDguDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4g PiArRUZJX1NUQVRVUw0KPiA+ID4gK0VtbWNTd2l0Y2hCdXNXaWR0aCAoDQo+ID4gPiArICBJTiBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gPiArICBJTiBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiA+ICsgIElO IFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ID4gKyAgSU4gQk9P TEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc0RkciwNCj4gPiA+ICsgIElOIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiA+ICsgICkNCj4gPiA+ ICt7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsgIFVJTlQ4 ICAgICAgICAgICAgICAgQWNjZXNzOw0KPiA+ID4gKyAgVUlOVDggICAgICAgICAgICAgICBJbmRl eDsNCj4gPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgVmFsdWU7DQo+ID4gPiArICBVSU5UOCAg ICAgICAgICAgICAgIENtZFNldDsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgRGV2U3Rh dHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFdyaXRlIEJ5dGUsIHRoZSBW YWx1ZSBmaWVsZCBpcyB3cml0dGVuIGludG8gdGhlIGJ5dGUgcG9pbnRlZCBieSBJbmRleC4NCj4g PiA+ICsgIC8vDQo+ID4gPiArICBBY2Nlc3MgPSAweDAzOw0KPiA+ID4gKyAgSW5kZXggID0gT0ZG U0VUX09GIChFTU1DX0VYVF9DU0QsIEJ1c1dpZHRoKTsNCj4gPiA+ICsgIGlmIChCdXNXaWR0aCA9 PSAxKSB7DQo+ID4gPiArICAgIFZhbHVlID0gMDsNCj4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiAr ICAgIGlmIChCdXNXaWR0aCA9PSA0KSB7DQo+ID4gPiArICAgICAgVmFsdWUgPSAxOw0KPiA+ID4g KyAgICB9IGVsc2UgaWYgKEJ1c1dpZHRoID09IDgpIHsNCj4gPiA+ICsgICAgICBWYWx1ZSA9IDI7 DQo+ID4gPiArICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICBpZiAoSXNEZHIpIHsN Cj4gPiA+ICsgICAgICBWYWx1ZSArPSA0Ow0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9DQo+ID4g PiArDQo+ID4gPiArICBDbWRTZXQgPSAwOw0KPiA+ID4gKyAgU3RhdHVzID0gRW1tY1N3aXRjaCAo UGFzc1RocnUsIEFjY2VzcywgSW5kZXgsIFZhbHVlLCBDbWRTZXQpOw0KPiA+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERF QlVHX0VSUk9SLA0KPiA+ID4gKyAgICAgICJFbW1jU3dpdGNoQnVzV2lkdGg6IFN3aXRjaCB0byBi dXMgd2lkdGggJWQgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICBCdXNXaWR0aCwNCj4g PiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICApKTsNCj4gPiA+ICsgICAgcmV0dXJuIFN0 YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGRvIHsNCj4gPiA+ICsgICAgU3Rh dHVzID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NUaHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ID4g KyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgREVCVUcgKCgNCj4g PiA+ICsgICAgICAgIERFQlVHX0VSUk9SLA0KPiA+ID4gKyAgICAgICAgIkVtbWNTd2l0Y2hCdXNX aWR0aDogU2VuZCBzdGF0dXMgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICAgIFN0YXR1 cw0KPiA+ID4gKyAgICAgICAgKSk7DQo+ID4gPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ ICsgICAgfQ0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBDaGVjayB0aGUgc3dpdGNoIG9w ZXJhdGlvbiBpcyByZWFsbHkgc3VjY2Vzc2Z1bCBvciBub3QuDQo+ID4gPiArICAgIC8vDQo+ID4g PiArICB9IHdoaWxlICgoRGV2U3RhdHVzICYgMHhmKSA9PSBFTU1DX1NUQVRFX1BSRyk7DQo+ID4g PiArDQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjU2V0QnVzV2lkdGggKERldkJhc2UsIElzRGRy LCBCdXNXaWR0aCk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4g U3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFN3aXRjaCB0 aGUgY2xvY2sgZnJlcXVlbmN5IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuDQo+ID4gPiArDQo+ID4g PiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2 LjYuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRUZJX0RFVklDRV9JT19QUk9UT0NPTA0KPiA+IGluc3RhbmNlLg0KPiA+ID4gKyAg QHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01N Q19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFJjYSAgICAgICAgICAgIFRoZSByZWxhdGl2 ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gSHNU aW1pbmcgICAgICAgVGhlIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gSFNfVElNSU5HIGZpZWxkIG9m DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVF9DU0QgcmVnaXN0ZXIuDQo+ ID4gPiArICBAcGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5 IHRvIGJlIHNldCwgdGhlIHVuaXQgaXMNCj4gPiBNSHouDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VtbWNTd2l0Y2hD bG9ja0ZyZXEgKA0KPiA+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEZXZCYXNlLA0KPiA+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAg ICAqUGFzc1RocnUsDQo+ID4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJjYSwNCj4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SHNUaW1pbmcsDQo+ID4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENsb2NrRnJlcQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICBB Y2Nlc3M7DQo+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ID4g KyAgVUlOVDggICAgICAgICAgICAgICAgICAgICBWYWx1ZTsNCj4gPiA+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgQ21kU2V0Ow0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBEZXZTdGF0dXM7DQo+ID4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICpQcml2YXRl Ow0KPiA+ID4gKw0KPiA+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJ UyAoUGFzc1RocnUpOw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFdyaXRlIEJ5dGUsIHRoZSBW YWx1ZSBmaWVsZCBpcyB3cml0dGVuIGludG8gdGhlIGJ5dGUgcG9pbnRlZCBieSBJbmRleC4NCj4g PiA+ICsgIC8vDQo+ID4gPiArICBBY2Nlc3MgPSAweDAzOw0KPiA+ID4gKyAgSW5kZXggID0gT0ZG U0VUX09GIChFTU1DX0VYVF9DU0QsIEhzVGltaW5nKTsNCj4gPiA+ICsgIFZhbHVlICA9IEhzVGlt aW5nOw0KPiA+ID4gKyAgQ21kU2V0ID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IEVt bWNTd2l0Y2ggKFBhc3NUaHJ1LCBBY2Nlc3MsIEluZGV4LCBWYWx1ZSwgQ21kU2V0KTsNCj4gPiA+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiA+ICsgICAgICAiRW1tY1N3aXRjaENsb2NrRnJlcTog U3dpdGNoIHRvIGhzdGltaW5nICVkIGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gPiArICAgICAgSHNU aW1pbmcsDQo+ID4gPiArICAgICAgU3RhdHVzDQo+ID4gPiArICAgICAgKSk7DQo+ID4gPiArICAg IHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBF bW1jU2VuZFN0YXR1cyAoUGFzc1RocnUsIFJjYSwgJkRldlN0YXR1cyk7DQo+ID4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIERFQlVHICgoDQo+ID4gPiArICAgICAg REVCVUdfRVJST1IsDQo+ID4gPiArICAgICAgIkVtbWNTd2l0Y2hDbG9ja0ZyZXE6IFNlbmQgc3Rh dHVzIGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gPiArICAgICAgU3RhdHVzDQo+ID4gPiArICAgICAg KSk7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4gPiArICAvLw0K PiA+ID4gKyAgLy8gQ2hlY2sgdGhlIHN3aXRjaCBvcGVyYXRpb24gaXMgcmVhbGx5IHN1Y2Nlc3Nm dWwgb3Igbm90Lg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIGlmICgoRGV2U3RhdHVzICYgQklUNykg IT0gMCkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0K PiA+ID4gKyAgICAgICJFbW1jU3dpdGNoQ2xvY2tGcmVxOiBUaGUgc3dpdGNoIG9wZXJhdGlvbiBm YWlscyBhcyBEZXZTdGF0dXMNCj4gPiAweCUwOHhcbiIsDQo+ID4gPiArICAgICAgRGV2U3RhdHVz DQo+ID4gPiArICAgICAgKSk7DQo+ID4gPiArICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIENvbnZlcnQgdGhlIGNsb2NrIGZy ZXEgdW5pdCBmcm9tIE1IeiB0byBLSHouDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgU3RhdHVzID0g RHdNbWNIY0Nsb2NrU3VwcGx5IChEZXZCYXNlLCBDbG9ja0ZyZXEgKiAxMDAwLCBQcml2YXRlLQ0K PiA+ID5DYXBhYmlsaXR5WzBdKTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU3dpdGNoIHRvIHRoZSBIaWdo IFNwZWVkIHRpbWluZyBhY2NvcmRpbmcgdG8gcmVxdWVzdC4NCj4gPiA+ICsNCj4gPiA+ICsgIFJl ZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNi44Lg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBBIHBvaW50ZXIgdG8g dGhlIEVGSV9ERVZJQ0VfSU9fUFJPVE9DT0wNCj4gPiBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3Rh bmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2 aWNlIGFkZHJlc3MgdG8gYmUgYXNzaWduZWQuDQo+ID4gPiArICBAcGFyYW1baW5dIENsb2NrRnJl cSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5IHRvIGJlIHNldC4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gSXNEZHIgICAgICAgICAgSWYgVFJVRSwgdXNlIGR1YWwgZGF0YSByYXRlIGRhdGEgc2lt cGxpbmcNCj4gbWV0aG9kLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhl cndpc2UgdXNlIHNpbmdsZSBkYXRhIHJhdGUgZGF0YSBzaW1wbGluZyBtZXRob2QuDQo+ID4gPiAr ICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdG8gYmUgc2V0LCBpdCBj b3VsZCBiZSA0IG9yIDguDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90 aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiov DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VtbWNTd2l0Y2hUb0hpZ2hTcGVlZCAoDQo+ID4g PiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4g PiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4g PiA+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ID4g KyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9ja0ZyZXEsDQo+ID4g PiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ID4g KyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aA0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgU3RhdHVzOw0KPiA+ ID4gKyAgVUlOVDggICAgICAgICAgICAgICBIc1RpbWluZzsNCj4gPiA+ICsNCj4gPiA+ICsgIEhz VGltaW5nID0gMTsNCj4gPiA+ICsgIFN0YXR1cyA9IEVtbWNTd2l0Y2hDbG9ja0ZyZXEgKERldkJh c2UsIFBhc3NUaHJ1LCBSY2EsIEhzVGltaW5nLA0KPiA+IENsb2NrRnJlcSk7DQo+ID4gPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4g PiArICB9DQo+ID4gPiArICBTdGF0dXMgPSBFbW1jU3dpdGNoQnVzV2lkdGggKERldkJhc2UsIFBh c3NUaHJ1LCBSY2EsIElzRGRyLA0KPiA+IEJ1c1dpZHRoKTsNCj4gPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4g PiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBTd2l0Y2ggdG8gdGhlIEhTMjAwIHRpbWluZyBhY2NvcmRpbmcgdG8gcmVxdWVz dC4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBT cGVjIDUuMSBTZWN0aW9uIDYuNi44Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBEZXZJ byAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9ERVZJQ0VfSU9fUFJPVE9DT0wNCj4gPiBp bnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRv IHRoZQ0KPiA+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBSY2EgICAg ICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8gYmUgYXNzaWduZWQuDQo+ID4g PiArICBAcGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5IHRv IGJlIHNldC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1cyB3aWR0 aCB0byBiZSBzZXQsIGl0IGNvdWxkIGJlIDQgb3IgOC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4g PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRW1tY1N3aXRjaFRv SFMyMDAgKA0KPiA+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE ZXZCYXNlLA0KPiA+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAq UGFzc1RocnUsDQo+ID4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJjYSwNCj4gPiA+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xv Y2tGcmVxLA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC dXNXaWR0aA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTd2l0Y2ggdGhlIGhp Z2ggc3BlZWQgdGltaW5nIGFjY29yZGluZyB0byByZXF1ZXN0Lg0KPiA+ID4gKw0KPiA+ID4gKyAg UmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi42Ljgu DQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIEEgcG9pbnRlciB0 byB0aGUgRUZJX0RFVklDRV9JT19QUk9UT0NPTA0KPiA+IGluc3RhbmNlLg0KPiA+ID4gKyAgQHBh cmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z dGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dIFJjYSAgICAgICAgICAgIFRoZSByZWxhdGl2ZSBk ZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRW1tY1NldEJ1c01vZGUg KA0KPiA+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNl LA0KPiA+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1Ro cnUsDQo+ID4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJjYQ0K PiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gPiA+ICsgIEVNTUNfQ1NEICAgICAgICAgICAgICAgICAgICAgIENzZDsN Cj4gPiA+ICsgIEVNTUNfRVhUX0NTRCAgICAgICAgICAgICAgICAgIEV4dENzZDsNCj4gPiA+ICsg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIEhzVGltaW5nOw0KPiA+ID4gKyAgQk9PTEVB TiAgICAgICAgICAgICAgICAgICAgICAgSXNEZHI7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICBEZXZTdGF0dXM7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICAgICBDbG9ja0ZyZXE7DQo+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAg ICBCdXNXaWR0aDsNCj4gPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICpQcml2 YXRlOw0KPiA+ID4gKw0KPiA+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01f VEhJUyAoUGFzc1RocnUpOw0KPiA+ID4gKyAgQVNTRVJUIChQcml2YXRlLT5DYXBhYmlsaXR5WzBd LkJhc2VDbGtGcmVxICE9IDApOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gRW1tY0dldENz ZCAoUGFzc1RocnUsIFJjYSwgJkNzZCk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFbW1jU2V0QnVzTW9kZTogR2V0 Q3NkIGZhaWxzIHdpdGgNCj4gJXJcbiIsDQo+ID4gU3RhdHVzKSk7DQo+ID4gPiArICAgIHJldHVy biBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBFbW1jU2Vs ZWN0IChQYXNzVGhydSwgUmNhKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVtbWNTZXRCdXNNb2RlOiBTZWxlY3Qg ZmFpbHMgd2l0aCAlclxuIiwNCj4gPiBTdGF0dXMpKTsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGRvIHsNCj4gPiA+ICsgICAgU3RhdHVz ID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NUaHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ID4gKyAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgREVCVUcgKCgNCj4gPiA+ ICsgICAgICAgIERFQlVHX0VSUk9SLA0KPiA+ID4gKyAgICAgICAgIkVtbWNTZXRCdXNNb2RlOiBH ZXQgU3RhdHVzIGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gPiArICAgICAgICBTdGF0dXMNCj4gPiA+ ICsgICAgICAgICkpOw0KPiA+ID4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICAgIH0N Cj4gPiA+ICsgIH0gd2hpbGUgKEVNTUNfR0VUX1NUQVRFIChEZXZTdGF0dXMpICE9IEVNTUNfU1RB VEVfVFJBTik7DQo+ID4gPiArDQo+ID4gPiArICBCdXNXaWR0aCA9IDE7DQo+ID4gPiArICBTdGF0 dXMgPSBFbW1jU3dpdGNoQnVzV2lkdGggKERldkJhc2UsIFBhc3NUaHJ1LCBSY2EsIEZBTFNFLA0K PiA+IEJ1c1dpZHRoKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIEJ1c1dp ZHRoID0gUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5CdXNXaWR0aDsNCj4gPiA+ICsgIC8vDQo+ID4g PiArICAvLyBHZXQgRGVpdmNlX1R5cGUgZnJvbSBFWFRfQ1NEIHJlZ2lzdGVyLg0KPiA+ID4gKyAg Ly8NCj4gPiA+ICsgIFN0YXR1cyA9IEVtbWNHZXRFeHRDc2QgKFBhc3NUaHJ1LCAmRXh0Q3NkKTsN Cj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkVtbWNTZXRCdXNNb2RlOiBHZXRFeHRDc2QgZmFpbHMgd2l0aA0KPiA+ICVy XG4iLCBTdGF0dXMpKTsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4g PiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBDYWxjdWxhdGUgc3VwcG9ydGVkIGJ1cyBz cGVlZC9idXMgd2lkdGgvY2xvY2sgZnJlcXVlbmN5Lg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIEhz VGltaW5nICA9IDA7DQo+ID4gPiArICBJc0RkciAgICAgPSBGQUxTRTsNCj4gPiA+ICsgIENsb2Nr RnJlcSA9IDA7DQo+ID4gPiArICBpZiAoKChFeHRDc2QuRGV2aWNlVHlwZSAmIChCSVQ0IHwgQklU NSkpICE9IDApICYmDQo+ID4gPiArICAgICAgKFByaXZhdGUtPkNhcGFiaWxpdHlbMF0uU2RyMTA0 ICE9IDApKSB7DQo+ID4gPiArICAgIEhzVGltaW5nICA9IDI7DQo+ID4gPiArICAgIElzRGRyICAg ICA9IEZBTFNFOw0KPiA+ID4gKyAgICBDbG9ja0ZyZXEgPSAyMDA7DQo+ID4gPiArICB9IGVsc2Ug aWYgKCgoRXh0Q3NkLkRldmljZVR5cGUgJiAoQklUMiB8IEJJVDMpKSAhPSAwKSAmJg0KPiA+ID4g KyAgICAgICAgICAgICAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5EZHI1MCAhPSAwKSkgew0KPiA+ ID4gKyAgICBIc1RpbWluZyAgPSAxOw0KPiA+ID4gKyAgICBJc0RkciAgICAgPSBUUlVFOw0KPiA+ ID4gKyAgICBDbG9ja0ZyZXEgPSA1MjsNCj4gPiA+ICsgIH0gZWxzZSBpZiAoKChFeHRDc2QuRGV2 aWNlVHlwZSAmIEJJVDEpICE9IDApICYmDQo+ID4gPiArICAgICAgICAgICAgIChQcml2YXRlLT5D YXBhYmlsaXR5WzBdLkhpZ2hTcGVlZCAhPSAwKSkgew0KPiA+ID4gKyAgICBIc1RpbWluZyAgPSAx Ow0KPiA+ID4gKyAgICBJc0RkciAgICAgPSBGQUxTRTsNCj4gPiA+ICsgICAgQ2xvY2tGcmVxID0g NTI7DQo+ID4gPiArICB9IGVsc2UgaWYgKCgoRXh0Q3NkLkRldmljZVR5cGUgJiBCSVQwKSAhPSAw KSAmJg0KPiA+ID4gKyAgICAgICAgICAgICAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5IaWdoU3Bl ZWQgIT0gMCkpIHsNCj4gPiA+ICsgICAgSHNUaW1pbmcgID0gMTsNCj4gPiA+ICsgICAgSXNEZHIg ICAgID0gRkFMU0U7DQo+ID4gPiArICAgIENsb2NrRnJlcSA9IDI2Ow0KPiA+ID4gKyAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgaWYgKChDbG9ja0ZyZXEgPT0gMCkgfHwgKEhzVGltaW5nID09IDApKSB7 DQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIC8vIENvbnRpbnVlIHVzaW5nIGRlZmF1bHQgc2V0 dGluZy4NCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgREVCVUcgKCgNCj4gPiA+ICsgICAgREVCVUdfSU5G TywNCj4gPiA+ICsgICAgIkVtbWNTZXRCdXNNb2RlOiBIc1RpbWluZyAlZCBDbG9ja0ZyZXEgJWQg QnVzV2lkdGggJWQgRGRyDQo+ID4gJWFcbiIsDQo+ID4gPiArICAgIEhzVGltaW5nLA0KPiA+ID4g KyAgICBDbG9ja0ZyZXEsDQo+ID4gPiArICAgIEJ1c1dpZHRoLA0KPiA+ID4gKyAgICBJc0RkciA/ ICJUUlVFIiA6ICJGQUxTRSINCj4gPiA+ICsgICAgKSk7DQo+ID4gPiArDQo+ID4gPiArICBpZiAo SHNUaW1pbmcgPT0gMikgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBFeGVjdXRlIEhT MjAwIHRpbWluZyBzd2l0Y2ggcHJvY2VkdXJlDQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIFN0 YXR1cyA9IEVtbWNTd2l0Y2hUb0hTMjAwIChEZXZCYXNlLCBQYXNzVGhydSwgUmNhLCBDbG9ja0Zy ZXEsDQo+ID4gQnVzV2lkdGgpOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgLy8NCj4g PiA+ICsgICAgLy8gRXhlY3V0ZSBIaWdoIFNwZWVkIHRpbWluZyBzd2l0Y2ggcHJvY2VkdXJlDQo+ ID4gPiArICAgIC8vDQo+ID4gPiArICAgIFN0YXR1cyA9IEVtbWNTd2l0Y2hUb0hpZ2hTcGVlZCAo DQo+ID4gPiArICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsgICAgICAgICAgICAgICBQ YXNzVGhydSwNCj4gPiA+ICsgICAgICAgICAgICAgICBSY2EsDQo+ID4gPiArICAgICAgICAgICAg ICAgQ2xvY2tGcmVxLA0KPiA+ID4gKyAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ID4gKyAgICAg ICAgICAgICAgIEJ1c1dpZHRoDQo+ID4gPiArICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIERFQlVHICgoDQo+ID4gPiArICAgIERFQlVHX0lORk8sDQo+ID4g PiArICAgICJFbW1jU2V0QnVzTW9kZTogU3dpdGNoIHRvICVhICVyXG4iLA0KPiA+ID4gKyAgICAo SHNUaW1pbmcgPT0gMykgPyAiSFM0MDAiIDogKChIc1RpbWluZyA9PSAyKSA/ICJIUzIwMCIgOiAi SGlnaFNwZWVkIiksDQo+ID4gPiArICAgIFN0YXR1cw0KPiA+ID4gKyAgICApKTsNCj4gPiA+ICsN Cj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0K PiA+ID4gKyAgRXhlY3V0ZSBFTU1DIGRldmljZSBpZGVudGlmaWNhdGlvbiBwcm9jZWR1cmUuDQo+ ID4gPiArDQo+ID4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1 LjEgU2VjdGlvbiA2LjQgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d IFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0K PiA+IGluc3RhbmNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGVyZSBpcyBhIEVNTUMgY2FyZC4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgVGhlcmUgaXMgbm90IGEgRU1NQyBjYXJkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K0VGSV9TVEFUVVMNCj4gPiA+ICtFbW1jSWRlbnRpZmljYXRpb24gKA0KPiA+ID4gKyAgSU4gRFdf TU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAqUHJpdmF0ZQ0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gPiA+ICsg IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnU7DQo+ID4gPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgT2NyOw0KPiA+ID4gKyAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICAgICAgIFJjYTsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAgICBEZXZTdGF0dXM7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg VGltZW91dDsNCj4gPiA+ICsNCj4gPiA+ICsgIERldkJhc2UgICAgPSBQcml2YXRlLT5EZXZCYXNl Ow0KPiA+ID4gKyAgUGFzc1RocnUgPSAmUHJpdmF0ZS0+UGFzc1RocnU7DQo+ID4gPiArDQo+ID4g PiArICBTdGF0dXMgPSBFbW1jUmVzZXQgKFBhc3NUaHJ1KTsNCj4gPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICBERUJVR19J TkZPLA0KPiA+ID4gKyAgICAgICJFbW1jSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBDbWQwIGZh aWxzIHdpdGggJXJcbiIsDQo+ID4gPiArICAgICAgU3RhdHVzDQo+ID4gPiArICAgICAgKSk7DQo+ ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBU aW1lb3V0ID0gMTAwOw0KPiA+ID4gKyAgZG8gew0KPiA+ID4gKyAgICBPY3IgPSBFTU1DX0NNRDFf Q0FQQUNJVFlfR1JFQVRFUl9USEFOXzJHQjsNCj4gPiA+ICsgICAgU3RhdHVzID0gRW1tY0dldE9j ciAoUGFzc1RocnUsICZPY3IpOw0KPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gPiArICAgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICAgIERFQlVHX0lORk8sDQo+ID4g PiArICAgICAgICAiRW1tY0lkZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgQ21kMSBmYWlscyB3aXRo ICVyXG4iLA0KPiA+ID4gKyAgICAgICAgU3RhdHVzDQo+ID4gPiArICAgICAgICApKTsNCj4gPiA+ ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIGlmICgtLVRp bWVvdXQgPD0gMCkgew0KPiA+ID4gKyAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ ID4gKyAgICB9DQo+ID4gPiArICAgIE1pY3JvU2Vjb25kRGVsYXkgKDEwMCk7DQo+ID4gPiArICB9 IHdoaWxlICgoT2NyICYgQklUMzEpID09IDApOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0g RW1tY0dldEFsbENpZCAoUGFzc1RocnUpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERFQlVHX0lORk8sDQo+ID4g PiArICAgICAgIkVtbWNJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIENtZDIgZmFpbHMgd2l0aCAl clxuIiwNCj4gPiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICApKTsNCj4gPiA+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyB2YWxp ZCBSQ0Egc3RhcnRzIGZyb20gMS4NCj4gPiA+ICsgIC8vIEhlcmUgd2UgdGFrZXMgYSBzaW1wbGUg Zm9ybXVsYSB0byBjYWxjdWxhdGUgdGhlIFJDQS4NCj4gPiA+ICsgIC8vIERvbid0IHN1cHBvcnQg bXVsdGlwbGUgZGV2aWNlcyBvbiB0aGUgc2xvdCwgdGhhdCBpcw0KPiA+ID4gKyAgLy8gc2hhcmVk IGJ1cyBzbG90IGZlYXR1cmUuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgUmNhICAgID0gMTsNCj4g PiA+ICsgIFN0YXR1cyA9IEVtbWNTZXRSY2EgKFBhc3NUaHJ1LCBSY2EpOw0KPiA+ID4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAg IERFQlVHX0lORk8sDQo+ID4gPiArICAgICAgIkVtbWNJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5n IENtZDMgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAg ICApKTsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIC8v DQo+ID4gPiArICAvLyBFbnRlciBEYXRhIFRyYW5mZXIgTW9kZS4NCj4gPiA+ICsgIC8vDQo+ID4g PiArICBERUJVRyAoKA0KPiA+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ID4gKyAgICAiRW1tY0lk ZW50aWZpY2F0aW9uOiBGb3VuZCBhIEVNTUMgZGV2aWNlIGF0IFJDQSBbJWRdXG4iLA0KPiA+ID4g KyAgICBSY2ENCj4gPiA+ICsgICAgKSk7DQo+ID4gPiArICBQcml2YXRlLT5TbG90WzBdLkNhcmRU eXBlID0gRW1tY0NhcmRUeXBlOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gRW1tY1NldEJ1 c01vZGUgKERldkJhc2UsIFBhc3NUaHJ1LCBSY2EpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIEV4aXQgREFUQSBNb2RlLg0KPiA+ID4gKyAgLy8N Cj4gPiA+ICsgIGRvIHsNCj4gPiA+ICsgICAgU3RhdHVzID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NU aHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4gPiArICAgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICAgIERFQlVHX0lORk8sDQo+ ID4gPiArICAgICAgICAiRW1tY1N3aXRjaEJ1c1dpZHRoOiBTZW5kIHN0YXR1cyBmYWlscyB3aXRo ICVyXG4iLA0KPiA+ID4gKyAgICAgICAgU3RhdHVzDQo+ID4gPiArICAgICAgICApKTsNCj4gPiA+ ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9IHdoaWxlICgo RGV2U3RhdHVzICYgMHhmKSA9PSBFTU1DX1NUQVRFX0RBVEEpOw0KPiA+ID4gKw0KPiA+ID4gKyAg cmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cv RHJpdmVycy9Ed01tY0hjRHhlL1NkRGV2aWNlLmMNCj4gPiBiL0VtYmVkZGVkUGtnL0RyaXZlcnMv RHdNbWNIY0R4ZS9TZERldmljZS5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4g aW5kZXggMDAwMDAwMDAwMDAwLi42MzI0NjYzN2I2ZGQNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4g PiA+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9TZERldmljZS5jDQo+ID4g PiBAQCAtMCwwICsxLDExMDUgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIFRoaXMgZmls ZSBwcm92aWRlcyBzb21lIGhlbHBlciBmdW5jdGlvbnMgd2hpY2ggYXJlIHNwZWNpZmljIGZvciBT RCBjYXJkDQo+ID4gPiArICBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiArICBDb3B5cmlnaHQgKGMp IDIwMTUgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFyby4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gPiArDQo+ID4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiA+IGF2YWlsYWJsZQ0KPiA+ID4g KyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGlj aCBhY2NvbXBhbmllcw0KPiA+IHRoaXMNCj4gPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gPiArICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPiArDQo+ID4gPiArICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5k YXJkL1NkLmg+DQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxp Yi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gPiArDQo+ID4g PiArI2luY2x1ZGUgIkR3TW1jSGNEeGUuaCINCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFNlbmQgY29tbWFuZCBHT19JRExFX1NUQVRFIHRvIHRoZSBkZXZpY2UgdG8gbWFrZSBpdCBnbyB0 byBJZGxlDQo+IFN0YXRlLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwg TGF5ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiA+ ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0K PiA+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICBUaGUgU0QgZGV2aWNlIGlzIHJlc2V0IGNvcnJlY3RseS4NCj4gPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGRldmljZSByZXNldCBmYWlscy4NCj4gPiA+ICsN Cj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArU2RDYXJkUmVzZXQgKA0KPiA+ ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAg ICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sg ICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19U SFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgm U2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZT ZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01l bSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5T ZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1 c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9 IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJs ay5Db21tYW5kSW5kZXggPSBTRF9HT19JRExFX1NUQVRFOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUJjOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3Rh dHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ ID4gPiArICAvL1N0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNr ZXQsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5kIGNvbW1hbmQgU0VORF9JRl9DT05EIHRv IHRoZSBkZXZpY2UgdG8gaW5xdWlyeSB0aGUgU0QNCj4gTWVtb3J5DQo+ID4gQ2FyZA0KPiA+ID4g KyAgaW50ZXJmYWNlIGNvbmRpdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIFNEIFBo eXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRldGFpbHMu DQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0 byB0aGUNCj4gPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gU3VwcGx5 Vm9sdGFnZSAgVGhlIHN1cHBsaWVkIHZvbHRhZ2UgYnkgdGhlIGhvc3QuDQo+ID4gPiArICBAcGFy YW1baW5dIENoZWNrUGF0dGVybiAgIFRoZSBjaGVjayBwYXR0ZXJuIHRvIGJlIHNlbnQgdG8gdGhl IGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAg ICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPiArU2RDYXJkVm9sdGFnZUNoZWNrICgNCj4gPiA+ICsgIElOIEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ID4gKyAgSU4g VUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwbHlWb2x0YWdlLA0KPiA+ID4g KyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja1BhdHRlcm4NCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAg ICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sg ICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19U SFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgm U2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZT ZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01l bSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5T ZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1 c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9 IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJs ay5Db21tYW5kSW5kZXggPSBTRF9TRU5EX0lGX0NPTkQ7DQo+ID4gPiArICBTZE1tY0NtZEJsay5D b21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNyOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsu UmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSNzsNCj4gPiA+ICsgIFNkTW1jQ21kQmxr LkNvbW1hbmRBcmd1bWVudCA9IChTdXBwbHlWb2x0YWdlIDw8IDgpIHwNCj4gPiBDaGVja1BhdHRl cm47DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NU aHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmICghRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gPiArICAgIGlmIChTZE1tY1N0YXR1c0Jsay5SZXNwMCAhPSBTZE1t Y0NtZEJsay5Db21tYW5kQXJndW1lbnQpIHsNCj4gPiA+ICsgICAgICByZXR1cm4gRUZJX0RFVklD RV9FUlJPUjsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0 dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5k IGNvbW1hbmQgU0RJT19TRU5EX09QX0NPTkQgdG8gdGhlIGRldmljZSB0byBzZWUgd2hldGhlciBp dA0KPiBpcw0KPiA+IFNESU8gZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gU0RJ TyBTaW1wbGlmaWVkIFNwZWMgMyBTZWN0aW9uIDMuMiBmb3IgZGV0YWlscy4NCj4gPiA+ICsNCj4g PiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBWb2x0YWdlV2luZG93ICBUaGUg c3VwcGx5IHZvbHRhZ2Ugd2luZG93Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSBTMThSICAgICAgICAg ICBUaGUgYm9vbGVhbiB0byBzaG93IGlmIGl0IHNob3VsZCBzd2l0Y2ggdG8gMS44di4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBk b25lIGNvcnJlY3RseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9w ZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ ID4gPiArU2Rpb1NlbmRPcENvbmQgKA0KPiA+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZvbHRhZ2VXaW5kb3csDQo+ID4gPiArICBJTiBCT09MRUFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFMxOFINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiAr ICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0Js azsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0 Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaDsN Cj4gPiA+ICsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0Nt ZEJsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1j U3RhdHVzQmxrKSk7DQo+ID4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxr Ow0KPiA+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsN Cj4gPiA+ICsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNESU9fU0VORF9P UF9DT05EOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5k VHlwZUJjcjsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9u c2VUeXBlUjQ7DQo+ID4gPiArDQo+ID4gPiArICBTd2l0Y2ggPSBTMThSID8gQklUMjQgOiAwOw0K PiA+ID4gKw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFZvbHRhZ2VX aW5kb3cgJiAweEZGRkZGRikgfA0KPiA+IFN3aXRjaDsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1 cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyoqDQo+ID4gPiArICBTZW5kIGNvbW1hbmQgU0RfU0VORF9PUF9DT05EIHRvIHRoZSBkZXZpY2Ug dG8gc2VlIHdoZXRoZXIgaXQgaXMNCj4gPiBTRElPIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsg IFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0 LjcgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAg ICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIG9m IGFkZHJlc3NlZCBkZXZpY2UuDQo+ID4gPiArICBAcGFyYW1baW5dICBWb2x0YWdlV2luZG93ICBU aGUgc3VwcGx5IHZvbHRhZ2Ugd2luZG93Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgUzE4UiAgICAg ICAgICAgVGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBpdCBzaG91bGQgc3dpdGNoIHRvIDEuOHYuDQo+ ID4gPiArICBAcGFyYW1baW5dICBYcGMgICAgICAgICAgICBUaGUgYm9vbGVhbiB0byBzaG93IGlm IGl0IHNob3VsZCBwcm92aWRlIDAuMzZ3DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwb3dlciBjb250cm9sLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSGNzICAgICAgICAgICAg VGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBpdCBzdXBwb3J0IGhvc3QgY2FwYWNpdHkNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uDQo+ID4gPiArICBAcGFyYW1bb3V0XSBP Y3IgICAgICAgICAgICBUaGUgYnVmZmVyIHRvIHN0b3JlIHJldHVybmVkIE9DUiByZWdpc3Rlcg0K PiB2YWx1ZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgIFRo ZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtTZENhcmRTZW5kT3BDb25kICgNCj4gPiA+ICsgIElOICAg ICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ID4gKyAgSU4g ICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gPiArICBJTiAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFZvbHRhZ2VXaW5kb3csDQo+ID4gPiArICBJ TiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgIFMxOFIsDQo+ID4gPiArICBJTiAg ICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgIFhwYywNCj4gPiA+ICsgIElOICAgICBC T09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgSGNzLA0KPiA+ID4gKyAgICAgT1VUIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAqT2NyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsN Cj4gPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0 dXNCbGs7DQo+ID4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBh Y2tldDsNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd2l0 Y2g7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heFBv d2VyOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3N0 Q2FwYWNpdHk7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVv ZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6 ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9m IChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZT ZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1 c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklD X1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBT RF9BUFBfQ01EOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21t YW5kVHlwZUFjOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNw b25zZVR5cGVSMTsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChVSU5U MzIpUmNhIDw8IDE2Ow0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NU aHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ID4g PiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRU5EX09QX0NPTkQ7 DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNy Ow0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVS MzsNCj4gPiA+ICsNCj4gPiA+ICsgIFN3aXRjaCAgICAgICA9IFMxOFIgPyBCSVQyNCA6IDA7DQo+ ID4gPiArICBNYXhQb3dlciAgICAgPSBYcGMgPyBCSVQyOCA6IDA7DQo+ID4gPiArICBIb3N0Q2Fw YWNpdHkgPSBIY3MgPyBCSVQzMCA6IDA7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5D b21tYW5kQXJndW1lbnQgPSAoVm9sdGFnZVdpbmRvdyAmIDB4RkZGRkZGKSB8DQo+ID4gU3dpdGNo IHwgXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4UG93ZXIgfCBI b3N0Q2FwYWNpdHk7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1Ro cnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiA+ICsgIGlmICghRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gPiArICAgICpPY3IgPSBTZE1tY1N0YXR1c0Jsay5SZXNwMDsNCj4g PiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQnJvYWRjYXN0IGNvbW1hbmQgQUxMX1NFTkRfQ0lE IHRvIHRoZSBidXMgdG8gYXNrIGFsbCB0aGUgU0QgZGV2aWNlcw0KPiA+IHRvIHNlbmQNCj4gPiA+ ICsgIHRoZSBkYXRhIG9mIHRoZWlyIENJRCByZWdpc3RlcnMuDQo+ID4gPiArDQo+ID4gPiArICBS ZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43 IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAg ICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3Jy ZWN0bHkuDQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24g ZmFpbHMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK1Nk Q2FyZEFsbFNlbmRDaWQgKA0KPiA+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICAgICAqUGFzc1RocnUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0Rf TU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJ X1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiAr DQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsN Cj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0Js aykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBh Y2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiAr DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9BTExfU0VORF9DSUQ7DQo+ ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNyOw0K PiA+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMjsN Cj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUs IDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5kIGNvbW1hbmQgU0VUX1JF TEFUSVZFX0FERFIgdG8gdGhlIFNEIGRldmljZSB0byBhc3NpZ24gYQ0KPiA+IFJlbGF0aXZlIGRl dmljZQ0KPiA+ID4gKyAgQWRkcmVzcyAoUkNBKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRv IFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRl dGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9p bnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtvdXRd IFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGFzc2lnbi4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBp cyBkb25lIGNvcnJlY3RseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhl IG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVT DQo+ID4gPiArU2RDYXJkU2V0UmNhICgNCj4gPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ID4gKyAgICAgT1VUIFVJTlQxNiAgICAgICAg ICAgICAgICAgICAgICAgICAqUmNhDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJ X1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiA+ICsg IEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ ID4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4g PiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ ID4gKw0KPiA+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxr KSk7DQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0 dXNCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ ID4gPiArDQo+ID4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ ID4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gPiAr ICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ ID4gKw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU0VUX1JFTEFUSVZF X0FERFI7DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRU eXBlQmNyOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25z ZVR5cGVSNjsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAo UGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+ICsgICAgKlJjYSA9IChVSU5UMTYpKFNkTW1jU3RhdHVzQmxrLlJlc3Aw ID4+IDE2KTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2VuZCBjb21tYW5kIFNFTkRf Q1NEIHRvIHRoZSBTRCBkZXZpY2UgdG8gZ2V0IHRoZSBkYXRhIG9mIHRoZSBDU0QNCj4gPiByZWdp c3Rlci4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBs aWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiAr ICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0Rf TU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0 aXZlIGRldmljZSBhZGRyZXNzIG9mIHNlbGVjdGVkIGRldmljZS4NCj4gPiA+ICsgIEBwYXJhbVtv dXRdIENzZCAgICAgICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgY29udGVudCBvZiB0aGUg Q1NEDQo+ID4gcmVnaXN0ZXIuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5v dGUgdGhlIGNhbGxlciBzaG91bGQgaWdub3JlIHRoZSBsb3dlc3QgYnl0ZSBvZg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGJ1ZmZlciBhcyB0aGUgY29udGVudCBvZiB0 aGlzIGJ5dGUgaXMgbWVhbmluZy0NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGVzcyBldmVuIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMuDQo+ID4gPiArDQo+ID4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHku DQo+ID4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMu DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK1NkQ2FyZEdl dENzZCAoDQo+ID4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICpQ YXNzVGhydSwNCj4gPiA+ICsgIElOICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAg UmNhLA0KPiA+ID4gKyAgICAgT1VUIFNEX0NTRCAgICAgICAgICAgICAgICAgICAgICAgICAqQ3Nk DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NL ICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JM T0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gPiArICBFRklfU0RfTU1DX1BB U1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgWmVyb01l bSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gPiArICBaZXJvTWVt ICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiA+ICsgIFpl cm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gPiArDQo+ID4gPiArICBQYWNr ZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gPiArICBQYWNrZXQuU2RNbWNT dGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gPiArICBQYWNrZXQuVGltZW91dCAgICAg ICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ID4gKw0KPiA+ID4gKyAgU2RNbWND bWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU0VORF9DU0Q7DQo+ID4gPiArICBTZE1tY0NtZEJsay5D b21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gPiArICBTZE1tY0NtZEJsay5S ZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIyOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZEFyZ3VtZW50ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ID4gPiArDQo+ID4gPiArICBT dGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsN Cj4gPiA+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIENvcHlNZW0g KCgoVUlOVDgqKUNzZCkgKyAxLCAmU2RNbWNTdGF0dXNCbGsuUmVzcDAsIHNpemVvZg0KPiA+IChT RF9DU0QpIC0gMSk7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3RhdHVz Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNlbmQgY29tbWFuZCBT RU5EX0NTRCB0byB0aGUgU0QgZGV2aWNlIHRvIGdldCB0aGUgZGF0YSBvZiB0aGUgQ1NEDQo+ID4g cmVnaXN0ZXIuDQo+ID4gPiArDQo+ID4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBT aW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJ X1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zdGFuY2UuDQo+ID4gPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSBy ZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ID4gPiArICBAcGFy YW1bb3V0XSBTY3IgICAgICAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIGNvbnRlbnQgb2Yg dGhlIFNDUg0KPiA+IHJlZ2lzdGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtTZENhcmRHZXRTY3IgKA0KPiA+ID4g KyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ID4g PiArICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gPiA+ICsg ICAgIE9VVCBTRF9TQ1IgICAgICAgICAgICAgICAgICAgICAgICAgKlNjcg0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAg U2RNbWNDbWRCbGs7DQo+ID4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAg ICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFO RF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJs aywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVz QmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gPiArICBaZXJvTWVtICgmUGFja2V0 LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ID4gKw0KPiA+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxr ICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNk TW1jU3RhdHVzQmxrOw0KPiA+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hD X0dFTkVSSUNfVElNRU9VVDsNCj4gPiA+ICsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJ bmRleCA9IFNEX0FQUF9DTUQ7DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBT ZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBT ZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50 ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBQYXNzVGhy dS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiA+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX1NFTkRf U0NSOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlw ZUFkdGM7DQo+ID4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNl VHlwZVIxOw0KPiA+ID4gKw0KPiA+ID4gKyAgUGFja2V0LkluRGF0YUJ1ZmZlciAgICAgPSBTY3I7 DQo+ID4gPiArICBQYWNrZXQuSW5UcmFuc2Zlckxlbmd0aCA9IHNpemVvZiAoU0RfU0NSKTsNCj4g PiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAs ICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5kIGNvbW1hbmQgU0VMRUNUX0RF U0VMRUNUX0NBUkQgdG8gdGhlIFNEIGRldmljZSB0bw0KPiA+IHNlbGVjdC9kZXNlbGVjdCBpdC4N Cj4gPiA+ICsNCj4gPiA+ICsgIFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQg U3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFy YW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0 YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRl dmljZSBhZGRyZXNzIG9mIHNlbGVjdGVkIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4g PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArU2RDYXJkU2VsZWN0 ICgNCj4gPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NU aHJ1LA0KPiA+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sg ICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxP Q0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFT U19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVt ICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0g KCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVy b01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tl dC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0 YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAg ICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRUxFQ1RfREVTRUxFQ1RfQ0FSRDsNCj4gPiA+ICsgIFNk TW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiA+ICsgIGlm IChSY2EgIT0gMCkgew0KPiA+ID4gKyAgICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1t Y1Jlc3BvbnNlVHlwZVIxYjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1h bmRBcmd1bWVudCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVz ID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4g PiArDQo+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFNlbmQgY29tbWFuZCBWT0xUQUdFX1NXSVRDSCB0byB0aGUgU0QgZGV2aWNl IHRvIHN3aXRjaCB0aGUNCj4gdm9sdGFnZQ0KPiA+IG9mIHRoZQ0KPiA+ID4gKyAgZGV2aWNlLg0K PiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBT cGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJh bVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3Rh bmNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3Bl cmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VG SV9TVEFUVVMNCj4gPiA+ICtTZENhcmRWb2x0YWdlU3dpdGNoICgNCj4gPiA+ICsgIElOIEVGSV9T RF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1DQo+ID4gPiArICApDQo+ID4g PiArew0KPiA+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1t Y0NtZEJsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAg U2RNbWNTdGF0dXNCbGs7DQo+ID4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BB Q0tFVCAgIFBhY2tldDsNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBz aXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGss IHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNp emVvZiAoUGFja2V0KSk7DQo+ID4gPiArDQo+ID4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAg PSAmU2RNbWNDbWRCbGs7DQo+ID4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNT dGF0dXNCbGs7DQo+ID4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VO RVJJQ19USU1FT1VUOw0KPiA+ID4gKw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4 ID0gU0RfVk9MVEFHRV9TV0lUQ0g7DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAg PSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUg PSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3Vt ZW50ID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAo UGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0 YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZW5kIGNvbW1h bmQgU0VUX0JVU19XSURUSCB0byB0aGUgU0QgZGV2aWNlIHRvIHNldCB0aGUgYnVzIHdpZHRoLg0K PiA+ID4gKw0KPiA+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBT cGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJh bVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3Rh bmNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2 aWNlIGFkZHJlc3Mgb2YgYWRkcmVzc2VkIGRldmljZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQnVz V2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB0byBiZSBzZXQsIGl0IGNvdWxkIGJlIDEgb3IgNC4N Cj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlv biBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg VGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RB VFVTDQo+ID4gPiArU2RDYXJkU2V0QnVzV2lkdGggKA0KPiA+ID4gKyAgSU4gRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gPiArICBJTiBVSU5UMTYgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0K PiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1 c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFj a2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl Ow0KPiA+ID4gKw0KPiA+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1j Q21kQmxrKSk7DQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RN bWNTdGF0dXNCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0 KSk7DQo+ID4gPiArDQo+ID4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRC bGs7DQo+ID4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ ID4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VU Ow0KPiA+ID4gKw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfQVBQX0NN RDsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVB YzsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBl UjE7DQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8 PCAxNjsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFz c1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU0VUX0JVU19XSURUSDsNCj4gPiA+ ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiA+ ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4g PiArDQo+ID4gPiArICBpZiAoQnVzV2lkdGggPT0gMSkgew0KPiA+ID4gKyAgICBWYWx1ZSA9IDA7 DQo+ID4gPiArICB9IGVsc2UgaWYgKEJ1c1dpZHRoID09IDQpIHsNCj4gPiA+ICsgICAgVmFsdWUg PSAyOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1h bmRBcmd1bWVudCA9IFZhbHVlICYgMHgzOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gUGFz c1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gPiArICBy ZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNl bmQgY29tbWFuZCBTV0lUQ0hfRlVOQyB0byB0aGUgU0QgZGV2aWNlIHRvIGNoZWNrIHN3aXRjaGFi bGUNCj4gPiBmdW5jdGlvbiBvcg0KPiA+ID4gKyAgc3dpdGNoIGNhcmQgZnVuY3Rpb24uDQo+ID4g PiArDQo+ID4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMg NC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ID4gRUZJX1NEX01NQ19QQVNTX1RI UlVfUFJPVE9DT0wNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uu DQo+ID4gPiArICBAcGFyYW1baW5dICBBY2Nlc3NNb2RlICAgIFRoZSB2YWx1ZSBmb3IgYWNjZXNz IG1vZGUgZ3JvdXAuDQo+ID4gPiArICBAcGFyYW1baW5dICBDb21tYW5kU3lzdGVtIFRoZSB2YWx1 ZSBmb3IgY29tbWFuZCBzZXQgZ3JvdXAuDQo+ID4gPiArICBAcGFyYW1baW5dICBEcml2ZVN0cmVu Z3RoIFRoZSB2YWx1ZSBmb3IgZHJpdmUgbGVuZ3RoIGdyb3VwLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgUG93ZXJMaW1pdCAgICBUaGUgdmFsdWUgZm9yIHBvd2VyIGxpbWl0IGdyb3VwLg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgTW9kZSAgICAgICAgICBTd2l0Y2ggb3IgY2hlY2sgZnVuY3Rpb24uDQo+ ID4gPiArICBAcGFyYW1bb3V0XSBTd2l0Y2hSZXNwICAgIFRoZSByZXR1cm4gc3dpdGNoIGZ1bmN0 aW9uIHN0YXR1cy4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg VGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXJz ICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4g PiA+ICtFRklfU1RBVFVTDQo+ID4gPiArU2RDYXJkU3dpdGNoICgNCj4gPiA+ICsgIElOICAgICBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ID4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3NNb2RlLA0KPiA+ID4gKyAgSU4g ICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kU3lzdGVtLA0KPiA+ID4g KyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZVN0cmVuZ3RoLA0K PiA+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBQb3dlckxpbWl0 LA0KPiA+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBNb2RlLA0K PiA+ID4gKyAgICAgT1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAqU3dpdGNoUmVz cA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9D SyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gPiArICBFRklfU0RfTU1DX1NUQVRVU19C TE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19Q QVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gPiArICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTW9kZVZhbHVlOw0KPiA+ID4gKw0KPiA+ID4gKyAgWmVy b01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gPiArICBaZXJv TWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiA+ICsg IFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gPiArDQo+ID4gPiArICBQ YWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gPiArICBQYWNrZXQuU2RN bWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gPiArICBQYWNrZXQuVGltZW91dCAg ICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ID4gKw0KPiA+ID4gKyAgU2RN bWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU1dJVENIX0ZVTkM7DQo+ID4gPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWR0YzsNCj4gPiA+ICsgIFNkTW1j Q21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gPiArDQo+ID4g PiArICBNb2RlVmFsdWUgPSBNb2RlID8gQklUMzEgOiAwOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZEFyZ3VtZW50ID0gKEFjY2Vzc01vZGUgJiAweEYpIHwgICAgICAgICAgICBcDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBvd2VyTGltaXQgJiAweEYpIDw8 IDQpIHwgICAgIFwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRHJp dmVTdHJlbmd0aCAmIDB4RikgPDwgOCkgfCAgXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChEcml2ZVN0cmVuZ3RoICYgMHhGKSA8PCAxMikgfCBcDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlVmFsdWU7DQo+ID4gPiArDQo+ID4gPiAr ICBQYWNrZXQuSW5EYXRhQnVmZmVyICAgICA9IFN3aXRjaFJlc3A7DQo+ID4gPiArICBQYWNrZXQu SW5UcmFuc2Zlckxlbmd0aCA9IDY0Ow0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gUGFzc1Ro cnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gPiArDQo+ID4g PiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIFNlbmQgY29tbWFuZCBTRU5EX1NUQVRVUyB0byB0aGUgYWRkcmVzc2VkIFNEIGRldmljZSB0 byBnZXQgaXRzDQo+ID4gc3RhdHVzDQo+ID4gPiArICByZWdpc3Rlci4NCj4gPiA+ICsNCj4gPiA+ ICsgIFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlv biA0LjcgZm9yIGRldGFpbHMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBQYXNzVGhy dSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsg IEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIG9m IGFkZHJlc3NlZCBkZXZpY2UuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBEZXZTdGF0dXMgICAgIFRo ZSByZXR1cm5lZCBkZXZpY2Ugc3RhdHVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0K PiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtTZENhcmRTZW5kU3RhdHVzICgN Cj4gPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1 LA0KPiA+ID4gKyAgSU4gICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ ID4gPiArICAgICBPVVQgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZTdGF0dXMN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sg ICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxP Q0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIEVGSV9TRF9NTUNfUEFT U19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVt ICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0g KCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVy b01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tl dC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0 YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAg ICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRU5EX1NUQVRVUzsNCj4gPiA+ICsgIFNkTW1jQ21kQmxr LkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiA+ICsgIFNkTW1jQ21kQmxr LlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gPiArICBTZE1tY0NtZEJs ay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8PCAxNjsNCj4gPiA+ICsNCj4gPiA+ICsg IFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwp Ow0KPiA+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgKkRldlN0 YXR1cyA9IFNkTW1jU3RhdHVzQmxrLlJlc3AwOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBTZW5kIGNvbW1hbmQgU0VORF9UVU5JTkdfQkxPQ0sgdG8gdGhlIFNEIGRldmljZSBmb3IgSFMy MDANCj4gPiBvcHRpbWFsIHNhbXBsaW5nDQo+ID4gPiArICBwb2ludCBkZXRlY3Rpb24uDQo+ID4g PiArDQo+ID4gPiArICBJdCBtYXkgYmUgc2VudCB1cCB0byA0MCB0aW1lcyB1bnRpbCB0aGUgaG9z dCBmaW5pc2hlcyB0aGUgdHVuaW5nDQo+ID4gcHJvY2VkdXJlLg0KPiA+ID4gKw0KPiA+ID4gKyAg UmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQu NyBmb3IgZGV0YWlscy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAg ICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29y cmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9u IGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtT ZENhcmRTZW5kVHVuaW5nQmxrICgNCj4gPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BS T1RPQ09MICAgICAgKlBhc3NUaHJ1DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUZJ X1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiA+ICsg IEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ ID4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4g PiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUdW5pbmdCbG9ja1s2 NF07DQo+ID4gPiArDQo+ID4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RN bWNDbWRCbGspKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChT ZE1tY1N0YXR1c0JsaykpOw0KPiA+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNr ZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0Nt ZEJsazsNCj4gPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsN Cj4gPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVP VVQ7DQo+ID4gPiArDQo+ID4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRU5E X1RVTklOR19CTE9DSzsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1j Q29tbWFuZFR5cGVBZHRjOw0KPiA+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RN bWNSZXNwb25zZVR5cGVSMTsNCj4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9 IDA7DQo+ID4gPiArDQo+ID4gPiArICBQYWNrZXQuSW5EYXRhQnVmZmVyICAgICA9IFR1bmluZ0Js b2NrOw0KPiA+ID4gKyAgUGFja2V0LkluVHJhbnNmZXJMZW5ndGggPSBzaXplb2YgKFR1bmluZ0Js b2NrKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFz c1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1 czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTd2l0Y2ggdGhlIGJ1 cyB3aWR0aCB0byBzcGVjaWZpZWQgd2lkdGguDQo+ID4gPiArDQo+ID4gPiArICBSZWZlciB0byBT RCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGFuZA0KPiA+ ID4gKyAgU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgU3BlYyAzLjAgc2VjdGlvbiBGaWd1 cmUgMy03IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAg ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9QQ0lfSU9fUFJPVE9DT0wNCj4gaW5zdGFuY2Uu DQo+ID4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4g PiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAg VGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiA+ID4gKyAgQHBh cmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRoIHRvIGJlIHNldCwgaXQgY291bGQg YmUgNCBvciA4Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBU aGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtTZENhcmRTd2l0Y2hCdXNXaWR0aCAoDQo+ID4gPiArICBJ TiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gPiArICBJ TiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiA+ICsg IElOIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ID4gKyAgSU4g Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc0RkciwNCj4gPiA+ICsgIElOIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiA+ICsgICkNCj4g PiA+ICt7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgRGV2U3RhdHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0g U2RDYXJkU2V0QnVzV2lkdGggKFBhc3NUaHJ1LCBSY2EsIEJ1c1dpZHRoKTsNCj4gPiA+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ICsgICAg ICBERUJVR19FUlJPUiwNCj4gPiA+ICsgICAgICAiU2RDYXJkU3dpdGNoQnVzV2lkdGg6IFN3aXRj aCB0byBidXMgd2lkdGggJWQgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICBCdXNXaWR0 aCwNCj4gPiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICApKTsNCj4gPiA+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFNkQ2Fy ZFNlbmRTdGF0dXMgKFBhc3NUaHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERF QlVHX0VSUk9SLA0KPiA+ID4gKyAgICAgICJTZENhcmRTd2l0Y2hCdXNXaWR0aDogU2VuZCBzdGF0 dXMgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICAp KTsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIC8vDQo+ ID4gPiArICAvLyBDaGVjayB0aGUgc3dpdGNoIG9wZXJhdGlvbiBpcyByZWFsbHkgc3VjY2Vzc2Z1 bCBvciBub3QuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgaWYgKChEZXZTdGF0dXMgPj4gMTYpICE9 IDApIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4g PiA+ICsgICAgICAiU2RDYXJkU3dpdGNoQnVzV2lkdGg6IFRoZSBzd2l0Y2ggb3BlcmF0aW9uIGZh aWxzIGFzIERldlN0YXR1cw0KPiA+IDB4JTA4eFxuIiwNCj4gPiA+ICsgICAgICBEZXZTdGF0dXMN Cj4gPiA+ICsgICAgICApKTsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjU2V0QnVzV2lkdGgg KERldkJhc2UsIElzRGRyLCBCdXNXaWR0aCk7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3Rh dHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFN3aXRjaCB0aGUg aGlnaCBzcGVlZCB0aW1pbmcgYWNjb3JkaW5nIHRvIHJlcXVlc3QuDQo+ID4gPiArDQo+ID4gPiAr ICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24g NC43IGZvciBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAg ICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9QQ0lfSU9fUFJPVE9DT0wNCj4gaW5zdGFuY2UuDQo+ ID4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnN0YW5jZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhl IHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiA+ID4gKyAgQHBhcmFt W2luXSBTMThBICAgICAgICAgICBUaGUgYm9vbGVhbiB0byBzaG93IGlmIGl0J3MgYSBVSFMtSSBT RCBjYXJkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aHMgICAgICBUaGUgYnVzIHdpZHRo IG9mIHRoZSBTRCBjYXJkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBP dGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtTZENhcmRTZXRCdXNNb2RlICgNCj4gPiA+ICsg IElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiA+ICsg IElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ID4g KyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gPiArICBJ TiBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMxOEEsDQo+ID4gPiArICBJTiBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRocw0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiA+ID4gKyAgRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAgICAgICAqQ2FwYWJpbGl0eTsNCj4gPiA+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxOw0KPiA+ID4gKyAgVUlO VDggICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3NNb2RlOw0KPiA+ID4gKyAgVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICBTd2l0Y2hSZXNwWzY0XTsNCj4gPiA+ICsgIERXX01NQ19IQ19Q UklWQVRFX0RBVEEgICAgICAgKlByaXZhdGU7DQo+ID4gPiArICBCT09MRUFOICAgICAgICAgICAg ICAgICAgICAgIElzRGRyOw0KPiA+ID4gKw0KPiA+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19Q UklWQVRFX0ZST01fVEhJUyAoUGFzc1RocnUpOw0KPiA+ID4gKw0KPiA+ID4gKyAgQ2FwYWJpbGl0 eSA9ICZQcml2YXRlLT5DYXBhYmlsaXR5WzBdOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChDYXBh YmlsaXR5LT5CdXNXaWR0aCA9PSAxKSB8fCAoQ2FwYWJpbGl0eS0+QnVzV2lkdGggPT0gNCkpIHsN Cj4gPiA+ICsgICAgQnVzV2lkdGhzICY9IENhcGFiaWxpdHlbMF0uQnVzV2lkdGg7DQo+ID4gPiAr ICB9IGVsc2Ugew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERFQlVHX0VSUk9S LA0KPiA+ID4gKyAgICAgICJTZENhcmRTZXRCdXNNb2RlOiBCdXNXaWR0aHMgKCVkKSBpbiBjYXBh YmlsaXR5IGFyZSB3cm9uZ1xuIiwNCj4gPiA+ICsgICAgICBDYXBhYmlsaXR5LT5CdXNXaWR0aA0K PiA+ID4gKyAgICAgICkpOw0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKEJ1c1dpZHRocyA9PSAwKSB7DQo+ ID4gPiArICAgIERFQlVHICgoDQo+ID4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ID4gPiArICAg ICAgIlNkQ2FyZFNldEJ1c01vZGU6IEdldCB3cm9uZyBCdXNXaWR0aHM6JWRcbiIsDQo+ID4gPiAr ICAgICAgQnVzV2lkdGhzDQo+ID4gPiArICAgICAgKSk7DQo+ID4gPiArICAgIHJldHVybiBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoUHJp dmF0ZS0+Q2FwYWJpbGl0eVswXS5EZHI1MCkgew0KPiA+ID4gKyAgICBJc0RkciA9IFRSVUU7DQo+ ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBJc0RkciA9IEZBTFNFOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gU2RDYXJkU3dpdGNoQnVzV2lkdGggKERldkJhc2Us IFBhc3NUaHJ1LCBSY2EsIElzRGRyLA0KPiA+IEJ1c1dpZHRocyk7DQo+ID4gPiArICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIERFQlVHICgoDQo+ID4gPiArICAgICAgREVC VUdfRVJST1IsDQo+ID4gPiArICAgICAgIlNkQ2FyZFNldEJ1c01vZGU6IEV4ZWN1dGluZyBTZENh cmRTd2l0Y2hCdXNXaWR0aCBmYWlscyB3aXRoDQo+ID4gJXJcbiIsDQo+ID4gPiArICAgICAgU3Rh dHVzDQo+ID4gPiArICAgICAgKSk7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiAr ICB9DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gR2V0IHRoZSBzdXBwb3J0ZWQg YnVzIHNwZWVkIGZyb20gU1dJVENIIGNtZCByZXR1cm4gZGF0YSBncm91cA0KPiAjMS4NCj4gPiA+ ICsgIC8vDQo+ID4gPiArICBTdGF0dXMgPSBTZENhcmRTd2l0Y2ggKFBhc3NUaHJ1LCAweEYsIDB4 RiwgMHhGLCAweEYsIEZBTFNFLA0KPiBTd2l0Y2hSZXNwKTsNCj4gPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4g PiA+ICsgIC8vDQo+ID4gPiArICAvLyBDYWxjdWxhdGUgc3VwcG9ydGVkIGJ1cyBzcGVlZC9idXMg d2lkdGgvY2xvY2sgZnJlcXVlbmN5IGJ5IGhvc3QNCj4gYW5kDQo+ID4gZGV2aWNlDQo+ID4gPiAr ICAvLyBjYXBhYmlsaXR5Lg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIENsb2NrRnJlcSA9IDA7DQo+ ID4gPiArICBpZiAoUzE4QSAmJiAoQ2FwYWJpbGl0eS0+U2RyMTA0ICE9IDApICYmICgoU3dpdGNo UmVzcFsxM10gJiBCSVQzKSAhPSAwKSkNCj4gew0KPiA+ID4gKyAgICBDbG9ja0ZyZXEgPSAyMDg7 DQo+ID4gPiArICAgIEFjY2Vzc01vZGUgPSAzOw0KPiA+ID4gKyAgfSBlbHNlIGlmIChTMThBICYm IChDYXBhYmlsaXR5LT5TZHI1MCAhPSAwKSAmJg0KPiA+ID4gKyAgICAgICAgICAgICAoKFN3aXRj aFJlc3BbMTNdICYgQklUMikgIT0gMCkpIHsNCj4gPiA+ICsgICAgQ2xvY2tGcmVxID0gMTAwOw0K PiA+ID4gKyAgICBBY2Nlc3NNb2RlID0gMjsNCj4gPiA+ICsgIH0gZWxzZSBpZiAoUzE4QSAmJiAo Q2FwYWJpbGl0eS0+RGRyNTAgIT0gMCkgJiYNCj4gPiA+ICsgICAgICAgICAgICAgKChTd2l0Y2hS ZXNwWzEzXSAmIEJJVDQpICE9IDApKSB7DQo+ID4gPiArICAgIENsb2NrRnJlcSA9IDUwOw0KPiA+ ID4gKyAgICBBY2Nlc3NNb2RlID0gNDsNCj4gPiA+ICsgIH0gZWxzZSBpZiAoKFN3aXRjaFJlc3Bb MTNdICYgQklUMSkgIT0gMCkgew0KPiA+ID4gKyAgICBDbG9ja0ZyZXEgPSA1MDsNCj4gPiA+ICsg ICAgQWNjZXNzTW9kZSA9IDE7DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBDbG9ja0Zy ZXEgPSAyNTsNCj4gPiA+ICsgICAgQWNjZXNzTW9kZSA9IDA7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICBTdGF0dXMgPSBTZENhcmRTd2l0Y2ggKFBhc3NUaHJ1LCBBY2Nlc3NNb2RlLCAw eEYsIDB4RiwgMHhGLCBUUlVFLA0KPiA+IFN3aXRjaFJlc3ApOw0KPiA+ID4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgaWYgKChTd2l0Y2hSZXNwWzE2XSAmIDB4RikgIT0gQWNjZXNzTW9k ZSkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ ID4gKyAgICAgICJTZENhcmRTZXRCdXNNb2RlOiBTd2l0Y2ggdG8gQWNjZXNzTW9kZSAlZCBDbG9j a0ZyZXEgJWQgZmFpbHMhDQo+ID4gVGhlIFN3aXRjaCByZXNwb25zZSBpcyAweCUxeFxuIiwNCj4g PiA+ICsgICAgICBBY2Nlc3NNb2RlLA0KPiA+ID4gKyAgICAgIENsb2NrRnJlcSwNCj4gPiA+ICsg ICAgICBTd2l0Y2hSZXNwWzE2XSAmIDB4Rg0KPiA+ID4gKyAgICAgICkpOw0KPiA+ID4gKyAgICBy ZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIERF QlVHICgoDQo+ID4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gPiArICAgICJTZENhcmRTZXRCdXNN b2RlOiBTd2l0Y2ggdG8gQWNjZXNzTW9kZSAlZCBDbG9ja0ZyZXEgJWQgXG4iLA0KPiA+ID4gKyAg ICBBY2Nlc3NNb2RlLA0KPiA+ID4gKyAgICBDbG9ja0ZyZXENCj4gPiA+ICsgICAgKSk7DQo+ID4g PiArDQo+ID4gPiArICBTdGF0dXMgPSBEd01tY0hjQ2xvY2tTdXBwbHkgKERldkJhc2UsIENsb2Nr RnJlcSAqIDEwMDAsDQo+ICpDYXBhYmlsaXR5KTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsN Cj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK0VGSV9T VEFUVVMNCj4gPiA+ICtTZENhcmRJZGVudGlmaWNhdGlvbiAoDQo+ID4gPiArICBJTiBEV19NTUNf SENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICpQcml2YXRlDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ID4gKyAgRUZJ X1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICpQYXNzVGhydTsNCj4gPiA+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICBPY3I7DQo+ID4gPiArICBVSU5UMTYgICAgICAgICAgICAg ICAgICAgICAgICAgUmNhOw0KPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAg IFhwYzsNCj4gPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBTMThyOw0KPiA+ ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgIE1heEN1cnJlbnQ7DQo+ID4gPiAr ICBTRF9TQ1IgICAgICAgICAgICAgICAgICAgICAgICAgU2NyOw0KPiA+ID4gKyAgU0RfQ1NEICAg ICAgICAgICAgICAgICAgICAgICAgIENzZDsNCj4gPiA+ICsNCj4gPiA+ICsgIERldkJhc2UgICAg PSBQcml2YXRlLT5EZXZCYXNlOw0KPiA+ID4gKyAgUGFzc1RocnUgPSAmUHJpdmF0ZS0+UGFzc1Ro cnU7DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gMS4gU2VuZCBDbWQwIHRvIHRoZSBkZXZpY2UN Cj4gPiA+ICsgIC8vDQo+ID4gPiArICBTdGF0dXMgPSBTZENhcmRSZXNldCAoUGFzc1RocnUpOw0K PiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0K PiA+ID4gKyAgICAgIERFQlVHX0lORk8sDQo+ID4gPiArICAgICAgIlNkQ2FyZElkZW50aWZpY2F0 aW9uOiBFeGVjdXRpbmcgQ21kMCBmYWlscyB3aXRoICVyXG4iLA0KPiA+ID4gKyAgICAgIFN0YXR1 cw0KPiA+ID4gKyAgICAgICkpOw0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAg fQ0KPiA+ID4gKyAgTWljcm9TZWNvbmREZWxheSAoMTAwMDApOw0KPiA+ID4gKyAgLy8NCj4gPiA+ ICsgIC8vIDIuIFNlbmQgQ21kOCB0byB0aGUgZGV2aWNlDQo+ID4gPiArICAvLw0KPiA+ID4gKyAg U3RhdHVzID0gU2RDYXJkVm9sdGFnZUNoZWNrIChQYXNzVGhydSwgMHgxLCAweEZGKTsNCj4gPiA+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ ICsgICAgICBERUJVR19JTkZPLA0KPiA+ID4gKyAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjog RXhlY3V0aW5nIENtZDggZmFpbHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICBTdGF0dXMNCj4g PiA+ICsgICAgICApKTsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4g PiA+ICsgIC8vDQo+ID4gPiArICAvLyAzLiBTZW5kIEFjbWQ0MSB3aXRoIHZvbHRhZ2Ugd2luZG93 IDAgdG8gdGhlIGRldmljZQ0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIFN0YXR1cyA9IFNkQ2FyZFNl bmRPcENvbmQgKFBhc3NUaHJ1LCAwLCAwLCBGQUxTRSwgRkFMU0UsIEZBTFNFLA0KPiAmT2NyKTsN Cj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgN Cj4gPiA+ICsgICAgICBERUJVR19JTkZPLA0KPiA+ID4gKyAgICAgICJTZENhcmRJZGVudGlmaWNh dGlvbjogRXhlY3V0aW5nIFNkQ2FyZFNlbmRPcENvbmQgZmFpbHMgd2l0aA0KPiAlclxuIiwNCj4g PiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICApKTsNCj4gPiA+ICsgICAgcmV0dXJuIEVG SV9ERVZJQ0VfRVJST1I7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoUHJpdmF0 ZS0+Q2FwYWJpbGl0eVswXS5Wb2x0YWdlMzMgIT0gMCkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4g KyAgICAvLyBTdXBwb3J0IDMuM1YNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgTWF4Q3VycmVu dCA9ICgoVUlOVDMyKVByaXZhdGUtPk1heEN1cnJlbnRbMF0gJiAweEZGKSAqIDQ7DQo+ID4gPiAr ICAgIFMxOHIgPSBGQUxTRTsNCj4gPiA+ICsgIH0gZWxzZSBpZiAoUHJpdmF0ZS0+Q2FwYWJpbGl0 eVswXS5Wb2x0YWdlMzAgIT0gMCkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBTdXBw b3J0IDMuMFYNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgTWF4Q3VycmVudCA9ICgoKFVJTlQz MilQcml2YXRlLT5NYXhDdXJyZW50WzBdID4+IDgpICYgMHhGRikgKiA0Ow0KPiA+ID4gKyAgICBT MThyID0gRkFMU0U7DQo+ID4gPiArICB9IGVsc2UgaWYgKFByaXZhdGUtPkNhcGFiaWxpdHlbMF0u Vm9sdGFnZTE4ICE9IDApIHsNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgLy8gU3VwcG9ydCAx LjhWDQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIE1heEN1cnJlbnQgPSAoKChVSU5UMzIpUHJp dmF0ZS0+TWF4Q3VycmVudFswXSA+PiAxNikgJiAweEZGKSAqIDQ7DQo+ID4gPiArICAgIFMxOHIg PSBUUlVFOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPiArICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgaWYgKE1heEN1cnJlbnQgPj0gMTUwKSB7DQo+ID4gPiArICAgIFhwYyA9IFRSVUU7 DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBYcGMgPSBGQUxTRTsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyA0LiBSZXBlYXRseSBzZW5kIEFjbWQ0 MSB3aXRoIHN1cHBseSB2b2x0YWdlIHdpbmRvdyB0byB0aGUgZGV2aWNlLg0KPiA+ID4gKyAgLy8g ICAgTm90ZSBoZXJlIHdlIG9ubHkgc3VwcG9ydCB0aGUgY2FyZHMgY29tcGxpZWQgd2l0aCBTRCBw aHlzaWNhbA0KPiA+ID4gKyAgLy8gICAgbGF5ZXIgc2ltcGxpZmllZCBzcGVjIHZlcnNpb24gMi4w IGFuZCB2ZXJzaW9uIDMuMCBhbmQgYWJvdmUuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgZG8gew0K PiA+ID4gKyAgICBTdGF0dXMgPSBTZENhcmRTZW5kT3BDb25kIChQYXNzVGhydSwgMCwgT2NyLCBT MThyLCBYcGMsIFRSVUUsDQo+ICZPY3IpOw0KPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gPiArICAgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICAgIERFQlVHX0VSUk9S LA0KPiA+ID4gKyAgICAgICAgIlNkQ2FyZElkZW50aWZpY2F0aW9uOiBTZENhcmRTZW5kT3BDb25k IGZhaWxzIHdpdGggJXIgT2NyICV4LCBTMThyDQo+ID4gJXgsIFhwYyAleFxuIiwNCj4gPiA+ICsg ICAgICAgIFN0YXR1cywNCj4gPiA+ICsgICAgICAgIE9jciwNCj4gPiA+ICsgICAgICAgIFMxOHIs DQo+ID4gPiArICAgICAgICBYcGMNCj4gPiA+ICsgICAgICAgICkpOw0KPiA+ID4gKyAgICAgIHJl dHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9IHdoaWxlICgo T2NyICYgQklUMzEpID09IDApOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gU2RDYXJkQWxs U2VuZENpZCAoUGFzc1RocnUpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ID4gKyAg ICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNkQ2FyZEFsbFNlbmRDaWQgZmFp bHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICApKTsNCj4g PiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFN0 YXR1cyA9IFNkQ2FyZFNldFJjYSAoUGFzc1RocnUsICZSY2EpOw0KPiA+ID4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKA0KPiA+ID4gKyAgICAgIERFQlVH X0VSUk9SLA0KPiA+ID4gKyAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNk Q2FyZFNldFJjYSBmYWlscyB3aXRoICVyXG4iLA0KPiA+ID4gKyAgICAgIFN0YXR1cw0KPiA+ID4g KyAgICAgICkpOw0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgU3RhdHVzID0gU2RDYXJkR2V0Q3NkIChQYXNzVGhydSwgUmNhLCAmQ3NkKTsN Cj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgN Cj4gPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiA+ICsgICAgICAiU2RDYXJkSWRlbnRpZmlj YXRpb246IEV4ZWN1dGluZyBTZENhcmRHZXRDc2QgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiA+ICsg ICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICApKTsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFNkQ2FyZFNlbGVjdCAoUGFz c1RocnUsIFJjYSk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiAr ICAgIERFQlVHICgoDQo+ID4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ID4gPiArICAgICAgIlNk Q2FyZElkZW50aWZpY2F0aW9uOiBTZWxlY3RpbmcgY2FyZCBmYWlscyB3aXRoICVyXG4iLA0KPiA+ ID4gKyAgICAgIFN0YXR1cw0KPiA+ID4gKyAgICAgICkpOw0KPiA+ID4gKyAgICByZXR1cm4gU3Rh dHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gU2RDYXJkR2V0U2Ny IChQYXNzVGhydSwgUmNhLCAmU2NyKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiA+ ICsgICAgICAiU2RDYXJkSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBTZENhcmRHZXRTY3IgZmFp bHMgd2l0aCAlclxuIiwNCj4gPiA+ICsgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICApKTsNCj4g PiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8v DQo+ID4gPiArICAvLyBFbnRlciBEYXRhIFRyYW5mZXIgTW9kZS4NCj4gPiA+ICsgIC8vDQo+ID4g PiArICBERUJVRyAoKERFQlVHX0lORk8sICJTZENhcmRJZGVudGlmaWNhdGlvbjogRm91bmQgYSBT RCBkZXZpY2VcbiIpKTsNCj4gPiA+ICsgIFByaXZhdGUtPlNsb3RbMF0uQ2FyZFR5cGUgPSBTZENh cmRUeXBlOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gU2RDYXJkU2V0QnVzTW9kZSAoRGV2 QmFzZSwgUGFzc1RocnUsIFJjYSwgUzE4ciwNCj4gPiBTY3IuU2RCdXNXaWR0aHMpOw0KPiA+ID4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgUHJpdmF0ZS0+U2xvdFswXS5Jbml0aWFsaXpl ZCA9IFRSVUU7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4g PiA+IC0tDQo+ID4gPiAyLjEyLjMNCg0K