From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by sourceware.org (Postfix) with ESMTPS id 5E4533857365 for ; Wed, 26 Oct 2022 11:38:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5E4533857365 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666784333; x=1698320333; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=RFTfvpOjogGWJjWgBQorQGasLT4YhfV2bcEjLdyWPm4=; b=MZNfvcs8JtYiSOR+5IUvzt3uO3+s7VwhnpKhsh4ElvK+okQiPeU9RiSb qKzLC6IZe3rCpaKvvUqBaE/gTEmsAJiJU1Yt8LQfq3a42nGq/rJxees7D QmU2lUeBX21jJescr4seRt7uEoa9J+CS9gJ4VHkKjej9fjjf7fa85ffHT 538qAm+US4cWXU7bdzN1fvcCGJWe+G9nTpg24rDyCLnu2sObpLeZP3zNx SfPWIXeUAT9d/xyTKWNwHCFAjXQ5EF+f3u/y9lwmG+iyuyWVU7nORbV4r bHs1XFIdKrqITUsK39zOjg7IFon6XMNCnqG0lRfpFqS/Hh8CH0+GCP7Pt w==; X-IronPort-AV: E=McAfee;i="6500,9779,10511"; a="334539394" X-IronPort-AV: E=Sophos;i="5.95,214,1661842800"; d="scan'208";a="334539394" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Oct 2022 04:38:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10511"; a="721216458" X-IronPort-AV: E=Sophos;i="5.95,214,1661842800"; d="scan'208";a="721216458" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 26 Oct 2022 04:38:44 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) 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.2375.31; Wed, 26 Oct 2022 04:38:44 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 26 Oct 2022 04:38:44 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.49) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Wed, 26 Oct 2022 04:38:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C8ypCkxW0x7uz1Gp4wftIMZQ4wm209xc89S4lVO29Vr98iSe2XOfk4OFDmSCF10UHEfFye2twM9zIvTphdwNL/0eJ5n7mrhU1etqi+5vUWhw59aAfdwfjESBqFC2N3dAa5SLk6i2WSjASp+OAVigPpTJfQ6Z0kYEiInYRBlD7FoF8hP2yk4Zdy8AP+Dw7S1cRQ/ef8Epn2z8qk42fhU1r8mvwJ9LrP0N1DhCHfB+VpxR1tPStrUuP5skxDT9+Jwppe4Byn8YvtF2tVeYnAv6bY0DRfXJiDXrXhC9qGRR4Dg1bNwHs363/J+tzNJZK2qP6jZ76wsfHZ/Ca3gCDl1QRQ== 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=RFTfvpOjogGWJjWgBQorQGasLT4YhfV2bcEjLdyWPm4=; b=bMamuXPmVBSz0gmPgmwYGK6lSFDFF+c28OdBVGSIlYstWQiCx7hsVC2IEwgMy3cFvwGeADNzcv9Qe44DAByVUOkC4DlA09rRvwQPOlanPhBbeTVA3eJw1RyO3PVHx/aTs0NOm+dQ7zUqavGpEETETCazaOSklxwwaXIh0yu/xMmjgnWGvJAlPizInFBm6vpNp7HZCGOFikwjeF7T3Gx3TFr3VkWsR0Wq+UuIkQ9LQIHOoNwbfxGvPcVChmT+TFMpQ7LQhTyEQGHriI5wdwq64E9QYQMLbcaOj+D5g2O1Dgf5PdTnuzt+9BZk/Jn5CoLsWgAXoLLFlXMQNWEvc1AE+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 Received: from SJ0PR11MB5600.namprd11.prod.outlook.com (2603:10b6:a03:3ab::16) by DM4PR11MB5440.namprd11.prod.outlook.com (2603:10b6:5:39c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.28; Wed, 26 Oct 2022 11:38:41 +0000 Received: from SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::ab0c:3707:53c9:656b]) by SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::ab0c:3707:53c9:656b%9]) with mapi id 15.20.5746.027; Wed, 26 Oct 2022 11:38:41 +0000 From: "Cui, Lili" To: Richard Biener , Hongtao Liu CC: =?utf-8?B?TWFydGluIExpxaFrYQ==?= , "gcc-patches@gcc.gnu.org" , "Liu, Hongtao" Subject: RE: [PATCH] ix86: Suggest unroll factor for loop vectorization Thread-Topic: [PATCH] ix86: Suggest unroll factor for loop vectorization Thread-Index: AQHY51L+3l2p7nykHUCCwPwoV54lMK4enG+AgABl0ICAAYtqIA== Date: Wed, 26 Oct 2022 11:38:41 +0000 Message-ID: References: <20221024024604.18324-1-lili.cui@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5600:EE_|DM4PR11MB5440:EE_ x-ms-office365-filtering-correlation-id: fe41121f-2736-4b1a-2848-08dab746a1e8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cSIwmy21f7MGOzm8iA86mXdsa4BZteLTQRE2CFY+2BHqdeYutNBfx9NDSu+WW+eAQ5uoZLePEsFMDDcm0x6sHKIZtdkJV1xqek0DuOsjJjzDAXZu0tPked5r/FsynjfSDuIwLWIch9nJVF44vRPNI7MY8G4MBZPoI6jncfTksvHPME+oM63Y9x7iORzVBkrMvxE3FQMAkAecC7UDDiI+KDXcFbqMOtmJn46F8sOBSBwC0IVTXL0CXaZvTRpb1W5iePApT5gT3M7ivBbI5jjq0LyfXyr0SSJxbkcXuGTQE+Qevfz8fADzsuwP8d52pOPAiFi2but8SRR84NAOasggJTpG1AmGwCfI3BA8Unm52slt2JCb8B5hVYLtQYVk+olKrAy2unzo+q1e0It5ZSsPhKphB7tk3n0wEdrtAtUyAujVxPhVPnUTb69DsHijPTjRxegdaw+M+g0hLwZaDjBBMp1UKGHX31qb13dw3znAmIqjWKBspCbATdRTD+HDgkIaVWUcP0EGCOhfOR+RQphQLBQB42n1HLR9D4jZuw2sryLY17kntktv7OpQpHcuJe2acyOWfp4x9yIoXDYfvLyatPNfkycMyVDIE5rxcRz7e+E4i4DrADBG5pt506sC6u9wDGrt3fOippigO4bY3YKnQvF0G1dl5aGTVh0onqRN36ZaKznVEnvZzBG3XK0HgUcg3MGKxgpVHAxSaDZ23B9/Jg9wvQXnc8e/NRbxeRi9Ok1mxWVS1hZtoDMd+XeThfJRjYTfifm3B3HmlHhHgmlrmvjOtRFYVWBqOT2C16J58Po= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5600.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(136003)(396003)(346002)(366004)(376002)(451199015)(84970400001)(4326008)(82960400001)(33656002)(41300700001)(8936002)(186003)(71200400001)(8676002)(66476007)(76116006)(66556008)(38100700002)(64756008)(66446008)(122000001)(66946007)(38070700005)(86362001)(30864003)(2906002)(55016003)(83380400001)(316002)(52536014)(54906003)(110136005)(5660300002)(478600001)(7696005)(26005)(53546011)(6506007)(9686003)(107886003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dndXUUxrNDdxa2F2L0R2ZkhWYVl5amxGYTViRUtrdXV2bnRZVDRPVHNZdkd5?= =?utf-8?B?Uk1KSGY0QUxXWitTT05wcWNjR2lrMTlaRUwzVDhZdDc1NkxNcERkUVhISHpj?= =?utf-8?B?TXUyZmo0T050b3FnYVh3clJsNS9yTEt0VWlJU1duL2dlbjFBQ0FNNnUvV2FJ?= =?utf-8?B?WllTRWlIbEVXdHBQZTR2ZklsQng0byt0UTA3NXJyc0NmZU91M3BzeG1tYnJy?= =?utf-8?B?QmcvMlpoTEhWR3c2c1RvdGRPdFVGQ1I5RjQwRXF0VUNNLzA5K3F3RVdDSWsz?= =?utf-8?B?RDNLSUJ0NUpZMXdJVUVyNDl6RHFzaVdURFgxMVVGVU5DWWo5TUtyb1hWSkNR?= =?utf-8?B?OEEyZUFZWHlnaXZOakE5eHhkeHdyTnVkM3FIdVhDSWloaG1HcnJuM2tCVXVD?= =?utf-8?B?R1grcTIrWU1kQmZQaHNzRVdFUHVxUVZDQWdqZ3ZpemIwTGxzY1dEVE5GZnhQ?= =?utf-8?B?cG5pcTZ2K29FSFJ2ZGVkem1KT3IzTXJSMVF2U25UK0tsVVpvMHJxMVNsTERp?= =?utf-8?B?bmxNSUZpNzUyTEE5czIvbmRvMEJEMWJxbHZXZkk5Y0lJRmk2dHZMZ2R5U0l6?= =?utf-8?B?TUdiV0lvMnRTZlN1MnRLdEJLandxL2tMTUlYQ0UrZ1JLL0ZCenhaa2lac284?= =?utf-8?B?Mk1zRjVvOWMwMzhWQkNsRHVrNXNpaTRGSWNuUko0ZCtvc3RyVmxTMUJuendP?= =?utf-8?B?a1dQU3BTcG5PcHFYU1M0VGQ1dkdMVnIxSjZQazRvL0JhYWV2VnY3dG5TZE1S?= =?utf-8?B?ZVZtWTk0RDA3QlhFbnhBQy9tLzZtRDBVbnFkV0IxZVRxVzl5bjZ5YlpucTNv?= =?utf-8?B?MXVZVFZ1VDNXR3l3blRkL3p3UWpINnRCNE81N1R0UmNkaWdQNU1YMllyZ3BV?= =?utf-8?B?Y04wWUo4TzV1SVVBUWxqV3B4U1RjVFgvbXM5cXV0RHJ3QUttbUUxYzg0NGpP?= =?utf-8?B?VC80R2JhMU5RR3BEWmhnUStFWG9LZWNkMnRPUld4S0UzTlRDc3JIMWZLazNr?= =?utf-8?B?WWlwaXJwdnhUVERvN1pYbmovYTM2SXRrMVZTNStOMk9DbGwvSzJoYjdsOTRN?= =?utf-8?B?bEVZa1dxZ0NaRWErekFVQ2JpWnlMM1dmSjlsS3hDdFpaY0R0ZmdzRDlzOGMx?= =?utf-8?B?TU1CdkVkbVdyZHcrUmxid09zQnZxSmJSLzhVQUpxcWQrRzFCUEFkWWw4YVdS?= =?utf-8?B?b0tmbnJPa3Ivb0xnV1RnRHZEcWhJdG0vUEJTY1hON1VqV1FJRmtudUtDei9s?= =?utf-8?B?UnRzWTVSVmUxd2NyQjBwbXlxV3gyZU56TUtiNy9ldFJGYm1YeWRKVWhIOVRW?= =?utf-8?B?VU1vamZjUVRoYWx1dUh2MlM3NVVSdFBaczVGdU93ME1qNlJCQ1ByRzNYaE0v?= =?utf-8?B?c2lUb1c3Z0U1T0ZHb3lLQWVjVlFGRFBhbDFyVkpkUVBxNTVsWXh1RU43LzJG?= =?utf-8?B?dGlTV1lMUy9Ba29ML3dNcWZsbnM1VWVoYlVEU3JPbVFKTFNzOHJGaXh2R1Vn?= =?utf-8?B?cVMrVWhCSEhpL3p0MTFFdThTNkdadjBYa0JDdi82cUVKUUN1WFo4RWlidGxt?= =?utf-8?B?NTZuOStUUDMwSDVKQ3M4MXlESzB3cGcxWGdVbzhueE1kVGk2ZXR5VGlTUTBi?= =?utf-8?B?bGpLME95T0cyeFhKRVo2NnIvQ2c5cVpjaHRmM05MQ3lId1JwRUliYWNVejZ5?= =?utf-8?B?dkwrQmZIZCt3UFZ5RmI0WmpFa1BFUW96MklIc2twaHVCZG9YdW44eDNZMEI1?= =?utf-8?B?MGZWaklDQm9NY2hiZERHS2lsKzR5b0FVZWVPVTVWV0RpVWdlSG9ac2pkaFB3?= =?utf-8?B?N0dXbitVY1VRcVJKOWJ4c05qelFrYVlqN3NPOUZERi93R25TMmlBQjhlVS9H?= =?utf-8?B?NmxYb204cGd0OWNtbWVRMWJTWmI0YWJwa3VYa3Z1VnJBWE5jYkpzaUtGNmI3?= =?utf-8?B?U0IzcG9iZ3hYU1lMeklRaERVejE2RGJwdW4rWTVRdXA1Nk4zcWdxeGViQXg0?= =?utf-8?B?b2R3ZDNhQ2hUQ3E3TWdXQTZ0bGdGdC9WUmY5MGNtQlVqZWlvQ0tzUzN3bnll?= =?utf-8?B?bTVCTTBVSzlxTXpOTEo1bWg4T1pqUGgvMC9VRzNkb1NzWllxS0MrOVUzNHVs?= =?utf-8?Q?s1RSiSEQcLy1xCpbHEacn95Q/?= 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: SJ0PR11MB5600.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe41121f-2736-4b1a-2848-08dab746a1e8 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Oct 2022 11:38:41.7818 (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: jnSq3KqgSOIFaUMXTWXAM3LF1ujQZyfZ5qBpIetgxH7DgOtn57s3ptXJCXqkZu5nJaPCiLK862+p8w6plJCf+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5440 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: SGkgUmljaGFyZCwNCg0KPiArQGl0ZW0geDg2LXZlY3QtdW5yb2xsLW1pbi1sZHN0LXRocmVzaG9s ZA0KPiArVGhlIHZlY3Rvcml6ZXIgd2lsbCBjaGVjayB3aXRoIHRhcmdldCBpbmZvcm1hdGlvbiB0 byBkZXRlcm1pbmUgd2hldGhlcg0KPiArdW5yb2xsIGl0LiBUaGlzIHBhcmFtZXRlciBpcyB1c2Vk IHRvIGxpbWl0IHRoZSBtaW5pbnVtIG9mIGxvYWRzIGFuZA0KPiArc3RvcmVzIGluIHRoZSBtYWlu IGxvb3AuDQo+IA0KPiBJdCdzIG9kZCB0byAibGltaXQiIHRoZSBtaW5pbXVtIG51bWJlciBvZiBz b21ldGhpbmcuICBJIHRoaW5rIHRoaXMgd2FycmFudHMNCj4gY2xhcmlmaWNhdGlvbiB0aGF0IGZv ciBzb21lICh1bmtub3cgdG8gbWUgOykpIHJlYXNvbiB3ZSB0aGluayB0aGF0IHdoZW4gd2UNCj4g aGF2ZSBtYW55IGxvYWRzIGFuZCAob3I/KSBzdG9yZXMgaXQgaXMgYmVuZWZpY2lhbCB0byB1bnJv bGwgdG8gZ2V0IGV2ZW4gbW9yZQ0KPiBsb2FkcyBhbmQgc3RvcmVzIGluIGEgc2luZ2xlIGl0ZXJh dGlvbi4gIEJ0dywgZG9lcyB0aGUgcGFyYW1ldGVyIGxpbWl0IHRoZQ0KPiBudW1iZXIgb2YgbG9h ZHMgYW5kIHN0b3JlcyBfYWZ0ZXJfIHVucm9sbGluZyBvciBiZWZvcmU/DQo+IA0KV2hlbiB0aGUg bnVtYmVyIG9mIGxvYWRzL3N0b3JlcyBleGNlZWRzIHRoZSB0aHJlc2hvbGQsIHRoZSBsb2Fkcy9z dG9yZXMgYXJlIG1vcmUgbGlrZWx5IHRvIGNvbmZsaWN0IHdpdGggbG9vcCBpdHNlbGYgaW4gdGhl IEwxIGNhY2hlKEFzc3VtaW5nIHRoYXQgYWRkcmVzcyBvZiBsb2FkcyBhcmUgc2NhdHRlcmVkKS4N ClVucm9sbCArIHNvZnR3YXJlIHNjaGVkdWxpbmcgd2lsbCBtYWtlIDIgb3IgNCBhZGRyZXNzIGNv bnRpZ3VvdXMgbG9hZHMvc3RvcmVzIGNsb3NlciB0b2dldGhlciwgaXQgd2lsbCByZWR1Y2UgY2Fj aGUgbWlzcyByYXRlLg0KDQo+ICtAaXRlbSB4ODYtdmVjdC11bnJvbGwtbWF4LWxvb3Atc2l6ZQ0K PiArVGhlIHZlY3Rvcml6ZXIgd2lsbCBjaGVjayB3aXRoIHRhcmdldCBpbmZvcm1hdGlvbiB0byBk ZXRlcm1pbmUgd2hldGhlcg0KPiArdW5yb2xsIGl0LiBUaGlzIHRocmVzaG9sZCBpcyB1c2VkIHRv IGxpbWl0IHRoZSBtYXggc2l6ZSBvZiBsb29wIGJvZHkgYWZ0ZXINCj4gdW5yb2xsaW5nLg0KPiAr VGhlIGRlZmF1bHQgdmFsdWUgaXMgMjAwLg0KPiANCj4gaXQgc2hvdWxkIHByb2JhYmx5IHNheSBu b3QgInNpemUiIGJ1dCAibnVtYmVyIG9mIGluc3RydWN0aW9ucyIuICBOb3RlIHRoYXQgMjAwDQo+ IGlzIHF1aXRlIGxhcmdlIGdpdmVuIHdlIGFyZSB0YWxraW5nIGFib3V0IHZlY3RvciBpbnN0cnVj dGlvbnMgaGVyZSB3aGljaCBoYXZlDQo+IGxhcmdlciBlbmNvZGluZ3MgdGhhbiBzY2FsYXIgaW5z dHJ1Y3Rpb25zLiAgT3B0aW1pc3RpY2FsbHkgYXNzdW1pbmcNCj4gNCBieXRlIGVuY29kaW5nIChx dWl0ZSBvcHRpbWlzdGljIGdpdmUgd2UncmUgbG9va2luZyBhdCBsb29wcyB3aXRoIG1hbnkNCj4g bG9hZHMvc3RvcmVzKSB0aGF0IHdvdWxkIGJlIGFuIDgwMCBieXRlIGxvb3AgYm9keSB3aGljaCB3 b3VsZCBiZSAyNSBjYWNoZQ0KPiBsaW5lcy4NCj4gSVNUUiB0aGF0IGF0IGxlYXN0IHRoZSBsb29w IGRpc2NvdmVyeSBpcyBsaW1pdGVkIHRvIGEgbG90IHNtYWxsZXIgY2FzZXMgKGJ1dCB3ZQ0KPiBh cmUgbGlrZWx5IG5vdCB0YXJnZXRpbmcgdGhhdCkuICBUaGUgbGltaXQgcHJvYmFibHkgc3RpbGwg d29ya3MgdG8gZml0IHRoZSBsb29wDQo+IGJvZHkgaW4gdGhlIHUtb3AgY2FjaGVzIHRob3VnaC4N Cj4gDQpBZ3JlZSB3aXRoIHlvdSwgaXQgc2hvdWxkIGJlICJ4ODYtdmVjdC11bnJvbGwtbWF4LWxv b3AtaW5zbnMiLiBUaGFua3MgZm9yIHRoZSByZW1pbmRlciBhYm91dCBsYXJnZXIgZW5jb2Rpbmdz LCBJIGNoZWNrZWQgdGhlIHNreWxha2UgdW9wIGNhY2hlLCBpdCBjYW4gaG9sZCAxLjVrIHVPUHMs IDIwMCAqIDIgKDF+MyB1b3BzL2luc3RydWN0aW9uKSA9IDQwMCB1b3BzLiBJIHRoaW5rIDIwMCBz dGlsbCB3b3JrLg0KDQo+IFRoYXQgc2FpZCwgdGhlIGhldXJpc3RpYyBtYWRlIG1lIHRoaW5rICJ3 aGF0IHRoZSBoZWNrIi4gIENhbiB3ZSBleHBsYWluIGluIHUtDQo+IGFyY2ggdGVybXMgd2h5IHRo ZSB1bnJvbGxpbmcgaXMgYmVuZWZpY2lhbCBpbnN0ZWFkIG9mIGp1c3QgZGVmZXJpbmcgdG8gU1BF Qw0KPiBDUFUgMjAxNyBmb3RvbmlrPw0KPiANClJlZ2FyZGluZyB0aGUgYmVuZWZpdHMsICBJIGV4 cGxhaW5lZCBpbiB0aGUgZmlyc3QgYW5zd2VyLCBJIGNoZWNrZWQgNSBob3R0ZXN0IGZ1bmN0aW9u cyBpbiB0aGUgNTQ5LCB0aGV5IGFsbCBiZW5lZml0IGZyb20gaXQsIGl0IGltcHJvdmVzIHRoZSBj YWNoZSBoaXQgcmF0aW8uDQoNClRoYW5rcywNCkxpbGkuDQoNCj4gPiBPbiBNb24sIE9jdCAyNCwg MjAyMiBhdCAxMDo0NiBBTSBDdWksTGlsaSB2aWEgR2NjLXBhdGNoZXMNCj4gPiA8Z2NjLXBhdGNo ZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiA+ID4NCj4gPiA+IEhpIEhvbmd0YW8sDQo+ID4gPg0K PiA+ID4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uIGZpbmlzaF9jb3N0IGFuZA0KPiA+ ID4gZGV0ZXJtaW5lX3N1Z2dlc3RlZF91bnJvbGxfZmFjdG9yIGZvciB4ODYgYmFja2VuZCwgdG8g bWFrZSBpdCBiZQ0KPiA+ID4gYWJsZSB0byBzdWdnZXN0IHRoZSB1bnJvbGwgZmFjdG9yIGZvciBh IGdpdmVuIGxvb3AgYmVpbmcgdmVjdG9yaXplZC4NCj4gPiA+IFJlZmVycmluZyB0byBhYXJjaDY0 LCBSUzYwMDAgYmFja2VuZHMgYW5kIGJhc2luZyBvbiB0aGUgYW5hbHlzaXMgb24NCj4gPiA+IFNQ RUMyMDE3IHBlcmZvcm1hbmNlIGV2YWx1YXRpb24gcmVzdWx0cy4NCj4gPiA+DQo+ID4gPiBTdWNj ZXNzZnVsbHkgYm9vdHN0cmFwcGVkICYgcmVncnRlc3RlZCBvbiB4ODZfNjQtcGMtbGludXgtZ251 Lg0KPiA+ID4NCj4gPiA+IE9LIGZvciB0cnVuaz8NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ IFdpdGggdGhpcyBwYXRjaCwgU1BFQzIwMTcgcGVyZm9ybWFuY2UgZXZhbHVhdGlvbiByZXN1bHRz IG9uDQo+ID4gPiBJQ1gvQ0xYL0FETC9abnZlcjMgYXJlIGxpc3RlZCBiZWxvdzoNCj4gPiA+DQo+ ID4gPiBGb3Igc2luZ2xlIGNvcHk6DQo+ID4gPiAgIC0gSUNYOiA1NDkuZm90b25pazNkX3IgKzYu MiUsIHRoZSBvdGhlcnMgYXJlIG5ldXRyYWwNCj4gPiA+ICAgLSBDTFg6IDU0OS5mb3RvbmlrM2Rf ciArMS45JSwgdGhlIG90aGVycyBhcmUgbmV1dHJhbA0KPiA+ID4gICAtIEFETDogNTQ5LmZvdG9u aWszZF9yICs0LjUlLCB0aGUgb3RoZXJzIGFyZSBuZXV0cmFsDQo+ID4gPiAgIC0gWm52ZXIzOiA1 NDkuZm90b25pazNkX3IgKzQuOCUsIHRoZSBvdGhlcnMgYXJlIG5ldXRyYWwNCj4gPiA+DQo+ID4g PiBGb3IgbXVsdGktY29weToNCj4gPiA+ICAgLSBBREw6IDU0OS5mb3RvbmlrM2RfciArMi43JSwg dGhlIG90aGVycyBhcmUgbmV1dHJhbA0KPiA+ID4NCj4gPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4g Pg0KPiA+ID4gICAgICAgICAqIGNvbmZpZy9pMzg2L2kzODYuY2MgKGNsYXNzIGl4ODZfdmVjdG9y X2Nvc3RzKTogQWRkIG5ldyBtZW1iZXJzDQo+ID4gPiAgICAgICAgICBtX25zdG10cywgbV9ubG9h ZHMgbV9uc3RvcmVzIGFuZA0KPiBkZXRlcm1pbmVfc3VnZ2VzdGVkX3Vucm9sbF9mYWN0b3IuDQo+ ID4gPiAgICAgICAgIChpeDg2X3ZlY3Rvcl9jb3N0czo6YWRkX3N0bXRfY29zdCk6IFVwZGF0ZSBm b3IgbV9uc3RvcmVzLA0KPiBtX25sb2Fkcw0KPiA+ID4gICAgICAgICBhbmQgbV9uc3RvcmVzLg0K PiA+ID4gICAgICAgICAoaXg4Nl92ZWN0b3JfY29zdHM6OmRldGVybWluZV9zdWdnZXN0ZWRfdW5y b2xsX2ZhY3Rvcik6IE5ldw0KPiBmdW5jdGlvbi4NCj4gPiA+ICAgICAgICAgKGl4ODZfdmVjdG9y X2Nvc3RzOjpmaW5pc2hfY29zdCk6IERpaXRvLg0KPiA+ID4gICAgICAgICAqIGNvbmZpZy9pMzg2 L2kzODYub3B0Oih4ODYtdmVjdC11bnJvbGwtbGltaXQpOiBOZXcgcGFyYW1ldGVyLg0KPiA+ID4g ICAgICAgICAoeDg2LXZlY3QtdW5yb2xsLW1pbi1sZHN0LXRocmVzaG9sZCk6IExpa2V3aXNlLg0K PiA+ID4gICAgICAgICAoeDg2LXZlY3QtdW5yb2xsLW1heC1sb29wLXNpemUpOiBMaWtld2lzZS4N Cj4gPiA+ICAgICAgICAgKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyBwYXJhbWV0ZXIu DQo+ID4gPg0KPiA+ID4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4gPg0KPiA+ID4gICAg ICAgICAqIGdjYy50YXJnZXQvaTM4Ni9jb25kX29wX21heG1pbl9iLTEuYzogQWRkIC1mbm8tdW5y b2xsLWxvb3BzLg0KPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9jb25kX29wX21heG1p bl91Yi0xLmM6IERpdHRvLg0KPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni92ZWN0LWFs aWdubWVudC1wZWVsaW5nLTEuYzogRGl0dG8uDQo+ID4gPiAgICAgICAgICogZ2NjLnRhcmdldC9p Mzg2L3ZlY3QtYWxpZ25tZW50LXBlZWxpbmctMi5jOiBEaXR0by4NCj4gPiA+ICAgICAgICAgKiBn Y2MudGFyZ2V0L2kzODYvdmVjdC1yZWR1Yy0xLmM6IERpdHRvLg0KPiA+ID4gLS0tDQo+ID4gPiAg Z2NjL2NvbmZpZy9pMzg2L2kzODYuY2MgICAgICAgICAgICAgICAgICAgICAgIHwgMTA2ICsrKysr KysrKysrKysrKysrKw0KPiA+ID4gIGdjYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCAgICAgICAgICAg ICAgICAgICAgICB8ICAxNSArKysNCj4gPiA+ICBnY2MvZG9jL2ludm9rZS50ZXhpICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMTcgKysrDQo+ID4gPiAgLi4uL2djYy50YXJnZXQvaTM4Ni9j b25kX29wX21heG1pbl9iLTEuYyAgICAgIHwgICAyICstDQo+ID4gPiAgLi4uL2djYy50YXJnZXQv aTM4Ni9jb25kX29wX21heG1pbl91Yi0xLmMgICAgIHwgICAyICstDQo+ID4gPiAgLi4uL2kzODYv dmVjdC1hbGlnbm1lbnQtcGVlbGluZy0xLmMgICAgICAgICAgIHwgICAyICstDQo+ID4gPiAgLi4u L2kzODYvdmVjdC1hbGlnbm1lbnQtcGVlbGluZy0yLmMgICAgICAgICAgIHwgICAyICstDQo+ID4g PiAgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvdmVjdC1yZWR1Yy0xLmMgIHwgICAyICst DQo+ID4gPiAgOCBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMo LSkNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuY2MgYi9n Y2MvY29uZmlnL2kzODYvaTM4Ni5jYyBpbmRleA0KPiA+ID4gYWVlYTI2ZWY0YmUuLmE5MzkzNTRl NTVlIDEwMDY0NA0KPiA+ID4gLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuY2MNCj4gPiA+ICsr KyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmNjDQo+ID4gPiBAQCAtMjMzMzYsNiArMjMzMzYsMTcg QEAgY2xhc3MgaXg4Nl92ZWN0b3JfY29zdHMgOiBwdWJsaWMgdmVjdG9yX2Nvc3RzDQo+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywgc2xw X3RyZWUgbm9kZSwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUgdmVj dHlwZSwgaW50IG1pc2FsaWduLA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmVjdF9jb3N0X21vZGVsX2xvY2F0aW9uIHdoZXJlKQ0KPiA+ID4gb3ZlcnJpZGU7DQo+ID4gPiAr DQo+ID4gPiArICB1bnNpZ25lZCBpbnQgZGV0ZXJtaW5lX3N1Z2dlc3RlZF91bnJvbGxfZmFjdG9y IChsb29wX3ZlY19pbmZvKTsNCj4gPiA+ICsNCj4gPiA+ICsgIHZvaWQgZmluaXNoX2Nvc3QgKGNv bnN0IHZlY3Rvcl9jb3N0cyAqKSBvdmVycmlkZTsNCj4gPiA+ICsNCj4gPiA+ICsgIC8qIFRvdGFs IG51bWJlciBvZiB2ZWN0b3JpemVkIHN0bXRzIChsb29wIG9ubHkpLiAgKi8gIHVuc2lnbmVkDQo+ ID4gPiArIG1fbnN0bXRzID0gMDsNCj4gPiA+ICsgIC8qIFRvdGFsIG51bWJlciBvZiBsb2FkcyAo bG9vcCBvbmx5KS4gICovICB1bnNpZ25lZCBtX25sb2FkcyA9IDA7DQo+ID4gPiArICAvKiBUb3Rh bCBudW1iZXIgb2Ygc3RvcmVzIChsb29wIG9ubHkpLiAgKi8gIHVuc2lnbmVkIG1fbnN0b3JlcyA9 DQo+ID4gPiArIDA7DQo+ID4gPiAgfTsNCj4gPiA+DQo+ID4gPiAgLyogSW1wbGVtZW50IHRhcmdl dG0udmVjdG9yaXplLmNyZWF0ZV9jb3N0cy4gICovDQo+ID4gPiBAQCAtMjM1NzksNiArMjM1OTAs MTkgQEAgaXg4Nl92ZWN0b3JfY29zdHM6OmFkZF9zdG10X2Nvc3QgKGludCBjb3VudCwNCj4gdmVj dF9jb3N0X2Zvcl9zdG10IGtpbmQsDQo+ID4gPiAgICAgICAgIHJldHZhbCA9IChyZXR2YWwgKiAx NykgLyAxMDsNCj4gPiA+ICAgICAgfQ0KPiA+ID4NCj4gPiA+ICsgIGlmICghbV9jb3N0aW5nX2Zv cl9zY2FsYXINCj4gPiA+ICsgICAgICAmJiBpc19hPGxvb3BfdmVjX2luZm8+IChtX3ZpbmZvKQ0K PiA+ID4gKyAgICAgICYmIHdoZXJlID09IHZlY3RfYm9keSkNCj4gPiA+ICsgICAgew0KPiA+ID4g KyAgICAgIG1fbnN0bXRzICs9IGNvdW50Ow0KPiA+ID4gKyAgICAgIGlmIChraW5kID09IHNjYWxh cl9sb2FkIHx8IGtpbmQgPT0gdmVjdG9yX2xvYWQNCj4gPiA+ICsgICAgICAgICB8fCBraW5kID09 IHVuYWxpZ25lZF9sb2FkIHx8IGtpbmQgPT0gdmVjdG9yX2dhdGhlcl9sb2FkKQ0KPiA+ID4gKyAg ICAgICBtX25sb2FkcyArPSBjb3VudDsNCj4gPiA+ICsgICAgICBlbHNlIGlmIChraW5kID09IHNj YWxhcl9zdG9yZSB8fCBraW5kID09IHZlY3Rvcl9zdG9yZQ0KPiA+ID4gKyAgICAgICAgICAgICAg fHwga2luZCA9PSB1bmFsaWduZWRfc3RvcmUgfHwga2luZCA9PSB2ZWN0b3Jfc2NhdHRlcl9zdG9y ZSkNCj4gPiA+ICsgICAgICAgbV9uc3RvcmVzICs9IGNvdW50Ow0KPiA+ID4gKyAgICB9DQo+ID4g PiArDQo+ID4gPiAgICBtX2Nvc3RzW3doZXJlXSArPSByZXR2YWw7DQo+ID4gPg0KPiA+ID4gICAg cmV0dXJuIHJldHZhbDsNCj4gPiA+IEBAIC0yMzg1MCw2ICsyMzg3NCw4OCBAQCBpeDg2X2xvb3Bf dW5yb2xsX2FkanVzdCAodW5zaWduZWQgbnVucm9sbCwNCj4gY2xhc3MgbG9vcCAqbG9vcCkNCj4g PiA+ICAgIHJldHVybiBudW5yb2xsOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiArdW5zaWduZWQg aW50DQo+ID4gPiAraXg4Nl92ZWN0b3JfY29zdHM6OmRldGVybWluZV9zdWdnZXN0ZWRfdW5yb2xs X2ZhY3RvciAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IGNsYXNzIGxvb3AgKmxvb3AgPSBMT09QX1ZJTkZPX0xPT1AgKGxvb3BfdmluZm8pOw0KPiA+ID4g Kw0KPiA+ID4gKyAgLyogRG9uJ3QgdW5yb2xsIGlmIGl0J3Mgc3BlY2lmaWVkIGV4cGxpY2l0bHkg bm90IHRvIGJlIHVucm9sbGVkLiAgKi8NCj4gPiA+ICsgIGlmIChsb29wLT51bnJvbGwgPT0gMQ0K PiA+ID4gKyAgICAgIHx8IChPUFRJT05fU0VUX1AgKGZsYWdfdW5yb2xsX2xvb3BzKSAmJiAhZmxh Z191bnJvbGxfbG9vcHMpDQo+ID4gPiArICAgICAgfHwgKE9QVElPTl9TRVRfUCAoZmxhZ191bnJv bGxfYWxsX2xvb3BzKSAmJiAhZmxhZ191bnJvbGxfYWxsX2xvb3BzKSkNCj4gPiA+ICsgICAgcmV0 dXJuIDE7DQo+ID4gPiArDQo+ID4gPiArICAvKiBEb24ndCB1bnJvbGwgaWYgdGhlcmUgaXMgbm8g dmVjdG9yaXplZCBzdG10LiAgKi8NCj4gPiA+ICsgIGlmIChtX25zdG10cyA9PSAwKQ0KPiA+ID4g KyAgICByZXR1cm4gMTsNCj4gPiA+ICsNCj4gPiA+ICsgIC8qIERvbid0IHVucm9sbCBpZiB2ZWN0 b3Igc2l6ZSBpcyB6bW0sIHNpbmNlIHptbSB0aHJvdWdocHV0IGlzIGxvd2VyDQo+IHRoYW4gb3Ro ZXINCj4gPiA+ICsgICAgIHNpemVzLiAgKi8NCj4gPiA+ICsgIGlmIChHRVRfTU9ERV9TSVpFIChs b29wX3ZpbmZvLT52ZWN0b3JfbW9kZSkgPT0gNjQpDQo+ID4gPiArICAgIHJldHVybiAxOw0KPiA+ ID4gKw0KPiA+ID4gKyAgLyogQ2FsYyB0aGUgdG90YWwgbnVtYmVyIG9mIGxvYWRzIGFuZCBzdG9y ZXMgaW4gdGhlIGxvb3AgYm9keS4gICovDQo+ID4gPiArICB1bnNpZ25lZCBpbnQgbnN0bXRzX2xk c3QgPSBtX25sb2FkcyArIG1fbnN0b3JlczsNCj4gPiA+ICsNCj4gPiA+ICsgIC8qIERvbid0IHVu cm9sbCBpZiBsb29wIGJvZHkgc2l6ZSBiaWcgdGhhbiB0aHJlc2hvbGQsIHRoZSB0aHJlc2hvbGQN Cj4gPiA+ICsgICAgIGlzIGEgaGV1cmlzdGljIHZhbHVlIGluc3BpcmVkIGJ5IHBhcmFtX21heF91 bnJvbGxlZF9pbnNucy4gICovDQo+ID4gPiArICB1bnNpZ25lZCBpbnQgdWYgPSBtX25zdG10cyA8 ICh1bnNpZ25lZA0KPiBpbnQpeDg2X3ZlY3RfdW5yb2xsX21heF9sb29wX3NpemUNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgPyAoKHVuc2lnbmVkIGludCl4ODZfdmVjdF91bnJvbGxfbWF4X2xv b3Bfc2l6ZSAvIG1fbnN0bXRzKQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICA6IDE7DQo+ID4g PiArICB1ZiA9IE1JTiAoKHVuc2lnbmVkIGludCl4ODZfdmVjdF91bnJvbGxfbGltaXQsIHVmKTsN Cj4gPiA+ICsgIHVmID0gMSA8PCBjZWlsX2xvZzIgKHVmKTsNCj4gPiA+ICsNCj4gPiA+ICsgIC8q IEVhcmx5IHJldHVybiBpZiBkb24ndCBuZWVkIHRvIHVucm9sbC4gICovDQo+ID4gPiArICBpZiAo dWYgPT0gMSkNCj4gPiA+ICsgICAgcmV0dXJuIDE7DQo+ID4gPiArDQo+ID4gPiArICAvKiBJbnNw aXJlZCBieSBTUEVDMjAxNyBmb3RvbmlrM2Rfciwgd2Ugd2FudCB0byBhZ2dyZXNzaXZlbHkgdW5y b2xsDQo+IHRoZSBsb29wDQo+ID4gPiArICAgICBpZiB0aGUgbnVtYmVyIG9mIGxvYWRzIGFuZCBz dG9yZXMgZXhjZWVkcyB0aGUgdGhyZXNob2xkLCB1bnJvbGwgKw0KPiBzb2Z0d2FyZQ0KPiA+ID4g KyAgICAgc2NoZWR1bGUgd2lsbCByZWR1Y2UgY2FjaGUgbWlzcyByYXRlLiAgKi8NCj4gPiA+ICsg IGlmIChuc3RtdHNfbGRzdCA+PSAodW5zaWduZWQgaW50KXg4Nl92ZWN0X3Vucm9sbF9taW5fbGRz dF90aHJlc2hvbGQpDQo+ID4gPiArICAgIHJldHVybiB1ZjsNCj4gPiA+ICsNCj4gPiA+ICsgIEhP U1RfV0lERV9JTlQgZXN0X25pdGVyID0gZ2V0X2VzdGltYXRlZF9sb29wX2l0ZXJhdGlvbnNfaW50 IChsb29wKTsNCj4gPiA+ICsgIHVuc2lnbmVkIGludCB2ZiA9IHZlY3RfdmZfZm9yX2Nvc3QgKGxv b3BfdmluZm8pOw0KPiA+ID4gKyAgdW5zaWduZWQgaW50IHVucm9sbGVkX3ZmID0gdmYgKiB1ZjsN Cj4gPiA+ICsgIGlmIChlc3Rfbml0ZXIgPT0gLTEgfHwgZXN0X25pdGVyIDwgdW5yb2xsZWRfdmYp DQo+ID4gPiArICAgIC8qIFdoZW4gdGhlIGVzdGltYXRlZCBpdGVyYXRpb24gb2YgdGhpcyBsb29w IGlzIHVua25vd24sIGl0J3MgcG9zc2libGUNCj4gPiA+ICsgICAgICAgdGhhdCB3ZSBhcmUgYWJs ZSB0byB2ZWN0b3JpemUgdGhpcyBsb29wIHdpdGggdGhlIG9yaWdpbmFsIFZGIGJ1dCBmYWlsDQo+ ID4gPiArICAgICAgIHRvIHZlY3Rvcml6ZSBpdCB3aXRoIHRoZSB1bnJvbGxlZCBWRiBhbnkgbW9y ZSBpZiB0aGUgYWN0dWFsIGl0ZXJhdGlvbg0KPiA+ID4gKyAgICAgICBjb3VudCBpcyBpbiBiZXR3 ZWVuLiAgKi8NCj4gPiA+ICsgICAgcmV0dXJuIDE7DQo+ID4gPiArICBlbHNlDQo+ID4gPiArICAg IHsNCj4gPiA+ICsgICAgICB1bnNpZ25lZCBpbnQgZXBpbF9uaXRlcl91bnIgPSBlc3Rfbml0ZXIg JSB1bnJvbGxlZF92ZjsNCj4gPiA+ICsgICAgICB1bnNpZ25lZCBpbnQgZXBpbF9uaXRlciA9IGVz dF9uaXRlciAlIHZmOw0KPiA+ID4gKyAgICAgIC8qIEV2ZW4gaWYgd2UgaGF2ZSBwYXJ0aWFsIHZl Y3RvciBzdXBwb3J0LCBpdCBjYW4gYmUgc3RpbGwgaW5lZmZpY2VudA0KPiA+ID4gKyAgICAgICB0 byBjYWxjdWxhdGUgdGhlIGxlbmd0aCB3aGVuIHRoZSBpdGVyYXRpb24gY291bnQgaXMgdW5rbm93 biwgc28NCj4gPiA+ICsgICAgICAgb25seSBleHBlY3QgaXQncyBnb29kIHRvIHVucm9sbCB3aGVu IHRoZSBlcGlsb2d1ZSBpdGVyYXRpb24gY291bnQNCj4gPiA+ICsgICAgICAgaXMgbm90IGJpZ2dl ciB0aGFuIFZGIChvbmx5IG9uZSB0aW1lIGxlbmd0aCBjYWxjdWxhdGlvbikuICAqLw0KPiA+ID4g KyAgICAgIGlmIChMT09QX1ZJTkZPX0NBTl9VU0VfUEFSVElBTF9WRUNUT1JTX1AgKGxvb3Bfdmlu Zm8pDQo+ID4gPiArICAgICAgICAgJiYgZXBpbF9uaXRlcl91bnIgPD0gdmYpDQo+ID4gPiArICAg ICAgIHJldHVybiB1ZjsNCj4gPiA+ICsgICAgICAvKiBXaXRob3V0IHBhcnRpYWwgdmVjdG9yIHN1 cHBvcnQsIGNvbnNlcnZhdGl2ZWx5IHVucm9sbCB0aGlzIHdoZW4NCj4gPiA+ICsgICAgICAgdGhl IGVwaWxvZ3VlIGl0ZXJhdGlvbiBjb3VudCBpcyBsZXNzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZQ0K PiA+ID4gKyAgICAgICAoZXBpbG9ndWUgZXhlY3V0aW9uIHRpbWUgd291bGRuJ3QgYmUgbG9uZ2Vy IHRoYW4gYmVmb3JlKS4gICovDQo+ID4gPiArICAgICAgZWxzZSBpZiAoIUxPT1BfVklORk9fQ0FO X1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCAobG9vcF92aW5mbykNCj4gPiA+ICsgICAgICAgICAgICAg ICYmIGVwaWxfbml0ZXJfdW5yIDw9IGVwaWxfbml0ZXIpDQo+ID4gPiArICAgICAgIHJldHVybiB1 ZjsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIDE7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gK3ZvaWQNCj4gPiA+ICtpeDg2X3ZlY3Rvcl9jb3N0czo6ZmluaXNoX2Nv c3QgKGNvbnN0IHZlY3Rvcl9jb3N0cyAqc2NhbGFyX2Nvc3RzKQ0KPiA+ID4gKw0KPiA+ID4gK3sN Cj4gPiA+ICsgIGlmIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8gPSBkeW5fY2FzdDxsb29wX3Zl Y19pbmZvPiAobV92aW5mbykpDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICBtX3N1Z2dlc3Rl ZF91bnJvbGxfZmFjdG9yID0gZGV0ZXJtaW5lX3N1Z2dlc3RlZF91bnJvbGxfZmFjdG9yDQo+IChs b29wX3ZpbmZvKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgdmVjdG9yX2Nvc3RzOjpmaW5pc2hf Y29zdCAoc2NhbGFyX2Nvc3RzKTsNCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4gIC8qIEltcGxlbWVu dCBUQVJHRVRfRkxPQVRfRVhDRVBUSU9OU19ST1VORElOR19TVVBQT1JURURfUC4NCj4gKi8NCj4g PiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0IGIvZ2NjL2Nv bmZpZy9pMzg2L2kzODYub3B0DQo+ID4gPiBpbmRleCA1M2Q1MzRmNjM5Mi4uOGU0OWI0MDZhYTUg MTAwNjQ0DQo+ID4gPiAtLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQNCj4gPiA+ICsrKyBi L2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdA0KPiA+ID4gQEAgLTEyMjQsMyArMTIyNCwxOCBAQCBt YXZ4dm5uaWludDgNCj4gPiA+ICBUYXJnZXQgTWFzayhJU0EyX0FWWFZOTklJTlQ4KSBWYXIoaXg4 Nl9pc2FfZmxhZ3MyKSBTYXZlDQo+ID4gPiAgU3VwcG9ydCBNTVgsIFNTRSwgU1NFMiwgU1NFMywg U1NTRTMsIFNTRTQuMSwgU1NFNC4yLCBBVlgsIEFWWDIgYW5kDQo+ID4gPiAgQVZYVk5OSUlOVDgg YnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBjb2RlIGdlbmVyYXRpb24uDQo+ID4gPiArDQo+ID4gPiAr LXBhcmFtPXg4Ni12ZWN0LXVucm9sbC1saW1pdD0NCj4gPiA+ICtUYXJnZXQgSm9pbmVkIFVJbnRl Z2VyIFZhcih4ODZfdmVjdF91bnJvbGxfbGltaXQpIEluaXQoNCkNCj4gSW50ZWdlclJhbmdlKDEs IDgpIFBhcmFtDQo+ID4gPiArVXNlZCB0byBsaW1pdCB1bnJvbGwgZmFjdG9yIHdoaWNoIGluZGlj YXRlcyBob3cgbXVjaCB0aGUgYXV0b3ZlY3Rvcml6ZXINCj4gbWF5DQo+ID4gPiArdW5yb2xsIGEg bG9vcC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDQuDQo+ID4gPiArDQo+ID4gPiArLXBhcmFtPXg4 Ni12ZWN0LXVucm9sbC1taW4tbGRzdC10aHJlc2hvbGQ9DQo+ID4gPiArVGFyZ2V0IEpvaW5lZCBV SW50ZWdlciBWYXIoeDg2X3ZlY3RfdW5yb2xsX21pbl9sZHN0X3RocmVzaG9sZCkNCj4gSW5pdCgy NSkgUGFyYW0NCj4gPiA+ICtVc2VkIHRvIGxpbWl0IHRoZSBtaW5pbnVtIG9mIGxvYWRzIGFuZCBz dG9yZXMgaW4gdGhlIG1haW4gbG9vcC4gIFRoZQ0KPiBkZWZhdWx0DQo+ID4gPiArdmFsdWUgaXMg MjUuDQo+ID4gPiArDQo+ID4gPiArLXBhcmFtPXg4Ni12ZWN0LXVucm9sbC1tYXgtbG9vcC1zaXpl PQ0KPiA+ID4gK1RhcmdldCBKb2luZWQgVUludGVnZXIgVmFyKHg4Nl92ZWN0X3Vucm9sbF9tYXhf bG9vcF9zaXplKSBJbml0KDIwMCkNCj4gUGFyYW0NCj4gPiA+ICtUaGlzIHRocmVzaG9sZCBpcyB1 c2VkIHRvIGxpbWl0IHRoZSBtYXhudW0gc2l6ZSBvZiBsb29wIGJvZHkgYWZ0ZXINCj4gdW5yb2xs aW5nLg0KPiA+ID4gK1RoZSBkZWZhdWx0IHZhbHVlIGlzIDIwMC4NCj4gPiA+IGRpZmYgLS1naXQg YS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQ0KPiA+ID4gaW5kZXgg MDk1NDhjNDUyOGMuLmM4NmQ2ODZmMmNkIDEwMDY0NA0KPiA+ID4gLS0tIGEvZ2NjL2RvYy9pbnZv a2UudGV4aQ0KPiA+ID4gKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQ0KPiA+ID4gQEAgLTE1Nzc5 LDYgKzE1Nzc5LDIzIEBAIFRoZSBmb2xsb3dpbmcgY2hvaWNlcyBvZiBAdmFye25hbWV9IGFyZQ0K PiBhdmFpbGFibGUgb24gaTM4NiBhbmQgeDg2XzY0IHRhcmdldHM6DQo+ID4gPiAgQGl0ZW0geDg2 LXN0bGYtd2luZG93LW5pbnNucw0KPiA+ID4gIEluc3RydWN0aW9ucyBudW1iZXIgYWJvdmUgd2hp Y2ggU1RGTCBzdGFsbCBwZW5hbHR5IGNhbiBiZSBjb21wZW5zYXRlZC4NCj4gPiA+DQo+ID4gPiAr QGl0ZW0geDg2LXZlY3QtdW5yb2xsLWxpbWl0DQo+ID4gPiArVGhlIHZlY3Rvcml6ZXIgd2lsbCBj aGVjayB3aXRoIHRhcmdldCBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlcg0KPiBpdA0K PiA+ID4gK3dvdWxkIGJlIGJlbmVmaWNpYWwgdG8gdW5yb2xsIHRoZSBtYWluIHZlY3Rvcml6ZWQg bG9vcCBhbmQgYnkgaG93IG11Y2guDQo+IFRoaXMNCj4gPiA+ICtwYXJhbWV0ZXIgc2V0cyB0aGUg dXBwZXIgYm91bmQgb2YgaG93IG11Y2ggdGhlIHZlY3Rvcml6ZXIgd2lsbCB1bnJvbGwNCj4gdGhl IG1haW4NCj4gPiA+ICtsb29wLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgZm91ci4NCj4gPiA+ICsN Cj4gPiA+ICtAaXRlbSB4ODYtdmVjdC11bnJvbGwtbWluLWxkc3QtdGhyZXNob2xkDQo+ID4gPiAr VGhlIHZlY3Rvcml6ZXIgd2lsbCBjaGVjayB3aXRoIHRhcmdldCBpbmZvcm1hdGlvbiB0byBkZXRl cm1pbmUgd2hldGhlcg0KPiB1bnJvbGwNCj4gPiA+ICtpdC4gVGhpcyBwYXJhbWV0ZXIgaXMgdXNl ZCB0byBsaW1pdCB0aGUgbWluaW51bSBvZiBsb2FkcyBhbmQgc3RvcmVzIGluIHRoZQ0KPiBtYWlu DQo+ID4gPiArbG9vcC4NCj4gPiA+ICsNCj4gPiA+ICtAaXRlbSB4ODYtdmVjdC11bnJvbGwtbWF4 LWxvb3Atc2l6ZQ0KPiA+ID4gK1RoZSB2ZWN0b3JpemVyIHdpbGwgY2hlY2sgd2l0aCB0YXJnZXQg aW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXINCj4gdW5yb2xsDQo+ID4gPiAraXQuIFRo aXMgdGhyZXNob2xkIGlzIHVzZWQgdG8gbGltaXQgdGhlIG1heCBzaXplIG9mIGxvb3AgYm9keSBh ZnRlciB1bnJvbGxpbmcuDQo+ID4gPiArVGhlIGRlZmF1bHQgdmFsdWUgaXMgMjAwLg0KPiA+ID4g Kw0KPiA+ID4gKw0KPiA+ID4gIEBlbmQgdGFibGUNCj4gPiA+DQo+ID4gPiAgQGVuZCB0YWJsZQ0K PiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2NvbmRfb3Bf bWF4bWluX2ItMS5jDQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvY29uZF9vcF9t YXhtaW5fYi0xLmMNCj4gPiA+IGluZGV4IDc4YzY2MDBmODNiLi4zYmYxZmIxYjEyZCAxMDA2NDQN Cj4gPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2NvbmRfb3BfbWF4bWlu X2ItMS5jDQo+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9jb25kX29w X21heG1pbl9iLTEuYw0KPiA+ID4gQEAgLTEsNSArMSw1IEBADQo+ID4gPiAgLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCj4gPiA+IC0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFyY2g9c2t5bGFrZS1h dng1MTIgLURUWVBFPWludDggLWZkdW1wLXRyZWUtDQo+IG9wdGltaXplZCIgfSAqLw0KPiA+ID4g Ky8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXJjaD1za3lsYWtlLWF2eDUxMiAtRFRZUEU9aW50OCAt Zm5vLXVucm9sbC0NCj4gbG9vcHMgLWZkdW1wLXRyZWUtb3B0aW1pemVkIiB9ICovDQo+ID4gPiAg LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICIuQ09ORF9NQVgiICJvcHRpbWl6ZWQiIH0g fSAqLw0KPiA+ID4gIC8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiLkNPTkRfTUlOIiAi b3B0aW1pemVkIiB9IH0gKi8NCj4gPiA+ICAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgInZwbWF4c2IiICAxIH0gfSAqLw0KPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2NvbmRfb3BfbWF4bWluX3ViLTEuYw0KPiBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2NvbmRfb3BfbWF4bWluX3ViLTEuYw0KPiA+ID4gaW5kZXggMTE3 MTc5ZjIxMDkuLmJhNDFmZDY0Mzg2IDEwMDY0NA0KPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvY29uZF9vcF9tYXhtaW5fdWItMS5jDQo+ID4gPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9jb25kX29wX21heG1pbl91Yi0xLmMNCj4gPiA+IEBAIC0x LDUgKzEsNSBAQA0KPiA+ID4gIC8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiAtLyogeyBk Zy1vcHRpb25zICItTzIgLW1hcmNoPXNreWxha2UtYXZ4NTEyIC1EVFlQRT11aW50OCAtZmR1bXAt dHJlZS0NCj4gb3B0aW1pemVkIiB9ICovDQo+ID4gPiArLyogeyBkZy1vcHRpb25zICItTzIgLW1h cmNoPXNreWxha2UtYXZ4NTEyIC1EVFlQRT11aW50OCAtZm5vLXVucm9sbC0NCj4gbG9vcHMgLWZk dW1wLXRyZWUtb3B0aW1pemVkIiB9ICovDQo+ID4gPiAgLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wICIuQ09ORF9NQVgiICJvcHRpbWl6ZWQiIH0gfSAqLw0KPiA+ID4gIC8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiLkNPTkRfTUlOIiAib3B0aW1pemVkIiB9IH0gKi8NCj4gPiA+ ICAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwbWF4dWIiICAxIH0gfSAq Lw0KPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ZlY3Qt YWxpZ25tZW50LXBlZWxpbmctMS5jDQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv dmVjdC1hbGlnbm1lbnQtcGVlbGluZy0xLmMNCj4gPiA+IGluZGV4IDRhYTUzNmJhODZjLi5mZDJm MDU0YWY0YSAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ZlY3QtYWxpZ25tZW50LXBlZWxpbmctMS5jDQo+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni92ZWN0LWFsaWdubWVudC1wZWVsaW5nLTEuYw0KPiA+ID4gQEAgLTIsNyAr Miw3IEBADQo+ID4gPiAgLyogVGhpcyBpcyBhIHRlc3QgZXhlcmNpc2luZyBwZWVsaW5nIGZvciBh bGlnbm1lbnQgZm9yIGEgbmVnYXRpdmUgc3RlcA0KPiA+ID4gICAgIHZlY3RvciBsb29wLiAgV2Un cmUgZm9yY2luZyBhdG9tIHR1bmluZyBoZXJlIGJlY2F1c2UgdGhhdCBoYXMgYSBoaWdoZXINCj4g PiA+ICAgICB1bmFsaWduZWQgdnMgYWxpZ25lZCBjb3N0IHVubGlrZSBtb3N0IG90aGVyIGFyY2hz LiAgKi8NCj4gPiA+IC0vKiB7IGRnLW9wdGlvbnMgIi1PMyAtbWFyY2g9eDg2LTY0IC1tdHVuZT1h dG9tIC1mZHVtcC10cmVlLXZlY3QtDQo+IGRldGFpbHMgLXNhdmUtdGVtcHMiIH0gKi8NCj4gPiA+ ICsvKiB7IGRnLW9wdGlvbnMgIi1PMyAtbWFyY2g9eDg2LTY0IC1tdHVuZT1hdG9tIC1mbm8tdW5y b2xsLWxvb3BzIC0NCj4gZmR1bXAtdHJlZS12ZWN0LWRldGFpbHMgLXNhdmUtdGVtcHMiIH0gKi8N Cj4gPiA+DQo+ID4gPiAgZmxvYXQgYVsxMDI0XSwgYlsxMDI0XTsNCj4gPiA+DQo+ID4gPiBkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvdmVjdC1hbGlnbm1lbnQtcGVl bGluZy0yLmMNCj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni92ZWN0LWFsaWdubWVu dC1wZWVsaW5nLTIuYw0KPiA+ID4gaW5kZXggODM0YmYwZjc3MGQuLjYyYzBkYjJiYjlhIDEwMDY0 NA0KPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvdmVjdC1hbGlnbm1l bnQtcGVlbGluZy0yLmMNCj4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ZlY3QtYWxpZ25tZW50LXBlZWxpbmctMi5jDQo+ID4gPiBAQCAtMiw3ICsyLDcgQEANCj4gPiA+ ICAvKiBUaGlzIGlzIGEgdGVzdCBleGVyY2lzaW5nIHBlZWxpbmcgZm9yIGFsaWdubWVudCBmb3Ig YSBwb3NpdGl2ZSBzdGVwDQo+ID4gPiAgICAgdmVjdG9yIGxvb3AuICBXZSdyZSBmb3JjaW5nIGF0 b20gdHVuaW5nIGhlcmUgYmVjYXVzZSB0aGF0IGhhcyBhIGhpZ2hlcg0KPiA+ID4gICAgIHVuYWxp Z25lZCB2cyBhbGlnbmVkIGNvc3QgdW5saWtlIG1vc3Qgb3RoZXIgYXJjaHMuICAqLw0KPiA+ID4g LS8qIHsgZGctb3B0aW9ucyAiLU8zIC1tYXJjaD14ODYtNjQgLW10dW5lPWF0b20gLWZkdW1wLXRy ZWUtdmVjdC0NCj4gZGV0YWlscyAtc2F2ZS10ZW1wcyIgfSAqLw0KPiA+ID4gKy8qIHsgZGctb3B0 aW9ucyAiLU8zIC1tYXJjaD14ODYtNjQgLW10dW5lPWF0b20gLWZuby11bnJvbGwtbG9vcHMgLQ0K PiBmZHVtcC10cmVlLXZlY3QtZGV0YWlscyAtc2F2ZS10ZW1wcyIgfSAqLw0KPiA+ID4NCj4gPiA+ ICBmbG9hdCBhWzEwMjRdLCBiWzEwMjRdOw0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni92ZWN0LXJlZHVjLTEuYw0KPiBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3ZlY3QtcmVkdWMtMS5jDQo+ID4gPiBpbmRleCA5ZWU5YmE0ZTcz Ni4uMWJhNGJlMDFiZWEgMTAwNjQ0DQo+ID4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni92ZWN0LXJlZHVjLTEuYw0KPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvdmVjdC1yZWR1Yy0xLmMNCj4gPiA+IEBAIC0xLDUgKzEsNSBAQA0KPiA+ID4gIC8q IHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiAtLyogeyBkZy1vcHRpb25zICItTzMgLW1hdngy IC1tbm8tYXZ4NTEyZiAtZmR1bXAtdHJlZS12ZWN0LWRldGFpbHMiIH0NCj4gKi8NCj4gPiA+ICsv KiB7IGRnLW9wdGlvbnMgIi1PMyAtbWF2eDIgLW1uby1hdng1MTJmIC1mbm8tdW5yb2xsLWxvb3Bz IC1mZHVtcC0NCj4gdHJlZS12ZWN0LWRldGFpbHMiIH0gKi8NCj4gPiA+DQo+ID4gPiAgI2RlZmlu ZSBOIDMyDQo+ID4gPiAgaW50IGZvbyAoaW50ICphLCBpbnQgbikNCj4gPiA+IC0tDQo+ID4gPiAy LjE3LjENCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPiBMaWxpLg0KPiA+DQo+ID4NCj4gPg0K PiA+IC0tDQo+ID4gQlIsDQo+ID4gSG9uZ3Rhbw0K