From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id F4094A0C53; Thu, 14 Oct 2021 08:46:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D9B7A40042; Thu, 14 Oct 2021 08:46:30 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 3483D40041 for ; Thu, 14 Oct 2021 08:46:28 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10136"; a="208411031" X-IronPort-AV: E=Sophos;i="5.85,371,1624345200"; d="scan'208";a="208411031" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2021 23:46:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,371,1624345200"; d="scan'208";a="548404513" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga004.fm.intel.com with ESMTP; 13 Oct 2021 23:46:27 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 13 Oct 2021 23:46:26 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 13 Oct 2021 23:46:26 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 13 Oct 2021 23:46:26 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.177) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 13 Oct 2021 23:46:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mQE3Nyn6oQyR2esIq0xl20AGhYVrPFcWa3XszJ4xszeyn+9tCkovy2tuRyUEsDdVthtZr2kt6MTBurB+j67LUg4XpBajBXluIEugSHcos33GAXRM8ND8nXrxVHft0Qrirl7ql9ydWunDlda1J0XIDdEe5A8qX+v7qdfZFTsXs74Z8Z1BkXnwUPn3gNbl+NYKG8eFJna4UXV8Hcoc1x1gftnoSpy0HcgHuIWafjMi6+MFURvTp+UL/kmggt6DUC4PrNBsubFb0b1kLLmTKcf6Ia9nqWpbVxPVkQkvWsJT/UVpceqARdqFpf/WLO3qYdTzX6nsfydt76kn9OxcbqYnjQ== 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=r0XoYV+5gXoB9pse/e48NJPwTuv3HPx8dnfNGnciIQw=; b=gasodgSrEX9SzfVFTjpqQvFxWDa2BtDKbA88tswNCWmcbTsMAvq6xO3on+NfsUkcB6x3XxMm4hs8Q4k91A/Xz1pYmrWO5ZDrp3vtT62FDdFha2cgJV16HQ/h/xzQoSiRpCBgyMnylc6eTS0nwuiE2stVse1+LN4Tf90t2tgRJE7f2ssREFf28d4UTye3qbNwJEsTQxVOBMgZdvSWoQ/p/Q9KNnHTiHavQBqy0L1j+DMa02WZu2K0/D1dU2+4CkgCBNbpD2fTnA8bDxKC++NwbQcw6ZyPK1P3wgl+wskjhFyJVHXKJFpYq0XbCjo7uFG/Sz5jFI+FOKoejaQ8nlbuTA== 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=r0XoYV+5gXoB9pse/e48NJPwTuv3HPx8dnfNGnciIQw=; b=CSr35Vu2v7Bp8AhEtz1eg1GijPZ/mrySwHn2gplkLfT6Ty3zcLMJUfiNzqN7y9rJg3YZ1TVzSOgKWmJQ5fGIS/Bz0quzqQLMuLncdySp/lkSBymkSqSxbj90eK/fKG6mN92hWnSzTyy87jrg5CSSY+iSo4Xd9pCuy70/He+3bRQ= Received: from DM8PR11MB5591.namprd11.prod.outlook.com (2603:10b6:8:38::23) by DM8PR11MB5669.namprd11.prod.outlook.com (2603:10b6:8:36::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Thu, 14 Oct 2021 06:46:21 +0000 Received: from DM8PR11MB5591.namprd11.prod.outlook.com ([fe80::3d47:b590:aa2a:d5cc]) by DM8PR11MB5591.namprd11.prod.outlook.com ([fe80::3d47:b590:aa2a:d5cc%9]) with mapi id 15.20.4608.016; Thu, 14 Oct 2021 06:46:21 +0000 From: "Peng, ZhihongX" To: David Marchand CC: "Burakov, Anatoly" , "Ananyev, Konstantin" , Stephen Hemminger , dev , "Lin, Xueqin" , "Richardson, Bruce" , Thomas Monjalon Thread-Topic: [PATCH v9 1/3] Enable ASan for memory detector on DPDK Thread-Index: AQHXv08j1GpXvVtS7UOzAGFQzJiwe6vRJKyAgADntVA= Date: Thu, 14 Oct 2021 06:46:21 +0000 Message-ID: References: <20211011062810.422220-1-zhihongx.peng@intel.com> <20211012094318.1154727-1-zhihongx.peng@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 032b82c7-daf1-4e0b-6285-08d98ede5551 x-ms-traffictypediagnostic: DM8PR11MB5669: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mlfo65e1qUctrfs2PmYxnKv1MbjjiPs4LsvgDG0YcNCbkXJuzAYHN3knJTW2/oKSVMECWcWf1OU+7FBzt1GglhJUJFUPZNk6ZtY2DGcYgc8Ho/7xV39oPebzeQO5JI+jwVHWoEHryQh+tDzgQ38oxoC8YEq3GASFdKWEZHry3XxRLIhyZp5GKctEqunJeHtzRs5giY6T/WeOUlaLYy5Mi56D/UyVgEjmYcQIBjRmAeE5Uhu+UeuAqaU1iVihcLxeE6pGzK8mHdFK0WXM+rKq1/R3WC49oeo6oysPaOckXAu+ZaNUX7BVP83GTeNtnrkkoivS/irH2LJlpaiGj/iooh8rFSJNGc21svQz0NBxNeNCOrcJ6iH+jaYQG9xUW+f55tX7dWKxBq3R+u2LnelVIu1g27ZNOcExsZegnB/6+XkmchwYEAtVF/OLNhxWmcgSNaT1HpKbdQj/BLDJPvwX5dP2ym5jkwYW4ntWxYGnw4WAqE7MF1TusHjI/zKGCWUneSAvkhRxOzXPJpD78G7XmYHLjp/DCs2tWRRXScHepRrpq1IRfGccX0YHAABRH/2erCWlyl71DKqeUxgdNXgGOQhcD5gGMQouZb+QrYL1lXWwVNP2NEHlClk2iU8sp15vOHXyGF8vqR11OCOzRfJNqp5iDN4v80AIFpqJTILVKNylWHngZhutAi55mPg/KjDRRMJkxBbQcD9Gcitvx/bP2mND+L9dZt3GfB5C2190C8uPHokV//5jyM8MMUKGJ8VnPsbELH4VijhTrANG7sPA+nnOtz6q1QVIYecNF1Tx/0M= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5591.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(54906003)(86362001)(52536014)(33656002)(38100700002)(2906002)(186003)(26005)(66556008)(64756008)(8936002)(38070700005)(66446008)(66476007)(76116006)(66946007)(6916009)(83380400001)(55016002)(71200400001)(6506007)(8676002)(82960400001)(7696005)(9686003)(30864003)(122000001)(5660300002)(53546011)(4326008)(316002)(508600001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VWU5Nk9OWTdUTXVVRnhienY0QVVCYzVWTEpIa1U4SFpZTGwvck5YT2NhSndU?= =?utf-8?B?b0tFbi8vclJlaDU1d1N5NkZIMis5TjdxNDlaSEVIdXc1NmpRSjdkenBjYkQy?= =?utf-8?B?MGNlQVBGV0wvYkQ2SXFneVZQYlZyT2pCVkdCWG04S0FUUkxRRDdTVWkydTlu?= =?utf-8?B?N0hMNmR5dUpMVk83QU92MTZ4N0h0di9ubXk4enZoQ3FHYVRJb3IwbWF1TTh4?= =?utf-8?B?dUJLMlFqN2NUL2lPYmF5VWVWL0J1djI0UEZGdWNGUWVieDVSSnZyM3Byd2V0?= =?utf-8?B?ckw3Ui9WbVNsWXVNWUkrVUhDbEtmRkZOZSs0Vm0wQXFnQW1NU3IwMlhMV1Jr?= =?utf-8?B?SGVhNlp0bU15L3MzMVlqOXpCeE1OcThDVjBOYVYxZ05VZmM0Q1UrQ2xqZjZy?= =?utf-8?B?MXY4dzB5ZHdNN3VMVHVHZkJmTGZWTHl3dWNkUitxZ2grMktHaTlOcUw2WUhO?= =?utf-8?B?MkRpNVNEVlZsb01WdVFxbDN2Q3dLUFByRFY5eUxnTVN5UENzdm8rNVBtbWoy?= =?utf-8?B?eXJuMFg0dmMzYWY1K0ZXT3FEN2VtMkl5L2tOcVhvTGV5NWZpd0t4ZGtHTjk0?= =?utf-8?B?NVVYeDRHSVloSDRqN2greVJlMHZ3SjhxVUZZODg4bm5jaVJaTzN2UGRYY3J0?= =?utf-8?B?YXp5NHJtTXRIeXptdjVuN2dUSDBhbEhveVVLNEltQUdzQkJTTVdwSWtBTFY4?= =?utf-8?B?NDFRVUs3V0ZUTll4VXRtOXoyaG1OdHRzQzhHbVNVUklpSGtPNXlVZ1VMMWdH?= =?utf-8?B?bVVJWFYza0VSSEJkZktVZG1HdnR5bTBkOExsTExGWkFyQzdyVFF6V0o4WmFF?= =?utf-8?B?cGFoOEMwVE1jaGtrS2xMaUc5VUR6Qzg3ZVdlZitUQkgxSTNPSDFsWmZ5SVgy?= =?utf-8?B?bEJEUVNWM1o0M1RJUkl5RkwxREs0QnVHaGl4S2FYQ3Y2UEFxYUlweWJoWjRa?= =?utf-8?B?K3lHY2tEb2RXVUN6N1YyM0NKZmtsdE9lNmlvdlYwSlZGOG1BdndaWCt3Q3VB?= =?utf-8?B?UEFiaU96cm0wOUZEaHM4RkpRS3VvaE42M1RaenZMdmlUV0Z4bFVRODhnaGN4?= =?utf-8?B?S1VjQ0k5bnFFeCtXcUlpYUxBaTZXY0JBNnpoRUM4Zm9neFBmSWsrUlFTN1Rm?= =?utf-8?B?bSswZjBITERob1RGSW1sQXArYU1YUnAyYzBxRTJmZm1pL0VqOHRCTkMweEtR?= =?utf-8?B?RWU0WnFHM1Fhcm1mNERzdFVlUHFzWnV1TXpsOEUzNmR1UysxcTlxUk9HVy9G?= =?utf-8?B?eUdBZ1p1ZjdiNmdlUnFQNE9kRGdKYVNybGtwRG8wcndRT3JVbWx3VWF5a2xV?= =?utf-8?B?SWZwZ3Q1T0Y2bGExZGZhNjdURnJFVVNIaVFic0dtZEE2UkdXME8rU2liNGsw?= =?utf-8?B?eVJmOXpYcVh3dlRuVEVXYm1SNEI2R2ZMbVB1elIwQ2F5OUo5d2ZUUW53QkVH?= =?utf-8?B?VFhxT2VDUGY2UmJkckgrOXhQWnFhMWRBdkRnYnN4elZVMTJ4dzZiUFRRV0k4?= =?utf-8?B?QWtKTnFxR1pIQmV0WFYyVzFkRDdFTjdSc2MrQk5mSkpOQSs5SldSSDVUQ0pX?= =?utf-8?B?ekxKczFGNHlVaEdQeDVXVVM0a3AzZUpzNEs2Mnd0WmM5THh3T1F1dmNqQ2Qv?= =?utf-8?B?bTVQSlk3SEcyV1NLMkQxVkdWRFVLckFYQTdTNUtPN0I3ekV5ZDdYQmNSSUp6?= =?utf-8?B?R3hJY3NRWFhQY2I1b1dpdmtmZmFWOVNuaVpsUWQ4aTd1azdvYjh5TGNlZnE4?= =?utf-8?Q?uQTJd4lhHJqycsyeSk=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5591.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 032b82c7-daf1-4e0b-6285-08d98ede5551 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2021 06:46:21.3552 (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: Rf3gzxKgT8t6cuRo4bSX6H8hqHet6wBvAR7vxdX2LAdsyOyM+OpHsHbNznLTECqpNNNWxrjGiRCJqlnvJPHufw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5669 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v9 1/3] Enable ASan for memory detector on DPDK X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBEYXZpZCBNYXJjaGFuZCA8ZGF2 aWQubWFyY2hhbmRAcmVkaGF0LmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE9jdG9iZXIgMTQsIDIw MjEgMTI6NDUgQU0NCj4gVG86IFBlbmcsIFpoaWhvbmdYIDx6aGlob25neC5wZW5nQGludGVsLmNv bT4NCj4gQ2M6IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+OyBB bmFueWV2LCBLb25zdGFudGluDQo+IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgU3Rl cGhlbiBIZW1taW5nZXINCj4gPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPjsgZGV2IDxkZXZA ZHBkay5vcmc+OyBMaW4sIFh1ZXFpbg0KPiA8eHVlcWluLmxpbkBpbnRlbC5jb20+OyBSaWNoYXJk c29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+Ow0KPiBUaG9tYXMgTW9uamFs b24gPHRob21hc0Btb25qYWxvbi5uZXQ+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjkgMS8zXSBF bmFibGUgQVNhbiBmb3IgbWVtb3J5IGRldGVjdG9yIG9uIERQREsNCj4gDQo+IE9uIFR1ZSwgT2N0 IDEyLCAyMDIxIGF0IDExOjU0IEFNIDx6aGlob25neC5wZW5nQGludGVsLmNvbT4gd3JvdGU6DQo+ ID4NCj4gPiBGcm9tOiBaaGlob25nIFBlbmcgPHpoaWhvbmd4LnBlbmdAaW50ZWwuY29tPg0KPiA+ DQo+ID4gYEFkZHJlc3NTYW5pdGl6ZXINCj4gPiA8aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9z YW5pdGl6ZXJzL3dpa2kvQWRkcmVzc1Nhbml0aXplcj5gIChBU2FuKQ0KPiA+IGlzIGEgd2lkZWx5 LXVzZWQgZGVidWdnaW5nIHRvb2wgdG8gZGV0ZWN0IG1lbW9yeSBhY2Nlc3MgZXJyb3JzLg0KPiA+ IEl0IGhlbHBzIGRldGVjdCBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSwgdmFyaW91cyBraW5k cyBvZiBidWZmZXINCj4gPiBvdmVycnVucyBpbiBDL0MrKyBwcm9ncmFtcywgYW5kIG90aGVyIHNp bWlsYXIgZXJyb3JzLCBhcyB3ZWxsIGFzDQo+ID4gcHJpbnRpbmcgb3V0IGRldGFpbGVkIGRlYnVn IGluZm9ybWF0aW9uIHdoZW5ldmVyIGFuIGVycm9yIGlzIGRldGVjdGVkLg0KPiA+DQo+IA0KPiAN Cj4gQ29tbWVudHMgYmVsb3cgY29uY2VybiBhZGRlZCBmZWF0dXJlIHdpdGggcGF0Y2ggMi4NCj4g RnJvbSBoZXJlLi4uDQo+IA0KPiA+IERQREsgQVNhbiBmdW5jdGlvbmFsaXR5IGlzIGN1cnJlbnRs eSBvbmx5IHN1cHBvcnRlZCBMaW51eCB4ODZfNjQuDQo+ID4gU3VwcG9ydCBvdGhlciBwbGF0Zm9y bXMsIG5lZWQgdG8gZGVmaW5lIEFTQU5fU0hBRE9XX09GRlNFVCB2YWx1ZQ0KPiA+IGFjY29yZGlu ZyB0byBnb29nbGUgQVNhbiBkb2N1bWVudCwgYW5kIGNvbmZpZ3VyZSBtZXNvbg0KPiA+IChjb25m aWcvbWVzb24uYnVpbGQpLg0KPiA+DQo+ID4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIGhlYXAtYnVm ZmVyLW92ZXJmbG93IGJ1ZzoNCj4gPiAgICAgICAgIC4uLi4uLg0KPiA+ICAgICAgICAgY2hhciAq cCA9IHJ0ZV96bWFsbG9jKE5VTEwsIDcsIDApOw0KPiA+ICAgICAgICAgcFs3XSA9ICdhJzsNCj4g PiAgICAgICAgIC4uLi4uLg0KPiA+DQo+ID4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzZS1hZnRl ci1mcmVlIGJ1ZzoNCj4gPiAgICAgICAgIC4uLi4uLg0KPiA+ICAgICAgICAgY2hhciAqcCA9IHJ0 ZV96bWFsbG9jKE5VTEwsIDcsIDApOw0KPiA+ICAgICAgICAgcnRlX2ZyZWUocCk7DQo+ID4gICAg ICAgICAqcCA9ICdhJzsNCj4gPiAgICAgICAgIC4uLi4uLg0KPiAuLi4gdG8gaGVyZS4NCj4gDQo+ IA0KPiA+DQo+ID4gV2UgY2FuIGVuYWJsZSBBU2FuIGJ5IGFkZGluZyBiZWxvdyBjb21waWxhdGlv biBvcHRpb25zOg0KPiA+IC1EYnVpbGR0eXBlPWRlYnVnIC1EYl9sdW5kZWY9ZmFsc2UgLURiX3Nh bml0aXplPWFkZHJlc3MNCj4gPiAiLURidWlsZHR5cGU9ZGVidWciOiBUaGlzIGlzIGEgbm9uLWVz c2VudGlhbCBvcHRpb24uIFdoZW4gdGhpcyBvcHRpb24NCj4gPiBpcyBhZGRlZCwgaWYgYSBtZW1v cnkgZXJyb3Igb2NjdXJzLCBBU2FuIGNhbiBjbGVhcmx5IHNob3cgd2hlcmUgdGhlDQo+ID4gY29k ZSBpcyB3cm9uZy4NCj4gPiAiLURiX2x1bmRlZj1mYWxzZSI6IFdoZW4gdXNlIGNsYW5nIHRvIGNv bXBpbGUgRFBESywgdGhpcyBvcHRpb24gbXVzdA0KPiA+IGJlIGFkZGVkLg0KPiA+DQo+ID4gU2ln bmVkLW9mZi1ieTogWHVlcWluIExpbiA8eHVlcWluLmxpbkBpbnRlbC5jb20+DQo+ID4gU2lnbmVk LW9mZi1ieTogWmhpaG9uZyBQZW5nIDx6aGlob25neC5wZW5nQGludGVsLmNvbT4NCj4gDQo+IA0K PiBNb3JlIHByb2JsZW1hdGljLCBsaW5raW5nIGFuIGV4dGVybmFsIChvdXQgb2YgbWVzb24pIGFw cGxpY2F0aW9uIHRvIGEgZHBkaw0KPiBjb21waWxlZCB3aXRoIEFTYW4gaXMgYnJva2VuLg0KPiAN Cj4gTXkgZW52aXJvbm1lbnQgY29udGFpbnMgZm9sbG93aW5nIHRhcmdldHMgY29tcGlsZWQgdXNp bmcNCj4gLi9kZXZ0b29scy90ZXN0LW1lc29uLWJ1aWxkcy5zaDoNCj4gJCBscyAkSE9NRS9idWls ZHMvDQo+IGJ1aWxkLWFybTY0LWJsdWVmaWVsZCAgYnVpbGQtYXJtNjQtaG9zdC1jbGFuZyAgYnVp bGQtY2xhbmctc2hhcmVkIGJ1aWxkLWdjYy0NCj4gc2hhcmVkICBidWlsZC1wcGM2NGxlLXBvd2Vy OCAgYnVpbGQteDg2LW1pbmd3DQo+IGJ1aWxkLWFybTY0LWRwYWEgICAgICAgYnVpbGQtYXJtNjQt b2N0ZW9udHgyICAgYnVpbGQtY2xhbmctc3RhdGljDQo+IGJ1aWxkLWdjYy1zdGF0aWMgIGJ1aWxk LXg4Ni1nZW5lcmljDQo+IA0KPiBJIHN0b3BwZWQgYXQgcGF0Y2ggMSwgY29uZmlndXJlZCBmb2xs b3dpbmcgdGFyZ2V0IHRvIGhhdmUgQVNhbiBpbiB0aGVtLCBsaWtlDQo+IHRoaXM6DQo+IA0KPiAk IG1lc29uIGNvbmZpZ3VyZSAkSE9NRS9idWlsZHMvYnVpbGQtZ2NjLXN0YXRpYyAtRGJfc2FuaXRp emU9YWRkcmVzcw0KPiAkIG1lc29uIGNvbmZpZ3VyZSAkSE9NRS9idWlsZHMvYnVpbGQtY2xhbmct c2hhcmVkIC1EYl9zYW5pdGl6ZT1hZGRyZXNzIC0NCj4gRGJfbHVuZGVmPWZhbHNlICQgbWVzb24g Y29uZmlndXJlICRIT01FL2J1aWxkcy9idWlsZC14ODYtZ2VuZXJpYyAtDQo+IERiX3Nhbml0aXpl PWFkZHJlc3MNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5e Xl5eDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSB0YXJnZXQg Zm9yIHdoaWNoIHdlIHRlc3QgbGlua2luZyBhIGRwZGsgYXBwbGljYXRpb24NCj4gb3V0IG9mIG1l c29uLg0KPiANCj4gJCBtZXNvbiBjb25maWd1cmUgJEhPTUUvYnVpbGRzL2J1aWxkLWFybTY0LWJs dWVmaWVsZCAtDQo+IERiX3Nhbml0aXplPWFkZHJlc3MNCg0KSSBkb24ndCBrbm93IHlvdXIgdGVz dCBwbGF0Zm9ybSAsIGFybSBvciB4ODYuDQoNClRoaXMgaXMgb3VyIGNvbXBpbGF0aW9uIGNvbW1h bmQ6DQpHY2MgaXMgOS4zLjAgb3IgMTAuMy4wDQpDQz1nY2MgbWVzb24gLURiX3Nhbml0aXplPWFk ZHJlc3MgeDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MNCm5pbmphIC1DIHg4Nl82NC1uYXRpdmUt bGludXhhcHAtZ2NjDQptZXNvbiBjb25maWd1cmUgLURleGFtcGxlcz1oZWxsb3dvcmxkIHg4Nl82 NC1uYXRpdmUtbGludXhhcHAtZ2NjDQpuaW5qYSAtQyB4ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdj YyANCg0KSSBkb27igJl0IGtub3cgaG93IHlvdSBnZXQgdGhpcyBwYXJhbWV0ZXIgICRIT01FL2J1 aWxkcy9idWlsZC14ODYtZ2VuZXJpYy4NCg0KQ2FuIHlvdSBzZW5kIG1lIGFsbCB5b3VyIGNvbmZp Z3VyYXRpb24sIEkgd2lsbCByZXByb2R1Y2UgdGhpcyBlcnJvciBpbiBvdXIgZW52aXJvbm1lbnQu DQoNClRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgaGVscCENCg0KPiBUaGVuIHJhbiB0aGUg Y2hlY2s6DQo+ICQgLi9kZXZ0b29scy90ZXN0LW1lc29uLWJ1aWxkcy5zaA0KPiAuLi4NCj4gLi4u DQo+IC4uLg0KPiAjIyBCdWlsZGluZyBjbWRsaW5lDQo+IC91c3IvYmluL2xkOiAvdXNyL2xpYjY0 L2xpYmFzYW4uc28uNjogd2FybmluZzogdGhlIHVzZSBvZiBgdG1wbmFtJyBpcw0KPiBkYW5nZXJv dXMsIGJldHRlciB1c2UgYG1rc3RlbXAnDQo+IC91c3IvYmluL2xkOiAvdXNyL2xpYjY0L2xpYmFz YW4uc28uNjogd2FybmluZzogdGhlIHVzZSBvZiBgdGVtcG5hbScgaXMNCj4gZGFuZ2Vyb3VzLCBi ZXR0ZXIgdXNlIGBta3N0ZW1wJw0KPiAvdXNyL2Jpbi9sZDogL3Vzci9saWI2NC9saWJhc2FuLnNv LjY6IHdhcm5pbmc6IHRoZSB1c2Ugb2YgYHRtcG5hbV9yJw0KPiBpcyBkYW5nZXJvdXMsIGJldHRl ciB1c2UgYG1rc3RlbXAnDQo+ICMjIEJ1aWxkaW5nIGhlbGxvd29ybGQNCj4gL3Vzci9iaW4vbGQ6 IC91c3IvbGliNjQvbGliYXNhbi5zby42OiB3YXJuaW5nOiB0aGUgdXNlIG9mIGB0bXBuYW0nIGlz DQo+IGRhbmdlcm91cywgYmV0dGVyIHVzZSBgbWtzdGVtcCcNCj4gL3Vzci9iaW4vbGQ6IC91c3Iv bGliNjQvbGliYXNhbi5zby42OiB3YXJuaW5nOiB0aGUgdXNlIG9mIGB0ZW1wbmFtJyBpcw0KPiBk YW5nZXJvdXMsIGJldHRlciB1c2UgYG1rc3RlbXAnDQo+IC91c3IvYmluL2xkOiAvdXNyL2xpYjY0 L2xpYmFzYW4uc28uNjogd2FybmluZzogdGhlIHVzZSBvZiBgdG1wbmFtX3InDQo+IGlzIGRhbmdl cm91cywgYmV0dGVyIHVzZSBgbWtzdGVtcCcNCj4gL3Vzci9iaW4vbGQ6IC9ob21lL2RtYXJjaGFu L2J1aWxkcy9idWlsZC14ODYtDQo+IGdlbmVyaWMvaW5zdGFsbC91c3IvbG9jYWwvbGliL2xpYnJ0 ZV9jb21tb25fZHBhYXguYShjb21tb25fZHBhYXhfZHBhYXgNCj4gX2lvdmFfdGFibGUuYy5vKToN Cj4gaW4gZnVuY3Rpb24gYHJlYWRfbWVtb3J5X25vZGUnOg0KPiAvaG9tZS9kbWFyY2hhbi9idWls ZHMvYnVpbGQteDg2LQ0KPiBnZW5lcmljLy4uLy4uL2RwZGsvZHJpdmVycy9jb21tb24vZHBhYXgv ZHBhYXhfaW92YV90YWJsZS5jOjU3Og0KPiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2FzYW5f b3B0aW9uX2RldGVjdF9zdGFja191c2VfYWZ0ZXJfcmV0dXJuJw0KPiAvdXNyL2Jpbi9sZDogL2hv bWUvZG1hcmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy8uLi8uLi9kcGRrL2RyaXZl cnMvY29tbW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUuYzo2NToNCj4gdW5kZWZpbmVkIHJlZmVy ZW5jZSB0byBgX19hc2FuX3JlcG9ydF9zdG9yZTQnDQo+IC91c3IvYmluL2xkOiAvaG9tZS9kbWFy Y2hhbi9idWlsZHMvYnVpbGQteDg2LQ0KPiBnZW5lcmljLy4uLy4uL2RwZGsvZHJpdmVycy9jb21t b24vZHBhYXgvZHBhYXhfaW92YV90YWJsZS5jOjYxOg0KPiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv IGBfX2FzYW5fcmVwb3J0X3N0b3JlX24nDQo+IC91c3IvYmluL2xkOiAvaG9tZS9kbWFyY2hhbi9i dWlsZHMvYnVpbGQteDg2LQ0KPiBnZW5lcmljLy4uLy4uL2RwZGsvZHJpdmVycy9jb21tb24vZHBh YXgvZHBhYXhfaW92YV90YWJsZS5jOjYwOg0KPiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2Fz YW5fcmVwb3J0X3N0b3JlX24nDQo+IC91c3IvYmluL2xkOiAvaG9tZS9kbWFyY2hhbi9idWlsZHMv YnVpbGQteDg2LQ0KPiBnZW5lcmljLy4uLy4uL2RwZGsvZHJpdmVycy9jb21tb24vZHBhYXgvZHBh YXhfaW92YV90YWJsZS5jOjU3Og0KPiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2FzYW5fc3Rh Y2tfbWFsbG9jXzMnDQo+IC91c3IvYmluL2xkOiAvaG9tZS9kbWFyY2hhbi9idWlsZHMvYnVpbGQt eDg2LQ0KPiBnZW5lcmljLy4uLy4uL2RwZGsvZHJpdmVycy9jb21tb24vZHBhYXgvZHBhYXhfaW92 YV90YWJsZS5jOjc3Og0KPiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2FzYW5fcmVwb3J0X2xv YWQ4Jw0KPiAvdXNyL2Jpbi9sZDogL2hvbWUvZG1hcmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4g Z2VuZXJpYy8uLi8uLi9kcGRrL2RyaXZlcnMvY29tbW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUu Yzo4NjoNCj4gdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19hc2FuX3JlcG9ydF9sb2FkOCcNCj4g L3Vzci9iaW4vbGQ6IC9ob21lL2RtYXJjaGFuL2J1aWxkcy9idWlsZC14ODYtDQo+IGdlbmVyaWMv Li4vLi4vZHBkay9kcml2ZXJzL2NvbW1vbi9kcGFheC9kcGFheF9pb3ZhX3RhYmxlLmM6ODY6DQo+ IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXNhbl9yZXBvcnRfbG9hZDgnDQo+IC91c3IvYmlu L2xkOiAvaG9tZS9kbWFyY2hhbi9idWlsZHMvYnVpbGQteDg2LQ0KPiBnZW5lcmljLy4uLy4uL2Rw ZGsvZHJpdmVycy9jb21tb24vZHBhYXgvZHBhYXhfaW92YV90YWJsZS5jOjg4Og0KPiB1bmRlZmlu ZWQgcmVmZXJlbmNlIHRvIGBfX2FzYW5fcmVwb3J0X2xvYWQ4Jw0KPiAvdXNyL2Jpbi9sZDogL2hv bWUvZG1hcmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy8uLi8uLi9kcGRrL2RyaXZl cnMvY29tbW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUuYzo4ODoNCj4gdW5kZWZpbmVkIHJlZmVy ZW5jZSB0byBgX19hc2FuX3JlcG9ydF9sb2FkOCcNCj4gL3Vzci9iaW4vbGQ6IC9ob21lL2RtYXJj aGFuL2J1aWxkcy9idWlsZC14ODYtDQo+IGdlbmVyaWMvaW5zdGFsbC91c3IvbG9jYWwvbGliL2xp YnJ0ZV9jb21tb25fZHBhYXguYShjb21tb25fZHBhYXhfZHBhYXgNCj4gX2lvdmFfdGFibGUuYy5v KTovaG9tZS9kbWFyY2hhbi9idWlsZHMvYnVpbGQteDg2LQ0KPiBnZW5lcmljLy4uLy4uL2RwZGsv ZHJpdmVycy9jb21tb24vZHBhYXgvZHBhYXhfaW92YV90YWJsZS5jOjEwMjoNCj4gbW9yZSB1bmRl ZmluZWQgcmVmZXJlbmNlcyB0byBgX19hc2FuX3JlcG9ydF9sb2FkOCcgZm9sbG93DQo+IC91c3Iv YmluL2xkOiAvaG9tZS9kbWFyY2hhbi9idWlsZHMvYnVpbGQteDg2LQ0KPiBnZW5lcmljL2luc3Rh bGwvdXNyL2xvY2FsL2xpYi9saWJydGVfY29tbW9uX2RwYWF4LmEoY29tbW9uX2RwYWF4X2RwYWF4 DQo+IF9pb3ZhX3RhYmxlLmMubyk6DQo+IGluIGZ1bmN0aW9uIGByZWFkX21lbW9yeV9ub2RlJzoN Cj4gL2hvbWUvZG1hcmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy8uLi8uLi9kcGRr L2RyaXZlcnMvY29tbW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUuYzoxMTk6DQo+IHVuZGVmaW5l ZCByZWZlcmVuY2UgdG8gYF9fYXNhbl9yZXBvcnRfc3RvcmU0Jw0KPiAvdXNyL2Jpbi9sZDogL2hv bWUvZG1hcmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy8uLi8uLi9kcGRrL2RyaXZl cnMvY29tbW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUuYzoxNDU6DQo+IHVuZGVmaW5lZCByZWZl cmVuY2UgdG8gYF9fYXNhbl9yZXBvcnRfbG9hZDE2Jw0KPiAvdXNyL2Jpbi9sZDogL2hvbWUvZG1h cmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy8uLi8uLi9kcGRrL2RyaXZlcnMvY29t bW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUuYzoxMzU6DQo+IHVuZGVmaW5lZCByZWZlcmVuY2Ug dG8gYF9fYXNhbl9yZXBvcnRfc3RvcmVfbicNCj4gL3Vzci9iaW4vbGQ6IC9ob21lL2RtYXJjaGFu L2J1aWxkcy9idWlsZC14ODYtDQo+IGdlbmVyaWMvLi4vLi4vZHBkay9kcml2ZXJzL2NvbW1vbi9k cGFheC9kcGFheF9pb3ZhX3RhYmxlLmM6MTQzOg0KPiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBf X2FzYW5fcmVwb3J0X2xvYWQ4Jw0KPiAvdXNyL2Jpbi9sZDogL2hvbWUvZG1hcmNoYW4vYnVpbGRz L2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy9pbnN0YWxsL3Vzci9sb2NhbC9saWIvbGlicnRlX2NvbW1v bl9kcGFheC5hKGNvbW1vbl9kcGFheF9kcGFheA0KPiBfaW92YV90YWJsZS5jLm8pOg0KPiBpbiBm dW5jdGlvbiBgcm90YXRlXzgnOg0KPiAvaG9tZS9kbWFyY2hhbi9idWlsZHMvYnVpbGQteDg2LQ0K PiBnZW5lcmljLy4uLy4uL2RwZGsvZHJpdmVycy9jb21tb24vZHBhYXgvZHBhYXhfaW92YV90YWJs ZS5jOjQwOg0KPiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2FzYW5fcmVwb3J0X3N0b3JlNCcN Cj4gL3Vzci9iaW4vbGQ6IC9ob21lL2RtYXJjaGFuL2J1aWxkcy9idWlsZC14ODYtDQo+IGdlbmVy aWMvLi4vLi4vZHBkay9kcml2ZXJzL2NvbW1vbi9kcGFheC9kcGFheF9pb3ZhX3RhYmxlLmM6Mzk6 DQo+IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXNhbl9yZXBvcnRfc3RvcmU0Jw0KPiAvdXNy L2Jpbi9sZDogL2hvbWUvZG1hcmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy8uLi8u Li9kcGRrL2RyaXZlcnMvY29tbW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUuYzo0MDoNCj4gdW5k ZWZpbmVkIHJlZmVyZW5jZSB0byBgX19hc2FuX3JlcG9ydF9zdG9yZTQnDQo+IC91c3IvYmluL2xk OiAvaG9tZS9kbWFyY2hhbi9idWlsZHMvYnVpbGQteDg2LQ0KPiBnZW5lcmljL2luc3RhbGwvdXNy L2xvY2FsL2xpYi9saWJydGVfY29tbW9uX2RwYWF4LmEoY29tbW9uX2RwYWF4X2RwYWF4DQo+IF9p b3ZhX3RhYmxlLmMubyk6DQo+IGluIGZ1bmN0aW9uIGByZWFkX21lbW9yeV9ub2RlJzoNCj4gL2hv bWUvZG1hcmNoYW4vYnVpbGRzL2J1aWxkLXg4Ni0NCj4gZ2VuZXJpYy8uLi8uLi9kcGRrL2RyaXZl cnMvY29tbW9uL2RwYWF4L2RwYWF4X2lvdmFfdGFibGUuYzoxNDM6DQo+IHVuZGVmaW5lZCByZWZl cmVuY2UgdG8gYF9fYXNhbl9yZXBvcnRfbG9hZDgnDQo+ICpmbG9vZCBvZiBlcnJvcnMgYWJvdXQg dW5kZWZpbmVkIHN5bWJvbHMgZnJvbSBsaWJhc2FuKg0KPiANCj4gDQo+IFRyaWVkIHRvIGRlYnVn LCBpbi10cmVlIGNvbXBpbGVkIHRlc3RwbWQgc2hvd3M6DQo+ICQgcmVhZGVsZiAtZCAkSE9NRS9i dWlsZHMvYnVpbGQteDg2LWdlbmVyaWMvYXBwL2RwZGstdGVzdHBtZCB8IGdyZXAgYXNhbg0KPiAg MHgwMDAwMDAwMDAwMDAwMDAxIChORUVERUQpICAgICAgICAgICAgIFNoYXJlZCBsaWJyYXJ5OiBb bGliYXNhbi5zby42XQ0KPiBCdXQgSSBzZWUgbm90aGluZyBpbiBuaW5qYToNCj4gJCBncmVwIC1p IGFzYW4gJEhPTUUvYnVpbGRzL2J1aWxkLXg4Ni1nZW5lcmljL2J1aWxkLm5pbmphDQo+IA0KPiBB bmQgZm9yIGV4dGVybmFsIGxpbmssIGxvb2tpbmcgYXQgYW4gImluc3RhbGxlZCIgLnBjOg0KPiAk IFBLR19DT05GSUdfUEFUSD0vaG9tZS9kbWFyY2hhbi9idWlsZHMvYnVpbGQteDg2LQ0KPiBnZW5l cmljL2luc3RhbGwvdXNyL2xvY2FsL2xpYi9wa2djb25maWcNCj4gcGtnLWNvbmZpZyBsaWJkcGRr IC0tbGlicyB8IGdyZXAgYXNhbg0KPiANCj4gDQo+IA0KPiBTb21lIG1vcmUgY29tbWVudHMgYWJv dXQgc3BsaXR0aW5nIGRvYyB3aXRoIHBhdGNoMjoNCj4gDQo+IA0KPiA+IC0tLQ0KPiA+IHY3OiAx KSBTcGxpdCBkb2MgYW5kIGNvZGUgaW50byB0d28uDQo+ID4gICAgIDIpIE1vZGlmeSBhc2FuLnJz dCBkb2MNCj4gPiB2ODogTm8gY2hhbmdlLg0KPiA+IHY5OiAxKSBBZGQgdGhlIGNoZWNrIG9mIGxp YmFzYW4gbGlicmFyeS4NCj4gPiAgICAgMikgQWRkIHJlbGVhc2Ugbm90ZXMuDQo+ID4gLS0tDQo+ ID4gIGNvbmZpZy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrDQo+ID4g IGRldnRvb2xzL3dvcmRzLWNhc2UudHh0ICAgICAgICAgICAgICAgIHwgIDEgKw0KPiA+ICBkb2Mv Z3VpZGVzL3Byb2dfZ3VpZGUvYXNhbi5yc3QgICAgICAgICB8IDk3DQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrDQo+ID4gIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9pbmRleC5yc3QgICAgICAg IHwgIDEgKw0KPiA+ICBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJzdCB8ICA5 ICsrKw0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDExOCBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvYXNhbi5yc3QNCj4gPg0KPiA+IGRp ZmYgLS1naXQgYS9jb25maWcvbWVzb24uYnVpbGQgYi9jb25maWcvbWVzb24uYnVpbGQgaW5kZXgN Cj4gPiA0Y2RmNTg5ZTIwLi41MTcwYjc5ZmVkIDEwMDY0NA0KPiA+IC0tLSBhL2NvbmZpZy9tZXNv bi5idWlsZA0KPiA+ICsrKyBiL2NvbmZpZy9tZXNvbi5idWlsZA0KPiA+IEBAIC00MTEsNiArNDEx LDE2IEBAIGlmIGdldF9vcHRpb24oJ2JfbHRvJykNCj4gPiAgICAgIGVuZGlmDQo+ID4gIGVuZGlm DQo+ID4NCj4gPiAraWYgZ2V0X29wdGlvbignYl9zYW5pdGl6ZScpID09ICdhZGRyZXNzJw0KPiA+ ICsgICAgaWYgY2MuZ2V0X2lkKCkgPT0gJ2djYycNCj4gPiArICAgICAgICBhc2FuX2RlcCA9IGNj LmZpbmRfbGlicmFyeSgnYXNhbicsIHJlcXVpcmVkOiB0cnVlKQ0KPiA+ICsgICAgICAgIGlmIChu b3QgY2MubGlua3MoJ2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsgcmV0dXJuIDA7 IH0nLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llczogYXNhbl9kZXApKQ0K PiA+ICsgICAgICAgICAgICBlcnJvcignYnJva2VuIGRlcGVuZGVuY3ksICJsaWJhc2FuIicpDQo+ ID4gKyAgICAgICAgZW5kaWYNCj4gPiArICAgIGVuZGlmDQo+ID4gK2VuZGlmDQo+ID4gKw0KPiA+ ICBpZiBnZXRfb3B0aW9uKCdkZWZhdWx0X2xpYnJhcnknKSA9PSAnYm90aCcNCj4gPiAgICAgIGVy cm9yKCAnJycNCj4gPiAgIFVuc3VwcG9ydGVkIHZhbHVlICJib3RoIiBmb3IgImRlZmF1bHRfbGli cmFyeSIgb3B0aW9uLg0KPiA+IGRpZmYgLS1naXQgYS9kZXZ0b29scy93b3Jkcy1jYXNlLnR4dCBi L2RldnRvb2xzL3dvcmRzLWNhc2UudHh0IGluZGV4DQo+ID4gMGJiYWQ0ODYyNi4uYWRhNjkxMGZh MCAxMDA2NDQNCj4gPiAtLS0gYS9kZXZ0b29scy93b3Jkcy1jYXNlLnR4dA0KPiA+ICsrKyBiL2Rl dnRvb2xzL3dvcmRzLWNhc2UudHh0DQo+ID4gQEAgLTUsNiArNSw3IEBAIEFQSQ0KPiA+ICBBcm0N Cj4gPiAgYXJtdjcNCj4gPiAgYXJtdjgNCj4gPiArQVNhbg0KPiA+ICBCQVINCj4gPiAgQ1JDDQo+ ID4gIERDQg0KPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvYXNhbi5yc3QN Cj4gPiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9hc2FuLnJzdCBuZXcgZmlsZSBtb2RlIDEwMDY0 NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLjYyNzY3NWVmNDYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2FzYW4ucnN0DQo+ID4gQEAgLTAsMCArMSw5 NyBAQA0KPiA+ICsuLiBDb3B5cmlnaHQgKGMpIDwyMDIxPiwgSW50ZWwgQ29ycG9yYXRpb24NCj4g PiArICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArDQo+ID4gK01lbW9yeSBlcnJvciBkZXRl Y3Qgc3RhbmRhcmQgdG9vbCAtIEFkZHJlc3NTYW5pdGl6ZXIoQVNhbikNCj4gPg0KPiArPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID0N Cj4gPiArDQo+ID4gK2BBZGRyZXNzU2FuaXRpemVyDQo+ID4gKzxodHRwczovL2dpdGh1Yi5jb20v Z29vZ2xlL3Nhbml0aXplcnMvd2lraS9BZGRyZXNzU2FuaXRpemVyPmAgKEFTYW4pDQo+ID4gK2lz IGEgd2lkZWx5LXVzZWQgZGVidWdnaW5nIHRvb2wgdG8gZGV0ZWN0IG1lbW9yeSBhY2Nlc3MgZXJy b3JzLg0KPiA+ICtJdCBoZWxwcyBkZXRlY3QgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUsIHZh cmlvdXMga2luZHMgb2YgYnVmZmVyDQo+ID4gK292ZXJydW5zIGluIEMvQysrIHByb2dyYW1zLCBh bmQgb3RoZXIgc2ltaWxhciBlcnJvcnMsIGFzIHdlbGwgYXMNCj4gPiArcHJpbnRpbmcgb3V0IGRl dGFpbGVkIGRlYnVnIGluZm9ybWF0aW9uIHdoZW5ldmVyIGFuIGVycm9yIGlzIGRldGVjdGVkLg0K PiA+ICsNCj4gPiArQWRkcmVzc1Nhbml0aXplciBpcyBhIHBhcnQgb2YgTExWTSAoMy4xKykgYW5k IEdDQyAoNC44KykuDQo+IA0KPiBTYW1lIHByb2JsZW0sIGJlbG93IHNob3VsZCBiZSBpbiBwYXRj aCAyLCBmcm9tIGhlcmUuLi4NCj4gDQo+IA0KPiA+ICsNCj4gPiArRFBESyBBU2FuIGZ1bmN0aW9u YWxpdHkgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIExpbnV4IHg4Nl82NC4NCj4gPiArU3Vw cG9ydCBvdGhlciBwbGF0Zm9ybXMsIG5lZWQgdG8gZGVmaW5lIEFTQU5fU0hBRE9XX09GRlNFVCB2 YWx1ZQ0KPiA+ICthY2NvcmRpbmcgdG8gZ29vZ2xlIEFTYW4gZG9jdW1lbnQsIGFuZCBjb25maWd1 cmUgbWVzb24NCj4gPiArKGNvbmZpZy9tZXNvbi5idWlsZCkuDQo+ID4gKw0KPiA+ICtFeGFtcGxl IGhlYXAtYnVmZmVyLW92ZXJmbG93IGVycm9yDQo+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gPiArDQo+ID4gK0ZvbGxvd2luZyBlcnJvciB3YXMgcmVwb3J0ZWQgd2hl biBBU2FuIHdhcyBlbmFibGVkOjoNCj4gPiArDQo+ID4gKyAgICBBcHBsaWVkIDkgYnl0ZXMgb2Yg bWVtb3J5LCBidXQgYWNjZXNzZWQgdGhlIDEwdGggYnl0ZSBvZiBtZW1vcnksDQo+ID4gKyAgICBz byBoZWFwLWJ1ZmZlci1vdmVyZmxvdyBhcHBlYXJlZC4NCj4gPiArDQo+ID4gK0JlbG93IGNvZGUg cmVzdWx0cyBpbiB0aGlzIGVycm9yOjoNCj4gPiArDQo+ID4gKyAgICBBZGQgY29kZSB0byBoZWxs b3dvcmxkOg0KPiA+ICsgICAgY2hhciAqcCA9IHJ0ZV96bWFsbG9jKE5VTEwsIDksIDApOw0KPiA+ ICsgICAgaWYgKCFwKSB7DQo+ID4gKyAgICAgICAgcHJpbnRmKCJydGVfem1hbGxvYyBlcnJvci4i KTsNCj4gPiArICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBwWzldID0g J2EnOw0KPiA+ICsNCj4gPiArVGhlIGVycm9yIGxvZzo6DQo+ID4gKw0KPiA+ICsgICAgPT0zNjk5 NTM9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBoZWFwLWJ1ZmZlci1vdmVyZmxvdyBvbiBhZGRy ZXNzDQo+IDB4N2ZiMTdmNDY1ODA5IGF0IHBjIDB4NTY1MmU2NzA3Yjg0IGJwIDB4N2ZmZWE3MGVl YTIwIHNwIDB4N2ZmZWE3MGVlYTEwDQo+IFdSSVRFIG9mIHNpemUgMSBhdCAweDdmYjE3ZjQ2NTgw OSB0aHJlYWQgVDANCj4gPiArICAgICMwIDB4NTY1MmU2NzA3YjgzIGluIG1haW4gLi4vZXhhbXBs ZXMvaGVsbG93b3JsZC9tYWluLmM6NDcNCj4gPiArICAgICMxIDB4N2ZiOTQ5NTNjMGIyIGluIF9f bGliY19zdGFydF9tYWluICgvbGliL3g4Nl82NC1saW51eC0NCj4gZ251L2xpYmMuc28uNisweDI3 MGIyKQ0KPiA+ICsgICAgIzIgMHg1NjUyZTY3MDc5YmQgaW4gX3N0YXJ0DQo+ID4gKyAoL2hvbWUv cHpoL2FzYW5fdGVzdC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9leGFtcGxlcy9kcGRrLQ0K PiBoZWxsb3cNCj4gPiArIG9ybGQrMHg4MzI5YmQpDQo+ID4gKw0KPiA+ICsgICAgQWRkcmVzcyAw eDdmYjE3ZjQ2NTgwOSBpcyBhIHdpbGQgcG9pbnRlci4NCj4gPiArICAgIFNVTU1BUlk6IEFkZHJl c3NTYW5pdGl6ZXI6IGhlYXAtYnVmZmVyLW92ZXJmbG93DQo+ID4gKyAuLi9leGFtcGxlcy9oZWxs b3dvcmxkL21haW4uYzo0NyBpbiBtYWluDQo+ID4gKw0KPiA+ICtFeGFtcGxlIHVzZS1hZnRlci1m cmVlIGVycm9yDQo+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArDQo+ID4g K0ZvbGxvd2luZyBlcnJvciB3YXMgcmVwb3J0ZWQgd2hlbiBBU2FuIHdhcyBlbmFibGVkOjoNCj4g PiArDQo+ID4gKyAgICBBcHBsaWVkIGZvciA5IGJ5dGVzIG9mIG1lbW9yeSwgYW5kIGFjY2Vzc2Vk IHRoZSBmaXJzdCBieXRlIGFmdGVyDQo+ID4gKyAgICByZWxlYXNlZCwgc28gaGVhcC11c2UtYWZ0 ZXItZnJlZSBhcHBlYXJlZC4NCj4gPiArDQo+ID4gK0JlbG93IGNvZGUgcmVzdWx0cyBpbiB0aGlz IGVycm9yOjoNCj4gPiArDQo+ID4gKyAgICBBZGQgY29kZSB0byBoZWxsb3dvcmxkOg0KPiA+ICsg ICAgY2hhciAqcCA9IHJ0ZV96bWFsbG9jKE5VTEwsIDksIDApOw0KPiA+ICsgICAgaWYgKCFwKSB7 DQo+ID4gKyAgICAgICAgcHJpbnRmKCJydGVfem1hbGxvYyBlcnJvci4iKTsNCj4gPiArICAgICAg ICByZXR1cm4gLTE7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBydGVfZnJlZShwKTsNCj4gPiArICAg ICpwID0gJ2EnOw0KPiA+ICsNCj4gPiArVGhlIGVycm9yIGxvZzo6DQo+ID4gKw0KPiA+ICsgICAg PT00MTcwNDg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBoZWFwLXVzZS1hZnRlci1mcmVlIG9u IGFkZHJlc3MNCj4gMHg3ZmM4M2Y0NjU4MDAgYXQgcGMgMHg1NjQzMDhhMzliODkgYnAgMHg3ZmZj OGM4NWJmNTAgc3AgMHg3ZmZjOGM4NWJmNDANCj4gV1JJVEUgb2Ygc2l6ZSAxIGF0IDB4N2ZjODNm NDY1ODAwIHRocmVhZCBUMA0KPiA+ICsgICAgIzAgMHg1NjQzMDhhMzliODggaW4gbWFpbiAuLi9l eGFtcGxlcy9oZWxsb3dvcmxkL21haW4uYzo0OA0KPiA+ICsgICAgIzEgMHg3ZmQwMDc5YzYwYjIg aW4gX19saWJjX3N0YXJ0X21haW4gKC9saWIveDg2XzY0LWxpbnV4LQ0KPiBnbnUvbGliYy5zby42 KzB4MjcwYjIpDQo+ID4gKyAgICAjMiAweDU2NDMwOGEzOTliZCBpbiBfc3RhcnQNCj4gPiArICgv aG9tZS9wemgvYXNhbl90ZXN0L3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjL2V4YW1wbGVzL2Rw ZGstDQo+IGhlbGxvdw0KPiA+ICsgb3JsZCsweDgzMjliZCkNCj4gPiArDQo+ID4gKyAgICBBZGRy ZXNzIDB4N2ZjODNmNDY1ODAwIGlzIGEgd2lsZCBwb2ludGVyLg0KPiA+ICsgICAgU1VNTUFSWTog QWRkcmVzc1Nhbml0aXplcjogaGVhcC11c2UtYWZ0ZXItZnJlZQ0KPiA+ICsgLi4vZXhhbXBsZXMv aGVsbG93b3JsZC9tYWluLmM6NDggaW4gbWFpbg0KPiANCj4gLi4uIHRpbGwgaGVyZS4NCj4gDQo+ IA0KPiA+ICsNCj4gPiArVXNhZ2UNCj4gPiArLS0tLS0NCj4gPiArDQo+ID4gK21lc29uIGJ1aWxk DQo+ID4gK15eXl5eXl5eXl5eDQo+ID4gKw0KPiA+ICtUbyBlbmFibGUgQVNhbiBpbiBtZXNvbiBi dWlsZCBzeXN0ZW0sIHVzZSBmb2xsb3dpbmcgbWVzb24gYnVpbGQNCj4gY29tbWFuZDoNCj4gPiAr DQo+ID4gK0V4YW1wbGUgdXNhZ2U6Og0KPiA+ICsNCj4gPiArIG1lc29uIGJ1aWxkIC1EYnVpbGR0 eXBlPWRlYnVnIC1EYl9sdW5kZWY9ZmFsc2UgLURiX3Nhbml0aXplPWFkZHJlc3MNCj4gDQo+IGxf dW5kZWYgdW5uZWNlc3NhcnkgZm9yIGdjYy4NCj4gDQo+IA0KPiA+ICsgbmluamEgLUMgYnVpbGQN Cj4gPiArDQo+ID4gKy4uIE5vdGU6Og0KPiA+ICsNCj4gPiArICBhKSBTb21lIG9mIHRoZSBmZWF0 dXJlcyBvZiBBU2FuIChmb3IgZXhhbXBsZSwgJ0Rpc3BsYXkgbWVtb3J5DQo+IGFwcGxpY2F0aW9u IGxvY2F0aW9uLCBjdXJyZW50bHkNCj4gPiArICAgICBkaXNwbGF5ZWQgYXMgYSB3aWxkIHBvaW50 ZXInKSBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgRFBESydzDQo+IGltcGxlbWVudGF0 aW9uLg0KPiANCj4gVGhpcyBjb21tZW50IHNob3VsZCBiZSBpbiBwYXRjaCAyLCB0aGVyZSBpcyBu b3RoaW5nIHNwZWNpZmljIGluIHBhdGNoDQo+IDEgYWJvdXQgRFBESyB3cnQgQVNhbi4NCj4gDQo+ IA0KPiA+ICsgIGIpIERQREsgdGVzdCBoYXMgYmVlbiBjb21wbGV0ZWQgaW4NCj4gdWJ1bnR1MTgu MDQvdWJ1bnR1MjAuMDQvcmVkaGF0OC4zLiBUbyBjb21waWxlIHdpdGggZ2NjIGluDQo+ID4gKyAg ICAgY2VudG9zLCBsaWJhc2FuIG5lZWRzIHRvIGJlIGluc3RhbGxlZCBzZXBhcmF0ZWx5Lg0KPiA+ ICsgIGMpIElmIHRoZSBwcm9ncmFtIHVzZXMgY21kbGluZSwgd2hlbiBhIG1lbW9yeSBidWcgb2Nj dXJzLCBuZWVkIHRvDQo+IGV4ZWN1dGUgdGhlICJzdHR5IGVjaG8iIGNvbW1hbmQuDQo+ID4gZGlm ZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9pbmRleC5yc3QNCj4gPiBiL2RvYy9ndWlk ZXMvcHJvZ19ndWlkZS9pbmRleC5yc3QgaW5kZXggMmRjZTUwN2Y0Ni4uZGY4YTRiOTNlMSAxMDA2 NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvaW5kZXgucnN0DQo+ID4gKysrIGIv ZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2luZGV4LnJzdA0KPiA+IEBAIC03MSwzICs3MSw0IEBAIFBy b2dyYW1tZXIncyBHdWlkZQ0KPiA+ICAgICAgbHRvDQo+ID4gICAgICBwcm9maWxlX2FwcA0KPiA+ ICAgICAgZ2xvc3NhcnkNCj4gPiArICAgIGFzYW4NCj4gPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRl cy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8xMS5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvcmVsX25vdGVz L3JlbGVhc2VfMjFfMTEucnN0DQo+ID4gaW5kZXggNTAzNjY0MTg0Mi4uNThjNjM3NzE0OCAxMDA2 NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJzdA0KPiA+ ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjFfMTEucnN0DQo+ID4gQEAgLTE0 MSw2ICsxNDEsMTUgQEAgTmV3IEZlYXR1cmVzDQo+ID4gICAgKiBBZGRlZCB0ZXN0cyB0byB2YWxp ZGF0ZSBwYWNrZXRzIGhhcmQgZXhwaXJ5Lg0KPiA+ICAgICogQWRkZWQgdGVzdHMgdG8gdmVyaWZ5 IHR1bm5lbCBoZWFkZXIgdmVyaWZpY2F0aW9uIGluIElQc2VjIGluYm91bmQuDQo+ID4NCj4gPiAr KiAqKkVuYWJsZSBBU2FuIGZvciBtZW1vcnkgZGV0ZWN0b3Igb24gRFBESy4qKg0KPiA+ICsNCj4g PiArICBgQWRkcmVzc1Nhbml0aXplcg0KPiA+ICsgIDxodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xl L3Nhbml0aXplcnMvd2lraS9BZGRyZXNzU2FuaXRpemVyPmANCj4gPiArIChBU2FuKSAgaXMgYSB3 aWRlbHktdXNlZCBkZWJ1Z2dpbmcgdG9vbCB0byBkZXRlY3QgbWVtb3J5IGFjY2VzcyBlcnJvcnMu DQo+ID4gKyAgSXQgaGVscHMgZGV0ZWN0IGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlLCB2YXJp b3VzIGtpbmRzIG9mIGJ1ZmZlcg0KPiA+ICsgb3ZlcnJ1bnMgaW4gQy9DKysgcHJvZ3JhbXMsIGFu ZCBvdGhlciBzaW1pbGFyIGVycm9ycywgYXMgd2VsbCBhcw0KPiA+ICsgcHJpbnRpbmcgb3V0IGRl dGFpbGVkIGRlYnVnIGluZm9ybWF0aW9uIHdoZW5ldmVyIGFuIGVycm9yIGlzIGRldGVjdGVkLg0K PiA+ICsNCj4gPg0KPiA+ICBSZW1vdmVkIEl0ZW1zDQo+ID4gIC0tLS0tLS0tLS0tLS0NCj4gPiAt LQ0KPiA+IDIuMjUuMQ0KPiA+DQo+IA0KPiANCj4gLS0NCj4gRGF2aWQgTWFyY2hhbmQNCg0K