From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 038B03851AB8 for ; Fri, 7 Jul 2023 15:48:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 038B03851AB8 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 367FUvH3006666; Fri, 7 Jul 2023 15:47:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2023-03-30; bh=bzACeATLcm6MIQ8WmL9HD6zzMi5XgsB3m8QItZGxOzM=; b=IbdD20GM/vE2o1tCfrrGCIXtqVkYPGsSfwqOobFAU6CupEJS+tXuiVTgY9g35BK/1lIj pC4V5jVldFwOFmEGwB2MB8XU82/17+V0wb4wxrc/8NOpxvcuY0tKYs+YSaPE+T1oP1IX ToKJXR6Nx9IJElkpJpXCwJP4GOzN2SoEqOME7mn/HlbjCQOMx16labVT2DPh1kR98Skm IzkbXjsAQ9VrHS2PMG7IeEsldkxHRvpd17NaJb4tW5lfYYOq/ISzNgK4plrN3GrvP5jb n3UzUGTXL139yaFi1iSiu/BCcbVi63eDWmB6aYzRv1Uo2XISuYE6cXrYhz8kQmhnP/GR 9g== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3rpmk505fu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 07 Jul 2023 15:47:58 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 367FWYHd013525; Fri, 7 Jul 2023 15:47:57 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04lp2046.outbound.protection.outlook.com [104.47.73.46]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3rjak8mjt9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 07 Jul 2023 15:47:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SAhosNW+qoyQ2SwNoa27957TdG+596jwDGX4p9nXD5ASoeJ39jjfxT/TmS8nGOtpmRJmxBCnwRXgygQSTnF7WpPh+TMv3eIkXgAXfFmzGmOV+RjVPeyTox4PtyLmQlBvFJl7bZfz62G+Ta+133Wzw6Qd17MbXQHrWV9iMgVpvfZfalktJqZ3OgqRb41hPIjVdG0CsBmW2rOlaoNFUKVSf2RzEcboIirOM7F9uuOMdoR/JJEvk4llebQdIW2QRq3U7cDBB31RpjHtR1qXfL3iB/dYJ4Fj9Tvn+/Dc21Q7BrZtPp+Nm8tMgJO/guDqkmVj3Xftz0rJTVqGV6fHoqkyTQ== 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=bzACeATLcm6MIQ8WmL9HD6zzMi5XgsB3m8QItZGxOzM=; b=RUr3Q9k0XdnD0D5kZdocICF+cCRdE8umriGrs+t07py6Gq5+QDdDpknQktiPX48LaP43LWaokNqxj3+ElrwW8d9e4GnfTTKxpcH/TngwU556mM1BiHGwgGreDXGJHmaxAg7o/AGbAILI5M9lTMDcMb1lDg4wwbNC8tgXdfcHKDMKi7fSdpnOZERlDd8jiysurV5UYBHKN9iltBp+i4eGFMEv22P8C6pYjbZFnEIcp9FIgS+iNDROi2uCKQ8aFZJOT004cFBtaIwl4Oru9UYUebgJRwN6xgFPwFMUFbacOkE0xZ73o5M14N2bB/O9DQIqkPNwP1XUZPjJcdIOQyzj1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bzACeATLcm6MIQ8WmL9HD6zzMi5XgsB3m8QItZGxOzM=; b=ceOiMU72mUVniaxekmH//ABWVPN3r/gpR6xPM3A73vGbqc8OllJ0p2pVrayBxJEZ29B7kQ6jwoSja0BwLGeqflBj4rT+m6F++EQgs6554BSKPGvZj7RVmAOOEFfowZIUxLv5k/SWtpBTWx8pxiGLzSSeD9Vm2oKmIm2SsJS0ZPI= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by SN4PR10MB5800.namprd10.prod.outlook.com (2603:10b6:806:20f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.25; Fri, 7 Jul 2023 15:47:54 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::8d90:607a:f94c:5323]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::8d90:607a:f94c:5323%3]) with mapi id 15.20.6565.019; Fri, 7 Jul 2023 15:47:54 +0000 From: Qing Zhao To: Martin Uecker CC: Kees Cook , "joseph@codesourcery.com" , "richard.guenther@gmail.com" , "jakub@redhat.com" , "gcc-patches@gcc.gnu.org" , "siddhesh@gotplt.org" , "isanbard@gmail.com" Subject: Re: [V1][PATCH 0/3] New attribute "element_count" to annotate bounds for C99 FAM(PR108896) Thread-Topic: [V1][PATCH 0/3] New attribute "element_count" to annotate bounds for C99 FAM(PR108896) Thread-Index: AQHZjyQM4cZ0Nx0hq0Cg9tjYZZoL4q9tBmcAgEBSagCAACWYgIABOBUA Date: Fri, 7 Jul 2023 15:47:54 +0000 Message-ID: References: <20230525161450.3704901-1-qing.zhao@oracle.com> <202305261218.2420AB8E0@keescook> <848196d4808cb2293b216d9cbffafa409f70e462.camel@tugraz.at> In-Reply-To: <848196d4808cb2293b216d9cbffafa409f70e462.camel@tugraz.at> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3696.120.41.1.3) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4344:EE_|SN4PR10MB5800:EE_ x-ms-office365-filtering-correlation-id: 1be7979b-a840-44f5-39b7-08db7f01873e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JhgxqI/ttv9RvJpY/6g9mSbVWttH0k4RKcqKlD43IF4ST03wpQfYrq/JvKEvVnLK7YL+gt4bbFgnNqUPUxdLfOUlJ9ZNzxL2TuanBibfgePmqxjTKsd3khJ7qRza08L/TJu20mm8DCfnRIH8sIfmfAaJx/FJTLDLWwdO+dH49UE/8LNGLjBBtUj+gY/j7bP82WbbLCwG6L7TfdVfioZDeOO4tG2LK1+AxhNSaxWOCt1HcvomLwtMWuHcb3F556aMaeSshltO+iklFK7PPL8zjVW6t24E/yYLIE/ATW64XkzkqTJCglLiT1utBZHJ5Ce7zPzEnbdY9sfGvKWR/NVFlB2nfBBxUr4N8ndItWE7mLoG+C+y00nM29azRs13Ym8S6lF+d4QLdmtB+QaiWAlegvyKASOSnJn2BFNuCx/okTVGM8+p4jEQ5qemrnltR0HfQv63M6/sdh5hpslvnuq9vika8CnEA/eyvqElIeswmF1QxFQIkJDn9XWcnqe2BlqG432dBdPJ9jQj16CzIjjMcs4w9M8xRicUqVh2/Po0wNmKvc3yFrTk+2eFJSI4MSUl5qMInImWmpgviKweD/Bg/cWGhDrjwP6pTDA5kYKBibBOO3fD/j1+Sn+PgcKOB7FdSHkjnsh3H/eAYDg/11lseUinxB0RRQrkZ1bK4/hF+ZLr54ECRchQB0AC0jzrjuFv x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR10MB4344.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(136003)(39860400002)(366004)(376002)(346002)(451199021)(71200400001)(6486002)(478600001)(83380400001)(6512007)(966005)(86362001)(122000001)(91956017)(66946007)(76116006)(54906003)(4326008)(6916009)(66556008)(66476007)(66446008)(64756008)(38100700002)(6506007)(26005)(53546011)(186003)(2616005)(5660300002)(44832011)(38070700005)(2906002)(41300700001)(8676002)(8936002)(316002)(36756003)(33656002)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RXA0UmlIWk5KMXdITk00Z3lydzBJZWwwOTIxbXZYMmQvcTNyRW5odnRlUStS?= =?utf-8?B?RHI0OVk0VkpSUEdUQU5PVGJscm1vT1hKMXBwK0sxSHE2bUQxL1NzMGgxdE0z?= =?utf-8?B?b1pwbUJrYjdpUUxXV25pTzU4K0ExeTc0UFdCOUQyRTVVUGg2QlFkeVhPWmJF?= =?utf-8?B?T0VWdTBzRzNDK0p3YWMvSzQwd0o2cjhhM2NmdG54aXJDLzR5VjV0Z0tqSmd3?= =?utf-8?B?bjdlUmh5aUFTNkRpTld6SnpucWhITWVVZWhYU3Z1UnF1L2xTVnowU1VJTVdi?= =?utf-8?B?Ym5KdERLbXU3aWREOGF2bGVsaURZRVFLVDV2Y2puVVp4WTRDT3ZlQy9pSWZq?= =?utf-8?B?cjljcnpIbXNiWDVrY0pGR0tqTFJVVVNSSDBNbjFENTRPSi95a0F5WU9Cc2Zj?= =?utf-8?B?MDdnZEdrQjEyb0NtcW1xM2Rsc283MTQvWThUQnJLMEovWFhDbFh2MXpPdWEw?= =?utf-8?B?M1h4SFZ4NGcvcVVyaEYwQnRPWlNES01sSHVMakxuR2ZrVVJUTW5pNTRKK0ZO?= =?utf-8?B?WktoOXB1Sy9VUXkyKzNRQmxwbE1vd044eVFTM25MVThkYVJBOUVQK01rc1FP?= =?utf-8?B?SVlSOTM1Tkw1dEkvRnhpeE1hWEJIVGpsTkhWTzZudlZkbWx3czd6TFJHNitP?= =?utf-8?B?ci8xMDl3Q0c5bnJUZDlhaDcxcy9jdUorRmFWQnczaE40bDZJa01zS1NJWDA4?= =?utf-8?B?b1pXR283K0hrTmkxZmxUOU84eXErVzBTd1JPcFVDVkF5cVFIZE1FZDVDVlNa?= =?utf-8?B?N0FDYjBzQk95S0swOVhIQlRFUVdhc05SaENoU1diU3hwdlNCL3NXOXc1Q25B?= =?utf-8?B?bWdHeGFxeWJCNGN2a0lpbkx4eFF3QWRQQXNKN3B1Y0J3VFU2aFBGUmk0QzFH?= =?utf-8?B?aXUrVkNuVi9NbWpRSGNWdUc4WmVwVGN4MGxVR2FBYXpEWVJDQ21jV0J5TkFL?= =?utf-8?B?dnpEcFNTbXJYZ0ViRnNIbFMzVEFXR0l1cUZxMEg1RC9yQXA3cFEvbWpSeU5Z?= =?utf-8?B?UDJSRS90TGlhbU1lU3d0ZVBYRWpxRWo3T2lMUzJPcWJkN1U3NVVIdGZnWXdO?= =?utf-8?B?TFZid3pOeVpMdE0wYVZ3QnF2MHE3Y2NrMkZvb2dmMklIamllc2pDdTFPOWpG?= =?utf-8?B?WThXT3Fnc2VNc3hLdlRtaUJJZVByRmFBOUM0c1lLVDEwQWJVaWJiNlZrZGFG?= =?utf-8?B?SGthOStZRFk5SUduMmZhRlltKzVnYnFkWGRCMVlzcW9UVVJ3L1oyZWM2L3Nt?= =?utf-8?B?NFhPSmh6ZTh2SUQ3MHJRTnlnV0FGUm9TdE1kWmQ5WWdLK1V4N25wT2JmSUlC?= =?utf-8?B?dlVQUkJIV0lGWXlGZDJ5SE8zRzN1Z2htQ1loUXBTT1VzSzdMVkFUbjUrRzR0?= =?utf-8?B?RmhWK2p3NG4rNFlpWGFJUzFyV0tWWkppTmRUVWVHZ0V0V1RhRlJsb1NkYmZ2?= =?utf-8?B?amRJOVVyK1pVellCUTFxN01uUkFLNkZXbStrVUx6NzVjQlA0a0dvdEczUzYv?= =?utf-8?B?eUQzYUd2MkR5NGR6VVoxNmZMZC9jR0pKcWhncG9PdTBuSGpBdXRwM01SUm5P?= =?utf-8?B?NFA5aXRIcG1Nc1RkYmlJRXQyNmZrZ0lXZDFBZEFoNW02UkVDZDBIN1pTQzdt?= =?utf-8?B?bU9pY1Y4U242dVdUbkhrQzZ3TS9mL0xCb2pnRFpNMFVwUDkvNjdUNnpVOEpC?= =?utf-8?B?a2hwMHBnNmI3ZjRaOXErR01QcS9RNHVVYmFNU1RJeHZNcVBKUWE3cWV5TThj?= =?utf-8?B?UURnMHhIRER2QmVzVDVHTEJOQkM5NUNSOVJicjJER0lpTHFtdldCRGQ2dFF3?= =?utf-8?B?azJVWWhOa2laU3VuQnhxaCtZRDJSMHQ3T0g1Z1V1bmVwdlBFdlkxekMxczRJ?= =?utf-8?B?Qm15R1FDMXYyUTlZSDRRd00xcXBDZ241bll3WEJDY0pDNFF6cW1qc3djbjhR?= =?utf-8?B?RHR5aTllcmgza0tVbEtTQ3hYakIyMlBhSXBiajhEQUxwWWNxekRWamJzMTJm?= =?utf-8?B?SGZrWjIzNnN4NUcvZVdlcTV2ZEdIOG1sN0M2c3Z0VWw2azlYWVg1QjZEclVL?= =?utf-8?B?dUNJVjY5dWFrY201NzNwTnYwcWhBbDdpQ1FNaENGUFFTT29MKzhrS21hcFpD?= =?utf-8?Q?6KvuN7yh2IGWmog151CSYvMgl?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?Tmh4RG4xdFRCckNSaDA3S0pNUEJObHYydXJkNDE1S0EvOGJ0VU0zYUowR3V3?= =?utf-8?B?MzdzZkN4S0VqKzIrdVU1R0tNR0l2RUk3cGNMa3pJK290bFhlUTlBdmJkT0Jv?= =?utf-8?B?NnB3WnU2MVlSNGVmcG56amNBeDVHSkFOSUxrenppMnBNZjV4bnhreEJBNitq?= =?utf-8?B?aXZaTFRJVURjTjRwQUV2Ym91TDh0M00zNEE4OFI5b0FEWHV3TTFMUFZpa21G?= =?utf-8?B?cmdkdHdLbVdqNzBMZEc5d0pqb29sRzdsSWQ1dVRUQ2hwbUwwaVZ3b2ZjYlFT?= =?utf-8?B?Y3FPSDJRZzBybGtUZ1hLd0tNNkhKbG1vWkZYeDIyLzVXY1o3dUx4M3JNVjZM?= =?utf-8?B?U2hhbnBYcmpGOUdaYy9hMXVjMXp2UFA3aGpaZG1PK0htc1pNZEhvWGNOTlFB?= =?utf-8?B?TkdBT1BvRXdjaThHSURDcE1HSGRmUjV0MVYwWkZkYm82bXc0UzA1d3Fxd0NM?= =?utf-8?B?ZFhWRHF6TXhhc3JlTk1lRm1LZFFvZWNXamtsT2hPLzlJQTh3Z2UyZ1BSSHo1?= =?utf-8?B?Rk1ZVTdnWStVMEY5czlrTndxTjRBcmdTK3ExWGdNVU92cno0QVUyTTMwbWJh?= =?utf-8?B?L0x1OXJJUlYvcHMxQmNlVmJWbkp0c0tva0FtYmlNdEZ4d3BUaHY5YTJSaTNL?= =?utf-8?B?bitEcDBwRDZyQnY0bHFnTWU1R0J5WGc3Q3hDM2xoNzM4c0FROGdCc0U4VGhK?= =?utf-8?B?aUUyWlJWYVpzbm5NMlcxbFROc1REUVdoL3l1OFdCOFhIS1ZwL24xOU9wMGJQ?= =?utf-8?B?LzJ6SVhqRUpabkdqUU1EOXZuV3dYdFpzMDFWQzlUb2lsU1RCaHRCL3cybHIv?= =?utf-8?B?Yzl6T3FlM1JkMWRpNjM1WW02N3kybUh6U2lyVnljUlN2YjE3VjZmeTJiWWJq?= =?utf-8?B?S1pjZTM4NHJaVm1Pb3Ziemh0WUhtVWlPcjJ2S1Y0dFVIaS9VQndNZVo3YVN2?= =?utf-8?B?S2t0d24vUGNJeWVIQUFZUWYxL21LUTB6MnFJbU5qZE5UNU1XRXpMOFFwUVBV?= =?utf-8?B?YXFGU1JmWmxVK3JHS3EyZkZXUXdIUlp5OXd3TFdDbkl1M20wb1ZuRTVqcWZp?= =?utf-8?B?enZTZ0hobERZMURzekJDMTFwcm9hRDJZbmNZSTVuMEg3MG9BamFOM2VSY0Uv?= =?utf-8?B?NUFWcXVOVXRSUnlrVW1BZUNjMzM2SDU1MDQ1VkI0aFV1SEZMYVJ6TVhkWnAw?= =?utf-8?B?S2ZhdjFBbFV1OTB2TDNqb0lQNk1zYkNFeHdKTncxVnB5RTk3clVwVEh0WCtU?= =?utf-8?Q?aiHfUYVLEkCPcwO?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1be7979b-a840-44f5-39b7-08db7f01873e X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2023 15:47:54.3503 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ddIHKnN26XhxJEv/gjeTuH7S78xHMuZk6oZ65ooT/HhGWMFLD8E2ezg4FptuPZOhHJSLBEMMcBriroLyMyZ0eQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5800 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-07_10,2023-07-06_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 adultscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2307070146 X-Proofpoint-ORIG-GUID: odmMKDPl9x_SYRKGZzHCJ2wFky9ziDOI X-Proofpoint-GUID: odmMKDPl9x_SYRKGZzHCJ2wFky9ziDOI X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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: DQoNCj4gT24gSnVsIDYsIDIwMjMsIGF0IDU6MTAgUE0sIE1hcnRpbiBVZWNrZXIgPHVlY2tlckB0 dWdyYXouYXQ+IHdyb3RlOg0KPiANCj4gQW0gRG9ubmVyc3RhZywgZGVtIDA2LjA3LjIwMjMgdW0g MTg6NTYgKzAwMDAgc2NocmllYiBRaW5nIFpoYW86DQo+PiBIaSwgS2VlcywNCj4+IA0KPj4gSSBo YXZlIHVwZGF0ZWQgbXkgVjEgcGF0Y2ggd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6DQo+PiBB LiBjaGFuZ2VkIHRoZSBuYW1lIHRvICJjb3VudGVkX2J5Ig0KPj4gQi4gY2hhbmdlZCB0aGUgYXJn dW1lbnQgZnJvbSBhIHN0cmluZyB0byBhbiBpZGVudGlmaWVyDQo+PiBDLiB1cGRhdGVkIHRoZSBk b2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGNhc2VzIGFjY29yZGluZ2x5Lg0KPj4gDQo+PiBBbmQg dGhlbiB1c2VkIHRoaXMgbmV3IGdjYyB0byB0ZXN0IGh0dHBzOi8vZ2l0aHViLmNvbS9rZWVzL2tl cm5lbC10b29scy9ibG9iL3RydW5rL2ZvcnRpZnkvYXJyYXktYm91bmRzLmMgKHdpdGggdGhlIGZv bGxvd2luZyBjaGFuZ2UpDQo+PiBbb3BjQHFpbnpoYW8tb2w4dTMteDg2IEtlZXNdJCAhMTA5MQ0K Pj4gZGlmZiBhcnJheS1ib3VuZHMuYyBhcnJheS1ib3VuZHMuYy5vcmcNCj4+IDMyYzMyDQo+PiA8 ICMgZGVmaW5lIF9fY291bnRlZF9ieShtZW1iZXIpCV9fYXR0cmlidXRlX18oKGNvdW50ZWRfYnkg KG1lbWJlcikpKQ0KPj4gLS0tDQo+Pj4gIyBkZWZpbmUgX19jb3VudGVkX2J5KG1lbWJlcikJX19h dHRyaWJ1dGVfXygoX19lbGVtZW50X2NvdW50X18oI21lbWJlcikpKQ0KPj4gMzRjMzQNCj4+IDwg IyBkZWZpbmUgX19jb3VudGVkX2J5KG1lbWJlcikgICBfX2F0dHJpYnV0ZV9fKChjb3VudGVkX2J5 IChtZW1iZXIpKSkNCj4+IC0tLQ0KPj4+ICMgZGVmaW5lIF9fY291bnRlZF9ieShtZW1iZXIpCS8q IF9fYXR0cmlidXRlX18oKF9fZWxlbWVudF9jb3VudF9fKCNtZW1iZXIpKSkgKi8NCj4+IA0KPj4g VGhlbiBJIGdvdCB0aGUgZm9sbG93aW5nIHJlc3VsdDoNCj4+IFtvcGNAcWluemhhby1vbDh1My14 ODYgS2Vlc10kIC4vYXJyYXktYm91bmRzIDI+JjEgfCBncmVwIC12IF4nIycNCj4+IFRBUCB2ZXJz aW9uIDEzDQo+PiAxLi4xMg0KPj4gb2sgMSBnbG9iYWwuZml4ZWRfc2l6ZV9zZWVuX2J5X2Jkb3MN Cj4+IG9rIDIgZ2xvYmFsLmZpeGVkX3NpemVfZW5mb3JjZWRfYnlfc2FuaXRpemVyDQo+PiBub3Qg b2sgMyBnbG9iYWwudW5rbm93bl9zaXplX3Vua25vd25fdG9fYmRvcw0KPj4gbm90IG9rIDQgZ2xv YmFsLnVua25vd25fc2l6ZV9pZ25vcmVkX2J5X3Nhbml0aXplcg0KPj4gb2sgNSBnbG9iYWwuYWxs b2Nfc2l6ZV9zZWVuX2J5X2Jkb3MNCj4+IG9rIDYgZ2xvYmFsLmFsbG9jX3NpemVfZW5mb3JjZWRf Ynlfc2FuaXRpemVyDQo+PiBub3Qgb2sgNyBnbG9iYWwuZWxlbWVudF9jb3VudF9zZWVuX2J5X2Jk b3MNCj4+IG9rIDggZ2xvYmFsLmVsZW1lbnRfY291bnRfZW5mb3JjZWRfYnlfc2FuaXRpemVyDQo+ PiBub3Qgb2sgOSBnbG9iYWwuYWxsb2Nfc2l6ZV93aXRoX3NtYWxsZXJfZWxlbWVudF9jb3VudF9z ZWVuX2J5X2Jkb3MNCj4+IG5vdCBvayAxMCBnbG9iYWwuYWxsb2Nfc2l6ZV93aXRoX3NtYWxsZXJf ZWxlbWVudF9jb3VudF9lbmZvcmNlZF9ieV9zYW5pdGl6ZXINCj4+IG9rIDExIGdsb2JhbC5hbGxv Y19zaXplX3dpdGhfYmlnZ2VyX2VsZW1lbnRfY291bnRfc2Vlbl9ieV9iZG9zDQo+PiBvayAxMiBn bG9iYWwuYWxsb2Nfc2l6ZV93aXRoX2JpZ2dlcl9lbGVtZW50X2NvdW50X2VuZm9yY2VkX2J5X3Nh bml0aXplcg0KPj4gDQo+PiBUaGUgc2FtZSBhcyB5b3VyIHByZXZpb3VzIHJlc3VsdHMuIFRoZW4g SSB0b29rIGEgbG9vayBhdCBhbGwgdGhlIGZhaWxlZCB0ZXN0aW5nOiAzLCA0LCA3LCA5LCBhbmQg MTAuIEFuZCBzdHVkaWVkIHRoZSByZWFzb25zIGZvciBhbGwgb2YgdGhlbS4NCj4+IA0KPj4gIGlu IGEgc3VtbWFyeSwgdGhlcmUgYXJlIHR3byBtYWpvciBpc3N1ZXM6DQo+PiAxLiAgVGhlIHJlYXNv biBmb3IgdGhlIGZhaWxlZCB0ZXN0aW5nIDcgaXMgdGhlIHNhbWUgaXNzdWUgYXMgSSBvYnNlcnZl ZCBpbiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMDk1NTcN Cj4+IFdoaWNoIGlzIG5vdCBhIGJ1ZywgaXTigJlzIGFuIGV4cGVjdGVkIGJlaGF2aW9yLiANCj4+ IA0KPj4gMi4gVGhlIGNvbW1vbiBpc3N1ZSBmb3IgIHRoZSBmYWlsZWQgdGVzdGluZyAzLCA0LCA5 LCAxMCBpczoNCj4+IA0KPj4gZm9yIHRoZSBmb2xsb3dpbmcgYW5ub3RhdGVkIHN0cnVjdHVyZTog DQo+PiANCj4+ID09PT0NCj4+IHN0cnVjdCBhbm5vdGF0ZWQgew0KPj4gICAgICAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOw0KPj4gICAgICAgICBzaXplX3QgZm9vOw0KPj4gICAgICAgICBpbnQgYXJy YXlbXSBfX2F0dHJpYnV0ZV9fKChjb3VudGVkX2J5IChmb28pKSk7DQo+PiB9Ow0KPj4gDQo+PiAN Cj4+IHN0cnVjdCBhbm5vdGF0ZWQgKnA7DQo+PiBpbnQgaW5kZXggPSAxNjsNCj4+IA0KPj4gcCA9 IG1hbGxvYyhzaXplb2YoKnApICsgaW5kZXggKiBzaXplb2YoKnAtPmFycmF5KSk7ICAvLyBhbGxv Y2F0ZWQgcmVhbCBzaXplIA0KPj4gDQo+PiBwLT5mb28gPSBpbmRleCArIDI7ICAvLyBwLT5mb28g d2FzIHNldCBieSBhIGRpZmZlcmVudCB2YWx1ZSB0aGFuIHRoZSByZWFsIHNpemUgb2YgcC0+YXJy YXkgYXMgaW4gdGVzdCA5IGFuZCAxMA0KPj4gb3INCj4+IHAtPmZvbyB3YXMgbm90IHNldCB0byBh bnkgdmFsdWUgYXMgaW4gdGVzdCAzIGFuZCA0DQo+PiANCj4+ID09PT0NCj4+IA0KPj4gaS5lLCB0 aGUgdmFsdWUgb2YgcC0+Zm9vIGlzIE5PVCBzeW5jZWQgd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1l bnRzIGFsbG9jYXRlZCBmb3IgdGhlIGFycmF5IHAtPmFycmF5LiAgDQo+PiANCj4+IEkgdGhpbmsg dGhhdCB0aGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGFuIHVzZXIgZXJyb3IsIGFuZCB0aGUg ZG9jdW1lbnRhdGlvbiBvZiB0aGUgYXR0cmlidXRlIHNob3VsZCBpbmNsdWRlDQo+PiB0aGlzIHJl cXVpcmVtZW50LiAgKEluIHRoZSBMTFZN4oCZcyBSRkMsIHN1Y2ggcmVxdWlyZW1lbnQgd2FzIGlu Y2x1ZGVkIGluIHRoZSBwcm9ncmFtaW5nIG1vZGVsOiANCj4+IGh0dHBzOi8vZGlzY291cnNlLmxs dm0ub3JnL3QvcmZjLWVuZm9yY2luZy1ib3VuZHMtc2FmZXR5LWluLWMtZmJvdW5kcy1zYWZldHkv NzA4NTQjbWFpbnRhaW5pbmctY29ycmVjdG5lc3Mtb2YtYm91bmRzLWFubm90YXRpb25zLTE4KQ0K Pj4gDQo+PiBXZSBjYW4gYWRkIGEgbmV3IHdhcm5pbmcgb3B0aW9uIC1XY291bnRlZC1ieSB0byBy ZXBvcnQgc3VjaCB1c2VyIGVycm9yIGlmIG5lZWRlZC4NCj4+IA0KPj4gV2hhdOKAmXMgeW91ciBv cGluaW9uIG9uIHRoaXM/DQo+IA0KPiANCj4gQWRkaXRpb25hbGx5LCB3ZSBjb3VsZCBhbHNvIGhh dmUgYSBzYW5pdGl6ZXIgdGhhdA0KPiBjaGVja3MgdGhpcyBhdCBydW4tdGltZS4NCg0KWWVzLCB0 aGF04oCZcyBhbHNvIGEgbmljZSBmZWF0dXJlIHRvIGhhdmUuIA0KSSB0aGluayB0aGF0IHRoZSBt YWluIHBvaW50IGhlcmUgaXMgdG8gY2F0Y2ggc3VjaCB1c2VyIGVycm9ycyBkdXJpbmcgY29tcGls YXRpb24gdGltZSBvciBydW4gdGltZS4gDQoNCkkgd2lsbCBhZGQgb25lIG9yIHR3byBzZXBhcmF0 ZSBwYXRjaGVzIGZvciB0aGVzZSBjb21waWxhdGlvbiB3YXJuaW5nIGFuZCBzYW5pdGl6ZXIgZmVh dHVyZS4NCg0KDQo+IA0KPiBQZXJzb25hbGx5LCBJIGFtIHN0aWxsIG5vdCB2ZXJ5IGhhcHB5IHRo YXQgaW4gdGhlDQo+IGZvbGxvd2luZyBleGFtcGxlIHRoZSB0d28gJ24ncyByZWZlciB0byBkaWZm ZXJlbnQNCj4gZW50aXRpZXM6DQo+IA0KPiB2b2lkIGYoaW50IG4pDQo+IHsNCj4gICAgc3RydWN0 IGZvbyB7DQo+ICAgICAgICBpbnQgbjsgICANCj4gICAgICAgIGludCAoKnBbXSlbbl0gW1tjb3Vu dGVkX2J5KG4pXV07DQo+ICAgIH07DQo+IH0NCj4gDQpNZSBlaXRoZXIgKS06DQoNCg0KPiBCdXQg SSBndWVzcyBpdCB3aWxsIGJlIGRpZmZpY3VsdCB0byBjb252aW5jZSBldmVyeWJvZHkNCj4gdGhh dCBpdCB3b3VsZCBiZSB3aXNlIHRvIHVzZSBhIG5ldyBzeW50YXggZm9yDQo+IGRpc2FtYmlndWF0 aW9uOg0KPiANCj4gdm9pZCBmKGludCBuKQ0KPiB7DQo+ICAgIHN0cnVjdCBmb28gew0KPiAgICAg ICAgaW50IG47ICAgDQo+ICAgICAgICBpbnQgKCpwW10pW25dIFtbY291bnRlZF9ieSgubildXTsN Cj4gICAgfTsNCj4gfQ0KPiANCg0KSSBndWVzcyB0aGF0IGl04oCZcyBxdWl0ZSBoYXJkIHRvIGNv bnZpbmNlIGV2ZXJ5b25lIHRoYXQgdGhlIG5ldyBzeW50YXggaXMgdGhlIGJlc3Qgc29sdXRpb24g YXQgdGhpcyBtb21lbnQuIA0KQW5kIGl0IG1pZ2h0IG5vdCB3b3J0aCB0aGUgZWZmb3J0IGF0IHRo aXMgdGltZS4NCg0KV2UgY2FuIGRvIHRoZSBuZXcgc3ludGF4IGxhdGVyIGlmIG5lY2Vzc2FyeS4N Cg0KdGhhbmtzLg0KDQpRaW5nDQoNCj4gTWFydGluDQo+IA0KPiANCj4+IA0KPj4gdGhhbmtzLg0K Pj4gDQo+PiBRaW5nDQo+PiANCj4+IA0KPj4+IE9uIE1heSAyNiwgMjAyMywgYXQgNDo0MCBQTSwg S2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+IHdyb3RlOg0KPj4+IA0KPj4+IE9uIFRo dSwgTWF5IDI1LCAyMDIzIGF0IDA0OjE0OjQ3UE0gKzAwMDAsIFFpbmcgWmhhbyB3cm90ZToNCj4+ Pj4gR0NDIHdpbGwgcGFzcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluZm8gZnJvbSB0aGUgYXR0 YWNoZWQgYXR0cmlidXRlIHRvIGJvdGggDQo+Pj4+IF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9z aXplIGFuZCBib3VuZHMgc2FuaXRpemVyIHRvIGNoZWNrIHRoZSBvdXQtb2YtYm91bmRzDQo+Pj4+ IG9yIGR5bmFtaWMgb2JqZWN0IHNpemUgaXNzdWVzIGR1cmluZyBydW50aW1lIGZvciBmbGV4aWJs ZSBhcnJheSBtZW1iZXJzLg0KPj4+PiANCj4+Pj4gVGhpcyBuZXcgZmVhdHVyZSB3aWxsIHByb3Zp ZGUgbmljZSBwcm90ZWN0aW9uIHRvIGZsZXhpYmxlIGFycmF5IG1lbWJlcnMgKHdoaWNoDQo+Pj4+ IGN1cnJlbnRseSBhcmUgY29tcGxldGVseSBpZ25vcmVkIGJ5IGJvdGggX19idWlsdGluX2R5bmFt aWNfb2JqZWN0X3NpemUgYW5kDQo+Pj4+IGJvdW5kcyBzYW5pdGl6ZXJzKS4NCj4+PiANCj4+PiBU ZXN0aW5nIHdlbnQgcHJldHR5IHdlbGwsIHRob3VnaCBJIHRoaW5rIEkgZm91bmQgc29tZSBiZG9z IGlzc3VlczoNCj4+PiANCj4+PiAtIHNvbWUgdGhpbmdzIHRoYXQgYmRvcyBjYW4ndCBrbm93IHRo ZSBzaXplIG9mLCBhbmQgY29ycmVjdGx5IHJldHVybmVkDQo+Pj4gIFNJWkVfTUFYIGluIHRoZSBw YXN0LCBub3cgdGhpbmtzIGFyZSAwLXNpemVkLg0KPj4+IC0gd2hpbGUgYmRvcyBjb3JyZWN0bHkg a25vd3MgdGhlIHNpemUgb2YgYW4gZWxlbWVudF9jb3VudC1hbm5vdGF0ZWQNCj4+PiAgZmxleGli bGUgYXJyYXksIGl0IGRvZXNuJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmluZyBvYmpl Y3QNCj4+PiAgKGkuZS4gaXQgcmV0dXJucyBTSVpFX01BWCkuDQo+Pj4gDQo+Pj4gQWxzbywgSSB0 aGluayBJIGZvdW5kIGEgcHJlY2VkZW5jZSBpc3N1ZToNCj4+PiANCj4+PiAtIGlmIGJvdGggX19h bGxvY19zaXplIGFuZCAnZWxlbWVudF9jb3VudCcgYXJlIGluIHVzZSwgdGhlIF9zbWFsbGVzdF8N Cj4+PiAgb2YgdGhlIHR3byBpcyB3aGF0IEkgd291bGQgZXhwZWN0IHRvIGJlIGVuZm9yY2VkIGJ5 IHRoZSBzYW5pdGl6ZXINCj4+PiAgYW5kIHJlcG9ydGVkIGJ5IF9fYmRvcy4gQXMgaXMsIGFsbG9j X3NpemUgYXBwZWFycyB0byBiZSB1c2VkIHdoZW4NCj4+PiAgaXQgaXMgYXZhaWxhYmxlLCByZWdh cmRsZXNzIG9mIHdoYXQgJ2VsZW1lbnRfY291bnQnIHNob3dzLg0KPj4+IA0KPj4+IEkndmUgdXBk YXRlZCBteSB0ZXN0IGNhc2VzIHRvIHNob3cgaXQgbW9yZSBjbGVhcmx5LCBidXQgaGVyZSBpcyB0 aGUNCj4+PiBiZWZvcmUvYWZ0ZXI6DQo+Pj4gDQo+Pj4gDQo+Pj4gR0NDIDEzIChjb3JyZWN0bHkg ZG9lcyBub3QgaW1wbGVtZW50ICJlbGVtZW50X2NvdW50Iik6DQo+Pj4gDQo+Pj4gJCAuL2FycmF5 LWJvdW5kcyAyPiYxIHwgZ3JlcCAtdiBeJyMnDQo+Pj4gVEFQIHZlcnNpb24gMTMNCj4+PiAxLi4x Mg0KPj4+IG9rIDEgZ2xvYmFsLmZpeGVkX3NpemVfc2Vlbl9ieV9iZG9zDQo+Pj4gb2sgMiBnbG9i YWwuZml4ZWRfc2l6ZV9lbmZvcmNlZF9ieV9zYW5pdGl6ZXINCj4+PiBvayAzIGdsb2JhbC51bmtu b3duX3NpemVfdW5rbm93bl90b19iZG9zDQo+Pj4gb2sgNCBnbG9iYWwudW5rbm93bl9zaXplX2ln bm9yZWRfYnlfc2FuaXRpemVyDQo+Pj4gb2sgNSBnbG9iYWwuYWxsb2Nfc2l6ZV9zZWVuX2J5X2Jk b3MNCj4+PiBvayA2IGdsb2JhbC5hbGxvY19zaXplX2VuZm9yY2VkX2J5X3Nhbml0aXplcg0KPj4+ IG5vdCBvayA3IGdsb2JhbC5lbGVtZW50X2NvdW50X3NlZW5fYnlfYmRvcw0KPj4+IG5vdCBvayA4 IGdsb2JhbC5lbGVtZW50X2NvdW50X2VuZm9yY2VkX2J5X3Nhbml0aXplcg0KPj4+IG5vdCBvayA5 IGdsb2JhbC5hbGxvY19zaXplX3dpdGhfc21hbGxlcl9lbGVtZW50X2NvdW50X3NlZW5fYnlfYmRv cw0KPj4+IG5vdCBvayAxMCBnbG9iYWwuYWxsb2Nfc2l6ZV93aXRoX3NtYWxsZXJfZWxlbWVudF9j b3VudF9lbmZvcmNlZF9ieV9zYW5pdGl6ZXINCj4+PiBvayAxMSBnbG9iYWwuYWxsb2Nfc2l6ZV93 aXRoX2JpZ2dlcl9lbGVtZW50X2NvdW50X3NlZW5fYnlfYmRvcw0KPj4+IG9rIDEyIGdsb2JhbC5h bGxvY19zaXplX3dpdGhfYmlnZ2VyX2VsZW1lbnRfY291bnRfZW5mb3JjZWRfYnlfc2FuaXRpemVy DQo+Pj4gDQo+Pj4gDQo+Pj4gVG9UIEdDQyArIHRoaXMgZWxlbWVudF9jb3VudCBzZXJpZXM6DQo+ Pj4gDQo+Pj4gJCAuL2FycmF5LWJvdW5kcyAyPiYxIHwgZ3JlcCAtdiBeJyMnDQo+Pj4gVEFQIHZl cnNpb24gMTMNCj4+PiAxLi4xMg0KPj4+IG9rIDEgZ2xvYmFsLmZpeGVkX3NpemVfc2Vlbl9ieV9i ZG9zDQo+Pj4gb2sgMiBnbG9iYWwuZml4ZWRfc2l6ZV9lbmZvcmNlZF9ieV9zYW5pdGl6ZXINCj4+ PiBub3Qgb2sgMyBnbG9iYWwudW5rbm93bl9zaXplX3Vua25vd25fdG9fYmRvcw0KPj4+IG5vdCBv ayA0IGdsb2JhbC51bmtub3duX3NpemVfaWdub3JlZF9ieV9zYW5pdGl6ZXINCj4+PiBvayA1IGds b2JhbC5hbGxvY19zaXplX3NlZW5fYnlfYmRvcw0KPj4+IG9rIDYgZ2xvYmFsLmFsbG9jX3NpemVf ZW5mb3JjZWRfYnlfc2FuaXRpemVyDQo+Pj4gbm90IG9rIDcgZ2xvYmFsLmVsZW1lbnRfY291bnRf c2Vlbl9ieV9iZG9zDQo+Pj4gb2sgOCBnbG9iYWwuZWxlbWVudF9jb3VudF9lbmZvcmNlZF9ieV9z YW5pdGl6ZXINCj4+PiBub3Qgb2sgOSBnbG9iYWwuYWxsb2Nfc2l6ZV93aXRoX3NtYWxsZXJfZWxl bWVudF9jb3VudF9zZWVuX2J5X2Jkb3MNCj4+PiBub3Qgb2sgMTAgZ2xvYmFsLmFsbG9jX3NpemVf d2l0aF9zbWFsbGVyX2VsZW1lbnRfY291bnRfZW5mb3JjZWRfYnlfc2FuaXRpemVyDQo+Pj4gb2sg MTEgZ2xvYmFsLmFsbG9jX3NpemVfd2l0aF9iaWdnZXJfZWxlbWVudF9jb3VudF9zZWVuX2J5X2Jk b3MNCj4+PiBvayAxMiBnbG9iYWwuYWxsb2Nfc2l6ZV93aXRoX2JpZ2dlcl9lbGVtZW50X2NvdW50 X2VuZm9yY2VkX2J5X3Nhbml0aXplcg0KPj4+IA0KPj4+IA0KPj4+IFRlc3Qgc3VpdGUgaXMgaGVy ZToNCj4+PiBodHRwczovL2dpdGh1Yi5jb20va2Vlcy9rZXJuZWwtdG9vbHMvYmxvYi90cnVuay9m b3J0aWZ5L2FycmF5LWJvdW5kcy5jDQo+Pj4gDQo+Pj4gLS0gDQo+Pj4gS2VlcyBDb29rDQo+PiAN Cj4gDQo+IA0KDQo=