From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.45]) by mx.groups.io with SMTP id smtpd.web11.827.1682035978465957188 for ; Thu, 20 Apr 2023 17:12:58 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=WvYGN3ys; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.243.45, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gAeDCx3QpYdA9Qju0bIZ9vcHVzZNYu1zsXRuSh9Z0MPjEKsxgMotPG8TZJTaljEzz1I8q0x0bbM1AjMOmgEAYZVu5L7kG+A8cqcZp/fvq0LxvkwMCMlm8SyxepK3P7YE9uCmuuhweUwJzFUzlMNT7RK/kDjscS1BdH9GfTeXTzbb8nIl71KNi5+nrnGC601RJhQj4zQN8AriOwpzXWb5ZjfZE1e6wVF/xs3mnvwj2tqfR1hZuUNqf3uLvClWLV7+TyV6sn0ibMbdQqXQ3TSWUnVbhICgzF1OkIvRnHp4LpN7pDNpoqBUN+NQ8PI5wOWWzasshPkyZD66H10zKH9umw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=P98P3GKY51faNJAZI4mXtT5kan24VEk1Yc7fwfETYrY=; b=iPDNo0FluHsDekpmPahNatW/seF6OWDta2SpTVEsKPKTQgnUq8qcKF8bRxdkVuJ8SHg9aBtTc4Q8Pkloyk6r4wKtsihB6lVlnHwqhKT0+FrdcKRLX9DD+3fRQcPG3MAMLwFZ3DhinO3AmvM9TB9QQAg1ObReNXkQHdmkVRKrYpFGW4pJqdsXHzzpJwr+0jvWfiW0Pe7KEw2BgyP+Zsrvf5ySyCDHK12XRmG0Xmp4USTS8icaykaZ9k9Kkds6QD6lHl0wOPrs4sdXuJcSYlAZvpMNMJQwUshTaMUn41ZeKJn32OEhxHee6csdDIYR4+FH4qj360FAVDp0dOhwkCxeAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P98P3GKY51faNJAZI4mXtT5kan24VEk1Yc7fwfETYrY=; b=WvYGN3ys8rbyGBExNg2cvlovYUzgL6gPhEK+M9YN3Ksmtuqxbp/BskkkDww2iM3jcqjuHmIVLQnU+AawW8sM/xfs96KDqWREf1H7eFPMyAWUqxz0/gh417tpWwViBhuCKJuwgTLVJ/jQKbxjc5D3OWePHH03JfxV8Czvanp6VD0= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by CH2PR12MB4152.namprd12.prod.outlook.com (2603:10b6:610:a7::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 00:12:54 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 00:12:54 +0000 From: "Chang, Abner" To: Igor Kulchytskyy , "devel@edk2.groups.io" CC: Nickle Wang Subject: Re: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Topic: [EXTERNAL] RE: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Index: AQHZctAydhY3Kcy4cUiFhJsstK/5NK8zVjUggAE0RiCAAFtdAA== Date: Fri, 21 Apr 2023 00:12:54 +0000 Message-ID: References: <20230419150328.1097-1-igork@ami.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-21T00:12:51Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=cac95486-7a38-4271-80cf-70c6c065edd4; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|CH2PR12MB4152:EE_ x-ms-office365-filtering-correlation-id: 0877b094-d5d1-4005-6190-08db41fd2723 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HZfc5iidOH+CCO+uSre5tIv5IrhX9o2zk4C/05IvqA28xZaxWHF8KOBEo8RCgfnXCUCgKCutHrBmgrF4cFFrXQMYjH3qtUg2T+ukpVRCO1GNWiUSLk5eUhwsP9PANyP4J0V1Ixw1B7INtlyh0MSepJylyR4EQfXJmw1nNaiWKH+umFXl1NAjX/Wkp2YzisFTo6fBrXZyTrLMtJqDfjUQGj3AXh68Thy98KybmF0NOQ7EQIusoE1GhVk34uw8W9W6amUgz0n6au+WUSvHeNET6rbzEk9picDRQTvDlcBmv4AkUrlrydHSCuK7dPnGZCpaFgadqXyD9oJKBGuvWTAhYBQHIhIAfV+80Bf7tz0gxcohhLXN9Q/fvjPdwHf9CAaPKUXmY98N+egHW7PAsWNArC0dwRS+wFkNJE2OFVuV87rd0E3rO3bx7VZZIy98qb963sCp9tQHZVVQ7r99sbp3EqFYVxocN/aQYof2mkxKkxuEbMtWx561tC9mCa28+uTV+M9xxAYEa/A7r+xaQB8qe7VKAXxIHVeW0/c/9QYXp6h99cKhndKo+zmCLqoi7TBNQrMDv4QzLXEUx0UfTEjJTV1gwc2SqtsnVsGHVS29HedSj6BV+dCHpmO/J0IUD1Je x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(366004)(396003)(39860400002)(346002)(136003)(451199021)(30864003)(2906002)(38070700005)(38100700002)(8936002)(8676002)(52536014)(5660300002)(55016003)(86362001)(33656002)(40140700001)(7696005)(71200400001)(966005)(26005)(6506007)(110136005)(478600001)(9686003)(83380400001)(53546011)(186003)(66476007)(66946007)(316002)(66556008)(41300700001)(66446008)(122000001)(4326008)(76116006)(64756008)(579004)(559001)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UEluYTh1U2k1b3JNeG1zYmhETkZ5d3hTN0k5RVphWTNOTGFCYkNkdjI5MENm?= =?utf-8?B?Z0FkS00wYkJvUnpUMmV6NDdIOVk4S1ZJaXZVbG15U09hcW9ZYUhJRE5jeTZa?= =?utf-8?B?ZWoxc0UwOHgzMXFMYkR0Tk13dFFpWjNHenc0SXRBOFRYRHp2a1VxdjBiS0U5?= =?utf-8?B?VmE2dEUzWEwwZFhSNlVtQmhHczhuVUhLcnMrTWVwVlJ0WEZReno3QUdxVjNE?= =?utf-8?B?QnBZMXBFNEFHa2tCRXJTclAzS1Ercm8ydlFDTTRZeWIweGQ0SkZBaTFyQVZ6?= =?utf-8?B?TU5nOVZzeDl6d2VhUEIrQ0JLS2h4TFRNL2diaEpxTVJLQmV3VUxhUzFUdmFr?= =?utf-8?B?Sm40SG14K1lLZnNkc0p5KzVhbm9UZmFRSHpaTXNKNnRwYzUxVUhWSWJxSUdi?= =?utf-8?B?bkJLRXJkV3VVSEhJbm1jUmV6Nit1L09uMEQzb2RCam9NR2F2RlFjWWI2dWxn?= =?utf-8?B?emtqWGg0TGZkMzBGZzI1REhCOXdNZGtEQzdLclZGTzZDREtCcHdRNzN2a1JE?= =?utf-8?B?cFVMRm5ZOEtLOFpua2Q3ZTVqcDJBZUduRE1Zb3VyOVFrS1UxTkFmaTdtUTZ5?= =?utf-8?B?TkZmU21qbG9BWXlnSGMxajYxN3dXVTNVMDlKRm9zem8rVHhSV3ZXZ3lyVWlX?= =?utf-8?B?Z0hZZlFpaHFZNklWZkR2UjkydU1EOWx4YXJzcmZtVFB1VUV6d0FOT2NuRXFD?= =?utf-8?B?SXFZUkI2Qm11eVh4dUdSMERIV2tydUNNSHNHdENaME0raTB2TSswMGFuWVhD?= =?utf-8?B?SzN0QTFQOVRXVytjSDRXMk9nRUdBNXZEekFOVTE1LzVoalZEMHFmY1BaU2pl?= =?utf-8?B?VXNsb2dUdDdVRVZLZW5IWHNhY3Jxd2h0K3REVDlqT0dVMXJMTk52SE15ZmRr?= =?utf-8?B?Mk80VXFiYmoraW1UK3lLRU5Ia1VGbjhDN1h0WmkwaUlLUUI2SGJ5SnRFbUdi?= =?utf-8?B?SDJSR3UxSlhaaEExR2Y2YzRBWGh3bUQ0Mjhyd09ubzJQTjZjdTVKTTFLdS9x?= =?utf-8?B?bElPallISXZrYnF6YUk1YkdFZFRlTkpIaUdFamp3WjZXTmRQNTFWL0pNWnhC?= =?utf-8?B?NU42R3M1aFYxd1A0aW5TamVQYk1EeEtuaHdPcHdDT0pYanVlLzhKSk5NdUJC?= =?utf-8?B?MCtqNU5XL3RaUTEyZjJOZlJjcnMwdWJrY21Pb0Y2NnFmaExiMHBzT0daUTEx?= =?utf-8?B?YW9WQXA3UEt6MWppQ3g3aXQ5MUdNZDJpZHFDOGxkbkVOQ3o2bnBjNTdvb3lE?= =?utf-8?B?UGNaQXNHOXgwNHZxL0gyZXdRUitUOTNnOXFBUmJyNFFHWStlSTgvUGU0empv?= =?utf-8?B?bXp1dTdKaFFmVHFBektxUUdsVHhWdUx5N2hzQlJyUlpXVldxVWtqU2pVcXBT?= =?utf-8?B?NEc2TC9INmZsS3dyR3hUNllYaEh3amdDVWlkbWxVNnppZG5EbkZNU081cjVW?= =?utf-8?B?YnFXYjNKcVVMRC9KZDJuSmZOb1pWNW9LbzZNMWxXQXZ6V3pqYnpHeW5GNnp1?= =?utf-8?B?dlo5eGgyKzNmQms5TFdVNjhYcEh1dTRFT2crU0ZuTnpraWhlMjVLbHlSQzlv?= =?utf-8?B?dWNuUnlyTGdPanBsaUc4RUk4VEM3N3lWNjlPbVZPRElvVGVuR3NMTFpqQXlF?= =?utf-8?B?dGFRQlppaWlCT2JhTUFnRFNzWUlWU3E4Yi9IcWlkRkdwU25lcmd2SFVZZlFv?= =?utf-8?B?c3BXVE55ckdsaVRZSVM1WUhJc0dKeE1mZzF2cWQ3aVRSeHNoT3J3RUd4dlc4?= =?utf-8?B?cUpyNVByS3VzY3dDWTEwaFJyemVnTU5GZk9SbXBxVWtORDdsdUhpUDVaeFdy?= =?utf-8?B?T2JOQ0dudzgxeEs3Yld5M2FWNVFIbFZGa083YUF0YWthZTRLejdoRjJMOEl0?= =?utf-8?B?bjVNb0hjNUorWXNSdkVBdWxyNnJiblNwdDV4a1Rmb0gwemw2QlNlaXVSRSs4?= =?utf-8?B?dG5JS2Mwa0VHR3JOeGJIcjEwZ3k4U3ZMKzdPcVpGVml0SWFRbFhGaERMV1hp?= =?utf-8?B?OW1Lb045Y0duamU4amdDODNPZ3RvRXZscVpFMnVmYlZvK05RTVp2dmQ3c0Nm?= =?utf-8?B?U05yK0RqWFpQK2JWNDhUZ3Rmc3NKdUJ1eWpkc29GelFhK20vbEF0bUphbHFC?= =?utf-8?Q?S3Kmtkk0zEpJWJDIQByLrkYfL?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0877b094-d5d1-4005-6190-08db41fd2723 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2023 00:12:54.1907 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XbF77BB3iSqvScoxieYkFdFgvexeYrM5FuoAk8v11y5gi+H/2F2NN6HKjPr5uVkZxnfAp4rFHkYVuxoch0V+Og== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4152 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNClRoYW5rcyBJZ29yLA0KWW91IHBy b2JhYmx5IGNhbiBhc2sgY29tbXVuaXR5IGlmIGFueSBvbmUgaGFzIHRoZSBzaW1pbGFyIGlzc3Vl IG9uIHBhdGNoIGVtYWlsIGZvcm1hdC4NCg0KSSBhbHJlYWR5IGdhdmUgUi1CIHRvIHRoaXMgY2hh bmdlLCBwbGVhc2UgY3JlYXRlIGEgUFIgYWdhaW5zdCB0byBlZGsyIGFuZCBsZXQgbWUga25vdyB0 aGUgUFIjLiBJIHdpbGwgcHVzaCBpdCBvbmNlIGl0IHBhc3NlcyBDSS4NClRoYW5rcw0KQWJuZXIN Cg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJZ29yIEt1bGNoeXRza3l5 IDxpZ29ya0BhbWkuY29tPg0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDIxLCAyMDIzIDI6NDYgQU0N Cj4gVG86IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hhbmdAYW1kLmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IENjOiBOaWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPg0KPiBTdWJqZWN0 OiBSRTogW0VYVEVSTkFMXSBSRTogW1BBVENIXSBSZWRmaXNoUGtnOiBSZW1vdmUgdGhlIGdsb2Jh bA0KPiB2YXJpYWJsZXMgcmVsYXRlZCB0byBEaXNjb3ZlciBUb2tlbiBmdW5jdGlvbmFsaXR5DQo+ IA0KPiBDYXV0aW9uOiBUaGlzIG1lc3NhZ2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNv dXJjZS4gVXNlIHByb3Blcg0KPiBjYXV0aW9uIHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xp Y2tpbmcgbGlua3MsIG9yIHJlc3BvbmRpbmcuDQo+IA0KPiANCj4gSGkgQWJuZXIsDQo+IEkgZGlk IHdoYXQgeW91IGFza2VkIHRvIGRvIC0gUGF0Y2hjaGVjay5weSBhbmQgVW5jcnVzdGl5Q2hlY2sg KGdvdCBiaW5hcnkpLg0KPiBHb2luZyB0byBzZW5kIFBBVENIIFYyLg0KPiBCdXQgSSdtIG5vdCBz dXJlIHdoYXQgaGFwcGVuZWQgd2l0aCB3aGl0ZSBzcGFjZS4gR29pbmcgdG8gY2hlY2sgd2l0aCBN SVMuDQo+IFRoYW5rIHlvdSwNCj4gSWdvcg0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogQ2hhbmcsIEFibmVyIDxBYm5lci5DaGFuZ0BhbWQuY29tPg0KPiBTZW50OiBX ZWRuZXNkYXksIEFwcmlsIDE5LCAyMDIzIDk6MDAgUE0NCj4gVG86IElnb3IgS3VsY2h5dHNreXkg PGlnb3JrQGFtaS5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogTmlja2xlIFdhbmcg PG5pY2tsZXdAbnZpZGlhLmNvbT4NCj4gU3ViamVjdDogW0VYVEVSTkFMXSBSRTogW1BBVENIXSBS ZWRmaXNoUGtnOiBSZW1vdmUgdGhlIGdsb2JhbCB2YXJpYWJsZXMNCj4gcmVsYXRlZCB0byBEaXNj b3ZlciBUb2tlbiBmdW5jdGlvbmFsaXR5DQo+IA0KPiANCj4gKipDQVVUSU9OOiBUaGUgZS1tYWls IGJlbG93IGlzIGZyb20gYW4gZXh0ZXJuYWwgc291cmNlLiBQbGVhc2UgZXhlcmNpc2UNCj4gY2F1 dGlvbiBiZWZvcmUgb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9yIGZvbGxv d2luZyBndWlkYW5jZS4qKg0KPiANCj4gW0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxd DQo+IA0KPiBIaSBJZ29yLA0KPiBJIGhhdmUgbm8gcHJvYmxlbSB3aXRoIHRoaXMgY2hhbmdlLCBo b3dldmVyIHNvbWUgdXBzdHJlYW0gcHJhY3RpY2VzIGhlcmUsDQo+IA0KPiAtIFBsZWFzZSBzaG9y dGVuIHRoZSBzdWJqZWN0IHRvIDw9IDc2DQo+IC0gRWFjaCBsaW5lIGluIHRoZSBjb21taXQgbWVz c2FnZSBzaG91bGQgYmUgPD03NiBZb3UgY2FuIHJ1biBQYXRjaGNoZWNrLnB5DQo+IChoZXJlOiBC YXNlVG9vbHNcU2NyaXB0cykgYmVmb3JlIHlvdSBzZW5kaW5nIG91dCB0aGUgcGF0Y2hlcy4NCj4g DQo+IFBsZWFzZSBydW4gVW5jcnVzdGl5Q2hlY2sgZm9yIGVhY2ggc291cmNlIGNvZGUgeW91IG1v ZGlmaWVkLCAuDQo+IHB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrLyBhbmQgdXNlZCBmb3Ig YmVhdXRpZnlpbmcgdGhlIHNvdXJjZSBjb2RlLg0KPiBZb3UgY2FuIGdldCB0aGUgYmluYXJ5IGZy b20gaGVyZToNCj4gaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdW5jcnVzdGlmeS9m aWxlcy4NCj4gDQo+IFBsZWFzZSByZXNlbmQgdGhlIHBhdGNoIHdpdGggYWJvdmUgaXNzdWUgZml4 ZWQuDQo+IA0KPiBCVFcsIHRoZSBwYXRjaCB5b3Ugc2VudCB0byBncm91cC5pbyBzdGlsbCBoYXMg YSBwcm9ibGVtLiBUaGUgd2hpdGUgc3BhY2Ugb2YNCj4gZWFjaCBibGFuayBsaW5lIGluIHRoZSBw YXRjaCBmaWxlIHdlcmUgZ29uZSAoeW91IGNhbiB0YWtlIGEgbG9vayBhdCB5b3VyDQo+IG1lc3Nh Z2Ugc2VudCB0byBncm91cC5pbykuIFRoaXMgbGVhZHMgdG8gYSBmYWlsdXJlIG9mIHBhdGNoIGFw cGx5LiBJIHJlY292ZXINCj4gdGhvc2Ugd2hpdGUgc3BhY2UgaW4gdGhlIGJsYW5rIGxpbmVzIGFu ZCB0aGUgcGF0Y2ggY2FuIGJlIGFwcGxpZWQuIEhvd2V2ZXIsIEkNCj4gY2FuIGRvIHRoaXMganVz dCBmb3IgYSBzaG9ydCBwYXRjaC4g8J+YiiBQbGVhc2UgZmlndXJlIGl0IG91dCBhdCB5b3VyIGVu ZC4gIFRoYXQncw0KPiBmaW5lIGlmIHRoaXMgcHJvYmxlbSBzdGlsbCBleGlzdCBvbiB5b3VyIHJl c2VudCBwYXRjaCBpbiBjYXNlIHlvdSBuZWVkIHNvbWUNCj4gdGltZSB0byBmaWd1cmUgb3V0IHRo ZSBlbWFpbCBwcm9ibGVtLg0KPiANCj4gVGhhbmtzDQo+IEFibmVyDQo+IA0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogSWdvciBLdWxjaHl0c2t5eSA8aWdvcmtAYW1p LmNvbT4NCj4gPiBTZW50OiBXZWRuZXNkYXksIEFwcmlsIDE5LCAyMDIzIDExOjA0IFBNDQo+ID4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hh bmdAYW1kLmNvbT47IE5pY2tsZSBXYW5nDQo+ID4gPG5pY2tsZXdAbnZpZGlhLmNvbT4NCj4gPiBT dWJqZWN0OiBbUEFUQ0hdIFJlZGZpc2hQa2c6IFJlbW92ZSB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBy ZWxhdGVkIHRvDQo+ID4gRGlzY292ZXIgVG9rZW4gZnVuY3Rpb25hbGl0eQ0KPiA+DQo+ID4gQ2F1 dGlvbjogVGhpcyBtZXNzYWdlIG9yaWdpbmF0ZWQgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2UuIFVz ZSBwcm9wZXINCj4gPiBjYXV0aW9uIHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcg bGlua3MsIG9yIHJlc3BvbmRpbmcuDQo+ID4NCj4gPg0KPiA+IGdSZWRmaXNoRGlzY292ZXJlZFRv a2VuIG1heSBiZSBhbGxvY2F0ZWQgc2V2ZXJhbCB0aW1lcywgaWYgbXVsdGlwbGUNCj4gPiBOSUMg aW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uDQo+ID4gVG8gYXZvaWQgdGhpcyBpc3N1ZSBEaXNjb3Zl ciBUb2tlbiByZWxhdGVkIGdsb2JhbCB2YXJpYWJsZXMgcmVwbGFjZWQNCj4gPiB3aXRoIHRoZSBs b2NhbCB2YXJpYWJsZXMuDQo+ID4NCj4gPiBDYzogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGFt ZC5jb20+DQo+ID4gQ2M6IE5pY2tsZSBXYW5nIDxuaWNrbGV3QG52aWRpYS5jb20+DQo+ID4gU2ln bmVkLW9mZi1ieTogSWdvciBLdWxjaHl0c2t5eSA8aWdvcmtAYW1pLmNvbT4NCj4gPiAtLS0NCj4g PiAgUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRy aXZlci5jIHwgMTM5DQo+ID4gKysrKysrKystLS0tLS0tLS0tLS0NCj4gPiAgUmVkZmlzaFBrZy9S ZWRmaXNoRGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVyRHhlLmMgICAgICAgICAgIHwgIDg3DQo+ ICsrKysrKysrLQ0KPiA+IC0tLQ0KPiA+ICBSZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9S ZWRmaXNoRGlzY292ZXJJbnRlcm5hbC5oICAgICAgfCAgMjggKysrLQ0KPiA+ICAzIGZpbGVzIGNo YW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZm IC0tZ2l0DQo+ID4gYS9SZWRmaXNoUGtnL1JlZGZpc2hDb25maWdIYW5kbGVyL1JlZGZpc2hDb25m aWdIYW5kbGVyRHJpdmVyLmMNCj4gPiBiL1JlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIv UmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuYw0KPiA+IGluZGV4IDk5M2FkMzMuLjhmODU0OTEg MTAwNjQ0DQo+ID4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmlnSGFuZGxlci9SZWRmaXNo Q29uZmlnSGFuZGxlckRyaXZlci5jDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmln SGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5jDQo+ID4gQEAgLTIyLDEyICsyMiw2 IEBAIEVGSV9IQU5ETEUNCj4gPiBnRWZpUmVkZmlzaERpc2NvdmVyQ29udHJvbGxlckhhbmRsZSA9 IE5VTEw7DQo+ID4gIEVGSV9SRURGSVNIX0RJU0NPVkVSX1BST1RPQ09MICAqZ0VmaVJlZGZpc2hE aXNjb3ZlclByb3RvY29sICAgICAgICA9DQo+ID4gTlVMTDsNCj4gPiAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgICAgIGdSZWRmaXNoRGlzY292ZXJBY3RpdmF0ZWQgICAgICAgICAgID0gRkFM U0U7DQo+ID4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBnUmVkZmlzaFNlcnZpY2VE aXNjb3ZlcmVkICAgICAgICAgICA9IEZBTFNFOw0KPiA+IC0vLw0KPiA+IC0vLyBOZXR3b3JrIGlu dGVyZmFjZXMgZGlzY292ZXJlZCBieSBFRkkgUmVkZmlzaCBEaXNjb3ZlciBQcm90b2NvbC4NCj4g PiAtLy8NCj4gPiAtVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdOdW1i ZXJPZk5ldHdvcmtJbnRlcmZhY2VzOw0KPiA+IC1FRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JL X0lOVEVSRkFDRQ0KPiA+ICpnTmV0d29ya0ludGVyZmFjZUluc3RhbmNlcyA9IE5VTEw7DQo+ID4g LUVGSV9SRURGSVNIX0RJU0NPVkVSRURfVE9LRU4gICAgICAgICAgICAqZ1JlZGZpc2hEaXNjb3Zl cmVkVG9rZW4gICAgPQ0KPiA+IE5VTEw7DQo+ID4NCj4gPiAgLy8vDQo+ID4gIC8vLyBEcml2ZXIg QmluZGluZyBQcm90b2NvbCBpbnN0YW5jZQ0KPiA+IEBAIC01OCwxMyArNTIsNiBAQCBSZWRmaXNo Q29uZmlnU3RvcFJlZGZpc2hEaXNjb3ZlcnkgKA0KPiA+ICAgICAgICBnQlMtPkNsb3NlRXZlbnQg KGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbEV2ZW50KTsNCj4gPiAgICAgIH0NCj4gPg0KPiA+ IC0gICAgLy8NCj4gPiAtICAgIC8vIFN0b3AgUmVkZmlzaCBzZXJ2aWNlIGRpc2NvdmVyeS4NCj4g PiAtICAgIC8vDQo+ID4gLSAgICBnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wtPkFib3J0QWNx dWlyZVJlZGZpc2hTZXJ2aWNlICgNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ05ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICAgICAgZ0VmaVJlZGZpc2hEaXNj b3ZlckNvbnRyb2xsZXJIYW5kbGUgPSBOVUxMOw0KPiA+ICAgICAgZ0VmaVJlZGZpc2hEaXNjb3Zl clByb3RvY29sICAgICAgICAgPSBOVUxMOw0KPiA+ICAgICAgZ1JlZGZpc2hEaXNjb3ZlckFjdGl2 YXRlZCAgICAgICAgICAgPSBGQUxTRTsNCj4gPiBAQCAtMzE4LDM2ICszMDUsMzkgQEAgUmVkZmlz aFNlcnZpY2VEaXNjb3ZlcmVkQ2FsbGJhY2sgKA0KPiA+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVS RURfVE9LRU4gICAgICpSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiA+ICAgIEVGSV9SRURGSVNI X0RJU0NPVkVSRURfSU5TVEFOQ0UgICpSZWRmaXNoSW5zdGFuY2U7DQo+ID4NCj4gPiAtICBpZiAo Z1JlZGZpc2hTZXJ2aWNlRGlzY292ZXJlZCkgew0KPiA+IC0gICAgLy8NCj4gPiAtICAgIC8vIE9u bHkgc3VwcG9ydCBvbmUgUmVkZmlzaCBzZXJ2aWNlIG9uIHBsYXRmb3JtLg0KPiA+IC0gICAgLy8N Cj4gPiAtICAgIHJldHVybjsNCj4gPiAtICB9DQo+ID4gLQ0KPiA+ICAgIFJlZGZpc2hEaXNjb3Zl cmVkVG9rZW4gPSAoRUZJX1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTiAqKUNvbnRleHQ7DQo+ID4g LSAgUmVkZmlzaEluc3RhbmNlICAgICAgICA9IFJlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tDQo+ID4g PkRpc2NvdmVyTGlzdC5SZWRmaXNoSW5zdGFuY2VzOw0KPiA+ICsgIGdCUy0+Q2xvc2VFdmVudCAo UmVkZmlzaERpc2NvdmVyZWRUb2tlbi0+RXZlbnQpOw0KPiA+ICsNCj4gPiAgICAvLw0KPiA+IC0g IC8vIE9ubHkgcGljayB1cCB0aGUgZmlyc3QgZm91bmQgUmVkZmlzaCBzZXJ2aWNlLg0KPiA+ICsg IC8vIE9ubHkgc3VwcG9ydCBvbmUgUmVkZmlzaCBzZXJ2aWNlIG9uIHBsYXRmb3JtLg0KPiA+ICAg IC8vDQo+ID4gLSAgaWYgKFJlZGZpc2hJbnN0YW5jZS0+U3RhdHVzID09IEVGSV9TVUNDRVNTKSB7 DQo+ID4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hT ZXJ2aWNlUmVzdEV4SGFuZGxlID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlJl ZGZpc2hSZXN0RXhIYW5kbGU7DQo+ID4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNl cnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlVmVyc2lvbiAgICAgID0NCj4gPiBSZWRmaXNoSW5zdGFu Y2UtPkluZm9ybWF0aW9uLlJlZGZpc2hWZXJzaW9uOw0KPiA+IC0gICAgZ1JlZGZpc2hDb25maWdE YXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZUxvY2F0aW9uICAgICA9DQo+ID4g UmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Mb2NhdGlvbjsNCj4gPiAtICAgIGdSZWRmaXNo Q29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VVdWlkICAgICAgICAg PQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uVXVpZDsNCj4gPiAtICAgIGdSZWRm aXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VPcyAgICAgICAg ICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3M7DQo+ID4gLSAgICBnUmVk ZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlT3NWZXJzaW9u ICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLk9zVmVyc2lvbjsNCj4gPiAt ICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VQ cm9kdWN0ICAgICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJvZHVjdDsN Cj4gPiAtICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNl cnZpY2VQcm9kdWN0VmVyICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJv ZHVjdFZlcjsNCj4gPiAtICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8u UmVkZmlzaFNlcnZpY2VVc2VIdHRwcyAgICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3Jt YXRpb24uVXNlSHR0cHM7DQo+ID4gLSAgICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVFJVRTsNCj4gPiArICBpZiAoIWdS ZWRmaXNoU2VydmljZURpc2NvdmVyZWQpIHsNCj4gPiArICAgIFJlZGZpc2hJbnN0YW5jZSAgICAg ICAgPSBSZWRmaXNoRGlzY292ZXJlZFRva2VuLQ0KPiA+ID5EaXNjb3Zlckxpc3QuUmVkZmlzaElu c3RhbmNlczsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBPbmx5IHBpY2sgdXAgdGhlIGZpcnN0 IGZvdW5kIFJlZGZpc2ggc2VydmljZS4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoUmVkZmlz aEluc3RhbmNlLT5TdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiArDQo+ID4gKyBnUmVkZmlz aENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlUmVzdEV4SGFuZGxl ID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlJlZGZpc2hSZXN0RXhIYW5kbGU7 DQo+ID4gKyAgICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlz aFNlcnZpY2VWZXJzaW9uICAgICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24u UmVkZmlzaFZlcnNpb247DQo+ID4gKyAgICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2Vy dmljZUluZm8uUmVkZmlzaFNlcnZpY2VMb2NhdGlvbiAgICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5j ZS0+SW5mb3JtYXRpb24uTG9jYXRpb247DQo+ID4gKyAgICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5S ZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VVdWlkICAgICAgICAgPQ0KPiA+IFJlZGZp c2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uVXVpZDsNCj4gPiArICAgICAgZ1JlZGZpc2hDb25maWdE YXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZU9zICAgICAgICAgICA9DQo+ID4g UmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5PczsNCj4gPiArICAgICAgZ1JlZGZpc2hDb25m aWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZU9zVmVyc2lvbiAgICA9DQo+ ID4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Pc1ZlcnNpb247DQo+ID4gKyAgICAgIGdS ZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VQcm9kdWN0 ICAgICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJvZHVjdDsNCj4gPiAr ICAgICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2Vydmlj ZVByb2R1Y3RWZXIgICA9DQo+ID4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Qcm9kdWN0 VmVyOw0KPiA+ICsgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJl ZGZpc2hTZXJ2aWNlVXNlSHR0cHMgICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0 aW9uLlVzZUh0dHBzOw0KPiA+ICsgICAgICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVFJVRTsNCj4gPiArICAgIH0NCj4g PiArDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gSW52b2tlIFJlZGZpc2hDb25maWdIYW5kbGVy SW5zdGFsbGVkQ2FsbGJhY2sgdG8gZXhlY3V0ZQ0KPiA+ICsgICAgLy8gdGhlIGluaXRpYWxpemF0 aW9uIG9mIFJlZGZpc2ggQ29uZmlndXJlIEhhbmRsZXIgaW5zdGFuY2UuDQo+ID4gKyAgICAvLw0K PiA+ICsgICAgUmVkZmlzaENvbmZpZ0hhbmRsZXJJbnN0YWxsZWRDYWxsYmFjayAoZ1JlZGZpc2hD b25maWdEYXRhLkV2ZW50LA0KPiA+ICsgJmdSZWRmaXNoQ29uZmlnRGF0YSk7DQo+ID4gICAgfQ0K PiA+DQo+ID4gLSAgLy8NCj4gPiAtICAvLyBJbnZva2UgUmVkZmlzaENvbmZpZ0hhbmRsZXJJbnN0 YWxsZWRDYWxsYmFjayB0byBleGVjdXRlDQo+ID4gLSAgLy8gdGhlIGluaXRpYWxpemF0aW9uIG9m IFJlZGZpc2ggQ29uZmlndXJlIEhhbmRsZXIgaW5zdGFuY2UuDQo+ID4gLSAgLy8NCj4gPiAtICBS ZWRmaXNoQ29uZmlnSGFuZGxlckluc3RhbGxlZENhbGxiYWNrIChnUmVkZmlzaENvbmZpZ0RhdGEu RXZlbnQsDQo+ID4gJmdSZWRmaXNoQ29uZmlnRGF0YSk7DQo+ID4gKyAgRnJlZVBvb2woUmVkZmlz aERpc2NvdmVyZWRUb2tlbik7DQo+ID4gKw0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAg LTM3MSw2ICszNjEsNyBAQCBSZWRmaXNoRGlzY292ZXJQcm90b2NvbEluc3RhbGxlZCAoDQo+ID4g ICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtJbnRlcmZh Y2VJbmRleDsNCj4gPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRSAg KlRoaXNOZXR3b3JrSW50ZXJmYWNlOw0KPiA+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSRURfVE9L RU4gICAgICAgICAgICAqVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW47DQo+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlck9mTmV0d29ya0ludGVyZmFj ZXM7DQo+ID4NCj4gPiAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogTmV3IG5ldHdvcmsgaW50 ZXJmYWNlIGlzIGluc3RhbGxlZCBvbg0KPiA+IHN5c3RlbSBieSBFRkkgUmVkZmlzaCBkaXNjb3Zl ciBkcml2ZXIuXG4iLCBfX2Z1bmNfXykpOw0KPiA+DQo+ID4gQEAgLTQwOCwzNiArMzk5LDMxIEBA IFJlZGZpc2hEaXNjb3ZlclByb3RvY29sSW5zdGFsbGVkICgNCj4gPiAgICAgIH0NCj4gPiAgICB9 DQo+ID4NCj4gPiAtICAvLw0KPiA+IC0gIC8vIENoZWNrIHRoZSBuZXcgZm91bmQgbmV0d29yayBp bnRlcmZhY2UuDQo+ID4gLSAgLy8NCj4gPiAtICBpZiAoZ05ldHdvcmtJbnRlcmZhY2VJbnN0YW5j ZXMgIT0gTlVMTCkgew0KPiA+IC0gICAgRnJlZVBvb2wgKGdOZXR3b3JrSW50ZXJmYWNlSW5zdGFu Y2VzKTsNCj4gPiAtICB9DQo+ID4NCj4gPiAgICBTdGF0dXMgPSBnRWZpUmVkZmlzaERpc2NvdmVy UHJvdG9jb2wtPkdldE5ldHdvcmtJbnRlcmZhY2VMaXN0ICgNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUmVkZmlzaENv bmZpZ0RhdGEuSW1hZ2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlcywNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdOZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZOdW1iZXJPZk5l dHdvcmtJbnRlcmZhY2VzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmVGhpc05ldHdvcmtJbnRlcmZhY2UNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8 IChnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlcyA9PSAwKSkgew0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykgfHwgKE51bWJlck9mTmV0d29ya0ludGVyZmFjZXMgPT0gMCkpIHsNCj4gPiAg ICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogTm8gbmV0d29yayBpbnRlcmZhY2VzIGZvdW5k IG9uIHRoZQ0KPiA+IGhhbmRsZS5cbiIsIF9fZnVuY19fKSk7DQo+ID4gICAgICByZXR1cm47DQo+ ID4gICAgfQ0KPiA+DQo+ID4gLSAgZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gPSBBbGxvY2F0ZVpl cm9Qb29sDQo+ID4gKGdOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzICogc2l6ZW9mDQo+IChFRklf UkVERklTSF9ESVNDT1ZFUkVEX1RPS0VOKSk7DQo+ID4gLSAgaWYgKGdSZWRmaXNoRGlzY292ZXJl ZFRva2VuID09IE5VTEwpIHsNCj4gPiArICAvLw0KPiA+ICsgIC8vIExvb3AgdG8gZGlzY292ZXIg UmVkZmlzaCBzZXJ2aWNlIG9uIGVhY2ggbmV0d29yayBpbnRlcmZhY2UuDQo+ID4gKyAgLy8NCj4g PiArICBmb3IgKE5ldHdvcmtJbnRlcmZhY2VJbmRleCA9IDA7IE5ldHdvcmtJbnRlcmZhY2VJbmRl eCA8DQo+ID4gKyBOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzOyBOZXR3b3JrSW50ZXJmYWNlSW5k ZXgrKykgew0KPiA+ICsNCj4gPiArICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuID0gKEVG SV9SRURGSVNIX0RJU0NPVkVSRURfVE9LRU4NCj4gPiAqKUFsbG9jYXRlWmVyb1Bvb2woc2l6ZW9m IChFRklfUkVERklTSF9ESVNDT1ZFUkVEX1RPS0VOKSk7DQo+ID4gKyAgICBpZiAoVGhpc1JlZGZp c2hEaXNjb3ZlcmVkVG9rZW4gPT0gTlVMTCkgew0KPiA+ICAgICAgREVCVUcgKChERUJVR19FUlJP UiwgIiVhOiBOb3QgZW5vdWdoIG1lbW9yeSBmb3INCj4gPiBFRklfUkVERklTSF9ESVNDT1ZFUkVE X1RPS0VOLlxuIiwgX19mdW5jX18pKTsNCj4gPiAgICAgIHJldHVybjsNCj4gPiAgICB9DQo+ID4N Cj4gPiAtICBUaGlzTmV0d29ya0ludGVyZmFjZSAgICAgICA9IGdOZXR3b3JrSW50ZXJmYWNlSW5z dGFuY2VzOw0KPiA+IC0gIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuID0gZ1JlZGZpc2hEaXNj b3ZlcmVkVG9rZW47DQo+ID4gLSAgLy8NCj4gPiAtICAvLyBMb29wIHRvIGRpc2NvdmVyIFJlZGZp c2ggc2VydmljZSBvbiBlYWNoIG5ldHdvcmsgaW50ZXJmYWNlLg0KPiA+IC0gIC8vDQo+ID4gLSAg Zm9yIChOZXR3b3JrSW50ZXJmYWNlSW5kZXggPSAwOyBOZXR3b3JrSW50ZXJmYWNlSW5kZXggPA0K PiA+IGdOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzOyBOZXR3b3JrSW50ZXJmYWNlSW5kZXgrKykg ew0KPiA+ICsgICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPlNpZ25hdHVyZSA9DQo+ID4g KyBSRURGSVNIX0RJU0NPVkVSX1RPS0VOX1NJR05BVFVSRTsNCj4gPiArDQo+ID4gICAgICAvLw0K PiA+ICAgICAgLy8gSW5pdGlhbCB0aGlzIFJlZGZpc2ggRGlzY292ZXJlZCBUb2tlbg0KPiA+ICAg ICAgLy8NCj4gPiBAQCAtNDQ5LDEzICs0MzUsMTEgQEAgUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xJ bnN0YWxsZWQgKA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICZUaGlzUmVkZmlzaERpc2NvdmVy ZWRUb2tlbi0+RXZlbnQNCj4gPiAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICAgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICBGcmVlUG9vbChUaGlzUmVkZmlzaERp c2NvdmVyZWRUb2tlbik7DQo+ID4gICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRmFp bGVkIHRvIGNyZWF0ZSBldmVudCBmb3IgUmVkZmlzaA0KPiA+IGRpc2NvdmVyZWQgdG9rZW4uXG4i LCBfX2Z1bmNfXykpOw0KPiA+IC0gICAgICBnb3RvIEVycm9yUmV0dXJuOw0KPiA+ICsgICAgICBy ZXR1cm47DQo+ID4gICAgICB9DQo+ID4NCj4gPiAtICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRv a2VuLT5TaWduYXR1cmUgICAgICAgICAgICAgICAgICAgICAgICAgPQ0KPiA+IFJFREZJU0hfRElT Q09WRVJfVE9LRU5fU0lHTkFUVVJFOw0KPiA+IC0gICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9r ZW4tPkRpc2NvdmVyTGlzdC5OdW1iZXJPZlNlcnZpY2VGb3VuZCA9IDA7DQo+ID4gLSAgICBUaGlz UmVkZmlzaERpc2NvdmVyZWRUb2tlbi0+RGlzY292ZXJMaXN0LlJlZGZpc2hJbnN0YW5jZXMgICAg ID0gTlVMTDsNCj4gPiAgICAgIC8vDQo+ID4gICAgICAvLyBBY3F1aXJlIGZvciBSZWRmaXNoIHNl cnZpY2Ugd2hpY2ggaXMgcmVwb3J0ZWQgYnkNCj4gPiAgICAgIC8vIFJlZGZpc2ggSG9zdCBJbnRl cmZhY2UuDQo+ID4gQEAgLTQ2NywyMSArNDUxLDIzIEBAIFJlZGZpc2hEaXNjb3ZlclByb3RvY29s SW5zdGFsbGVkICgNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFRklfUkVERklTSF9ESVNDT1ZFUl9IT1NUX0lOVEVSRkFDRSwNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzUmVkZmlzaERpc2NvdmVyZWRU b2tlbg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7 DQo+ID4gLSAgICBUaGlzTmV0d29ya0ludGVyZmFjZSsrOw0KPiA+IC0gICAgVGhpc1JlZGZpc2hE aXNjb3ZlcmVkVG9rZW4rKzsNCj4gPiAtICB9DQo+ID4NCj4gPiAtICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gLSAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEFjcXVpcmUgUmVk ZmlzaCBzZXJ2aWNlIGZhaWwuXG4iLA0KPiBfX2Z1bmNfXykpOw0KPiA+IC0gICAgZ290byBFcnJv clJldHVybjsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBGcmVlIFJlZGZpc2ggRGlzY292ZXJl ZCBUb2tlbiBpZiBEaXNjb3ZlciBJbnN0YW5jZSB3YXMgbm90DQo+ID4gKyBjcmVhdGVkDQo+ID4g YW5kDQo+ID4gKyAgICAvLyBSZWRmaXNoIFNlcnZpY2UgRGlzY292ZXJlZCBDYWxsYmFjayBldmVu dCB3YXMgbm90IHRyaWdnZXJlZC4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZihUaGlzUmVkZmlz aERpc2NvdmVyZWRUb2tlbi0+RGlzY292ZXJMaXN0Lk51bWJlck9mU2VydmljZUZvdW5kDQo+ID4g KyA9PQ0KPiA+IDAgfHwNCj4gPiArICAgICAgICBFRklfRVJST1IoVGhpc1JlZGZpc2hEaXNjb3Zl cmVkVG9rZW4tDQo+ID4gPkRpc2NvdmVyTGlzdC5SZWRmaXNoSW5zdGFuY2VzLT5TdGF0dXMpKXsN Cj4gPiArICAgICAgZ0JTLT5DbG9zZUV2ZW50IChUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbi0+ RXZlbnQpOw0KPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZyZWUgUmVkZmlz aCBkaXNjb3ZlcmVkIHRva2VuIC0gJXguXG4iLA0KPiA+ICsgICAgICAgICAgX19mdW5jX18sIFRo aXNSZWRmaXNoRGlzY292ZXJlZFRva2VuKSk7DQo+ID4gKyAgICAgIEZyZWVQb29sKFRoaXNSZWRm aXNoRGlzY292ZXJlZFRva2VuKTsNCj4gPiArICAgIH0NCj4gPiArICAgIFRoaXNOZXR3b3JrSW50 ZXJmYWNlKys7DQo+ID4gICAgfQ0KPiA+DQo+ID4gICAgcmV0dXJuOw0KPiA+DQo+ID4gLUVycm9y UmV0dXJuOg0KPiA+IC0gIGlmIChnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiAhPSBOVUxMKSB7DQo+ ID4gLSAgICBGcmVlUG9vbCAoZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4pOw0KPiA+IC0gIH0NCj4g PiAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+IEBAIC00OTgsMjUgKzQ4NCwxMCBAQCBSZWRmaXNoQ29u ZmlnSGFuZGxlckRyaXZlclVubG9hZCAoDQo+ID4gICAgSU4gRUZJX0hBTkRMRSAgSW1hZ2VIYW5k bGUNCj4gPiAgICApDQo+ID4gIHsNCj4gPiAtICBFRklfUkVERklTSF9ESVNDT1ZFUkVEX1RPS0VO ICAqVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW47DQo+ID4gLSAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlc0luZGV4Ow0KPiA+DQo+ID4gICAg UmVkZmlzaENvbmZpZ0RyaXZlckNvbW1vblVubG9hZCAoSW1hZ2VIYW5kbGUpOw0KPiA+DQo+ID4g ICAgUmVkZmlzaENvbmZpZ1N0b3BSZWRmaXNoRGlzY292ZXJ5ICgpOw0KPiA+IC0gIGlmIChnUmVk ZmlzaERpc2NvdmVyZWRUb2tlbiAhPSBOVUxMKSB7DQo+ID4gLSAgICBUaGlzUmVkZmlzaERpc2Nv dmVyZWRUb2tlbiA9IGdSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiA+IC0gICAgZm9yIChOdW1i ZXJPZk5ldHdvcmtJbnRlcmZhY2VzSW5kZXggPSAwOw0KPiA+IE51bWJlck9mTmV0d29ya0ludGVy ZmFjZXNJbmRleCA8IGdOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzOw0KPiA+IE51bWJlck9mTmV0 d29ya0ludGVyZmFjZXNJbmRleCsrKSB7DQo+ID4gLSAgICAgIGlmIChUaGlzUmVkZmlzaERpc2Nv dmVyZWRUb2tlbi0+RXZlbnQgIT0gTlVMTCkgew0KPiA+IC0gICAgICAgIGdCUy0+Q2xvc2VFdmVu dCAoVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkV2ZW50KTsNCj4gPiAtICAgICAgfQ0KPiA+ IC0NCj4gPiAtICAgICAgRnJlZVBvb2wgKFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuKTsNCj4g PiAtICAgICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4rKzsNCj4gPiAtICAgIH0NCj4gPiAt DQo+ID4gLSAgICBnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9IE5VTEw7DQo+ID4gLSAgfQ0KPiA+ DQo+ID4gICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICB9DQo+ID4gZGlmZiAtLWdpdCBhL1Jl ZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+ID4gYi9S ZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJEeGUuYw0KPiA+IGlu ZGV4IDU4M2M2ZjcuLmE2YzhkNjAgMTAwNjQ0DQo+ID4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNo RGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVyRHhlLmMNCj4gPiArKysgYi9SZWRmaXNoUGtnL1Jl ZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJEeGUuYw0KPiA+IEBAIC0xMDk1LDggKzEw OTUsMTAgQEAgUmVkZmlzaFNlcnZpY2VHZXROZXR3b3JrSW50ZXJmYWNlICggIHsNCj4gPiAgICBF RklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5BTA0KPiA+ICpUaGlz TmV0d29ya0ludGVyZmFjZUludG47DQo+ID4gICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09S S19JTlRFUkZBQ0UNCj4gPiAqVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+ID4gKyAgRUZJX1JFREZJ U0hfRElTQ09WRVJfUkVTVF9FWF9JTlNUQU5DRV9JTlRFUk5BTA0KPiAqUmVzdEV4SW5zdGFuY2U7 DQo+ID4NCj4gPiAtICBpZiAoKE5ldHdvcmtJbnRmSW5zdGFuY2VzID09IE5VTEwpIHx8IChOdW1i ZXJPZk5ldHdvcmtJbnRmcyA9PQ0KPiA+IE5VTEwpDQo+ID4gfHwgKEltYWdlSGFuZGxlID09IE5V TEwpKSB7DQo+ID4gKyAgaWYgKChUaGlzID09IE5VTEwpIHx8IChOZXR3b3JrSW50Zkluc3RhbmNl cyA9PSBOVUxMKSB8fA0KPiA+IChOdW1iZXJPZk5ldHdvcmtJbnRmcyA9PSBOVUxMKSB8fA0KPiA+ ICsgICAgICAoSW1hZ2VIYW5kbGUgPT0gTlVMTCkpIHsNCj4gPiAgICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQo+ID4gICAgfQ0KPiA+DQo+ID4gQEAgLTExMDcsMTQgKzExMDksMzAg QEAgUmVkZmlzaFNlcnZpY2VHZXROZXR3b3JrSW50ZXJmYWNlICgNCj4gPiAgICAgIHJldHVybiBF RklfTk9UX0ZPVU5EOw0KPiA+ICAgIH0NCj4gPg0KPiA+ICsgIFJlc3RFeEluc3RhbmNlID0NCj4g PiArIEVGSV9SRURGSVNIX0RJU09WRVJfREFUQV9GUk9NX0RJU0NPVkVSX1BST1RPQ09MKFRoaXMp Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENoZWNrIHRoZSBuZXcgZm91bmQgbmV0d29y ayBpbnRlcmZhY2UuDQo+ID4gKyAgLy8NCj4gPiArICBpZiAoUmVzdEV4SW5zdGFuY2UtPk5ldHdv cmtJbnRlcmZhY2VJbnN0YW5jZXMgIT0gTlVMTCkgew0KPiA+ICsgICAgRnJlZVBvb2wgKFJlc3RF eEluc3RhbmNlLT5OZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzKTsNCj4gPiArICAgIFJlc3RFeElu c3RhbmNlLT5OZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzID0gTlVMTDsgIH0NCj4gPiArDQo+ID4g ICAgVGhpc05ldHdvcmtJbnRlcmZhY2UgPSAoRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19J TlRFUkZBQ0UNCj4gPiAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZg0KPiAoRUZJX1JFREZJU0hf RElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0UpDQo+ID4gKiBtTnVtTmV0d29ya0ludGVyZmFjZSk7 DQo+ID4gICAgaWYgKFRoaXNOZXR3b3JrSW50ZXJmYWNlID09IE5VTEwpIHsNCj4gPiAgICAgIHJl dHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiAgICB9DQo+ID4NCj4gPiAgICAqTmV0d29y a0ludGZJbnN0YW5jZXMgICAgPSBUaGlzTmV0d29ya0ludGVyZmFjZTsNCj4gPiArDQo+ID4gKw0K PiA+ICsgIFJlc3RFeEluc3RhbmNlLT5OZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzID0gVGhpc05l dHdvcmtJbnRlcmZhY2U7DQo+ID4gKyBSZXN0RXhJbnN0YW5jZS0+TnVtYmVyT2ZOZXR3b3JrSW50 ZXJmYWNlcyA9IDA7DQo+ID4gKw0KPiA+ICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlSW50biA9DQo+ ID4gKEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFX0lOVEVSTkFMDQo+ICop R2V0Rmlyc3ROb2RlDQo+ID4gKCZtRWZpUmVkZmlzaERpc2NvdmVyTmV0d29ya0ludGVyZmFjZSk7 DQo+ID4gICAgd2hpbGUgKFRSVUUpIHsNCj4gPiArDQo+ID4gICAgICBUaGlzTmV0d29ya0ludGVy ZmFjZS0+SXNJcHY2ID0gRkFMU0U7DQo+ID4gICAgICBpZiAoQ2hlY2tJc0lwVmVyc2lvbjYgKFRo aXNOZXR3b3JrSW50ZXJmYWNlSW50bikpIHsNCj4gPiAgICAgICAgVGhpc05ldHdvcmtJbnRlcmZh Y2UtPklzSXB2NiA9IFRSVUU7IEBAIC0xMTMwLDcgKzExNDgsNyBAQA0KPiA+IFJlZGZpc2hTZXJ2 aWNlR2V0TmV0d29ya0ludGVyZmFjZSAoDQo+ID4NCj4gPiAgICAgIFRoaXNOZXR3b3JrSW50ZXJm YWNlLT5TdWJuZXRQcmVmaXhMZW5ndGggPQ0KPiA+IFRoaXNOZXR3b3JrSW50ZXJmYWNlSW50bi0N Cj4gPiA+U3VibmV0UHJlZml4TGVuZ3RoOw0KPiA+ICAgICAgVGhpc05ldHdvcmtJbnRlcmZhY2Ut PlZsYW5JZCAgICAgICAgICAgICA9IFRoaXNOZXR3b3JrSW50ZXJmYWNlSW50bi0NCj4gPlZsYW5J ZDsNCj4gPiAtICAgICgqTnVtYmVyT2ZOZXR3b3JrSW50ZnMpKys7DQo+ID4gKyAgICBSZXN0RXhJ bnN0YW5jZS0+TnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlcysrOw0KPiA+ICAgICAgaWYgKElzTm9k ZUF0RW5kICgmbUVmaVJlZGZpc2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2UsDQo+ID4gJlRoaXNO ZXR3b3JrSW50ZXJmYWNlSW50bi0+RW50cnkpKSB7DQo+ID4gICAgICAgIGJyZWFrOw0KPiA+ICAg ICAgfQ0KPiA+IEBAIC0xMTM5LDYgKzExNTcsOCBAQCBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJ bnRlcmZhY2UgKA0KPiA+ICAgICAgVGhpc05ldHdvcmtJbnRlcmZhY2UrKzsNCj4gPiAgICB9DQo+ ID4NCj4gPiArICAqTnVtYmVyT2ZOZXR3b3JrSW50ZnMgPSBSZXN0RXhJbnN0YW5jZS0NCj4gPiA+ TnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsNCj4gPiArDQo+ID4gICAgcmV0dXJuIEVGSV9TVUND RVNTOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtMTE3OCw3ICsxMTk4LDYgQEAgUmVkZmlzaFNlcnZp Y2VBY3F1aXJlU2VydmljZSAoICB7DQo+ID4gICAgRUZJX1JFREZJU0hfRElTQ09WRVJFRF9JTlRF Uk5BTF9JTlNUQU5DRSAgICAgICAgICpJbnN0YW5jZTsNCj4gPiAgICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzMTsNCj4gPiAtICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzMjsNCj4gPiAg ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3SW5z dGFuY2U7DQo+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE51bU5ldHdvcmtJbnRlcmZhY2VzOw0KPiA+ICAgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrSW50ZXJmYWNlc0luZGV4Ow0KPiA+ IEBAIC0xMjE1LDcgKzEyMzQsNiBAQCBSZWRmaXNoU2VydmljZUFjcXVpcmVTZXJ2aWNlICgNCj4g Pg0KPiA+ICAgIGZvciAoTmV0d29ya0ludGVyZmFjZXNJbmRleCA9IDA7IE5ldHdvcmtJbnRlcmZh Y2VzSW5kZXggPA0KPiA+IE51bU5ldHdvcmtJbnRlcmZhY2VzOyBOZXR3b3JrSW50ZXJmYWNlc0lu ZGV4KyspIHsNCj4gPiAgICAgIFN0YXR1czEgICAgID0gRUZJX1NVQ0NFU1M7DQo+ID4gLSAgICBT dGF0dXMyICAgICA9IEVGSV9TVUNDRVNTOw0KPiA+ICAgICAgTmV3SW5zdGFuY2UgPSBGQUxTRTsN Cj4gPiAgICAgIEluc3RhbmNlICAgID0gR2V0SW5zdGFuY2VCeU93bmVyIChJbWFnZUhhbmRsZSwN Cj4gPiBUYXJnZXROZXR3b3JrSW50ZXJmYWNlSW50ZXJuYWwsIEZsYWdzICYNCj4gPiB+RUZJX1JF REZJU0hfRElTQ09WRVJfVkFMSURBVElPTik7IC8vIENoZWNrIGlmIHdlIGNhbiByZS11c2UNCj4g cHJldmlvdXMNCj4gPiBpbnN0YW5jZS4NCj4gPiAgICAgIGlmIChJbnN0YW5jZSA9PSBOVUxMKSB7 DQo+ID4gQEAgLTEyMjMsNiArMTI0MSw3IEBAIFJlZGZpc2hTZXJ2aWNlQWNxdWlyZVNlcnZpY2Ug KA0KPiA+ICAgICAgICBJbnN0YW5jZSA9IChFRklfUkVERklTSF9ESVNDT1ZFUkVEX0lOVEVSTkFM X0lOU1RBTkNFDQo+ID4gKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YNCj4gPiAoRUZJX1JFREZJ U0hfRElTQ09WRVJFRF9JTlRFUk5BTF9JTlNUQU5DRSkpOw0KPiA+ICAgICAgICBpZiAoSW5zdGFu Y2UgPT0gTlVMTCkgew0KPiA+ICAgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTpNZW1v cnkgYWxsb2NhdGlvbiBmYWlsLlxuIiwNCj4gPiBfX2Z1bmNfXykpOw0KPiA+ICsgICAgICAgIHJl dHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAg IEluaXRpYWxpemVMaXN0SGVhZCAoJkluc3RhbmNlLT5FbnRyeSk7IEBAIC0xMjU4LDkgKzEyNzcs MTEgQEANCj4gPiBSZWRmaXNoU2VydmljZUFjcXVpcmVTZXJ2aWNlICgNCj4gPiAgICAgICAgREVC VUcgKChERUJVR19FUlJPUiwgIiVhOlJlZGZpc2ggc2VydmljZSBkaXNjb3ZlcnkgdGhyb3VnaCBT U0RQDQo+ID4gaXMgbm90IHN1cHBvcnRlZFxuIiwgX19mdW5jX18pKTsNCj4gPiAgICAgICAgcmV0 dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiAgICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgIGlmIChF RklfRVJST1IgKFN0YXR1czEpICYmIEVGSV9FUlJPUiAoU3RhdHVzMikpIHsNCj4gPiAtICAgICAg ICBGcmVlUG9vbCAoKFZPSUQgKilJbnN0YW5jZSk7DQo+ID4gLSAgICAgICAgREVCVUcgKChERUJV R19FUlJPUiwgIiVhOlNvbWV0aGluZyB3cm9uZyBvbiBSZWRmaXNoIHNlcnZpY2UNCj4gPiBkaXNj b3ZlcnkgU3RhdHVzMT0leCwgU3RhdHVzMj0leC5cbiIsIF9fZnVuY19fLCBTdGF0dXMxLCBTdGF0 dXMyKSk7DQo+ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1czEpKSB7DQo+ID4gKyAgICAg ICAgaWYgKE5ld0luc3RhbmNlKSB7DQo+ID4gKyAgICAgICAgICBGcmVlUG9vbCAoKFZPSUQgKilJ bnN0YW5jZSk7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICAgIERFQlVHICgoREVCVUdfRVJS T1IsICIlYTpTb21ldGhpbmcgd3Jvbmcgb24gUmVkZmlzaCBzZXJ2aWNlDQo+ID4gKyBkaXNjb3Zl cnkgU3RhdHVzMT0lci5cbiIsIF9fZnVuY19fLCBTdGF0dXMxKSk7DQo+ID4gICAgICAgIH0gZWxz ZSB7DQo+ID4gICAgICAgICAgaWYgKE5ld0luc3RhbmNlKSB7DQo+ID4gICAgICAgICAgICBJbnNl cnRUYWlsTGlzdCAoJm1SZWRmaXNoRGlzY292ZXJMaXN0LCAmSW5zdGFuY2UtPkVudHJ5KTsNCj4g PiBAQCAtMTM4NywxMw0KPiA+ICsxNDA4LDYgQEAgUmVsZWFzZU5leHQ6Ow0KPiA+ICAgIH0NCj4g PiAgfQ0KPiA+DQo+ID4gLUVGSV9SRURGSVNIX0RJU0NPVkVSX1BST1RPQ09MICBtUmVkZmlzaERp c2NvdmVyID0gew0KPiA+IC0gIFJlZGZpc2hTZXJ2aWNlR2V0TmV0d29ya0ludGVyZmFjZSwNCj4g PiAtICBSZWRmaXNoU2VydmljZUFjcXVpcmVTZXJ2aWNlLA0KPiA+IC0gIFJlZGZpc2hTZXJ2aWNl QWJvcnRBY3F1aXJlLA0KPiA+IC0gIFJlZGZpc2hTZXJ2aWNlUmVsZWFzZVNlcnZpY2UNCj4gPiAt fTsNCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFRoaXMgZnVuY3Rpb24gY3JlYXRlIGFuDQo+ID4g RUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwgZm9yIHRoZQ0K PiA+ICAgIGdpdmVuIG5ldHdvcmsgaW50ZXJmYWNlLg0KPiA+IEBAIC0xNzEzLDEyICsxNzI3LDIw IEBAIEJ1aWxkdXBOZXR3b3JrSW50ZXJmYWNlICgNCj4gPg0KPiA+ICAgICAgICAgICAgTmV3TmV0 d29ya0ludGVyZmFjZUluc3RhbGxlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGQUxTRTsNCj4g PiAgICAgICAgICAgIE5ldHdvcmtJbnRlcmZhY2UtPkVmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29s SGFuZGxlID0gTlVMTDsNCj4gPiAtICAgICAgICAgIFN0YXR1cyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gZ0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2Ug KA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJk5ldHdvcmtJbnRlcmZhY2UtDQo+ID4gPkVmaVJlZGZpc2hE aXNjb3ZlclByb3RvY29sSGFuZGxlLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdFZmlSZWRmaXNoRGlz Y292ZXJQcm90b2NvbEd1aWQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfTkFUSVZFX0lOVEVSRkFD RSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChWT0lEICopJm1SZWRmaXNoRGlzY292ZXINCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgUmVzdEV4SW5zdGFuY2UtPlNpZ25h dHVyZSA9DQo+ID4gKyBFRklfUkVERklTSF9ESVNDT1ZFUl9EQVRBX1NJR05BVFVSRTsNCj4gPiAr DQo+ID4gKw0KPiA+ICsgUmVzdEV4SW5zdGFuY2UtPlJlZGZpc2hEaXNjb3ZlclByb3RvY29sLkdl dE5ldHdvcmtJbnRlcmZhY2VMaXN0ID0NCj4gPiBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRl cmZhY2U7DQo+ID4gKw0KPiA+ICsgUmVzdEV4SW5zdGFuY2UtPlJlZGZpc2hEaXNjb3ZlclByb3Rv Y29sLkFjcXVpcmVSZWRmaXNoU2VydmljZSA9DQo+ID4gUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2Vy dmljZTsNCj4gPiArDQo+ID4gKyBSZXN0RXhJbnN0YW5jZS0+UmVkZmlzaERpc2NvdmVyUHJvdG9j b2wuQWJvcnRBY3F1aXJlUmVkZmlzaFNlcnZpY2UNCj4gPiA9IFJlZGZpc2hTZXJ2aWNlQWJvcnRB Y3F1aXJlOw0KPiA+ICsNCj4gPiArIFJlc3RFeEluc3RhbmNlLT5SZWRmaXNoRGlzY292ZXJQcm90 b2NvbC5SZWxlYXNlUmVkZmlzaFNlcnZpY2UNCj4gPiArID0gUmVkZmlzaFNlcnZpY2VSZWxlYXNl U2VydmljZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICBTdGF0dXMgPSBnQlMtPkluc3RhbGxQcm90 b2NvbEludGVyZmFjZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJk5ldHdvcmtJ bnRlcmZhY2UtPkVmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sSGFuZGxlLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICZnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xHdWlkLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9OQVRJVkVfSU5URVJGQUNFLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIChWT0lEICopJlJlc3RFeEluc3RhbmNlLT5SZWRmaXNo RGlzY292ZXJQcm90b2NvbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4g ICAgICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gICAgICAgICAgICAgIERF QlVHICgoREVCVUdfRVJST1IsICIlYTogRmFpbCB0byBpbnN0YWxsDQo+ID4gRUZJX1JFREZJU0hf RElTQ09WRVJfUFJPVE9DT0xcbiIsIF9fZnVuY19fKSk7DQo+ID4gICAgICAgICAgICB9DQo+ID4g QEAgLTE4MTUsNiArMTgzNyw3IEBAIFN0b3BTZXJ2aWNlT25OZXR3b3JrSW50ZXJmYWNlICgNCj4g PiAgICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlz Y292ZXJQcm90b2NvbEhhbmRsZTsNCj4gPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JL X0lOVEVSRkFDRV9JTlRFUk5BTA0KPiA+ICpUaGlzTmV0d29ya0ludGVyZmFjZTsNCj4gPiAgICBF RklfUkVERklTSF9ESVNDT1ZFUl9SRVNUX0VYX0lOU1RBTkNFX0lOVEVSTkFMDQo+ICpSZXN0RXhJ bnN0YW5jZTsNCj4gPiArICBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCAgICAgICAgICAg ICAgICAgICAgKlJlZGZpc2hEaXNjb3ZlclByb3RvY29sOw0KPiA+DQo+ID4gICAgZm9yIChJbmRl eCA9IDA7IEluZGV4IDwgKHNpemVvZiAoZ1JlcXVpcmVkUHJvdG9jb2wpIC8gc2l6ZW9mDQo+ID4g KFJFREZJU0hfRElTQ09WRVJfUkVRVUlSRURfUFJPVE9DT0wpKTsgSW5kZXgrKykgew0KPiA+ICAg ICAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ID4gQEAgLTE4NTQsMTIgKzE4Nzcs MzAgQEAgU3RvcFNlcnZpY2VPbk5ldHdvcmtJbnRlcmZhY2UgKA0KPiA+ICAgICAgICAgICAgICAv LyBjbGllbnQgd2hpY2ggdXNlcyAuRUZJIFJlZGZpc2ggZGlzY292ZXIgcHJvdG9jb2wuDQo+ID4g ICAgICAgICAgICAgIC8vDQo+ID4gICAgICAgICAgICAgIGlmIChEaXNjb3ZlclByb3RvY29sSGFu ZGxlICE9IE5VTEwpIHsNCj4gPiAtICAgICAgICAgICAgICBnQlMtPkRpc2Nvbm5lY3RDb250cm9s bGVyIChEaXNjb3ZlclByb3RvY29sSGFuZGxlLCBOVUxMLCBOVUxMKTsNCj4gPiAtICAgICAgICAg ICAgICBTdGF0dXMgPSBnQlMtPlVuaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiArDQo+ ID4gKyAgICAgICAgICAgICAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2NvdmVyUHJvdG9jb2xIYW5kbGUsDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9j b2xHdWlkLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKSZtUmVk ZmlzaERpc2NvdmVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWT0lEICoq KSAmUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPiArICAgICAgICAgICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgICAgICAgICAgICAgUmVzdEV4SW5zdGFuY2UgPQ0KPiA+DQo+IEVGSV9SRURGSVNI X0RJU09WRVJfREFUQV9GUk9NX0RJU0NPVkVSX1BST1RPQ09MKFJlZGZpc2hEaXNjb3ZlDQo+ID4g clByb3RvY29sKTsNCj4gPiArICAgICAgICAgICAgICAgIC8vDQo+ID4gKyAgICAgICAgICAgICAg ICAvLyBTdG9wIFJlZGZpc2ggc2VydmljZSBkaXNjb3ZlcnkuDQo+ID4gKyAgICAgICAgICAgICAg ICAvLw0KPiA+ICsgICAgICAgICAgICAgICAgUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wtPkFib3J0 QWNxdWlyZVJlZGZpc2hTZXJ2aWNlICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJlZGZpc2hEaXNjb3ZlclByb3RvY29sLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdEV4SW5zdGFuY2UtPk5ldHdvcmtJ bnRlcmZhY2VJbnN0YW5jZXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgIGdCUy0+RGlz Y29ubmVjdENvbnRyb2xsZXIgKERpc2NvdmVyUHJvdG9jb2xIYW5kbGUsIE5VTEwsIE5VTEwpOw0K PiA+ICsgICAgICAgICAgICAgICAgU3RhdHVzID0gZ0JTLT5Vbmluc3RhbGxQcm90b2NvbEludGVy ZmFjZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzY292ZXJQcm90 b2NvbEhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ0VmaVJl ZGZpc2hEaXNjb3ZlclByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoVk9JRCAqKSZSZXN0RXhJbnN0YW5jZS0+UmVkZmlzaERpc2NvdmVyUHJvdG9jb2wN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgICAgICAgICAg ICAgIH0NCj4gPiAgICAgICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAgICAgIHJldHVybiBT dGF0dXM7DQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1Jl ZGZpc2hEaXNjb3ZlckludGVybmFsLmgNCj4gPiBiL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVy RHhlL1JlZGZpc2hEaXNjb3ZlckludGVybmFsLmgNCj4gPiBpbmRleCAyNzA0Y2Q5Li5kZGI1ZjJl IDEwMDY0NA0KPiA+IC0tLSBhL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hE aXNjb3ZlckludGVybmFsLmgNCj4gPiArKysgYi9SZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4 ZS9SZWRmaXNoRGlzY292ZXJJbnRlcm5hbC5oDQo+ID4gQEAgLTExOCwxNiArMTE4LDMwIEBAIHR5 cGVkZWYgc3RydWN0IHsgIH0NCj4gPiBFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVS RkFDRV9JTlRFUk5BTDsNCj4gPg0KPiA+ICAvLw0KPiA+ICsvLyBSZWRmaXNoIERpc2NvdmVyIElu c3RhbmNlIHNpZ25hdHVyZSAvLw0KPiA+ICsNCj4gPiArI2RlZmluZSBFRklfUkVERklTSF9ESVND T1ZFUl9EQVRBX1NJR05BVFVSRSAgIFNJR05BVFVSRV8zMiAoJ0UnLA0KPiA+ICdSJywgJ0QnLCAn RCcpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEVGSV9SRURGSVNIX0RJU09WRVJfREFUQV9GUk9NX0RJ U0NPVkVSX1BST1RPQ09MKGEpIFwNCj4gPiArICBDUiAoYSwgRUZJX1JFREZJU0hfRElTQ09WRVJf UkVTVF9FWF9JTlNUQU5DRV9JTlRFUk5BTCwNCj4gPiArUmVkZmlzaERpc2NvdmVyUHJvdG9jb2ws IEVGSV9SRURGSVNIX0RJU0NPVkVSX0RBVEFfU0lHTkFUVVJFKQ0KPiA+ICsNCj4gPiArLy8NCj4g PiAgLy8gSW50ZXJuYWwgc3RydWN0dXJlIHVzZWQgdG8gbWFpbnRhaW4gUkVTVCBFWCBwcm9wZXJ0 aWVzLg0KPiA+ICAvLw0KPiA+ICB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gLSAgTElTVF9FTlRSWSAg ICAgICAgICAgICAgRW50cnk7ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgTGluayBsaXN0IGVu dHJ5Lg0KPiA+IC0gIEVGSV9IQU5ETEUgICAgICAgICAgICAgIE9wZW5Ecml2ZXJBZ2VudEhhbmRs ZTsgICAgICAvLy88IFRoZSBhZ2VudCB0byBvcGVuDQo+ID4gbmV0d29yayBwcm90b2NvbC4NCj4g PiAtICBFRklfSEFORExFICAgICAgICAgICAgICBPcGVuRHJpdmVyQ29udHJvbGxlckhhbmRsZTsg Ly8vPCBUaGUgY29udHJvbGxlcg0KPiBoYW5kbGUNCj4gPiB0byBvcGVuIG5ldHdvcmsgcHJvdG9j b2wuDQo+ID4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgUmVzdEV4Q2hpbGRIYW5kbGU7ICAg ICAgICAgIC8vLzwgVGhlIGNoaWxkIGhhbmRsZSBjcmVhdGVkDQo+ID4gdGhyb3VnaCBSRVNUIEVY IFNlcnZpY2UgUHJvdG9jb2wuDQo+ID4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgUmVzdEV4 Q29udHJvbGxlckhhbmRsZTsgICAgIC8vLzwgVGhlIGNvbnRyb2xsZXIgaGFuZGxlDQo+ID4gd2hp Y2ggcHJvdmlkZSBSRVNUIEVYIHByb3RvY29sLg0KPiA+IC0gIEVGSV9SRVNUX0VYX1BST1RPQ09M ICAgICpSZXN0RXhQcm90b2NvbEludGVyZmFjZTsgICAvLy88IFBvaW50ZXIgdG8NCj4gPiBFRklf UkVTVF9FWF9QUk9UT0NPTC4NCj4gPiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICBSZXN0RXhJ ZDsgICAgICAgICAgICAgICAgICAgLy8vPCBUaGUgaWRlbnRpZmllciBpbnN0YWxsZWQgb24gUkVT VCBFWA0KPiA+IGNvbnRyb2xsZXIgaGFuZGxlLg0KPiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFbnRyeTsgICAgICAgICAgICAgICAgICAgICAgLy8vPCBMaW5r IGxpc3QgZW50cnkuDQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNpZ25hdHVyZTsgICAgICAgICAgICAgICAgICAvLy88IEluc3RhbmNlIHNpZ25hdHVyZS4N Cj4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkRyaXZl ckFnZW50SGFuZGxlOyAgICAgIC8vLzwgVGhlIGFnZW50IHRvDQo+ID4gb3BlbiBuZXR3b3JrIHBy b3RvY29sLg0KPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP cGVuRHJpdmVyQ29udHJvbGxlckhhbmRsZTsgLy8vPCBUaGUNCj4gPiBjb250cm9sbGVyIGhhbmRs ZSB0byBvcGVuIG5ldHdvcmsgcHJvdG9jb2wuDQo+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJlc3RFeENoaWxkSGFuZGxlOyAgICAgICAgICAvLy88IFRoZSBj aGlsZCBoYW5kbGUNCj4gPiBjcmVhdGVkIHRocm91Z2ggUkVTVCBFWCBTZXJ2aWNlIFByb3RvY29s Lg0KPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN0RXhD b250cm9sbGVySGFuZGxlOyAgICAgLy8vPCBUaGUgY29udHJvbGxlcg0KPiA+IGhhbmRsZSB3aGlj aCBwcm92aWRlIFJFU1QgRVggcHJvdG9jb2wuDQo+ID4gKyAgRUZJX1JFU1RfRVhfUFJPVE9DT0wg ICAgICAgICAgICAgICAgICAgICpSZXN0RXhQcm90b2NvbEludGVyZmFjZTsgICAvLy88DQo+IFBv aW50ZXINCj4gPiB0byBFRklfUkVTVF9FWF9QUk9UT0NPTC4NCj4gPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdEV4SWQ7ICAgICAgICAgICAgICAgICAgIC8v LzwgVGhlIGlkZW50aWZpZXIgaW5zdGFsbGVkIG9uDQo+ID4gUkVTVCBFWCBjb250cm9sbGVyIGhh bmRsZS4NCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVt YmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsgIC8vLzwgTnVtYmVyIG9mDQo+ID4gbmV0d29yayBpbnRl cmZhY2VzIGNhbiBkbyBSZWRmaXNoIHNlcnZpY2UgZGlzY292ZXJ5Lg0KPiA+ICsgIEVGSV9SRURG SVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFDQo+ID4gKk5ldHdvcmtJbnRlcmZhY2VJbnN0 YW5jZXM7IC8vLzwgTmV0d29yayBpbnRlcmZhY2UgaW5zdGFuY2VzLiBJdCdzIGFuDQo+ID4gYXJy YXkgb2YgaW5zdGFuY2VzLiBUaGUgbnVtYmVyIG9mIGVudHJpZXMNCj4gPiArDQo+ID4gKyAvLy88 IGluIGFycmF5IGlzIGluZGljYXRlZCBieQ0KPiA+IE51bWJlck9mTmV0d29ya0ludGVyZmFjZXMu DQo+ID4gKyAgRUZJX1JFREZJU0hfRElTQ09WRVJfUFJPVE9DT0wgICAgICAgICAgIFJlZGZpc2hE aXNjb3ZlclByb3RvY29sOw0KPiAvLy88DQo+ID4gRUZJX1JFREZJU0hfRElTQ09WRVJfUFJPVE9D T0wgcHJvdG9jb2wuDQo+ID4gIH0gRUZJX1JFREZJU0hfRElTQ09WRVJfUkVTVF9FWF9JTlNUQU5D RV9JTlRFUk5BTDsNCj4gPg0KPiA+ICAvKioNCj4gPiAtLQ0KPiA+IDIuNi4xLndpbmRvd3MuMQ0K PiA+IC1UaGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgbWVzc2FnZSBtYXkgYmUgY29u ZmlkZW50aWFsIGFuZA0KPiA+IHByb3ByaWV0YXJ5IHRvIEFtZXJpY2FuIE1lZ2F0cmVuZHMgKEFN SSkuIFRoaXMgY29tbXVuaWNhdGlvbiBpcw0KPiA+IGludGVuZGVkIHRvIGJlIHJlYWQgb25seSBi eSB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdG8gd2hvbSBpdCBpcw0KPiA+IGFkZHJlc3NlZCBv ciBieSB0aGVpciBkZXNpZ25lZS4gSWYgdGhlIHJlYWRlciBvZiB0aGlzIG1lc3NhZ2UgaXMgbm90 DQo+ID4gdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFyZSBvbiBub3RpY2UgdGhhdCBhbnkg ZGlzdHJpYnV0aW9uIG9mDQo+ID4gdGhpcyBtZXNzYWdlLCBpbiBhbnkgZm9ybSwgaXMgc3RyaWN0 bHkgcHJvaGliaXRlZC4gUGxlYXNlIHByb21wdGx5DQo+ID4gbm90aWZ5IHRoZSBzZW5kZXIgYnkg cmVwbHkgZS1tYWlsIG9yIGJ5IHRlbGVwaG9uZSBhdCA3NzAtMjQ2LTg2MDAsIGFuZA0KPiA+IHRo ZW4gZGVsZXRlIG9yIGRlc3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgdHJhbnNtaXNzaW9uLg0KPiAt VGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIG1lc3NhZ2UgbWF5IGJlIGNvbmZpZGVu dGlhbCBhbmQNCj4gcHJvcHJpZXRhcnkgdG8gQW1lcmljYW4gTWVnYXRyZW5kcyAoQU1JKS4gVGhp cyBjb21tdW5pY2F0aW9uIGlzIGludGVuZGVkDQo+IHRvIGJlIHJlYWQgb25seSBieSB0aGUgaW5k aXZpZHVhbCBvciBlbnRpdHkgdG8gd2hvbSBpdCBpcyBhZGRyZXNzZWQgb3IgYnkgdGhlaXINCj4g ZGVzaWduZWUuIElmIHRoZSByZWFkZXIgb2YgdGhpcyBtZXNzYWdlIGlzIG5vdCB0aGUgaW50ZW5k ZWQgcmVjaXBpZW50LCB5b3UgYXJlDQo+IG9uIG5vdGljZSB0aGF0IGFueSBkaXN0cmlidXRpb24g b2YgdGhpcyBtZXNzYWdlLCBpbiBhbnkgZm9ybSwgaXMgc3RyaWN0bHkNCj4gcHJvaGliaXRlZC4g UGxlYXNlIHByb21wdGx5IG5vdGlmeSB0aGUgc2VuZGVyIGJ5IHJlcGx5IGUtbWFpbCBvciBieQ0K PiB0ZWxlcGhvbmUgYXQgNzcwLTI0Ni04NjAwLCBhbmQgdGhlbiBkZWxldGUgb3IgZGVzdHJveSBh bGwgY29waWVzIG9mIHRoZQ0KPiB0cmFuc21pc3Npb24uDQo=