From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web11.7981.1616383970074572123 for ; Sun, 21 Mar 2021 20:32:50 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=JwZecINr; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: tien.hock.loh@intel.com) IronPort-SDR: lt+5ea0j+569LDpLxXDflcYX0tkePLe2yeMIh2otS8ju2icTeGwGRUqtnlkdCs531Hdck9uQ9u nz+Kgszwj3EA== X-IronPort-AV: E=McAfee;i="6000,8403,9930"; a="177325258" X-IronPort-AV: E=Sophos;i="5.81,266,1610438400"; d="scan'208";a="177325258" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Mar 2021 20:32:48 -0700 IronPort-SDR: zG4NOWwGEYY3trezW/MVxo/fn4McqwwYubA+QDSCRQb9yCLrvDneG+6dbbgUqt+HJ52eXRowsB p793f047I/Xg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,266,1610438400"; d="scan'208";a="373702463" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga003.jf.intel.com with ESMTP; 21 Mar 2021 20:32:48 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Sun, 21 Mar 2021 20:32:47 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Sun, 21 Mar 2021 20:32:47 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Sun, 21 Mar 2021 20:32:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iJ3Kr4rwbzKVvWwXlAuBxGVHW1Q0/K9jPkiPlqGtBZnvTgWCwwu5MSkHA1+36fDqV4CgtVss6DkCVuv6eFYQ8ht6rnXXet04XFZ7Hde064basbXpt8/+Tx/KiXtdGmgaQeVvXDPGFEj12SQ4A1eWywQR5Y1nv17itmC3Ko51e6Q9Mhs6+eqWNQUhdlIee5N49CnGVuMnrlD+akje18BsCcLI5KKyTYGyW7nuOiaJqFe/K40Bpn9PunYH0c8ZxuLk0otFlTc8wezQE8fQMp03+WezZgRLqQkghBhtQiMCXnJCbUkVte7f8pqzRtSegBgOpL/pFzoVEPsJn94GUhdA+A== 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=gOlnDGKYM/6NwvIMn6biKeuPRUKNVD86Rvsf85We52g=; b=aG4bJLqHIz5n4BNG8a/+5Td/reImppuBxlukxLVRJiRogT3Oky1bfLNaA6fsSlDxSem60DRRQSmJtW8Mt2pvBc+p7kapiUsDc83M/yJNaJHKjQJUrdT0FTkGAbNydjjfyt8DDDkiSzEkyLx3nmEOia6UkQBmHyqItVVey9YMvUQ26ANsUTHQVZ4iOPWelF7uq0Qbolozrmry9FLj5hdNCBb5foOxtQVDY+E0CLes9kpA+m7+6mno5FAQHBVUyjLvKxQCiBtiOFkku6exrrXuW4skK4fBM9OHYhBk5V8VvkU7oqUZDxC0M+0DmF8LHfGGIzOFgbVNJkQ1RX1ZErfi/A== 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=gOlnDGKYM/6NwvIMn6biKeuPRUKNVD86Rvsf85We52g=; b=JwZecINreQQDaOaqacDIpjClptnHHBUYm3EkeDmnueIvQvqSGVebGsrl0gxkEfBpfSIY4Qidkbj39tiLSk+UVTGado/k2S9D+zhxh3RtFTClj+edKGOTwxRI57j9eg1dGZnN/pao9Qfl/W3zw6frYXFt1p0nkNKFWDBDG4aAl1c= Received: from SJ0PR11MB5136.namprd11.prod.outlook.com (2603:10b6:a03:2d1::18) by SJ0PR11MB4864.namprd11.prod.outlook.com (2603:10b6:a03:2d4::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Mon, 22 Mar 2021 03:32:43 +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.3955.027; Mon, 22 Mar 2021 03:32:43 +0000 From: "Loh, Tien Hock" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "thloh85@gmail.com" , Leif Lindholm , Ard Biesheuvel Subject: Re: [edk2-devel] [PATCH V4 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Topic: [edk2-devel] [PATCH V4 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Index: AQHXHJkEvhVhqSI0LEaTG2U3DB7Rb6qK+L4AgAB4ZQCAA+2EkA== Date: Mon, 22 Mar 2021 03:32:43 +0000 Message-ID: References: <20210319082216.34366-1-tien.hock.loh@intel.com> <20210319082216.34366-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: [103.78.32.234] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fb1425be-e8cd-433f-cea3-08d8ece3279d x-ms-traffictypediagnostic: SJ0PR11MB4864: 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: ECBTxj5QFX3nFosAgagvSRIHgWXveOiz/PR459m4+FwMjPRlj0ockPvuDCqCw0igkACODooLD4GxDpMdaVdh6jsVxEF7E/v9GrikQl+eLs4nSfsvCIGJruKpkD23SqgTs1RKUbPR36+EgXPTYFeSOJKfMW1jIx+648FUZnY4AJD5F18KC+UiTl4rKR4RJs2zcVtM2HDa+DUbpfRk5dlcD0xE2KXtPWTNxGquFL9zcIoTR3mJpSTxqq6hJ/IufGbFMMHEgffAAK7t5R8vHpDT96ha8OfK2X3FSczC66FoWueCvVFNpogZ2oQ7bHxlKngIT6dBZYrlvu3H7iaumAuU/epCDYtjAKJ4R9bLP4RFmB4g3JKVa4EnhjYMo4DYohK1VpcvuJpTpXib0s5W2ahfLBFsbaQKD3KFB9c+1+RJ3B3EmefY97TEyoptUIg+6GExTKouvXyihTvTVFR4nArxI84+zMcaQJYkHLhQaeQttD2BYM4T9FXhztZ6IuC4JP7dEPtjpZNL8BhaHY/K6i+odFB4Cu36ixUdKCzBMAweWEQ8dmnhZ499vS8ynfwbIHDQzvT2PBrryQpbcyrWclN+QIgLtu/svzri7yKQHSlboQyrcKl8iV0poB9Y/Z2hXdDu+Qz7xq6R/K2/GNUaNXbwbaGh794gGXnXiAtmNcgp+lL65A5i6bLvjJWb+MMiPxVreIrLe4wP8qVEH23GVmx1tXuhIGcPsQlMAWuIfS+tqB/Q4xx+5trhizMD3/6xblGLVCJB+M82Ds8I0xps2Ojk5ojnlBWImtpa7iN6o72dUfw= 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)(346002)(376002)(396003)(39860400002)(366004)(136003)(66556008)(66446008)(66946007)(64756008)(76116006)(86362001)(66476007)(316002)(110136005)(8676002)(83380400001)(8936002)(54906003)(2906002)(19627235002)(33656002)(30864003)(5660300002)(52536014)(4326008)(16799955002)(53546011)(966005)(478600001)(71200400001)(6506007)(55016002)(186003)(9686003)(38100700001)(15188155005)(26005)(7696005)(290074003)(559001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?UTNMK2dKN21tSFp3dmtvelhYR0pPTFIwZE95RFBuY2hCTW03RVM4dFVsZjBu?= =?utf-8?B?WldSUXIzRW9Lc0VDTDdLV1g5b0JxUFNBbWpYYzNycWJmTVFYMCt6cGZXaWM4?= =?utf-8?B?bVpLcTZBa1pjbWpWeDFRdHc2ZUswYk1seERaSllEZVlkVWRFeHM3L1daaFkx?= =?utf-8?B?TkZNMksxelBUanJ1RVBXREM1VTVCdzREZVE2NlhDeFRhM1dXaUhIVllqV1lM?= =?utf-8?B?b1Q5WHVSM0JPcGdjMkM1OFhFU1FZSmxMT2M0d3o3ZDR2cjBDRERMaGcydXNo?= =?utf-8?B?TFovOHUxK2RHSjVBYXhJR2xEMzRFK3BQSEdPRzh1d2E2SDlOektuN3lkb01W?= =?utf-8?B?ck0rU2RiakN5S0c3bUxhL3JhbGdCaU1HK0ZHV1M2Ym5oSjRwNkNFZEVVSmFS?= =?utf-8?B?c0NHczlYaWkyZGk3SHJ6MWVJcDdPNmJ4K0szeG5Ga1Qybkd6UURwbURQTTZo?= =?utf-8?B?TXo2VDltYVF6cEI1TU9OZkpuenozVVdvZHNhdlVOMVkxUHZ0L1YvU2ExcFlZ?= =?utf-8?B?Wks1bTJ1QjBIS1Z2SkM0Z2N4aExMdFNRak40c2Erb0xaMUFhMXAyemxucllL?= =?utf-8?B?YjhydWpIR2VPTXFrWjdWQXBRa2pVMnlPdUFhc0pXcThES2hDa2pkVzRDaHRw?= =?utf-8?B?WTNraVZJek1vajdHVFNjYUIxZDB2QWg5dXhFQmhTUEZVenpyMFJ6cStDSXli?= =?utf-8?B?YTVWb3RVM0NCSGNEUUs0cHVabzUzaGhWSFcrTmlZbm5TWXVhYzBZTzBXNmc0?= =?utf-8?B?b3VVQmNYNDFRZnR4NVdBN1V3bmU4cTBKNno4Z1hYZ21UZ2tZMzRUQURyZjFl?= =?utf-8?B?eEpuSktQRlRvd1FOdk5HLzV3OGlwaks4VW43WWU5YUF4QTM1U3gzY2pmbnRH?= =?utf-8?B?bzBqTU51NWZnTzBSQkpoeWNDNUwra3NDT2lVd2QwTHBuV0lzQkNPeElLU0sr?= =?utf-8?B?R0pRS0VIOEcrbjA5Wko0WjIrWnNlM1pFa2RnenUxcmh2UzZOQ2o3ZUFkUE5k?= =?utf-8?B?b3ZCK2hhZ3o1aWxBSXl0VE9pSlh5ejhKUUVLa3FBMzFSRjVNQWxFdVMwMkUz?= =?utf-8?B?QS9lRzlpWkF4Nnc1bWRYelV5NTA5aFo2c1liRDJob0U5cTNIU2NxY2wycjB0?= =?utf-8?B?NzlOTVRTU3VjaVR4WmR3WTR2cGgvQ0Y1Q0xVZVVOSWwrekhjZk1mUTVqVUdZ?= =?utf-8?B?b0l2WmpqVWRNdWFaaUJ0STBhcmtNMDRIZ3Nhd3RuVnowRGk0ZnhiT2I0NlpW?= =?utf-8?B?aWhkcUhpZVVEd0d0cnZaektONzNuUitIb2tXQXducEJKSUY5NldBQ242cDh3?= =?utf-8?B?ZURPZjNFd09vVitvazFpUnVKeitEeVFyY2dnU0xLYlIrMDRCamtETXZmSW5F?= =?utf-8?B?ZnltY05sUHk3VGY3NGtneEloaS9ubHhmVGtNMXBnRUxCMDhHeHNYKy9RSzRa?= =?utf-8?B?QWdyVzFGVkRYVXJmSlVKdlBMN1k3eGpiZW1xVTlzRURLNEluejYzN0s0Q2t5?= =?utf-8?B?SldjQjlIa3dEMXZTVUZaWFFabk9OUXVuT0dGN21LdFN5NEhCbHhUeFVlQkoy?= =?utf-8?B?MkZ3NCszMThtKzVNbG9FMVdZRVZxUmFPR2U0Z3VxdzZ0T010eEJEY0VlbzdJ?= =?utf-8?B?KzV5UFBNV04xeVoxTzF2MVVQQS9sUlFkdm9VSm1qdlJ6a3U3MkJvcGlpcVNK?= =?utf-8?B?d1JxQXFjUkk5YjZ2OGxHNVZpZjlXTGc0WFc5dnNOUjJYZENwcGJoMC9Zb05R?= =?utf-8?Q?cfrXcC+fkfGdjLiXXDZpznQtD9Q58TCU458I4aO?= 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: fb1425be-e8cd-433f-cea3-08d8ece3279d X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Mar 2021 03:32:43.7039 (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: a9g6WkGlhG+zQ+eRszR9C+EEx/TWNOaxr9XuSUutm17i8dmdrq1uFzyPRmmInsNFtclfXFG3EoXby/BEAbJghQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4864 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 SGkgTWlrZSwNCg0KSSBoYXZlIGNyZWF0ZWQgYSBWNSBwYXRjaCB3aXRoIHRoZSBsaWNlbnNlIGFu ZCBoZWFkZXIgdXBkYXRlZC4gDQoNClRoYW5rcw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gU2VudDogRnJpZGF5LCBNYXJjaCAxOSwgMjAyMSAxMTozMyBQTQ0KPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IExvaCwgVGllbiBIb2NrIDx0aWVuLmhvY2subG9oQGludGVsLmNvbT47 DQo+IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6 IHRobG9oODVAZ21haWwuY29tOyBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT47IEFy ZCBCaWVzaGV1dmVsDQo+IDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPg0KPiBTdWJqZWN0OiBS RTogW2VkazItZGV2ZWxdIFtQQVRDSCBWNCAxLzFdIEVtYmVkZGVkUGtnOiBEd01tY0hjRHhlOg0K PiBBZGQgc3VwcG9ydCBmb3IgRGVzaWdud2FyZSBTRE1NQyBkcml2ZXINCj4gDQo+IEhlbGxvLA0K PiANCj4gVGhlIG1ham9yaXR5IG9mIHRoZSBFREsgSUkgZmlsZXMgdXNlIEJTRCAyLUNsYXVzZSBQ bHVzIFBhdGVudCBsaWNlbnNlIHdpdGgNCj4gU1BEWCBpZGVudGlmaWVycyBpbiB0aGUgc291cmNl IGZpbGUgaGVhZGVyczoNCj4gDQo+IAlodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIj bGljZW5zZS1kZXRhaWxzDQo+IAlodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxv Yi9tYXN0ZXIvTGljZW5zZS50eHQNCj4gCSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gDQo+IENhbiB0aGlzIGNvbnRlbnQgYmUgdXBkYXRlZCB0byB1c2Ug dGhhdCBsaWNlbnNlIGFuZCBmaWxlIGhlYWRlciBzdHlsZT8NCj4gDQo+IFRoYW5rcywNCj4gDQo+ IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBMb2gs DQo+IFRpZW4gSG9jaw0KPiA+IFNlbnQ6IEZyaWRheSwgTWFyY2ggMTksIDIwMjEgMToyMiBBTQ0K PiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBMb2gsIFRpZW4gSG9jayA8dGll bi5ob2NrLmxvaEBpbnRlbC5jb20+OyB0aGxvaDg1QGdtYWlsLmNvbTsgTGVpZg0KPiBMaW5kaG9s bSA8bGVpZkBudXZpYWluYy5jb20+OyBBcmQgQmllc2hldXZlbA0KPiA+IDxhcmRiK3RpYW5vY29y ZUBrZXJuZWwub3JnPg0KPiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjQgMS8xXSBF bWJlZGRlZFBrZzogRHdNbWNIY0R4ZTogQWRkDQo+IHN1cHBvcnQgZm9yIERlc2lnbndhcmUgU0RN TUMgZHJpdmVyDQo+ID4NCj4gPiBGcm9tOiAiVGllbiBIb2NrLCBMb2giIDx0aWVuLmhvY2subG9o QGludGVsLmNvbT4NCj4gPg0KPiA+IFRoaXMgYWRkcyBzdXBwb3J0IGZvciBEZXNpZ253YXJlIFNE TU1DIGRyaXZlci4gVGhlIFNETU1DIGRyaXZlcg0KPiBkZXBlbmRzIG9uDQo+ID4gTWRlTW9kdWxl UGtnL0J1cy9TZC8sIGFuZCBwcm9kdWNlcw0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TC4gVGhlDQo+ID4gZHJpdmVyIHVzZXMgTU1JTyB0byByZWFkL3dyaXRlLCBhbmQgdXNlcw0KPiA+ IGdFZGtpaU5vbkRpc2NvdmVyYWJsZURldmljZVByb3RvY29sR3VpZC4gUGxhdGZvcm0gbmVlZHMg dG8gcmVnaXN0ZXINCj4gZGV2aWNlDQo+ID4gd2l0aCBnRWRraWlOb25EaXNjb3ZlcmFibGVEZXZp Y2VQcm90b2NvbEd1aWQuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBMb2ggVGllbiBIb2NrIDx0 aWVuLmhvY2subG9oQGludGVsLmNvbT4NCj4gPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZp YWluYy5jb20+DQo+ID4gQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwu b3JnPg0KPiA+IC0tLQ0KPiA+ICBFbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNI Y0R4ZS5kZWMgIHwgICA0MCArDQo+ID4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9E d01tY0hjRHhlLmluZiAgfCAgIDcwICsNCj4gPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hj RHhlL0R3TW1jSGNEeGUuaCAgICB8ICA4MTcNCj4gKysrKysrKysrKw0KPiA+ICBFbWJlZGRlZFBr Zy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuaCAgICAgIHwgIDk4NQ0KPiArKysrKysrKysr KysNCj4gPiAgRW1iZWRkZWRQa2cvSW5jbHVkZS9Qcm90b2NvbC9QbGF0Zm9ybUR3TW1jLmggICB8 ICAgNzkgKw0KPiA+ICBFbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvQ29tcG9uZW50TmFt ZS5jIHwgIDIxNCArKysNCj4gPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1j SGNEeGUuYyAgICB8IDEyOTYNCj4gKysrKysrKysrKysrKysrKw0KPiA+ICBFbWJlZGRlZFBrZy9E cml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuYyAgICAgIHwgMTYwMg0KPiArKysrKysrKysrKysr KysrKysrKw0KPiA+ICBFbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRW1tY0RldmljZS5j ICAgIHwgMTA0Mg0KPiArKysrKysrKysrKysrDQo+ID4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdN bWNIY0R4ZS9TZERldmljZS5jICAgICAgfCAxMTA1DQo+ICsrKysrKysrKysrKysrDQo+ID4gIDEw IGZpbGVzIGNoYW5nZWQsIDcyNTAgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYw0KPiBiL0VtYmVk ZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYw0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5jZjg1Y2NiMWEwMzANCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1j SGNEeGUuZGVjDQo+ID4gQEAgLTAsMCArMSw0MCBAQA0KPiA+ICsjLyoqIEBmaWxlDQo+ID4gKyMg RnJhbWV3b3JrIE1vZHVsZSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBJbmR1c3RyeSBTdGFuZGFy ZHMNCj4gPiArIw0KPiA+ICsjIFRoaXMgUGFja2FnZSBwcm92aWRlcyBoZWFkZXJzIGFuZCBsaWJy YXJpZXMgdGhhdCBjb25mb3JtIHRvIEVGSS9QSQ0KPiBJbmR1c3RyeSBzdGFuZGFyZHMuDQo+ID4g KyMgQ29weXJpZ2h0IChjKSAyMDA3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQsIEFSTSBMdGQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIw0KPiA+ICsjICAgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2 YWlsYWJsZSB1bmRlcg0KPiA+ICsjICAgIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg QlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcw0KPiBkaXN0cmlidXRpb24uDQo+ID4g KyMgICAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gPiAr IyAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4g KyMNCj4gPiArIyAgICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArIyAgICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiA+ICsjDQo+ID4gKyMqKi8NCj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsg IERFQ19TUEVDSUZJQ0FUSU9OICAgICAgICAgICAgICA9IDB4MDAwMTAwMTkNCj4gPiArICBQQUNL QUdFX05BTUUgICAgICAgICAgICAgICAgICAgPSBEd01tY0hjRHhlUGtnDQo+ID4gKyAgUEFDS0FH RV9HVUlEICAgICAgICAgICAgICAgICAgID0gZTczMDk3Y2UtMWZlMi00MWE2LWE5MzAtMzEzNmJj NmQyM2VmDQo+ID4gKyAgUEFDS0FHRV9WRVJTSU9OICAgICAgICAgICAgICAgID0gMC4xDQo+ID4g Kw0KPiA+ICsNCj4gPg0KPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjDQo+ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ID4gKyMNCj4g PiArIyBJbmNsdWRlIFNlY3Rpb24gLSBsaXN0IG9mIEluY2x1ZGUgUGF0aHMgdGhhdCBhcmUgcHJv dmlkZWQgYnkgdGhpcyBwYWNrYWdlLg0KPiA+ICsjICAgICAgICAgICAgICAgICAgIENvbW1lbnRz IGFyZSB1c2VkIGZvciBLZXl3b3JkcyBhbmQgTW9kdWxlIFR5cGVzLg0KPiA+ICsjDQo+ID4gKyMg U3VwcG9ydGVkIE1vZHVsZSBUeXBlczoNCj4gPiArIyAgQkFTRSBTRUMgUEVJX0NPUkUgUEVJTSBE WEVfQ09SRSBEWEVfRFJJVkVSDQo+IERYRV9SVU5USU1FX0RSSVZFUiBEWEVfU01NX0RSSVZFUiBE WEVfU0FMX0RSSVZFUiBVRUZJX0RSSVZFUg0KPiA+IFVFRklfQVBQTElDQVRJT04NCj4gPiArIw0K PiA+DQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMNCj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPiArDQo+ID4gK1tHdWlkcy5j b21tb25dDQo+ID4gKyAgZ0R3TW1jSGNEeGVUb2tlblNwYWNlR3VpZCAgICAgPSB7IDB4NTc2YzEz MmUsIDB4N2Q1MSwgMHg0YWJiLCB7DQo+IDB4YmMsIDB4NjAsIDB4MTMsIDB4MDgsIDB4MDQsIDB4 MGUsIDB4OTAsIDB4OTIgfX0NCj4gPiArDQo+ID4gK1tQcm90b2NvbHMuY29tbW9uXQ0KPiA+ICsg IGdQbGF0Zm9ybUR3TW1jUHJvdG9jb2xHdWlkICAgID0geyAweDFkNmRmZGU1LCAweDc2YTcsIDB4 NDQwNCwgeyAweDg1LA0KPiAweDc0LCAweDdhLCAweGRmLCAweDFhLCAweDhhLCAweGEyLCAweDBk IH19DQo+ID4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01t Y0hjRHhlLmluZg0KPiBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhl LmluZg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi40 Y2QwOTYwZWY5YzMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRW1iZWRkZWRQa2cvRHJp dmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuaW5mDQo+ID4gQEAgLTAsMCArMSw3MCBAQA0KPiA+ ICsjIyBAZmlsZQ0KPiA+ICsjICBEd1NkTW1jSGNEeGUgZHJpdmVyIGlzIHVzZWQgdG8gbWFuYWdl IHRob3NlIGhvc3QgY29udHJvbGxlcnMgd2hpY2gNCj4gY29tcGx5IHdpdGgNCj4gPiArIyAgRGVz aWdud2FyZSBTRCBIb3N0IENvbnRyb2xsZXIuDQo+ID4gKyMNCj4gPiArIyAgSXQgd2lsbCBwcm9k dWNlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MIHRvIGFsbG93IHNlbmRpbmcNCj4gU0Qv TU1DL2VNTUMgY21kcw0KPiA+ICsjICB0byBzcGVjaWZpZWQgZGV2aWNlcyBmcm9tIHVwcGVyIGxh eWVyLg0KPiA+ICsjDQo+ID4gKyMgIENvcHlyaWdodCAoYykgMjAxNSwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjICBDb3B5cmlnaHQgKEMpIDIwMTYs IE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ ICsjICBDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFybyBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICsjDQo+ID4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4gKyMgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJV VEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsj ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsjDQo+ID4gKyMNCj4gPiArIyMNCj4gPiAr DQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9 IDB4MDAwMTAwMTkNCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBEd01t Y0hjRHhlDQo+ID4gKyAgTU9EVUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0gRHdNbWNIY0R4 ZS51bmkNCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA5YmU0ZDI2MC0y MDhjLTRlZmUtYTUyNC0wYjVkM2JmNzdmOWQNCj4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAg ICAgICAgICAgPSBVRUZJX0RSSVZFUg0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAg ICAgICA9IDEuMA0KPiA+ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9IEluaXRp YWxpemVEd01tY0hjRHhlDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4gPiArICBDb21wb25lbnRO YW1lLmMNCj4gPiArICBEd01tY0hjRHhlLmMNCj4gPiArICBEd01tY0hjRHhlLmgNCj4gPiArICBE d01tY0hjaS5jDQo+ID4gKyAgRHdNbWNIY2kuaA0KPiA+ICsgIEVtbWNEZXZpY2UuYw0KPiA+ICsg IFNkRGV2aWNlLmMNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBBcm1Qa2cvQXJtUGtn LmRlYw0KPiA+ICsgIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRl Yw0KPiA+ICsgIEVtYmVkZGVkUGtnL0VtYmVkZGVkUGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBr Zy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArDQo+ID4g K1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiArICBBcm1MaWINCj4gPiArICBCYXNlTGliDQo+ID4gKyAg QmFzZU1lbW9yeUxpYg0KPiA+ICsgIENhY2hlTWFpbnRlbmFuY2VMaWINCj4gPiArICBEZWJ1Z0xp Yg0KPiA+ICsgIERldmljZVBhdGhMaWINCj4gPiArICBEbWFMaWINCj4gPiArICBNZW1vcnlBbGxv Y2F0aW9uTGliDQo+ID4gKyAgVGltZXJMaWINCj4gPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVM aWINCj4gPiArICBVZWZpRHJpdmVyRW50cnlQb2ludA0KPiA+ICsgIFVlZmlMaWINCj4gPiArICBV ZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gPiArDQo+ID4gK1tQcm90b2NvbHNdDQo+ID4g KyAgZ0Vka2lpTm9uRGlzY292ZXJhYmxlRGV2aWNlUHJvdG9jb2xHdWlkDQo+ID4gKyAgZ0VmaURl dmljZVBhdGhQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICMjIFRPX1NUQVJUDQo+ID4g KyAgZ0VmaVBjaUlvUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICMjIFRPX1NU QVJUDQo+ID4gKyAgZ0VmaVNkTW1jUGFzc1RocnVQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAg ICMjIEJZX1NUQVJUDQo+ID4gKyAgZ1BsYXRmb3JtRHdNbWNQcm90b2NvbEd1aWQNCj4gPiArDQo+ ID4gK1tVc2VyRXh0ZW5zaW9ucy5UaWFub0NvcmUuIkV4dHJhRmlsZXMiXQ0KPiA+ICsgIER3TW1j SGNEeGVFeHRyYS51bmkNCj4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01t Y0hjRHhlL0R3TW1jSGNEeGUuaA0KPiBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9E d01tY0hjRHhlLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAw MDAwMC4uYjc4M2Q5ODMwMzI1DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0VtYmVkZGVk UGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmgNCj4gPiBAQCAtMCwwICsxLDgxNyBA QA0KPiA+ICsvKiogQGZpbGUNCj4gPiArDQo+ID4gKyAgUHJvdmlkZXMgc29tZSBkYXRhIHN0cnVj dHVyZSBkZWZpbml0aW9ucyB1c2VkIGJ5IHRoZSBEZXNpZ253YXJlDQo+IFNEL01NQw0KPiA+ICsg IGhvc3QgY29udHJvbGxlciBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAx NSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENv cHlyaWdodCAoQykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ3RocyByZXNlcnZlZC48QlI+DQo+ ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0KPiA+ICsgIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMNCj4g dGhpcw0KPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlIGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4g RVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVm IF9EV19NTUNfSENfRFhFX0hfDQo+ID4gKyNkZWZpbmUgX0RXX01NQ19IQ19EWEVfSF8NCj4gPiAr DQo+ID4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9V ZWZpTGliLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvQ29tcG9uZW50TmFtZS5o Pg0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvQ29tcG9uZW50TmFtZTIuaD4NCj4gPiArI2luY2x1 ZGUgPFByb3RvY29sL0RldmljZUlvLmg+DQo+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9Ecml2ZXJC aW5kaW5nLmg+DQo+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9TZE1tY1Bhc3NUaHJ1Lmg+DQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSAiRHdNbWNIY2kuaCINCj4gPiArDQo+ID4gK2V4dGVybiBFRklfQ09N UE9ORU5UX05BTUVfUFJPVE9DT0wNCj4gZ0R3TW1jSGNDb21wb25lbnROYW1lOw0KPiA+ICtleHRl cm4gRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTA0KPiBnRHdNbWNIY0NvbXBvbmVudE5hbWUy Ow0KPiA+ICtleHRlcm4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICBnRHdNbWNIY0RyaXZl ckJpbmRpbmc7DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERXX01NQ19IQ19QUklWQVRFX1NJR05BVFVS RSAgU0lHTkFUVVJFXzMyICgnZCcsICd3JywgJ3MnLA0KPiAnZCcpDQo+ID4gKw0KPiA+ICsjZGVm aW5lIERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyhhKSBcDQo+ID4gKyAgICBDUihhLCBEV19N TUNfSENfUFJJVkFURV9EQVRBLCBQYXNzVGhydSwNCj4gRFdfTU1DX0hDX1BSSVZBVEVfU0lHTkFU VVJFKQ0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gR2VuZXJpYyB0aW1lIG91dCB2YWx1ZSwgMSBt aWNyb3NlY29uZCBhcyB1bml0Lg0KPiA+ICsvLw0KPiA+ICsjZGVmaW5lIERXX01NQ19IQ19HRU5F UklDX1RJTUVPVVQgICAgICgxICogMTAwMCAqIDEwMDApDQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsv LyBTRC9NTUMgYXN5bmMgdHJhbnNmZXIgdGltZXIgaW50ZXJ2YWwsIHNldCBieSBleHBlcmllbmNl Lg0KPiA+ICsvLyBUaGUgdW5pdCBpcyAxMDB1cywgdGFrZXMgMW1zIGFzIGludGVydmFsLg0KPiA+ ICsvLw0KPiA+ICsjZGVmaW5lIERXX01NQ19IQ19BU1lOQ19USU1FUg0KPiBFRklfVElNRVJfUEVS SU9EX01JTExJU0VDT05EUygxKQ0KPiA+ICsvLw0KPiA+ICsvLyBTRC9NTUMgcmVtb3ZhYmxlIGRl dmljZSBlbnVtZXJhdGlvbiB0aW1lciBpbnRlcnZhbCwgc2V0IGJ5DQo+IGV4cGVyaWVuY2UuDQo+ ID4gKy8vIFRoZSB1bml0IGlzIDEwMHVzLCB0YWtlcyAxMDBtcyBhcyBpbnRlcnZhbC4NCj4gPiAr Ly8NCj4gPiArI2RlZmluZSBEV19NTUNfSENfRU5VTV9USU1FUg0KPiBFRklfVElNRVJfUEVSSU9E X01JTExJU0VDT05EUygxMDApDQo+ID4gKw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAg Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlOw0KPiA+ICsgIEVGSV9T RF9NTUNfU0xPVF9UWVBFICAgICAgICAgICAgICAgIFNsb3RUeXBlOw0KPiA+ICsgIEJPT0xFQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhUHJlc2VudDsNCj4gPiArICBCT09MRUFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplZDsNCj4gPiArICBTRF9NTUNf Q0FSRF9UWVBFICAgICAgICAgICAgICAgICAgICBDYXJkVHlwZTsNCj4gPiArfSBEV19NTUNfSENf U0xPVDsNCj4gPiArDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmU7DQo+ID4gKw0KPiA+ICsgIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGU7DQo+ID4gKw0KPiA+ ICsgIC8vIE1taW8gYmFzZSBhZGRyZXNzDQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRGV2QmFzZTsNCj4gPiArDQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wgICAgICAgUGFzc1RocnU7DQo+ID4gKw0KPiA+ICsgIFBMQVRGT1JNX0RXX01NQ19Q Uk9UT0NPTCAgICAgICAgICAgICpQbGF0Zm9ybUR3TW1jOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8g VGhlIGZpZWxkIGlzIHVzZWQgdG8gcmVjb3JkIHRoZSBwcmV2aW91cyBzbG90IGluIEdldE5leHRT bG90KCkuDQo+ID4gKyAgLy8NCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQcmV2aW91c1Nsb3Q7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBGb3IgTm9uLWJsb2NraW5n IG9wZXJhdGlvbi4NCj4gPiArICAvLw0KPiA+ICsgIEVGSV9FVkVOVCAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRpbWVyRXZlbnQ7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBGb3IgU2QgcmVtb3Zh YmxlIGRldmljZSBlbnVtZXJhdGlvbi4NCj4gPiArICAvLw0KPiA+ICsgIEVGSV9FVkVOVCAgICAg ICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RFdmVudDsNCj4gPiArICBMSVNUX0VOVFJZICAg ICAgICAgICAgICAgICAgICAgICAgICBRdWV1ZTsNCj4gPiArDQo+ID4gKyAgRFdfTU1DX0hDX1NM T1QgICAgICAgICAgICAgICAgICAgICAgU2xvdFtEV19NTUNfSENfTUFYX1NMT1RdOw0KPiA+ICsg IERXX01NQ19IQ19TTE9UX0NBUA0KPiBDYXBhYmlsaXR5W0RXX01NQ19IQ19NQVhfU0xPVF07DQo+ ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4Q3VycmVudFtEV19N TUNfSENfTUFYX1NMT1RdOw0KPiA+ICsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDb250cm9sbGVyVmVyc2lvbjsNCj4gPiArfSBEV19NTUNfSENfUFJJVkFURV9E QVRBOw0KPiA+ICsNCj4gPiArI2RlZmluZSBEV19NTUNfSENfVFJCX1NJRyAgICAgICAgICAgICBT SUdOQVRVUkVfMzIgKCdEJywgJ1QnLCAnUicsICdCJykNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8v IFRSQiAoVHJhbnNmZXIgUmVxdWVzdCBCbG9jaykgY29udGFpbnMgaW5mb3JtYXRpb24gZm9yIHRo ZSBjbWQgcmVxdWVzdC4NCj4gPiArLy8NCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4gPiArICBMSVNU X0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAgICBUcmJMaXN0Ow0KPiA+ICsNCj4gPiArICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90Ow0KPiA+ICsgIFVJTlQxNiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrU2l6ZTsNCj4gPiArDQo+ID4gKyAgRUZJ X1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4gPiArICBWT0lEICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YTsNCj4gPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEYXRhTGVuOw0KPiA+ICsgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJlYWQ7DQo+ID4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAg ICAgICAgICAgICAgRGF0YVBoeTsNCj4gPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqRGF0YU1hcDsNCj4gPiArICBEV19NTUNfSENfVFJBTlNGRVJfTU9ERSAgICAgICAg ICAgICBNb2RlOw0KPiA+ICsNCj4gPiArICBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAgICAg ICAgICBFdmVudDsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT dGFydGVkOw0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVv dXQ7DQo+ID4gKw0KPiA+ICsgIERXX01NQ19IQ19ETUFfREVTQ19MSU5FICAgICAgICAgICAgICpE bWFEZXNjOw0KPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICAgICAgICAgIERtYURl c2NQaHk7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG1hRGVz Y1BhZ2VzOw0KPiA+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpEbWFN YXA7DQo+ID4gKw0KPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVz ZUZpZm87DQo+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlQkU7 ICAgICAgICAgICAgICAgICAgLy8gQmlnLWVuZGlhbg0KPiA+ICsNCj4gPiArICBEV19NTUNfSENf UFJJVkFURV9EQVRBICAgICAgICAgICAgICAqUHJpdmF0ZTsNCj4gPiArfSBEV19NTUNfSENfVFJC Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBEV19NTUNfSENfVFJCX0ZST01fVEhJUyhhKSBcDQo+ID4g KyAgICBDUihhLCBEV19NTUNfSENfVFJCLCBUcmJMaXN0LCBEV19NTUNfSENfVFJCX1NJRykNCj4g PiArDQo+ID4gKy8vDQo+ID4gKy8vIFRhc2sgZm9yIE5vbi1ibG9ja2luZyBtb2RlLg0KPiA+ICsv Lw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAg ICAgICAgICAgIExpbms7DQo+ID4gKw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNsb3Q7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNL RVQgKlBhY2tldDsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ c1N0YXJ0Ow0KPiA+ICsgIEVGSV9FVkVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50 Ow0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHJ5VGltZXM7 DQo+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5maW5pdGVXYWl0 Ow0KPiA+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpNYXA7DQo+ID4g KyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKk1hcEFkZHJlc3M7DQo+ID4g K30gRFdfTU1DX0hDX1FVRVVFOw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gUHJvdG90eXBlcw0K PiA+ICsvLw0KPiA+ICsvKioNCj4gPiArICBFeGVjdXRlIGNhcmQgaWRlbnRpZmljYXRpb24gcHJv Y2VkdXJlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBpbnN0YW5jZS4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgY2FyZCBpcyBpZGVudGlmaWVkIGNvcnJl Y3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBjYXJkIGNhbid0IGJl IGlkZW50aWZpZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RB VFVTDQo+ID4gKygqRFdNTUNfQ0FSRF9UWVBFX0RFVEVDVF9ST1VUSU5FKSAoDQo+ID4gKyAgSU4g RFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAqUHJpdmF0ZQ0KPiA+ICsgICk7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kcyBTRCBjb21tYW5kIHRvIGFuIFNEIGNhcmQgdGhh dCBpcyBhdHRhY2hlZCB0byB0aGUgU0QgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgVGhlIFBh c3NUaHJ1KCkgZnVuY3Rpb24gc2VuZHMgdGhlIFNEIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IFBhY2tl dCB0bw0KPiB0aGUgU0QNCj4gPiArICBjYXJkIHNwZWNpZmllZCBieSBTbG90Lg0KPiA+ICsNCj4g PiArICBJZiBQYWNrZXQgaXMgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gdGhlIFNEIGNhcmQsIHRoZW4g RUZJX1NVQ0NFU1MgaXMNCj4gcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIGEgZGV2aWNlIGVy cm9yIG9jY3VycyB3aGlsZSBzZW5kaW5nIHRoZSBQYWNrZXQsIHRoZW4NCj4gRUZJX0RFVklDRV9F UlJPUiBpcw0KPiA+ICsgIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiBTbG90IGlzIG5vdCBp biBhIHZhbGlkIHJhbmdlIGZvciB0aGUgU0QgY29udHJvbGxlciwgdGhlbg0KPiA+ICsgIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgUGFja2V0IGRl ZmluZXMgYSBkYXRhIGNvbW1hbmQgYnV0IGJvdGggSW5EYXRhQnVmZmVyIGFuZA0KPiBPdXREYXRh QnVmZmVyIGFyZQ0KPiA+ICsgIE5VTEwsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5l ZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgVGhpcyAgICAgICAgICAgQSBwb2ludGVy IHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgIFNs b3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8uDQo+ID4gKyAg QHBhcmFtW2luLG91dF0gUGFja2V0ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBTRCBjb21tYW5k IGRhdGEgc3RydWN0dXJlLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgIEV2ZW50ICAgICAgICAgIElm IEV2ZW50IGlzIE5VTEwsIGJsb2NraW5nIEkvTyBpcyBwZXJmb3JtZWQuIElmDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQgaXMgbm90IE5VTEwsIHRoZW4gbm9uYmxv Y2tpbmcgSS9PIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9y bWVkLCBhbmQgRXZlbnQgd2lsbCBiZSBzaWduYWxlZCB3aGVuIHRoZQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2tldCBjb21wbGV0ZXMuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBTRCBDb21tYW5kIFBhY2tldCB3YXMgc2Vu dCBieSB0aGUNCj4gaG9zdC4NCj4gPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBB IGRldmljZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nDQo+IHRvIHNlbmQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29tbWFuZCBQYWNrZXQuDQo+ ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgUGFja2V0LCBTbG90LCBvciB0aGUg Y29udGVudHMgb2YgdGhlDQo+IFBhY2tldCBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg UGFja2V0IGRlZmluZXMgYSBkYXRhIGNvbW1hbmQgYnV0DQo+IGJvdGgNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbkRhdGFCdWZmZXIgYW5kIE91dERhdGFCdWZmZXIgYXJl IE5VTEwuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9fTUVESUEgICAgICAgICAgU0QgRGV2aWNlIG5v dCBwcmVzZW50IGluIHRoZSBTbG90Lg0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAg ICAgIFRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSB0aGUgU0QNCj4gQ29tbWFuZCBQYWNrZXQNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo ZSBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKyAgQHJldHZhbCBFRklfQkFEX0JVRkZFUl9TSVpFICAg VGhlIEluVHJhbnNmZXJMZW5ndGggb3INCj4gT3V0VHJhbnNmZXJMZW5ndGgNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRzIHRoZSBsaW1pdCBzdXBwb3J0ZWQgYnkg U0QgY2FyZCAoIGkuZS4gaWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aGUgbnVtYmVyIG9mIGJ5dGVzIGV4Y2VlZCB0aGUgTGFzdCBMQkEpLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jUGFzc1RocnVQYXNzVGhy dSAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgICAg KlRoaXMsDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU2xvdCwNCj4gPiArICBJTiBPVVQgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNL RVQgICAqUGFja2V0LA0KPiA+ICsgIElOICAgICBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEV2ZW50ICAgIE9QVElPTkFMDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFVzZWQgdG8gcmV0cmlldmUgbmV4dCBzbG90IG51bWJlcnMgc3VwcG9ydGVkIGJ5IHRo ZSBTRCBjb250cm9sbGVyLiBUaGUNCj4gPiArICBmdW5jdGlvbiByZXR1cm5zIGluZm9ybWF0aW9u IGFib3V0IGFsbCBhdmFpbGFibGUgc2xvdHMgKHBvcHVsYXRlZCBvcg0KPiA+ICsgIG5vdC1wb3B1 bGF0ZWQpLg0KPiA+ICsNCj4gPiArICBUaGUgR2V0TmV4dFNsb3QoKSBmdW5jdGlvbiByZXRyaWV2 ZXMgdGhlIG5leHQgc2xvdCBudW1iZXIgb24gYW4gU0QNCj4gY29udHJvbGxlci4NCj4gPiArICBJ ZiBvbiBpbnB1dCBTbG90IGlzIDB4RkYsIHRoZW4gdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBmaXJz dCBzbG90IG9uIHRoZSBTRA0KPiA+ICsgIGNvbnRyb2xsZXIgaXMgcmV0dXJuZWQuDQo+ID4gKw0K PiA+ICsgIElmIFNsb3QgaXMgYSBzbG90IG51bWJlciB0aGF0IHdhcyByZXR1cm5lZCBvbiBhIHBy ZXZpb3VzIGNhbGwgdG8NCj4gPiArICBHZXROZXh0U2xvdCgpLCB0aGVuIHRoZSBzbG90IG51bWJl ciBvZiB0aGUgbmV4dCBzbG90IG9uIHRoZSBTRCBjb250cm9sbGVyDQo+IGlzDQo+ID4gKyAgcmV0 dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgbm90IDB4RkYgYW5kIFNsb3Qgd2FzIG5v dCByZXR1cm5lZCBvbiBhIHByZXZpb3VzIGNhbGwgdG8NCj4gPiArICBHZXROZXh0U2xvdCgpLCBF RklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNsb3Qg aXMgdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBsYXN0IHNsb3Qgb24gdGhlIFNEIGNvbnRyb2xsZXIs IHRoZW4NCj4gPiArICBFRklfTk9UX0ZPVU5EIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dICAgICBUaGlzICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9N TU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbixvdXRdIFNsb3QgICAgICAgICAgIE9uIGlu cHV0LCBhIHBvaW50ZXIgdG8gYSBzbG90IG51bWJlciBvbiB0aGUgU0QNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgYSBwb2ludGVyIHRvIHRoZSBuZXh0IHNsb3QgbnVt YmVyIG9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFNEIGNvbnRy b2xsZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW4gaW5wdXQgdmFs dWUgb2YgMHhGRiByZXRyaWV2ZXMgdGhlIGZpcnN0IHNsb3QNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBudW1iZXIgb24gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBuZXh0IHNsb3QgbnVtYmVyIG9u IHRoZSBTRCBjb250cm9sbGVyDQo+IHdhcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybmVkIGluIFNsb3QuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgVGhlcmUgYXJlIG5vIG1vcmUgc2xvdHMgb24gdGhpcyBTRA0KPiBjb250cm9sbGVyLg0K PiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFNsb3QgaXMgbm90IDB4RkYgYW5k IFNsb3Qgd2FzIG5vdA0KPiByZXR1cm5lZCBvbiBhDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJldmlvdXMgY2FsbCB0byBHZXROZXh0U2xvdCgpLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jUGFzc1RocnVHZXRO ZXh0U2xvdCAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAg ICAgICAqVGhpcywNCj4gPiArICBJTiBPVVQgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpTbG90DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFVzZWQgdG8g YWxsb2NhdGUgYW5kIGJ1aWxkIGEgZGV2aWNlIHBhdGggbm9kZSBmb3IgYW4gU0QgY2FyZCBvbiB0 aGUgU0QNCj4gPiArICBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBUaGUgQnVpbGREZXZpY2VQ YXRoKCkgZnVuY3Rpb24gYWxsb2NhdGVzIGFuZCBidWlsZHMgYSBzaW5nbGUgZGV2aWNlIG5vZGUN Cj4gPiArICBmb3IgdGhlIFNEDQo+ID4gKyAgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4NCj4gPiAr DQo+ID4gKyAgSWYgdGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QgaXMgbm90IHByZXNlbnQg b24gdGhlIFNEIGNvbnRyb2xsZXIsIHRoZW4NCj4gPiArICBFRklfTk9UX0ZPVU5EIGlzIHJldHVy bmVkLg0KPiA+ICsNCj4gPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gRUZJX0lOVkFM SURfUEFSQU1FVEVSIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiB0aGVyZSBhcmUgbm90 IGVub3VnaCByZXNvdXJjZXMgdG8gYWxsb2NhdGUgdGhlIGRldmljZSBwYXRoIG5vZGUsIHRoZW4N Cj4gPiArICBFRklfT1VUX09GX1JFU09VUkNFUyBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAg T3RoZXJ3aXNlLCBEZXZpY2VQYXRoIGlzIGFsbG9jYXRlZCB3aXRoIHRoZSBib290IHNlcnZpY2Ug QWxsb2NhdGVQb29sKCksDQo+IHRoZQ0KPiA+ICsgIGNvbnRlbnRzIG9mIERldmljZVBhdGggYXJl IGluaXRpYWxpemVkIHRvIGRlc2NyaWJlIHRoZSBTRCBjYXJkIHNwZWNpZmllZCBieQ0KPiA+ICsg IFNsb3QsIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgICAgVGhpcyAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1NQ19Q QVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICAgICBTbG90ICAgICAgICAgICBTcGVjaWZpZXMg dGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIGZvcg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdoaWNoIGEgZGV2aWNlIHBhdGggbm9kZSBpcyB0byBiZSBhbGxvY2F0 ZWQgYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQuDQo+ID4g KyAgQHBhcmFtW2luLG91dF0gRGV2aWNlUGF0aCAgICAgQSBwb2ludGVyIHRvIGEgc2luZ2xlIGRl dmljZSBwYXRoIG5vZGUgdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlc2NyaWJlcyB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4gVGhpcw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBh bGxvY2F0aW5nIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZl ciBEZXZpY2VQYXRoIHdpdGggdGhlIGJvb3Qgc2VydmljZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFsbG9jYXRlUG9vbCgpLiBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9u c2liaS0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXR5IHRvIGZyZWUg RGV2aWNlUGF0aCB3aGVuIHRoZSBjYWxsZXIgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmaW5pc2hlZCB3aXRoIERldmljZVBhdGguDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBkZXZpY2UgcGF0aCBub2RlIHRoYXQgZGVzY3Jp YmVzIHRoZSBTRA0KPiBjYXJkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3BlY2lmaWVkIGJ5IFNsb3Qgd2FzIGFsbG9jYXRlZCBhbmQgcmV0dXJuZWQgaW4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoLg0KPiA+ICsgIEByZXR2YWwg RUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBTRCBjYXJkIHNwZWNpZmllZCBieSBTbG90IGRvZXMg bm90DQo+IGV4aXN0IG9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl IFNEIGNvbnRyb2xsZXIuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgRGV2 aWNlUGF0aCBpcyBOVUxMLg0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIFRo ZXJlIGFyZSBub3QgZW5vdWdoIHJlc291cmNlcyB0bw0KPiBhbGxvY2F0ZQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGguDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNQYXNzVGhydUJ1aWxkRGV2aWNl UGF0aCAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAg ICpUaGlzLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTbG90LA0KPiA+ICsgIElOIE9VVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAg ICAqKkRldmljZVBhdGgNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBm dW5jdGlvbiByZXRyaWV2ZXMgYW4gU0QgY2FyZCBzbG90IG51bWJlciBiYXNlZCBvbiB0aGUgaW5w dXQgZGV2aWNlDQo+IHBhdGguDQo+ID4gKw0KPiA+ICsgIFRoZSBHZXRTbG90TnVtYmVyKCkgZnVu Y3Rpb24gcmV0cmlldmVzIHNsb3QgbnVtYmVyIGZvciB0aGUgU0QgY2FyZA0KPiBzcGVjaWZpZWQN Cj4gPiArICBieSB0aGUgRGV2aWNlUGF0aCBub2RlLiBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsDQo+ IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcw0KPiA+ICsgIHJldHVybmVkLg0KPiA+ICsNCj4gPiAr ICBJZiBEZXZpY2VQYXRoIGlzIG5vdCBhIGRldmljZSBwYXRoIG5vZGUgdHlwZSB0aGF0IHRoZSBT RCBQYXNzIFRocnUgZHJpdmVyDQo+ID4gKyAgc3VwcG9ydHMsIEVGSV9VTlNVUFBPUlRFRCBpcyBy ZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgQSBw b2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0g IERldmljZVBhdGggICAgICAgIEEgcG9pbnRlciB0byB0aGUgZGV2aWNlIHBhdGggbm9kZSB0aGF0 DQo+IGRlc2NyaWJlcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgU0Qg Y2FyZCBvbiB0aGUgU0QgY29udHJvbGxlci4NCj4gPiArICBAcGFyYW1bb3V0XSBTbG90ICAgICAg ICAgICAgICBPbiByZXR1cm4sIHBvaW50cyB0byB0aGUgc2xvdCBudW1iZXIgb2YgYW4gU0QNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkIG9uIHRoZSBTRCBjb250cm9s bGVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTRCBjYXJk IHNsb3QgbnVtYmVyIGlzIHJldHVybmVkIGluIFNsb3QuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgU2xvdCBvciBEZXZpY2VQYXRoIGlzIE5VTEwuDQo+ID4gKyAgQHJldHZh bCBFRklfVU5TVVBQT1JURUQgICAgICAgRGV2aWNlUGF0aCBpcyBub3QgYSBkZXZpY2UgcGF0aCBu b2RlDQo+IHR5cGUgdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo ZSBTRCBQYXNzIFRocnUgZHJpdmVyIHN1cHBvcnRzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VG SV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jUGFzc1RocnVHZXRTbG90TnVtYmVyICgN Cj4gPiArICBJTiAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICAgKlRoaXMs DQo+ID4gKyAgSU4gIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAgICpEZXZp Y2VQYXRoLA0KPiA+ICsgIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqU2xvdA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXNldHMgYW4gU0Qg Y2FyZCB0aGF0IGlzIGNvbm5lY3RlZCB0byB0aGUgU0QgY29udHJvbGxlci4NCj4gPiArDQo+ID4g KyAgVGhlIFJlc2V0RGV2aWNlKCkgZnVuY3Rpb24gcmVzZXRzIHRoZSBTRCBjYXJkIHNwZWNpZmll ZCBieSBTbG90Lg0KPiA+ICsNCj4gPiArICBJZiB0aGlzIFNEIGNvbnRyb2xsZXIgZG9lcyBub3Qg c3VwcG9ydCBhIGRldmljZSByZXNldCBvcGVyYXRpb24sDQo+ID4gKyAgRUZJX1VOU1VQUE9SVEVE IGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiBTbG90IGlzIG5vdCBpbiBhIHZhbGlkIHNs b3QgbnVtYmVyIGZvciB0aGlzIFNEIGNvbnRyb2xsZXIsDQo+ID4gKyAgRUZJX0lOVkFMSURfUEFS QU1FVEVSIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiB0aGUgZGV2aWNlIHJlc2V0IG9w ZXJhdGlvbiBpcyBjb21wbGV0ZWQsIEVGSV9TVUNDRVNTIGlzIHJldHVybmVkLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAgICAg U3BlY2lmaWVzIHRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBiZQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCB3YXMg cmVzZXQuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIFNEIGNvbnRy b2xsZXIgZG9lcyBub3Qgc3VwcG9ydCBhDQo+IGRldmljZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2V0IG9wZXJhdGlvbi4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBTbG90IG51bWJlciBpcyBpbnZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJ X05PX01FRElBICAgICAgICAgIFNEIERldmljZSBub3QgcHJlc2VudCBpbiB0aGUgU2xvdC4NCj4g PiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBUaGUgcmVzZXQgY29tbWFuZCBmYWls ZWQgZHVlIHRvIGEgZGV2aWNlDQo+IGVycm9yDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNQYXNzVGhydVJlc2V0RGV2aWNlICgNCj4gPiAr ICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQo+ID4g KyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QNCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gRHJpdmVyIG1vZGVsIHByb3RvY29sIGludGVy ZmFjZXMNCj4gPiArLy8NCj4gPiArLyoqDQo+ID4gKyAgVGVzdHMgdG8gc2VlIGlmIHRoaXMgZHJp dmVyIHN1cHBvcnRzIGEgZ2l2ZW4gY29udHJvbGxlci4gSWYgYSBjaGlsZCBkZXZpY2UgaXMNCj4g PiArICBwcm92aWRlZCwgaXQgZnVydGhlciB0ZXN0cyB0byBzZWUgaWYgdGhpcyBkcml2ZXIgc3Vw cG9ydHMgY3JlYXRpbmcgYSBoYW5kbGUNCj4gPiArICBmb3IgdGhlIHNwZWNpZmllZCBjaGlsZCBk ZXZpY2UuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiB0aGUg ZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIHN1cHBvcnRzIHRoZQ0KPiA+ICsgIGRldmljZSBzcGVj aWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZS4gRHJpdmVycyB3aWxsIHR5cGljYWxseSB1c2UgdGhl IGRldmljZQ0KPiA+ICsgIHBhdGggYXR0YWNoZWQgdG8gQ29udHJvbGxlckhhbmRsZSBhbmQvb3Ig dGhlIHNlcnZpY2VzIGZyb20gdGhlIGJ1cyBJL08NCj4gPiArICBhYnN0cmFjdGlvbiBhdHRhY2hl ZCB0byBDb250cm9sbGVySGFuZGxlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyDQo+IHN1cHBv cnRzDQo+ID4gKyAgQ29udHJvbGxlckhhbmRsZS4gVGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVk IG1hbnkgdGltZXMgZHVyaW5nDQo+IHBsYXRmb3JtDQo+ID4gKyAgaW5pdGlhbGl6YXRpb24uIElu IG9yZGVyIHRvIHJlZHVjZSBib290IHRpbWVzLCB0aGUgdGVzdHMgcGVyZm9ybWVkIGJ5IHRoaXMN Cj4gPiArICBmdW5jdGlvbiBtdXN0IGJlIHZlcnkgc21hbGwsIGFuZCB0YWtlIGFzIGxpdHRsZSB0 aW1lIGFzIHBvc3NpYmxlIHRvDQo+IGV4ZWN1dGUuDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0 IG5vdCBjaGFuZ2UgdGhlIHN0YXRlIG9mIGFueSBoYXJkd2FyZSBkZXZpY2VzLCBhbmQNCj4gdGhp cw0KPiA+ICsgIGZ1bmN0aW9uIG11c3QgYmUgYXdhcmUgdGhhdCB0aGUgZGV2aWNlIHNwZWNpZmll ZCBieSBDb250cm9sbGVySGFuZGxlDQo+IG1heQ0KPiA+ICsgIGFscmVhZHkgYmUgbWFuYWdlZCBi eSB0aGUgc2FtZSBkcml2ZXIgb3IgYSBkaWZmZXJlbnQgZHJpdmVyLiBUaGlzDQo+IGZ1bmN0aW9u DQo+ID4gKyAgbXVzdCBtYXRjaCBpdHMgY2FsbHMgdG8gQWxsb2NhdGVQYWdlcygpIHdpdGggRnJl ZVBhZ2VzKCksIEFsbG9jYXRlUG9vbCgpDQo+IHdpdGgNCj4gPiArICBGcmVlUG9vbCgpLCBhbmQg T3BlblByb3RvY29sKCkgd2l0aCBDbG9zZVByb3RvY29sKCkuDQo+ID4gKyAgU2luY2UgQ29udHJv bGxlckhhbmRsZSBtYXkgaGF2ZSBiZWVuIHByZXZpb3VzbHkgc3RhcnRlZCBieSB0aGUgc2FtZQ0K PiBkcml2ZXIsIGlmDQo+ID4gKyAgYSBwcm90b2NvbCBpcyBhbHJlYWR5IGluIHRoZSBvcGVuZWQg c3RhdGUsIHRoZW4gaXQgbXVzdCBub3QgYmUgY2xvc2VkIHdpdGgNCj4gPiArICBDbG9zZVByb3Rv Y29sKCkuIFRoaXMgaXMgcmVxdWlyZWQgdG8gZ3VhcmFudGVlIHRoZSBzdGF0ZSBvZg0KPiBDb250 cm9sbGVySGFuZGxlDQo+ID4gKyAgaXMgbm90IG1vZGlmaWVkIGJ5IHRoaXMgZnVuY3Rpb24uDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0 byB0aGUNCj4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgQ29udHJv bGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byB0ZXN0LiBUaGlz DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlIG11c3Qgc3Vw cG9ydCBhIHByb3RvY29sIGludGVyZmFjZSB0aGF0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3VwcGxpZXMgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRoZSBkcml2ZXIu DQo+ID4gKyAgQHBhcmFtW2luXSAgUmVtYWluaW5nRGV2aWNlUGF0aCAgQSBwb2ludGVyIHRvIHRo ZSByZW1haW5pbmcgcG9ydGlvbiBvZg0KPiBhDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGV2aWNlIHBhdGguICBUaGlzIHBhcmFtZXRlciBpcyBpZ25vcmVkIGJ5DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGRyaXZlcnMsIGFu ZCBpcyBvcHRpb25hbCBmb3IgYnVzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHJpdmVycy4gRm9yIGJ1cyBkcml2ZXJzLCBpZiB0aGlzIHBhcmFtZXRlcg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBOVUxMLCB0aGVuIHRoZSBi dXMgZHJpdmVyIG11c3QgZGV0ZXItDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWluZSBpZiB0aGUgYnVzIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSBhbmQgdGhlIGNo aWxkIGNvbnRyb2xsZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cGVjaWZpZWQgYnkgUmVtYWluaW5nRGV2aWNlUGF0aCBhcmUgYm90aA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGlzIGJ1cyBkcml2ZXIuDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBkZXZpY2Ug c3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUNCj4gYW5kDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBzdXBwb3J0ZWQgYnkg dGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIHNwZWNp ZmllZCBieSBUaGlzLg0KPiA+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgICAgIFRo ZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+IENvbnRyb2xsZXJIYW5kbGUgYW5kDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBhbHJl YWR5IGJlaW5nIG1hbmFnZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBieSB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzLg0KPiA+ICsgIEByZXR2YWwgRUZJX0FD Q0VTU19ERU5JRUQgICAgICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+IENvbnRyb2xsZXJI YW5kbGUgYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWlu aW5nRGV2aWNlUGF0aCBpcyBhbHJlYWR5IGJlaW5nIG1hbmFnZWQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBieSBhIGRpZmZlcmVudCBkcml2ZXIgb3IgYW4gYXBwbGlj YXRpb24gdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVp cmVzIGV4Y2x1c2l2ZSBhY2Nlc3MuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNV UFBPUlRFRCAgICAgICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBieQ0KPiBDb250cm9sbGVySGFu ZGxlIGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFpbmlu Z0RldmljZVBhdGggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMuDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hjRHJpdmVyQmluZGluZ1N1 cHBvcnRlZCAoDQo+ID4gKyAgSU4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICpUaGlzLA0K PiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsg IElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAqUmVtYWluaW5nRGV2aWNlUGF0aA0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTdGFydHMgYSBkZXZpY2UgY29udHJvbGxl ciBvciBhIGJ1cyBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBUaGUgU3RhcnQoKSBmdW5jdGlv biBpcyBkZXNpZ25lZCB0byBiZSBpbnZva2VkIGZyb20gdGhlIEVGSSBib290IHNlcnZpY2UNCj4g PiArICBDb25uZWN0Q29udHJvbGxlcigpLg0KPiA+ICsgIEFzIGEgcmVzdWx0LCBtdWNoIG9mIHRo ZSBlcnJvciBjaGVja2luZyBvbiB0aGUgcGFyYW1ldGVycyB0byBTdGFydCgpIGhhcw0KPiBiZWVu DQo+ID4gKyAgbW92ZWQgaW50byB0aGlzIGNvbW1vbiBib290IHNlcnZpY2UuIEl0IGlzIGxlZ2Fs IHRvIGNhbGwgU3RhcnQoKSBmcm9tIG90aGVyDQo+ID4gKyAgbG9jYXRpb25zLA0KPiA+ICsgIGJ1 dCB0aGUgZm9sbG93aW5nIGNhbGxpbmcgcmVzdHJpY3Rpb25zIG11c3QgYmUgZm9sbG93ZWQgb3Ig dGhlIHN5c3RlbQ0KPiBiZWhhdmlvcg0KPiA+ICsgIHdpbGwgbm90IGJlIGRldGVybWluaXN0aWMu DQo+ID4gKyAgMS4gQ29udHJvbGxlckhhbmRsZSBtdXN0IGJlIGEgdmFsaWQgRUZJX0hBTkRMRS4N Cj4gPiArICAyLiBJZiBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIG5vdCBOVUxMLCB0aGVuIGl0IG11 c3QgYmUgYSBwb2ludGVyIHRvIGENCj4gbmF0dXJhbC0NCj4gPiArICAgICBseSBhbGlnbmVkIEVG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTC4NCj4gPiArICAzLiBQcmlvciB0byBjYWxsaW5nIFN0YXJ0 KCksIHRoZSBTdXBwb3J0ZWQoKSBmdW5jdGlvbiBmb3IgdGhlIGRyaXZlciBzcGVjaWZpZWQNCj4g PiArICAgICBieSBUaGlzIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGNhbGxp bmcgcGFyYW1ldGVycywgYW5kDQo+ID4gKyAgICAgU3VwcG9ydGVkKCkgbXVzdCBoYXZlIHJldHVy bmVkIEVGSV9TVUNDRVNTLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAg ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsg IEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNvbnRy b2xsZXIgdG8gc3RhcnQuDQo+IFRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoYW5kbGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wgaW50ZXJmYWNlIHRoYXQNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllcyBhbiBJL08gYWJz dHJhY3Rpb24gdG8gdGhlIGRyaXZlci4NCj4gPiArICBAcGFyYW1baW5dICBSZW1haW5pbmdEZXZp Y2VQYXRoICBBIHBvaW50ZXIgdG8gdGhlIHJlbWFpbmluZyBwb3J0aW9uIG9mDQo+IGENCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aC4gIFRoaXMgcGFy YW1ldGVyIGlzIGlnbm9yZWQgYnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZXZpY2UgZHJpdmVycywgYW5kIGlzIG9wdGlvbmFsIGZvciBidXMgZHJpLQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnMuIEZvciBhIGJ1cyBkcml2ZXIs IGlmIHRoaXMgcGFyYW1ldGVyIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwgdGhlbiBoYW5kbGVzIGZvciBhbGwgdGhlIGNoaWxkcmVuIG9mDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciBhcmUgY3JlYXRlZCBi eSB0aGlzIGRyaXZlci4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ ZiB0aGlzIHBhcmFtZXRlciBpcyBub3QgTlVMTCBhbmQgdGhlIGZpcnN0DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIFBhdGggTm9kZSBpcyBub3QgdGhlIEVu ZCBvZiBEZXZpY2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRo IE5vZGUsIHRoZW4gb25seSB0aGUgaGFuZGxlIGZvciB0aGUNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGlsZCBkZXZpY2Ugc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdCBE ZXZpY2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoIE5vZGUg b2YgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBjcmVhdGVkDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnkgdGhpcyBkcml2ZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpcnN0IERldmljZSBQYXRoIE5vZGUgb2YNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlz IHRoZSBFbmQgb2YgRGV2aWNlIFBhdGgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOb2RlLCBubyBjaGlsZCBoYW5kbGUgaXMgY3JlYXRlZCBieSB0aGlzDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBzdGFydGVkLg0K PiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgIFRoZSBkZXZpY2UgY291bGQg bm90IGJlIHN0YXJ0ZWQgZHVlIHRvIGENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXZpY2UgZXJyb3IuIEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuDQo+ID4gKyAg QHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgICAgVGhlIHJlcXVlc3QgY291bGQgbm90IGJl DQo+IGNvbXBsZXRlZCBkdWUgdG8gYQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxhY2sgb2YgcmVzb3VyY2VzLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgICAgICAgIFRoZSBkcml2ZXIgZmFpbGRlZCB0byBzdGFydCB0aGUgZGV2aWNlLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNEcml2 ZXJCaW5kaW5nU3RhcnQgKA0KPiA+ICsgIElOIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAg ICAgKlRoaXMsDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBDb250 cm9sbGVyLA0KPiA+ICsgIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgKlJlbWFp bmluZ0RldmljZVBhdGgNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU3RvcHMg YSBkZXZpY2UgY29udHJvbGxlciBvciBhIGJ1cyBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBU aGUgU3RvcCgpIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGludm9rZWQgZnJvbSB0aGUgRUZJ IGJvb3Qgc2VydmljZQ0KPiA+ICsgIERpc2Nvbm5lY3RDb250cm9sbGVyKCkuDQo+ID4gKyAgQXMg YSByZXN1bHQsIG11Y2ggb2YgdGhlIGVycm9yIGNoZWNraW5nIG9uIHRoZSBwYXJhbWV0ZXJzIHRv IFN0b3AoKSBoYXMNCj4gYmVlbg0KPiA+ICsgIG1vdmVkIGludG8gdGhpcyBjb21tb24gYm9vdCBz ZXJ2aWNlLiBJdCBpcyBsZWdhbCB0byBjYWxsIFN0b3AoKSBmcm9tIG90aGVyDQo+ID4gKyAgbG9j YXRpb25zLCBidXQgdGhlIGZvbGxvd2luZyBjYWxsaW5nIHJlc3RyaWN0aW9ucyBtdXN0IGJlIGZv bGxvd2VkIG9yIHRoZQ0KPiA+ICsgIHN5c3RlbSBiZWhhdmlvciB3aWxsIG5vdCBiZSBkZXRlcm1p bmlzdGljLg0KPiA+ICsgIDEuIENvbnRyb2xsZXJIYW5kbGUgbXVzdCBiZSBhIHZhbGlkIEVGSV9I QU5ETEUgdGhhdCB3YXMgdXNlZCBvbiBhDQo+IHByZXZpb3VzDQo+ID4gKyAgICAgY2FsbCB0byB0 aGlzIHNhbWUgZHJpdmVyJ3MgU3RhcnQoKSBmdW5jdGlvbi4NCj4gPiArICAyLiBUaGUgZmlyc3Qg TnVtYmVyT2ZDaGlsZHJlbiBoYW5kbGVzIG9mIENoaWxkSGFuZGxlQnVmZmVyIG11c3QgYWxsIGJl IGENCj4gdmFsaWQNCj4gPiArICAgICBFRklfSEFORExFLiBJbiBhZGRpdGlvbiwgYWxsIG9mIHRo ZXNlIGhhbmRsZXMgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZA0KPiBpbg0KPiA+ICsgICAgIHRoaXMg ZHJpdmVyJ3MgU3RhcnQoKSBmdW5jdGlvbiwgYW5kIHRoZSBTdGFydCgpIGZ1bmN0aW9uIG11c3Qg aGF2ZSBjYWxsZWQNCj4gPiArICAgICBPcGVuUHJvdG9jb2woKSBvbiBDb250cm9sbGVySGFuZGxl IHdpdGggYW4gQXR0cmlidXRlIG9mDQo+ID4gKyAgICAgRUZJX09QRU5fUFJPVE9DT0xfQllfQ0hJ TERfQ09OVFJPTExFUi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAg ICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1b aW5dICBDb250cm9sbGVySGFuZGxlICBBIGhhbmRsZSB0byB0aGUgZGV2aWNlIGJlaW5nIHN0b3Bw ZWQuDQo+IFRoZSBoYW5kbGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt dXN0IHN1cHBvcnQgYSBidXMgc3BlY2lmaWMgSS9PIHByb3RvY29sIGZvciB0aGUNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgdG8gdXNlIHRvIHN0b3AgdGhlIGRl dmljZS4NCj4gPiArICBAcGFyYW1baW5dICBOdW1iZXJPZkNoaWxkcmVuICBUaGUgbnVtYmVyIG9m IGNoaWxkIGRldmljZSBoYW5kbGVzIGluDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ2hpbGRIYW5kbGVCdWZmZXIuDQo+ID4gKyAgQHBhcmFtW2luXSAgQ2hpbGRIYW5kbGVC dWZmZXIgQW4gYXJyYXkgb2YgY2hpbGQgaGFuZGxlcyB0byBiZSBmcmVlZC4NCj4gTWF5IGJlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCBpZiBOdW1iZXJPZkNoaWxk cmVuIGlzIDAuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBkZXZpY2Ugd2FzIHN0b3BwZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAg ICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3RvcHBlZCBkdWUgdG8gYQ0KPiBkZXZpY2UNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hjRHJpdmVyQmluZGlu Z1N0b3AgKA0KPiA+ICsgIElOICBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgICAgICpUaGlz LA0KPiA+ICsgIElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIs DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZDaGls ZHJlbiwNCj4gPiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAqQ2hpbGRI YW5kbGVCdWZmZXINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gRUZJIENvbXBv bmVudCBOYW1lIEZ1bmN0aW9ucw0KPiA+ICsvLw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMg YSBVbmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGRy aXZlci4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHVzZXIgcmVh ZGFibGUgbmFtZSBvZiBhIGRyaXZlciBpbiB0aGUgZm9ybSBvZg0KPiBhDQo+ID4gKyAgVW5pY29k ZSBzdHJpbmcuIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaGFzIGEgdXNlciByZWFk YWJsZSBuYW1lIGluDQo+ID4gKyAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwg dGhlbiBhIHBvaW50ZXIgdG8gdGhlIGRyaXZlciBuYW1lIGlzDQo+ID4gKyAgcmV0dXJuZWQgaW4g RHJpdmVyTmFtZSwgYW5kIEVGSV9TVUNDRVNTIGlzIHJldHVybmVkLiBJZiB0aGUgZHJpdmVyDQo+ IHNwZWNpZmllZA0KPiA+ICsgIGJ5IFRoaXMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbGFuZ3VhZ2Ug c3BlY2lmaWVkIGJ5IExhbmd1YWdlLA0KPiA+ICsgIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJl dHVybmVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIFRoaXNbaW5dICAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlDQo+IEVGSV9DT01QT05FTlRfTkFNRTJfUFJPVE9DT0wgb3INCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfQ09NUE9ORU5UX05BTUVfUFJPVE9DT0wg aW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgTGFuZ3VhZ2VbaW5dICAgICAgICAgIEEg cG9pbnRlciB0byBhIE51bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcnJheSBpbmRpY2F0aW5nIHRoZSBsYW5ndWFnZS4gVGhp cyBpcyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSBv ZiB0aGUgZHJpdmVyIG5hbWUgdGhhdCB0aGUgY2FsbGVyIGlzDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVxdWVzdGluZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRo ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlcyBzcGVjaWZp ZWQgaW4gU3VwcG9ydGVkTGFuZ3VhZ2VzLiBUaGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBudW1iZXIgb2YgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBhIGRyaXZlciBpcyB1 cA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3Jp dGVyLiBMYW5ndWFnZSBpcyBzcGVjaWZpZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbiBSRkMgNDY0NiBvciBJU08gNjM5LTIgbGFuZ3VhZ2UgY29kZSBmb3JtYXQuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHJpdmVyTmFtZVtvdXRdICAgICAgIEEgcG9pbnRlciB0byB0 aGUgVW5pY29kZSBzdHJpbmcgdG8gcmV0dXJuLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRoaXMgVW5pY29kZSBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgdGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGlu IHRoZSBsYW5ndWFnZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNp ZmllZCBieSBMYW5ndWFnZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIFVuaWNvZGUgc3RyaW5nIGZvciB0aGUgRHJpdmVyIHNwZWNpZmllZCBieQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYW5kIHRoZSBsYW5ndWFnZSBz cGVjaWZpZWQgYnkgTGFuZ3VhZ2Ugd2FzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuZWQgaW4gRHJpdmVyTmFtZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgTGFuZ3VhZ2UgaXMgTlVMTC4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgRHJpdmVyTmFtZSBpcyBOVUxMLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgZHJpdmVyIHNwZWNpZmllZCBieSBU aGlzIGRvZXMgbm90DQo+IHN1cHBvcnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNDb21wb25lbnROYW1l R2V0RHJpdmVyTmFtZSAoDQo+ID4gKyAgSU4gIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAg ICAgKlRoaXMsDQo+ID4gKyAgSU4gIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxh bmd1YWdlLA0KPiA+ICsgIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICoqRHJp dmVyTmFtZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgYSBV bmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlDQo+IGNv bnRyb2xsZXINCj4gPiArICB0aGF0IGlzIGJlaW5nIG1hbmFnZWQgYnkgYSBkcml2ZXIuDQo+ID4g Kw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUg b2YgdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWVkDQo+IGJ5DQo+ID4gKyAgQ29udHJvbGxlckhhbmRs ZSBhbmQgQ2hpbGRIYW5kbGUgaW4gdGhlIGZvcm0gb2YgYSBVbmljb2RlIHN0cmluZy4gSWYgdGhl DQo+ID4gKyAgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGhhcyBhIHVzZXIgcmVhZGFibGUgbmFt ZSBpbiB0aGUgbGFuZ3VhZ2UNCj4gc3BlY2lmaWVkIGJ5DQo+ID4gKyAgTGFuZ3VhZ2UsIHRoZW4g YSBwb2ludGVyIHRvIHRoZSBjb250cm9sbGVyIG5hbWUgaXMgcmV0dXJuZWQgaW4NCj4gQ29udHJv bGxlck5hbWUsDQo+ID4gKyAgYW5kIEVGSV9TVUNDRVNTIGlzIHJldHVybmVkLiAgSWYgdGhlIGRy aXZlciBzcGVjaWZpZWQgYnkgVGhpcyBpcyBub3QNCj4gY3VycmVudGx5DQo+ID4gKyAgbWFuYWdp bmcgdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUgYW5kIENoaWxk SGFuZGxlLA0KPiA+ICsgIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLiAgSWYgdGhl IGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBkb2VzDQo+IG5vdA0KPiA+ICsgIHN1cHBvcnQgdGhl IGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwgdGhlbiBFRklfVU5TVVBQT1JURUQgaXMN Cj4gcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgVGhpc1tpbl0gICAgICAgICAgICAg IEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCBvcg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9DT01QT05FTlRfTkFNRV9QUk9U T0NPTCBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDb250cm9sbGVySGFuZGxlW2lu XSAgVGhlIGhhbmRsZSBvZiBhIGNvbnRyb2xsZXIgdGhhdCB0aGUgZHJpdmVyDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbWFuYWdpbmcu ICBUaGlzIGhhbmRsZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNp ZmllcyB0aGUgY29udHJvbGxlciB3aG9zZSBuYW1lIGlzIHRvIGJlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ2hp bGRIYW5kbGVbaW5dICAgICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNoaWxkIGNvbnRyb2xsZXIgdG8g cmV0cmlldmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmFtZSBv Zi4gIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYXkgYmUgTlVMTC4gIEl0IHdpbGwgYmUgTlVMTCBmb3IgZGV2 aWNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycy4gIEl0IHdp bGwgYWxzbyBiZSBOVUxMIGZvciBhIGJ1cyBkcml2ZXJzDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhhdCB3aXNoIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBidXMN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLiAgSXQgd2ls bCBub3QgYmUgTlVMTCBmb3IgYSBidXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkcml2ZXIgdGhhdCB3aXNoZXMgdG8gcmV0cmlldmUgdGhlIG5hbWUgb2YgYQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkIGNvbnRyb2xsZXIuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSAgTGFuZ3VhZ2VbaW5dICAgICAgICAgIEEgcG9pbnRlciB0byBhIE51bGwt dGVybWluYXRlZCBBU0NJSSBzdHJpbmcNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhcnJheSBpbmRpY2F0aW5nIHRoZSBsYW5ndWFnZS4gIFRoaXMgaXMgdGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1l IHRoYXQgdGhlIGNhbGxlciBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlcXVlc3RpbmcsIGFuZCBpdCBtdXN0IG1hdGNoIG9uZSBvZiB0aGUNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZXMgc3BlY2lmaWVkIGluIFN1cHBvcnRlZExh bmd1YWdlcy4gVGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVy IG9mIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgYSBkcml2ZXIgaXMgdXANCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZHJpdmVyIHdyaXRlci4gTGFuZ3VhZ2UgaXMg c3BlY2lmaWVkIGluDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkZDIDQ2 NDYgb3IgSVNPIDYzOS0yIGxhbmd1YWdlIGNvZGUgZm9ybWF0Lg0KPiA+ICsNCj4gPiArICBAcGFy YW0gIENvbnRyb2xsZXJOYW1lW291dF0gICBBIHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgc3RyaW5n IHRvDQo+IHJldHVybi4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlz IFVuaWNvZGUgc3RyaW5nIGlzIHRoZSBuYW1lIG9mIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUg YW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hpbGRIYW5kbGUgaW4g dGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExhbmd1YWdlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIGRyaXZlcg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBUaGlzLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgVW5pY29kZSBzdHJp bmcgZm9yIHRoZSB1c2VyIHJlYWRhYmxlDQo+IG5hbWUgaW4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlIGZvciB0 aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVk IGJ5IFRoaXMgd2FzIHJldHVybmVkIGluDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRHJpdmVyTmFtZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgQ29udHJvbGxlckhhbmRsZSBpcyBub3QgYSB2YWxpZA0KPiBFRklfSEFORExFLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBDaGlsZEhhbmRsZSBpcyBu b3QgTlVMTCBhbmQgaXQgaXMgbm90IGENCj4gdmFsaWQNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfSEFORExFLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBMYW5ndWFnZSBpcyBOVUxMLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBDb250cm9sbGVyTmFtZSBpcyBOVUxMLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgZHJpdmVyIHNwZWNpZmllZCBieSBU aGlzIGlzIG5vdA0KPiBjdXJyZW50bHkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYW5hZ2luZyB0aGUgY29udHJvbGxlciBzcGVjaWZpZWQgYnkNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlIGFuZCBDaGlsZEhhbmRsZS4N Cj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGRyaXZlciBz cGVjaWZpZWQgYnkgVGhpcyBkb2VzIG5vdA0KPiBzdXBwb3J0DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZS4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hj Q29tcG9uZW50TmFtZUdldENvbnRyb2xsZXJOYW1lICgNCj4gPiArICBJTiAgRUZJX0NPTVBPTkVO VF9OQU1FX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ICsgIElOICBFRklfSEFORExFICAg ICAgICAgICAgICAgICAgICAgIENoaWxkSGFuZGxlLCBPUFRJT05BTA0KPiA+ICsgIElOICBDSEFS OCAgICAgICAgICAgICAgICAgICAgICAgICAgICpMYW5ndWFnZSwNCj4gPiArICBPVVQgQ0hBUjE2 ICAgICAgICAgICAgICAgICAgICAgICAgICAqKkNvbnRyb2xsZXJOYW1lDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIENyZWF0ZSBhIG5ldyBUUkIgZm9yIHRoZSBTRC9NTUMgY21k IHJlcXVlc3QuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBw YXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRv IHNlbmQgdGhlDQo+IGNvbW1hbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv Lg0KPiA+ICsgIEBwYXJhbVtpbl0gUGFja2V0ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBTRCBj b21tYW5kIGRhdGEgc3RydWN0dXJlLg0KPiA+ICsgIEBwYXJhbVtpbl0gRXZlbnQgICAgICAgICAg SWYgRXZlbnQgaXMgTlVMTCwgYmxvY2tpbmcgSS9PIGlzIHBlcmZvcm1lZC4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElmIEV2ZW50IGlzIG5vdCBOVUxMLCB0aGVuIG5vbmJsb2Nr aW5nIEkvTyBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWVkLCBh bmQgRXZlbnQgd2lsbCBiZSBzaWduYWxlZCB3aGVuIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUGFja2V0IGNvbXBsZXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBDcmVh dGVkIFRyYiBvciBOVUxMLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0RXX01NQ19IQ19UUkIgKg0K PiA+ICtEd01tY0NyZWF0ZVRyYiAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAg ICAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5E X1BBQ0tFVCAqUGFja2V0LA0KPiA+ICsgIElOIEVGSV9FVkVOVCAgICAgICAgICAgICAgICAgICAg ICAgICAgIEV2ZW50DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZyZWUgdGhl IHJlc291cmNlIHVzZWQgYnkgdGhlIFRSQi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIg ICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0R3TW1jRnJlZVRyYiAoDQo+ID4gKyAgSU4g RFdfTU1DX0hDX1RSQiAgICAgICAgICAgKlRyYg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBDaGVjayBpZiB0aGUgZW52IGlzIHJlYWR5IGZvciBleGVjdXRlIHNwZWNpZmllZCBU UkIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRv IHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtp bl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFu Y2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGVudiBpcyBy ZWFkeSBmb3IgVFJCIGV4ZWN1dGlvbi4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAg IFRoZSBlbnYgaXMgbm90IHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uLg0KPiA+ICsgIEByZXR2YWwg T3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4uDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0NoZWNrVHJiRW52ICgNCj4gPiArICBJTiBEV19NTUNf SENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19NTUNfSENf VFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFdhaXQgZm9yIHRoZSBlbnYgdG8gYmUgcmVhZHkgZm9yIGV4ZWN1dGUgc3BlY2lmaWVk IFRSQi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIg dG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSBUcmIgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0 YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgZW52IGlz IHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uLg0KPiA+ICsgIEByZXR2YWwgRUZJX1RJTUVPVVQgICAg ICAgVGhlIGVudiBpcyBub3QgcmVhZHkgZm9yIFRSQiBleGVjdXRpb24gaW4gdGltZS4NCj4gPiAr ICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNvbWUgZXJyb3MgaGFwcGVuLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNXYWl0VHJiRW52ICgNCj4gPiArICBJ TiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBE V19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIEV4ZWN1dGUgdGhlIHNwZWNpZmllZCBUUkIuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJ VkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gVHJiICAgICAgICAgICAg VGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBzZW50IHRvIGhvc3QgY29udHJv bGxlciBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21l IGVycm9zIGhhcHBlbiB3aGVuIHNlbmRpbmcgdGhpcyByZXF1ZXN0IHRvDQo+IHRoZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNFeGVjVHJiICgNCj4gPiArICBJTiBEV19N TUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19NTUNf SENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIENoZWNrIHRoZSBUUkIgZXhlY3V0aW9uIHJlc3VsdC4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklW QVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBU aGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxs eS4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgIFRoZSBUUkIgaXMgbm90IGNvbXBs ZXRlZCBmb3IgZXhlY3V0aW9uLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29t ZSBlcnJvcyBoYXBwZW4gd2hlbiBleGVjdXRpbmcgdGhpcyByZXF1ZXN0Lg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNDaGVja1RyYlJlc3VsdCAoDQo+ID4gKyAg SU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAgSU4g RFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ICsgICk7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBXYWl0IGZvciB0aGUgVFJCIGV4ZWN1dGlvbiByZXN1bHQuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19N TUNfSENfUFJJVkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gVHJiICAg ICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2UuDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBleGVjdXRlZCBz dWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9z IGhhcHBlbiB3aGVuIGV4ZWN1dGluZyB0aGlzIHJlcXVlc3QuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY1dhaXRUcmJSZXN1bHQgKA0KPiA+ICsgIElOIERXX01N Q19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ICsgIElOIERXX01NQ19I Q19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgRXhlY3V0ZSBFTU1DIGRldmljZSBpZGVudGlmaWNhdGlvbiBwcm9jZWR1cmUuDQo+ ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBT ZWN0aW9uIDYuNCBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRl ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gaW5zdGFu Y2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlcmUgaXMgYSBF TU1DIGNhcmQuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGVyZSBpcyBub3Qg YSBFTU1DIGNhcmQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFbW1j SWRlbnRpZmljYXRpb24gKA0KPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAg ICAgICAgKlByaXZhdGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRXhlY3V0 ZSBFTU1DIGRldmljZSBpZGVudGlmaWNhdGlvbiBwcm9jZWR1cmUuDQo+ID4gKw0KPiA+ICsgIFJl ZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNCBmb3Ig ZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50 ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlcmUgaXMgYSBFTU1DIGNhcmQuDQo+ID4g KyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGVyZSBpcyBub3QgYSBFTU1DIGNhcmQuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTZENhcmRJZGVudGlmaWNhdGlv biAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAqUHJpdmF0 ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX0RXX01NQ19IQ19EWEVfSF8gKi8N Cj4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNp LmgNCj4gYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuaA0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4xMmVmNThhMzczNjgN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hj RHhlL0R3TW1jSGNpLmgNCj4gPiBAQCAtMCwwICsxLDk4NSBAQA0KPiA+ICsvKiogQGZpbGUNCj4g PiArDQo+ID4gKyAgUHJvdmlkZXMgc29tZSBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB1c2Vk IGJ5IHRoZSBTRC9NTUMgaG9zdA0KPiBjb250cm9sbGVyDQo+ID4gKyAgZHJpdmVyLg0KPiA+ICsN Cj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFybyBMdGQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiBhdmFpbGFi bGUNCj4gPiArICB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNl bnNlIHdoaWNoIGFjY29tcGFuaWVzDQo+IHRoaXMNCj4gPiArICBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfRFdfTU1DX0hDSV9IXw0KPiA+ICsjZGVmaW5lIF9E V19NTUNfSENJX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9DYWNoZU1haW50ZW5h bmNlTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1RpbWVyTGliLmg+DQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSA8UHJvdG9jb2wvUGxhdGZvcm1Ed01tYy5oPg0KPiA+ICsNCj4gPiArLy8NCj4g PiArLy8gU0QgSG9zdCBDb250cm9sbGVyIFNsb3RJbmZvIFJlZ2lzdGVyIE9mZnNldA0KPiA+ICsv Lw0KPiA+ICsjZGVmaW5lIERXX01NQ19IQ19TTE9UX09GRlNFVCAgICAgICAgIDB4NDANCj4gPiAr DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0hDX01BWF9TTE9UICAgICAgICAgICAgMQ0KPiA+ICsNCj4g PiArLy8NCj4gPiArLy8gU0QgSG9zdCBDb250cm9sbGVyIE1NSU8gUmVnaXN0ZXIgT2Zmc2V0DQo+ ID4gKy8vDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0NUUkwgICAgICAgICAgICAgICAgICAgMHgwMDAN Cj4gPiArI2RlZmluZSBEV19NTUNfUFdSRU4gICAgICAgICAgICAgICAgICAweDAwNA0KPiA+ICsj ZGVmaW5lIERXX01NQ19DTEtESVYgICAgICAgICAgICAgICAgIDB4MDA4DQo+ID4gKyNkZWZpbmUg RFdfTU1DX0NMS1NSQyAgICAgICAgICAgICAgICAgMHgwMGMNCj4gPiArI2RlZmluZSBEV19NTUNf Q0xLRU5BICAgICAgICAgICAgICAgICAweDAxMA0KPiA+ICsjZGVmaW5lIERXX01NQ19UTU9VVCAg ICAgICAgICAgICAgICAgIDB4MDE0DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0NUWVBFICAgICAgICAg ICAgICAgICAgMHgwMTgNCj4gPiArI2RlZmluZSBEV19NTUNfQkxLU0laICAgICAgICAgICAgICAg ICAweDAxYw0KPiA+ICsjZGVmaW5lIERXX01NQ19CWVRDTlQgICAgICAgICAgICAgICAgIDB4MDIw DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVE1BU0sgICAgICAgICAgICAgICAgMHgwMjQNCj4gPiAr I2RlZmluZSBEV19NTUNfQ01EQVJHICAgICAgICAgICAgICAgICAweDAyOA0KPiA+ICsjZGVmaW5l IERXX01NQ19DTUQgICAgICAgICAgICAgICAgICAgIDB4MDJjDQo+ID4gKyNkZWZpbmUgRFdfTU1D X1JFU1AwICAgICAgICAgICAgICAgICAgMHgwMzANCj4gPiArI2RlZmluZSBEV19NTUNfUkVTUDEg ICAgICAgICAgICAgICAgICAweDAzNA0KPiA+ICsjZGVmaW5lIERXX01NQ19SRVNQMiAgICAgICAg ICAgICAgICAgIDB4MDM4DQo+ID4gKyNkZWZpbmUgRFdfTU1DX1JFU1AzICAgICAgICAgICAgICAg ICAgMHgwM2MNCj4gPiArI2RlZmluZSBEV19NTUNfUklOVFNUUyAgICAgICAgICAgICAgICAweDA0 NA0KPiA+ICsjZGVmaW5lIERXX01NQ19TVEFUVVMgICAgICAgICAgICAgICAgIDB4MDQ4DQo+ID4g KyNkZWZpbmUgRFdfTU1DX0ZJRk9USCAgICAgICAgICAgICAgICAgMHgwNGMNCj4gPiArI2RlZmlu ZSBEV19NTUNfR1BJTyAgICAgICAgICAgICAgICAgICAweDA1OA0KPiA+ICsjZGVmaW5lIERXX01N Q19ERUJOQ0UgICAgICAgICAgICAgICAgIDB4MDY0DQo+ID4gKyNkZWZpbmUgRFdfTU1DX1VTUklE ICAgICAgICAgICAgICAgICAgMHgwNjgNCj4gPiArI2RlZmluZSBEV19NTUNfVkVSSUQgICAgICAg ICAgICAgICAgICAweDA2Yw0KPiA+ICsjZGVmaW5lIERXX01NQ19IQ09OICAgICAgICAgICAgICAg ICAgIDB4MDcwDQo+ID4gKyNkZWZpbmUgRFdfTU1DX1VIU1JFRyAgICAgICAgICAgICAgICAgMHgw NzQNCj4gPiArI2RlZmluZSBEV19NTUNfQk1PRCAgICAgICAgICAgICAgICAgICAweDA4MA0KPiA+ ICsjZGVmaW5lIERXX01NQ19EQkFERFIgICAgICAgICAgICAgICAgIDB4MDg4DQo+ID4gKyNkZWZp bmUgRFdfTU1DX0lEU1RTICAgICAgICAgICAgICAgICAgMHgwOGMNCj4gPiArI2RlZmluZSBEV19N TUNfSURJTlRFTiAgICAgICAgICAgICAgICAweDA5MA0KPiA+ICsjZGVmaW5lIERXX01NQ19EU0NB RERSICAgICAgICAgICAgICAgIDB4MDk0DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0JVRkFERFIgICAg ICAgICAgICAgICAgMHgwOTgNCj4gPiArI2RlZmluZSBEV19NTUNfQ0FSRFRIUkNUTCAgICAgICAg ICAgICAweDEwMA0KPiA+ICsjZGVmaW5lIERXX01NQ19VSFNSRUdfRVhUICAgICAgICAgICAgIDB4 MTA4DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0VOQUJMRV9TSElGVCAgICAgICAgICAgMHgxMTANCj4g PiArI2RlZmluZSBEV19NTUNfRklGT19TVEFSVCAgICAgICAgICAgICAweDIwMA0KPiA+ICsNCj4g PiArI2RlZmluZSBHRVRfSURTVFNfRE1BQ19GU00oeCkgICAgICAgICAgICAgICAgICAgKCgoeCkg Pj4gMTMpICYgMHhmKQ0KPiA+ICsjZGVmaW5lIElEU1RTX0ZTTV9ETUFfSURMRSAgICAgICAgICAg ICAgICAgICAgICAwDQo+ID4gKyNkZWZpbmUgSURTVFNfRlNNX0RNQV9TVVNQRU5EICAgICAgICAg ICAgICAgICAgIDENCj4gPiArI2RlZmluZSBJRFNUU19GU01fREVTQ19SRCAgICAgICAgICAgICAg ICAgICAgICAgMg0KPiA+ICsjZGVmaW5lIElEU1RTX0ZTTV9ERVNDX0NISyAgICAgICAgICAgICAg ICAgICAgICAzDQo+ID4gKyNkZWZpbmUgSURTVFNfRlNNX0RNQV9SRF9SRVFfV0FJVCAgICAgICAg ICAgICAgIDQNCj4gPiArI2RlZmluZSBJRFNUU19GU01fRE1BX1dSX1JFUV9XQUlUICAgICAgICAg ICAgICAgNQ0KPiA+ICsjZGVmaW5lIElEU1RTX0ZTTV9ETUFfUkQgICAgICAgICAgICAgICAgICAg ICAgICA2DQo+ID4gKyNkZWZpbmUgSURTVFNfRlNNX0RNQV9XUiAgICAgICAgICAgICAgICAgICAg ICAgIDcNCj4gPiArI2RlZmluZSBJRFNUU19GU01fREVTQ19DTE9TRSAgICAgICAgICAgICAgICAg ICAgOA0KPiA+ICsjZGVmaW5lIElEU1RTX0ZTTV9NQVNLICAgICAgICAgICAgICAgICAgICAgICAg ICAweGYNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ01EX1VQREFURV9DTEsgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4ODAyMDIwMDANCj4gPiArI2RlZmluZSBDTURfU1RBUlRfQklUICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDEgPDwgMzEpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1NQ184QklU X01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxNikNCj4gPiArI2RlZmluZSBN TUNfNEJJVF9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMCkNCj4gPiArI2Rl ZmluZSBNTUNfMUJJVF9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KPiA+ICsNCj4g PiArI2RlZmluZSBEV19NTUNfQkxPQ0tfU0laRSAgICAgICAgICAgICAgICAgICAgICAgNTEyDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIENNRF9JTkRFWF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAg ICAweDNGDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgICAgICAgICAgICAg ICAgICgxIDw8IDYpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9MT05HX1JFU1BPTlNFICAgICAgICAg ICAgICAgICAgICgxIDw8IDcpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9DSEVDS19SRVNQT05TRV9D UkMgICAgICAgICAgICAgICgxIDw8IDgpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9EQVRBX0VYUEVD VEVEICAgICAgICAgICAgICAgICAgICgxIDw8IDkpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9SRUFE ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwIDw8IDEwKQ0KPiA+ICsjZGVmaW5lIEJJVF9D TURfV1JJVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMCkNCj4gPiArI2RlZmlu ZSBCSVRfQ01EX0JMT0NLX1RSQU5TRkVSICAgICAgICAgICAgICAgICAgKDAgPDwgMTEpDQo+ID4g KyNkZWZpbmUgQklUX0NNRF9TVFJFQU1fVFJBTlNGRVIgICAgICAgICAgICAgICAgICgxIDw8IDEx KQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURfU0VORF9BVVRPX1NUT1AgICAgICAgICAgICAgICAgICAo MSA8PCAxMikNCj4gPiArI2RlZmluZSBCSVRfQ01EX1dBSVRfUFJWREFUQV9DT01QTEVURSAgICAg ICAgICAgKDEgPDwgMTMpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9TVE9QX0FCT1JUX0NNRCAgICAg ICAgICAgICAgICAgICgxIDw8IDE0KQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURfU0VORF9JTklUICAg ICAgICAgICAgICAgICAgICAgICAoMSA8PCAxNSkNCj4gPiArI2RlZmluZSBCSVRfQ01EX1VQREFU RV9DTE9DS19PTkxZICAgICAgICAgICAgICAgKDEgPDwgMjEpDQo+ID4gKyNkZWZpbmUgQklUX0NN RF9SRUFEX0NFQVRBX0RFVklDRSAgICAgICAgICAgICAgICgxIDw8IDIyKQ0KPiA+ICsjZGVmaW5l IEJJVF9DTURfQ0NTX0VYUEVDVEVEICAgICAgICAgICAgICAgICAgICAoMSA8PCAyMykNCj4gPiAr I2RlZmluZSBCSVRfQ01EX0VOQUJMRV9CT09UICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMjQp DQo+ID4gKyNkZWZpbmUgQklUX0NNRF9FWFBFQ1RfQk9PVF9BQ0sgICAgICAgICAgICAgICAgICgx IDw8IDI1KQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURfRElTQUJMRV9CT09UICAgICAgICAgICAgICAg ICAgICAoMSA8PCAyNikNCj4gPiArI2RlZmluZSBCSVRfQ01EX01BTkRBVE9SWV9CT09UICAgICAg ICAgICAgICAgICAgKDAgPDwgMjcpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9BTFRFUk5BVEVfQk9P VCAgICAgICAgICAgICAgICAgICgxIDw8IDI3KQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURfVk9MVF9T V0lUQ0ggICAgICAgICAgICAgICAgICAgICAoMSA8PCAyOCkNCj4gPiArI2RlZmluZSBCSVRfQ01E X1VTRV9IT0xEX1JFRyAgICAgICAgICAgICAgICAgICAgKDEgPDwgMjkpDQo+ID4gKyNkZWZpbmUg QklUX0NNRF9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDMxKQ0KPiA+ICsN Cj4gPiArI2RlZmluZSBDTURfSU5ERVgoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh4 KSAmIENNRF9JTkRFWF9NQVNLKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBEV19NTUNfSU5UX0VCRSAg ICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTUpICAgICAgIC8qIEVuZC1iaXQgRXJyICov DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9TQkUgICAgICAgICAgICAgICAgICAgICAgICAgICgx IDw8IDEzKSAgICAgICAvKiBTdGFydC1iaXQgIEVyciAqLw0KPiA+ICsjZGVmaW5lIERXX01NQ19J TlRfSExFICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMikgICAgICAgLyogSGFyZHdh cmUtbG9jaw0KPiBFcnIgKi8NCj4gPiArI2RlZmluZSBEV19NTUNfSU5UX0ZSVU4gICAgICAgICAg ICAgICAgICAgICAgICAgKDEgPDwgMTEpICAgICAgIC8qIEZJRk8gVU4vT1YNCj4gUlVOICovDQo+ ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9EUlQgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8 IDkpICAgICAgICAvKiBEYXRhIHRpbWVvdXQgKi8NCj4gPiArI2RlZmluZSBEV19NTUNfSU5UX1JU TyAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgOCkgICAgICAgIC8qIFJlc3BvbnNlDQo+ IHRpbWVvdXQgKi8NCj4gPiArI2RlZmluZSBEV19NTUNfSU5UX0RDUkMgICAgICAgICAgICAgICAg ICAgICAgICAgKDEgPDwgNykgICAgICAgIC8qIERhdGEgQ1JDIGVyciAqLw0KPiA+ICsjZGVmaW5l IERXX01NQ19JTlRfUkNSQyAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCA2KSAgICAgICAg LyogUmVzcG9uc2UgQ1JDDQo+IGVyciAqLw0KPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfUlhEUiAg ICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCA1KSAgICAgICAgLyogUmVjZWl2ZSBGSUZPDQo+ IGRhdGEgcmVxdWVzdCAqLw0KPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfVFhEUiAgICAgICAgICAg ICAgICAgICAgICAgICAoMSA8PCA0KSAgICAgICAgLyogVHJhbnNtaXQgRklGTw0KPiBkYXRhIHJl cXVlc3QgKi8NCj4gPiArI2RlZmluZSBEV19NTUNfSU5UX0RUTyAgICAgICAgICAgICAgICAgICAg ICAgICAgKDEgPDwgMykgICAgICAgIC8qIERhdGEgdHJhbnMgb3Zlcg0KPiAqLw0KPiA+ICsjZGVm aW5lIERXX01NQ19JTlRfQ01EX0RPTkUgICAgICAgICAgICAgICAgICAgICAoMSA8PCAyKSAgICAg ICAgLyogQ29tbWFuZA0KPiBkb25lICovDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9SRSAgICAg ICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDEpICAgICAgICAvKiBSZXNwb25zZSBlcnJvciAq Lw0KPiA+ICsNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfREVTMF9ESUMgICAgICAgICAgICAg ICAgICAgKDEgPDwgMSkNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfREVTMF9MRCAgICAgICAg ICAgICAgICAgICAgKDEgPDwgMikNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfREVTMF9GUyAg ICAgICAgICAgICAgICAgICAgKDEgPDwgMykNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfREVT MF9DSCAgICAgICAgICAgICAgICAgICAgKDEgPDwgNCkNCj4gPiArI2RlZmluZSBEV19NTUNfSURN QUNfREVTMF9FUiAgICAgICAgICAgICAgICAgICAgKDEgPDwgNSkNCj4gPiArI2RlZmluZSBEV19N TUNfSURNQUNfREVTMF9DRVMgICAgICAgICAgICAgICAgICAgKDEgPDwgMzApDQo+ID4gKyNkZWZp bmUgRFdfTU1DX0lETUFDX0RFUzBfT1dOICAgICAgICAgICAgICAgICAgICgxIDw8IDMxKQ0KPiA+ ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMxX0JTMSh4KSAgICAgICAgICAgICAgICAoKHgpICYg MHgxZmZmKQ0KPiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMyX0JTMih4KSAgICAgICAgICAg ICAgICAoKCh4KSAmIDB4MWZmZikgPDwgMTMpDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lETUFDX1NX UkVTRVQgICAgICAgICAgICAgICAgICAgICgxIDw8IDApDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lE TUFDX0ZCICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDEpDQo+ID4gKyNkZWZpbmUgRFdf TU1DX0lETUFDX0VOQUJMRSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDcpDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIERXX01NQ19DVFJMX1JFU0VUICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAw KQ0KPiA+ICsjZGVmaW5lIERXX01NQ19DVFJMX0ZJRk9fUkVTRVQgICAgICAgICAgICAgICAgICAo MSA8PCAxKQ0KPiA+ICsjZGVmaW5lIERXX01NQ19DVFJMX0RNQV9SRVNFVCAgICAgICAgICAgICAg ICAgICAoMSA8PCAyKQ0KPiA+ICsjZGVmaW5lIERXX01NQ19DVFJMX0lOVF9FTiAgICAgICAgICAg ICAgICAgICAgICAoMSA8PCA0KQ0KPiA+ICsjZGVmaW5lIERXX01NQ19DVFJMX0RNQV9FTiAgICAg ICAgICAgICAgICAgICAgICAoMSA8PCA1KQ0KPiA+ICsjZGVmaW5lIERXX01NQ19DVFJMX0lETUFD X0VOICAgICAgICAgICAgICAgICAgICAoMSA8PCAyNSkNCj4gPiArI2RlZmluZSBEV19NTUNfQ1RS TF9SRVNFVF9BTEwgICAgICAgICAgICAgICAgICAgKERXX01NQ19DVFJMX1JFU0VUIHwNCj4gRFdf TU1DX0NUUkxfRklGT19SRVNFVCB8IERXX01NQ19DVFJMX0RNQV9SRVNFVCkNCj4gPiArDQo+ID4g KyNkZWZpbmUgRFdfTU1DX1NUU19EQVRBX0JVU1kgICAgICAgICAgICAgICAgICAgICgxIDw8IDkp DQo+ID4gKyNkZWZpbmUgRFdfTU1DX1NUU19GSUZPX0NPVU5UKHgpICAgICAgICAgICAgICAgICgo KHgpICYgMHgxZmZmKSA8PCAxNykgICAvKg0KPiBOdW1iZXIgb2YgZmlsbGVkIGxvY2F0aW9ucyBp biBGSUZPICovDQo+ID4gKyNkZWZpbmUgR0VUX1NUU19GSUZPX0NPVU5UKHgpICAgICAgICAgICAg ICAgICAgICgoKHgpID4+IDE3KSAmIDB4MWZmZikNCj4gPiArI2RlZmluZSBEV19NTUNfU1RTX0ZJ Rk9fRlVMTCh4KSAgICAgICAgICAgICAgICAgKCgoeCkgPj4gMykgJiAxKQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBEV19NTUNfQk1PRF9TV1IgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMCkg ICAgICAgICAvKiBTb2Z0d2FyZQ0KPiBSZXNldCAqLw0KPiA+ICsjZGVmaW5lIERXX01NQ19CTU9E X0ZCICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxKSAgICAgICAgIC8qIEZpeCBCdXJz dCAqLw0KPiA+ICsjZGVmaW5lIERXX01NQ19CTU9EX0RFICAgICAgICAgICAgICAgICAgICAgICAg ICAoMSA8PCA3KSAgICAgICAgIC8qIElETUFDIEVuYWJsZQ0KPiAqLw0KPiA+ICsNCj4gPiArI2Rl ZmluZSBEV19NTUNfSURTVFNfVEkgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMCkgICAg ICAgICAvKiBUcmFuc21pdA0KPiBJbnRlcnJ1cHQgKi8NCj4gPiArI2RlZmluZSBEV19NTUNfSURT VFNfUkkgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMSkgICAgICAgICAvKiBSZWNlaXZl IEludGVycnVwdA0KPiAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBEV19NTUNfRklGT19UV01BUkso eCkgICAgICAgICAgICAgICAgICAgKCh4KSAmIDB4ZmZmKQ0KPiA+ICsjZGVmaW5lIERXX01NQ19G SUZPX1JXTUFSSyh4KSAgICAgICAgICAgICAgICAgICAoKCh4KSAmIDB4MWZmKSA8PCAxNikNCj4g PiArI2RlZmluZSBEV19NTUNfRE1BX0JVUlNUX1NJWkUoeCkgICAgICAgICAgICAgICAgKCgoeCkg JiAweDcpIDw8IDI4KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBEV19NTUNfQ0FSRF9SRF9USFIoeCkg ICAgICAgICAgICAgICAgICAgKCgoeCkgJiAweGZmZikgPDwgMTYpDQo+ID4gKyNkZWZpbmUgRFdf TU1DX0NBUkRfUkRfVEhSX0VOICAgICAgICAgICAgICAgICAgICgxIDw8IDApDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFVIU19ERFJfTU9ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAx NikNCj4gPiArDQo+ID4gKyNkZWZpbmUgR0VOQ0xLX0RJViAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDcNCj4gPiArDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0dQSU9fQ0xLX0RJVih4KSAgICAg ICAgICAgICAgICAgICgoKHgpICYgMHhmKSA8PCA4KQ0KPiA+ICsjZGVmaW5lIERXX01NQ19HUElP X1VTRV9TQU1QTEVfRExZKHgpICAgICAgICAgICAoKCh4KSAmIDEpIDw8IDEzKQ0KPiA+ICsjZGVm aW5lIERXX01NQ19HUElPX0NMS19FTkFCTEUgICAgICAgICAgICAgICAgICBCSVQxNg0KPiA+ICsN Cj4gPiArI2RlZmluZSBVSFNFWFRfU0FNUExFX1BIQVNFKHgpICAgICAgICAgICAgICAgICAgKCgo eCkgJiAweDFmKSA8PCAxNikNCj4gPiArI2RlZmluZSBVSFNFWFRfU0FNUExFX0RSVlBIQVNFKHgp ICAgICAgICAgICAgICAgKCgoeCkgJiAweDFmKSA8PCAyMSkNCj4gPiArI2RlZmluZSBVSFNFWFRf U0FNUExFX0RMWSh4KSAgICAgICAgICAgICAgICAgICAgKCgoeCkgJiAweDFmKSA8PCAyNikNCj4g PiArDQo+ID4gKyNkZWZpbmUgRFdNTUNfRE1BX0JVRl9TSVpFICAgICAgICAgICAgICAgICAgICAg ICg1MTIgKiA4KQ0KPiA+ICsjZGVmaW5lIERXTU1DX0ZJRk9fVEhSRVNIT0xEICAgICAgICAgICAg ICAgICAgICAxNg0KPiA+ICsNCj4gPiArI2RlZmluZSBEV01NQ19JTklUX0NMT0NLX0ZSRVEgICAg ICAgICAgICAgICAgICAgNDAwICAgICAgICAgICAgICAvKiBLSHogKi8NCj4gPiArDQo+ID4gKy8v DQo+ID4gKy8vIFRoZSB0cmFuc2ZlciBtb2RlcyBzdXBwb3J0ZWQgYnkgU0QgSG9zdCBDb250cm9s bGVyDQo+ID4gKy8vIFNpbXBsaWZpZWQgU3BlYyAzLjAgVGFibGUgMS0yDQo+ID4gKy8vDQo+ID4g K3R5cGVkZWYgZW51bSB7DQo+ID4gKyAgU2RNbWNOb0RhdGEsDQo+ID4gKyAgU2RNbWNQaW9Nb2Rl LA0KPiA+ICsgIFNkTW1jU2RtYU1vZGUsDQo+ID4gKyAgU2RNbWNBZG1hTW9kZQ0KPiA+ICt9IERX X01NQ19IQ19UUkFOU0ZFUl9NT0RFOw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gVGhlIG1heGlt dW0gZGF0YSBsZW5ndGggb2YgZWFjaCBkZXNjcmlwdG9yIGxpbmUNCj4gPiArLy8NCj4gPiArI2Rl ZmluZSBBRE1BX01BWF9EQVRBX1BFUl9MSU5FICAgICAweDEwMDAwDQo+ID4gKw0KPiA+ICt0eXBl ZGVmIHN0cnVjdCB7DQo+ID4gKyAgVUlOVDMyICAgRGVzMDsNCj4gPiArICBVSU5UMzIgICBEZXMx Ow0KPiA+ICsgIFVJTlQzMiAgIERlczI7DQo+ID4gKyAgVUlOVDMyICAgRGVzMzsNCj4gPiArfSBE V19NTUNfSENfRE1BX0RFU0NfTElORTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgU0RfTU1DX1NETUFf Qk9VTkRBUlkgICAgICAgICAgNTEyICogMTAyNA0KPiA+ICsjZGVmaW5lIFNEX01NQ19TRE1BX1JP VU5EX1VQKHgsIG4pICAgICgoKHgpICsgbikgJiB+KG4gLSAxKSkNCj4gPiArDQo+ID4gK3R5cGVk ZWYgc3RydWN0IHsNCj4gPiArICBVSU5UOCAgICBGaXJzdEJhcjozOyAgICAgICAgLy8gYml0IDA6 Mg0KPiA+ICsgIFVJTlQ4ICAgIFJlc2VydmVkOjE7ICAgICAgICAvLyBiaXQgMw0KPiA+ICsgIFVJ TlQ4ICAgIFNsb3ROdW06MzsgICAgICAgICAvLyBiaXQgNDo2DQo+ID4gKyAgVUlOVDggICAgUmVz ZXJ2ZWQxOjE7ICAgICAgIC8vIGJpdCA3DQo+ID4gK30gRFdfTU1DX0hDX1NMT1RfSU5GTzsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIER1bXAgdGhlIGNvbnRlbnQgb2YgU0QvTU1DIGhvc3QgY29u dHJvbGxlcidzIENhcGFiaWxpdHkgUmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0g IFNsb3QgICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0 aGUNCj4gY29tbWFuZCB0by4NCj4gPiArICBAcGFyYW1baW5dICBDYXBhYmlsaXR5ICAgICAgVGhl IGJ1ZmZlciB0byBzdG9yZSB0aGUgY2FwYWJpbGl0eSBkYXRhLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK1ZPSUQNCj4gPiArRHVtcENhcGFiaWxpdHlSZWcgKA0KPiA+ICsgIElOIFVJTlQ4ICAgICAg ICAgICAgICAgIFNsb3QsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgKkNhcGFiaWxp dHkNCj4gPiArICApOw0KPiA+ICsNCj4gPiArI2lmIDANCj4gPiArLyoqDQo+ID4gKyAgUmVhZCBT bG90SW5mbyByZWdpc3RlciBmcm9tIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgcGNpIGNvbmZpZyBz cGFjZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGNpSW8gICAgICAgIFRoZSBQQ0kgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW291dF0gRmlyc3RCYXIgICAgIFRoZSBi dWZmZXIgdG8gc3RvcmUgdGhlIGZpcnN0IEJBUiB2YWx1ZS4NCj4gPiArICBAcGFyYW1bb3V0XSBT bG90TnVtICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgc3VwcG9ydGVkIHNsb3QgbnVtYmVy Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgVGhlIG9wZXJhdGlvbiBz dWNjZWVkcy4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBm YWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ ICtEd01tY0hjR2V0U2xvdEluZm8gKA0KPiA+ICsgIElOICAgICBFRklfUENJX0lPX1BST1RPQ09M ICAgKlBjaUlvLA0KPiA+ICsgICAgIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgKkZpcnN0QmFy LA0KPiA+ICsgICAgIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgKlNsb3ROdW0NCj4gPiArICAp Ow0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gPiArLyoqDQo+ ID4gKyAgUmVhZC9Xcml0ZSBzcGVjaWZpZWQgU0QvTU1DIGhvc3QgY29udHJvbGxlciBtbWlvIHJl Z2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICAgUGNpSW8gICAgICAgIFRoZSBQ Q0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIEJhckluZGV4 ICAgICBUaGUgQkFSIGluZGV4IG9mIHRoZSBzdGFuZGFyZCBQQ0kNCj4gQ29uZmlndXJhdGlvbg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBhcyB0aGUg YmFzZSBhZGRyZXNzIGZvciB0aGUgbWVtb3J5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcGVyYXRpb24gdG8gcGVyZm9ybS4NCj4gPiArICBAcGFyYW1baW5dICAgICAgT2Zm c2V0ICAgICAgIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhl DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9uLg0K PiA+ICsgIEBwYXJhbVtpbl0gICAgICBSZWFkICAgICAgICAgQSBib29sZWFuIHRvIGluZGljYXRl IGl0J3MgcmVhZCBvciB3cml0ZQ0KPiBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAg IENvdW50ICAgICAgICBUaGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIDEsIDIgLCA0IG9yIDgg Ynl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdIERhdGEgICAgICAgICBGb3IgcmVhZCBvcGVy YXRpb25zLCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvDQo+IHN0b3JlDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVzdWx0cy4gRm9yIHdyaXRlIG9wZXJhdGlvbnMs IHRoZSBzb3VyY2UgYnVmZmVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 byB3cml0ZSBkYXRhIGZyb20uIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZpbmcgb3duZXJzaGlwIG9mIHRoZSBkYXRh IGJ1ZmZlciBhbmQgZW5zdXJpbmcgaXRzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplIG5vdCBsZXNzIHRoYW4gQ291bnQgYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSBQY2lJbyBvciBEYXRhIGlzIE5VTEwgb3IgdGhl IENvdW50DQo+IGlzIG5vdCB2YWxpZC4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBUaGUgcmVhZC93cml0ZSBvcGVyYXRpb24gc3VjY2VlZHMuDQo+ID4gKyAgQHJldHZhbCBP dGhlcnMgICAgICAgICAgICAgICAgVGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNS d01taW8gKA0KPiA+ICsgIElOICAgICBFRklfUENJX0lPX1BST1RPQ09MICAgKlBjaUlvLA0KPiA+ ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgQmFySW5kZXgsDQo+ID4gKyAgSU4gICAg IFVJTlQzMiAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAg ICAgICAgICAgICBSZWFkLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgQ291 bnQsDQo+ID4gKyAgSU4gT1VUIFZPSUQgICAgICAgICAgICAgICAgICAqRGF0YQ0KPiA+ICsgICk7 DQo+ID4gKyNlbHNlDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWQvV3JpdGUgc3BlY2lmaWVkIFNEL01N QyBob3N0IGNvbnRyb2xsZXIgbW1pbyByZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSAgICAgIERldklvICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gICAgICBPZmZzZXQgICAgICAgVGhlIG9mZnNldCB3aXRoaW4gdGhlIHNl bGVjdGVkIEJBUiB0byBzdGFydCB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIFJlYWQgICAgICAg ICBBIGJvb2xlYW4gdG8gaW5kaWNhdGUgaXQncyByZWFkIG9yIHdyaXRlDQo+IG9wZXJhdGlvbi4N Cj4gPiArICBAcGFyYW1baW5dICAgICAgQ291bnQgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1p byByZWdpc3RlciBpbiBieXRlcy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE11c3QgYmUgMSwgMiAsIDQgb3IgOCBieXRlcy4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gRGF0 YSAgICAgICAgIEZvciByZWFkIG9wZXJhdGlvbnMsIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8N Cj4gc3RvcmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHRz LiBGb3Igd3JpdGUgb3BlcmF0aW9ucywgdGhlIHNvdXJjZSBidWZmZXINCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvIHdyaXRlIGRhdGEgZnJvbS4gVGhlIGNhbGxlciBpcyBy ZXNwb25zaWJsZSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmlu ZyBvd25lcnNoaXAgb2YgdGhlIGRhdGEgYnVmZmVyIGFuZCBlbnN1cmluZyBpdHMNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgbm90IGxlc3MgdGhhbiBDb3VudCBieXRl cy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIFBjaUlv IG9yIERhdGEgaXMgTlVMTCBvciB0aGUgQ291bnQNCj4gaXMgbm90IHZhbGlkLg0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSByZWFkL3dyaXRlIG9wZXJhdGlvbiBzdWNj ZWVkcy4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICBUaGUgcmVhZC93cml0 ZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtFRklBUEkNCj4gPiArRHdNbWNIY1J3TW1pbyAoDQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAg ICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gICAgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICBPZmZzZXQsDQo+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICBSZWFk LA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgQ291bnQsDQo+ID4gKyAg SU4gT1VUIFZPSUQgICAgICAgICAgICAgICAgICAgICAqRGF0YQ0KPiA+ICsgICk7DQo+ID4gKyNl bmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ICsvKioNCj4gPiArICBEbyBP UiBvcGVyYXRpb24gd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBTRC9NTUMgaG9zdCBj b250cm9sbGVyDQo+IG1taW8gcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGNp SW8gICAgICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFy YW1baW5dIEJhckluZGV4ICAgICAgICAgIFRoZSBCQVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBD SQ0KPiBDb25maWd1cmF0aW9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo ZWFkZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGFkZHJlc3MgZm9yIHRoZSBtZW1vcnkNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiB0byBwZXJmb3JtLg0KPiA+ICsg IEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgICAgVGhlIG9mZnNldCB3aXRoaW4gdGhlIHNlbGVj dGVkIEJBUiB0byBzdGFydCB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1lbW9yeSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAgICAgICAgICBU aGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIDEsIDIgLCA0IG9yIDggYnl0ZXMuDQo+ID4gKyAg QHBhcmFtW2luXSBPckRhdGEgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0YSB1c2Vk IHRvIGRvIE9SDQo+IG9wZXJhdGlvbi4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGhhdmluZyBvd25lcnNoaXAgb2YNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZlciBhbmQgZW5z dXJpbmcgaXRzIHNpemUgbm90IGxlc3MgdGhhbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ291bnQgYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSIFRoZSBQY2lJbyBvciBPckRhdGEgaXMgTlVMTCBvciB0aGUNCj4gQ291bnQgaXMg bm90IHZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBPUiBv cGVyYXRpb24gc3VjY2VlZHMuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAg VGhlIE9SIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hjT3JNbWlvICgNCj4gPiArICBJTiAgRUZJX1BDSV9J T19QUk9UT0NPTCAgICAgICpQY2lJbywNCj4gPiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAg ICAgIEJhckluZGV4LA0KPiA+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgT2Zmc2V0 LA0KPiA+ICsgIElOICBVSU5UOCAgICAgICAgICAgICAgICAgICAgQ291bnQsDQo+ID4gKyAgSU4g IFZPSUQgICAgICAgICAgICAgICAgICAgICAqT3JEYXRhDQo+ID4gKyAgKTsNCj4gPiArI2Vsc2UN Cj4gPiArLyoqDQo+ID4gKyAgRG8gT1Igb3BlcmF0aW9uIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBz cGVjaWZpZWQgU0QvTU1DIGhvc3QgY29udHJvbGxlcg0KPiBtbWlvIHJlZ2lzdGVyLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9j b2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBCYXJJbmRleCAgICAgICAgICBUaGUgQkFS IGluZGV4IG9mIHRoZSBzdGFuZGFyZCBQQ0kNCj4gQ29uZmlndXJhdGlvbg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBhZGRyZXNz IGZvciB0aGUgbWVtb3J5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVy YXRpb24gdG8gcGVyZm9ybS4NCj4gPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAgICAgIFRo ZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJh bVtpbl0gQ291bnQgICAgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGlu IGJ5dGVzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAxLCAy ICwgNCBvciA4IGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtpbl0gT3JEYXRhICAgICAgICAgICAgVGhl IHBvaW50ZXIgdG8gdGhlIGRhdGEgdXNlZCB0byBkbyBPUg0KPiBvcGVyYXRpb24uDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv ciBoYXZpbmcgb3duZXJzaGlwIG9mDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGUgZGF0YSBidWZmZXIgYW5kIGVuc3VyaW5nIGl0cyBzaXplIG5vdCBsZXNzIHRoYW4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50IGJ5dGVzLg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgUGNpSW8gb3IgT3JEYXRhIGlz IE5VTEwgb3IgdGhlDQo+IENvdW50IGlzIG5vdCB2YWxpZC4NCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgT1Igb3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiA+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSBPUiBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNIY09yTW1p byAoDQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4g KyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ID4gKyAgSU4gIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPiArICBJTiAgVk9JRCAgICAgICAgICAgICAg ICAgICAgICpPckRhdGENCj4gPiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRl ZiBEV01NQ19QQ0kNCj4gPiArLyoqDQo+ID4gKyAgRG8gQU5EIG9wZXJhdGlvbiB3aXRoIHRoZSB2 YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0DQo+IGNvbnRyb2xsZXIgbW1pbyByZWdp c3Rlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICAgICBUaGUgUENJ IElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gQmFySW5kZXggICAgICAg ICAgVGhlIEJBUiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJDQo+IENvbmZpZ3VyYXRpb24NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciB0byB1c2UgYXMgdGhlIGJh c2UgYWRkcmVzcyBmb3IgdGhlIG1lbW9yeQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3BlcmF0aW9uIHRvIHBlcmZvcm0uDQo+ID4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAg ICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IG9wZXJhdGlvbi4NCj4g PiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1pbyBy ZWdpc3RlciBpbiBieXRlcy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11 c3QgYmUgMSwgMiAsIDQgb3IgOCBieXRlcy4NCj4gPiArICBAcGFyYW1baW5dIEFuZERhdGEgICAg ICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIHVzZWQgdG8gZG8gQU5EDQo+IG9wZXJhdGlv bi4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjYWxsZXIgaXMgcmVz cG9uc2libGUgZm9yIGhhdmluZyBvd25lcnNoaXAgb2YNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZlciBhbmQgZW5zdXJpbmcgaXRzIHNpemUgbm90IGxl c3MgdGhhbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnQgYnl0ZXMu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSBQY2lJbyBv ciBBbmREYXRhIGlzIE5VTEwgb3IgdGhlDQo+IENvdW50IGlzIG5vdCB2YWxpZC4NCj4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgQU5EIG9wZXJhdGlvbiBzdWNjZWVkcy4N Cj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICBUaGUgQU5EIG9wZXJhdGlvbiBm YWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ ICtEd01tY0hjQW5kTW1pbyAoDQo+ID4gKyAgSU4gIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgICAq UGNpSW8sDQo+ID4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBCYXJJbmRleCwNCj4g PiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIE9mZnNldCwNCj4gPiArICBJTiAgVUlO VDggICAgICAgICAgICAgICAgICAgIENvdW50LA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgICAg ICAgICAgICAgKkFuZERhdGENCj4gPiArICApOw0KPiA+ICsjZWxzZQ0KPiA+ICsvKioNCj4gPiAr ICBEbyBBTkQgb3BlcmF0aW9uIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgU0QvTU1D IGhvc3QNCj4gY29udHJvbGxlciBtbWlvIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW5dIERldklvICAgICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ ID4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUg c2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWVtb3J5IG9wZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAg ICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1pbyByZWdpc3RlciBpbiBieXRlcy4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiAsIDQgb3IgOCBieXRlcy4NCj4g PiArICBAcGFyYW1baW5dIEFuZERhdGEgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRh IHVzZWQgdG8gZG8gQU5EDQo+IG9wZXJhdGlvbi4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGhhdmluZyBvd25lcnNoaXAg b2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZlciBh bmQgZW5zdXJpbmcgaXRzIHNpemUgbm90IGxlc3MgdGhhbg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ291bnQgYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIFRoZSBQY2lJbyBvciBBbmREYXRhIGlzIE5VTEwgb3IgdGhlDQo+IENv dW50IGlzIG5vdCB2YWxpZC4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgQU5EIG9wZXJhdGlvbiBzdWNjZWVkcy4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAg ICAgICAgICBUaGUgQU5EIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hjQW5kTW1pbyAoDQo+ID4gKyAgSU4g IFVJTlROICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ICsgIElOICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgQ291bnQsDQo+ID4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAqQW5kRGF0YQ0K PiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ ICsvKioNCj4gPiArICBXYWl0IGZvciB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBNTUlPIHJl Z2lzdGVyIHNldCB0byB0aGUgdGVzdCB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAg UGNpSW8gICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJh bVtpbl0gIEJhckluZGV4ICAgICAgVGhlIEJBUiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJDQo+ IENvbmZpZ3VyYXRpb24NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciB0 byB1c2UgYXMgdGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIG1lbW9yeQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uIHRvIHBlcmZvcm0uDQo+ID4gKyAgQHBhcmFtW2lu XSAgT2Zmc2V0ICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0 YXJ0IHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IG9wZXJhdGlv bi4NCj4gPiArICBAcGFyYW1baW5dICBDb3VudCAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1p byByZWdpc3RlciBpbiBieXRlcy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11 c3QgYmUgMSwgMiwgNCBvciA4IGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtpbl0gIE1hc2tWYWx1ZSAg ICAgVGhlIG1hc2sgdmFsdWUgb2YgbWVtb3J5Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFRlc3RWYWx1 ZSAgICAgVGhlIHRlc3QgdmFsdWUgb2YgbWVtb3J5Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFRpbWVv dXQgICAgICAgVGhlIHRpbWUgb3V0IHZhbHVlIGZvciB3YWl0IG1lbW9yeSBzZXQsIHVzZXMgMQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQgYXMgYSB1bml0Lg0K PiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgIFRoZSBNTUlPIHJlZ2lzdGVy IGhhc24ndCBleHBlY3RlZCB2YWx1ZSBpbg0KPiB0aW1lb3V0DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByYW5nZS4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBNTUlPIHJlZ2lzdGVyIGhhcyBleHBlY3RlZCB2YWx1ZS4NCj4gPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZSBNTUlPIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hjV2FpdE1taW9TZXQgKA0K PiA+ICsgIElOICBFRklfUENJX0lPX1BST1RPQ09MICAgICAgICpQY2lJbywNCj4gPiArICBJTiAg VUlOVDggICAgICAgICAgICAgICAgICAgICBCYXJJbmRleCwNCj4gPiArICBJTiAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ID4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgQ291bnQsDQo+ID4gKyAgSU4gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgTWFza1Zh bHVlLA0KPiA+ICsgIElOICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFRlc3RWYWx1ZSwNCj4g PiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBUaW1lb3V0DQo+ID4gKyAgKTsNCj4g PiArI2Vsc2UNCj4gPiArLyoqDQo+ID4gKyAgV2FpdCBmb3IgdGhlIHZhbHVlIG9mIHRoZSBzcGVj aWZpZWQgTU1JTyByZWdpc3RlciBzZXQgdG8gdGhlIHRlc3QgdmFsdWUuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gIERldklvICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5j ZS4NCj4gPiArICBAcGFyYW1baW5dICBPZmZzZXQgICAgICAgIFRoZSBvZmZzZXQgd2l0aGluIHRo ZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtZW1vcnkgb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gIENvdW50ICAgICAgICAg VGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5dGVzLg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTXVzdCBiZSAxLCAyLCA0IG9yIDggYnl0ZXMuDQo+ID4gKyAgQHBh cmFtW2luXSAgTWFza1ZhbHVlICAgICBUaGUgbWFzayB2YWx1ZSBvZiBtZW1vcnkuDQo+ID4gKyAg QHBhcmFtW2luXSAgVGVzdFZhbHVlICAgICBUaGUgdGVzdCB2YWx1ZSBvZiBtZW1vcnkuDQo+ID4g KyAgQHBhcmFtW2luXSAgVGltZW91dCAgICAgICBUaGUgdGltZSBvdXQgdmFsdWUgZm9yIHdhaXQg bWVtb3J5IHNldCwgdXNlcyAxDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNy b3NlY29uZCBhcyBhIHVuaXQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1RJTUVPVVQgICAg ICAgVGhlIE1NSU8gcmVnaXN0ZXIgaGFzbid0IGV4cGVjdGVkIHZhbHVlIGluDQo+IHRpbWVvdXQN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLg0KPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgVGhlIE1NSU8gcmVnaXN0ZXIgaGFzIGV4cGVjdGVkIHZhbHVlLg0K PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIE1NSU8gb3BlcmF0aW9uIGZhaWxz Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3 TW1jSGNXYWl0TW1pb1NldCAoDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBE ZXZCYXNlLA0KPiA+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIE9mZnNldCwNCj4g PiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPiArICBJTiAgVUlO VDY0ICAgICAgICAgICAgICAgICAgICBNYXNrVmFsdWUsDQo+ID4gKyAgSU4gIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgVGVzdFZhbHVlLA0KPiA+ICsgIElOICBVSU5UNjQgICAgICAgICAgICAg ICAgICAgIFRpbWVvdXQNCj4gPiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRl ZiBEV01NQ19QQ0kNCj4gPiArLyoqDQo+ID4gKyAgU29mdHdhcmUgcmVzZXQgdGhlIHNwZWNpZmll ZCBTRC9NTUMgaG9zdCBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlv ICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2lu XSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0 aGUNCj4gY29tbWFuZCB0by4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgc29mdHdhcmUgcmVzZXQgZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHNvZnR3YXJlIHJlc2V0IGZhaWxzLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY1Jlc2V0ICgNCj4gPiArZmFyaw0K PiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ICsgIElOIFVJTlQ4 ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAg IENhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZWxzZQ0KPiA+ICsvKioNCj4gPiArICBTb2Z0 d2FyZSByZXNldCB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBp bnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgc29m dHdhcmUgcmVzZXQgZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJz ICAgICAgICAgICAgVGhlIHNvZnR3YXJlIHJlc2V0IGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY1Jlc2V0ICgNCj4gPiArICBJTiBVSU5UTiAgICAg ICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAg IENhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRlZiBE V01NQ19QQ0kNCj4gPiArLyoqDQo+ID4gKyAgU2V0IGFsbCBpbnRlcnJ1cHQgc3RhdHVzIGJpdHMg aW4gTm9ybWFsIGFuZCBFcnJvciBJbnRlcnJ1cHQgU3RhdHVzIEVuYWJsZQ0KPiA+ICsgIHJlZ2lz dGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIFRoZSBQQ0kgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUg c2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29tbWFuZCB0by4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGV4ZWN1 dGVzIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBv cGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtE d01tY0hjRW5hYmxlSW50ZXJydXB0ICgNCj4gPiArICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAg ICpQY2lJbywNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QNCj4gPiArICAp Ow0KPiA+ICsjZWxzZQ0KPiA+ICsvKioNCj4gPiArICBTZXQgYWxsIGludGVycnVwdCBzdGF0dXMg Yml0cyBpbiBOb3JtYWwgYW5kIEVycm9yIEludGVycnVwdCBTdGF0dXMgRW5hYmxlDQo+ID4gKyAg cmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERF VklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAg ICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5k IHRvLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRp b24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0R3TW1jSGNFbmFibGVJbnRlcnJ1cHQgKA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgRGV2QmFzZQ0KPiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiAr I2lmZGVmIERXTU1DX1BDSQ0KPiA+ICsvKioNCj4gPiArICBHZXQgdGhlIGNhcGFiaWxpdHkgZGF0 YSBmcm9tIHRoZSBzcGVjaWZpZWQgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGNp SW8gICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSAgU2xvdCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBz ZW5kIHRoZQ0KPiBjb21tYW5kIHRvLg0KPiA+ICsgIEBwYXJhbVtvdXRdIENhcGFiaWxpdHkgICAg ICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBjYXBhYmlsaXR5IGRhdGEuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICBUaGUgb3BlcmF0aW9uIGV4ZWN1dGVzIHN1Y2Nl c3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgVGhlIG9wZXJhdGlv biBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNH ZXRDYXBhYmlsaXR5ICgNCj4gPiArICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgKlBjaUlv LA0KPiA+ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsg IElOICAgICBVSU5UOCAgICAgICAgICAgICAgICBTbG90LA0KPiA+ICsgICAgIE9VVCBEV19NTUNf SENfU0xPVF9DQVAgICAqQ2FwYWJpbGl0eQ0KPiA+ICsgICk7DQo+ID4gKyNlbHNlDQo+ID4gKy8q Kg0KPiA+ICsgIEdldCB0aGUgY2FwYWJpbGl0eSBkYXRhIGZyb20gdGhlIHNwZWNpZmllZCBzbG90 Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBEZXZJbyAgICAgICAgICAgVGhlIERFVklDRSBJ TyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAgICAgICAg VGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1hbmQgdG8u DQo+ID4gKyAgQHBhcmFtW291dF0gQ2FwYWJpbGl0eSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUg dGhlIGNhcGFiaWxpdHkgZGF0YS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgIFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0dldENhcGFiaWxpdHkgKA0KPiA+ICsg IElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiAgICAgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiArICBJTiAgICAgVUlOVDggICAg ICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICAgICBPVVQgRFdfTU1DX0hDX1NMT1RfQ0FQICAg ICAgKkNhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZiAw DQo+ID4gKy8qKg0KPiA+ICsgIEdldCB0aGUgbWF4aW11bSBjdXJyZW50IGNhcGFiaWxpdHkgZGF0 YSBmcm9tIHRoZSBzcGVjaWZpZWQgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGNp SW8gICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSAgU2xvdCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBz ZW5kIHRoZQ0KPiBjb21tYW5kIHRvLg0KPiA+ICsgIEBwYXJhbVtvdXRdIE1heEN1cnJlbnQgICAg ICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBtYXhpbXVtIGN1cnJlbnQNCj4gY2FwYWJpbGl0eSBk YXRhLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgVGhlIG9wZXJh dGlvbiBleGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtEd01tY0hjR2V0TWF4Q3VycmVudCAoDQo+ID4gKyAgSU4gICAgIEVGSV9QQ0lf SU9fUFJPVE9DT0wgICpQY2lJbywNCj4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAg U2xvdCwNCj4gPiArICAgICBPVVQgVUlOVDY0ICAgICAgICAgICAgICAgKk1heEN1cnJlbnQNCj4g PiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gPiAr LyoqDQo+ID4gKyAgRGV0ZWN0IHdoZXRoZXIgdGhlcmUgaXMgYSBTRC9NTUMgY2FyZCBhdHRhY2hl ZCBhdCB0aGUgc3BlY2lmaWVkDQo+IFNEL01NQyBob3N0IGNvbnRyb2xsZXINCj4gPiArICBzbG90 Lg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBz cGVjIDMuMCBTZWN0aW9uIDMuMSBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSAgUGNpSW8gICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBw YXJhbVtpbl0gIFNsb3QgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRv IHNlbmQgdGhlDQo+IGNvbW1hbmQgdG8uDQo+ID4gKyAgQHBhcmFtW291dF0gTWVkaWFQcmVzZW50 ICBUaGUgcG9pbnRlciB0byB0aGUgbWVkaWEgcHJlc2VudCBib29sZWFuDQo+IHZhbHVlLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZXJlIGlzIG5vIG1lZGlhIGNo YW5nZSBoYXBwZW5lZC4NCj4gPiArICBAcmV0dmFsIEVGSV9NRURJQV9DSEFOR0VEIFRoZXJlIGlz IG1lZGlhIGNoYW5nZSBoYXBwZW5lZC4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAg IFRoZSBkZXRlY3Rpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtEd01tY0hjQ2FyZERldGVjdCAoDQo+ID4gKyAgSU4gICAgIEVGSV9QQ0lfSU9fUFJPVE9D T0wgICpQY2lJbywNCj4gPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgQ29udHJvbGxl ciwNCj4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICAgICBP VVQgQk9PTEVBTiAgICAgICAgICAgICAgKk1lZGlhUHJlc2VudA0KPiA+ICsgICk7DQo+ID4gKyNl bHNlDQo+ID4gKy8qKg0KPiA+ICsgIERldGVjdCB3aGV0aGVyIHRoZXJlIGlzIGEgU0QvTU1DIGNh cmQgYXR0YWNoZWQgYXQgdGhlIHNwZWNpZmllZA0KPiBTRC9NTUMgaG9zdCBjb250cm9sbGVyDQo+ ID4gKyAgc2xvdC4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNp bXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjEgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gIERldklvICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5j ZS4NCj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0 aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRvLg0KPiA+ICsgIEBwYXJhbVtvdXRd IE1lZGlhUHJlc2VudCAgVGhlIHBvaW50ZXIgdG8gdGhlIG1lZGlhIHByZXNlbnQgYm9vbGVhbg0K PiB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGVyZSBp cyBubyBtZWRpYSBjaGFuZ2UgaGFwcGVuZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfTUVESUFfQ0hB TkdFRCBUaGVyZSBpcyBtZWRpYSBjaGFuZ2UgaGFwcGVuZWQuDQo+ID4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICBUaGUgZGV0ZWN0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0NhcmREZXRlY3QgKA0KPiA+ICsgIElOICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOICAgICBFRklfSEFORExFICAg ICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAg ICAgICBTbG90LA0KPiA+ICsgICAgIE9VVCBCT09MRUFOICAgICAgICAgICAgICAgICAqTWVkaWFQ cmVzZW50DQo+ID4gKyAgKTsNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaWZkZWYgRFdNTUNf UENJDQo+ID4gKy8qKg0KPiA+ICsgIFN0b3AgU0QvTU1DIGNhcmQgY2xvY2suDQo+ID4gKw0KPiA+ ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rp b24gMy4yLjIgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAg ICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFNs b3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0K PiBjb21tYW5kIHRvLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFN1 Y2NlZWQgdG8gc3RvcCBTRC9NTUMgY2xvY2suDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICBGYWlsIHRvIHN0b3AgU0QvTU1DIGNsb2NrLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VG SV9TVEFUVVMNCj4gPiArRHdNbWNIY1N0b3BDbG9jayAoDQo+ID4gKyAgSU4gRUZJX1BDSV9JT19Q Uk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBTbG90 DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNEL01NQyBjYXJkIGNsb2NrIHN1 cHBseS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZp ZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjIuMSBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luXSBQY2lJbyAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBj YXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1hbmQgdG8uDQo+ID4gKyAgQHBhcmFtW2luXSBDbG9ja0Zy ZXEgICAgICBUaGUgbWF4IGNsb2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQuIFRoZSB1bml0IGlzDQo+ IEtIei4NCj4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9m IHRoZSBzbG90Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBj bG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICBUaGUgY2xvY2sgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0Nsb2NrU3VwcGx5ICgNCj4gPiAr ICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAgICpQY2lJbywNCj4gPiArICBJTiBVSU5UOCAgICAg ICAgICAgICAgICAgIFNsb3QsDQo+ID4gKyAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICBDbG9j a0ZyZXEsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ID4g KyAgKTsNCj4gPiArI2Vsc2UNCj4gPiArLyoqDQo+ID4gKyAgU3RvcCBTRC9NTUMgY2FyZCBjbG9j ay4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQg c3BlYyAzLjAgU2VjdGlvbiAzLjIuMiBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFN1Y2NlZWQgdG8gc3RvcCBTRC9N TUMgY2xvY2suDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBGYWlsIHRvIHN0b3Ag U0QvTU1DIGNsb2NrLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdN bWNIY1N0b3BDbG9jayAoDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBEZXZC YXNlDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNEL01NQyBjYXJkIGNsb2Nr IHN1cHBseS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBs aWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjIuMSBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNl Lg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2xvY2tGcmVxICAgICAgVGhlIG1heCBjbG9jayBmcmVxdWVu Y3kgdG8gYmUgc2V0LiBUaGUgdW5pdCBpcw0KPiBLSHouDQo+ID4gKyAgQHBhcmFtW2luXSBDYXBh YmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5 Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2NrIGlzbid0IHN1cHBs aWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4g K0R3TW1jSGNDbG9ja1N1cHBseSAoDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAg ICBEZXZCYXNlLA0KPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxLA0K PiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiA+ICsgICk7DQo+ ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmIDANCj4gPiArLyoqDQo+ID4gKyAgU0QvTU1DIGJ1 cyBwb3dlciBjb250cm9sLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xs ZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuMyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3Rh bmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9m IHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1hbmQgdG8uDQo+ID4gKyAgQHBhcmFtW2lu XSBQb3dlckN0cmwgICAgICBUaGUgdmFsdWUgc2V0dGluZyB0byB0aGUgcG93ZXIgY29udHJvbCBy ZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgICAgICBUaGVyZSBp cyBhIFNEL01NQyBjYXJkIGF0dGFjaGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICAg ICAgVGhlcmUgaXMgbm8gYSBTRC9NTUMgY2FyZCBhdHRhY2hlZC4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNQb3dlckNvbnRyb2wgKA0KPiA+ICsgIElOIEVG SV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgU2xvdCwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFBvd2VyQ3RybA0K PiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ ICsvKioNCj4gPiArICBTZXQgdGhlIFNEL01NQyBidXMgd2lkdGguDQo+ID4gKw0KPiA+ICsgIFJl ZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy40 IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIFRo ZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAg ICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29tbWFu ZCB0by4NCj4gPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdXNl ZCBieSB0aGUgU0QvTU1DIGRldmljZSwgaXQNCj4gbXVzdCBiZSAxLCA0IG9yIDguDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGJ1cyB3aWR0aCBpcyBzZXQgc3Vj Y2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGJ1cyB3aWR0 aCBpc24ndCBzZXQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRHdNbWNIY1NldEJ1c1dpZHRoICgNCj4gPiArICBJTiBFRklfUENJX0lPX1BST1RP Q09MICAgICpQY2lJbywNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICBJc0RkciwNCj4gPiArICBJTiBVSU5UMTYg ICAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ID4gKyAgKTsNCj4gPiArI2Vsc2UNCj4gPiArLyoq DQo+ID4gKyAgU2V0IHRoZSBTRC9NTUMgYnVzIHdpZHRoLg0KPiA+ICsNCj4gPiArICBSZWZlciB0 byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuNCBmb3Ig ZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVW SUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gQnVzV2lkdGggICAg ICAgVGhlIGJ1cyB3aWR0aCB1c2VkIGJ5IHRoZSBTRC9NTUMgZGV2aWNlLCBpdA0KPiBtdXN0IGJl IDEsIDQgb3IgOC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUg YnVzIHdpZHRoIGlzIHNldCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICBUaGUgYnVzIHdpZHRoIGlzbid0IHNldCBzdWNjZXNzZnVsbHkuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjU2V0QnVzV2lkdGggKA0KPiA+ICsg IElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiBCT09MRUFO ICAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAg QnVzV2lkdGgNCj4gPiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRlZiBEV01N Q19QQ0kNCj4gPiArLyoqDQo+ID4gKyAgU3VwcGx5IFNEL01NQyBjYXJkIHdpdGggbG93ZXN0IGNs b2NrIGZyZXF1ZW5jeSBhdCBpbml0aWFsaXphdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSBQY2lJbyAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBw YXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRv IHNlbmQgdGhlDQo+IGNvbW1hbmQgdG8uDQo+ID4gKyAgQHBhcmFtW2luXSBDYXBhYmlsaXR5ICAg ICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsg IEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2NrIGlzbid0IHN1cHBsaWVkIHN1Y2Nl c3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNJ bml0Q2xvY2tGcmVxICgNCj4gPiArICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAgICpQY2lJbywN Cj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gKyAgSU4gRFdfTU1D X0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ID4gKyAgKTsNCj4gPiArI2Vsc2UNCj4gPiAr LyoqDQo+ID4gKyAgU3VwcGx5IFNEL01NQyBjYXJkIHdpdGggbG93ZXN0IGNsb2NrIGZyZXF1ZW5j eSBhdCBpbml0aWFsaXphdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAg ICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0g Q2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGNsb2NrIGlzIHN1cHBsaWVkIHN1Y2Nlc3Nm dWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBjbG9jayBpc24ndCBz dXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtEd01tY0hjSW5pdENsb2NrRnJlcSAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAg ICAgICBEZXZCYXNlLA0KPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0 eQ0KPiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0K PiA+ICsvKioNCj4gPiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBtYXhpbXVtIHZvbHRhZ2Ug YXQgaW5pdGlhbGl6YXRpb24uDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJv bGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy4zIGZvciBkZXRhaWxzLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5z dGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIg b2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29tbWFuZCB0by4NCj4gPiArICBAcGFyYW1b aW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSB2b2x0YWdlIGlzIHN1cHBsaWVkIHN1 Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSB2b2x0YWdl IGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0R3TW1jSGNJbml0UG93ZXJWb2x0YWdlICgNCj4gPiArICBJTiBFRklfUENJ X0lPX1BST1RPQ09MICAgICpQY2lJbywNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAg IFNsb3QsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ID4g KyAgKTsNCj4gPiArI2Vsc2UNCj4gPiArLyoqDQo+ID4gKyAgU3VwcGx5IFNEL01NQyBjYXJkIHdp dGggbWF4aW11bSB2b2x0YWdlIGF0IGluaXRpYWxpemF0aW9uLg0KPiA+ICsNCj4gPiArICBSZWZl ciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuMyBm b3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUg REVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0 eSAgICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgVGhlIHZvbHRhZ2UgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0K PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHZvbHRhZ2UgaXNuJ3Qgc3VwcGxp ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAr RHdNbWNIY0luaXRQb3dlclZvbHRhZ2UgKA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAg ICAgRGV2QmFzZSwNCj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgIENhcGFiaWxpdHkN Cj4gPiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRlZiBEV01NQ19QQ0kNCj4g PiArLyoqDQo+ID4gKyAgSW5pdGlhbGl6ZSB0aGUgVGltZW91dCBDb250cm9sIHJlZ2lzdGVyIHdp dGggbW9zdCBjb25zZXJ2YXRpdmUgdmFsdWUgYXQNCj4gaW5pdGlhbGl6YXRpb24uDQo+ID4gKw0K PiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNl Y3Rpb24gMi4yLjE1IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlv ICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2lu XSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0 aGUNCj4gY29tbWFuZCB0by4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgdGltZW91dCBjb250cm9sIHJlZ2lzdGVyIGlzIGNvbmZpZ3VyZWQNCj4gc3VjY2Vzc2Z1 bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHRpbWVvdXQgY29udHJv bCByZWdpc3RlciBpc24ndCBjb25maWd1cmVkDQo+IHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNJbml0VGltZW91dEN0cmwgKA0KPiA+ ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ICsgIElOIFVJTlQ4ICAg ICAgICAgICAgICAgICAgU2xvdA0KPiA+ICsgICk7DQo+ID4gKyNlbHNlDQo+ID4gKy8qKg0KPiA+ ICsgIEluaXRpYWxpemUgdGhlIFRpbWVvdXQgQ29udHJvbCByZWdpc3RlciB3aXRoIG1vc3QgY29u c2VydmF0aXZlIHZhbHVlIGF0DQo+IGluaXRpYWxpemF0aW9uLg0KPiA+ICsNCj4gPiArICBSZWZl ciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDIuMi4x NSBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBU aGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gU2xvdCAg ICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNv bW1hbmQgdG8uDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHRp bWVvdXQgY29udHJvbCByZWdpc3RlciBpcyBjb25maWd1cmVkDQo+IHN1Y2Nlc3NmdWxseS4NCj4g PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSB0aW1lb3V0IGNvbnRyb2wgcmVnaXN0 ZXIgaXNuJ3QgY29uZmlndXJlZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjSW5pdFRpbWVvdXRDdHJsICgNCj4gPiArICBJTiAg VUlOVE4gICAgICAgICAgICAgICAgICAgIERldkJhc2UNCj4gPiArICApOw0KPiA+ICsjZW5kaWYN Cj4gPiArDQo+ID4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gPiArLyoqDQo+ID4gKyAgSW5pdGlhbCBT RC9NTUMgaG9zdCBjb250cm9sbGVyIHdpdGggbG93ZXN0IGNsb2NrIGZyZXF1ZW5jeSwgbWF4IHBv d2VyDQo+IGFuZCBtYXggdGltZW91dCB2YWx1ZQ0KPiA+ICsgIGF0IGluaXRpYWxpemF0aW9uLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9j b2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBu dW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29tbWFuZCB0by4NCj4gPiArICBA cGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBob3N0IGNvbnRyb2xsZXIg aXMgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAg ICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpc24ndCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHku DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjSW5pdEhvc3Qg KA0KPiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ICsgIElOIFVJ TlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAg ICAgIENhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZWxzZQ0KPiA+ICsvKioNCj4gPiArICBJ bml0aWFsIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgd2l0aCBsb3dlc3QgY2xvY2sgZnJlcXVlbmN5 LCBtYXggcG93ZXINCj4gYW5kDQo+ID4gKyAgbWF4IHRpbWVvdXQgdmFsdWUgYXQgaW5pdGlhbGl6 YXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklD RSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAg IFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgIFRoZSBob3N0IGNvbnRyb2xsZXIgaXMgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1 bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGhvc3QgY29udHJvbGxl ciBpc24ndCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr RUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjSW5pdEhvc3QgKA0KPiA+ICsgIElOICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAg ICAgIENhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNlbmRp ZiAvKiBfRFdfTU1DX0hDSV9IXyAqLw0KPiA+IGRpZmYgLS1naXQgYS9FbWJlZGRlZFBrZy9JbmNs dWRlL1Byb3RvY29sL1BsYXRmb3JtRHdNbWMuaA0KPiBiL0VtYmVkZGVkUGtnL0luY2x1ZGUvUHJv dG9jb2wvUGxhdGZvcm1Ed01tYy5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmFjYmMzZTE1M2RhYw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9FbWJlZGRlZFBrZy9JbmNsdWRlL1Byb3RvY29sL1BsYXRmb3JtRHdNbWMuaA0KPiA+IEBAIC0w LDAgKzEsNzkgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykg MjAxOCwgTGluYXJvLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsNCj4gPiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZQ0KPiBhdmFpbGFibGUNCj4gPiArICB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzDQo+IHRoaXMNCj4gPiArICBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiAr DQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfX1BMQVRGT1JNX0RXX01NQ19I X18NCj4gPiArI2RlZmluZSBfX1BMQVRGT1JNX0RXX01NQ19IX18NCj4gPiArDQo+ID4gK3R5cGVk ZWYgZW51bSB7DQo+ID4gKyAgUmVtb3ZhYmxlU2xvdCwNCj4gPiArICBFbWJlZGRlZFNsb3QsDQo+ ID4gKyAgU2hhcmVkQnVzU2xvdCwNCj4gPiArICBVbmtub3duU2xvdA0KPiA+ICt9IEVGSV9TRF9N TUNfU0xPVF9UWVBFOw0KPiA+ICsNCj4gPiArdHlwZWRlZiBlbnVtIHsNCj4gPiArICBVbmtub3du Q2FyZFR5cGUsDQo+ID4gKyAgU2RDYXJkVHlwZSwNCj4gPiArICBTZGlvQ2FyZFR5cGUsDQo+ID4g KyAgTW1jQ2FyZFR5cGUsDQo+ID4gKyAgRW1tY0NhcmRUeXBlDQo+ID4gK30gU0RfTU1DX0NBUkRf VFlQRTsNCj4gPiArDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVSU5UMzIgICAgICAg IERlZmF1bHRTcGVlZDoxOyAgICAvLyBiaXQgMA0KPiA+ICsgIFVJTlQzMiAgICAgICAgSGlnaFNw ZWVkOjE7ICAgICAgIC8vIGJpdCAxDQo+ID4gKyAgVUlOVDMyICAgICAgICBTZHIxMjoxOyAgICAg ICAgICAgLy8gYml0IDINCj4gPiArICBVSU5UMzIgICAgICAgIFNkcjI1OjE7ICAgICAgICAgICAv LyBiaXQgMw0KPiA+ICsgIFVJTlQzMiAgICAgICAgU2RyNTA6MTsgICAgICAgICAgIC8vIGJpdCA0 DQo+ID4gKyAgVUlOVDMyICAgICAgICBTZHIxMDQ6MTsgICAgICAgICAgLy8gYml0IDUNCj4gPiAr ICBVSU5UMzIgICAgICAgIERkcjUwOjE7ICAgICAgICAgICAvLyBiaXQgNg0KPiA+ICsgIFVJTlQz MiAgICAgICAgU3lzQnVzNjQ6MTsgICAgICAgIC8vIGJpdCA3DQo+ID4gKyAgVUlOVDMyICAgICAg ICBCdXNXaWR0aDo0OyAgICAgICAgLy8gYml0IDExOjgNCj4gPiArICBVSU5UMzIgICAgICAgIFNs b3RUeXBlOjI7ICAgICAgICAvLyBiaXQgMTM6MTINCj4gPiArICBVSU5UMzIgICAgICAgIENhcmRU eXBlOjM7ICAgICAgICAvLyBiaXQgMTY6MTQNCj4gPiArICBVSU5UMzIgICAgICAgIFZvbHRhZ2Ux ODoxOyAgICAgICAvLyBiaXQgMTcNCj4gPiArICBVSU5UMzIgICAgICAgIFZvbHRhZ2UzMDoxOyAg ICAgICAvLyBiaXQgMTgNCj4gPiArICBVSU5UMzIgICAgICAgIFZvbHRhZ2UzMzoxOyAgICAgICAv LyBiaXQgMTkNCj4gPiArICBVSU5UMzIgICAgICAgIEJhc2VDbGtGcmVxOw0KPiA+ICsgIEVGSV9I QU5ETEUgICAgQ29udHJvbGxlcjsNCj4gPiArfSBEV19NTUNfSENfU0xPVF9DQVA7DQo+ID4gKw0K PiA+ICsvLw0KPiA+ICsvLyBQcm90b2NvbCBpbnRlcmZhY2Ugc3RydWN0dXJlDQo+ID4gKy8vDQo+ ID4gK3R5cGVkZWYgc3RydWN0IF9QTEFURk9STV9EV19NTUNfUFJPVE9DT0wNCj4gUExBVEZPUk1f RFdfTU1DX1BST1RPQ09MOw0KPiA+ICsNCj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gKyhFRklBUEkgKlBMQVRGT1JNX0RXX01NQ19HRVRfQ0FQQUJJTElUWSkgKA0KPiA+ICsgIElO ICAgICBFRklfSEFORExFICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAgSU4gICAgIFVJ TlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICAgICBPVVQgRFdfTU1DX0hDX1NMT1Rf Q0FQICAgICAqQ2FwYWJpbGl0eQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICt0eXBlZGVmDQo+ID4g K0JPT0xFQU4NCj4gPiArKEVGSUFQSSAqUExBVEZPUk1fRFdfTU1DX0NBUkRfREVURUNUKSAoDQo+ ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiArICBJ TiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICBTbG90DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4g K3N0cnVjdCBfUExBVEZPUk1fRFdfTU1DX1BST1RPQ09MIHsNCj4gPiArICBQTEFURk9STV9EV19N TUNfR0VUX0NBUEFCSUxJVFkgICAgICAgICAgICAgICBHZXRDYXBhYmlsaXR5Ow0KPiA+ICsgIFBM QVRGT1JNX0RXX01NQ19DQVJEX0RFVEVDVCAgICAgICAgICAgICAgICAgIENhcmREZXRlY3Q7DQo+ ID4gK307DQo+ID4gKw0KPiA+ICtleHRlcm4gRUZJX0dVSUQgZ1BsYXRmb3JtRHdNbWNQcm90b2Nv bEd1aWQ7DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX19QTEFURk9STV9EV19NTUNfSF9fICovDQo+ ID4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Db21wb25lbnRO YW1lLmMNCj4gYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvQ29tcG9uZW50TmFtZS5j DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjFlZGFk ZTY5ZDA5MQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9FbWJlZGRlZFBrZy9Ecml2ZXJz L0R3TW1jSGNEeGUvQ29tcG9uZW50TmFtZS5jDQo+ID4gQEAgLTAsMCArMSwyMTQgQEANCj4gPiAr LyoqIEBmaWxlDQo+ID4gKyAgVUVGSSBDb21wb25lbnQgTmFtZSgyKSBwcm90b2NvbCBpbXBsZW1l bnRhdGlvbiBmb3IgRGVzaWdud2FyZQ0KPiBTRC9NTUMgaG9zdA0KPiA+ICsgIGNvbnRyb2xsZXIg ZHJpdmVyLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTgs IExpbmFybyBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQg bWFkZQ0KPiBhdmFpbGFibGUNCj4gPiArICB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzDQo+IHRoaXMNCj4gPiArICBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K PiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g PiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkR3TW1jSGNEeGUuaCIN Cj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIEVGSSBDb21wb25lbnQgTmFtZSBQcm90b2NvbA0KPiA+ ICsvLw0KPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRA0KPiBFRklfQ09NUE9ORU5U X05BTUVfUFJPVE9DT0wgZ0R3TW1jSGNDb21wb25lbnROYW1lID0gew0KPiA+ICsgIER3TW1jSGND b21wb25lbnROYW1lR2V0RHJpdmVyTmFtZSwNCj4gPiArICBEd01tY0hjQ29tcG9uZW50TmFtZUdl dENvbnRyb2xsZXJOYW1lLA0KPiA+ICsgICJlbmciDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvLw0K PiA+ICsvLyBFRkkgQ29tcG9uZW50IE5hbWUgMiBQcm90b2NvbA0KPiA+ICsvLw0KPiA+ICtHTE9C QUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRA0KPiBFRklfQ09NUE9ORU5UX05BTUUyX1BST1RPQ09M IGdEd01tY0hjQ29tcG9uZW50TmFtZTIgPSB7DQo+ID4gKyAgKEVGSV9DT01QT05FTlRfTkFNRTJf R0VUX0RSSVZFUl9OQU1FKQ0KPiBEd01tY0hjQ29tcG9uZW50TmFtZUdldERyaXZlck5hbWUsDQo+ ID4gKyAgKEVGSV9DT01QT05FTlRfTkFNRTJfR0VUX0NPTlRST0xMRVJfTkFNRSkNCj4gRHdNbWNI Y0NvbXBvbmVudE5hbWVHZXRDb250cm9sbGVyTmFtZSwNCj4gPiArICAiZW4iDQo+ID4gK307DQo+ ID4gKw0KPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBFRklfVU5JQ09ERV9TVFJJ TkdfVEFCTEUNCj4gbUR3TW1jSGNEcml2ZXJOYW1lVGFibGVbXSA9IHsNCj4gPiArICB7ICJlbmc7 ZW4iLCBMIkRlc2lnbndhcmUgU2QvTW1jIEhvc3QgQ29udHJvbGxlciBEcml2ZXIiIH0sDQo+ID4g KyAgeyBOVUxMICwgTlVMTCB9DQo+ID4gK307DQo+ID4gKw0KPiA+ICtHTE9CQUxfUkVNT1ZFX0lG X1VOUkVGRVJFTkNFRCBFRklfVU5JQ09ERV9TVFJJTkdfVEFCTEUNCj4gbUR3TW1jSGNDb250cm9s bGVyTmFtZVRhYmxlW10gPSB7DQo+ID4gKyAgeyAiZW5nO2VuIiwgTCJEZXNpZ253YXJlIFNkL01t YyBIb3N0IENvbnRyb2xsZXIiIH0sDQo+ID4gKyAgeyBOVUxMICwgTlVMTCB9DQo+ID4gK307DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgYSBVbmljb2RlIHN0cmluZyB0aGF0IGlz IHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGRyaXZlci4NCj4gPiArDQo+ID4gKyAgVGhp cyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiBhIGRyaXZlciBp biB0aGUgZm9ybSBvZg0KPiBhDQo+ID4gKyAgVW5pY29kZSBzdHJpbmcuIElmIHRoZSBkcml2ZXIg c3BlY2lmaWVkIGJ5IFRoaXMgaGFzIGEgdXNlciByZWFkYWJsZSBuYW1lIGluDQo+ID4gKyAgdGhl IGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwgdGhlbiBhIHBvaW50ZXIgdG8gdGhlIGRy aXZlciBuYW1lIGlzDQo+ID4gKyAgcmV0dXJuZWQgaW4gRHJpdmVyTmFtZSwgYW5kIEVGSV9TVUND RVNTIGlzIHJldHVybmVkLiBJZiB0aGUgZHJpdmVyDQo+IHNwZWNpZmllZA0KPiA+ICsgIGJ5IFRo aXMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLA0K PiA+ICsgIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gIFRoaXNbaW5dICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9DT01Q T05FTlRfTkFNRTJfUFJPVE9DT0wgb3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFRklfQ09NUE9ORU5UX05BTUVfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSAgTGFuZ3VhZ2VbaW5dICAgICAgICAgIEEgcG9pbnRlciB0byBhIE51bGwtdGVybWlu YXRlZCBBU0NJSSBzdHJpbmcNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cnJheSBpbmRpY2F0aW5nIHRoZSBsYW5ndWFnZS4gVGhpcyBpcyB0aGUNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSBvZiB0aGUgZHJpdmVyIG5hbWUgdGhhdCB0 aGUgY2FsbGVyIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz dGluZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxhbmd1YWdlcyBzcGVjaWZpZWQgaW4gU3VwcG9ydGVkTGFuZ3VhZ2Vz LiBUaGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgbGFu Z3VhZ2VzIHN1cHBvcnRlZCBieSBhIGRyaXZlciBpcyB1cA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVyLiBMYW5ndWFnZSBpcyBzcGVjaWZp ZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBSRkMgNDY0NiBvciBJ U08gNjM5LTIgbGFuZ3VhZ2UgY29kZSBmb3JtYXQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHJp dmVyTmFtZVtvdXRdICAgICAgIEEgcG9pbnRlciB0byB0aGUgVW5pY29kZSBzdHJpbmcgdG8gcmV0 dXJuLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgVW5pY29kZSBz dHJpbmcgaXMgdGhlIG5hbWUgb2YgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGluIHRoZSBsYW5ndWFnZQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBMYW5ndWFnZS4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFVuaWNvZGUgc3RyaW5n IGZvciB0aGUgRHJpdmVyIHNwZWNpZmllZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRoaXMgYW5kIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2Ugd2Fz DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgaW4gRHJpdmVy TmFtZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgTGFuZ3Vh Z2UgaXMgTlVMTC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg RHJpdmVyTmFtZSBpcyBOVUxMLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRF RCAgICAgICBUaGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGRvZXMgbm90DQo+IHN1cHBvcnQN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lm aWVkIGJ5IExhbmd1YWdlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAr RUZJQVBJDQo+ID4gK0R3TW1jSGNDb21wb25lbnROYW1lR2V0RHJpdmVyTmFtZSAoDQo+ID4gKyAg SU4gIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAgICAgKlRoaXMsDQo+ID4gKyAgSU4gIENI QVI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxhbmd1YWdlLA0KPiA+ICsgIE9VVCBDSEFS MTYgICAgICAgICAgICAgICAgICAgICAgICAgICoqRHJpdmVyTmFtZQ0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIHJldHVybiBMb29rdXBVbmljb2RlU3RyaW5nMiAoDQo+ID4gKyAgICAgICAgICAg TGFuZ3VhZ2UsDQo+ID4gKyAgICAgICAgICAgVGhpcy0+U3VwcG9ydGVkTGFuZ3VhZ2VzLA0KPiA+ ICsgICAgICAgICAgIG1Ed01tY0hjRHJpdmVyTmFtZVRhYmxlLA0KPiA+ICsgICAgICAgICAgIERy aXZlck5hbWUsDQo+ID4gKyAgICAgICAgICAgKEJPT0xFQU4pKFRoaXMgPT0gJmdEd01tY0hjQ29t cG9uZW50TmFtZSkNCj4gPiArICAgICAgICAgICApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBSZXRyaWV2ZXMgYSBVbmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRh YmxlIG5hbWUgb2YgdGhlDQo+IGNvbnRyb2xsZXINCj4gPiArICB0aGF0IGlzIGJlaW5nIG1hbmFn ZWQgYnkgYSBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRo ZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWVkDQo+IGJ5DQo+ ID4gKyAgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUgaW4gdGhlIGZvcm0gb2YgYSBV bmljb2RlIHN0cmluZy4gSWYgdGhlDQo+ID4gKyAgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGhh cyBhIHVzZXIgcmVhZGFibGUgbmFtZSBpbiB0aGUgbGFuZ3VhZ2UNCj4gc3BlY2lmaWVkIGJ5DQo+ ID4gKyAgTGFuZ3VhZ2UsIHRoZW4gYSBwb2ludGVyIHRvIHRoZSBjb250cm9sbGVyIG5hbWUgaXMg cmV0dXJuZWQgaW4NCj4gQ29udHJvbGxlck5hbWUsDQo+ID4gKyAgYW5kIEVGSV9TVUNDRVNTIGlz IHJldHVybmVkLiAgSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBpcyBub3QNCj4gY3Vy cmVudGx5DQo+ID4gKyAgbWFuYWdpbmcgdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IENvbnRy b2xsZXJIYW5kbGUgYW5kIENoaWxkSGFuZGxlLA0KPiA+ICsgIHRoZW4gRUZJX1VOU1VQUE9SVEVE IGlzIHJldHVybmVkLiAgSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBkb2VzDQo+IG5v dA0KPiA+ICsgIHN1cHBvcnQgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwgdGhl biBFRklfVU5TVVBQT1JURUQgaXMNCj4gcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAg VGhpc1tpbl0gICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX0NPTVBPTkVOVF9O QU1FMl9QUk9UT0NPTCBvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt ICBDb250cm9sbGVySGFuZGxlW2luXSAgVGhlIGhhbmRsZSBvZiBhIGNvbnRyb2xsZXIgdGhhdCB0 aGUgZHJpdmVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVk IGJ5IFRoaXMgaXMgbWFuYWdpbmcuICBUaGlzIGhhbmRsZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgY29udHJvbGxlciB3aG9zZSBuYW1lIGlzIHRv IGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbSAgQ2hpbGRIYW5kbGVbaW5dICAgICAgIFRoZSBoYW5kbGUgb2YgdGhl IGNoaWxkIGNvbnRyb2xsZXIgdG8gcmV0cmlldmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGUgbmFtZSBvZi4gIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRo YXQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgTlVMTC4gIEl0 IHdpbGwgYmUgTlVMTCBmb3IgZGV2aWNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHJpdmVycy4gIEl0IHdpbGwgYWxzbyBiZSBOVUxMIGZvciBhIGJ1cyBkcml2ZXJzDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3aXNoIHRvIHJldHJpZXZl IHRoZSBuYW1lIG9mIHRoZSBidXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250cm9sbGVyLiAgSXQgd2lsbCBub3QgYmUgTlVMTCBmb3IgYSBidXMNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgdGhhdCB3aXNoZXMgdG8gcmV0cmlldmUg dGhlIG5hbWUgb2YgYQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxk IGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgTGFuZ3VhZ2VbaW5dICAgICAgICAg IEEgcG9pbnRlciB0byBhIE51bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSBpbmRpY2F0aW5nIHRoZSBsYW5ndWFnZS4g IFRoaXMgaXMgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3Vh Z2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRoYXQgdGhlIGNhbGxlciBpcw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RpbmcsIGFuZCBpdCBtdXN0IG1hdGNoIG9uZSBv ZiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZXMgc3Bl Y2lmaWVkIGluIFN1cHBvcnRlZExhbmd1YWdlcy4gVGhlDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVtYmVyIG9mIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgYSBkcml2ZXIg aXMgdXANCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZHJpdmVy IHdyaXRlci4gTGFuZ3VhZ2UgaXMgc3BlY2lmaWVkIGluDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUkZDIDQ2NDYgb3IgSVNPIDYzOS0yIGxhbmd1YWdlIGNvZGUgZm9ybWF0 Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIENvbnRyb2xsZXJOYW1lW291dF0gICBBIHBvaW50ZXIg dG8gdGhlIFVuaWNvZGUgc3RyaW5nIHRvDQo+IHJldHVybi4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUaGlzIFVuaWNvZGUgc3RyaW5nIGlzIHRoZSBuYW1lIG9mIHRoZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgc3BlY2lmaWVk IGJ5IENvbnRyb2xsZXJIYW5kbGUgYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ2hpbGRIYW5kbGUgaW4gdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIGZyb20gdGhlIHBvaW50IG9mIHZp ZXcgb2YgdGhlIGRyaXZlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNw ZWNpZmllZCBieSBUaGlzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBUaGUgVW5pY29kZSBzdHJpbmcgZm9yIHRoZSB1c2VyIHJlYWRhYmxlDQo+IG5hbWUgaW4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lm aWVkIGJ5IExhbmd1YWdlIGZvciB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgd2FzIHJldHVybmVkIGluDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJpdmVyTmFtZS4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQ29udHJvbGxlckhhbmRsZSBpcyBub3QgYSB2YWxp ZA0KPiBFRklfSEFORExFLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBDaGlsZEhhbmRsZSBpcyBub3QgTlVMTCBhbmQgaXQgaXMgbm90IGENCj4gdmFsaWQNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSEFORExFLg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBMYW5ndWFnZSBpcyBOVUxMLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBDb250cm9sbGVyTmFtZSBp cyBOVUxMLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUg ZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGlzIG5vdA0KPiBjdXJyZW50bHkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2luZyB0aGUgY29udHJvbGxlciBzcGVjaWZp ZWQgYnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFu ZGxlIGFuZCBDaGlsZEhhbmRsZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JU RUQgICAgICAgVGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBkb2VzIG5vdA0KPiBzdXBwb3J0 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNp ZmllZCBieSBMYW5ndWFnZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4g K0VGSUFQSQ0KPiA+ICtEd01tY0hjQ29tcG9uZW50TmFtZUdldENvbnRyb2xsZXJOYW1lICgNCj4g PiArICBJTiAgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiArICBJ TiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ ICsgIElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENoaWxkSGFuZGxlLCBPUFRJ T05BTA0KPiA+ICsgIElOICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAgICpMYW5ndWFn ZSwNCj4gPiArICBPVVQgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqKkNvbnRyb2xs ZXJOYW1lDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgIFN0YXR1 czsNCj4gPiArDQo+ID4gKyAgaWYgKExhbmd1YWdlID09IE5VTEwgfHwgQ29udHJvbGxlck5hbWUg PT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVGhpcyBpcyBhIGRldmljZSBkcml2ZXIs IHNvIENoaWxkSGFuZGxlIG11c3QgYmUgTlVMTC4NCj4gPiArICAvLw0KPiA+ICsgIGlmIChDaGls ZEhhbmRsZSAhPSBOVUxMKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBNYWtlIHN1cmUgdGhpcyBkcml2ZXIg aXMgY3VycmVudGx5IG1hbmFnaW5nIENvbnRyb2xsZXJIYW5kbGUNCj4gPiArICAvLw0KPiA+ICsg IFN0YXR1cyA9IEVmaVRlc3RNYW5hZ2VkRGV2aWNlICgNCj4gPiArICAgICAgICAgICAgIENvbnRy b2xsZXJIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICBnRHdNbWNIY0RyaXZlckJpbmRpbmcuRHJp dmVyQmluZGluZ0hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICZnRWZpUGNpSW9Qcm90b2NvbEd1 aWQNCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVy biBMb29rdXBVbmljb2RlU3RyaW5nMiAoDQo+ID4gKyAgICAgICAgICAgTGFuZ3VhZ2UsDQo+ID4g KyAgICAgICAgICAgVGhpcy0+U3VwcG9ydGVkTGFuZ3VhZ2VzLA0KPiA+ICsgICAgICAgICAgIG1E d01tY0hjQ29udHJvbGxlck5hbWVUYWJsZSwNCj4gPiArICAgICAgICAgICBDb250cm9sbGVyTmFt ZSwNCj4gPiArICAgICAgICAgICAoQk9PTEVBTikoVGhpcyA9PSAmZ0R3TW1jSGNDb21wb25lbnRO YW1lKQ0KPiA+ICsgICAgICAgICAgICk7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRk ZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuYw0KPiBiL0VtYmVkZGVkUGtnL0Ry aXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYWVhMTIxNzBkMmNjDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmMNCj4g PiBAQCAtMCwwICsxLDEyOTYgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgVGhpcyBkcml2ZXIg aXMgdXNlZCB0byBtYW5hZ2UgRGVzaWdud2FyZSBTRC9NTUMgaG9zdCBjb250cm9sbGVyLg0KPiA+ ICsNCj4gPiArICBJdCB3b3VsZCBleHBvc2UgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wg Zm9yIHVwcGVyIGxheWVyDQo+IHVzZS4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1 IC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ ICsgIENvcHlyaWdodCAoQykgMjAxNiBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLiBBbGwgcmln dGhzIHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmlnaHQgKEMpIDIwMTgsIExpbmFybyBMdGQu IEFsbCByaWd0aHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBM aWNlbnNlDQo+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB UyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9EZXZpY2VQYXRoTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiArI2luY2x1ZGUg PFByb3RvY29sL05vbkRpc2NvdmVyYWJsZURldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aURyaXZlckVudHJ5UG9pbnQuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9EZXZp Y2VQYXRoLmg+DQo+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9QbGF0Zm9ybUR3TW1jLmg+DQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSAiRHdNbWNIY0R4ZS5oIg0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8g RHJpdmVyIEdsb2JhbCBWYXJpYWJsZXMNCj4gPiArLy8NCj4gPiArRUZJX0RSSVZFUl9CSU5ESU5H X1BST1RPQ09MIGdEd01tY0hjRHJpdmVyQmluZGluZyA9IHsNCj4gPiArICBEd01tY0hjRHJpdmVy QmluZGluZ1N1cHBvcnRlZCwNCj4gPiArICBEd01tY0hjRHJpdmVyQmluZGluZ1N0YXJ0LA0KPiA+ ICsgIER3TW1jSGNEcml2ZXJCaW5kaW5nU3RvcCwNCj4gPiArICAweDEwLA0KPiA+ICsgIE5VTEws DQo+ID4gKyAgTlVMTA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gVGVtcGxhdGUg Zm9yIERlc2lnbndhcmUgU0QvTU1DIGhvc3QgY29udHJvbGxlciBwcml2YXRlIGRhdGEuDQo+ID4g Ky8vDQo+ID4gK0RXX01NQ19IQ19QUklWQVRFX0RBVEEgZ0R3TW1jSGNUZW1wbGF0ZSA9IHsNCj4g PiArICBEV19NTUNfSENfUFJJVkFURV9TSUdOQVRVUkUsICAgICAgLy8gU2lnbmF0dXJlDQo+ID4g KyAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRyb2xsZXJIYW5kbGUN Cj4gPiArICAweDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNbWlvIGJhc2UgYWRk cmVzcw0KPiA+ICsgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXNzVGhy dQ0KPiA+ICsgICAgc2l6ZW9mIChVSU5UMzIpLA0KPiA+ICsgICAgRHdNbWNQYXNzVGhydVBhc3NU aHJ1LA0KPiA+ICsgICAgRHdNbWNQYXNzVGhydUdldE5leHRTbG90LA0KPiA+ICsgICAgRHdNbWNQ YXNzVGhydUJ1aWxkRGV2aWNlUGF0aCwNCj4gPiArICAgIER3TW1jUGFzc1RocnVHZXRTbG90TnVt YmVyLA0KPiA+ICsgICAgRHdNbWNQYXNzVGhydVJlc2V0RGV2aWNlDQo+ID4gKyAgfSwNCj4gPiAr ICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGxhdGZvcm1Ed01tYw0KPiA+ ICsgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmV2aW91c1Nsb3QNCj4g PiArICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGltZXJFdmVudA0KPiA+ ICsgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb25uZWN0RXZlbnQNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVldWUNCj4gPiArICBJ TklUSUFMSVpFX0xJU1RfSEVBRF9WQVJJQUJMRSAoZ0R3TW1jSGNUZW1wbGF0ZS5RdWV1ZSksDQo+ ID4gKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNsb3QNCj4gPiArICAg IHswLCBVbmtub3duU2xvdCwgMCwgMCwgMH0NCj4gPiArICB9LA0KPiA+ICsgIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXBhYmlsaXR5DQo+ID4gKyAgICB7MH0NCj4gPiAr ICB9LA0KPiA+ICsgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXhDdXJy ZW50DQo+ID4gKyAgICAwDQo+ID4gKyAgfSwNCj4gPiArICAwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gQ29udHJvbGxlclZlcnNpb24NCj4gPiArfTsNCj4gPiArDQo+ID4gK1NE X0RFVklDRV9QQVRIICAgIG1TZERwVGVtcGxhdGUgPSB7DQo+ID4gKyAgew0KPiA+ICsgICAgTUVT U0FHSU5HX0RFVklDRV9QQVRILA0KPiA+ICsgICAgTVNHX1NEX0RQLA0KPiA+ICsgICAgew0KPiA+ ICsgICAgICAoVUlOVDgpIChzaXplb2YgKFNEX0RFVklDRV9QQVRIKSksDQo+ID4gKyAgICAgIChV SU5UOCkgKChzaXplb2YgKFNEX0RFVklDRV9QQVRIKSkgPj4gOCkNCj4gPiArICAgIH0NCj4gPiAr ICB9LA0KPiA+ICsgIDANCj4gPiArfTsNCj4gPiArDQo+ID4gK0VNTUNfREVWSUNFX1BBVEggICAg bUVtbWNEcFRlbXBsYXRlID0gew0KPiA+ICsgIHsNCj4gPiArICAgIE1FU1NBR0lOR19ERVZJQ0Vf UEFUSCwNCj4gPiArICAgIE1TR19FTU1DX0RQLA0KPiA+ICsgICAgew0KPiA+ICsgICAgICAoVUlO VDgpIChzaXplb2YgKEVNTUNfREVWSUNFX1BBVEgpKSwNCj4gPiArICAgICAgKFVJTlQ4KSAoKHNp emVvZiAoRU1NQ19ERVZJQ0VfUEFUSCkpID4+IDgpDQo+ID4gKyAgICB9DQo+ID4gKyAgfSwNCj4g PiArICAwDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBQcmlvcml0aXplZCBmdW5j dGlvbiBsaXN0IHRvIGRldGVjdCBjYXJkIHR5cGUuDQo+ID4gKy8vIFVzZXIgY291bGQgYWRkIG90 aGVyIGNhcmQgZGV0ZWN0aW9uIGxvZ2ljIGhlcmUuDQo+ID4gKy8vDQo+ID4gK0RXTU1DX0NBUkRf VFlQRV9ERVRFQ1RfUk9VVElORQ0KPiBtQ2FyZFR5cGVEZXRlY3RSb3V0aW5lVGFibGVbXSA9IHsN Cj4gPiArICBFbW1jSWRlbnRpZmljYXRpb24sDQo+ID4gKyAgU2RDYXJkSWRlbnRpZmljYXRpb24s DQo+ID4gKyAgTlVMTA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhlIGVudHJ5 IHBvaW50IGZvciBTRCBob3N0IGNvbnRyb2xsZXIgZHJpdmVyLCB1c2VkIHRvIGluc3RhbGwgdGhp cyBkcml2ZXIgb24NCj4gdGhlIEltYWdlSGFuZGxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d ICBJbWFnZUhhbmRsZSAgIFRoZSBmaXJtd2FyZSBhbGxvY2F0ZWQgaGFuZGxlIGZvciB0aGlzIGRy aXZlcg0KPiBpbWFnZS4NCj4gPiArICBAcGFyYW1baW5dICBTeXN0ZW1UYWJsZSAgIFBvaW50ZXIg dG8gdGhlIEVGSSBzeXN0ZW0gdGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICBEcml2ZXIgbG9hZGVkLg0KPiA+ICsgIEByZXR2YWwgb3RoZXIgICAgICAgICBEcml2ZXIg bm90IGxvYWRlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQ SQ0KPiA+ICtJbml0aWFsaXplRHdNbWNIY0R4ZSAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxl DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgU3RhdHVzOw0K PiA+ICsNCj4gPiArICBTdGF0dXMgPSBFZmlMaWJJbnN0YWxsRHJpdmVyQmluZGluZ0NvbXBvbmVu dE5hbWUyICgNCj4gPiArICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ICsgICAgICAgICAg ICAgU3lzdGVtVGFibGUsDQo+ID4gKyAgICAgICAgICAgICAmZ0R3TW1jSGNEcml2ZXJCaW5kaW5n LA0KPiA+ICsgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAmZ0R3 TW1jSGNDb21wb25lbnROYW1lLA0KPiA+ICsgICAgICAgICAgICAgJmdEd01tY0hjQ29tcG9uZW50 TmFtZTINCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3Rh dHVzKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgQ2FsbCBiYWNrIGZ1bmN0aW9uIHdoZW4gdGhlIHRpbWVyIGV2ZW50IGlzIHNp Z25hbGVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBFdmVudCAgICAgVGhlIEV2ZW50IHRo aXMgbm90aWZ5IGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdG8uDQo+ID4gKyAgQHBhcmFtW2luXSAgQ29u dGV4dCAgIFBvaW50ZXIgdG8gdGhlIGNvbnRleHQgZGF0YSByZWdpc3RlcmVkIHRvIHRoZQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBFdmVudC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtW T0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQcm9jZXNzQXN5bmNUYXNrTGlzdCAoDQo+ID4gKyAgSU4g RUZJX0VWRU5UICAgICAgICAgIEV2ZW50LA0KPiA+ICsgIElOIFZPSUQqICAgICAgICAgICAgICBD b250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAg ICAgICAgICAgICAgKlByaXZhdGU7DQo+ID4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAg ICAgICAgICAgKkxpbms7DQo+ID4gKyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAg ICAgKlRyYjsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsN Cj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZpbml0ZVdhaXQ7 DQo+ID4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJiRXZlbnQ7DQo+ ID4gKw0KPiA+ICsgIFByaXZhdGUgPSAoRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAqKUNvbnRleHQ7 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2hlY2sgaWYgdGhlIGZpcnN0IGVudHJ5IGlu IHRoZSBhc3luYyBJL08gcXVldWUgaXMgZG9uZSBvciBub3QuDQo+ID4gKyAgLy8NCj4gPiArICBT dGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiArICBUcmIgICAgPSBOVUxMOw0KPiA+ICsgIExpbmsg ICA9IEdldEZpcnN0Tm9kZSAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gPiArICBpZiAoIUlzTnVsbCAo JlByaXZhdGUtPlF1ZXVlLCBMaW5rKSkgew0KPiA+ICsgICAgVHJiID0gRFdfTU1DX0hDX1RSQl9G Uk9NX1RISVMgKExpbmspOw0KPiA+ICsgICAgaWYgKCFQcml2YXRlLT5TbG90W1RyYi0+U2xvdF0u TWVkaWFQcmVzZW50KSB7DQo+ID4gKyAgICAgIFN0YXR1cyA9IEVGSV9OT19NRURJQTsNCj4gPiAr ICAgICAgZ290byBEb25lOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgaWYgKCFUcmItPlN0YXJ0ZWQp IHsNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY21kL2Rh dGEgbGluZSBpcyByZWFkeSBmb3IgdHJhbnNmZXIuDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAg IFN0YXR1cyA9IER3TW1jQ2hlY2tUcmJFbnYgKFByaXZhdGUsIFRyYik7DQo+ID4gKyAgICAgIGlm ICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgICAgVHJiLT5TdGFydGVkID0gVFJV RTsNCj4gPiArICAgICAgICBTdGF0dXMgPSBEd01tY0V4ZWNUcmIgKFByaXZhdGUsIFRyYik7DQo+ ID4gKyAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgICAgZ290 byBEb25lOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAg ICBnb3RvIERvbmU7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICAgIFN0YXR1cyA9 IER3TW1jQ2hlY2tUcmJSZXN1bHQgKFByaXZhdGUsIFRyYik7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArRG9uZToNCj4gPiArICBpZiAoKFRyYiAhPSBOVUxMKSAmJiAoU3RhdHVzID09IEVGSV9OT1Rf UkVBRFkpKSB7DQo+ID4gKyAgICBQYWNrZXQgPSBUcmItPlBhY2tldDsNCj4gPiArICAgIGlmIChQ YWNrZXQtPlRpbWVvdXQgPT0gMCkgew0KPiA+ICsgICAgICBJbmZpbml0ZVdhaXQgPSBUUlVFOw0K PiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgSW5maW5pdGVXYWl0ID0gRkFMU0U7DQo+ID4g KyAgICB9DQo+ID4gKyAgICBpZiAoKCFJbmZpbml0ZVdhaXQpICYmIChUcmItPlRpbWVvdXQtLSA9 PSAwKSkgew0KPiA+ICsgICAgICBSZW1vdmVFbnRyeUxpc3QgKExpbmspOw0KPiA+ICsgICAgICBU cmItPlBhY2tldC0+VHJhbnNhY3Rpb25TdGF0dXMgPSBFRklfVElNRU9VVDsNCj4gPiArICAgICAg VHJiRXZlbnQgPSBUcmItPkV2ZW50Ow0KPiA+ICsgICAgICBEd01tY0ZyZWVUcmIgKFRyYik7DQo+ ID4gKyAgICAgIERFQlVHICgoDQo+ID4gKyAgICAgICAgREVCVUdfVkVSQk9TRSwNCj4gPiArICAg ICAgICAiUHJvY2Vzc0FzeW5jVGFza0xpc3QoKTogU2lnbmFsIEV2ZW50ICVwIEVGSV9USU1FT1VU XG4iLA0KPiA+ICsgICAgICAgIFRyYkV2ZW50DQo+ID4gKyAgICAgICAgKSk7DQo+ID4gKyAgICAg IGdCUy0+U2lnbmFsRXZlbnQgKFRyYkV2ZW50KTsNCj4gPiArICAgICAgcmV0dXJuOw0KPiA+ICsg ICAgfQ0KPiA+ICsgIH0NCj4gPiArICBpZiAoKFRyYiAhPSBOVUxMKSAmJiAoU3RhdHVzICE9IEVG SV9OT1RfUkVBRFkpKSB7DQo+ID4gKyAgICBSZW1vdmVFbnRyeUxpc3QgKExpbmspOw0KPiA+ICsg ICAgVHJiLT5QYWNrZXQtPlRyYW5zYWN0aW9uU3RhdHVzID0gU3RhdHVzOw0KPiA+ICsgICAgVHJi RXZlbnQgPSBUcmItPkV2ZW50Ow0KPiA+ICsgICAgRHdNbWNGcmVlVHJiIChUcmIpOw0KPiA+ICsg ICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfVkVSQk9TRSwNCj4gPiArICAgICAgIlByb2Nl c3NBc3luY1Rhc2tMaXN0KCk6IFNpZ25hbCBFdmVudCAlcCB3aXRoICVyXG4iLA0KPiA+ICsgICAg ICBUcmJFdmVudCwNCj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAg Z0JTLT5TaWduYWxFdmVudCAoVHJiRXZlbnQpOw0KPiA+ICsgIH0NCj4gPiArICByZXR1cm47DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNkIHJlbW92YWJsZSBkZXZpY2UgZW51bWVy YXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gd2hlbiB0aGUgdGltZXINCj4gZXZlbnQgaXMgc2lnbmFs ZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIEV2ZW50ICAgICBUaGUgRXZlbnQgdGhpcyBu b3RpZnkgZnVuY3Rpb24gcmVnaXN0ZXJlZCB0by4NCj4gPiArICBAcGFyYW1baW5dICBDb250ZXh0 ICAgUG9pbnRlciB0byB0aGUgY29udGV4dCBkYXRhIHJlZ2lzdGVyZWQgdG8gdGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQN Cj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNFbnVtZXJhdGVEZXZpY2UgKA0KPiA+ICsgIElOIEVG SV9FVkVOVCAgICAgICAgICBFdmVudCwNCj4gPiArICBJTiBWT0lEKiAgICAgICAgICAgICAgQ29u dGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAg ICAgICAgICAgICpQcml2YXRlOw0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNZWRpYVByZXNlbnQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUm91dGluZU51bTsNCj4gPiArICBEV01NQ19DQVJEX1RZUEVfREVURUNUX1JPVVRJTkUgICAg ICAqUm91dGluZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleDsNCj4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAgICAqTGluazsN Cj4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAgICAqTmV4dExpbms7DQo+ ID4gKyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgICAgKlRyYjsNCj4gPiArICBF RklfVFBMICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbGRUcGw7DQo+ID4gKw0KPiA+ICsg IFByaXZhdGUgPSAoRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAqKUNvbnRleHQ7DQo+ID4gKw0KPiA+ ICsgIGlmICgoUHJpdmF0ZS0+U2xvdFswXS5FbmFibGUpICYmDQo+ID4gKyAgICAgIChQcml2YXRl LT5TbG90WzBdLlNsb3RUeXBlID09IFJlbW92YWJsZVNsb3QpKSB7DQo+ID4gKyAgICBTdGF0dXMg PSBEd01tY0hjQ2FyZERldGVjdCAoDQo+ID4gKyAgICAgICAgICAgICAgIFByaXZhdGUtPkRldkJh c2UsDQo+ID4gKyAgICAgICAgICAgICAgIFByaXZhdGUtPkNvbnRyb2xsZXJIYW5kbGUsDQo+ID4g KyAgICAgICAgICAgICAgIDAsDQo+ID4gKyAgICAgICAgICAgICAgICZNZWRpYVByZXNlbnQNCj4g PiArICAgICAgICAgICAgICAgKTsNCj4gPiArICAgIGlmICgoU3RhdHVzID09IEVGSV9NRURJQV9D SEFOR0VEKSAmJiAhTWVkaWFQcmVzZW50KSB7DQo+ID4gKyAgICAgIERFQlVHICgoDQo+ID4gKyAg ICAgICAgREVCVUdfSU5GTywNCj4gPiArICAgICAgICAiRHdNbWNIY0VudW1lcmF0ZURldmljZTog ZGV2aWNlIGRpc2Nvbm5lY3RlZCBhdCAlcFxuIiwNCj4gPiArICAgICAgICBQcml2YXRlLT5EZXZC YXNlDQo+ID4gKyAgICAgICAgKSk7DQo+ID4gKyAgICAgIFByaXZhdGUtPlNsb3RbMF0uTWVkaWFQ cmVzZW50ID0gRkFMU0U7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIFNpZ25hbCBhbGwg YXN5bmMgdGFzayBldmVudHMgYXQgdGhlIHNsb3Qgd2l0aCBFRklfTk9fTUVESUEgc3RhdHVzLg0K PiA+ICsgICAgICAvLw0KPiA+ICsgICAgICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChUUExfTk9U SUZZKTsNCj4gPiArICAgICAgZm9yIChMaW5rID0gR2V0Rmlyc3ROb2RlICgmUHJpdmF0ZS0+UXVl dWUpOw0KPiA+ICsgICAgICAgICAgICFJc051bGwgKCZQcml2YXRlLT5RdWV1ZSwgTGluayk7DQo+ ID4gKyAgICAgICAgICAgTGluayA9IE5leHRMaW5rKSB7DQo+ID4gKyAgICAgICAgTmV4dExpbmsg PSBHZXROZXh0Tm9kZSAoJlByaXZhdGUtPlF1ZXVlLCBMaW5rKTsNCj4gPiArICAgICAgICBUcmIg PSBEV19NTUNfSENfVFJCX0ZST01fVEhJUyAoTGluayk7DQo+ID4gKyAgICAgICAgaWYgKFRyYi0+ U2xvdCA9PSAwKSB7DQo+ID4gKyAgICAgICAgICBSZW1vdmVFbnRyeUxpc3QgKExpbmspOw0KPiA+ ICsgICAgICAgICAgVHJiLT5QYWNrZXQtPlRyYW5zYWN0aW9uU3RhdHVzID0gRUZJX05PX01FRElB Ow0KPiA+ICsgICAgICAgICAgZ0JTLT5TaWduYWxFdmVudCAoVHJiLT5FdmVudCk7DQo+ID4gKyAg ICAgICAgICBEd01tY0ZyZWVUcmIgKFRyYik7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICB9 DQo+ID4gKyAgICAgIGdCUy0+UmVzdG9yZVRQTCAoT2xkVHBsKTsNCj4gPiArICAgICAgLy8NCj4g PiArICAgICAgLy8gTm90aWZ5IHRoZSB1cHBlciBsYXllciB0aGUgY29ubmVjdCBzdGF0ZSBjaGFu Z2UgdGhyb3VnaA0KPiA+ICsgICAgICAvLyBSZWluc3RhbGxQcm90b2NvbEludGVyZmFjZS4NCj4g PiArICAgICAgLy8NCj4gPiArICAgICAgZ0JTLT5SZWluc3RhbGxQcm90b2NvbEludGVyZmFjZSAo DQo+ID4gKyAgICAgICAgICAgIFByaXZhdGUtPkNvbnRyb2xsZXJIYW5kbGUsDQo+ID4gKyAgICAg ICAgICAgICZnRWZpU2RNbWNQYXNzVGhydVByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAg JlByaXZhdGUtPlBhc3NUaHJ1LA0KPiA+ICsgICAgICAgICAgICAmUHJpdmF0ZS0+UGFzc1RocnUN Cj4gPiArICAgICAgICAgICAgKTsNCj4gPiArICAgIH0NCj4gPiArICAgIGlmICgoU3RhdHVzID09 IEVGSV9NRURJQV9DSEFOR0VEKSAmJiBNZWRpYVByZXNlbnQpIHsNCj4gPiArICAgICAgREVCVUcg KCgNCj4gPiArICAgICAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgICAgICJEd01tY0hjRW51bWVy YXRlRGV2aWNlOiBkZXZpY2UgY29ubmVjdGVkIGF0ICVwXG4iLA0KPiA+ICsgICAgICAgIFByaXZh dGUtPkRldkJhc2UNCj4gPiArICAgICAgICApKTsNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAg Ly8gSW5pdGlhbGl6ZSBzbG90IGFuZCBzdGFydCBpZGVudGlmaWNhdGlvbiBwcm9jZXNzIGZvciB0 aGUgbmV3DQo+ID4gKyAgICAgIC8vIGF0dGFjaGVkIGRldmljZQ0KPiA+ICsgICAgICAvLw0KPiA+ ICsgICAgICBTdGF0dXMgPSBEd01tY0hjSW5pdEhvc3QgKFByaXZhdGUtPkRldkJhc2UsIFByaXZh dGUtPkNhcGFiaWxpdHlbMF0pOw0KPiA+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICAgICAgcmV0dXJuOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICAgIC8vDQo+ID4g KyAgICAgIC8vIFJlc2V0IHRoZSBzcGVjaWZpZWQgc2xvdCBvZiB0aGUgU0QvTU1DIFBjaSBIb3N0 IENvbnRyb2xsZXINCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgU3RhdHVzID0gRHdNbWNIY1Jl c2V0IChQcml2YXRlLT5EZXZCYXNlLCBQcml2YXRlLT5DYXBhYmlsaXR5WzBdKTsNCj4gPiArICAg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIHJldHVybjsNCj4gPiAr ICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgUHJpdmF0ZS0+U2xvdFswXS5NZWRpYVByZXNlbnQg PSBUUlVFOw0KPiA+ICsgICAgICBSb3V0aW5lTnVtID0gc2l6ZW9mIChtQ2FyZFR5cGVEZXRlY3RS b3V0aW5lVGFibGUpIC8NCj4gPiArICAgICAgICAgICAgICAgICAgIHNpemVvZiAoRFdNTUNfQ0FS RF9UWVBFX0RFVEVDVF9ST1VUSU5FKTsNCj4gPiArICAgICAgZm9yIChJbmRleCA9IDA7IEluZGV4 IDwgUm91dGluZU51bTsgSW5kZXgrKykgew0KPiA+ICsgICAgICAgIFJvdXRpbmUgPSAmbUNhcmRU eXBlRGV0ZWN0Um91dGluZVRhYmxlW0luZGV4XTsNCj4gPiArICAgICAgICBpZiAoKlJvdXRpbmUg IT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgU3RhdHVzID0gKCpSb3V0aW5lKSAoUHJpdmF0ZSk7 DQo+ID4gKyAgICAgICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAg ICAgICBicmVhazsNCj4gPiArICAgICAgICAgIH0NCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAg IH0NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gVGhpcyBjYXJkIGRvZXNuJ3QgZ2V0IGlu aXRpYWxpemVkIGNvcnJlY3RseS4NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgaWYgKEluZGV4 ID09IFJvdXRpbmVOdW0pIHsNCj4gPiArICAgICAgICByZXR1cm47DQo+ID4gKyAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIE5vdGlmeSB0aGUgdXBwZXIgbGF5ZXIg dGhlIGNvbm5lY3Qgc3RhdGUgY2hhbmdlIHRocm91Z2gNCj4gPiArICAgICAgLy8gUmVpbnN0YWxs UHJvdG9jb2xJbnRlcmZhY2UuDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIGdCUy0+UmVpbnN0 YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiA+ICsgICAgICAgICAgICAgUHJpdmF0ZS0+Q29udHJv bGxlckhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICZnRWZpU2RNbWNQYXNzVGhydVByb3RvY29s R3VpZCwNCj4gPiArICAgICAgICAgICAgICZQcml2YXRlLT5QYXNzVGhydSwNCj4gPiArICAgICAg ICAgICAgICZQcml2YXRlLT5QYXNzVGhydQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArICAg IH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybjsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgUmVzZXQgdGhlIHNwZWNpZmllZCBTRC9NTUMgaG9zdCBjb250cm9sbGVyIGFu ZCBlbmFibGUgYWxsIGludGVycnVwdHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2QmFz ZSAgICAgICAgVGhlIE1taW8gRGV2aWNlIEJhc2UgQWRkcmVzcy4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgc29mdHdhcmUgcmVzZXQgZXhlY3V0ZXMgc3VjY2Vz c2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHNvZnR3YXJlIHJl c2V0IGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNI Y1Jlc2V0ICgNCj4gPiArICBJTiBVSU5UTiAgICBEZXZCYXNlLA0KPiA+ICsgIElOIERXX01NQ19I Q19TTE9UX0NBUCAgICAgICAgQ2FwYWJpbGl0eQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgQmxrU2l6ZTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBFbmFibGUgYWxs IGludGVycnVwdCBhZnRlciByZXNldCBhbGwuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBE d01tY0hjRW5hYmxlSW50ZXJydXB0IChEZXZCYXNlKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRHdNbWNIY1Jlc2V0OiBl bmFibGUgaW50ZXJydXB0cyBmYWlsOg0KPiAlclxuIiwgU3RhdHVzKSk7DQo+ID4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICBTdGF0dXMgPSBEd01tY0hjSW5pdFRpbWVvdXRD dHJsIChEZXZCYXNlKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgQmxrU2l6ZSA9IERXX01N Q19CTE9DS19TSVpFOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JMS1NJ WiwgQmxrU2l6ZSk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IER3TW1jSGNJbml0Q2xvY2tGcmVx IChEZXZCYXNlLCBDYXBhYmlsaXR5KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVz ID0gRHdNbWNIY1NldEJ1c1dpZHRoIChEZXZCYXNlLCBGQUxTRSwgMSk7DQo+ID4gKw0KPiA+ICsg IHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRlc3RzIHRv IHNlZSBpZiB0aGlzIGRyaXZlciBzdXBwb3J0cyBhIGdpdmVuIGNvbnRyb2xsZXIuIElmIGEgY2hp bGQgZGV2aWNlDQo+ID4gKyAgaXMgcHJvdmlkZWQsIGl0IGZ1cnRoZXIgdGVzdHMgdG8gc2VlIGlm IHRoaXMgZHJpdmVyIHN1cHBvcnRzIGNyZWF0aW5nIGENCj4gPiArICBoYW5kbGUgZm9yIHRoZSBz cGVjaWZpZWQgY2hpbGQgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGNoZWNr cyB0byBzZWUgaWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBzdXBwb3J0cyB0aGUNCj4g PiArICBkZXZpY2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUuIERyaXZlcnMgd2lsbCB0 eXBpY2FsbHkgdXNlIHRoZSBkZXZpY2UNCj4gPiArICBwYXRoIGF0dGFjaGVkIHRvIENvbnRyb2xs ZXJIYW5kbGUgYW5kL29yIHRoZSBzZXJ2aWNlcyBmcm9tIHRoZSBidXMgSS9PDQo+ID4gKyAgYWJz dHJhY3Rpb24gYXR0YWNoZWQgdG8gQ29udHJvbGxlckhhbmRsZSB0byBkZXRlcm1pbmUgaWYgdGhl IGRyaXZlcg0KPiBzdXBwb3J0cw0KPiA+ICsgIENvbnRyb2xsZXJIYW5kbGUuIFRoaXMgZnVuY3Rp b24gbWF5IGJlIGNhbGxlZCBtYW55IHRpbWVzIGR1cmluZw0KPiBwbGF0Zm9ybQ0KPiA+ICsgIGlu aXRpYWxpemF0aW9uLiBJbiBvcmRlciB0byByZWR1Y2UgYm9vdCB0aW1lcywgdGhlIHRlc3RzIHBl cmZvcm1lZCBieSB0aGlzDQo+ID4gKyAgZnVuY3Rpb24gbXVzdCBiZSB2ZXJ5IHNtYWxsLCBhbmQg dGFrZSBhcyBsaXR0bGUgdGltZSBhcyBwb3NzaWJsZSB0bw0KPiBleGVjdXRlLg0KPiA+ICsgIFRo aXMgZnVuY3Rpb24gbXVzdCBub3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiBhbnkgaGFyZHdhcmUgZGV2 aWNlcywgYW5kDQo+IHRoaXMNCj4gPiArICBmdW5jdGlvbiBtdXN0IGJlIGF3YXJlIHRoYXQgdGhl IGRldmljZSBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZQ0KPiBtYXkNCj4gPiArICBhbHJl YWR5IGJlIG1hbmFnZWQgYnkgdGhlIHNhbWUgZHJpdmVyIG9yIGEgZGlmZmVyZW50IGRyaXZlci4g VGhpcw0KPiBmdW5jdGlvbg0KPiA+ICsgIG11c3QgbWF0Y2ggaXRzIGNhbGxzIHRvIEFsbG9jYXRl UGFnZXMoKSB3aXRoIEZyZWVQYWdlcygpLCBBbGxvY2F0ZVBvb2woKQ0KPiB3aXRoDQo+ID4gKyAg RnJlZVBvb2woKSwgYW5kIE9wZW5Qcm90b2NvbCgpIHdpdGggQ2xvc2VQcm90b2NvbCgpLiBTaW5j ZQ0KPiBDb250cm9sbGVySGFuZGxlDQo+ID4gKyAgbWF5IGhhdmUgYmVlbiBwcmV2aW91c2x5IHN0 YXJ0ZWQgYnkgdGhlIHNhbWUgZHJpdmVyLCBpZiBhIHByb3RvY29sIGlzDQo+IGFscmVhZHkNCj4g PiArICBpbiB0aGUgb3BlbmVkIHN0YXRlLCB0aGVuIGl0IG11c3Qgbm90IGJlIGNsb3NlZCB3aXRo IENsb3NlUHJvdG9jb2woKS4gVGhpcw0KPiBpcw0KPiA+ICsgIHJlcXVpcmVkIHRvIGd1YXJhbnRl ZSB0aGUgc3RhdGUgb2YgQ29udHJvbGxlckhhbmRsZSBpcyBub3QgbW9kaWZpZWQgYnkNCj4gdGhp cw0KPiA+ICsgIGZ1bmN0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAg ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9EUklWRVJfQklORElOR19QUk9UT0NP TA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNv bnRyb2xsZXIgdG8gdGVzdC4gVGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGhhbmRsZSBtdXN0IHN1cHBvcnQgYSBwcm90b2NvbCBpbnRlcmZhY2UgdGhhdA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVzIGFuIEkvTyBhYnN0 cmFjdGlvbiB0byB0aGUgZHJpdmVyLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlbWFpbmluZ0Rldmlj ZVBhdGggIEEgcG9pbnRlciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24gb2YNCj4gYQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBwYXRoLiAgVGhpcyBwYXJh bWV0ZXIgaXMgaWdub3JlZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRldmljZSBkcml2ZXJzLCBhbmQgaXMgb3B0aW9uYWwgZm9yIGJ1cw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMuIEZvciBidXMgZHJpdmVycywgaWYg dGhpcyBwYXJhbWV0ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp cyBub3QgTlVMTCwgdGhlbiB0aGUgYnVzIGRyaXZlciBtdXN0IGRldGVyLQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmUgaWYgdGhlIGJ1cyBjb250cm9sbGVyIHNw ZWNpZmllZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRy b2xsZXJIYW5kbGUgYW5kIHRoZSBjaGlsZCBjb250cm9sbGVyDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFJlbWFpbmluZ0RldmljZVBhdGggYXJl IGJvdGgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQg YnkgdGhpcyBidXMgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBieSBDb250cm9sbGVySGFuZGxlDQo+IGFu ZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZ0Rldmlj ZVBhdGggaXMgc3VwcG9ydGVkIGJ5IHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gPiArICBAcmV0dmFsIEVGSV9B TFJFQURZX1NUQVJURUQgICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBieQ0KPiBDb250cm9sbGVy SGFuZGxlIGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFp bmluZ0RldmljZVBhdGggaXMgYWxyZWFkeSBiZWluZyBtYW5hZ2VkDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcy4N Cj4gPiArICBAcmV0dmFsIEVGSV9BQ0NFU1NfREVOSUVEICAgICAgICBUaGUgZGV2aWNlIHNwZWNp ZmllZCBieQ0KPiBDb250cm9sbGVySGFuZGxlIGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgYWxyZWFkeSBiZWluZyBtYW5h Z2VkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYSBkaWZmZXJl bnQgZHJpdmVyIG9yIGFuIGFwcGxpY2F0aW9uIHRoYXQNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXF1aXJlcyBleGNsdXNpdmUgYWNjZXNzLg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuDQo+ ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICAgVGhlIGRldmljZSBzcGVjaWZp ZWQgYnkNCj4gQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhl DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIHNwZWNpZmll ZCBieSBUaGlzLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiAr RHdNbWNIY0RyaXZlckJpbmRpbmdTdXBwb3J0ZWQgKA0KPiA+ICsgIElOIEVGSV9EUklWRVJfQklO RElOR19QUk9UT0NPTCAqVGhpcywNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAg ICAgQ29udHJvbGxlciwNCj4gPiArICBJTiBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgKlJl bWFpbmluZ0RldmljZVBhdGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpQ YXJlbnREZXZpY2VQYXRoOw0KPiA+ICsgIE5PTl9ESVNDT1ZFUkFCTEVfREVWSUNFICAgKkRldjsN Cj4gPiArICBQTEFURk9STV9EV19NTUNfUFJPVE9DT0wgICpQbGF0Zm9ybUR3TW1jOw0KPiA+ICsN Cj4gPiArICBQYXJlbnREZXZpY2VQYXRoID0gTlVMTDsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0g Z0JTLT5Mb2NhdGVQcm90b2NvbCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnUGxhdGZvcm1E d01tY1Byb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAg ICAgICAgICAgICAgICAgKFZPSUQgKiopICZQbGF0Zm9ybUR3TW1jDQo+ID4gKyAgICAgICAgICAg ICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+T3BlblBy b3RvY29sICgNCj4gPiArICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiArICAgICAg ICAgICAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAoVk9JRCAqKSAmUGFyZW50RGV2aWNlUGF0aCwNCj4gPiArICAgICAgICAgICAgICAg ICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgQ29u dHJvbGxlciwNCj4gPiArICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfQllfRFJJ VkVSDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEVGSV9BTFJFQURZX1NUQVJURUQgaXMg YWxzbyBhbiBlcnJvci4NCj4gPiArICAgIC8vDQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ ICsgIH0NCj4gPiArICAvLw0KPiA+ICsgIC8vIENsb3NlIHRoZSBwcm90b2NvbCBiZWNhdXNlIHdl IGRvbid0IHVzZSBpdCBoZXJlLg0KPiA+ICsgIC8vDQo+ID4gKyAgZ0JTLT5DbG9zZVByb3RvY29s ICgNCj4gPiArICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgICAgICAgICZnRWZpRGV2aWNlUGF0 aFByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0K PiA+ICsgICAgICAgIENvbnRyb2xsZXINCj4gPiArICAgICAgICApOw0KPiA+ICsNCj4gPiArICAv Lw0KPiA+ICsgIC8vIE5vdyB0ZXN0IHRoZSBFbWJlZGRlZE5vbkRpc2NvdmVyYWJsZUlvUHJvdG9j b2wuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ID4g KyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZn RWRraWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgIChWT0lEICoqKSAmRGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICBUaGlzLT5Ecml2 ZXJCaW5kaW5nSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ ICsgICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9CWV9EUklWRVINCj4gPiArICAg ICAgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICBnQlMtPkNsb3NlUHJvdG9jb2wg KA0KPiA+ICsgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgICAgICAgICAmZ0Vka2lpTm9uRGlz Y292ZXJhYmxlRGV2aWNlUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICBUaGlzLT5Ecml2ZXJC aW5kaW5nSGFuZGxlLA0KPiA+ICsgICAgICAgICBDb250cm9sbGVyDQo+ID4gKyAgICAgICAgICk7 DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBTdGFydHMgYSBkZXZpY2UgY29udHJvbGxlciBvciBhIGJ1cyBjb250cm9sbGVyLg0KPiA+ ICsNCj4gPiArICBUaGUgU3RhcnQoKSBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbnZva2Vk IGZyb20gdGhlIEVGSSBib290IHNlcnZpY2UNCj4gPiArICBDb25uZWN0Q29udHJvbGxlcigpLg0K PiA+ICsgIEFzIGEgcmVzdWx0LCBtdWNoIG9mIHRoZSBlcnJvciBjaGVja2luZyBvbiB0aGUgcGFy YW1ldGVycyB0byBTdGFydCgpIGhhcw0KPiA+ICsgIGJlZW4gbW92ZWQgaW50byB0aGlzDQo+ID4g KyAgY29tbW9uIGJvb3Qgc2VydmljZS4gSXQgaXMgbGVnYWwgdG8gY2FsbCBTdGFydCgpIGZyb20g b3RoZXIgbG9jYXRpb25zLA0KPiA+ICsgIGJ1dCB0aGUgZm9sbG93aW5nIGNhbGxpbmcgcmVzdHJp Y3Rpb25zIG11c3QgYmUgZm9sbG93ZWQgb3IgdGhlIHN5c3RlbQ0KPiA+ICsgIGJlaGF2aW9yIHdp bGwgbm90IGJlIGRldGVybWluaXN0aWMuDQo+ID4gKyAgMS4gQ29udHJvbGxlckhhbmRsZSBtdXN0 IGJlIGEgdmFsaWQgRUZJX0hBTkRMRS4NCj4gPiArICAyLiBJZiBSZW1haW5pbmdEZXZpY2VQYXRo IGlzIG5vdCBOVUxMLCB0aGVuIGl0IG11c3QgYmUgYSBwb2ludGVyIHRvIGENCj4gPiArICAgICBu YXR1cmFsbHkgYWxpZ25lZCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wuDQo+ID4gKyAgMy4gUHJp b3IgdG8gY2FsbGluZyBTdGFydCgpLCB0aGUgU3VwcG9ydGVkKCkgZnVuY3Rpb24gZm9yIHRoZSBk cml2ZXINCj4gPiArICAgICBzcGVjaWZpZWQgYnkgVGhpcyBtdXN0IGhhdmUgYmVlbiBjYWxsZWQg d2l0aCB0aGUgc2FtZSBjYWxsaW5nDQo+IHBhcmFtZXRlcnMsDQo+ID4gKyAgICAgYW5kIFN1cHBv cnRlZCgpIG11c3QgaGF2ZSByZXR1cm5lZCBFRklfU1VDQ0VTUy4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfRFJJ VkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBDb250cm9sbGVySGFuZGxlICAgICBU aGUgaGFuZGxlIG9mIHRoZSBjb250cm9sbGVyIHRvIHN0YXJ0Lg0KPiBUaGlzDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlIG11c3Qgc3VwcG9ydCBhIHByb3Rv Y29sIGludGVyZmFjZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo YXQgc3VwcGxpZXMgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRoZQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRyaXZlci4NCj4gPiArICBAcGFyYW1baW5dICBSZW1haW5p bmdEZXZpY2VQYXRoICBBIHBvaW50ZXIgdG8gdGhlIHJlbWFpbmluZyBwb3J0aW9uIG9mDQo+IGEN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aC4gIFRo aXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXZpY2UgZHJpdmVycywgYW5kIGlzIG9wdGlvbmFsIGZvciBidXMNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzLg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGJ1cyBkcml2ZXIsIGlmIHRoaXMgcGFy YW1ldGVyIGlzIE5VTEwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlbiBoYW5kbGVzIGZvciBhbGwgdGhlIGNoaWxkcmVuIG9mDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciBhcmUgY3JlYXRlZCBieSB0aGlzIGRyaXZl ci4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIHBhcmFt ZXRlciBpcyBub3QgTlVMTCBhbmQgdGhlIGZpcnN0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlIFBhdGggTm9kZSBpcyBub3QgdGhlIEVuZCBvZiBEZXZpY2UN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoIE5vZGUsIHRoZW4g b25seSB0aGUgaGFuZGxlIGZvciB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGlsZCBkZXZpY2Ugc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdCBEZXZpY2UNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoIE5vZGUgb2YgUmVtYWluaW5n RGV2aWNlUGF0aCBpcyBjcmVhdGVkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnkgdGhpcyBkcml2ZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSWYgdGhlIGZpcnN0IERldmljZSBQYXRoIE5vZGUgb2YNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIHRoZSBFbmQgb2Yg RGV2aWNlIFBhdGgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2Rl LCBubyBjaGlsZCBoYW5kbGUgaXMgY3JlYXRlZCBieSB0aGlzDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBzdGFydGVkLg0KPiA+ICsgIEByZXR2 YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgIFRoZSBkZXZpY2UgY291bGQgbm90IGJlIHN0YXJ0 ZWQgZHVlIHRvIGENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp Y2UgZXJyb3IuIEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuDQo+ID4gKyAgQHJldHZhbCBFRklf T1VUX09GX1JFU09VUkNFUyAgICAgVGhlIHJlcXVlc3QgY291bGQgbm90IGJlDQo+IGNvbXBsZXRl ZCBkdWUgdG8gYQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhY2sg b2YgcmVzb3VyY2VzLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgICAgIFRo ZSBkcml2ZXIgZmFpbGRlZCB0byBzdGFydCB0aGUgZGV2aWNlLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNEcml2ZXJCaW5kaW5nU3Rh cnQgKA0KPiA+ICsgIElOIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAgICAgKlRoaXMsDQo+ ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ ICsgIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgKlJlbWFpbmluZ0RldmljZVBh dGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICpQcml2 YXRlOw0KPiA+ICsNCj4gPiArICBOT05fRElTQ09WRVJBQkxFX0RFVklDRSAgICAgICAgICpEZXY7 DQo+ID4gKw0KPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFQcmVz ZW50Ow0KPiA+ICsgIERXTU1DX0NBUkRfVFlQRV9ERVRFQ1RfUk9VVElORSAgKlJvdXRpbmU7DQo+ ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRpbmVOdW07DQo+ID4gKyAgUExBVEZPUk1f RFdfTU1DX1BST1RPQ09MICAgICAgICAqUGxhdGZvcm1Ed01tYzsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnUGxh dGZvcm1Ed01tY1Byb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4g PiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZQbGF0Zm9ybUR3TW1jDQo+ID4gKyAgICAg ICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsg IERFQlVHICgoREVCVUdfRVJST1IsICJlcnIgJWQiLCBfX0xJTkVfXykpOw0KPiA+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+T3BlblBy b3RvY29sICgNCj4gPiArICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiArICAgICAg ICAgICAgICAgICAgJmdFZGtpaU5vbkRpc2NvdmVyYWJsZURldmljZVByb3RvY29sR3VpZCwNCj4g PiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZEZXYsDQo+ID4gKyAgICAgICAgICAgICAg ICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgIENv bnRyb2xsZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0RS SVZFUg0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiArICBERUJVRyAoKERFQlVHX0VSUk9SLCAiZXJyICVkIiwgX19MSU5FX18p KTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQcml2 YXRlID0gQWxsb2NhdGVDb3B5UG9vbCAoc2l6ZW9mIChEV19NTUNfSENfUFJJVkFURV9EQVRBKSwN Cj4gJmdEd01tY0hjVGVtcGxhdGUpOw0KPiA+ICsgIGlmIChQcml2YXRlID09IE5VTEwpIHsNCj4g PiArICBERUJVRyAoKERFQlVHX0VSUk9SLCAiZXJyICVkIiwgX19MSU5FX18pKTsNCj4gPiArICAg IFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgICAgZ290byBEb25lOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgUHJpdmF0ZS0+Q29udHJvbGxlckhhbmRsZSA9IENvbnRyb2xs ZXI7DQo+ID4gKyAgUHJpdmF0ZS0+RGV2QmFzZSAgICAgICAgICA9IERldi0+UmVzb3VyY2VzWzBd LkFkZHJSYW5nZU1pbjsNCj4gPiArICBQcml2YXRlLT5QbGF0Zm9ybUR3TW1jICAgID0gUGxhdGZv cm1Ed01tYzsNCj4gPiArICBJbml0aWFsaXplTGlzdEhlYWQgKCZQcml2YXRlLT5RdWV1ZSk7DQo+ ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFByaXZhdGUtPlBsYXRmb3JtRHdNbWMtPkdldENhcGFiaWxp dHkgKENvbnRyb2xsZXIsIDAsDQo+ICZQcml2YXRlLT5DYXBhYmlsaXR5WzBdKTsNCj4gPiArDQo+ ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgZ290byBEb25lOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKFByaXZhdGUtPkNhcGFiaWxpdHlbMF0uQmFzZUNsa0Zy ZXEgPT0gMCkgew0KPiA+ICsgICAgZ290byBEb25lOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg RHVtcENhcGFiaWxpdHlSZWcgKDAsICZQcml2YXRlLT5DYXBhYmlsaXR5WzBdKTsNCj4gPiArDQo+ ID4gKyAgTWVkaWFQcmVzZW50ID0gRkFMU0U7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFByaXZh dGUtPlBsYXRmb3JtRHdNbWMtPkNhcmREZXRlY3QgKENvbnRyb2xsZXIsIDApOw0KPiA+ICsgIFN0 YXR1cyA9IER3TW1jSGNDYXJkRGV0ZWN0IChQcml2YXRlLT5EZXZCYXNlLCBDb250cm9sbGVyLCAw LA0KPiAmTWVkaWFQcmVzZW50KTsNCj4gPiArICBpZiAoTWVkaWFQcmVzZW50ID09IEZBTFNFKSB7 DQo+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsg IC8vIEluaXRpYWxpemUgc2xvdCBhbmQgc3RhcnQgaWRlbnRpZmljYXRpb24gcHJvY2VzcyBmb3Ig dGhlIG5ldyBhdHRhY2hlZA0KPiBkZXZpY2UNCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IER3 TW1jSGNJbml0SG9zdCAoUHJpdmF0ZS0+RGV2QmFzZSwgUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXSk7 DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgZ290byBEb25lOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBSZXNldCBIQw0KPiA+ICsgIC8v DQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY1Jlc2V0IChQcml2YXRlLT5EZXZCYXNlLCBQcml2YXRl LT5DYXBhYmlsaXR5WzBdKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQcml2YXRlLT5TbG90WzBd LkNhcmRUeXBlID0gUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5DYXJkVHlwZTsNCj4gPiArICBQcml2 YXRlLT5TbG90WzBdLkVuYWJsZSA9IFRSVUU7DQo+ID4gKyAgUHJpdmF0ZS0+U2xvdFswXS5NZWRp YVByZXNlbnQgPSBUUlVFOw0KPiA+ICsNCj4gPiArICBSb3V0aW5lTnVtID0gc2l6ZW9mIChtQ2Fy ZFR5cGVEZXRlY3RSb3V0aW5lVGFibGUpIC8gc2l6ZW9mDQo+IChEV01NQ19DQVJEX1RZUEVfREVU RUNUX1JPVVRJTkUpOw0KPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFJvdXRpbmVOdW07 IEluZGV4KyspIHsNCj4gPiArICAgIFJvdXRpbmUgPSAmbUNhcmRUeXBlRGV0ZWN0Um91dGluZVRh YmxlW0luZGV4XTsNCj4gPiArICAgIGlmICgqUm91dGluZSAhPSBOVUxMKSB7DQo+ID4gKyAgICAg IFN0YXR1cyA9ICgqUm91dGluZSkgKFByaXZhdGUpOw0KPiA+ICsgICAgICBpZiAoIUVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICB9DQo+ID4gKyAg ICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFN0YXJ0IHRoZSBhc3lu Y2hyb25vdXMgSS9PIG1vbml0b3INCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+Q3Jl YXRlRXZlbnQgKA0KPiA+ICsgICAgICAgICAgICAgICAgICBFVlRfVElNRVIgfCBFVlRfTk9USUZZ X1NJR05BTCwNCj4gPiArICAgICAgICAgICAgICAgICAgVFBMX05PVElGWSwNCj4gPiArICAgICAg ICAgICAgICAgICAgUHJvY2Vzc0FzeW5jVGFza0xpc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAg IFByaXZhdGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZQcml2YXRlLT5UaW1lckV2ZW50DQo+ ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ICsgICAgZ290byBEb25lOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0g Z0JTLT5TZXRUaW1lciAoUHJpdmF0ZS0+VGltZXJFdmVudCwgVGltZXJQZXJpb2RpYywNCj4gRFdf TU1DX0hDX0FTWU5DX1RJTUVSKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8v IFN0YXJ0IHRoZSBTZCByZW1vdmFibGUgZGV2aWNlIGNvbm5lY3Rpb24gZW51bWVyYXRpb24NCj4g PiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnQgKA0KPiA+ICsgICAgICAg ICAgICAgICAgICBFVlRfVElNRVIgfCBFVlRfTk9USUZZX1NJR05BTCwNCj4gPiArICAgICAgICAg ICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+ICsgICAgICAgICAgICAgICAgICBEd01tY0hjRW51 bWVyYXRlRGV2aWNlLA0KPiA+ICsgICAgICAgICAgICAgICAgICBQcml2YXRlLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAmUHJpdmF0ZS0+Q29ubmVjdEV2ZW50DQo+ID4gKyAgICAgICAgICAgICAg ICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgZ290byBE b25lOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5TZXRUaW1lciAoUHJp dmF0ZS0+Q29ubmVjdEV2ZW50LCBUaW1lclBlcmlvZGljLA0KPiBEV19NTUNfSENfRU5VTV9USU1F Uik7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgZ290byBEb25l Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsTXVsdGlwbGVQ cm90b2NvbEludGVyZmFjZXMgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAmQ29udHJvbGxlciwN Cj4gPiArICAgICAgICAgICAgICAgICAgJmdFZmlTZE1tY1Bhc3NUaHJ1UHJvdG9jb2xHdWlkLA0K PiA+ICsgICAgICAgICAgICAgICAgICAmKFByaXZhdGUtPlBhc3NUaHJ1KSwNCj4gPiArICAgICAg ICAgICAgICAgICAgTlVMTA0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiAr ICBERUJVRyAoKERFQlVHX0lORk8sICJEd01tY0hjRHJpdmVyQmluZGluZ1N0YXJ0OiAlciBFbmQg b24gJXhcbiIsDQo+IFN0YXR1cywgQ29udHJvbGxlcikpOw0KPiA+ICsNCj4gPiArRG9uZToNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBpZiAoKFByaXZhdGUgIT0g TlVMTCkgJiYgKFByaXZhdGUtPlRpbWVyRXZlbnQgIT0gTlVMTCkpIHsNCj4gPiArICAgICAgZ0JT LT5DbG9zZUV2ZW50IChQcml2YXRlLT5UaW1lckV2ZW50KTsNCj4gPiArICAgIH0NCj4gPiArDQo+ ID4gKyAgICBpZiAoKFByaXZhdGUgIT0gTlVMTCkgJiYgKFByaXZhdGUtPkNvbm5lY3RFdmVudCAh PSBOVUxMKSkgew0KPiA+ICsgICAgICBnQlMtPkNsb3NlRXZlbnQgKFByaXZhdGUtPkNvbm5lY3RF dmVudCk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKFByaXZhdGUgIT0gTlVMTCkg ew0KPiA+ICsgICAgICBGcmVlUG9vbCAoUHJpdmF0ZSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBTdG9wcyBhIGRldmljZSBjb250cm9sbGVyIG9yIGEgYnVzIGNvbnRyb2xsZXIuDQo+ID4g Kw0KPiA+ICsgIFRoZSBTdG9wKCkgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBm cm9tIHRoZSBFRkkgYm9vdCBzZXJ2aWNlDQo+ID4gKyAgRGlzY29ubmVjdENvbnRyb2xsZXIoKS4N Cj4gPiArICBBcyBhIHJlc3VsdCwgbXVjaCBvZiB0aGUgZXJyb3IgY2hlY2tpbmcgb24gdGhlIHBh cmFtZXRlcnMgdG8gU3RvcCgpIGhhcw0KPiBiZWVuDQo+ID4gKyAgbW92ZWQgaW50byB0aGlzIGNv bW1vbiBib290IHNlcnZpY2UuIEl0IGlzIGxlZ2FsIHRvIGNhbGwgU3RvcCgpIGZyb20gb3RoZXIN Cj4gPiArICBsb2NhdGlvbnMsIGJ1dCB0aGUgZm9sbG93aW5nIGNhbGxpbmcgcmVzdHJpY3Rpb25z IG11c3QgYmUgZm9sbG93ZWQgb3IgdGhlDQo+ID4gKyAgc3lzdGVtIGJlaGF2aW9yIHdpbGwgbm90 IGJlIGRldGVybWluaXN0aWMuDQo+ID4gKyAgMS4gQ29udHJvbGxlckhhbmRsZSBtdXN0IGJlIGEg dmFsaWQgRUZJX0hBTkRMRSB0aGF0IHdhcyB1c2VkIG9uIGENCj4gcHJldmlvdXMNCj4gPiArICAg ICBjYWxsIHRvIHRoaXMgc2FtZSBkcml2ZXIncyBTdGFydCgpIGZ1bmN0aW9uLg0KPiA+ICsgIDIu IFRoZSBmaXJzdCBOdW1iZXJPZkNoaWxkcmVuIGhhbmRsZXMgb2YgQ2hpbGRIYW5kbGVCdWZmZXIg bXVzdCBhbGwgYmUgYQ0KPiB2YWxpZA0KPiA+ICsgICAgIEVGSV9IQU5ETEUuIEluIGFkZGl0aW9u LCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkDQo+IGluDQo+ID4g KyAgICAgdGhpcyBkcml2ZXIncyBTdGFydCgpIGZ1bmN0aW9uLCBhbmQgdGhlIFN0YXJ0KCkgZnVu Y3Rpb24gbXVzdCBoYXZlIGNhbGxlZA0KPiA+ICsgICAgIE9wZW5Qcm90b2NvbCgpIG9uIENvbnRy b2xsZXJIYW5kbGUgd2l0aCBhbiBBdHRyaWJ1dGUgb2YNCj4gPiArICAgICBFRklfT1BFTl9QUk9U T0NPTF9CWV9DSElMRF9DT05UUk9MTEVSLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUaGlz ICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9EUklWRVJfQklORElOR19QUk9U T0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgIEEgaGFuZGxlIHRvIHRoZSBkZXZpY2Ug YmVpbmcgc3RvcHBlZC4NCj4gVGhlIGhhbmRsZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG11c3Qgc3VwcG9ydCBhIGJ1cyBzcGVjaWZpYyBJL08gcHJvdG9jb2wgZm9yIHRo ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0byB1c2UgdG8g c3RvcCB0aGUgZGV2aWNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIE51bWJlck9mQ2hpbGRyZW4gIFRo ZSBudW1iZXIgb2YgY2hpbGQgZGV2aWNlIGhhbmRsZXMgaW4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDaGlsZEhhbmRsZUJ1ZmZlci4NCj4gPiArICBAcGFyYW1baW5dICBD aGlsZEhhbmRsZUJ1ZmZlciBBbiBhcnJheSBvZiBjaGlsZCBoYW5kbGVzIHRvIGJlIGZyZWVkLg0K PiBNYXkgYmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIGlmIE51 bWJlck9mQ2hpbGRyZW4gaXMgMC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgVGhlIGRldmljZSB3YXMgc3RvcHBlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9ERVZJ Q0VfRVJST1IgICAgICBUaGUgZGV2aWNlIGNvdWxkIG5vdCBiZSBzdG9wcGVkIGR1ZSB0byBhDQo+ IGRldmljZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNE cml2ZXJCaW5kaW5nU3RvcCAoDQo+ID4gKyAgSU4gIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NP TCAgICAgKlRoaXMsDQo+ID4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAg Q29udHJvbGxlciwNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBO dW1iZXJPZkNoaWxkcmVuLA0KPiA+ICsgIElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAg ICAgICpDaGlsZEhhbmRsZUJ1ZmZlcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTCAgICAgICAqUGFzc1RocnU7DQo+ID4gKyAgRFdfTU1DX0hDX1BSSVZB VEVfREFUQSAgICAgICAgICAgICAgKlByaXZhdGU7DQo+ID4gKyAgTElTVF9FTlRSWSAgICAgICAg ICAgICAgICAgICAgICAgICAgKkxpbms7DQo+ID4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAg ICAgICAgICAgICAgKk5leHRMaW5rOw0KPiA+ICsgIERXX01NQ19IQ19UUkIgICAgICAgICAgICAg ICAgICAgICAgICpUcmI7DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIkR3TW1j SGNEcml2ZXJCaW5kaW5nU3RvcDogU3RhcnRcbiIpKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0g Z0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ICsgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0K PiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVNkTW1jUGFzc1RocnVQcm90b2NvbEd1aWQsDQo+ ID4gKyAgICAgICAgICAgICAgICAgIChWT0lEKiopICZQYXNzVGhydSwNCj4gPiArICAgICAgICAg ICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAg ICAgQ29udHJvbGxlciwNCj4gPiArICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xf R0VUX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9GUk9NX1RISVMgKFBhc3NUaHJ1 KTsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENsb3NlIE5vbi1CbG9ja2luZyB0aW1lciBhbmQgZnJl ZSBUYXNrIGxpc3QuDQo+ID4gKyAgLy8NCj4gPiArICBpZiAoUHJpdmF0ZS0+VGltZXJFdmVudCAh PSBOVUxMKSB7DQo+ID4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKFByaXZhdGUtPlRpbWVyRXZlbnQp Ow0KPiA+ICsgICAgUHJpdmF0ZS0+VGltZXJFdmVudCA9IE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICsg IGlmIChQcml2YXRlLT5Db25uZWN0RXZlbnQgIT0gTlVMTCkgew0KPiA+ICsgICAgZ0JTLT5DbG9z ZUV2ZW50IChQcml2YXRlLT5Db25uZWN0RXZlbnQpOw0KPiA+ICsgICAgUHJpdmF0ZS0+Q29ubmVj dEV2ZW50ID0gTlVMTDsNCj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBBcyB0aGUgdGlt ZXIgaXMgY2xvc2VkLCB0aGVyZSBpcyBubyBuZWVkcyB0byB1c2UgVFBMIGxvY2sgdG8NCj4gPiAr ICAvLyBwcm90ZWN0IHRoZSBjcml0aWNhbCByZWdpb24gInF1ZXVlIi4NCj4gPiArICAvLw0KPiA+ ICsgIGZvciAoTGluayA9IEdldEZpcnN0Tm9kZSAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gPiArICAg ICAgICFJc051bGwgKCZQcml2YXRlLT5RdWV1ZSwgTGluayk7DQo+ID4gKyAgICAgICBMaW5rID0g TmV4dExpbmspIHsNCj4gPiArICAgIE5leHRMaW5rID0gR2V0TmV4dE5vZGUgKCZQcml2YXRlLT5R dWV1ZSwgTGluayk7DQo+ID4gKyAgICBSZW1vdmVFbnRyeUxpc3QgKExpbmspOw0KPiA+ICsgICAg VHJiID0gRFdfTU1DX0hDX1RSQl9GUk9NX1RISVMgKExpbmspOw0KPiA+ICsgICAgVHJiLT5QYWNr ZXQtPlRyYW5zYWN0aW9uU3RhdHVzID0gRUZJX0FCT1JURUQ7DQo+ID4gKyAgICBnQlMtPlNpZ25h bEV2ZW50IChUcmItPkV2ZW50KTsNCj4gPiArICAgIER3TW1jRnJlZVRyYiAoVHJiKTsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVW5pbnN0YWxsIEJsb2NrIEkvTyBwcm90 b2NvbCBmcm9tIHRoZSBkZXZpY2UgaGFuZGxlDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBn QlMtPlVuaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiArICAgICAgICAgICAgICAgICAg Q29udHJvbGxlciwNCj4gPiArICAgICAgICAgICAgICAgICAgJmdFZmlTZE1tY1Bhc3NUaHJ1UHJv dG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmKFByaXZhdGUtPlBhc3NUaHJ1KQ0K PiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgZ0JTLT5DbG9zZVByb3RvY29sICgNCj4gPiArICAgICAgICAgQ29udHJvbGxlciwNCj4gPiAr ICAgICAgICAgJmdFZmlQY2lJb1Byb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgVGhpcy0+RHJp dmVyQmluZGluZ0hhbmRsZSwNCj4gPiArICAgICAgICAgQ29udHJvbGxlcg0KPiA+ICsgICAgICAg ICApOw0KPiA+ICsNCj4gPiArICBGcmVlUG9vbCAoUHJpdmF0ZSk7DQo+ID4gKw0KPiA+ICsgIERF QlVHICgoREVCVUdfSU5GTywgIkR3TW1jSGNEcml2ZXJCaW5kaW5nU3RvcDogRW5kIHdpdGggJXJc biIsDQo+IFN0YXR1cykpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kcyBTRCBjb21tYW5kIHRvIGFuIFNEIGNhcmQgdGhh dCBpcyBhdHRhY2hlZCB0byB0aGUgU0QgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgVGhlIFBh c3NUaHJ1KCkgZnVuY3Rpb24gc2VuZHMgdGhlIFNEIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IFBhY2tl dCB0bw0KPiB0aGUgU0QNCj4gPiArICBjYXJkIHNwZWNpZmllZCBieSBTbG90Lg0KPiA+ICsNCj4g PiArICBJZiBQYWNrZXQgaXMgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gdGhlIFNEIGNhcmQsIHRoZW4g RUZJX1NVQ0NFU1MgaXMNCj4gcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIGEgZGV2aWNlIGVy cm9yIG9jY3VycyB3aGlsZSBzZW5kaW5nIHRoZSBQYWNrZXQsIHRoZW4NCj4gRUZJX0RFVklDRV9F UlJPUiBpcw0KPiA+ICsgIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiBTbG90IGlzIG5vdCBp biBhIHZhbGlkIHJhbmdlIGZvciB0aGUgU0QgY29udHJvbGxlciwgdGhlbg0KPiA+ICsgIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgUGFja2V0IGRl ZmluZXMgYSBkYXRhIGNvbW1hbmQgYnV0IGJvdGggSW5EYXRhQnVmZmVyIGFuZA0KPiBPdXREYXRh QnVmZmVyIGFyZQ0KPiA+ICsgIE5VTEwsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5l ZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgVGhpcyAgICAgICAgICAgQSBwb2ludGVy IHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgIFNs b3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8uDQo+ID4gKyAg QHBhcmFtW2luLG91dF0gUGFja2V0ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBTRCBjb21tYW5k IGRhdGEgc3RydWN0dXJlLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgIEV2ZW50ICAgICAgICAgIElm IEV2ZW50IGlzIE5VTEwsIGJsb2NraW5nIEkvTyBpcyBwZXJmb3JtZWQuIElmDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQgaXMgbm90IE5VTEwsIHRoZW4gbm9uYmxv Y2tpbmcgSS9PIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9y bWVkLCBhbmQgRXZlbnQgd2lsbCBiZSBzaWduYWxlZCB3aGVuIHRoZQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2tldCBjb21wbGV0ZXMuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBTRCBDb21tYW5kIFBhY2tldCB3YXMgc2Vu dCBieSB0aGUNCj4gaG9zdC4NCj4gPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBB IGRldmljZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nDQo+IHRvIHNlbmQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29tbWFuZCBQYWNrZXQuDQo+ ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgUGFja2V0LCBTbG90LCBvciB0aGUg Y29udGVudHMgb2YgdGhlDQo+IFBhY2tldCBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg UGFja2V0IGRlZmluZXMgYSBkYXRhIGNvbW1hbmQgYnV0DQo+IGJvdGgNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbkRhdGFCdWZmZXIgYW5kIE91dERhdGFCdWZmZXIgYXJl IE5VTEwuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9fTUVESUEgICAgICAgICAgU0QgRGV2aWNlIG5v dCBwcmVzZW50IGluIHRoZSBTbG90Lg0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAg ICAgIFRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSB0aGUgU0QNCj4gQ29tbWFuZCBQYWNrZXQNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo ZSBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKyAgQHJldHZhbCBFRklfQkFEX0JVRkZFUl9TSVpFICAg VGhlIEluVHJhbnNmZXJMZW5ndGggb3INCj4gT3V0VHJhbnNmZXJMZW5ndGgNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRzIHRoZSBsaW1pdCBzdXBwb3J0ZWQgYnkg U0QgY2FyZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaS5lLiBpZiB0 aGUgbnVtYmVyIG9mIGJ5dGVzIGV4Y2VlZCB0aGUgTGFzdA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExCQSkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtFRklBUEkNCj4gPiArRHdNbWNQYXNzVGhydVBhc3NUaHJ1ICgNCj4gPiArICBJTiAgICAg RUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICAqVGhpcywNCj4gPiArICBJTiAg ICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ICsgIElO IE9VVCBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgICpQYWNrZXQsDQo+ID4g KyAgSU4gICAgIEVGSV9FVkVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAg T1BUSU9OQUwNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAg ICpQcml2YXRlOw0KPiA+ICsgIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgKlRyYjsN Cj4gPiArICBFRklfVFBMICAgICAgICAgICAgICAgICAgICAgICAgIE9sZFRwbDsNCj4gPiArDQo+ ID4gKyAgaWYgKChUaGlzID09IE5VTEwpIHx8IChQYWNrZXQgPT0gTlVMTCkpIHsNCj4gPiArICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBp ZiAoKFBhY2tldC0+U2RNbWNDbWRCbGsgPT0gTlVMTCkgfHwgKFBhY2tldC0+U2RNbWNTdGF0dXNC bGsgPT0NCj4gTlVMTCkpIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoKFBhY2tldC0+T3V0RGF0YUJ1ZmZlciA9PSBO VUxMKSAmJiAoUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCAhPQ0KPiAwKSkgew0KPiA+ICsgICAg cmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlm ICgoUGFja2V0LT5JbkRhdGFCdWZmZXIgPT0gTlVMTCkgJiYgKFBhY2tldC0+SW5UcmFuc2Zlckxl bmd0aCAhPSAwKSkNCj4gew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9GUk9N X1RISVMgKFRoaXMpOw0KPiA+ICsNCj4gPiArICBpZiAoIVByaXZhdGUtPlNsb3RbU2xvdF0uRW5h YmxlKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgaWYgKCFQcml2YXRlLT5TbG90W1Nsb3RdLk1lZGlhUHJlc2VudCkgew0K PiA+ICsgICAgcmV0dXJuIEVGSV9OT19NRURJQTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFRy YiA9IER3TW1jQ3JlYXRlVHJiIChQcml2YXRlLCBTbG90LCBQYWNrZXQsIEV2ZW50KTsNCj4gPiAr ICBpZiAoVHJiID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNF UzsNCj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBJbW1lZGlhdGVseSByZXR1cm4gZm9y IGFzeW5jIEkvTy4NCj4gPiArICAvLw0KPiA+ICsgIGlmIChFdmVudCAhPSBOVUxMKSB7DQo+ID4g KyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIFdhaXQgYXN5bmMgSS9PIGxpc3QgaXMgZW1wdHkgYmVmb3JlIGV4ZWN1dGUgc3luYyBJ L08gb3BlcmF0aW9uLg0KPiA+ICsgIC8vDQo+ID4gKyAgd2hpbGUgKFRSVUUpIHsNCj4gPiArICAg IE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9OT1RJRlkpOw0KPiA+ICsgICAgaWYgKElzTGlz dEVtcHR5ICgmUHJpdmF0ZS0+UXVldWUpKSB7DQo+ID4gKyAgICAgIGdCUy0+UmVzdG9yZVRQTCAo T2xkVHBsKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBnQlMtPlJl c3RvcmVUUEwgKE9sZFRwbCk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBEd01t Y1dhaXRUcmJFbnYgKFByaXZhdGUsIFRyYik7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ICsgICAgZ290byBEb25lOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVz ID0gRHdNbWNFeGVjVHJiIChQcml2YXRlLCBUcmIpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiArICAgIGdvdG8gRG9uZTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0 YXR1cyA9IER3TW1jV2FpdFRyYlJlc3VsdCAoUHJpdmF0ZSwgVHJiKTsNCj4gPiArICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArRG9uZToNCj4gPiArICBpZiAoVHJiICE9IE5VTEwpIHsNCj4gPiArICAgIER3TW1jRnJl ZVRyYiAoVHJiKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFVzZWQgdG8gcmV0cmlldmUgbmV4dCBzbG90IG51 bWJlcnMgc3VwcG9ydGVkIGJ5IHRoZSBTRCBjb250cm9sbGVyLiBUaGUNCj4gPiArICBmdW5jdGlv biByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGFsbCBhdmFpbGFibGUgc2xvdHMgKHBvcHVsYXRl ZCBvcg0KPiA+ICsgIG5vdC1wb3B1bGF0ZWQpLg0KPiA+ICsNCj4gPiArICBUaGUgR2V0TmV4dFNs b3QoKSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5leHQgc2xvdCBudW1iZXIgb24gYW4gU0QNCj4g Y29udHJvbGxlci4NCj4gPiArICBJZiBvbiBpbnB1dCBTbG90IGlzIDB4RkYsIHRoZW4gdGhlIHNs b3QgbnVtYmVyIG9mIHRoZSBmaXJzdCBzbG90IG9uIHRoZSBTRA0KPiA+ICsgIGNvbnRyb2xsZXIg aXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgYSBzbG90IG51bWJlciB0aGF0 IHdhcyByZXR1cm5lZCBvbiBhIHByZXZpb3VzIGNhbGwgdG8NCj4gPiArICBHZXROZXh0U2xvdCgp LCB0aGVuIHRoZSBzbG90IG51bWJlciBvZiB0aGUgbmV4dCBzbG90IG9uIHRoZSBTRCBjb250cm9s bGVyDQo+IGlzDQo+ID4gKyAgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgbm90 IDB4RkYgYW5kIFNsb3Qgd2FzIG5vdCByZXR1cm5lZCBvbiBhIHByZXZpb3VzIGNhbGwgdG8NCj4g PiArICBHZXROZXh0U2xvdCgpLCBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQuDQo+ ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBsYXN0IHNsb3Qg b24gdGhlIFNEIGNvbnRyb2xsZXIsIHRoZW4NCj4gPiArICBFRklfTk9UX0ZPVU5EIGlzIHJldHVy bmVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICBUaGlzICAgICAgICAgICBBIHBvaW50 ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbixvdXRd IFNsb3QgICAgICAgICAgIE9uIGlucHV0LCBhIHBvaW50ZXIgdG8gYSBzbG90IG51bWJlciBvbiB0 aGUgU0QNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgYSBwb2ludGVy IHRvIHRoZSBuZXh0IHNsb3QgbnVtYmVyIG9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhlIFNEIGNvbnRyb2xsZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQW4gaW5wdXQgdmFsdWUgb2YgMHhGRiByZXRyaWV2ZXMgdGhlIGZpcnN0IHNsb3QN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb24gdGhlIFNEIGNv bnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBuZXh0IHNsb3QgbnVtYmVyIG9uIHRoZSBTRCBjb250cm9sbGVyDQo+IHdhcw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkIGluIFNsb3QuDQo+ID4gKyAgQHJl dHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlcmUgYXJlIG5vIG1vcmUgc2xvdHMgb24gdGhp cyBTRA0KPiBjb250cm9sbGVyLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IFNsb3QgaXMgbm90IDB4RkYgYW5kIFNsb3Qgd2FzIG5vdA0KPiByZXR1cm5lZCBvbiBhDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgY2FsbCB0byBHZXROZXh0 U2xvdCgpLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK0R3TW1jUGFzc1RocnVHZXROZXh0U2xvdCAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MICAgICAgICAqVGhpcywNCj4gPiArICBJTiBPVVQgVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpTbG90DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4gPiArDQo+ID4g KyAgaWYgKChUaGlzID09IE5VTEwpIHx8IChTbG90ID09IE5VTEwpKSB7DQo+ID4gKyAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUHJpdmF0 ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAoVGhpcyk7DQo+ID4gKw0KPiA+ICsgIGlm ICgqU2xvdCA9PSAweEZGKSB7DQo+ID4gKyAgICBpZiAoUHJpdmF0ZS0+U2xvdFswXS5FbmFibGUp IHsNCj4gPiArICAgICAgKlNsb3QgPSAwOw0KPiA+ICsgICAgICBQcml2YXRlLT5QcmV2aW91c1Ns b3QgPSAwOw0KPiA+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgICB9DQo+ID4g KyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiArICB9IGVsc2UgaWYgKCpTbG90ID09IFBy aXZhdGUtPlByZXZpb3VzU2xvdCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBVc2VkIHRvIGFsbG9jYXRl IGFuZCBidWlsZCBhIGRldmljZSBwYXRoIG5vZGUgZm9yIGFuIFNEIGNhcmQgb24gdGhlIFNEDQo+ ID4gKyAgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgVGhlIEJ1aWxkRGV2aWNlUGF0aCgpIGZ1 bmN0aW9uIGFsbG9jYXRlcyBhbmQgYnVpbGRzIGEgc2luZ2xlIGRldmljZSBub2RlDQo+ID4gKyAg Zm9yIHRoZSBTRCBjYXJkIHNwZWNpZmllZCBieSBTbG90Lg0KPiA+ICsNCj4gPiArICBJZiB0aGUg U0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBpcyBub3QgcHJlc2VudCBvbiB0aGUgU0QgY29udHJv bGxlciwgdGhlbg0KPiA+ICsgIEVGSV9OT1RfRk9VTkQgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ ICsgIElmIERldmljZVBhdGggaXMgTlVMTCwgdGhlbiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMg cmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoIHJlc291cmNl cyB0byBhbGxvY2F0ZSB0aGUgZGV2aWNlIHBhdGggbm9kZSwgdGhlbg0KPiA+ICsgIEVGSV9PVVRf T0ZfUkVTT1VSQ0VTIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBPdGhlcndpc2UsIERldmlj ZVBhdGggaXMgYWxsb2NhdGVkIHdpdGggdGhlIGJvb3Qgc2VydmljZSBBbGxvY2F0ZVBvb2woKSwN Cj4gPiArICB0aGUgY29udGVudHMgb2YgRGV2aWNlUGF0aCBhcmUgaW5pdGlhbGl6ZWQgdG8gZGVz Y3JpYmUgdGhlIFNEIGNhcmQNCj4gc3BlY2lmaWVkDQo+ID4gKyAgYnkgU2xvdCwgYW5kIEVGSV9T VUNDRVNTIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICBUaGlzICAg ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTU1DX1BBU1NfVEhSVV9QUk9UT0NP TA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsg IEBwYXJhbVtpbl0gICAgIFNsb3QgICAgICAgICAgIFNwZWNpZmllcyB0aGUgc2xvdCBudW1iZXIg b2YgdGhlIFNEIGNhcmQgZm9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2hpY2ggYSBkZXZpY2UgcGF0aCBub2RlIGlzIHRvIGJlIGFsbG9jYXRlZCBhbmQNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdC4NCj4gPiArICBAcGFyYW1baW4sb3V0 XSBEZXZpY2VQYXRoICAgICBBIHBvaW50ZXIgdG8gYSBzaW5nbGUgZGV2aWNlIHBhdGggbm9kZSB0 aGF0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSBT RCBjYXJkIHNwZWNpZmllZCBieSBTbG90LiBUaGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgdGhlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyIERldmljZVBhdGggd2l0 aCB0aGUgYm9vdCBzZXJ2aWNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QWxsb2NhdGVQb29sKCkuIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaS0NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiaWxpdHkgdG8gZnJlZSBEZXZpY2VQYXRoIHdoZW4g dGhlIGNhbGxlciBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlz aGVkIHdpdGggRGV2aWNlUGF0aC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgVGhlIGRldmljZSBwYXRoIG5vZGUgdGhhdCBkZXNjcmliZXMgdGhlIFNEDQo+IGNh cmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkgU2xv dCB3YXMgYWxsb2NhdGVkIGFuZCByZXR1cm5lZCBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERldmljZVBhdGguDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgVGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QgZG9lcyBub3QNCj4gZXhpc3Qgb24N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29udHJvbGxlci4N Cj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBEZXZpY2VQYXRoIGlzIE5VTEwu DQo+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgVGhlcmUgYXJlIG5vdCBlbm91 Z2ggcmVzb3VyY2VzIHRvDQo+IGFsbG9jYXRlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRGV2aWNlUGF0aC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0VGSUFQSQ0KPiA+ICtEd01tY1Bhc3NUaHJ1QnVpbGREZXZpY2VQYXRoICgNCj4gPiArICBJ TiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgKlRoaXMsDQo+ID4gKyAg SU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gKyAg SU4gT1VUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICoqRGV2aWNlUGF0aA0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAg KlByaXZhdGU7DQo+ID4gKyAgU0RfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAqU2ROb2Rl Ow0KPiA+ICsgIEVNTUNfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgKkVtbWNOb2RlOw0KPiA+ ICsNCj4gPiArICBpZiAoKFRoaXMgPT0gTlVMTCkgfHwgKERldmljZVBhdGggPT0gTlVMTCkgfHwg KFNsb3QgPj0NCj4gRFdfTU1DX0hDX01BWF9TTE9UKSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUgPSBEV19N TUNfSENfUFJJVkFURV9GUk9NX1RISVMgKFRoaXMpOw0KPiA+ICsNCj4gPiArICBpZiAoKCFQcml2 YXRlLT5TbG90W1Nsb3RdLkVuYWJsZSkgfHwgKCFQcml2YXRlLT5TbG90W1Nsb3RdLk1lZGlhUHJl c2VudCkpIHsNCj4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgaWYgKFByaXZhdGUtPlNsb3RbU2xvdF0uQ2FyZFR5cGUgPT0gU2RDYXJkVHlwZSkg ew0KPiA+ICsgICAgU2ROb2RlID0gQWxsb2NhdGVDb3B5UG9vbCAoc2l6ZW9mIChTRF9ERVZJQ0Vf UEFUSCksDQo+ICZtU2REcFRlbXBsYXRlKTsNCj4gPiArICAgIGlmIChTZE5vZGUgPT0gTlVMTCkg ew0KPiA+ICsgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICB9DQo+ ID4gKyAgICBTZE5vZGUtPlNsb3ROdW1iZXIgPSBTbG90Ow0KPiA+ICsNCj4gPiArICAgICpEZXZp Y2VQYXRoID0gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBTZE5vZGU7DQo+ID4gKyAgfSBl bHNlIGlmIChQcml2YXRlLT5TbG90W1Nsb3RdLkNhcmRUeXBlID09IEVtbWNDYXJkVHlwZSkgew0K PiA+ICsgICAgRW1tY05vZGUgPSBBbGxvY2F0ZUNvcHlQb29sIChzaXplb2YgKEVNTUNfREVWSUNF X1BBVEgpLA0KPiAmbUVtbWNEcFRlbXBsYXRlKTsNCj4gPiArICAgIGlmIChFbW1jTm9kZSA9PSBO VUxMKSB7DQo+ID4gKyAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICAg IH0NCj4gPiArICAgIEVtbWNOb2RlLT5TbG90TnVtYmVyID0gU2xvdDsNCj4gPiArDQo+ID4gKyAg ICAqRGV2aWNlUGF0aCA9IChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgRW1tY05vZGU7DQo+ ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBDdXJyZW50bHkgd2Ugb25s eSBzdXBwb3J0IFNEIGFuZCBFTU1DIHR3byBkZXZpY2Ugbm9kZXMuDQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1 cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRoaXMgZnVu Y3Rpb24gcmV0cmlldmVzIGFuIFNEIGNhcmQgc2xvdCBudW1iZXIgYmFzZWQgb24gdGhlIGlucHV0 IGRldmljZQ0KPiBwYXRoLg0KPiA+ICsNCj4gPiArICBUaGUgR2V0U2xvdE51bWJlcigpIGZ1bmN0 aW9uIHJldHJpZXZlcyBzbG90IG51bWJlciBmb3IgdGhlIFNEIGNhcmQNCj4gc3BlY2lmaWVkDQo+ ID4gKyAgYnkgdGhlIERldmljZVBhdGggbm9kZS4gSWYgRGV2aWNlUGF0aCBpcyBOVUxMLA0KPiBF RklfSU5WQUxJRF9QQVJBTUVURVIgaXMNCj4gPiArICByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAg SWYgRGV2aWNlUGF0aCBpcyBub3QgYSBkZXZpY2UgcGF0aCBub2RlIHR5cGUgdGhhdCB0aGUgU0Qg UGFzcyBUaHJ1IGRyaXZlcg0KPiA+ICsgIHN1cHBvcnRzLCBFRklfVU5TVVBQT1JURUQgaXMgcmV0 dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBE ZXZpY2VQYXRoICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGRldmljZSBwYXRoIG5vZGUgdGhhdA0K PiBkZXNjcmliZXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIFNEIGNh cmQgb24gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ID4gKyAgQHBhcmFtW291dF0gU2xvdCAgICAgICAg ICAgICAgT24gcmV0dXJuLCBwb2ludHMgdG8gdGhlIHNsb3QgbnVtYmVyIG9mIGFuIFNEDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZCBvbiB0aGUgU0QgY29udHJvbGxl ci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU0QgY2FyZCBz bG90IG51bWJlciBpcyByZXR1cm5lZCBpbiBTbG90Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSIFNsb3Qgb3IgRGV2aWNlUGF0aCBpcyBOVUxMLg0KPiA+ICsgIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgIERldmljZVBhdGggaXMgbm90IGEgZGV2aWNlIHBhdGggbm9k ZQ0KPiB0eXBlIHRoYXQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUg U0QgUGFzcyBUaHJ1IGRyaXZlciBzdXBwb3J0cy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY1Bhc3NUaHJ1R2V0U2xvdE51bWJlciAoDQo+ ID4gKyAgSU4gIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgICAgICpUaGlzLA0K PiA+ICsgIElOICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgICAqRGV2aWNl UGF0aCwNCj4gPiArICBPVVQgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KlNsb3QNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAg ICAgICAgICpQcml2YXRlOw0KPiA+ICsgIFNEX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAg KlNkTm9kZTsNCj4gPiArICBFTU1DX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICpFbW1jTm9k ZTsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3ROdW1iZXI7DQo+ ID4gKw0KPiA+ICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAoRGV2aWNlUGF0aCA9PSBOVUxMKSB8 fCAoU2xvdCA9PSBOVUxMKSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9G Uk9NX1RISVMgKFRoaXMpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENoZWNrIHdoZXRo ZXIgdGhlIERldmljZVBhdGggYmVsb25ncyB0byBTRF9ERVZJQ0VfUEFUSCBvcg0KPiBFTU1DX0RF VklDRV9QQVRIDQo+ID4gKyAgLy8NCj4gPiArICBpZiAoKERldmljZVBhdGgtPlR5cGUgIT0gTUVT U0FHSU5HX0RFVklDRV9QQVRIKSB8fA0KPiA+ICsgICAgICAoKERldmljZVBhdGgtPlN1YlR5cGUg IT0gTVNHX1NEX0RQKSAmJg0KPiA+ICsgICAgICAgKERldmljZVBhdGgtPlN1YlR5cGUgIT0gTVNH X0VNTUNfRFApKSB8fA0KPiA+ICsgICAgICAoRGV2aWNlUGF0aE5vZGVMZW5ndGgoRGV2aWNlUGF0 aCkgIT0gc2l6ZW9mKFNEX0RFVklDRV9QQVRIKSkgfHwNCj4gPiArICAgICAgKERldmljZVBhdGhO b2RlTGVuZ3RoKERldmljZVBhdGgpICE9DQo+IHNpemVvZihFTU1DX0RFVklDRV9QQVRIKSkpIHsN Cj4gPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICBpZiAoRGV2aWNlUGF0aC0+U3ViVHlwZSA9PSBNU0dfU0RfRFApIHsNCj4gPiArICAgIFNkTm9k ZSA9IChTRF9ERVZJQ0VfUEFUSCAqKSBEZXZpY2VQYXRoOw0KPiA+ICsgICAgU2xvdE51bWJlciA9 IFNkTm9kZS0+U2xvdE51bWJlcjsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgRW1tY05vZGUg PSAoRU1NQ19ERVZJQ0VfUEFUSCAqKSBEZXZpY2VQYXRoOw0KPiA+ICsgICAgU2xvdE51bWJlciA9 IEVtbWNOb2RlLT5TbG90TnVtYmVyOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKFNsb3RO dW1iZXIgPj0gRFdfTU1DX0hDX01BWF9TTE9UKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX05PVF9G T1VORDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChQcml2YXRlLT5TbG90W1Nsb3ROdW1i ZXJdLkVuYWJsZSkgew0KPiA+ICsgICAgKlNsb3QgPSBTbG90TnVtYmVyOw0KPiA+ICsgICAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX05P VF9GT1VORDsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlc2V0 cyBhbiBTRCBjYXJkIHRoYXQgaXMgY29ubmVjdGVkIHRvIHRoZSBTRCBjb250cm9sbGVyLg0KPiA+ ICsNCj4gPiArICBUaGUgUmVzZXREZXZpY2UoKSBmdW5jdGlvbiByZXNldHMgdGhlIFNEIGNhcmQg c3BlY2lmaWVkIGJ5IFNsb3QuDQo+ID4gKw0KPiA+ICsgIElmIHRoaXMgU0QgY29udHJvbGxlciBk b2VzIG5vdCBzdXBwb3J0IGEgZGV2aWNlIHJlc2V0IG9wZXJhdGlvbiwNCj4gPiArICBFRklfVU5T VVBQT1JURUQgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgbm90IGluIGEg dmFsaWQgc2xvdCBudW1iZXIgZm9yIHRoaXMgU0QgY29udHJvbGxlciwNCj4gPiArICBFRklfSU5W QUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBkZXZpY2Ug cmVzZXQgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0 aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAg ICAgICAgICBTcGVjaWZpZXMgdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIGJlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBTRCBjYXJkIHNwZWNpZmllZCBieSBT bG90IHdhcyByZXNldC4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUg U0QgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IGENCj4gZGV2aWNlDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQgb3BlcmF0aW9uLg0KPiA+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSIFNsb3QgbnVtYmVyIGlzIGludmFsaWQuDQo+ID4gKyAgQHJl dHZhbCBFRklfTk9fTUVESUEgICAgICAgICAgU0QgRGV2aWNlIG5vdCBwcmVzZW50IGluIHRoZSBT bG90Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIFRoZSByZXNldCBjb21t YW5kIGZhaWxlZCBkdWUgdG8gYSBkZXZpY2UNCj4gZXJyb3INCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY1Bhc3NUaHJ1UmVzZXREZXZpY2Ug KA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgICAgICAqVGhp cywNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xv dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAg ICAgKlByaXZhdGU7DQo+ID4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICAqTGlu azsNCj4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICpOZXh0TGluazsNCj4g PiArICBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICpUcmI7DQo+ID4gKyAgRUZJX1RQ TCAgICAgICAgICAgICAgICAgICAgICAgICBPbGRUcGw7DQo+ID4gKw0KPiA+ICsgIGlmIChUaGlz ID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBQcml2YXRlID0gRFdfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElT IChUaGlzKTsNCj4gPiArDQo+ID4gKyAgaWYgKCFQcml2YXRlLT5TbG90W1Nsb3RdLkVuYWJsZSkg ew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIGlmICghUHJpdmF0ZS0+U2xvdFtTbG90XS5NZWRpYVByZXNlbnQpIHsNCj4gPiAr ICAgIHJldHVybiBFRklfTk9fTUVESUE7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIEZyZWUgYWxsIGFzeW5jIEkvTyByZXF1ZXN0cyBpbiB0aGUgcXVldWUNCj4gPiArICAv Lw0KPiA+ICsgIE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9OT1RJRlkpOw0KPiA+ICsNCj4g PiArICBmb3IgKExpbmsgPSBHZXRGaXJzdE5vZGUgKCZQcml2YXRlLT5RdWV1ZSk7DQo+ID4gKyAg ICAgICAhSXNOdWxsICgmUHJpdmF0ZS0+UXVldWUsIExpbmspOw0KPiA+ICsgICAgICAgTGluayA9 IE5leHRMaW5rKSB7DQo+ID4gKyAgICBOZXh0TGluayA9IEdldE5leHROb2RlICgmUHJpdmF0ZS0+ UXVldWUsIExpbmspOw0KPiA+ICsgICAgUmVtb3ZlRW50cnlMaXN0IChMaW5rKTsNCj4gPiArICAg IFRyYiA9IERXX01NQ19IQ19UUkJfRlJPTV9USElTIChMaW5rKTsNCj4gPiArICAgIFRyYi0+UGFj a2V0LT5UcmFuc2FjdGlvblN0YXR1cyA9IEVGSV9BQk9SVEVEOw0KPiA+ICsgICAgZ0JTLT5TaWdu YWxFdmVudCAoVHJiLT5FdmVudCk7DQo+ID4gKyAgICBEd01tY0ZyZWVUcmIgKFRyYik7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBnQlMtPlJlc3RvcmVUUEwgKE9sZFRwbCk7DQo+ID4gKw0KPiA+ ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9FbWJlZGRl ZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuYw0KPiBiL0VtYmVkZGVkUGtnL0RyaXZl cnMvRHdNbWNIY0R4ZS9Ed01tY0hjaS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLmIwOTFmOTgwM2IyZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuYw0KPiA+IEBAIC0w LDAgKzEsMTYwMiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBUaGlzIGRyaXZlciBpcyB1c2Vk IHRvIG1hbmFnZSBEZXNpZ253YXJlIFNEL01NQyBQQ0kgaG9zdCBjb250cm9sbGVycy4NCj4gPiAr DQo+ID4gKyAgSXQgd291bGQgZXhwb3NlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MIGZv ciB1cHBlciBsYXllcg0KPiB1c2UuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSAt IDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAr ICBDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFybyBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ICsNCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiBhdmFpbGFibGUNCj4gPiArICB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVz DQo+IHRoaXMNCj4gPiArICBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAg V0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvRW1tYy5oPg0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlT dGFuZGFyZC9TZC5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQXJtTGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExp YnJhcnkvRG1hTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9y eUFsbG9jYXRpb25MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNl c1RhYmxlTGliLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiRHdNbWNIY0R4ZS5oIg0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgRHVtcCB0aGUgY29udGVudCBvZiBTRC9NTUMgaG9zdCBjb250cm9s bGVyJ3MgQ2FwYWJpbGl0eSBSZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgU2xv dCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvLg0KPiA+ICsgIEBw YXJhbVtpbl0gIENhcGFiaWxpdHkgICAgICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBjYXBhYmls aXR5IGRhdGEuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtEdW1wQ2FwYWJpbGl0 eVJlZyAoDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJTiBE V19NTUNfSENfU0xPVF9DQVAgICAqQ2FwYWJpbGl0eQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IC8vDQo+ID4gKyAgLy8gRHVtcCBDYXBhYmlsaXR5IERhdGENCj4gPiArICAvLw0KPiA+ICsgIERF QlVHICgoDQo+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgIiA9PSBTbG90IFslZF0gQ2Fw YWJpbGl0eSBpcyAweCV4ID09XG4iLA0KPiA+ICsgICAgU2xvdCwNCj4gPiArICAgIENhcGFiaWxp dHkNCj4gPiArICAgICkpOw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJVR19JTkZPLA0K PiA+ICsgICAgIiAgIEJhc2UgQ2xrIEZyZXEgICAgICVkS0h6XG4iLA0KPiA+ICsgICAgQ2FwYWJp bGl0eS0+QmFzZUNsa0ZyZXENCj4gPiArICAgICkpOw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAg ICBERUJVR19JTkZPLA0KPiA+ICsgICAgIiAgIEJ1c1dpZHRoICAgICAgICAgICVkXG4iLA0KPiA+ ICsgICAgQ2FwYWJpbGl0eS0+QnVzV2lkdGgNCj4gPiArICAgICkpOw0KPiA+ICsgIERFQlVHICgo DQo+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgIiAgIEhpZ2hTcGVlZCBTdXBwb3J0ICVh XG4iLA0KPiA+ICsgICAgQ2FwYWJpbGl0eS0+SGlnaFNwZWVkID8gIlRSVUUiIDogIkZBTFNFIg0K PiA+ICsgICAgKSk7DQo+ID4gKyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVHX0lORk8sDQo+ID4g KyAgICAiICAgVm9sdGFnZSAxLjggICAgICAgJWFcbiIsDQo+ID4gKyAgICBDYXBhYmlsaXR5LT5W b2x0YWdlMTggPyAiVFJVRSIgOiAiRkFMU0UiDQo+ID4gKyAgICApKTsNCj4gPiArICBERUJVRyAo KA0KPiA+ICsgICAgREVCVUdfSU5GTywNCj4gPiArICAgICIgICA2NC1iaXQgU3lzIEJ1cyAgICAl YVxuIiwNCj4gPiArICAgIENhcGFiaWxpdHktPlN5c0J1czY0ID8gIlRSVUUiIDogIkZBTFNFIg0K PiA+ICsgICAgKSk7DQo+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiICAgU2xvdFR5cGUgICAg ICAgICAgIikpOw0KPiA+ICsgIGlmIChDYXBhYmlsaXR5LT5TbG90VHlwZSA9PSAweDAwKSB7DQo+ ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYVxuIiwgIlJlbW92YWJsZSBTbG90IikpOw0K PiA+ICsgIH0gZWxzZSBpZiAoQ2FwYWJpbGl0eS0+U2xvdFR5cGUgPT0gMHgwMSkgew0KPiA+ICsg ICAgREVCVUcgKChERUJVR19JTkZPLCAiJWFcbiIsICJFbWJlZGRlZCBTbG90IikpOw0KPiA+ICsg IH0gZWxzZSBpZiAoQ2FwYWJpbGl0eS0+U2xvdFR5cGUgPT0gMHgwMikgew0KPiA+ICsgICAgREVC VUcgKChERUJVR19JTkZPLCAiJWFcbiIsICJTaGFyZWQgQnVzIFNsb3QiKSk7DQo+ID4gKyAgfSBl bHNlIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIiVhXG4iLCAiUmVzZXJ2ZWQiKSk7 DQo+ID4gKyAgfQ0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ICsg ICAgIiAgIFNEUjUwICBTdXBwb3J0ICAgICVhXG4iLA0KPiA+ICsgICAgQ2FwYWJpbGl0eS0+U2Ry NTAgPyAiVFJVRSIgOiAiRkFMU0UiDQo+ID4gKyAgICApKTsNCj4gPiArICBERUJVRyAoKA0KPiA+ ICsgICAgREVCVUdfSU5GTywNCj4gPiArICAgICIgICBTRFIxMDQgU3VwcG9ydCAgICAlYVxuIiwN Cj4gPiArICAgIENhcGFiaWxpdHktPlNkcjEwNCA/ICJUUlVFIiA6ICJGQUxTRSINCj4gPiArICAg ICkpOw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgIiAg IEREUjUwICBTdXBwb3J0ICAgICVhXG4iLA0KPiA+ICsgICAgQ2FwYWJpbGl0eS0+RGRyNTAgPyAi VFJVRSIgOiAiRkFMU0UiDQo+ID4gKyAgICApKTsNCj4gPiArICByZXR1cm47DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFNldCBhbGwgaW50ZXJydXB0IHN0YXR1cyBiaXRzIGluIE5v cm1hbCBhbmQgRXJyb3IgSW50ZXJydXB0IFN0YXR1cyBFbmFibGUNCj4gPiArICByZWdpc3Rlci4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHBy b3RvY29sIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg IFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNFbmFibGVJbnRlcnJ1cHQgKA0KPiA+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbnRTdGF0dXM7DQo+ID4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICBJZEludEVuOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgSWRTdHM7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRW5hYmxlIGFsbCBiaXRzIGlu IEludGVycnVwdCBNYXNrIFJlZ2lzdGVyDQo+ID4gKyAgLy8NCj4gPiArICBJbnRTdGF0dXMgPSAw Ow0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0lOVE1BU0ssIEludFN0YXR1 cyk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2xlYXIgc3RhdHVzIGluIEludGVycnVw dCBTdGF0dXMgUmVnaXN0ZXINCj4gPiArICAvLw0KPiA+ICsgIEludFN0YXR1cyA9IH4wOw0KPiA+ ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIEludFN0YXR1cyk7DQo+ ID4gKw0KPiA+ICsgIElkSW50RW4gPSB+MDsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSAr IERXX01NQ19JRElOVEVOLCBJZEludEVuKTsNCj4gPiArDQo+ID4gKyAgSWRTdHMgPSB+MDsNCj4g PiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19JRFNUUywgSWRTdHMpOw0KPiA+ICsN Cj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRHdNbWNIY0dldENhcGFiaWxpdHkgKA0KPiA+ICsgIElOICAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAg ICAgICBDb250cm9sbGVyLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBT bG90LA0KPiA+ICsgICAgIE9VVCBEV19NTUNfSENfU0xPVF9DQVAgICAgICAqQ2FwYWNpdHkNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBQTEFURk9STV9EV19NTUNfUFJPVE9DT0wgICAgICAgKlBs YXRmb3JtRHdNbWM7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgIFN0YXR1 czsNCj4gPiArDQo+ID4gKyAgaWYgKENhcGFjaXR5ID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+ TG9jYXRlUHJvdG9jb2wgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ1BsYXRmb3JtRHdNbWNQ cm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAg ICAgICAgICAgIChWT0lEICoqKSAmUGxhdGZvcm1Ed01tYw0KPiA+ICsgICAgICAgICAgICAgICAg ICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBT dGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIFN0YXR1cyA9IFBsYXRmb3JtRHdNbWMtPkdldENhcGFi aWxpdHkgKENvbnRyb2xsZXIsIFNsb3QsIENhcGFjaXR5KTsNCj4gPiArICByZXR1cm4gU3RhdHVz Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEZXRlY3Qgd2hldGhlciB0aGVyZSBp cyBhIFNEL01NQyBjYXJkIGF0dGFjaGVkIGF0IHRoZSBzcGVjaWZpZWQNCj4gU0QvTU1DIGhvc3QN Cj4gPiArICBjb250cm9sbGVyIHNsb3QuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3Qg Q29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy4xIGZvciBkZXRhaWxzLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBEZXZJbyAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJv dG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICBUaGUgc2xv dCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29tbWFuZA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG8uDQo+ID4gKyAgQHBhcmFtW291dF0gTWVkaWFQcmVz ZW50ICBUaGUgcG9pbnRlciB0byB0aGUgbWVkaWEgcHJlc2VudCBib29sZWFuDQo+IHZhbHVlLg0K PiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZXJlIGlzIG5vIG1lZGlh IGNoYW5nZSBoYXBwZW5lZC4NCj4gPiArICBAcmV0dmFsIEVGSV9NRURJQV9DSEFOR0VEIFRoZXJl IGlzIG1lZGlhIGNoYW5nZSBoYXBwZW5lZC4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAg ICAgIFRoZSBkZXRlY3Rpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRV Uw0KPiA+ICtEd01tY0hjQ2FyZERldGVjdCAoDQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAgICAg ICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgICBD b250cm9sbGVyLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ ID4gKyAgICAgT1VUIEJPT0xFQU4gICAgICAgICAgICAgICAgKk1lZGlhUHJlc2VudA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFBMQVRGT1JNX0RXX01NQ19QUk9UT0NPTCAgKlBsYXRmb3JtRHdN bWM7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ ICsgIGlmIChNZWRpYVByZXNlbnQgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZB TElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90 b2NvbCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnUGxhdGZvcm1Ed01tY1Byb3RvY29sR3Vp ZCwNCj4gPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAg KFZPSUQgKiopICZQbGF0Zm9ybUR3TW1jDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g PiArICB9DQo+ID4gKyAgKk1lZGlhUHJlc2VudCA9IFBsYXRmb3JtRHdNbWMtPkNhcmREZXRlY3Qg KENvbnRyb2xsZXIsIFNsb3QpOw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0K PiA+ICsNCj4gPiArU1RBVElDDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY1VwZGF0ZUNs b2NrICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgIERldkJhc2UNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENtZDsNCj4gPiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgIEludFN0YXR1czsNCj4gPiArDQo+ID4gKyAgQ21kID0g QklUX0NNRF9XQUlUX1BSVkRBVEFfQ09NUExFVEUgfA0KPiBCSVRfQ01EX1VQREFURV9DTE9DS19P TkxZIHwNCj4gPiArICAgICAgICBCSVRfQ01EX1NUQVJUOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChE ZXZCYXNlICsgRFdfTU1DX0NNRCwgQ21kKTsNCj4gPiArDQo+ID4gKyAgd2hpbGUgKDEpIHsNCj4g PiArICAgIENtZCA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQ01EKTsNCj4gPiArDQo+ ID4gKyAgICBpZiAoIShDbWQgJiBDTURfU1RBUlRfQklUKSkgew0KPiA+ICsgICAgICBicmVhazsN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBJbnRTdGF0dXMgPSBNbWlvUmVhZDMyIChEZXZC YXNlICsgRFdfTU1DX1JJTlRTVFMpOw0KPiA+ICsNCj4gPiArICAgIGlmIChJbnRTdGF0dXMgJiBE V19NTUNfSU5UX0hMRSkgew0KPiA+ICsgICAgICBERUJVRyAoKA0KPiA+ICsgICAgICAgIERFQlVH X0VSUk9SLA0KPiA+ICsgICAgICAgICJEd01tY0hjVXBkYXRlQ2xvY2s6IGZhaWxlZCB0byB1cGRh dGUgbW1jIGNsb2NrIGZyZXF1ZW5jeVxuIg0KPiA+ICsgICAgICAgICkpOw0KPiA+ICsgICAgICBy ZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg U3RvcCBTRC9NTUMgY2FyZCBjbG9jay4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAg ICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFN1Y2NlZWQgdG8gc3RvcCBTRC9NTUMgY2xvY2suDQo+ ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBGYWlsIHRvIHN0b3AgU0QvTU1DIGNsb2Nr Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY1N0b3BDbG9j ayAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBEZXZCYXNlDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBDbGtFbmE7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gRGlzYWJsZSBNTUMgY2xvY2sgZmlyc3QNCj4gPiArICAvLw0KPiA+ICsgIENsa0VuYSA9 IDA7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ0xLRU5BLCBDbGtFbmEp Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBEd01tY0hjVXBkYXRlQ2xvY2sgKERldkJhc2UpOw0K PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7 DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFNEL01NQyBjYXJkIGNsb2NrIHN1cHBseS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gQ2xvY2tGcmVxICAgICAgVGhlIG1heCBjbG9jayBmcmVxdWVuY3kgdG8g YmUgc2V0LiBUaGUgdW5pdCBpcw0KPiBLSHouDQo+ID4gKyAgQHBhcmFtW2luXSBDYXBhYmlsaXR5 ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2NrIGlzbid0IHN1cHBsaWVkIHN1 Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1j SGNDbG9ja1N1cHBseSAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBEZXZCYXNl LA0KPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxLA0KPiA+ICsgIElO IERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgQmFzZUNsa0ZyZXE7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBTZXR0aW5nRnJlcTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIERpdmlz b3I7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBSZW1haW5kZXI7DQo+ID4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBNbWNTdGF0dXM7DQo+ID4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICBDbGtFbmE7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBD bGtTcmM7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2FsY3VsYXRlIGEgZGl2aXNvciBm b3IgU0QgY2xvY2sgZnJlcXVlbmN5DQo+ID4gKyAgLy8NCj4gPiArICBBU1NFUlQgKENhcGFiaWxp dHkuQmFzZUNsa0ZyZXEgIT0gMCk7DQo+ID4gKw0KPiA+ICsgIEJhc2VDbGtGcmVxID0gQ2FwYWJp bGl0eS5CYXNlQ2xrRnJlcTsNCj4gPiArICBpZiAoQ2xvY2tGcmVxID09IDApIHsNCj4gPiArICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBp ZiAoQ2xvY2tGcmVxID4gQmFzZUNsa0ZyZXEpIHsNCj4gPiArICAgIENsb2NrRnJlcSA9IEJhc2VD bGtGcmVxOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDYWxjdWxhdGUg dGhlIGRpdmlzb3Igb2YgYmFzZSBmcmVxdWVuY3kuDQo+ID4gKyAgLy8NCj4gPiArICBEaXZpc29y ICAgICA9IDA7DQo+ID4gKyAgU2V0dGluZ0ZyZXEgPSBCYXNlQ2xrRnJlcTsNCj4gPiArICB3aGls ZSAoQ2xvY2tGcmVxIDwgU2V0dGluZ0ZyZXEpIHsNCj4gPiArICAgIERpdmlzb3IrKzsNCj4gPiAr DQo+ID4gKyAgICBTZXR0aW5nRnJlcSA9IEJhc2VDbGtGcmVxIC8gKDIgKiBEaXZpc29yKTsNCj4g PiArICAgIFJlbWFpbmRlciAgID0gQmFzZUNsa0ZyZXEgJSAoMiAqIERpdmlzb3IpOw0KPiA+ICsg ICAgaWYgKChDbG9ja0ZyZXEgPT0gU2V0dGluZ0ZyZXEpICYmIChSZW1haW5kZXIgPT0gMCkpIHsN Cj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBpZiAoKENsb2NrRnJlcSA9 PSBTZXR0aW5nRnJlcSkgJiYgKFJlbWFpbmRlciAhPSAwKSkgew0KPiA+ICsgICAgICBTZXR0aW5n RnJlcSArKzsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoDQo+ ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgIkJhc2VDbGtGcmVxICVkS0h6IERpdmlzb3Ig JWQgQ2xvY2tGcmVxICVkS2h6XG4iLA0KPiA+ICsgICAgQmFzZUNsa0ZyZXEsDQo+ID4gKyAgICBE aXZpc29yLA0KPiA+ICsgICAgQ2xvY2tGcmVxDQo+ID4gKyAgICApKTsNCj4gPiArDQo+ID4gKyAg Ly8NCj4gPiArICAvLyBXYWl0IHVudGlsIE1NQyBpcyBpZGxlDQo+ID4gKyAgLy8NCj4gPiArICBk byB7DQo+ID4gKyAgICBNbWNTdGF0dXMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1NU QVRVUyk7DQo+ID4gKyAgfSB3aGlsZSAoTW1jU3RhdHVzICYgRFdfTU1DX1NUU19EQVRBX0JVU1kp Ow0KPiA+ICsNCj4gPiArICBkbyB7DQo+ID4gKyAgICBTdGF0dXMgPSBEd01tY0hjU3RvcENsb2Nr IChEZXZCYXNlKTsNCj4gPiArICB9IHdoaWxlIChFRklfRVJST1IgKFN0YXR1cykpOw0KPiA+ICsN Cj4gPiArICBkbyB7DQo+ID4gKyAgICBDbGtTcmMgPSAwOw0KPiA+ICsgICAgTW1pb1dyaXRlMzIg KERldkJhc2UgKyBEV19NTUNfQ0xLU1JDLCBDbGtTcmMpOw0KPiA+ICsgICAgLy8NCj4gPiArICAg IC8vIFNldCBjbG9jayBkaXZpc29yDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgTW1pb1dyaXRlMzIg KERldkJhc2UgKyBEV19NTUNfQ0xLRElWLCBEaXZpc29yKTsNCj4gPiArICAgIC8vDQo+ID4gKyAg ICAvLyBFbmFibGUgTU1DIGNsb2NrDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgQ2xrRW5hID0gMTsN Cj4gPiArICAgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NMS0VOQSwgQ2xrRW5hKTsN Cj4gPiArDQo+ID4gKyAgICBTdGF0dXMgPSBEd01tY0hjVXBkYXRlQ2xvY2sgKERldkJhc2UpOw0K PiA+ICsgIH0gd2hpbGUgKEVGSV9FUlJPUiAoU3RhdHVzKSk7DQo+ID4gKw0KPiA+ICsgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2V0IHRoZSBT RC9NTUMgYnVzIHdpZHRoLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xs ZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuNCBmb3IgZGV0YWlscy4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGlu c3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gSXNEZHIgICAgICAgICAgQSBib29sZWFuIHRvIGlu ZGljYXRlIGl0J3MgZHVhbCBkYXRhIHJhdGUgb3Igbm90Lg0KPiA+ICsgIEBwYXJhbVtpbl0gQnVz V2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB1c2VkIGJ5IHRoZSBTRC9NTUMgZGV2aWNlLCBpdA0K PiBtdXN0IGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCA0IG9yIDguDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGJ1cyB3aWR0aCBpcyBz ZXQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGJ1 cyB3aWR0aCBpc24ndCBzZXQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VG SV9TVEFUVVMNCj4gPiArRHdNbWNIY1NldEJ1c1dpZHRoICgNCj4gPiArICBJTiBVSU5UTiAgICAg ICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICBJ c0RkciwNCj4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBDdHlwZTsNCj4gPiAr ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFVoczsNCj4gPiArDQo+ID4gKyAgc3dpdGNoIChC dXNXaWR0aCkgew0KPiA+ICsgIGNhc2UgMToNCj4gPiArICAgIEN0eXBlID0gTU1DXzFCSVRfTU9E RTsNCj4gPiArICAgIGJyZWFrOw0KPiA+ICsgIGNhc2UgNDoNCj4gPiArICAgIEN0eXBlID0gTU1D XzRCSVRfTU9ERTsNCj4gPiArICAgIGJyZWFrOw0KPiA+ICsgIGNhc2UgODoNCj4gPiArICAgIEN0 eXBlID0gTU1DXzhCSVRfTU9ERTsNCj4gPiArICAgIGJyZWFrOw0KPiA+ICsgIGRlZmF1bHQ6DQo+ ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArICBN bWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DVFlQRSwgQ3R5cGUpOw0KPiA+ICsNCj4gPiAr ICBVaHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1VIU1JFRyk7DQo+ID4gKw0KPiA+ ICsgIGlmIChJc0Rkcikgew0KPiA+ICsgICAgVWhzIHw9IFVIU19ERFJfTU9ERTsNCj4gPiArICB9 IGVsc2Ugew0KPiA+ICsgICAgVWhzICY9IH4oVUhTX0REUl9NT0RFKTsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1VIU1JFRywgVWhzKTsNCj4g PiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBsb3dlc3QgY2xvY2sgZnJlcXVlbmN5IGF0 IGluaXRpYWxpemF0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAg IFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBDYXBh YmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5 Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2NrIGlzbid0IHN1cHBs aWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4g K0R3TW1jSGNJbml0Q2xvY2tGcmVxICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAg ICAgIERldkJhc2UsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAgICBDYXBhYmls aXR5DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBT dGF0dXM7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbml0RnJlcTsNCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBDYWxjdWxhdGUgYSBkaXZpc29yIGZvciBTRCBjbG9jayBm cmVxdWVuY3kNCj4gPiArICAvLw0KPiA+ICsgIGlmIChDYXBhYmlsaXR5LkJhc2VDbGtGcmVxID09 IDApIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBEb24ndCBzdXBwb3J0IGdldCBCYXNlIENs b2NrIEZyZXF1ZW5jeSBpbmZvcm1hdGlvbiB2aWEgYW5vdGhlcg0KPiBtZXRob2QNCj4gPiArICAg IC8vDQo+ID4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgIH0NCj4gPiArICAv Lw0KPiA+ICsgIC8vIFN1cHBseSA0MDBLSHogY2xvY2sgZnJlcXVlbmN5IGF0IGluaXRpYWxpemF0 aW9uIHBoYXNlLg0KPiA+ICsgIC8vDQo+ID4gKyAgSW5pdEZyZXEgPSBEV01NQ19JTklUX0NMT0NL X0ZSRVE7DQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY0Nsb2NrU3VwcGx5IChEZXZCYXNlLCBJbml0 RnJlcSwgQ2FwYWJpbGl0eSk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKyAgTWljcm9TZWNvbmREZWxheSAo MTAwKTsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBtYXhpbXVtIHZvbHRhZ2UgYXQgaW5pdGlhbGl6 YXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklD RSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAg IFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgIFRoZSB2b2x0YWdlIGlzIHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gPiAr ICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSB2b2x0YWdlIGlzbid0IHN1cHBsaWVkIHN1 Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1j SGNJbml0UG93ZXJWb2x0YWdlICgNCj4gPiArICBJTiBVSU5UTiBEZXZCYXNlLA0KPiA+ICsgIElO IERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGF0YTsNCj4gPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gKw0KPiA+ICsgIERhdGEgPSAweDE7DQo+ID4gKyAg TW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfUFdSRU4sIERhdGEpOw0KPiA+ICsNCj4gPiAr ICBEYXRhID0gRFdfTU1DX0NUUkxfUkVTRVRfQUxMOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZC YXNlICsgRFdfTU1DX0NUUkwsIERhdGEpOw0KPiA+ICsNCj4gPiArICBUaW1lb3V0ID0gRFdfTU1D X0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArICB3aGlsZSAoVGltZW91dCA+IDApIHsNCj4gPiAr ICAgIERhdGEgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0NUUkwpOw0KPiA+ICsNCj4g PiArICAgIGlmICgoRGF0YSAmIERXX01NQ19DVFJMX1JFU0VUX0FMTCkgPT0gMCkgew0KPiA+ICsg ICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICAgIGdCUy0+U3RhbGwgKDEpOw0KPiA+ICsN Cj4gPiArICAgIFRpbWVvdXQtLTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChUaW1lb3V0 IDw9IDApIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywNCj4gPiArICAgICAgIkR3TW1j SGNJbml0UG93ZXJWb2x0YWdlOiByZXNldCBmYWlsZWQgZHVlIHRvIHRpbWVvdXQiKSk7DQo+ID4g Kw0KPiA+ICsgICAgcmV0dXJuIEVGSV9USU1FT1VUOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg RGF0YSA9IERXX01NQ19DVFJMX0lOVF9FTjsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSAr IERXX01NQ19DVFJMLCBEYXRhKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBJbml0aWFsaXplIHRoZSBUaW1lb3V0IENv bnRyb2wgcmVnaXN0ZXIgd2l0aCBtb3N0IGNvbnNlcnZhdGl2ZSB2YWx1ZSBhdA0KPiA+ICsgIGlu aXRpYWxpemF0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRo ZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgVGhlIHRpbWVvdXQgY29udHJvbCByZWdpc3RlciBpcyBjb25maWd1cmVk DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkuDQo+ID4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgdGltZW91dCBjb250cm9sIHJlZ2lzdGVyIGlz bid0IGNvbmZpZ3VyZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Nm dWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNJbml0 VGltZW91dEN0cmwgKA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGF0YTsN Cj4gPiArDQo+ID4gKyAgRGF0YSA9IH4wOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsg RFdfTU1DX1RNT1VULCBEYXRhKTsNCj4gPiArDQo+ID4gKyAgRGF0YSA9IDB4MDBGRkZGRkY7DQo+ ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfREVCTkNFLCBEYXRhKTsNCj4gPiAr DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBJbml0aWFsIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgd2l0aCBsb3dlc3QgY2xvY2sgZnJl cXVlbmN5LCBtYXggcG93ZXINCj4gYW5kDQo+ID4gKyAgbWF4IHRpbWVvdXQgdmFsdWUgYXQgaW5p dGlhbGl6YXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhl IERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFNsb3QgICAg ICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21t YW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by4NCj4gPiArICBAcGFyYW1b aW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBob3N0IGNvbnRyb2xsZXIgaXMgaW5p dGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg VGhlIGhvc3QgY29udHJvbGxlciBpc24ndCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjSW5pdEhvc3QgKA0KPiA+ ICsgIElOIFVJTlROICAgIERldkJhc2UsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAg ICAgICBDYXBhYmlsaXR5DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IER3TW1jSGNJbml0UG93ZXJWb2x0YWdl IChEZXZCYXNlLCBDYXBhYmlsaXR5KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gU3RhdHVz Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNTdGFydERtYSAo DQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJh c2U7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3RybDsNCj4g PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbW9kOw0KPiA+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YTsNCj4gPiArDQo+ID4gKy8vICBEZXZJ byAgPSBUcmItPlByaXZhdGUtPkRldklvOw0KPiA+ICsgIERldkJhc2UgPSBUcmItPlByaXZhdGUt PkRldkJhc2U7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUmVzZXQgRE1BDQo+ID4gKyAg Ly8NCj4gPiArICBDdHJsID0gRFdfTU1DX0NUUkxfRE1BX1JFU0VUOw0KPiA+ICsgIE1taW9Xcml0 ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NUUkwsIEN0cmwpOw0KPiA+ICsNCj4gPiArICBUaW1lb3V0 ID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArICB3aGlsZSAoVGltZW91dCA+IDAp IHsNCj4gPiArICAgIERhdGEgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0NUUkwpOw0K PiA+ICsNCj4gPiArICAgIGlmICgoRGF0YSAmIERXX01NQ19DVFJMX0RNQV9SRVNFVCkgPT0gMCkg ew0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICAgIGdCUy0+U3RhbGwgKDEp Ow0KPiA+ICsNCj4gPiArICAgIFRpbWVvdXQtLTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlm IChUaW1lb3V0IDw9IDApIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJUaW1lZCBv dXQgd2FpdGluZyBmb3IgQ1RSTF9ETUFfUkVTRVQiKSk7DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJu IEVGSV9USU1FT1VUOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgQm1vZCA9IERXX01NQ19JRE1B Q19TV1JFU0VUIHwgTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+IERXX01NQ19CTU9EKTsNCj4gPiAr DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQk1PRCwgQm1vZCk7DQo+ID4g Kw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gU2VsZWN0IElETUFDDQo+ID4gKyAgLy8NCj4gPiArICBD dHJsID0gRFdfTU1DX0NUUkxfSURNQUNfRU47DQo+ID4gKyAgQ3RybCB8PSBNbWlvUmVhZDMyIChE ZXZCYXNlICsgRFdfTU1DX0NUUkwpOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdf TU1DX0NUUkwsIEN0cmwpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEVuYWJsZSBJRE1B Qw0KPiA+ICsgIC8vDQo+ID4gKyAgQm1vZCA9IERXX01NQ19JRE1BQ19FTkFCTEUgfCBEV19NTUNf SURNQUNfRkI7DQo+ID4gKyAgQm1vZCB8PSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0JN T0QpOw0KPiA+ICsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CTU9ELCBC bW9kKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNTdG9wRG1hICgNCj4gPiArICBJTiBEV19NTUNf SENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19NTUNfSENf VFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gPiArICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdHJsOw0KPiA+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEJtb2Q7DQo+ID4gKw0KPiA+ICsgIERldkJhc2UgPSBUcmIt PlByaXZhdGUtPkRldkJhc2U7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRGlzYWJsZSBh bmQgcmVzZXQgSURNQUMNCj4gPiArICAvLw0KPiA+ICsgIEN0cmwgPSBNbWlvUmVhZDMyIChEZXZC YXNlICsgRFdfTU1DX0NUUkwpOw0KPiA+ICsgIEN0cmwgJj0gfkRXX01NQ19DVFJMX0lETUFDX0VO Ow0KPiA+ICsgIEN0cmwgfD0gRFdfTU1DX0NUUkxfRE1BX1JFU0VUOw0KPiA+ICsgIE1taW9Xcml0 ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NUUkwsIEN0cmwpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIFN0b3AgSURNQUMNCj4gPiArICAvLw0KPiA+ICsgIEJtb2QgPSBNbWlvUmVhZDMyIChE ZXZCYXNlICsgRFdfTU1DX0JNT0QpOw0KPiA+ICsgIEJtb2QgJj0gfihEV19NTUNfQk1PRF9GQiB8 IERXX01NQ19CTU9EX0RFKTsNCj4gPiArICBCbW9kIHw9IERXX01NQ19CTU9EX1NXUjsNCj4gPiAr ICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CTU9ELCBCbW9kKTsNCj4gPiArDQo+ID4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBC dWlsZCBETUEgZGVzY3JpcHRvciB0YWJsZSBmb3IgdHJhbnNmZXIuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIg aW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIERN QSBkZXNjcmlwdG9yIHRhYmxlIGlzIGNyZWF0ZWQNCj4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIERNQSBkZXNjcmlwdG9yIHRhYmxlIGlzbid0IGNy ZWF0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArQnVpbGREbWFEZXNjVGFibGUgKA0KPiA+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAg KlRyYg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAg RGF0YTsNCj4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIERhdGFMZW47DQo+ID4gKyAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbnRyaWVzOw0KPiA+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgSW5kZXg7DQo+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBSZW1h aW5pbmc7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBUYWJsZVNpemU7DQo+ID4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAg Qnl0ZXM7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBCbG9ja3M7DQo+ID4gKyAg RFdfTU1DX0hDX0RNQV9ERVNDX0xJTkUgICAqRG1hRGVzYzsNCj4gPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgIERtYURlc2NQaHk7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBJZHN0czsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEJ5dENudDsNCj4gPiAr ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEJsa1NpemU7DQo+ID4gKw0KPiA+ICsgIERhdGEg ICAgPSBUcmItPkRhdGFQaHk7DQo+ID4gKyAgRGF0YUxlbiA9IFRyYi0+RGF0YUxlbjsNCj4gPiAr ICBEZXZCYXNlID0gVHJiLT5Qcml2YXRlLT5EZXZCYXNlOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8g T25seSBzdXBwb3J0IDMyYml0IERNQSBEZXNjcmlwdG9yIFRhYmxlDQo+ID4gKyAgLy8NCj4gPiAr ICBpZiAoKERhdGEgPj0gMHgxMDAwMDAwMDB1bCkgfHwgKChEYXRhICsgRGF0YUxlbikgPiAweDEw MDAwMDAwMHVsKSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g PiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBBZGRyZXNzIGZpZWxkIHNoYWxsIGJlIHNldCBv biAzMi1iaXQgYm91bmRhcnkgKExvd2VyIDItYml0IGlzIGFsd2F5cyBzZXQNCj4gPiArICAvLyB0 byAwKSBmb3IgMzItYml0IGFkZHJlc3MgZGVzY3JpcHRvciB0YWJsZS4NCj4gPiArICAvLw0KPiA+ ICsgIGlmICgoRGF0YSAmIChCSVQwIHwgQklUMSkpICE9IDApIHsNCj4gPiArICAgIERFQlVHICgo DQo+ID4gKyAgICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAgICJUaGUgYnVmZmVyIFsweCV4XSB0 byBjb25zdHJ1Y3QgRE1BIGRlc2MgaXMgbm90IGFsaWduZWQgdG8gNCBieXRlcyFcbiIsDQo+ID4g KyAgICAgIERhdGENCj4gPiArICAgICAgKSk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBFbnRy aWVzICAgPSAoRGF0YUxlbiArIERXTU1DX0RNQV9CVUZfU0laRSAtIDEpIC8NCj4gRFdNTUNfRE1B X0JVRl9TSVpFOw0KPiA+ICsgIFRhYmxlU2l6ZSA9IEVudHJpZXMgKiBzaXplb2YgKERXX01NQ19I Q19ETUFfREVTQ19MSU5FKTsNCj4gPiArICBCbG9ja3MgICAgPSAoRGF0YUxlbiArIERXX01NQ19C TE9DS19TSVpFIC0gMSkgLw0KPiBEV19NTUNfQkxPQ0tfU0laRTsNCj4gPiArDQo+ID4gKyAgVHJi LT5EbWFEZXNjUGFnZXMgPSAoVUlOVDMyKUVGSV9TSVpFX1RPX1BBR0VTIChFbnRyaWVzICoNCj4g RFdNTUNfRE1BX0JVRl9TSVpFKTsNCj4gPiArLyogIFN0YXR1cyA9IERldklvLT5BbGxvY2F0ZUJ1 ZmZlciAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRGV2SW8sDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgQWxsb2NhdGVBbnlQYWdlcywNCj4gPiArICAgICAgICAgICAgICAgICAgICBFZmlC b290U2VydmljZXNEYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVGSV9TSVpFX1RPX1BB R0VTIChUYWJsZVNpemUpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIChFRklfUEhZU0lDQUxf QUREUkVTUyAqKSZUcmItPkRtYURlc2MNCj4gPiArICAgICAgICAgICAgICAgICAgICApOyovDQo+ ID4gKyAgU3RhdHVzID0gRG1hQWxsb2NhdGVCdWZmZXIgKEVmaUJvb3RTZXJ2aWNlc0RhdGEsIEVG SV9TSVpFX1RPX1BBR0VTDQo+IChUYWJsZVNpemUpLA0KPiA+ICsgICAgICAgICAgICAgKFZPSUQg KikmVHJiLT5EbWFEZXNjKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICBaZXJvTWVtIChUcmItPkRtYURlc2MsIFRhYmxlU2l6ZSk7DQo+ID4gKyAgQnl0ZXMgID0gVGFi bGVTaXplOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBEbWFNYXAgKE1hcE9wZXJhdGlvbkJ1c01h c3RlckNvbW1vbkJ1ZmZlciwNCj4gPiArICAgICAgICAgICAgIChFRklfUEhZU0lDQUxfQUREUkVT UyAqKVRyYi0+RG1hRGVzYywNCj4gPiArICAgICAgICAgICAgICZCeXRlcywgJlRyYi0+RG1hRGVz Y1BoeSwgJlRyYi0+RG1hTWFwKTsNCj4gPiArLyogIFN0YXR1cyA9IERldklvLT5NYXAgKA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIERldklvLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVm aUJ1c01hc3RlckNvbW1vbkJ1ZmZlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAoRUZJX1BI WVNJQ0FMX0FERFJFU1MgKilUcmItPkRtYURlc2MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg JkJ5dGVzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICZUcmItPkRtYURlc2NQaHksDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgJlRyYi0+RG1hTWFwDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgKTsqLw0KPiA+ICsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChCeXRlcyAh PSBUYWJsZVNpemUpKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gTWFwIGVycm9yIG9yIHVu YWJsZSB0byBtYXAgdGhlIHdob2xlIFJGaXMgYnVmZmVyIGludG8gYSBjb250aWd1b3VzDQo+ID4g KyAgICAvLyByZWdpb24uDQo+ID4gKyAgICAvLw0KPiA+ICsvKiAgICBEZXZJby0+RnJlZUJ1ZmZl ciAoDQo+ID4gKyAgICAgICAgICAgICBEZXZJbywNCj4gPiArICAgICAgICAgICAgIEVGSV9TSVpF X1RPX1BBR0VTIChUYWJsZVNpemUpLA0KPiA+ICsgICAgICAgICAgICAgKEVGSV9QSFlTSUNBTF9B RERSRVNTKVRyYi0+RG1hRGVzYw0KPiA+ICsgICAgICAgICAgICAgKTsqLw0KPiA+ICsgICAgcmV0 dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKChV SU5UNjQpKFVJTlROKVRyYi0+RG1hRGVzY1BoeSA+IDB4MTAwMDAwMDAwdWwpIHsNCj4gPiArICAg IC8vDQo+ID4gKyAgICAvLyBUaGUgRE1BIGRvZXNuJ3Qgc3VwcG9ydCA2NGJpdCBhZGRyZXNzaW5n Lg0KPiA+ICsgICAgLy8NCj4gPiArICAgIERtYVVubWFwIChUcmItPkRtYU1hcCk7DQo+ID4gKy8q ICAgIERldklvLT5Vbm1hcCAoDQo+ID4gKyAgICAgIERldklvLA0KPiA+ICsgICAgICBUcmItPkRt YU1hcA0KPiA+ICsgICAgKTsqLw0KPiA+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoRGF0YUxlbiA8IERXX01NQ19CTE9DS19TSVpFKSB7 DQo+ID4gKyAgICBCbGtTaXplID0gRGF0YUxlbjsNCj4gPiArICAgIEJ5dENudCA9IERhdGFMZW47 DQo+ID4gKyAgICBSZW1haW5pbmcgPSBEYXRhTGVuOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAg ICBCbGtTaXplID0gRFdfTU1DX0JMT0NLX1NJWkU7DQo+ID4gKyAgICBCeXRDbnQgPSBEV19NTUNf QkxPQ0tfU0laRSAqIEJsb2NrczsNCj4gPiArICAgIFJlbWFpbmluZyA9IERXX01NQ19CTE9DS19T SVpFICogQmxvY2tzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJh c2UgKyBEV19NTUNfQkxLU0laLCBCbGtTaXplKTsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFz ZSArIERXX01NQ19CWVRDTlQsIEJ5dENudCk7DQo+ID4gKyAgRG1hRGVzYyA9IFRyYi0+RG1hRGVz YzsNCj4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBFbnRyaWVzOyBJbmRleCsrLCBEbWFE ZXNjKyspIHsNCj4gPiArICAgIERtYURlc2MtPkRlczAgPSBEV19NTUNfSURNQUNfREVTMF9PV04g fA0KPiBEV19NTUNfSURNQUNfREVTMF9DSCB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRFdf TU1DX0lETUFDX0RFUzBfRElDOw0KPiA+ICsgICAgRG1hRGVzYy0+RGVzMSA9IERXX01NQ19JRE1B Q19ERVMxX0JTMQ0KPiAoRFdNTUNfRE1BX0JVRl9TSVpFKTsNCj4gPiArICAgIC8vDQo+ID4gKyAg ICAvLyBCdWZmZXIgQWRkcmVzcw0KPiA+ICsgICAgLy8NCj4gPiArICAgIERtYURlc2MtPkRlczIg PSAoVUlOVDMyKSgoVUlOVE4pVHJiLT5EYXRhUGh5ICsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAoRFdNTUNfRE1BX0JVRl9TSVpFICogSW5kZXgpKTsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAv LyBOZXh0IERlc2NyaXB0b3IgQWRkcmVzcw0KPiA+ICsgICAgLy8NCj4gPiArICAgIERtYURlc2Mt PkRlczMgPSAoVUlOVDMyKSgoVUlOVE4pVHJiLT5EbWFEZXNjUGh5ICsNCj4gPiArICAgICAgICAg ICAgICAgICAgICBzaXplb2YgKERXX01NQ19IQ19ETUFfREVTQ19MSU5FKSAqIChJbmRleCArIDEp KTsNCj4gPiArICAgIFJlbWFpbmluZyA9IFJlbWFpbmluZyAtIERXTU1DX0RNQV9CVUZfU0laRTsN Cj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBGaXJzdCBEZXNjcmlwdG9yDQo+ID4gKyAg Ly8NCj4gPiArICBUcmItPkRtYURlc2NbMF0uRGVzMCB8PSBEV19NTUNfSURNQUNfREVTMF9GUzsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIExhc3QgRGVzY3JpcHRvcg0KPiA+ICsgIC8vDQo+ID4gKyAg VHJiLT5EbWFEZXNjW0VudHJpZXMgLSAxXS5EZXMwICY9IH4oRFdfTU1DX0lETUFDX0RFUzBfQ0gg fA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV19NTUNfSURNQUNf REVTMF9ESUMpOw0KPiA+ICsgIFRyYi0+RG1hRGVzY1tFbnRyaWVzIC0gMV0uRGVzMCB8PSBEV19N TUNfSURNQUNfREVTMF9PV04gfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEV19NTUNfSURNQUNfREVTMF9MRDsNCj4gPiArICBUcmItPkRtYURlc2NbRW50cmllcyAt IDFdLkRlczEgPSBEV19NTUNfSURNQUNfREVTMV9CUzENCj4gKFJlbWFpbmluZyArDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdNTUNfRE1BX0JVRl9TSVpFKTsNCj4g PiArICAvLw0KPiA+ICsgIC8vIFNldCB0aGUgbmV4dCBmaWVsZCBvZiB0aGUgTGFzdCBEZXNjcmlw dG9yDQo+ID4gKyAgLy8NCj4gPiArICBUcmItPkRtYURlc2NbRW50cmllcyAtIDFdLkRlczMgPSAw Ow0KPiA+ICsgIERtYURlc2NQaHkgPSAoVUlOVDMyKVRyYi0+RG1hRGVzY1BoeTsNCj4gPiArDQo+ ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfREJBRERSLCBEbWFEZXNjUGh5KTsN Cj4gPiArDQo+ID4gKyAgQXJtRGF0YVN5bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKyAg QXJtSW5zdHJ1Y3Rpb25TeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gQ2xlYXIgaW50ZXJydXB0cw0KPiA+ICsgIC8vDQo+ID4gKyAgSWRzdHMgPSB+MDsNCj4g PiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19JRFNUUywgSWRzdHMpOw0KPiA+ICsN Cj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK1RyYW5zZmVyRmlmbyAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAqVHJi DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBEZXZC YXNlOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGF0YTsNCj4gPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgIFJlY2VpdmVkOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgQ291bnQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbnRzdHM7 DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBTdHM7DQo+ID4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICBGaWZvQ291bnQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBJbmRleDsgICAgIC8qIGNvdW50IHdpdGggYnl0ZXMgKi8NCj4gPiArICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgIEFzY2VuZGluZzsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgIERlc2NlbmRpbmc7DQo+ID4gKw0KPiA+ICsgIERldkJhc2UgICA9IFRyYi0+UHJpdmF0ZS0+ RGV2QmFzZTsNCj4gPiArICBSZWNlaXZlZCA9IDA7DQo+ID4gKyAgQ291bnQgPSAwOw0KPiA+ICsg IEluZGV4ID0gMDsNCj4gPiArICBBc2NlbmRpbmcgPSAwOw0KPiA+ICsgIERlc2NlbmRpbmcgPSAo KFRyYi0+RGF0YUxlbiArIDMpICYgfjMpIC0gNDsNCj4gPiArICBkbyB7DQo+ID4gKyAgICBJbnRz dHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMpOw0KPiA+ICsNCj4gPiAr ICAgIGlmIChUcmItPkRhdGFMZW4gJiYgKEludHN0cyAmIERXX01NQ19JTlRfVFhEUikgJiYgIVRy Yi0+UmVhZCkgew0KPiA+ICsgICAgICBTdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1D X1NUQVRVUyk7DQo+ID4gKw0KPiA+ICsgICAgICB3aGlsZSAoIShEV19NTUNfU1RTX0ZJRk9fRlVM TChTdHMpKQ0KPiA+ICsgICAgICAgICAgICAgICYmIChSZWNlaXZlZCA8IFRyYi0+RGF0YUxlbikN Cj4gPiArICAgICAgICAgICAgICAmJiAoSW50c3RzICYgRFdfTU1DX0lOVF9UWERSKSkgew0KPiA+ ICsgICAgICAgIGlmIChUcmItPlVzZUJFKSB7DQo+ID4gKyAgICAgICAgICBEYXRhID0gU3dhcEJ5 dGVzMzIgKCooVUlOVDMyICopKChVSU5UTilUcmItPkRhdGEgKyBEZXNjZW5kaW5nKSk7DQo+ID4g KyAgICAgICAgICBEZXNjZW5kaW5nID0gRGVzY2VuZGluZyAtIDQ7DQo+ID4gKyAgICAgICAgfSBl bHNlIHsNCj4gPiArICAgICAgICAgIERhdGEgPSAqKFVJTlQzMiAqKSgoVUlOVE4pVHJiLT5EYXRh ICsgQXNjZW5kaW5nKTsNCj4gPiArICAgICAgICAgIEFzY2VuZGluZyArPSA0Ow0KPiA+ICsgICAg ICAgIH0NCj4gPiArICAgICAgICBJbmRleCArPSA0Ow0KPiA+ICsgICAgICAgIFJlY2VpdmVkICs9 IDQ7DQo+ID4gKw0KPiA+ICsgICAgICAgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0ZJ Rk9fU1RBUlQsIERhdGEpOw0KPiA+ICsNCj4gPiArICAgICAgICBJbnRzdHMgPSBEV19NTUNfSU5U X1RYRFI7DQo+ID4gKyAgICAgICAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfUklOVFNU UywgSW50c3RzKTsNCj4gPiArDQo+ID4gKyAgICAgICAgSW50c3RzID0gTW1pb1JlYWQzMiAoRGV2 QmFzZSArIERXX01NQ19SSU5UU1RTKTsNCj4gPiArICAgICAgICBTdHMgPSBNbWlvUmVhZDMyIChE ZXZCYXNlICsgRFdfTU1DX1NUQVRVUyk7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICBjb250 aW51ZTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoVHJiLT5EYXRhTGVuICYmICgo SW50c3RzICYgRFdfTU1DX0lOVF9SWERSKSB8fA0KPiA+ICsgICAgICAgKEludHN0cyAmIERXX01N Q19JTlRfRFRPKSkgJiYgVHJiLT5SZWFkKSB7DQo+ID4gKyAgICAgIFN0cyA9IE1taW9SZWFkMzIg KERldkJhc2UgKyBEV19NTUNfU1RBVFVTKTsNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8g Q29udmVydCB0byBieXRlcw0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICBGaWZvQ291bnQgPSBH RVRfU1RTX0ZJRk9fQ09VTlQgKFN0cykgPDwgMjsNCj4gPiArICAgICAgaWYgKChGaWZvQ291bnQg PT0gMCkgJiYgKFJlY2VpdmVkIDwgVHJiLT5EYXRhTGVuKSkgew0KPiA+ICsgICAgICAgIGNvbnRp bnVlOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICAgIEluZGV4ID0gMDsNCj4gPiArICAgICAgQ291 bnQgPSAoTUlOIChGaWZvQ291bnQsIFRyYi0+RGF0YUxlbikgKyAzKSAmIH4zOw0KPiA+ICsgICAg ICB3aGlsZSAoSW5kZXggPCBDb3VudCkgew0KPiA+ICsgICAgICAgIERhdGEgPSBNbWlvUmVhZDMy IChEZXZCYXNlICsgRFdfTU1DX0ZJRk9fU1RBUlQpOw0KPiA+ICsNCj4gPiArICAgICAgICBpZiAo VHJiLT5Vc2VCRSkgew0KPiA+ICsgICAgICAgICAgKihVSU5UMzIgKikoKFVJTlROKVRyYi0+RGF0 YSArIERlc2NlbmRpbmcpID0gU3dhcEJ5dGVzMzIgKERhdGEpOw0KPiA+ICsgICAgICAgICAgRGVz Y2VuZGluZyA9IERlc2NlbmRpbmcgLSA0Ow0KPiA+ICsgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAg ICAgICAgICAqKFVJTlQzMiAqKSgoVUlOVE4pVHJiLT5EYXRhICsgQXNjZW5kaW5nKSA9IERhdGE7 DQo+ID4gKyAgICAgICAgICBBc2NlbmRpbmcgKz0gNDsNCj4gPiArICAgICAgICB9DQo+ID4gKyAg ICAgICAgSW5kZXggKz0gNDsNCj4gPiArICAgICAgICBSZWNlaXZlZCArPSA0Ow0KPiA+ICsgICAg ICB9IC8qIHdoaWxlICovDQo+ID4gKyAgICB9IC8qIGlmICovDQo+ID4gKyAgfSB3aGlsZSAoKChJ bnRzdHMgJiBEV19NTUNfSU5UX0NNRF9ET05FKSA9PSAwKSB8fCAoUmVjZWl2ZWQgPCBUcmItDQo+ ID5EYXRhTGVuKSk7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBDbGVhciBSSU5UU1RTDQo+ID4gKyAg Ly8NCj4gPiArICBJbnRzdHMgPSB+MDsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERX X01NQ19SSU5UU1RTLCBJbnRzdHMpOw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ3JlYXRlIGEgbmV3IFRSQiBmb3IgdGhlIFNEL01N QyBjbWQgcmVxdWVzdC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBB IHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4g KyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNh cmQgdG8gc2VuZCB0aGUNCj4gY29tbWFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdG8uDQo+ID4gKyAgQHBhcmFtW2luXSBQYWNrZXQgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IFNEIGNvbW1hbmQgZGF0YSBzdHJ1Y3R1cmUuDQo+ID4gKyAgQHBhcmFtW2luXSBFdmVudCAgICAg ICAgICBJZiBFdmVudCBpcyBOVUxMLCBibG9ja2luZyBJL08gaXMgcGVyZm9ybWVkLiBJZg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQgaXMgbm90IE5VTEwsIHRoZW4gbm9u YmxvY2tpbmcgSS9PIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3Jt ZWQsIGFuZCBFdmVudCB3aWxsIGJlIHNpZ25hbGVkIHdoZW4gdGhlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQYWNrZXQgY29tcGxldGVzLg0KPiA+ICsNCj4gPiArICBAcmV0dXJu IENyZWF0ZWQgVHJiIG9yIE5VTEwuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRFdfTU1DX0hDX1RS QiAqDQo+ID4gK0R3TW1jQ3JlYXRlVHJiICgNCj4gPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9E QVRBICAgICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX0NP TU1BTkRfUEFDS0VUICpQYWNrZXQsDQo+ID4gKyAgSU4gRUZJX0VWRU5UICAgICAgICAgICAgICAg ICAgICAgICAgICAgRXZlbnQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBEV19NTUNfSENfVFJC ICAgICAgICAgICAgICAgICAqVHJiOw0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gPiArICBFRklfVFBMICAgICAgICAgICAgICAgICAgICAgICBPbGRUcGw7 DQo+ID4gKyAgRUZJX0lPX09QRVJBVElPTl9UWVBFICAgICAgICAgRmxhZzsNCj4gPiArICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICBNYXBMZW5ndGg7DQo+ID4gKw0KPiA+ICsgIFRyYiA9 IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoRFdfTU1DX0hDX1RSQikpOw0KPiA+ICsgIGlmIChU cmIgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBUcmItPlNpZ25hdHVyZSA9IERXX01NQ19IQ19UUkJfU0lHOw0KPiA+ICsgIFRyYi0+U2xv dCAgICAgID0gU2xvdDsNCj4gPiArICBUcmItPkJsb2NrU2l6ZSA9IDB4MjAwOw0KPiA+ICsgIFRy Yi0+UGFja2V0ICAgID0gUGFja2V0Ow0KPiA+ICsgIFRyYi0+RXZlbnQgICAgID0gRXZlbnQ7DQo+ ID4gKyAgVHJiLT5TdGFydGVkICAgPSBGQUxTRTsNCj4gPiArICBUcmItPlRpbWVvdXQgICA9IFBh Y2tldC0+VGltZW91dDsNCj4gPiArICBUcmItPlByaXZhdGUgICA9IFByaXZhdGU7DQo+ID4gKw0K PiA+ICsgIGlmICgoUGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoICE9IDApICYmIChQYWNrZXQtPklu RGF0YUJ1ZmZlciAhPSBOVUxMKSkgew0KPiA+ICsgICAgVHJiLT5EYXRhICAgID0gUGFja2V0LT5J bkRhdGFCdWZmZXI7DQo+ID4gKyAgICBUcmItPkRhdGFMZW4gPSBQYWNrZXQtPkluVHJhbnNmZXJM ZW5ndGg7DQo+ID4gKyAgICBUcmItPlJlYWQgICAgPSBUUlVFOw0KPiA+ICsgICAgWmVyb01lbSAo VHJiLT5EYXRhLCBUcmItPkRhdGFMZW4pOw0KPiA+ICsgIH0gZWxzZSBpZiAoUGFja2V0LT5PdXRU cmFuc2Zlckxlbmd0aCAmJiAoUGFja2V0LT5PdXREYXRhQnVmZmVyICE9DQo+IE5VTEwpKSB7DQo+ ID4gKyAgICBUcmItPkRhdGEgICAgPSBQYWNrZXQtPk91dERhdGFCdWZmZXI7DQo+ID4gKyAgICBU cmItPkRhdGFMZW4gPSBQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoOw0KPiA+ICsgICAgVHJiLT5S ZWFkICAgID0gRkFMU0U7DQo+ID4gKyAgfSBlbHNlIGlmICghUGFja2V0LT5JblRyYW5zZmVyTGVu Z3RoICYmICFQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gKyAgICBUcmItPkRhdGEg ICAgPSBOVUxMOw0KPiA+ICsgICAgVHJiLT5EYXRhTGVuID0gMDsNCj4gPiArICB9IGVsc2Ugew0K PiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmICgoKFByaXZh dGUtPlNsb3RbVHJiLT5TbG90XS5DYXJkVHlwZSA9PSBFbW1jQ2FyZFR5cGUpICYmDQo+ID4gKyAg ICAgICAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4ID09DQo+IEVNTUNfU0VORF9U VU5JTkdfQkxPQ0spKSB8fA0KPiA+ICsgICAgICAoKFByaXZhdGUtPlNsb3RbVHJiLT5TbG90XS5D YXJkVHlwZSA9PSBTZENhcmRUeXBlKSAmJg0KPiA+ICsgICAgICAgKFBhY2tldC0+U2RNbWNDbWRC bGstPkNvbW1hbmRJbmRleCA9PQ0KPiBTRF9TRU5EX1RVTklOR19CTE9DSykpKSB7DQo+ID4gKyAg ICBUcmItPk1vZGUgPSBTZE1tY1Bpb01vZGU7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIGlm IChUcmItPlJlYWQpIHsNCj4gPiArICAgICAgRmxhZyA9IEVmaUJ1c01hc3RlcldyaXRlOw0KPiA+ ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgRmxhZyA9IEVmaUJ1c01hc3RlclJlYWQ7DQo+ID4g KyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKFByaXZhdGUtPlNsb3RbVHJiLT5TbG90XS5DYXJk VHlwZSA9PSBTZENhcmRUeXBlKSB7DQo+ID4gKyAgICAgIFRyYi0+VXNlRmlmbyA9IFRSVUU7DQo+ ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICBUcmItPlVzZUZpZm8gPSBGQUxTRTsNCj4gPiAr ICAgICAgaWYgKFRyYi0+RGF0YUxlbikgew0KPiA+ICsgICAgICAgIE1hcExlbmd0aCA9IFRyYi0+ RGF0YUxlbjsNCj4gPiArICAgICAgICBTdGF0dXMgPSBEbWFNYXAgKEZsYWcsIFRyYi0+RGF0YSwg Jk1hcExlbmd0aCwgJlRyYi0+RGF0YVBoeSwNCj4gJlRyYi0+RGF0YU1hcCk7DQo+ID4gKy8qICAg ICAgICBTdGF0dXMgPSBEZXZJby0+TWFwICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBEZXZJbywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFRyYi0+RGF0YSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAmTWFwTGVuZ3RoLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZUcmIt PkRhdGFQaHksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlRyYi0+RGF0YU1hcA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ki8NCj4gPiArICAgICAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpIHx8IChUcmItPkRhdGFMZW4gIT0gTWFwTGVuZ3RoKSkgew0KPiA+ICsg ICAgICAgICAgU3RhdHVzID0gRUZJX0JBRF9CVUZGRVJfU0laRTsNCj4gPiArICAgICAgICAgIGdv dG8gRXJyb3I7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICBTdGF0dXMgPSBC dWlsZERtYURlc2NUYWJsZSAoVHJiKTsNCj4gPiArICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gKyAgICAgICAgICBEbWFVbm1hcChUcmItPkRhdGFNYXApOw0KPiA+ICsgICAg ICAgICAgZ290byBFcnJvcjsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgICAgU3RhdHVzID0g RHdNbWNIY1N0YXJ0RG1hIChQcml2YXRlLCBUcmIpOw0KPiA+ICsgICAgICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgICAgIERtYVVubWFwKFRyYi0+RGF0YU1hcCk7DQo+ ID4gKyAgICAgICAgICBnb3RvIEVycm9yOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgfQ0K PiA+ICsgICAgfQ0KPiA+ICsgIH0gLyogVHVuaW5nQmxvY2sgKi8NCj4gPiArDQo+ID4gKyAgaWYg KEV2ZW50ICE9IE5VTEwpIHsNCj4gPiArICAgIE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9O T1RJRlkpOw0KPiA+ICsgICAgSW5zZXJ0VGFpbExpc3QgKCZQcml2YXRlLT5RdWV1ZSwgJlRyYi0+ VHJiTGlzdCk7DQo+ID4gKyAgICBnQlMtPlJlc3RvcmVUUEwgKE9sZFRwbCk7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICByZXR1cm4gVHJiOw0KPiA+ICsNCj4gPiArRXJyb3I6DQo+ID4gKyAgcmV0 dXJuIE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZyZWUgdGhlIHJlc291 cmNlIHVzZWQgYnkgdGhlIFRSQi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAg ICAgICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0R3TW1jRnJlZVRyYiAoDQo+ID4gKyAgSU4gRFdfTU1D X0hDX1RSQiAgICAgICAgICAgKlRyYg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGlmIChUcmIt PkRtYU1hcCAhPSBOVUxMKSB7DQo+ID4gKyAgICBEbWFVbm1hcCAoVHJiLT5EbWFNYXApOw0KPiA+ ICsgIH0NCj4gPiArICBpZiAoVHJiLT5EYXRhTWFwICE9IE5VTEwpIHsNCj4gPiArICAgIERtYVVu bWFwIChUcmItPkRhdGFNYXApOw0KPiA+ICsgIH0NCj4gPiArICBGcmVlUG9vbCAoVHJiKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ2hlY2sgaWYgdGhlIGVudiBpcyByZWFkeSBm b3IgZXhlY3V0ZSBzcGVjaWZpZWQgVFJCLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFByaXZh dGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBpbnN0 YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRo ZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgIFRoZSBlbnYgaXMgcmVhZHkgZm9yIFRSQiBleGVjdXRpb24uDQo+ID4gKyAgQHJl dHZhbCBFRklfTk9UX1JFQURZICAgICBUaGUgZW52IGlzIG5vdCByZWFkeSBmb3IgVFJCIGV4ZWN1 dGlvbi4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNvbWUgZXJyb3MgaGFwcGVu Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNDaGVja1RyYkVu diAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUs DQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgV2FpdCBmb3IgdGhlIGVudiB0byBiZSByZWFkeSBmb3IgZXhlY3V0ZSBz cGVjaWZpZWQgVFJCLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEg cG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBpbnN0YW5jZS4NCj4gPiAr ICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENf VFJCIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBlbnYgaXMgcmVhZHkgZm9yIFRSQiBleGVjdXRpb24uDQo+ID4gKyAgQHJldHZhbCBFRklfVElN RU9VVCAgICAgICBUaGUgZW52IGlzIG5vdCByZWFkeSBmb3IgVFJCIGV4ZWN1dGlvbiBpbiB0aW1l Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4uDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY1dhaXRUcmJFbnYgKA0K PiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4g PiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiA+ICsg IEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZmluaXRlV2FpdDsNCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBXYWl0IENvbW1hbmQgQ29tcGxldGUgSW50ZXJydXB0IFN0 YXR1cyBiaXQgaW4gTm9ybWFsIEludGVycnVwdA0KPiBTdGF0dXMNCj4gPiArICAvLyBSZWdpc3Rl cg0KPiA+ICsgIC8vDQo+ID4gKyAgUGFja2V0ICA9IFRyYi0+UGFja2V0Ow0KPiA+ICsgIFRpbWVv dXQgPSBQYWNrZXQtPlRpbWVvdXQ7DQo+ID4gKyAgaWYgKFRpbWVvdXQgPT0gMCkgew0KPiA+ICsg ICAgSW5maW5pdGVXYWl0ID0gVFJVRTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgSW5maW5p dGVXYWl0ID0gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICB3aGlsZSAoSW5maW5pdGVX YWl0IHx8IChUaW1lb3V0ID4gMCkpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBDaGVjayBU cmIgZXhlY3V0aW9uIHJlc3VsdCBieSByZWFkaW5nIE5vcm1hbCBJbnRlcnJ1cHQgU3RhdHVzDQo+ IHJlZ2lzdGVyLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIFN0YXR1cyA9IER3TW1jQ2hlY2tUcmJF bnYgKFByaXZhdGUsIFRyYik7DQo+ID4gKyAgICBpZiAoU3RhdHVzICE9IEVGSV9OT1RfUkVBRFkp IHsNCj4gPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICAgIH0NCj4gPiArICAgIC8vDQo+ ID4gKyAgICAvLyBTdGFsbCBmb3IgMSBtaWNyb3NlY29uZC4NCj4gPiArICAgIC8vDQo+ID4gKyAg ICBnQlMtPlN0YWxsICgxKTsNCj4gPiArDQo+ID4gKyAgICBUaW1lb3V0LS07DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1RJTUVPVVQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK0VG SV9TVEFUVVMNCj4gPiArRHdFbW1jRXhlY1RyYiAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZB VEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAg ICAgICAgICAgICAgICAgKlRyYg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNf UEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQ7DQo+ID4gKyAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDbWQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTW1jU3RhdHVzOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEludFN0YXR1czsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBcmd1bWVudDsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFcnJNYXNrOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp bWVvdXQ7DQo+ID4gKw0KPiA+ICsgIFBhY2tldCA9IFRyYi0+UGFja2V0Ow0KPiA+ICsgIERldkJh c2UgPSBUcmItPlByaXZhdGUtPkRldkJhc2U7DQo+ID4gKw0KPiA+ICsgIEFybURhdGFTeW5jaHJv bml6YXRpb25CYXJyaWVyICgpOw0KPiA+ICsgIEFybUluc3RydWN0aW9uU3luY2hyb25pemF0aW9u QmFycmllciAoKTsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdhaXQgdW50aWwgTU1DIGlzIGlkbGUN Cj4gPiArICAvLw0KPiA+ICsgIGRvIHsNCj4gPiArICAgIE1tY1N0YXR1cyA9IE1taW9SZWFkMzIg KERldkJhc2UgKyBEV19NTUNfU1RBVFVTKTsNCj4gPiArICB9IHdoaWxlIChNbWNTdGF0dXMgJiBE V19NTUNfU1RTX0RBVEFfQlVTWSk7DQo+ID4gKw0KPiA+ICsgIEludFN0YXR1cyA9IH4wOw0KPiA+ ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIEludFN0YXR1cyk7DQo+ ID4gKyAgQ21kID0gQ01EX0lOREVYIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kSW5kZXgp Ow0KPiA+ICsgIGlmICgoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZFR5cGUgPT0NCj4gU2RN bWNDb21tYW5kVHlwZUFjKSB8fA0KPiA+ICsgICAgICAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29t bWFuZFR5cGUgPT0NCj4gU2RNbWNDb21tYW5kVHlwZUFkdGMpKSB7DQo+ID4gKyAgICBzd2l0Y2gg KFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRJbmRleCkgew0KPiA+ICsgICAgY2FzZSBFTU1D X1NFVF9SRUxBVElWRV9BRERSOg0KPiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9TRU5EX0lOSVQ7 DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBFTU1DX1NFTkRfU1RBVFVTOg0KPiA+ ICsgICAgICBDbWQgfD0gQklUX0NNRF9XQUlUX1BSVkRBVEFfQ09NUExFVEU7DQo+ID4gKyAgICAg IGJyZWFrOw0KPiA+ICsgICAgY2FzZSBFTU1DX1NUT1BfVFJBTlNNSVNTSU9OOg0KPiA+ICsgICAg ICBDbWQgfD0gQklUX0NNRF9TVE9QX0FCT1JUX0NNRDsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4g KyAgICB9DQo+ID4gKyAgICBpZiAoUGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gKyAg ICAgIENtZCB8PSBCSVRfQ01EX1dBSVRfUFJWREFUQV9DT01QTEVURSB8DQo+IEJJVF9DTURfREFU QV9FWFBFQ1RFRCB8DQo+ID4gKyAgICAgICAgICAgICBCSVRfQ01EX1JFQUQ7DQo+ID4gKyAgICB9 IGVsc2UgaWYgKFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGgpIHsNCj4gPiArICAgICAgQ21kIHw9 IEJJVF9DTURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFIHwNCj4gQklUX0NNRF9EQVRBX0VYUEVDVEVE IHwNCj4gPiArICAgICAgICAgICAgIEJJVF9DTURfV1JJVEU7DQo+ID4gKyAgICB9DQo+ID4gKyAg ICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgfA0KPiBCSVRfQ01EX0NIRUNLX1JFU1BP TlNFX0NSQzsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgc3dpdGNoIChQYWNrZXQtPlNkTW1j Q21kQmxrLT5Db21tYW5kSW5kZXgpIHsNCj4gPiArICAgIGNhc2UgRU1NQ19HT19JRExFX1NUQVRF Og0KPiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9TRU5EX0lOSVQ7DQo+ID4gKyAgICAgIGJyZWFr Ow0KPiA+ICsgICAgY2FzZSBFTU1DX1NFTkRfT1BfQ09ORDoNCj4gPiArICAgICAgQ21kIHw9IEJJ VF9DTURfUkVTUE9OU0VfRVhQRUNUOw0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIGNhc2Ug RU1NQ19BTExfU0VORF9DSUQ6DQo+ID4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VY UEVDVCB8IEJJVF9DTURfTE9OR19SRVNQT05TRSB8DQo+ID4gKyAgICAgICAgICAgICBCSVRfQ01E X0NIRUNLX1JFU1BPTlNFX0NSQyB8IEJJVF9DTURfU0VORF9JTklUOw0KPiA+ICsgICAgICBicmVh azsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKyAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21k QmxrLT5SZXNwb25zZVR5cGUpIHsNCj4gPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjI6DQo+ ID4gKyAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgfA0KPiBCSVRfQ01EX0NIRUNL X1JFU1BPTlNFX0NSQyB8DQo+ID4gKyAgICAgICAgICAgQklUX0NNRF9MT05HX1JFU1BPTlNFOw0K PiA+ICsgICAgYnJlYWs7DQo+ID4gKyAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIzOg0KPiA+ICsg ICAgQ21kIHw9IEJJVF9DTURfUkVTUE9OU0VfRVhQRUNUOw0KPiA+ICsgICAgYnJlYWs7DQo+ID4g KyAgfQ0KPiA+ICsgIENtZCB8PSBCSVRfQ01EX1VTRV9IT0xEX1JFRyB8IEJJVF9DTURfU1RBUlQ7 DQo+ID4gKw0KPiA+ICsgIEFyZ3VtZW50ID0gUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEFy Z3VtZW50Ow0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NNREFSRywgQXJn dW1lbnQpOw0KPiA+ICsNCj4gPiArICBBcm1EYXRhU3luY2hyb25pemF0aW9uQmFycmllciAoKTsN Cj4gPiArICBBcm1JbnN0cnVjdGlvblN5bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKw0K PiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NNRCwgQ21kKTsNCj4gPiArICBB cm1EYXRhU3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gPiArICBBcm1JbnN0cnVjdGlvblN5 bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKw0KPiA+ICsgIEVyck1hc2sgPSBEV19NTUNf SU5UX0VCRSB8IERXX01NQ19JTlRfSExFIHwNCj4gRFdfTU1DX0lOVF9SVE8gfA0KPiA+ICsgICAg ICAgICAgICBEV19NTUNfSU5UX1JDUkMgfCBEV19NTUNfSU5UX1JFOw0KPiA+ICsgIEVyck1hc2sg fD0gRFdfTU1DX0lOVF9EQ1JDIHwgRFdfTU1DX0lOVF9EUlQgfA0KPiBEV19NTUNfSU5UX1NCRTsN Cj4gPiArICBkbyB7DQo+ID4gKyAgICBUaW1lb3V0ID0gMTAwMDA7DQo+ID4gKyAgICBpZiAoLS1U aW1lb3V0ID09IDApIHsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBJ bnRTdGF0dXMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMpOw0KPiA+ICsg ICAgaWYgKEludFN0YXR1cyAmIEVyck1hc2spIHsNCj4gPiArICAgICAgcmV0dXJuIEVGSV9ERVZJ Q0VfRVJST1I7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBpZiAoVHJiLT5EYXRhTGVuICYmICgoSW50 U3RhdHVzICYgRFdfTU1DX0lOVF9EVE8pID09IDApKSB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAg ICAgIC8vIFRyYW5zZmVyIE5vdCBEb25lDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIE1pY3Jv U2Vjb25kRGVsYXkgKDEwKTsNCj4gPiArICAgICAgY29udGludWU7DQo+ID4gKyAgICB9DQo+ID4g KyAgICBNaWNyb1NlY29uZERlbGF5ICgxMCk7DQo+ID4gKyAgfSB3aGlsZSAoIShJbnRTdGF0dXMg JiBEV19NTUNfSU5UX0NNRF9ET05FKSk7DQo+ID4gKyAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21k QmxrLT5SZXNwb25zZVR5cGUpIHsNCj4gPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMToN Cj4gPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMWI6DQo+ID4gKyAgICBjYXNlIFNkTW1j UmVzcG9uc2VUeXBlUjM6DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjQ6DQo+ID4g KyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjU6DQo+ID4gKyAgICAgIFBhY2tldC0+U2RNbWNT dGF0dXNCbGstPlJlc3AwID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+IERXX01NQ19SRVNQMCk7 DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIyOg0K PiA+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMCA9IE1taW9SZWFkMzIgKERl dkJhc2UgKw0KPiBEV19NTUNfUkVTUDApOw0KPiA+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVz QmxrLT5SZXNwMSA9IE1taW9SZWFkMzIgKERldkJhc2UgKw0KPiBEV19NTUNfUkVTUDEpOw0KPiA+ ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMiA9IE1taW9SZWFkMzIgKERldkJh c2UgKw0KPiBEV19NTUNfUkVTUDIpOw0KPiA+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxr LT5SZXNwMyA9IE1taW9SZWFkMzIgKERldkJhc2UgKw0KPiBEV19NTUNfUkVTUDMpOw0KPiA+ICsg ICAgICBicmVhazsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVGhlIHdv cmthcm91bmQgb24gRU1NQ19TRU5EX0NTRCBpcyB1c2VkIHRvIGJlIGNvbXBhdGlibGUgd2l0aA0K PiBTREhDLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1h bmRJbmRleCA9PSBFTU1DX1NFTkRfQ1NEKSB7DQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIFVJTlQz MiAgIEJ1Zls0XTsNCj4gPiArICAgICAgWmVyb01lbSAoQnVmLCBzaXplb2YgKEJ1ZikpOw0KPiA+ ICsgICAgICBDb3B5TWVtICgNCj4gPiArICAgICAgICAoVUlOVDggKilCdWYsDQo+ID4gKyAgICAg ICAgKFVJTlQ4ICopJlBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwICsgMSwNCj4gPiArICAg ICAgICBzaXplb2YgKEJ1ZikgLSAxDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgQ29weU1l bSAoDQo+ID4gKyAgICAgICAgKFVJTlQ4ICopJlBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3Aw LA0KPiA+ICsgICAgICAgIChVSU5UOCAqKUJ1ZiwNCj4gPiArICAgICAgICBzaXplb2YgKEJ1Zikg LSAxDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtEd1NkRXhlY1RyYiAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAg ICAgKlByaXZhdGUsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAg KlRyYg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1B TkRfUEFDS0VUICpQYWNrZXQ7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRGV2QmFzZTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDbWQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW1jU3Rh dHVzOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFN0YXR1 czsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudDsN Cj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJNYXNrOw0KPiA+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRzdHM7DQo+ID4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0Q250Ow0KPiA+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJsa1NpemU7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBQYWNrZXQgPSBUcmIt PlBhY2tldDsNCj4gPiArICBEZXZCYXNlICA9IFRyYi0+UHJpdmF0ZS0+RGV2QmFzZTsNCj4gPiAr DQo+ID4gKyAgQXJtRGF0YVN5bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKyAgQXJtSW5z dHJ1Y3Rpb25TeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8g V2FpdCB1bnRpbCBNTUMgaXMgaWRsZQ0KPiA+ICsgIC8vDQo+ID4gKyAgZG8gew0KPiA+ICsgICAg TW1jU3RhdHVzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19TVEFUVVMpOw0KPiA+ICsg IH0gd2hpbGUgKE1tY1N0YXR1cyAmIERXX01NQ19TVFNfREFUQV9CVVNZKTsNCj4gPiArDQo+ID4g KyAgSW50U3RhdHVzID0gfjA7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNf UklOVFNUUywgSW50U3RhdHVzKTsNCj4gPiArICBDbWQgPSBDTURfSU5ERVggKFBhY2tldC0+U2RN bWNDbWRCbGstPkNvbW1hbmRJbmRleCk7DQo+ID4gKyAgaWYgKChQYWNrZXQtPlNkTW1jQ21kQmxr LT5Db21tYW5kVHlwZSA9PQ0KPiBTZE1tY0NvbW1hbmRUeXBlQWMpIHx8DQo+ID4gKyAgICAgIChQ YWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kVHlwZSA9PQ0KPiBTZE1tY0NvbW1hbmRUeXBlQWR0 YykpIHsNCj4gPiArICAgIHN3aXRjaCAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4 KSB7DQo+ID4gKyAgICBjYXNlIFNEX1NFVF9SRUxBVElWRV9BRERSOg0KPiA+ICsgICAgICBDbWQg fD0gQklUX0NNRF9TRU5EX0lOSVQ7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBT RF9TVE9QX1RSQU5TTUlTU0lPTjoNCj4gPiArICAgICAgQ21kIHw9IEJJVF9DTURfU1RPUF9BQk9S VF9DTUQ7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBTRF9TRU5EX1NDUjoNCj4g PiArICAgICAgVHJiLT5Vc2VCRSA9IFRSVUU7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAg fQ0KPiA+ICsgICAgaWYgKFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCkgew0KPiA+ICsgICAgICBD bWQgfD0gQklUX0NNRF9XQUlUX1BSVkRBVEFfQ09NUExFVEUgfA0KPiBCSVRfQ01EX0RBVEFfRVhQ RUNURUQgfA0KPiA+ICsgICAgICAgICAgICAgQklUX0NNRF9SRUFEOw0KPiA+ICsgICAgfSBlbHNl IGlmIChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gKyAgICAgIENtZCB8PSBCSVRf Q01EX1dBSVRfUFJWREFUQV9DT01QTEVURSB8DQo+IEJJVF9DTURfREFUQV9FWFBFQ1RFRCB8DQo+ ID4gKyAgICAgICAgICAgICBCSVRfQ01EX1dSSVRFOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgQ21k IHw9IEJJVF9DTURfUkVTUE9OU0VfRVhQRUNUIHwNCj4gQklUX0NNRF9DSEVDS19SRVNQT05TRV9D UkMgfA0KPiA+ICsgICAgICAgICAgIEJJVF9DTURfU0VORF9BVVRPX1NUT1A7DQo+ID4gKyAgfSBl bHNlIHsNCj4gPiArICAgIHN3aXRjaCAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4 KSB7DQo+ID4gKyAgICBjYXNlIFNEX0dPX0lETEVfU1RBVEU6DQo+ID4gKyAgICAgIENtZCB8PSBC SVRfQ01EX1NFTkRfSU5JVDsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKyAg fQ0KPiA+ICsgIHN3aXRjaCAoUGFja2V0LT5TZE1tY0NtZEJsay0+UmVzcG9uc2VUeXBlKSB7DQo+ ID4gKyAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIyOg0KPiA+ICsgICAgQ21kIHw9IEJJVF9DTURf UkVTUE9OU0VfRVhQRUNUIHwNCj4gQklUX0NNRF9DSEVDS19SRVNQT05TRV9DUkMgfA0KPiA+ICsg ICAgICAgICAgIEJJVF9DTURfTE9OR19SRVNQT05TRTsNCj4gPiArICAgIGJyZWFrOw0KPiA+ICsg IGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMzoNCj4gPiArICAgIENtZCB8PSBCSVRfQ01EX1JFU1BP TlNFX0VYUEVDVDsNCj4gPiArICAgIGJyZWFrOw0KPiA+ICsgIGNhc2UgU2RNbWNSZXNwb25zZVR5 cGVSMWI6DQo+ID4gKyAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVI0Og0KPiA+ICsgIGNhc2UgU2RN bWNSZXNwb25zZVR5cGVSNjoNCj4gPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjc6DQo+ID4g KyAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgfA0KPiBCSVRfQ01EX0NIRUNLX1JF U1BPTlNFX0NSQzsNCj4gPiArICAgIGJyZWFrOw0KPiA+ICsgIH0NCj4gPiArICBDbWQgfD0gQklU X0NNRF9VU0VfSE9MRF9SRUcgfCBCSVRfQ01EX1NUQVJUOw0KPiA+ICsNCj4gPiArICBpZiAoVHJi LT5Vc2VGaWZvID09IFRSVUUpIHsNCj4gPiArICAgIEJ5dENudCA9IFRyYi0+UmVhZCA/IFBhY2tl dC0+SW5UcmFuc2Zlckxlbmd0aCA6IFBhY2tldC0NCj4gPk91dFRyYW5zZmVyTGVuZ3RoOw0KPiA+ ICsgICAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQllUQ05ULCBCeXRDbnQpOw0KPiA+ ICsgICAgaWYgKFRyYi0+UmVhZCkgew0KPiA+ICsgICAgICBpZiAoUGFja2V0LT5JblRyYW5zZmVy TGVuZ3RoID4gRFdfTU1DX0JMT0NLX1NJWkUpIHsNCj4gPiArICAgICAgICBCbGtTaXplID0gRFdf TU1DX0JMT0NLX1NJWkU7DQo+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgQmxrU2l6 ZSA9IFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aDsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgfQ0K PiA+ICsgICAgZWxzZSB7DQo+ID4gKyAgICAgIGlmIChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3Ro ID4gRFdfTU1DX0JMT0NLX1NJWkUpIHsNCj4gPiArICAgICAgICBCbGtTaXplID0gRFdfTU1DX0JM T0NLX1NJWkU7DQo+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgQmxrU2l6ZSA9IFBh Y2tldC0+T3V0VHJhbnNmZXJMZW5ndGg7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiAr DQo+ID4gKyAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CTEtTSVosIEJsa1NpemUp Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgQXJndW1lbnQgPSBQYWNrZXQtPlNkTW1jQ21kQmxr LT5Db21tYW5kQXJndW1lbnQ7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNf Q01EQVJHLCBBcmd1bWVudCk7DQo+ID4gKyAgQXJtRGF0YVN5bmNocm9uaXphdGlvbkJhcnJpZXIg KCk7DQo+ID4gKyAgQXJtSW5zdHJ1Y3Rpb25TeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NNRCwgQ21kKTsNCj4gPiArICBBcm1E YXRhU3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gPiArICBBcm1JbnN0cnVjdGlvblN5bmNo cm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKw0KPiA+ICsgIEVyck1hc2sgPSBEV19NTUNfSU5U X0VCRSB8IERXX01NQ19JTlRfSExFIHwNCj4gRFdfTU1DX0lOVF9SVE8gfA0KPiA+ICsgICAgICAg ICAgICBEV19NTUNfSU5UX1JDUkMgfCBEV19NTUNfSU5UX1JFOw0KPiA+ICsgIEVyck1hc2sgfD0g RFdfTU1DX0lOVF9EUlQgfCBEV19NTUNfSU5UX1NCRTsNCj4gPiArICBpZiAoUGFja2V0LT5JblRy YW5zZmVyTGVuZ3RoIHx8IFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGgpIHsNCj4gPiArICAgIEVy ck1hc2sgfD0gRFdfTU1DX0lOVF9EQ1JDOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoVHJiLT5Vc2VG aWZvID09IFRSVUUpIHsNCj4gPiArICAgIFN0YXR1cyA9IFRyYW5zZmVyRmlmbyAoVHJiKTsNCj4g PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgcmV0dXJuIFN0YXR1 czsNCj4gPiArICAgIH0NCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgVGltZW91dCA9IDEwMDAw Ow0KPiA+ICsgICAgZG8gew0KPiA+ICsgICAgICBpZiAoLS1UaW1lb3V0ID09IDApIHsNCj4gPiAr ICAgICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBJbnRTdGF0dXMgPSBNbWlv UmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMpOw0KPiA+ICsgICAgICBpZiAoSW50U3Rh dHVzICYgRXJyTWFzaykgew0KPiA+ICsgICAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0K PiA+ICsgICAgICB9DQo+ID4gKyAgICAgIGlmIChUcmItPkRhdGFMZW4gJiYgKChJbnRTdGF0dXMg JiBEV19NTUNfSU5UX0RUTykgPT0gMCkpIHsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAg IC8vIFRyYW5zZmVyIG5vdCBEb25lDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBNaWNy b1NlY29uZERlbGF5ICgxMCk7DQo+ID4gKyAgICAgICAgY29udGludWU7DQo+ID4gKyAgICAgIH0N Cj4gPiArICAgICAgTWljcm9TZWNvbmREZWxheSAoMTApOw0KPiA+ICsgICAgfSB3aGlsZSAoIShJ bnRTdGF0dXMgJiBEV19NTUNfSU5UX0NNRF9ET05FKSk7DQo+ID4gKyAgICBpZiAoUGFja2V0LT5J blRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gKyAgICAgIGRvIHsNCj4gPiArICAgICAgICBJZHN0cyA9 IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfSURTVFMpOw0KPiA+ICsgICAgICB9IHdoaWxl ICgoSWRzdHMgJiBEV19NTUNfSURTVFNfUkkpID09IDApOw0KPiA+ICsgICAgICBTdGF0dXMgPSBE d01tY0hjU3RvcERtYSAoUHJpdmF0ZSwgVHJiKTsNCj4gPiArICAgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgICAgIH0NCj4g PiArICAgIH0gZWxzZSBpZiAoUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCkgew0KPiA+ICsgICAg ICBkbyB7DQo+ID4gKyAgICAgICAgSWRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1D X0lEU1RTKTsNCj4gPiArICAgICAgfSB3aGlsZSAoKElkc3RzICYgRFdfTU1DX0lEU1RTX1RJKSA9 PSAwKTsNCj4gPiArICAgICAgU3RhdHVzID0gRHdNbWNIY1N0b3BEbWEgKFByaXZhdGUsIFRyYik7 DQo+ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgICByZXR1 cm4gU3RhdHVzOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9IC8qIFBhY2tldC0+SW5UcmFuc2Zl ckxlbmd0aCAqLw0KPiA+ICsgIH0gLyogVXNlRmlmbyAqLw0KPiA+ICsgIHN3aXRjaCAoUGFja2V0 LT5TZE1tY0NtZEJsay0+UmVzcG9uc2VUeXBlKSB7DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9u c2VUeXBlUjE6DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjFiOg0KPiA+ICsgICAg Y2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIzOg0KPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlw ZVI0Og0KPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVI1Og0KPiA+ICsgICAgY2FzZSBT ZE1tY1Jlc3BvbnNlVHlwZVI2Og0KPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVI3Og0K PiA+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMCA9IE1taW9SZWFkMzIgKERl dkJhc2UgKw0KPiBEV19NTUNfUkVTUDApOw0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIGNh c2UgU2RNbWNSZXNwb25zZVR5cGVSMjoNCj4gPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Js ay0+UmVzcDAgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsNCj4gRFdfTU1DX1JFU1AwKTsNCj4gPiAr ICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDEgPSBNbWlvUmVhZDMyIChEZXZCYXNl ICsNCj4gRFdfTU1DX1JFU1AxKTsNCj4gPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+ UmVzcDIgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsNCj4gRFdfTU1DX1JFU1AyKTsNCj4gPiArICAg ICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsN Cj4gRFdfTU1DX1JFU1AzKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICAvLw0KPiA+ICsgIC8vIFRoZSB3b3JrYXJvdW5kIG9uIFNEX1NFTkRfQ1NEIGlzIHVzZWQg dG8gYmUgY29tcGF0aWJsZSB3aXRoDQo+IFNESEMuDQo+ID4gKyAgLy8NCj4gPiArICBpZiAoUGFj a2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4ID09IFNEX1NFTkRfQ1NEKSB7DQo+ID4gKyAg ICB7DQo+ID4gKyAgICAgIFVJTlQzMiAgIEJ1Zls0XTsNCj4gPiArICAgICAgWmVyb01lbSAoQnVm LCBzaXplb2YgKEJ1ZikpOw0KPiA+ICsgICAgICBDb3B5TWVtICgNCj4gPiArICAgICAgICAoVUlO VDggKilCdWYsDQo+ID4gKyAgICAgICAgKFVJTlQ4ICopJlBhY2tldC0+U2RNbWNTdGF0dXNCbGst PlJlc3AwICsgMSwNCj4gPiArICAgICAgICBzaXplb2YgKEJ1ZikgLSAxDQo+ID4gKyAgICAgICAg KTsNCj4gPiArICAgICAgQ29weU1lbSAoDQo+ID4gKyAgICAgICAgKFVJTlQ4ICopJlBhY2tldC0+ U2RNbWNTdGF0dXNCbGstPlJlc3AwLA0KPiA+ICsgICAgICAgIChVSU5UOCAqKUJ1ZiwNCj4gPiAr ICAgICAgICBzaXplb2YgKEJ1ZikgLSAxDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgIH0NCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgRXhlY3V0ZSB0aGUgc3BlY2lmaWVkIFRSQi4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19Q UklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAg ICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIHNlbnQgdG8gaG9zdCBjb250 cm9sbGVyIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNv bWUgZXJyb3MgaGFwcGVuIHdoZW4gc2VuZGluZyB0aGlzIHJlcXVlc3QgdG8NCj4gdGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0V4ZWNUcmIgKA0KPiA+ICsgIElOIERX X01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ICsgIElOIERXX01N Q19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VT UzsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90Ow0KPiA+ ICsNCj4gPiArICBTbG90ID0gVHJiLT5TbG90Ow0KPiA+ICsgIGlmIChQcml2YXRlLT5TbG90W1Ns b3RdLkNhcmRUeXBlID09IEVtbWNDYXJkVHlwZSkgew0KPiA+ICsgICAgU3RhdHVzID0gRHdFbW1j RXhlY1RyYiAoUHJpdmF0ZSwgVHJiKTsNCj4gPiArICB9IGVsc2UgaWYgKFByaXZhdGUtPlNsb3Rb U2xvdF0uQ2FyZFR5cGUgPT0gU2RDYXJkVHlwZSkgew0KPiA+ICsgICAgU3RhdHVzID0gRHdTZEV4 ZWNUcmIgKFByaXZhdGUsIFRyYik7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIEFTU0VSVCAo MCk7DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIENoZWNrIHRoZSBUUkIgZXhlY3V0aW9uIHJlc3VsdC4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19Q UklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAg ICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIGV4ZWN1dGVkIHN1Y2Nlc3Nm dWxseS4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgIFRoZSBUUkIgaXMgbm90IGNv bXBsZXRlZCBmb3IgZXhlY3V0aW9uLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg U29tZSBlcnJvcyBoYXBwZW4gd2hlbiBleGVjdXRpbmcgdGhpcyByZXF1ZXN0Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNDaGVja1RyYlJlc3VsdCAoDQo+ID4g KyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAg SU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQ7DQo+ ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRzdHM7DQo+ID4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gPiArDQo+ID4g KyAgRGV2QmFzZSA9IFByaXZhdGUtPkRldkJhc2U7DQo+ID4gKyAgUGFja2V0ICA9IFRyYi0+UGFj a2V0Ow0KPiA+ICsgIGlmIChUcmItPlVzZUZpZm8gPT0gVFJVRSkgew0KPiA+ICsgICAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoUGFja2V0LT5JblRyYW5zZmVyTGVu Z3RoKSB7DQo+ID4gKyAgICBkbyB7DQo+ID4gKyAgICAgIElkc3RzID0gTW1pb1JlYWQzMiAoRGV2 QmFzZSArIERXX01NQ19JRFNUUyk7DQo+ID4gKyAgICB9IHdoaWxlICgoSWRzdHMgJiBCSVQxKSA9 PSAwKTsNCj4gPiArICB9IGVsc2UgaWYgKFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGgpIHsNCj4g PiArICAgIGRvIHsNCj4gPiArICAgICAgSWRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdf TU1DX0lEU1RTKTsNCj4gPiArICAgIH0gd2hpbGUgKChJZHN0cyAmIEJJVDApID09IDApOw0KPiA+ ICsgIH0gZWxzZSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ ICsgIElkc3RzID0gfjA7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfSURT VFMsIElkc3RzKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBXYWl0IGZvciB0aGUgVFJCIGV4ZWN1dGlvbiByZXN1bHQu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBEV19NTUNfSENfUFJJVkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0g VHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2Uu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBleGVj dXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21l IGVycm9zIGhhcHBlbiB3aGVuIGV4ZWN1dGluZyB0aGlzIHJlcXVlc3QuDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY1dhaXRUcmJSZXN1bHQgKA0KPiA+ICsgIElO IERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ICsgIElOIERX X01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAg RUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4gPiArICBVSU5U NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiA+ICsgIEJPT0xFQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZmluaXRlV2FpdDsNCj4gPiArDQo+ID4gKyAg UGFja2V0ID0gVHJiLT5QYWNrZXQ7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBXYWl0IENvbW1hbmQg Q29tcGxldGUgSW50ZXJydXB0IFN0YXR1cyBiaXQgaW4gTm9ybWFsIEludGVycnVwdA0KPiBTdGF0 dXMNCj4gPiArICAvLyBSZWdpc3Rlcg0KPiA+ICsgIC8vDQo+ID4gKyAgVGltZW91dCA9IFBhY2tl dC0+VGltZW91dDsNCj4gPiArICBpZiAoVGltZW91dCA9PSAwKSB7DQo+ID4gKyAgICBJbmZpbml0 ZVdhaXQgPSBUUlVFOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBJbmZpbml0ZVdhaXQgPSBG QUxTRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHdoaWxlIChJbmZpbml0ZVdhaXQgfHwgKFRp bWVvdXQgPiAwKSkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIENoZWNrIFRyYiBleGVjdXRp b24gcmVzdWx0IGJ5IHJlYWRpbmcgTm9ybWFsIEludGVycnVwdCBTdGF0dXMNCj4gcmVnaXN0ZXIu DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgU3RhdHVzID0gRHdNbWNDaGVja1RyYlJlc3VsdCAoUHJp dmF0ZSwgVHJiKTsNCj4gPiArICAgIGlmIChTdGF0dXMgIT0gRUZJX05PVF9SRUFEWSkgew0KPiA+ ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgLy8NCj4gPiArICAg IC8vIFN0YWxsIGZvciAxIG1pY3Jvc2Vjb25kLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIGdCUy0+ U3RhbGwgKDEpOw0KPiA+ICsNCj4gPiArICAgIFRpbWVvdXQtLTsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgIHJldHVybiBFRklfVElNRU9VVDsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9FbWJl ZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRW1tY0RldmljZS5jDQo+IGIvRW1iZWRkZWRQa2cv RHJpdmVycy9Ed01tY0hjRHhlL0VtbWNEZXZpY2UuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5iN2E4Njg4YzRkMmUNCj4gPiAtLS0gL2Rldi9udWxs DQo+ID4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0VtbWNEZXZpY2UuYw0K PiA+IEBAIC0wLDAgKzEsMTA0MiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBUaGlzIGZpbGUg cHJvdmlkZXMgc29tZSBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGFyZSBzcGVjaWZpYyBmb3IgRU1N Qw0KPiBkZXZpY2UuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMjEsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmln aHQgKGMpIDIwMTgsIExpbmFyby4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0KPiA+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMNCj4gdGhpcw0KPiA+ ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZv dW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBP UiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0 cnlTdGFuZGFyZC9FbW1jLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVt b3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgIkR3TW1jSGNEeGUuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgRU1NQ19HRVRfU1RBVEUo eCkgICAgICAgICAgICAgICAgICAgKCgoeCkgPj4gOSkgJiAweGYpDQo+ID4gKyNkZWZpbmUgRU1N Q19TVEFURV9JRExFICAgICAgICAgICAgICAgICAgICAgMA0KPiA+ICsjZGVmaW5lIEVNTUNfU1RB VEVfUkVBRFkgICAgICAgICAgICAgICAgICAgIDENCj4gPiArI2RlZmluZSBFTU1DX1NUQVRFX0lE RU5UICAgICAgICAgICAgICAgICAgICAyDQo+ID4gKyNkZWZpbmUgRU1NQ19TVEFURV9TVEJZICAg ICAgICAgICAgICAgICAgICAgMw0KPiA+ICsjZGVmaW5lIEVNTUNfU1RBVEVfVFJBTiAgICAgICAg ICAgICAgICAgICAgIDQNCj4gPiArI2RlZmluZSBFTU1DX1NUQVRFX0RBVEEgICAgICAgICAgICAg ICAgICAgICA1DQo+ID4gKyNkZWZpbmUgRU1NQ19TVEFURV9SQ1YgICAgICAgICAgICAgICAgICAg ICAgNg0KPiA+ICsjZGVmaW5lIEVNTUNfU1RBVEVfUFJHICAgICAgICAgICAgICAgICAgICAgIDcN Cj4gPiArI2RlZmluZSBFTU1DX1NUQVRFX0RJUyAgICAgICAgICAgICAgICAgICAgICA4DQo+ID4g KyNkZWZpbmUgRU1NQ19TVEFURV9CVFNUICAgICAgICAgICAgICAgICAgICAgOQ0KPiA+ICsjZGVm aW5lIEVNTUNfU1RBVEVfU0xQICAgICAgICAgICAgICAgICAgICAgIDEwDQo+ID4gKw0KPiA+ICsj ZGVmaW5lIEVNTUNfQ01EMV9DQVBBQ0lUWV9MRVNTX1RIQU5fMkdCICAgIDB4MDBGRjgwODAgLy8N Cj4gQ2FwYWNpdHkgPD0gMkdCLCBieXRlIGFkZHJlc3NpbmcgdXNlZA0KPiA+ICsjZGVmaW5lIEVN TUNfQ01EMV9DQVBBQ0lUWV9HUkVBVEVSX1RIQU5fMkdCIDB4NDBGRjgwODAgLy8NCj4gQ2FwYWNp dHkgPiAyR0IsIDUxMi1ieXRlIHNlY3RvciBhZGRyZXNzaW5nIHVzZWQNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFNlbmQgY29tbWFuZCBHT19JRExFX1NUQVRFIChDTUQwIHdpdGggYXJndW1lbnQg b2YgMHgwMDAwMDAwMCkgdG8NCj4gdGhlIGRldmljZSB0bw0KPiA+ICsgIG1ha2UgaXQgZ28gdG8g SWRsZSBTdGF0ZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5k YXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNT X1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiA+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRo ZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1hbmQNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRvLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBFTU1DIGRldmljZSBpcyByZXNldCBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBUaGUgZGV2aWNlIHJlc2V0IGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArRW1tY1Jlc2V0ICgNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVG SV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAg RUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4g PiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiAr ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4g KyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAg UGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1t Y1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAg ICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJs ay5Db21tYW5kSW5kZXggPSBFTU1DX0dPX0lETEVfU1RBVEU7DQo+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUJjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJl c3BvbnNlVHlwZSA9IDA7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMDsN Cj4gPiArDQo+ID4gKyAgZ0JTLT5TdGFsbCAoMTAwMCk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9 IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsN Cj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBT ZW5kIGNvbW1hbmQgU0VORF9PUF9DT05EIHRvIHRoZSBFTU1DIGRldmljZSB0byBnZXQgdGhlIGRh dGEgb2YNCj4gdGhlIE9DUg0KPiA+ICsgIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBSZWZlciB0 byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjQgZm9yIGRldGFp bHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBQYXNzVGhydSAgQSBwb2ludGVyIHRv IHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdIEFyZ3VtZW50 ICBPbiBpbnB1dCwgdGhlIGFyZ3VtZW50IG9mIFNFTkRfT1BfQ09ORA0KPiBpcyB0byBzZW5kDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZGV2aWNlLg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgYXJndW1lbnQgaXMgdGhlIHZh bHVlIG9mIE9DUg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBk b25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVy YXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFbW1j R2V0T2NyICgNCj4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICpQ YXNzVGhydSwNCj4gPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICpB cmd1bWVudA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9D SyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxP Q0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BBU1Nf VEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNkTW1j Q21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3Rh dHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBhY2tl dCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAg ID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0 YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJ Q19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1D X1NFTkRfT1BfQ09ORDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0Nv bW1hbmRUeXBlQmNyOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVz cG9uc2VUeXBlUjM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKkFyZ3Vt ZW50Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1 LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEZvciBkZXRhaWxzLCByZWZlciB0byBTRCBIb3N0IENv bnRyb2xsZXIgU2ltcGxpZmllZCBTcGVjIDMuMCBUYWJsZSAyLTEyLg0KPiA+ICsgICAgLy8NCj4g PiArICAgICpBcmd1bWVudCA9IFNkTW1jU3RhdHVzQmxrLlJlc3AwOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg QnJvYWRjYXN0IGNvbW1hbmQgQUxMX1NFTkRfQ0lEIHRvIHRoZSBidXMgdG8gYXNrIGFsbCB0aGUg RU1NQw0KPiBkZXZpY2VzIHRvIHNlbmQNCj4gPiArICB0aGUgZGF0YSBvZiB0aGVpciBDSUQgcmVn aXN0ZXJzLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQg U3BlYyA1LjEgU2VjdGlvbiA2LjQgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtp bl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhS VV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBk b25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVy YXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFbW1j R2V0QWxsQ2lkICgNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAg ICpQYXNzVGhydQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9C TE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNf QkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BB U1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNk TW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1j U3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBh Y2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxr ICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1t Y1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VO RVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBF TU1DX0FMTF9TRU5EX0NJRDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1t Y0NvbW1hbmRUeXBlQmNyOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1j UmVzcG9uc2VUeXBlUjI7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMDsN Cj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwg JlBhY2tldCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRVRfUkVMQVRJVkVfQUREUiB0byB0 aGUgRU1NQyBkZXZpY2UgdG8gYXNzaWduIGENCj4gUmVsYXRpdmUgZGV2aWNlDQo+ID4gKyAgQWRk cmVzcyAoUkNBKS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5k YXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNT X1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBh ZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBP dGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK0VGSV9TVEFUVVMNCj4gPiArRW1tY1NldFJjYSAoDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSY2ENCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklf U0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVG SV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4g KyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsg IFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBh Y2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNT dGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAg ID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZEluZGV4ID0gRU1NQ19TRVRfUkVMQVRJVkVfQUREUjsNCj4gPiArICBTZE1tY0NtZEJs ay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsu UmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gPiArICBTZE1tY0NtZEJsay5D b21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8PCAxNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVz ID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4g Kw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFNlbmQgY29tbWFuZCBTRU5EX0NTRCB0byB0aGUgRU1NQyBkZXZpY2UgdG8gZ2V0IHRoZSBkYXRh IG9mIHRoZQ0KPiBDU0QgcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxl Y3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuMTAuNCBmb3IgZGV0YWlscy4NCj4g PiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSBy ZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ID4gKyAgQHBhcmFt W291dF0gQ3NkICAgICAgICAgICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBjb250ZW50IG9mIHRo ZSBDU0QNCj4gcmVnaXN0ZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3Rl IHRoZSBjYWxsZXIgc2hvdWxkIGlnbm9yZSB0aGUgbG93ZXN0IGJ5dGUgb2YNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoaXMgYnVmZmVyIGFzIHRoZSBjb250ZW50IG9mIHRoaXMg Ynl0ZSBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhbmluZ2xlc3MgZXZl biBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRW1tY0dldENzZCAoDQo+ID4gKyAgSU4gICAgIEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gICAgIFVJ TlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAgICAgT1VUIEVNTUNfQ1NE ICAgICAgICAgICAgICAgICAgICAgICAqQ3NkDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJ X1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBF RklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsg IEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4g PiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiAr ICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4g PiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQ YWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1j U3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAg ICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxr LkNvbW1hbmRJbmRleCA9IEVNTUNfU0VORF9DU0Q7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFu ZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNl VHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjI7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFy Z3VtZW50ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NU aHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsgIGlmICgh RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gQ29weSAxMjhi aXQgZGF0YSBmb3IgQ1NEIHN0cnVjdHVyZS4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBDb3B5TWVt ICgoVk9JRCAqKUNzZCArIDEsICZTZE1tY1N0YXR1c0Jsay5SZXNwMCwgc2l6ZW9mDQo+IChFTU1D X0NTRCkgLSAxKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRUxFQ1RfREVTRUxFQ1Rf Q0FSRCB0byB0aGUgRU1NQyBkZXZpY2UgdG8NCj4gc2VsZWN0L2Rlc2VsZWN0IGl0Lg0KPiA+ICsN Cj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlv biA2LjEwLjQgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1 ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSAgUmNhICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mgb2Ygc2VsZWN0 ZWQgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBv cGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRW1tY1NlbGVjdCAoDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJP VE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSY2ENCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1B TkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RB VFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01N Q19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0g KCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZT ZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0g KCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0Nt ZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAm U2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hD X0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4 ID0gRU1NQ19TRUxFQ1RfREVTRUxFQ1RfQ0FSRDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5k VHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VU eXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJn dW1lbnQgPSAoVUlOVDMyKVJjYSA8PCAxNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1Ro cnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsg IHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29t bWFuZCBTRU5EX0VYVF9DU0QgdG8gdGhlIEVNTUMgZGV2aWNlIHRvIGdldCB0aGUgZGF0YSBvZg0K PiB0aGUgRVhUX0NTRA0KPiA+ICsgIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBF TU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjEwLjQgZm9yIGRldGFp bHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRv IHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW291dF0gRXh0Q3NkICAgICAg ICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBjb250ZW50IG9mIHRoZSBFWFRfQ1NEDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNHZXRFeHRDc2QgKA0KPiA+ICsg IElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ICsg ICAgIE9VVCBFTU1DX0VYVF9DU0QgICAgICAgICAgICAgICAgICAgKkV4dENzZA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RN bWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBT ZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tF VCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNk TW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNk TW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQp KTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0K PiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiArICBQ YWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ICsN Cj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NFTkRfRVhUX0NTRDsNCj4g PiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWR0YzsNCj4g PiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IDB4MDAwMDAwMDA7DQo+ID4gKw0KPiA+ ICsgIFBhY2tldC5JbkRhdGFCdWZmZXIgICAgID0gRXh0Q3NkOw0KPiA+ICsgIFBhY2tldC5JblRy YW5zZmVyTGVuZ3RoID0gc2l6ZW9mIChFTU1DX0VYVF9DU0QpOw0KPiA+ICsNCj4gPiArICBTdGF0 dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4g PiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5k IGNvbW1hbmQgU1dJVENIIHRvIHRoZSBFTU1DIGRldmljZSB0byBzd2l0Y2ggdGhlIG1vZGUgb2YN Cj4gb3BlcmF0aW9uIG9mIHRoZQ0KPiA+ICsgIHNlbGVjdGVkIERldmljZSBvciBtb2RpZmllcyB0 aGUgRVhUX0NTRCByZWdpc3RlcnMuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3Ry aWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuMTAuNCBmb3IgZGV0YWlscy4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBBY2Nlc3MgICAgICAgIFRoZSBhY2Nl c3MgbW9kZSBvZiBTV1RJQ0ggY29tbWFuZC4NCj4gPiArICBAcGFyYW1baW5dICBJbmRleCAgICAg ICAgIFRoZSBvZmZzZXQgb2YgdGhlIGZpZWxkIHRvIGJlIGFjY2Vzcy4NCj4gPiArICBAcGFyYW1b aW5dICBWYWx1ZSAgICAgICAgIFRoZSB2YWx1ZSB0byBiZSBzZXQgdG8gdGhlIHNwZWNpZmllZCBm aWVsZCBvZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUX0NTRCByZWdpc3Rl ci4NCj4gPiArICBAcGFyYW1baW5dICBDbWRTZXQgICAgICAgIFRoZSB2YWx1ZSBvZiBDbWRTZXQg ZmllbGQgb2YgRVhUX0NTRCByZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNTd2l0Y2ggKA0KPiA+ICsgIElOIEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXNzLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWYWx1ZSwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENtZFNldA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9N TUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NE X01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBF RklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklf U1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAg WmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVy b01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAg WmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0 LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1 c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBE V19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21t YW5kSW5kZXggPSBFTU1DX1NXSVRDSDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAg PSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0g U2RNbWNSZXNwb25zZVR5cGVSMWI7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50 ID0gKEFjY2VzcyA8PCAyNCkgfCAoSW5kZXggPDwgMTYpIHwgXA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChWYWx1ZSA8PCA4KSB8IENtZFNldDsNCj4gPiArDQo+ID4gKyAg U3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7 DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFNlbmQgY29tbWFuZCBTRU5EX1NUQVRVUyB0byB0aGUgYWRkcmVzc2VkIEVNTUMgZGV2 aWNlIHRvIGdldCBpdHMNCj4gc3RhdHVzDQo+ID4gKyAgcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsg IFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuMTAu NCBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBB IHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBS Y2EgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBvZiBhZGRyZXNzZWQgZGV2 aWNlLg0KPiA+ICsgIEBwYXJhbVtvdXRdIERldlN0YXR1cyAgICAgVGhlIHJldHVybmVkIGRldmlj ZSBzdGF0dXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9w ZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAg ICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRV Uw0KPiA+ICtFbW1jU2VuZFN0YXR1cyAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19U SFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gICAgIFVJTlQxNiAgICAgICAgICAg ICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAgICAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAqRGV2U3RhdHVzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19D T01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1D X1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9T RF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJv TWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVt ICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJv TWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RN bWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxr ID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01N Q19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJ bmRleCA9IEVNTUNfU0VORF9TVEFUVVM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUg ID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9 IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50 ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5Q YXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsgIGlmICghRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAqRGV2U3RhdHVzID0gU2RNbWNTdGF0dXNCbGsuUmVz cDA7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgU0VORF9UVU5JTkdfQkxPQ0sgdG8gdGhl IEVNTUMgZGV2aWNlIGZvciBIUzIwMA0KPiBvcHRpbWFsIHNhbXBsaW5nDQo+ID4gKyAgcG9pbnQg ZGV0ZWN0aW9uLg0KPiA+ICsNCj4gPiArICBJdCBtYXkgYmUgc2VudCB1cCB0byA0MCB0aW1lcyB1 bnRpbCB0aGUgaG9zdCBmaW5pc2hlcyB0aGUgdHVuaW5nDQo+IHByb2NlZHVyZS4NCj4gPiArDQo+ ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24g Ni42LjggZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAg ICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2lu XSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRoIHRvIHdvcmsuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4N Cj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFbW1jU2VuZFR1bmluZ0JsayAo DQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUs DQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aA0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAg ICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAg ICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01N QU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFR1bmluZ0Jsb2NrWzEyOF07DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY0Nt ZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1 c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQs IHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9 ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0 dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNf VElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gRU1NQ19T RU5EX1RVTklOR19CTE9DSzsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1t Y0NvbW1hbmRUeXBlQWR0YzsNCj4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1t Y1Jlc3BvbnNlVHlwZVIxOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IDA7 DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5JbkRhdGFCdWZmZXIgPSBUdW5pbmdCbG9jazsNCj4gPiAr ICBpZiAoQnVzV2lkdGggPT0gOCkgew0KPiA+ICsgICAgUGFja2V0LkluVHJhbnNmZXJMZW5ndGgg PSBzaXplb2YgKFR1bmluZ0Jsb2NrKTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgUGFja2V0 LkluVHJhbnNmZXJMZW5ndGggPSA2NDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9 IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsN Cj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBU dW5uaW5nIHRoZSBjbG9jayB0byBnZXQgSFMyMDAgb3B0aW1hbCBzYW1wbGluZyBwb2ludC4NCj4g PiArDQo+ID4gKyAgQ29tbWFuZCBTRU5EX1RVTklOR19CTE9DSyBtYXkgYmUgc2VudCB1cCB0byA0 MCB0aW1lcyB1bnRpbCB0aGUNCj4gaG9zdCBmaW5pc2hlcw0KPiA+ICsgIHRoZSB0dW5pbmcgcHJv Y2VkdXJlLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQg U3BlYyA1LjEgU2VjdGlvbiA2LjYuOC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAg ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9ERVZJQ0VfSU9fUFJPVE9DT0wNCj4gaW5zdGFu Y2UuDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBi dXMgd2lkdGggdG8gd29yay4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJz ICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK0VtbWNUdW5pbmdDbGtGb3JIczIwMCAoDQo+ID4gKyAgSU4gVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOIEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFN3aXRjaCB0aGUgYnVzIHdpZHRoIHRvIHNwZWNpZmllZCB3aWR0aC4NCj4gPiArDQo+ID4gKyAg UmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi42Ljku DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBFRklfREVWSUNFX0lPX1BST1RPQ09MDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0g UGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9Q Uk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4g KyAgQHBhcmFtW2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mg dG8gYmUgYXNzaWduZWQuDQo+ID4gKyAgQHBhcmFtW2luXSBJc0RkciAgICAgICAgICBJZiBUUlVF LCB1c2UgZHVhbCBkYXRhIHJhdGUgZGF0YSBzaW1wbGluZyBtZXRob2QuDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UgdXNlIHNpbmdsZSBkYXRhIHJhdGUgZGF0YSBz aW1wbGluZyBtZXRob2QuDQo+ID4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVz IHdpZHRoIHRvIGJlIHNldCwgaXQgY291bGQgYmUgNCBvciA4Lg0KPiA+ICsNCj4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRW1tY1N3aXRjaEJ1c1dpZHRoICgN Cj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAg SU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc0RkciwNCj4gPiArICBJTiBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlOVDggICAg ICAgICAgICAgICBBY2Nlc3M7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICBJbmRleDsNCj4g PiArICBVSU5UOCAgICAgICAgICAgICAgIFZhbHVlOw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAg ICAgQ21kU2V0Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgRGV2U3RhdHVzOw0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIFdyaXRlIEJ5dGUsIHRoZSBWYWx1ZSBmaWVsZCBpcyB3cml0 dGVuIGludG8gdGhlIGJ5dGUgcG9pbnRlZCBieSBJbmRleC4NCj4gPiArICAvLw0KPiA+ICsgIEFj Y2VzcyA9IDB4MDM7DQo+ID4gKyAgSW5kZXggID0gT0ZGU0VUX09GIChFTU1DX0VYVF9DU0QsIEJ1 c1dpZHRoKTsNCj4gPiArICBpZiAoQnVzV2lkdGggPT0gMSkgew0KPiA+ICsgICAgVmFsdWUgPSAw Ow0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBpZiAoQnVzV2lkdGggPT0gNCkgew0KPiA+ICsg ICAgICBWYWx1ZSA9IDE7DQo+ID4gKyAgICB9IGVsc2UgaWYgKEJ1c1dpZHRoID09IDgpIHsNCj4g PiArICAgICAgVmFsdWUgPSAyOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgcmV0dXJu IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAo SXNEZHIpIHsNCj4gPiArICAgICAgVmFsdWUgKz0gNDsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIENtZFNldCA9IDA7DQo+ID4gKyAgU3RhdHVzID0gRW1tY1N3aXRjaCAoUGFz c1RocnUsIEFjY2VzcywgSW5kZXgsIFZhbHVlLCBDbWRTZXQpOw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VSUk9S LA0KPiA+ICsgICAgICAiRW1tY1N3aXRjaEJ1c1dpZHRoOiBTd2l0Y2ggdG8gYnVzIHdpZHRoICVk IGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gKyAgICAgIEJ1c1dpZHRoLA0KPiA+ICsgICAgICBTdGF0 dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4g PiArDQo+ID4gKyAgZG8gew0KPiA+ICsgICAgU3RhdHVzID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NU aHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ICsgICAgICBERUJVRyAoKA0KPiA+ICsgICAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsg ICAgICAgICJFbW1jU3dpdGNoQnVzV2lkdGg6IFNlbmQgc3RhdHVzIGZhaWxzIHdpdGggJXJcbiIs DQo+ID4gKyAgICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICAgKSk7DQo+ID4gKyAgICAgIHJldHVy biBTdGF0dXM7DQo+ID4gKyAgICB9DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gQ2hlY2sgdGhl IHN3aXRjaCBvcGVyYXRpb24gaXMgcmVhbGx5IHN1Y2Nlc3NmdWwgb3Igbm90Lg0KPiA+ICsgICAg Ly8NCj4gPiArICB9IHdoaWxlICgoRGV2U3RhdHVzICYgMHhmKSA9PSBFTU1DX1NUQVRFX1BSRyk7 DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IER3TW1jSGNTZXRCdXNXaWR0aCAoRGV2QmFzZSwgSXNE ZHIsIEJ1c1dpZHRoKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU3dpdGNoIHRoZSBjbG9jayBmcmVxdWVu Y3kgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBF bGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi42Lg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dIERldklvICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0RFVklDRV9JT19Q Uk9UT0NPTA0KPiBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEg cG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gUmNh ICAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0K PiA+ICsgIEBwYXJhbVtpbl0gSHNUaW1pbmcgICAgICAgVGhlIHZhbHVlIHRvIGJlIHdyaXR0ZW4g dG8gSFNfVElNSU5HIGZpZWxkIG9mDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBF WFRfQ1NEIHJlZ2lzdGVyLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2xvY2tGcmVxICAgICAgVGhlIG1h eCBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0LCB0aGUgdW5pdCBpcw0KPiBNSHouDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNv cnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24g ZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFbW1jU3dpdGNo Q2xvY2tGcmVxICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERldkJhc2UsDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAq UGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS Y2EsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIc1RpbWlu ZywNCj4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrRnJl cQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgQWNjZXNzOw0KPiA+ICsgIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAg ICAgICAgICBWYWx1ZTsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIENtZFNldDsN Cj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIERldlN0YXR1czsNCj4gPiArICBEV19N TUNfSENfUFJJVkFURV9EQVRBICAgICpQcml2YXRlOw0KPiA+ICsNCj4gPiArICBQcml2YXRlID0g RFdfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChQYXNzVGhydSk7DQo+ID4gKyAgLy8NCj4gPiAr ICAvLyBXcml0ZSBCeXRlLCB0aGUgVmFsdWUgZmllbGQgaXMgd3JpdHRlbiBpbnRvIHRoZSBieXRl IHBvaW50ZWQgYnkgSW5kZXguDQo+ID4gKyAgLy8NCj4gPiArICBBY2Nlc3MgPSAweDAzOw0KPiA+ ICsgIEluZGV4ICA9IE9GRlNFVF9PRiAoRU1NQ19FWFRfQ1NELCBIc1RpbWluZyk7DQo+ID4gKyAg VmFsdWUgID0gSHNUaW1pbmc7DQo+ID4gKyAgQ21kU2V0ID0gMDsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gRW1tY1N3aXRjaCAoUGFzc1RocnUsIEFjY2VzcywgSW5kZXgsIFZhbHVlLCBDbWRTZXQp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiRW1tY1N3aXRjaENsb2NrRnJlcTog U3dpdGNoIHRvIGhzdGltaW5nICVkIGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gKyAgICAgIEhzVGlt aW5nLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4g U3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gRW1tY1NlbmRTdGF0dXMg KFBhc3NUaHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsg ICAgICAiRW1tY1N3aXRjaENsb2NrRnJlcTogU2VuZCBzdGF0dXMgZmFpbHMgd2l0aCAlclxuIiwN Cj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBDaGVjayB0aGUgc3dpdGNoIG9wZXJh dGlvbiBpcyByZWFsbHkgc3VjY2Vzc2Z1bCBvciBub3QuDQo+ID4gKyAgLy8NCj4gPiArICBpZiAo KERldlN0YXR1cyAmIEJJVDcpICE9IDApIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAg IERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiRW1tY1N3aXRjaENsb2NrRnJlcTogVGhlIHN3aXRj aCBvcGVyYXRpb24gZmFpbHMgYXMgRGV2U3RhdHVzDQo+IDB4JTA4eFxuIiwNCj4gPiArICAgICAg RGV2U3RhdHVzDQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJS T1I7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ29udmVydCB0aGUgY2xvY2sgZnJl cSB1bml0IGZyb20gTUh6IHRvIEtIei4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IER3TW1j SGNDbG9ja1N1cHBseSAoRGV2QmFzZSwgQ2xvY2tGcmVxICogMTAwMCwgUHJpdmF0ZS0NCj4gPkNh cGFiaWxpdHlbMF0pOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBTd2l0Y2ggdG8gdGhlIEhpZ2ggU3BlZWQgdGltaW5nIGFjY29y ZGluZyB0byByZXF1ZXN0Lg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwg U3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuOC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSBEZXZJbyAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9ERVZJQ0VfSU9fUFJPVE9DT0wN Cj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIg dG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFJjYSAgICAgICAg ICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4NCj4gPiArICBA cGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5IHRvIGJlIHNl dC4NCj4gPiArICBAcGFyYW1baW5dIElzRGRyICAgICAgICAgIElmIFRSVUUsIHVzZSBkdWFsIGRh dGEgcmF0ZSBkYXRhIHNpbXBsaW5nIG1ldGhvZC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE90aGVyd2lzZSB1c2Ugc2luZ2xlIGRhdGEgcmF0ZSBkYXRhIHNpbXBsaW5nIG1ldGhv ZC4NCj4gPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdG8gYmUg c2V0LCBpdCBjb3VsZCBiZSA0IG9yIDguDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFs IE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFbW1jU3dpdGNoVG9IaWdoU3BlZWQgKA0KPiA+ICsgIElO IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiArICBJTiBV SU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gPiArICBJTiBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrRnJlcSwNCj4gPiArICBJTiBCT09MRUFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAg IEhzVGltaW5nOw0KPiA+ICsNCj4gPiArICBIc1RpbWluZyA9IDE7DQo+ID4gKyAgU3RhdHVzID0g RW1tY1N3aXRjaENsb2NrRnJlcSAoRGV2QmFzZSwgUGFzc1RocnUsIFJjYSwgSHNUaW1pbmcsDQo+ IENsb2NrRnJlcSk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKyAgU3RhdHVzID0gRW1tY1N3aXRjaEJ1c1dp ZHRoIChEZXZCYXNlLCBQYXNzVGhydSwgUmNhLCBJc0RkciwNCj4gQnVzV2lkdGgpOw0KPiA+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4g KyAgfQ0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgU3dpdGNoIHRvIHRoZSBIUzIwMCB0aW1pbmcgYWNjb3JkaW5nIHRvIHJlcXVlc3Qu DQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUu MSBTZWN0aW9uIDYuNi44Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAg IEEgcG9pbnRlciB0byB0aGUgRUZJX0RFVklDRV9JT19QUk9UT0NPTA0KPiBpbnN0YW5jZS4NCj4g PiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZl IGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2xvY2tG cmVxICAgICAgVGhlIG1heCBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0Lg0KPiA+ICsgIEBwYXJh bVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB0byBiZSBzZXQsIGl0IGNvdWxkIGJl IDQgb3IgOC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3Bl cmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0VtbWNTd2l0Y2hUb0hTMjAwICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDbG9ja0ZyZXEsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCdXNXaWR0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU3dpdGNoIHRoZSBoaWdoIHNw ZWVkIHRpbWluZyBhY2NvcmRpbmcgdG8gcmVxdWVzdC4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8g RU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi42LjguDQo+ID4gKw0K PiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfREVW SUNFX0lPX1BST1RPQ09MDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUg ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8gYmUgYXNz aWduZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJh dGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAg IFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtFbW1jU2V0QnVzTW9kZSAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RP Q09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmNhDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVNTUNfQ1NEICAgICAgICAgICAgICAgICAgICAg IENzZDsNCj4gPiArICBFTU1DX0VYVF9DU0QgICAgICAgICAgICAgICAgICBFeHRDc2Q7DQo+ID4g KyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgSHNUaW1pbmc7DQo+ID4gKyAgQk9PTEVB TiAgICAgICAgICAgICAgICAgICAgICAgSXNEZHI7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgRGV2U3RhdHVzOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAgIENsb2NrRnJlcTsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBCdXNX aWR0aDsNCj4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAqUHJpdmF0ZTsNCj4g PiArDQo+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAoUGFzc1Ro cnUpOw0KPiA+ICsgIEFTU0VSVCAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5CYXNlQ2xrRnJlcSAh PSAwKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gRW1tY0dldENzZCAoUGFzc1RocnUsIFJjYSwg JkNzZCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcg KChERUJVR19FUlJPUiwgIkVtbWNTZXRCdXNNb2RlOiBHZXRDc2QgZmFpbHMgd2l0aCAlclxuIiwN Cj4gU3RhdHVzKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKyAgU3RhdHVzID0gRW1tY1NlbGVjdCAoUGFzc1RocnUsIFJjYSk7DQo+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVtbWNT ZXRCdXNNb2RlOiBTZWxlY3QgZmFpbHMgd2l0aCAlclxuIiwNCj4gU3RhdHVzKSk7DQo+ID4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgZG8gew0KPiA+ICsgICAg U3RhdHVzID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NUaHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICBERUJVRyAoKA0KPiA+ ICsgICAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAgICJFbW1jU2V0QnVzTW9kZTogR2V0 IFN0YXR1cyBmYWlscyB3aXRoICVyXG4iLA0KPiA+ICsgICAgICAgIFN0YXR1cw0KPiA+ICsgICAg ICAgICkpOw0KPiA+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0g d2hpbGUgKEVNTUNfR0VUX1NUQVRFIChEZXZTdGF0dXMpICE9IEVNTUNfU1RBVEVfVFJBTik7DQo+ ID4gKw0KPiA+ICsgIEJ1c1dpZHRoID0gMTsNCj4gPiArICBTdGF0dXMgPSBFbW1jU3dpdGNoQnVz V2lkdGggKERldkJhc2UsIFBhc3NUaHJ1LCBSY2EsIEZBTFNFLA0KPiBCdXNXaWR0aCk7DQo+ID4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIEJ1c1dpZHRoID0gUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5C dXNXaWR0aDsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEdldCBEZWl2Y2VfVHlwZSBmcm9tIEVYVF9D U0QgcmVnaXN0ZXIuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBFbW1jR2V0RXh0Q3NkIChQ YXNzVGhydSwgJkV4dENzZCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVtbWNTZXRCdXNNb2RlOiBHZXRFeHRDc2QgZmFp bHMgd2l0aA0KPiAlclxuIiwgU3RhdHVzKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDYWxjdWxhdGUgc3VwcG9ydGVkIGJ1 cyBzcGVlZC9idXMgd2lkdGgvY2xvY2sgZnJlcXVlbmN5Lg0KPiA+ICsgIC8vDQo+ID4gKyAgSHNU aW1pbmcgID0gMDsNCj4gPiArICBJc0RkciAgICAgPSBGQUxTRTsNCj4gPiArICBDbG9ja0ZyZXEg PSAwOw0KPiA+ICsgIGlmICgoKEV4dENzZC5EZXZpY2VUeXBlICYgKEJJVDQgfCBCSVQ1KSkgIT0g MCkgJiYNCj4gPiArICAgICAgKFByaXZhdGUtPkNhcGFiaWxpdHlbMF0uU2RyMTA0ICE9IDApKSB7 DQo+ID4gKyAgICBIc1RpbWluZyAgPSAyOw0KPiA+ICsgICAgSXNEZHIgICAgID0gRkFMU0U7DQo+ ID4gKyAgICBDbG9ja0ZyZXEgPSAyMDA7DQo+ID4gKyAgfSBlbHNlIGlmICgoKEV4dENzZC5EZXZp Y2VUeXBlICYgKEJJVDIgfCBCSVQzKSkgIT0gMCkgJiYNCj4gPiArICAgICAgICAgICAgIChQcml2 YXRlLT5DYXBhYmlsaXR5WzBdLkRkcjUwICE9IDApKSB7DQo+ID4gKyAgICBIc1RpbWluZyAgPSAx Ow0KPiA+ICsgICAgSXNEZHIgICAgID0gVFJVRTsNCj4gPiArICAgIENsb2NrRnJlcSA9IDUyOw0K PiA+ICsgIH0gZWxzZSBpZiAoKChFeHRDc2QuRGV2aWNlVHlwZSAmIEJJVDEpICE9IDApICYmDQo+ ID4gKyAgICAgICAgICAgICAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5IaWdoU3BlZWQgIT0gMCkp IHsNCj4gPiArICAgIEhzVGltaW5nICA9IDE7DQo+ID4gKyAgICBJc0RkciAgICAgPSBGQUxTRTsN Cj4gPiArICAgIENsb2NrRnJlcSA9IDUyOw0KPiA+ICsgIH0gZWxzZSBpZiAoKChFeHRDc2QuRGV2 aWNlVHlwZSAmIEJJVDApICE9IDApICYmDQo+ID4gKyAgICAgICAgICAgICAoUHJpdmF0ZS0+Q2Fw YWJpbGl0eVswXS5IaWdoU3BlZWQgIT0gMCkpIHsNCj4gPiArICAgIEhzVGltaW5nICA9IDE7DQo+ ID4gKyAgICBJc0RkciAgICAgPSBGQUxTRTsNCj4gPiArICAgIENsb2NrRnJlcSA9IDI2Ow0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKChDbG9ja0ZyZXEgPT0gMCkgfHwgKEhzVGltaW5nID09 IDApKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gQ29udGludWUgdXNpbmcgZGVmYXVsdCBz ZXR0aW5nLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ICsg ICAgIkVtbWNTZXRCdXNNb2RlOiBIc1RpbWluZyAlZCBDbG9ja0ZyZXEgJWQgQnVzV2lkdGggJWQg RGRyDQo+ICVhXG4iLA0KPiA+ICsgICAgSHNUaW1pbmcsDQo+ID4gKyAgICBDbG9ja0ZyZXEsDQo+ ID4gKyAgICBCdXNXaWR0aCwNCj4gPiArICAgIElzRGRyID8gIlRSVUUiIDogIkZBTFNFIg0KPiA+ ICsgICAgKSk7DQo+ID4gKw0KPiA+ICsgIGlmIChIc1RpbWluZyA9PSAyKSB7DQo+ID4gKyAgICAv Lw0KPiA+ICsgICAgLy8gRXhlY3V0ZSBIUzIwMCB0aW1pbmcgc3dpdGNoIHByb2NlZHVyZQ0KPiA+ ICsgICAgLy8NCj4gPiArICAgIFN0YXR1cyA9IEVtbWNTd2l0Y2hUb0hTMjAwIChEZXZCYXNlLCBQ YXNzVGhydSwgUmNhLCBDbG9ja0ZyZXEsDQo+IEJ1c1dpZHRoKTsNCj4gPiArICB9IGVsc2Ugew0K PiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEV4ZWN1dGUgSGlnaCBTcGVlZCB0aW1pbmcgc3dpdGNo IHByb2NlZHVyZQ0KPiA+ICsgICAgLy8NCj4gPiArICAgIFN0YXR1cyA9IEVtbWNTd2l0Y2hUb0hp Z2hTcGVlZCAoDQo+ID4gKyAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgICAgICAgICAg ICAgIFBhc3NUaHJ1LA0KPiA+ICsgICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAgICAgICAgICAg ICAgIENsb2NrRnJlcSwNCj4gPiArICAgICAgICAgICAgICAgSXNEZHIsDQo+ID4gKyAgICAgICAg ICAgICAgIEJ1c1dpZHRoDQo+ID4gKyAgICAgICAgICAgICAgICk7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICBERUJVRyAoKA0KPiA+ICsgICAgREVCVUdfSU5GTywNCj4gPiArICAgICJFbW1jU2V0 QnVzTW9kZTogU3dpdGNoIHRvICVhICVyXG4iLA0KPiA+ICsgICAgKEhzVGltaW5nID09IDMpID8g IkhTNDAwIiA6ICgoSHNUaW1pbmcgPT0gMikgPyAiSFMyMDAiIDogIkhpZ2hTcGVlZCIpLA0KPiA+ ICsgICAgU3RhdHVzDQo+ID4gKyAgICApKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRXhlY3V0ZSBFTU1DIGRldmljZSBpZGVu dGlmaWNhdGlvbiBwcm9jZWR1cmUuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3Ry aWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNCBmb3IgZGV0YWlscy4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19I Q19QUklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgVGhlcmUgaXMgYSBFTU1DIGNhcmQuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBUaGVyZSBpcyBub3QgYSBFTU1DIGNhcmQuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFbW1jSWRlbnRpZmljYXRpb24gKA0KPiA+ICsgIElOIERXX01N Q19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICAgKlByaXZhdGUNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ICsgIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnU7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgIE9jcjsNCj4gPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAg UmNhOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICBEZXZTdGF0dXM7DQo+ ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gKw0KPiA+ ICsgIERldkJhc2UgICAgPSBQcml2YXRlLT5EZXZCYXNlOw0KPiA+ICsgIFBhc3NUaHJ1ID0gJlBy aXZhdGUtPlBhc3NUaHJ1Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBFbW1jUmVzZXQgKFBhc3NU aHJ1KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAo KA0KPiA+ICsgICAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgICAiRW1tY0lkZW50aWZpY2F0aW9u OiBFeGVjdXRpbmcgQ21kMCBmYWlscyB3aXRoICVyXG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4g PiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKyAgVGltZW91dCA9IDEwMDsNCj4gPiArICBkbyB7DQo+ID4gKyAgICBPY3IgPSBFTU1DX0NN RDFfQ0FQQUNJVFlfR1JFQVRFUl9USEFOXzJHQjsNCj4gPiArICAgIFN0YXR1cyA9IEVtbWNHZXRP Y3IgKFBhc3NUaHJ1LCAmT2NyKTsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiArICAgICAgREVCVUcgKCgNCj4gPiArICAgICAgICBERUJVR19JTkZPLA0KPiA+ICsgICAg ICAgICJFbW1jSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBDbWQxIGZhaWxzIHdpdGggJXJcbiIs DQo+ID4gKyAgICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICAgKSk7DQo+ID4gKyAgICAgIHJldHVy biBTdGF0dXM7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBpZiAoLS1UaW1lb3V0IDw9IDApIHsNCj4g PiArICAgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBN aWNyb1NlY29uZERlbGF5ICgxMDApOw0KPiA+ICsgIH0gd2hpbGUgKChPY3IgJiBCSVQzMSkgPT0g MCk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IEVtbWNHZXRBbGxDaWQgKFBhc3NUaHJ1KTsNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsg ICAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgICAiRW1tY0lkZW50aWZpY2F0aW9uOiBFeGVjdXRp bmcgQ21kMiBmYWlscyB3aXRoICVyXG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAg KSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICAvLw0KPiA+ICsg IC8vIHZhbGlkIFJDQSBzdGFydHMgZnJvbSAxLg0KPiA+ICsgIC8vIEhlcmUgd2UgdGFrZXMgYSBz aW1wbGUgZm9ybXVsYSB0byBjYWxjdWxhdGUgdGhlIFJDQS4NCj4gPiArICAvLyBEb24ndCBzdXBw b3J0IG11bHRpcGxlIGRldmljZXMgb24gdGhlIHNsb3QsIHRoYXQgaXMNCj4gPiArICAvLyBzaGFy ZWQgYnVzIHNsb3QgZmVhdHVyZS4NCj4gPiArICAvLw0KPiA+ICsgIFJjYSAgICA9IDE7DQo+ID4g KyAgU3RhdHVzID0gRW1tY1NldFJjYSAoUGFzc1RocnUsIFJjYSk7DQo+ID4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfSU5G TywNCj4gPiArICAgICAgIkVtbWNJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIENtZDMgZmFpbHMg d2l0aCAlclxuIiwNCj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBFbnRlciBEYXRh IFRyYW5mZXIgTW9kZS4NCj4gPiArICAvLw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJV R19JTkZPLA0KPiA+ICsgICAgIkVtbWNJZGVudGlmaWNhdGlvbjogRm91bmQgYSBFTU1DIGRldmlj ZSBhdCBSQ0EgWyVkXVxuIiwNCj4gPiArICAgIFJjYQ0KPiA+ICsgICAgKSk7DQo+ID4gKyAgUHJp dmF0ZS0+U2xvdFswXS5DYXJkVHlwZSA9IEVtbWNDYXJkVHlwZTsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gRW1tY1NldEJ1c01vZGUgKERldkJhc2UsIFBhc3NUaHJ1LCBSY2EpOw0KPiA+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEV4aXQgREFUQSBNb2RlLg0KPiA+ICsgIC8v DQo+ID4gKyAgZG8gew0KPiA+ICsgICAgU3RhdHVzID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NUaHJ1 LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgICBERUJVRyAoKA0KPiA+ICsgICAgICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAg ICAgIkVtbWNTd2l0Y2hCdXNXaWR0aDogU2VuZCBzdGF0dXMgZmFpbHMgd2l0aCAlclxuIiwNCj4g PiArICAgICAgICBTdGF0dXMNCj4gPiArICAgICAgICApKTsNCj4gPiArICAgICAgcmV0dXJuIFN0 YXR1czsNCj4gPiArICAgIH0NCj4gPiArICB9IHdoaWxlICgoRGV2U3RhdHVzICYgMHhmKSA9PSBF TU1DX1NUQVRFX0RBVEEpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ ID4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9TZERldmljZS5j DQo+IGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL1NkRGV2aWNlLmMNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjMyNDY2MzdiNmRkDQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4 ZS9TZERldmljZS5jDQo+ID4gQEAgLTAsMCArMSwxMTA1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ ICsgIFRoaXMgZmlsZSBwcm92aWRlcyBzb21lIGhlbHBlciBmdW5jdGlvbnMgd2hpY2ggYXJlIHNw ZWNpZmljIGZvciBTRCBjYXJkDQo+ID4gKyAgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBDb3B5cmln aHQgKGMpIDIwMTUgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiBhdmFpbGFibGUNCj4gPiArICB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFj Y29tcGFuaWVzDQo+IHRoaXMNCj4gPiArICBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMs DQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU2QuaD4NCj4gPiArDQo+ID4gKyNpbmNs dWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVi dWdMaWIuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJEd01tY0hjRHhlLmgiDQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgR09fSURMRV9TVEFURSB0byB0aGUgZGV2aWNlIHRv IG1ha2UgaXQgZ28gdG8gSWRsZSBTdGF0ZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgUGh5 c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhl DQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgU0QgZGV2aWNlIGlzIHJlc2V0IGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90 aGVycyAgICAgICAgICAgIFRoZSBkZXZpY2UgcmVzZXQgZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTZENhcmRSZXNldCAoDQo+ID4gKyAgSU4gRUZJX1NEX01N Q19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0K PiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNC bGs7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7 DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykp Ow0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0Js aykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0K PiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNr ZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVv dXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RN bWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfR09fSURMRV9TVEFURTsNCj4gPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmM7DQo+ID4gKw0KPiA+ICsgIFN0 YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0K PiA+ICsgIC8vU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tl dCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRU5EX0lGX0NPTkQgdG8gdGhlIGRldmljZSB0 byBpbnF1aXJ5IHRoZSBTRCBNZW1vcnkNCj4gQ2FyZA0KPiA+ICsgIGludGVyZmFjZSBjb25kaXRp b24uDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQg U3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtp bl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhS VV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ ID4gKyAgQHBhcmFtW2luXSBTdXBwbHlWb2x0YWdlICBUaGUgc3VwcGxpZWQgdm9sdGFnZSBieSB0 aGUgaG9zdC4NCj4gPiArICBAcGFyYW1baW5dIENoZWNrUGF0dGVybiAgIFRoZSBjaGVjayBwYXR0 ZXJuIHRvIGJlIHNlbnQgdG8gdGhlIGRldmljZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZFZvbHRhZ2VDaGVjayAoDQo+ID4gKyAg SU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAg SU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwbHlWb2x0YWdlLA0KPiA+ ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tQYXR0ZXJuDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAg ICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAg ICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1B TkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNp emVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNp emVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2Yg KFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWND bWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0K PiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7 DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX1NFTkRfSUZfQ09O RDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNy Ow0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjc7 DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFN1cHBseVZvbHRhZ2UgPDwg OCkgfA0KPiBDaGVja1BhdHRlcm47DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5Q YXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsNCj4gPiArICBpZiAo IUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgaWYgKFNkTW1jU3RhdHVzQmxrLlJlc3Aw ICE9IFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCkgew0KPiA+ICsgICAgICByZXR1cm4gRUZJ X0RFVklDRV9FUlJPUjsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVy biBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBT RElPX1NFTkRfT1BfQ09ORCB0byB0aGUgZGV2aWNlIHRvIHNlZSB3aGV0aGVyIGl0IGlzDQo+IFNE SU8gZGV2aWNlLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRElPIFNpbXBsaWZpZWQgU3BlYyAz IFNlY3Rpb24gMy4yIGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBhc3NU aHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBw YXJhbVtpbl0gVm9sdGFnZVdpbmRvdyAgVGhlIHN1cHBseSB2b2x0YWdlIHdpbmRvdy4NCj4gPiAr ICBAcGFyYW1baW5dIFMxOFIgICAgICAgICAgIFRoZSBib29sZWFuIHRvIHNob3cgaWYgaXQgc2hv dWxkIHN3aXRjaCB0byAxLjh2Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArU2Rpb1NlbmRPcENvbmQgKA0KPiA+ICsgIElOIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVm9sdGFnZVdpbmRvdywNCj4gPiArICBJTiBCT09MRUFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMxOFINCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7 DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2g7DQo+ID4gKw0K PiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0K PiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsg IFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RN bWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAg ICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRC bGsuQ29tbWFuZEluZGV4ID0gU0RJT19TRU5EX09QX0NPTkQ7DQo+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUJjcjsNCj4gPiArICBTZE1tY0NtZEJsay5S ZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVI0Ow0KPiA+ICsNCj4gPiArICBTd2l0Y2gg PSBTMThSID8gQklUMjQgOiAwOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJn dW1lbnQgPSAoVm9sdGFnZVdpbmRvdyAmIDB4RkZGRkZGKSB8DQo+IFN3aXRjaDsNCj4gPiArDQo+ ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwg TlVMTCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRF9TRU5EX09QX0NPTkQgdG8gdGhlIGRldmljZSB0 byBzZWUgd2hldGhlciBpdCBpcw0KPiBTRElPIGRldmljZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIg dG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3Ig ZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICAgQSBwb2lu dGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJjYSAg ICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBvZiBhZGRyZXNzZWQgZGV2aWNl Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFZvbHRhZ2VXaW5kb3cgIFRoZSBzdXBwbHkgdm9sdGFnZSB3 aW5kb3cuDQo+ID4gKyAgQHBhcmFtW2luXSAgUzE4UiAgICAgICAgICAgVGhlIGJvb2xlYW4gdG8g c2hvdyBpZiBpdCBzaG91bGQgc3dpdGNoIHRvIDEuOHYuDQo+ID4gKyAgQHBhcmFtW2luXSAgWHBj ICAgICAgICAgICAgVGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBpdCBzaG91bGQgcHJvdmlkZSAwLjM2 dw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvd2VyIGNvbnRyb2wuDQo+ID4g KyAgQHBhcmFtW2luXSAgSGNzICAgICAgICAgICAgVGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBpdCBz dXBwb3J0IGhvc3QgY2FwYWNpdHkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmZvLg0KPiA+ICsgIEBwYXJhbVtvdXRdIE9jciAgICAgICAgICAgIFRoZSBidWZmZXIgdG8gc3Rv cmUgcmV0dXJuZWQgT0NSIHJlZ2lzdGVyIHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsg IEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTZENhcmRTZW5kT3BDb25kICgNCj4gPiAr ICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICpQYXNzVGhydSwNCj4gPiAr ICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gPiArICBJTiAg ICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFZvbHRhZ2VXaW5kb3csDQo+ID4gKyAg SU4gICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBTMThSLA0KPiA+ICsgIElOICAg ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgWHBjLA0KPiA+ICsgIElOICAgICBCT09M RUFOICAgICAgICAgICAgICAgICAgICAgICAgSGNzLA0KPiA+ICsgICAgIE9VVCBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgICAgKk9jcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9T RF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJ X1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiAr ICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaDsNCj4gPiArICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heFBvd2VyOw0KPiA+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG9zdENhcGFjaXR5Ow0KPiA+ICsNCj4gPiAr ICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBa ZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiAr ICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNr ZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3Rh dHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9 IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRJbmRleCA9IFNEX0FQUF9DTUQ7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUg ID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9 IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50 ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5Q YXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRU5EX09QX0NPTkQ7DQo+ID4g KyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUJjcjsNCj4gPiAr ICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIzOw0KPiA+ICsN Cj4gPiArICBTd2l0Y2ggICAgICAgPSBTMThSID8gQklUMjQgOiAwOw0KPiA+ICsgIE1heFBvd2Vy ICAgICA9IFhwYyA/IEJJVDI4IDogMDsNCj4gPiArICBIb3N0Q2FwYWNpdHkgPSBIY3MgPyBCSVQz MCA6IDA7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChWb2x0 YWdlV2luZG93ICYgMHhGRkZGRkYpIHwNCj4gU3dpdGNoIHwgXA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1heFBvd2VyIHwgSG9zdENhcGFjaXR5Ow0KPiA+ICsNCj4gPiAr ICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxM KTsNCj4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgKk9jciA9IFNk TW1jU3RhdHVzQmxrLlJlc3AwOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1 czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQnJvYWRjYXN0IGNvbW1hbmQgQUxM X1NFTkRfQ0lEIHRvIHRoZSBidXMgdG8gYXNrIGFsbCB0aGUgU0QgZGV2aWNlcw0KPiB0byBzZW5k DQo+ID4gKyAgdGhlIGRhdGEgb2YgdGhlaXIgQ0lEIHJlZ2lzdGVycy4NCj4gPiArDQo+ID4gKyAg UmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQu NyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBB IHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZEFsbFNlbmRDaWQgKA0KPiA+ ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1DQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAg ICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAg ICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRf UEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVv ZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVv ZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBh Y2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRC bGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX0FMTF9TRU5EX0NJRDsN Cj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNyOw0K PiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjI7DQo+ ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQ YWNrZXQsIE5VTEwpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgU0VUX1JFTEFUSVZFX0FERFIgdG8gdGhl IFNEIGRldmljZSB0byBhc3NpZ24gYQ0KPiBSZWxhdGl2ZSBkZXZpY2UNCj4gPiArICBBZGRyZXNz IChSQ0EpLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlm aWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNT X1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiA+ICsgIEBwYXJhbVtvdXRdIFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBh ZGRyZXNzIHRvIGFzc2lnbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJz ICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK1NkQ2FyZFNldFJjYSAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ID4gKyAgICAgT1VUIFVJTlQxNiAgICAg ICAgICAgICAgICAgICAgICAgICAqUmNhDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NE X01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklf U0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsg IEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiAr ICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBa ZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiAr ICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNr ZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3Rh dHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9 IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRJbmRleCA9IFNEX1NFVF9SRUxBVElWRV9BRERSOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVz cG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0g UGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKyAg aWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICpSY2EgPSAoVUlOVDE2KShTZE1t Y1N0YXR1c0Jsay5SZXNwMCA+PiAxNik7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4g U3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgU0VO RF9DU0QgdG8gdGhlIFNEIGRldmljZSB0byBnZXQgdGhlIGRhdGEgb2YgdGhlIENTRA0KPiByZWdp c3Rlci4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmll ZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19U SFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4N Cj4gPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRk cmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ID4gKyAgQHBhcmFtW291dF0gQ3NkICAgICAgICAg ICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBjb250ZW50IG9mIHRoZSBDU0QNCj4gcmVnaXN0ZXIu DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoZSBjYWxsZXIgc2hvdWxk IGlnbm9yZSB0aGUgbG93ZXN0IGJ5dGUgb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoaXMgYnVmZmVyIGFzIHRoZSBjb250ZW50IG9mIHRoaXMgYnl0ZSBpcyBtZWFuaW5nLQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVzcyBldmVuIGlmIHRoZSBvcGVyYXRp b24gc3VjY2VlZHMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAg ICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtTZENhcmRHZXRDc2QgKA0KPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOICAgICBVSU5UMTYgICAgICAgICAg ICAgICAgICAgICAgICAgUmNhLA0KPiA+ICsgICAgIE9VVCBTRF9DU0QgICAgICAgICAgICAgICAg ICAgICAgICAgKkNzZA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFO RF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFU VVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1D X1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAo JlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNk TW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAo JlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21k QmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZT ZE1tY1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENf R0VORVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXgg PSBTRF9TRU5EX0NTRDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0Nv bW1hbmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNw b25zZVR5cGVSMjsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMy KVJjYSA8PCAxNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQ YXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIENvcHlNZW0gKCgoVUlOVDgqKUNzZCkgKyAxLCAmU2RNbWNTdGF0dXNC bGsuUmVzcDAsIHNpemVvZg0KPiAoU0RfQ1NEKSAtIDEpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBj b21tYW5kIFNFTkRfQ1NEIHRvIHRoZSBTRCBkZXZpY2UgdG8gZ2V0IHRoZSBkYXRhIG9mIHRoZSBD U0QNCj4gcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVy IFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0Rf TU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgUmNhICAgICAgICAgICBUaGUgcmVsYXRpdmUg ZGV2aWNlIGFkZHJlc3Mgb2Ygc2VsZWN0ZWQgZGV2aWNlLg0KPiA+ICsgIEBwYXJhbVtvdXRdIFNj ciAgICAgICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgY29udGVudCBvZiB0aGUgU0NSDQo+ IHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBv cGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArU2RDYXJkR2V0U2NyICgNCj4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RI UlVfUFJPVE9DT0wgICpQYXNzVGhydSwNCj4gPiArICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAg ICAgICAgICAgICAgIFJjYSwNCj4gPiArICAgICBPVVQgU0RfU0NSICAgICAgICAgICAgICAgICAg ICAgICAgICpTY3INCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRf QkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVT X0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19Q QVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZT ZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1t Y1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQ YWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJs ayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RN bWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dF TkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0g U0RfQVBQX0NNRDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1h bmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25z ZVR5cGVSMTsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJj YSA8PCAxNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNz VGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFNkTW1j Q21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX1NFTkRfU0NSOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBZHRjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJl c3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5J bkRhdGFCdWZmZXIgICAgID0gU2NyOw0KPiA+ICsgIFBhY2tldC5JblRyYW5zZmVyTGVuZ3RoID0g c2l6ZW9mIChTRF9TQ1IpOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1Ro cnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0 YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBjb21tYW5kIFNFTEVD VF9ERVNFTEVDVF9DQVJEIHRvIHRoZSBTRCBkZXZpY2UgdG8NCj4gc2VsZWN0L2Rlc2VsZWN0IGl0 Lg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNw ZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d ICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNz IG9mIHNlbGVjdGVkIGRldmljZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZFNlbGVjdCAoDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSY2ENCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklf U0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVG SV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4g KyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsg IFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBh Y2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNT dGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAg ID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZEluZGV4ID0gU0RfU0VMRUNUX0RFU0VMRUNUX0NBUkQ7DQo+ID4gKyAgU2RNbWNDbWRC bGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiA+ICsgIGlmIChSY2EgIT0g MCkgew0KPiA+ICsgICAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5 cGVSMWI7DQo+ID4gKyAgfQ0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChV SU5UMzIpUmNhIDw8IDE2Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1Ro cnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0 YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBjb21tYW5kIFZPTFRB R0VfU1dJVENIIHRvIHRoZSBTRCBkZXZpY2UgdG8gc3dpdGNoIHRoZSB2b2x0YWdlDQo+IG9mIHRo ZQ0KPiA+ICsgIGRldmljZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5 ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9T RF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUg b3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAg ICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RB VFVTDQo+ID4gK1NkQ2FyZFZvbHRhZ2VTd2l0Y2ggKA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg RUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiAr ICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0K PiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsN Cj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4g PiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsN Cj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiAr ICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNk TW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAg ICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21k QmxrLkNvbW1hbmRJbmRleCA9IFNEX1ZPTFRBR0VfU1dJVENIOw0KPiA+ICsgIFNkTW1jQ21kQmxr LkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiArICBTZE1tY0NtZEJsay5S ZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRBcmd1bWVudCA9IDA7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNz VGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsNCj4gPiArICByZXR1cm4g U3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgU0VU X0JVU19XSURUSCB0byB0aGUgU0QgZGV2aWNlIHRvIHNldCB0aGUgYnVzIHdpZHRoLg0KPiA+ICsN Cj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNl Y3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1 ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJh bVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIG9mIGFkZHJl c3NlZCBkZXZpY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdp ZHRoIHRvIGJlIHNldCwgaXQgY291bGQgYmUgMSBvciA0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4g KyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArU2RDYXJkU2V0QnVzV2lkdGggKA0KPiA+ ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ICsgIElO IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1j Q21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RN bWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQg ICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBT dGF0dXM7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1 ZTsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21k QmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3Rh dHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4g PiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsg IFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQu VGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiAr ICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9BUFBfQ01EOw0KPiA+ICsgIFNkTW1jQ21k QmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiArICBTZE1tY0NtZEJs ay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ICsgIFNkTW1jQ21kQmxr LkNvbW1hbmRBcmd1bWVudCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiA+ICsNCj4gPiArICBTdGF0 dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU0VU X0JVU19XSURUSDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1h bmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25z ZVR5cGVSMTsNCj4gPiArDQo+ID4gKyAgaWYgKEJ1c1dpZHRoID09IDEpIHsNCj4gPiArICAgIFZh bHVlID0gMDsNCj4gPiArICB9IGVsc2UgaWYgKEJ1c1dpZHRoID09IDQpIHsNCj4gPiArICAgIFZh bHVlID0gMjsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1 bWVudCA9IFZhbHVlICYgMHgzOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFz c1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArICByZXR1cm4gU3RhdHVz Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgU1dJVENIX0ZV TkMgdG8gdGhlIFNEIGRldmljZSB0byBjaGVjayBzd2l0Y2hhYmxlDQo+IGZ1bmN0aW9uIG9yDQo+ ID4gKyAgc3dpdGNoIGNhcmQgZnVuY3Rpb24uDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIFBo eXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRldGFpbHMu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRvIHRo ZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgQWNjZXNzTW9kZSAgICBU aGUgdmFsdWUgZm9yIGFjY2VzcyBtb2RlIGdyb3VwLg0KPiA+ICsgIEBwYXJhbVtpbl0gIENvbW1h bmRTeXN0ZW0gVGhlIHZhbHVlIGZvciBjb21tYW5kIHNldCBncm91cC4NCj4gPiArICBAcGFyYW1b aW5dICBEcml2ZVN0cmVuZ3RoIFRoZSB2YWx1ZSBmb3IgZHJpdmUgbGVuZ3RoIGdyb3VwLg0KPiA+ ICsgIEBwYXJhbVtpbl0gIFBvd2VyTGltaXQgICAgVGhlIHZhbHVlIGZvciBwb3dlciBsaW1pdCBn cm91cC4NCj4gPiArICBAcGFyYW1baW5dICBNb2RlICAgICAgICAgIFN3aXRjaCBvciBjaGVjayBm dW5jdGlvbi4NCj4gPiArICBAcGFyYW1bb3V0XSBTd2l0Y2hSZXNwICAgIFRoZSByZXR1cm4gc3dp dGNoIGZ1bmN0aW9uIHN0YXR1cy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZFN3aXRjaCAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3NNb2RlLA0KPiA+ICsgIElOICAgICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZFN5c3RlbSwNCj4gPiArICBJTiAgICAgVUlO VDggICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlU3RyZW5ndGgsDQo+ID4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBQb3dlckxpbWl0LA0KPiA+ICsgIElOICAg ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgTW9kZSwNCj4gPiArICAgICBPVVQgVUlO VDggICAgICAgICAgICAgICAgICAgICAgICAgICpTd2l0Y2hSZXNwDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJs azsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3Rh dHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFj a2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZVZhbHVl Ow0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRC bGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0 dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAg UGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5U aW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsg IFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX1NXSVRDSF9GVU5DOw0KPiA+ICsgIFNkTW1j Q21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBZHRjOw0KPiA+ICsgIFNkTW1j Q21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKw0KPiA+ICsg IE1vZGVWYWx1ZSA9IE1vZGUgPyBCSVQzMSA6IDA7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFu ZEFyZ3VtZW50ID0gKEFjY2Vzc01vZGUgJiAweEYpIHwgICAgICAgICAgICBcDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQb3dlckxpbWl0ICYgMHhGKSA8PCA0KSB8ICAg ICBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChEcml2ZVN0cmVuZ3Ro ICYgMHhGKSA8PCA4KSB8ICBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KChEcml2ZVN0cmVuZ3RoICYgMHhGKSA8PCAxMikgfCBcDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTW9kZVZhbHVlOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuSW5EYXRhQnVm ZmVyICAgICA9IFN3aXRjaFJlc3A7DQo+ID4gKyAgUGFja2V0LkluVHJhbnNmZXJMZW5ndGggPSA2 NDsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwg MCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRU5EX1NUQVRVUyB0byB0aGUg YWRkcmVzc2VkIFNEIGRldmljZSB0byBnZXQgaXRzDQo+IHN0YXR1cw0KPiA+ICsgIHJlZ2lzdGVy Lg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNw ZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d ICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNz IG9mIGFkZHJlc3NlZCBkZXZpY2UuDQo+ID4gKyAgQHBhcmFtW291dF0gRGV2U3RhdHVzICAgICBU aGUgcmV0dXJuZWQgZGV2aWNlIHN0YXR1cy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZFNlbmRTdGF0dXMgKA0KPiA+ICsgIElOICAg ICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOICAg ICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ICsgICAgIE9VVCBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgKkRldlN0YXR1cw0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7 DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1 c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tl dDsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxr KSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVz QmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiAr DQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBh Y2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGlt ZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBT ZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRU5EX1NUQVRVUzsNCj4gPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRC bGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gPiArICBTZE1tY0NtZEJs ay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8PCAxNjsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICpEZXZTdGF0dXMgPSBT ZE1tY1N0YXR1c0Jsay5SZXNwMDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0 dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRU5EX1RV TklOR19CTE9DSyB0byB0aGUgU0QgZGV2aWNlIGZvciBIUzIwMA0KPiBvcHRpbWFsIHNhbXBsaW5n DQo+ID4gKyAgcG9pbnQgZGV0ZWN0aW9uLg0KPiA+ICsNCj4gPiArICBJdCBtYXkgYmUgc2VudCB1 cCB0byA0MCB0aW1lcyB1bnRpbCB0aGUgaG9zdCBmaW5pc2hlcyB0aGUgdHVuaW5nDQo+IHByb2Nl ZHVyZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmll ZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19U SFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4N Cj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlz IGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9w ZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1Nk Q2FyZFNlbmRUdW5pbmdCbGsgKA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RP Q09MICAgICAgKlBhc3NUaHJ1DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19D T01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1D X1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9T RF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHVuaW5nQmxvY2tbNjRdOw0KPiA+ICsNCj4gPiAr ICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBa ZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiAr ICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNr ZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3Rh dHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9 IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRJbmRleCA9IFNEX1NFTkRfVFVOSU5HX0JMT0NLOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBZHRjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJl c3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29t bWFuZEFyZ3VtZW50ID0gMDsNCj4gPiArDQo+ID4gKyAgUGFja2V0LkluRGF0YUJ1ZmZlciAgICAg PSBUdW5pbmdCbG9jazsNCj4gPiArICBQYWNrZXQuSW5UcmFuc2Zlckxlbmd0aCA9IHNpemVvZiAo VHVuaW5nQmxvY2spOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUg KFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1 czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU3dpdGNoIHRoZSBidXMgd2lkdGgg dG8gc3BlY2lmaWVkIHdpZHRoLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBM YXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGFuZA0KPiA+ICsgIFNEIEhvc3Qg Q29udHJvbGxlciBTaW1wbGlmaWVkIFNwZWMgMy4wIHNlY3Rpb24gRmlndXJlIDMtNyBmb3IgZGV0 YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBBIHBvaW50ZXIg dG8gdGhlIEVGSV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBQ YXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BS T1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiAr ICBAcGFyYW1baW5dIFJjYSAgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0 byBiZSBhc3NpZ25lZC4NCj4gPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMg d2lkdGggdG8gYmUgc2V0LCBpdCBjb3VsZCBiZSA0IG9yIDguDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4g PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTZENhcmRTd2l0Y2hCdXNXaWR0aCAo DQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0K PiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0K PiA+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ICsg IElOIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNEZHIsDQo+ID4gKyAgSU4g VUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgRGV2U3RhdHVzOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBTZENhcmRTZXRC dXNXaWR0aCAoUGFzc1RocnUsIFJjYSwgQnVzV2lkdGgpOw0KPiA+ICsgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0K PiA+ICsgICAgICAiU2RDYXJkU3dpdGNoQnVzV2lkdGg6IFN3aXRjaCB0byBidXMgd2lkdGggJWQg ZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgQnVzV2lkdGgsDQo+ID4gKyAgICAgIFN0YXR1 cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBTdGF0dXMgPSBTZENhcmRTZW5kU3RhdHVzIChQYXNzVGhydSwgUmNhLCAmRGV2 U3RhdHVzKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJV RyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiArICAgICAgIlNkQ2FyZFN3aXRjaEJ1 c1dpZHRoOiBTZW5kIHN0YXR1cyBmYWlscyB3aXRoICVyXG4iLA0KPiA+ICsgICAgICBTdGF0dXMN Cj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiAr ICAvLw0KPiA+ICsgIC8vIENoZWNrIHRoZSBzd2l0Y2ggb3BlcmF0aW9uIGlzIHJlYWxseSBzdWNj ZXNzZnVsIG9yIG5vdC4NCj4gPiArICAvLw0KPiA+ICsgIGlmICgoRGV2U3RhdHVzID4+IDE2KSAh PSAwKSB7DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiAr ICAgICAgIlNkQ2FyZFN3aXRjaEJ1c1dpZHRoOiBUaGUgc3dpdGNoIG9wZXJhdGlvbiBmYWlscyBh cyBEZXZTdGF0dXMNCj4gMHglMDh4XG4iLA0KPiA+ICsgICAgICBEZXZTdGF0dXMNCj4gPiArICAg ICAgKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIFN0YXR1cyA9IER3TW1jSGNTZXRCdXNXaWR0aCAoRGV2QmFzZSwgSXNEZHIsIEJ1 c1dpZHRoKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgU3dpdGNoIHRoZSBoaWdoIHNwZWVkIHRpbWluZyBhY2NvcmRpbmcgdG8g cmVxdWVzdC4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxp ZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luXSBQY2lJbyAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9QQ0lfSU9fUFJPVE9D T0wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIg dG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFJjYSAgICAgICAg ICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4NCj4gPiArICBA cGFyYW1baW5dIFMxOEEgICAgICAgICAgIFRoZSBib29sZWFuIHRvIHNob3cgaWYgaXQncyBhIFVI Uy1JIFNEIGNhcmQuDQo+ID4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aHMgICAgICBUaGUgYnVzIHdp ZHRoIG9mIHRoZSBTRCBjYXJkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArU2RDYXJkU2V0QnVzTW9kZSAoDQo+ID4gKyAgSU4gVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOIFVJTlQxNiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ICsgIElOIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgUzE4QSwNCj4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJ1c1dpZHRocw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIERXX01NQ19IQ19TTE9UX0NBUCAg ICAgICAgICAgKkNhcGFiaWxpdHk7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICBDbG9ja0ZyZXE7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3NN b2RlOw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoUmVzcFs2NF07 DQo+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAqUHJpdmF0ZTsNCj4gPiArICBC T09MRUFOICAgICAgICAgICAgICAgICAgICAgIElzRGRyOw0KPiA+ICsNCj4gPiArICBQcml2YXRl ID0gRFdfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChQYXNzVGhydSk7DQo+ID4gKw0KPiA+ICsg IENhcGFiaWxpdHkgPSAmUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXTsNCj4gPiArDQo+ID4gKyAgaWYg KChDYXBhYmlsaXR5LT5CdXNXaWR0aCA9PSAxKSB8fCAoQ2FwYWJpbGl0eS0+QnVzV2lkdGggPT0g NCkpIHsNCj4gPiArICAgIEJ1c1dpZHRocyAmPSBDYXBhYmlsaXR5WzBdLkJ1c1dpZHRoOw0KPiA+ ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwN Cj4gPiArICAgICAgIlNkQ2FyZFNldEJ1c01vZGU6IEJ1c1dpZHRocyAoJWQpIGluIGNhcGFiaWxp dHkgYXJlIHdyb25nXG4iLA0KPiA+ICsgICAgICBDYXBhYmlsaXR5LT5CdXNXaWR0aA0KPiA+ICsg ICAgICApKTsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBpZiAoQnVzV2lkdGhzID09IDApIHsNCj4gPiArICAgIERFQlVHICgo DQo+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiU2RDYXJkU2V0QnVzTW9kZTog R2V0IHdyb25nIEJ1c1dpZHRoczolZFxuIiwNCj4gPiArICAgICAgQnVzV2lkdGhzDQo+ID4gKyAg ICAgICkpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIGlmIChQcml2YXRlLT5DYXBhYmlsaXR5WzBdLkRkcjUwKSB7DQo+ID4g KyAgICBJc0RkciA9IFRSVUU7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIElzRGRyID0gRkFM U0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBTZENhcmRTd2l0Y2hCdXNXaWR0 aCAoRGV2QmFzZSwgUGFzc1RocnUsIFJjYSwgSXNEZHIsDQo+IEJ1c1dpZHRocyk7DQo+ID4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAg REVCVUdfRVJST1IsDQo+ID4gKyAgICAgICJTZENhcmRTZXRCdXNNb2RlOiBFeGVjdXRpbmcgU2RD YXJkU3dpdGNoQnVzV2lkdGggZmFpbHMgd2l0aA0KPiAlclxuIiwNCj4gPiArICAgICAgU3RhdHVz DQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gR2V0IHRoZSBzdXBwb3J0ZWQgYnVzIHNwZWVkIGZyb20g U1dJVENIIGNtZCByZXR1cm4gZGF0YSBncm91cCAjMS4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1 cyA9IFNkQ2FyZFN3aXRjaCAoUGFzc1RocnUsIDB4RiwgMHhGLCAweEYsIDB4RiwgRkFMU0UsIFN3 aXRjaFJlc3ApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJl dHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2FsY3VsYXRlIHN1 cHBvcnRlZCBidXMgc3BlZWQvYnVzIHdpZHRoL2Nsb2NrIGZyZXF1ZW5jeSBieSBob3N0IGFuZA0K PiBkZXZpY2UNCj4gPiArICAvLyBjYXBhYmlsaXR5Lg0KPiA+ICsgIC8vDQo+ID4gKyAgQ2xvY2tG cmVxID0gMDsNCj4gPiArICBpZiAoUzE4QSAmJiAoQ2FwYWJpbGl0eS0+U2RyMTA0ICE9IDApICYm ICgoU3dpdGNoUmVzcFsxM10gJiBCSVQzKSAhPSAwKSkgew0KPiA+ICsgICAgQ2xvY2tGcmVxID0g MjA4Ow0KPiA+ICsgICAgQWNjZXNzTW9kZSA9IDM7DQo+ID4gKyAgfSBlbHNlIGlmIChTMThBICYm IChDYXBhYmlsaXR5LT5TZHI1MCAhPSAwKSAmJg0KPiA+ICsgICAgICAgICAgICAgKChTd2l0Y2hS ZXNwWzEzXSAmIEJJVDIpICE9IDApKSB7DQo+ID4gKyAgICBDbG9ja0ZyZXEgPSAxMDA7DQo+ID4g KyAgICBBY2Nlc3NNb2RlID0gMjsNCj4gPiArICB9IGVsc2UgaWYgKFMxOEEgJiYgKENhcGFiaWxp dHktPkRkcjUwICE9IDApICYmDQo+ID4gKyAgICAgICAgICAgICAoKFN3aXRjaFJlc3BbMTNdICYg QklUNCkgIT0gMCkpIHsNCj4gPiArICAgIENsb2NrRnJlcSA9IDUwOw0KPiA+ICsgICAgQWNjZXNz TW9kZSA9IDQ7DQo+ID4gKyAgfSBlbHNlIGlmICgoU3dpdGNoUmVzcFsxM10gJiBCSVQxKSAhPSAw KSB7DQo+ID4gKyAgICBDbG9ja0ZyZXEgPSA1MDsNCj4gPiArICAgIEFjY2Vzc01vZGUgPSAxOw0K PiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBDbG9ja0ZyZXEgPSAyNTsNCj4gPiArICAgIEFjY2Vz c01vZGUgPSAwOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2RDYXJkU3dpdGNo IChQYXNzVGhydSwgQWNjZXNzTW9kZSwgMHhGLCAweEYsIDB4RiwgVFJVRSwNCj4gU3dpdGNoUmVz cCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0 YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmICgoU3dpdGNoUmVzcFsxNl0gJiAweEYp ICE9IEFjY2Vzc01vZGUpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VS Uk9SLA0KPiA+ICsgICAgICAiU2RDYXJkU2V0QnVzTW9kZTogU3dpdGNoIHRvIEFjY2Vzc01vZGUg JWQgQ2xvY2tGcmVxICVkIGZhaWxzIQ0KPiBUaGUgU3dpdGNoIHJlc3BvbnNlIGlzIDB4JTF4XG4i LA0KPiA+ICsgICAgICBBY2Nlc3NNb2RlLA0KPiA+ICsgICAgICBDbG9ja0ZyZXEsDQo+ID4gKyAg ICAgIFN3aXRjaFJlc3BbMTZdICYgMHhGDQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAgcmV0dXJu IEVGSV9ERVZJQ0VfRVJST1I7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBERUJVRyAoKA0KPiA+ ICsgICAgREVCVUdfSU5GTywNCj4gPiArICAgICJTZENhcmRTZXRCdXNNb2RlOiBTd2l0Y2ggdG8g QWNjZXNzTW9kZSAlZCBDbG9ja0ZyZXEgJWQgXG4iLA0KPiA+ICsgICAgQWNjZXNzTW9kZSwNCj4g PiArICAgIENsb2NrRnJlcQ0KPiA+ICsgICAgKSk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IER3 TW1jSGNDbG9ja1N1cHBseSAoRGV2QmFzZSwgQ2xvY2tGcmVxICogMTAwMCwgKkNhcGFiaWxpdHkp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0 dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZElkZW50aWZpY2F0aW9uICgNCj4gPiArICBJ TiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICpQcml2YXRlDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4g PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gPiArICBFRklf U0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1Ow0KPiA+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgICBPY3I7DQo+ID4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAg ICAgICAgIFJjYTsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgWHBjOw0K PiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBTMThyOw0KPiA+ICsgIFVJTlQ2 NCAgICAgICAgICAgICAgICAgICAgICAgICBNYXhDdXJyZW50Ow0KPiA+ICsgIFNEX1NDUiAgICAg ICAgICAgICAgICAgICAgICAgICBTY3I7DQo+ID4gKyAgU0RfQ1NEICAgICAgICAgICAgICAgICAg ICAgICAgIENzZDsNCj4gPiArDQo+ID4gKyAgRGV2QmFzZSAgICA9IFByaXZhdGUtPkRldkJhc2U7 DQo+ID4gKyAgUGFzc1RocnUgPSAmUHJpdmF0ZS0+UGFzc1RocnU7DQo+ID4gKyAgLy8NCj4gPiAr ICAvLyAxLiBTZW5kIENtZDAgdG8gdGhlIGRldmljZQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVz ID0gU2RDYXJkUmVzZXQgKFBhc3NUaHJ1KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19JTkZPLA0KPiA+ICsgICAg ICAiU2RDYXJkSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBDbWQwIGZhaWxzIHdpdGggJXJcbiIs DQo+ID4gKyAgICAgIFN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAgIHJldHVybiBTdGF0 dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIE1pY3JvU2Vjb25kRGVsYXkgKDEwMDAwKTsNCj4gPiArICAv Lw0KPiA+ICsgIC8vIDIuIFNlbmQgQ21kOCB0byB0aGUgZGV2aWNlDQo+ID4gKyAgLy8NCj4gPiAr ICBTdGF0dXMgPSBTZENhcmRWb2x0YWdlQ2hlY2sgKFBhc3NUaHJ1LCAweDEsIDB4RkYpOw0KPiA+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAg ICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0 aW5nIENtZDggZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAg ICkpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiAr ICAvLyAzLiBTZW5kIEFjbWQ0MSB3aXRoIHZvbHRhZ2Ugd2luZG93IDAgdG8gdGhlIGRldmljZQ0K PiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gU2RDYXJkU2VuZE9wQ29uZCAoUGFzc1RocnUsIDAs IDAsIEZBTFNFLCBGQUxTRSwgRkFMU0UsICZPY3IpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0lORk8sDQo+ID4g KyAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNkQ2FyZFNlbmRPcENvbmQg ZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICkpOw0KPiA+ ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBp ZiAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5Wb2x0YWdlMzMgIT0gMCkgew0KPiA+ICsgICAgLy8N Cj4gPiArICAgIC8vIFN1cHBvcnQgMy4zVg0KPiA+ICsgICAgLy8NCj4gPiArICAgIE1heEN1cnJl bnQgPSAoKFVJTlQzMilQcml2YXRlLT5NYXhDdXJyZW50WzBdICYgMHhGRikgKiA0Ow0KPiA+ICsg ICAgUzE4ciA9IEZBTFNFOw0KPiA+ICsgIH0gZWxzZSBpZiAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVsw XS5Wb2x0YWdlMzAgIT0gMCkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFN1cHBvcnQgMy4w Vg0KPiA+ICsgICAgLy8NCj4gPiArICAgIE1heEN1cnJlbnQgPSAoKChVSU5UMzIpUHJpdmF0ZS0+ TWF4Q3VycmVudFswXSA+PiA4KSAmIDB4RkYpICogNDsNCj4gPiArICAgIFMxOHIgPSBGQUxTRTsN Cj4gPiArICB9IGVsc2UgaWYgKFByaXZhdGUtPkNhcGFiaWxpdHlbMF0uVm9sdGFnZTE4ICE9IDAp IHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBTdXBwb3J0IDEuOFYNCj4gPiArICAgIC8vDQo+ ID4gKyAgICBNYXhDdXJyZW50ID0gKCgoVUlOVDMyKVByaXZhdGUtPk1heEN1cnJlbnRbMF0gPj4g MTYpICYgMHhGRikgKiA0Ow0KPiA+ICsgICAgUzE4ciA9IFRSVUU7DQo+ID4gKyAgfSBlbHNlIHsN Cj4gPiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJS T1I7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoTWF4Q3VycmVudCA+PSAxNTApIHsNCj4g PiArICAgIFhwYyA9IFRSVUU7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIFhwYyA9IEZBTFNF Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyA0LiBSZXBlYXRseSBzZW5k IEFjbWQ0MSB3aXRoIHN1cHBseSB2b2x0YWdlIHdpbmRvdyB0byB0aGUgZGV2aWNlLg0KPiA+ICsg IC8vICAgIE5vdGUgaGVyZSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhcmRzIGNvbXBsaWVkIHdpdGgg U0QgcGh5c2ljYWwNCj4gPiArICAvLyAgICBsYXllciBzaW1wbGlmaWVkIHNwZWMgdmVyc2lvbiAy LjAgYW5kIHZlcnNpb24gMy4wIGFuZCBhYm92ZS4NCj4gPiArICAvLw0KPiA+ICsgIGRvIHsNCj4g PiArICAgIFN0YXR1cyA9IFNkQ2FyZFNlbmRPcENvbmQgKFBhc3NUaHJ1LCAwLCBPY3IsIFMxOHIs IFhwYywgVFJVRSwgJk9jcik7DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gKyAgICAgIERFQlVHICgoDQo+ID4gKyAgICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAgICAg ICAgIlNkQ2FyZElkZW50aWZpY2F0aW9uOiBTZENhcmRTZW5kT3BDb25kIGZhaWxzIHdpdGggJXIg T2NyICV4LCBTMThyDQo+ICV4LCBYcGMgJXhcbiIsDQo+ID4gKyAgICAgICAgU3RhdHVzLA0KPiA+ ICsgICAgICAgIE9jciwNCj4gPiArICAgICAgICBTMThyLA0KPiA+ICsgICAgICAgIFhwYw0KPiA+ ICsgICAgICAgICkpOw0KPiA+ICsgICAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiAr ICAgIH0NCj4gPiArICB9IHdoaWxlICgoT2NyICYgQklUMzEpID09IDApOw0KPiA+ICsNCj4gPiAr ICBTdGF0dXMgPSBTZENhcmRBbGxTZW5kQ2lkIChQYXNzVGhydSk7DQo+ID4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJS T1IsDQo+ID4gKyAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNkQ2FyZEFs bFNlbmRDaWQgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAg ICkpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0 YXR1cyA9IFNkQ2FyZFNldFJjYSAoUGFzc1RocnUsICZSY2EpOw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VSUk9S LA0KPiA+ICsgICAgICAiU2RDYXJkSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBTZENhcmRTZXRS Y2EgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICkpOw0K PiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9 IFNkQ2FyZEdldENzZCAoUGFzc1RocnUsIFJjYSwgJkNzZCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJST1Is DQo+ID4gKyAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNkQ2FyZEdldENz ZCBmYWlscyB3aXRoICVyXG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0g U2RDYXJkU2VsZWN0IChQYXNzVGhydSwgUmNhKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiAr ICAgICAgIlNkQ2FyZElkZW50aWZpY2F0aW9uOiBTZWxlY3RpbmcgY2FyZCBmYWlscyB3aXRoICVy XG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4g U3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2RDYXJkR2V0U2NyIChQ YXNzVGhydSwgUmNhLCAmU2NyKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiArICAgICAgIlNk Q2FyZElkZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgU2RDYXJkR2V0U2NyIGZhaWxzIHdpdGggJXJc biIsDQo+ID4gKyAgICAgIFN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAgIHJldHVybiBT dGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEVudGVyIERhdGEg VHJhbmZlciBNb2RlLg0KPiA+ICsgIC8vDQo+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiU2RD YXJkSWRlbnRpZmljYXRpb246IEZvdW5kIGEgU0QgZGV2aWNlXG4iKSk7DQo+ID4gKyAgUHJpdmF0 ZS0+U2xvdFswXS5DYXJkVHlwZSA9IFNkQ2FyZFR5cGU7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9 IFNkQ2FyZFNldEJ1c01vZGUgKERldkJhc2UsIFBhc3NUaHJ1LCBSY2EsIFMxOHIsDQo+IFNjci5T ZEJ1c1dpZHRocyk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUtPlNsb3RbMF0u SW5pdGlhbGl6ZWQgPSBUUlVFOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9 DQo+ID4gLS0NCj4gPiAyLjEyLjMNCj4gPg0KPiA+DQo+ID4NCj4gPiANCj4gPg0KDQo=