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 C81CA3858D39 for ; Mon, 1 Aug 2022 14:14:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C81CA3858D39 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 271E91Yg027621; Mon, 1 Aug 2022 14:14:24 GMT Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmvh9kpfg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 01 Aug 2022 14:14:24 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 271D1uM0000979; Mon, 1 Aug 2022 14:14:23 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2175.outbound.protection.outlook.com [104.47.56.175]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hp57q7trx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 01 Aug 2022 14:14:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=REK4sSn2X54HR9k0LihZ9a8DVM4FM3EU2AsddNX2KtOvJm8sp+HySjF6B8tdVBIzb1MyaMd2cXF9VQ7xvaCvvByzEecVjDMkx3EQTpvU9exZVsUnX9F90aYjUfB/quK8Wtx6+gTlqAE6t7WQnwEx/ocHDCkVYNoSx3DOcNaMWdplGhSKDrzg/jVQspwuDqy+RNtyEU6MqntXWHX4BUF06tCwC2bLwab1cy1QmL80bfbn/543s52gktfg01mvuQKfJ+HNOpnSVdzx6wskC7AzxWLu2JvpgEUjFMhF5RO0hRluL5v0a2vnDlkZCseCnbzSsTBVkw9kaY+wdjSOKZf5nw== 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=/gSu3TEjSVB/J4dAQzEYuB3RLLJ6KzZOQbiZK3WBrx4=; b=keQCs0f2tSkx2icrdQ1ZyzQwBKsr4turTNvD4jB5T3YD1Leq2SE/NGT9Cs7kfK0h0Q2/dP9L41tMsNkFaJ2VAkV3cUqi0EODe5cIfD8zA+LgptthB0B7RKo/piQQu2TsjeOpdVhOYWsPhYyxYudYNKa98lIPYYlX+NyshTTg8b12AZySB5ylTyYooROldItXCU9yOmfIwwrOy4RdggbP+Ej4f6CCl6DOXw2f7W3IYeHyJQVeGwe5SWkhcFcFn9ogK0MKRbfMTSaDSsDTjlrfVpUQZD5Lhd7VCMjPulcbiU7rChWmtsnDM1qAdGHFdcDqRer2GEEWYCbdFMZQdONmxg== 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 Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by BYAPR10MB2965.namprd10.prod.outlook.com (2603:10b6:a03:90::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.15; Mon, 1 Aug 2022 14:14:20 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::84af:9275:f1d7:de1]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::84af:9275:f1d7:de1%5]) with mapi id 15.20.5482.016; Mon, 1 Aug 2022 14:14:20 +0000 From: Qing Zhao To: Richard Biener CC: gcc-patches Paul A Clarke via , jakub Jelinek , martin Sebor , kees Cook , "joseph@codesourcery.com" Subject: Re: [GCC13][Patch][V2][2/2]Add a new option -fstrict-flex-array[=n] and attribute strict_flex_array(n) and use it in PR101836 Thread-Topic: [GCC13][Patch][V2][2/2]Add a new option -fstrict-flex-array[=n] and attribute strict_flex_array(n) and use it in PR101836 Thread-Index: AQHYm3lrLL8dpSTuU0ybKJ2+MOZ/uq2TcGuAgAIGFACABD7pAIAAdZ+A Date: Mon, 1 Aug 2022 14:14:20 +0000 Message-ID: <974FA659-8F41-4A0E-940C-F7C76D509063@oracle.com> References: <1D72918C-4D6A-4583-AF14-288757C04DD0@oracle.com> <89AFBA07-674A-451A-9D63-BE398AC7B3EF@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8eeec11e-2989-4864-7705-08da73c82092 x-ms-traffictypediagnostic: BYAPR10MB2965:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kzL6/cmc/fkmek4blOQRUPDGOLvIwtbg5Hu4m1wYs2bGsK9z5EgrdaM6/1Q4g6rlleBc9ZGdaH9bWRWw9WPTO4GZAK4AznVHZJuELA8YbsE1Br0VUXfaSsr6uNHKK8uLd3HOlg8va7XFD4oe4Q+BD+5yH+Tue2FdBF4nlFoVRWRnqo1jB/H7WZxRwqW7R9ccwvMwHwhy7BBEHaLKt5fTbIc53f0wb0YV8Pluzbvm7FoO55dXZpRX6Sq3aKOPbh4gXYDcKHIkNN/njSpZ8hioO81GrUfI3/73+QcAbQUUVuV5DDtCfgIhtX6DavRjlw++XdttboFgk8SD72LFHfKnk2JJj9j7cM0pW62ogYijAsH++dc5hmKXPvZXnQ1gQTF3jmpJVnDgbCnlTuuwPeGT8FAHm4w8DzriW4vVpWLPJjGjSm/1pRaWB8cPo7bI6YtXL/pwV90cyfPzbLQHfgp2EhhHC4sWseHAXy0/M6LmKixUIY6aJVENEzbjoYBZZHf/v9P1cK3VWmDIUARXEuFg8e3IjhhH8jDt9Mdh8oqWbh7xumD9q97l2C0TUYr/AJOWMMxdbaWPphdmq0nUGIpXgtBWrzu7bN3D8vQ2/waeiRDRqjo1enkKfbH2R8xp5pEwfNmHmAhKrz7L+wQdmc46zqnGw1/X3ooK+AKrKFKqBm2aR5oJUwgaV/7hr3+QdZeCJVN2DJ3aAD+z7zVF3lsEPGFgFhlf4ZVSvhfSt/ROAV6uU1iO18UKSSBsRtPjUffNcK/HRhta/3ENaS2oBGmAhxK6JjSENyYy6wK8kJ9AEHOqhADVFnd79/7gScpRfDn0uo0dOCU5b/wA9H3Ab/CokIApraelH3kH8iIwe4oXheAtM4TnuFqNKb9yezDUnL2n 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:(13230016)(366004)(376002)(39860400002)(396003)(346002)(136003)(2616005)(6486002)(186003)(84970400001)(478600001)(53546011)(6512007)(41300700001)(71200400001)(33656002)(6506007)(38100700002)(38070700005)(122000001)(86362001)(83380400001)(316002)(8936002)(2906002)(4326008)(91956017)(6916009)(66446008)(54906003)(64756008)(8676002)(66946007)(30864003)(76116006)(66556008)(36756003)(66476007)(5660300002)(44832011)(45980500001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZU45ZkRiZkdqVlptWmlpWVNHdVI3dnFESlpGa3BxbnlzV1JsSDh5dVVJeGdi?= =?utf-8?B?cTdyL1gvUXE2Q1BLNjdnSllDSis0NUt3eWY5MDB6blczWWV4WGREU05Rb3Zi?= =?utf-8?B?OWN1N1M2WnBBRWRtUmh6Rzl5UE5vci9EeDRaSlVGUmVmZkwvMURsMlN6azNw?= =?utf-8?B?Qzd6dWkrQVlzMXdSclZoU0o4aUh2ZW9ZckFranBzZmZYNTN3NEx0cVNzQlVN?= =?utf-8?B?TGRHT053M2RaQkp2WEx0SEJWR3haQktNYXFlVXJ4Mm01SFFqZDF2ZGVzRDhx?= =?utf-8?B?OTkrU3RoRVRLRDNqUjFyQ1pZV0t4WGl6N2VsM1ZDaDBybHU0MWZLd3lZUjAw?= =?utf-8?B?eVpBaENaNFByV3AzMGhwN1VUZVZSWnRTZm53cXdaSEdaNTlmV3RuT1NNOEd3?= =?utf-8?B?K3FGUEsrK1dtM201NzV3R0xRcVVEYVhxdzNSUmZVaWVSelFER3BrU3pGNE1r?= =?utf-8?B?cDg0d3U3dFdqeEZ4bjNpVzJmejdhSXZ6VW9VQVBqN3ZtNlN3S0RtTDdDTjF2?= =?utf-8?B?N3J0MklibUtReVRaQ0tGYitCWmpodnVUL003MmpDOUZKcFNIQmFNaktJZ0ds?= =?utf-8?B?Nk5zRlVXM2h3RlZHczlMSjB1T0pRckRXUGdjY3REUGw4NjFpRUs1clVVYWgr?= =?utf-8?B?V0VGNU9rbW1aMnlXZ01QRkFsM0JqSHFRd0hWeFlwc2U3WmtxZFdwb1QzNmEv?= =?utf-8?B?U1lZeTNiZnNuUXdWYktMenhnZVc0NFlJR0Zyc2ZuQXRicUYwMHA1TUQwMlFV?= =?utf-8?B?MzJsbjNJS3N4bGo0MUxxaTNsT0JXU1RrVkpVemtUanhKZytObE9aak41ZnFP?= =?utf-8?B?cFd0R3o0NHovNXdGam02Rm9GdlYzQnR4bXZ3cG4vL0sxODhNaG1KckVGb1Vz?= =?utf-8?B?dmwwRXppR2lja2pHbDZ1Q0dGb3F1T2ZoSFkxeTRDTHJsSDI2cTZ3UXVSSnYz?= =?utf-8?B?ak5ham5lemd0SitmMVEyTnpzZld3bktxZ3Y3N2FIeDlLZ1kwZTVXdTZaVDhR?= =?utf-8?B?ODV1Z2ZQL1dFVS9ZUnJySVV2TC9ZNkVsNzZ1dVJpOFJhaS9CQTJVdHdVRlk3?= =?utf-8?B?QXpJRkJZSmt2TTFmNHlKNlJWMWdPVUt4TFp4UG12eE1HOWRaazhxNC9sMGo0?= =?utf-8?B?R2F2UzErSUFrODVCSEVTRXUxUW9jUzNzdzl4cVI4b0F0bldBRlFVVHBmQUhN?= =?utf-8?B?b1ROT3FLSlM4WHRHR1NBa0pMaEhIMTVuZFRkakdPU0Z1Nko3VEkxNUF0QnBQ?= =?utf-8?B?ZWdPOUtuU2JCZWkvK0dZVEFDaG1URCtJaytZM3h3NThyTGJJb1lpaUJDc2tP?= =?utf-8?B?dTdGUEJ4d1pGSitleDNpY2hRSkg2U1pGSDdjSTdLbmMwREU2QlozUTRWWVM4?= =?utf-8?B?Y3pIQWZmbzZEZ2RkSTRxTzhBR3VSdkppeVZwTldwRkVpaFpsRE82ekZNK1Bv?= =?utf-8?B?QURKVVd5RXpJdmVyUUlaMFFXakRoQmxwTERSWnV3M2hxUzdlajFmbGZsdkg5?= =?utf-8?B?MHVKeE5sbGFOb3Nnc3oxWW5SdHdZNlFxKzg3OFlwTVFldmRybkVRQTZCYkFj?= =?utf-8?B?UXZrd0J3R0Ria281WGI2b0N5UjFHenlHSW01K1RGSCtsazNnT2o2N0lDUkRT?= =?utf-8?B?RW4xOTZVS3J6enNKTFdkUktodVJ1VnpVUy9BWFU5MUFQOGFMWm81UUxlalM4?= =?utf-8?B?M0M1ZzduZmx1WmwzSWRpaW50bmp5MjhucGJmWGkxS1BrSldpZjgrdCtYbHF5?= =?utf-8?B?Lzh5dmxqVDRqVHFCanpSMWs4VHhCdkgzeDBuRktEekVyR3dycjFaZmRNWU9n?= =?utf-8?B?SFAzUnBaa2pESXplZnBQOC9ZNmxLc2w4d0lPaTZjWDRhTk1JUndXeFVtSGZQ?= =?utf-8?B?S1N4cmE3bERVUUJScXpoZ1YyT0V1OVkzZzhLcU5PT2tqZEl6WFRvTlcvSTZV?= =?utf-8?B?dFFHZFFzbVZIS3pmQm9CVnh1dzhUYTJMdmlMM2NUOVJkQWthR3pjUnByRXY4?= =?utf-8?B?b01rQkhKUHY1bmh3V1ZzOUUvVWVJOVVPNWFXSnptVE9iUnM0bFJ6bHNwRzFX?= =?utf-8?B?RFNEWkZzSUhFZUpTUWZGV2FyNEYvcTRXRkZyb0dMbFp2TUJtWjFMN1hJVW5w?= =?utf-8?B?ZFZHRStsWExGM052ZFRaVGEyTSs1eEx0bVBWc1NMVE9mdEJ4aGlhT05MYk81?= =?utf-8?Q?FPWFbwSlVburAPHNSzGVGvs=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 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: 8eeec11e-2989-4864-7705-08da73c82092 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Aug 2022 14:14:20.3000 (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: 4bUxI3A+2bjVReE/bNeJqIBG860ckb9hb1d5GCFgxRck0768EcHSkuRnsddERGyL9fswtImMcrY6s5JfkblO6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR10MB2965 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-01_07,2022-08-01_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 mlxlogscore=999 adultscore=0 spamscore=0 bulkscore=0 suspectscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208010071 X-Proofpoint-ORIG-GUID: -6qnCpwb-MhN3ssQadCeqW0953333qsm X-Proofpoint-GUID: -6qnCpwb-MhN3ssQadCeqW0953333qsm X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Aug 2022 14:14:31 -0000 DQoNCj4gT24gQXVnIDEsIDIwMjIsIGF0IDM6MTMgQU0sIFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRo ZXJAc3VzZS5kZT4gd3JvdGU6DQo+IA0KPiBPbiBGcmksIDI5IEp1bCAyMDIyLCBRaW5nIFpoYW8g d3JvdGU6DQo+IA0KPj4gDQo+PiANCj4+PiBPbiBKdWwgMjgsIDIwMjIsIGF0IDM6MjggQU0sIFJp Y2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6DQo+Pj4gDQo+Pj4gT24gVHVl LCAxOSBKdWwgMjAyMiwgUWluZyBaaGFvIHdyb3RlOg0KPj4+IA0KPj4+PiBGcm9tIGEwOWYzOWRl ZDQ2MjYxMTI4NmE0NGQ5ZTgyNzNkZTgzNDI2NzNiYTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx DQo+Pj4+IEZyb206IFFpbmcgWmhhbyA8cWluZy56aGFvQG9yYWNsZS5jb20+DQo+Pj4+IERhdGU6 IE1vbiwgMTggSnVsIDIwMjIgMTg6MTI6MjYgKzAwMDANCj4+Pj4gU3ViamVjdDogW1BBVENIIDIv Ml0gVXNlIG5ldyBmbGFnIERFQ0xfTk9UX0ZMRVhBUlJBWSBpbiBfX2J1aWx0aW5fb2JqZWN0X3Np emUNCj4+Pj4gW1BSMTAxODM2XQ0KPj4+PiANCj4+Pj4gVXNlIG5ldyBmbGFnIERFQ0xfTk9UX0ZM RVhBUlJBWSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgdHJhaWxpbmcgYXJyYXkNCj4+Pj4gb2Yg YSBzdHJ1Y3R1cmUgaXMgZmxleGlibGUgYXJyYXkgbWVtYmVyIGluIF9fYnVpbHRpbl9vYmplY3Rf c2l6ZS4NCj4+Pj4gDQo+Pj4+IGdjYy9DaGFuZ2VMb2c6DQo+Pj4+IA0KPj4+PiAJUFIgdHJlZS1v cHRpbWl6YXRpb24vMTAxODM2DQo+Pj4+IAkqIHRyZWUtb2JqZWN0LXNpemUuY2MgKGFkZHJfb2Jq ZWN0X3NpemUpOiBVc2UgYXJyYXlfYXRfc3RydWN0X2VuZF9wDQo+Pj4+IAlhbmQgREVDTF9OT1Rf RkxFWEFSUkFZIHRvIGRldGVybWluZSBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciByZWZlcmVuY2Uu DQo+Pj4+IA0KPj4+PiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4+Pj4gDQo+Pj4+IAlQUiB0 cmVlLW9wdGltaXphdGlvbi8xMDE4MzYNCj4+Pj4gCSogZ2NjLmRnL3ByMTAxODM2LmM6IE5ldyB0 ZXN0Lg0KPj4+PiAJKiBnY2MuZGcvcHIxMDE4MzZfMS5jOiBOZXcgdGVzdC4NCj4+Pj4gCSogZ2Nj LmRnL3ByMTAxODM2XzIuYzogTmV3IHRlc3QuDQo+Pj4+IAkqIGdjYy5kZy9wcjEwMTgzNl8zLmM6 IE5ldyB0ZXN0Lg0KPj4+PiAJKiBnY2MuZGcvcHIxMDE4MzZfNC5jOiBOZXcgdGVzdC4NCj4+Pj4g CSogZ2NjLmRnL3ByMTAxODM2XzUuYzogTmV3IHRlc3QuDQo+Pj4+IAkqIGdjYy5kZy9zdHJpY3Qt ZmxleC1hcnJheS0yLmM6IE5ldyB0ZXN0Lg0KPj4+PiAJKiBnY2MuZGcvc3RyaWN0LWZsZXgtYXJy YXktMy5jOiBOZXcgdGVzdC4NCj4+Pj4gLS0tDQo+Pj4+IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3By MTAxODM2LmMgICAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysrKysrKysNCj4+Pj4gZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMS5jICAgICAgICAgIHwgNjAgKysrKysrKysrKysr KysrKysrKysrKw0KPj4+PiBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl8yLmMgICAgICAg ICAgfCA2MCArKysrKysrKysrKysrKysrKysrKysrDQo+Pj4+IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L3ByMTAxODM2XzMuYyAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysrKysrKysNCj4+Pj4g Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfNC5jICAgICAgICAgIHwgNjAgKysrKysrKysr KysrKysrKysrKysrKw0KPj4+PiBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl81LmMgICAg ICAgICAgfCA2MCArKysrKysrKysrKysrKysrKysrKysrDQo+Pj4+IGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYyB8IDYwICsrKysrKysrKysrKysrKysrKysrKysNCj4+ Pj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMy5jIHwgNjAgKysrKysr KysrKysrKysrKysrKysrKw0KPj4+PiBnY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYyAgICAgICAgICAg ICAgICAgICAgfCAxOCArKystLS0tDQo+Pj4+IDkgZmlsZXMgY2hhbmdlZCwgNDg5IGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pDQo+Pj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy5kZy9wcjEwMTgzNi5jDQo+Pj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy5kZy9wcjEwMTgzNl8xLmMNCj4+Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzIuYw0KPj4+PiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMy5jDQo+Pj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl80LmMNCj4+Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzUuYw0KPj4+PiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMi5jDQo+Pj4+IGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS0zLmMNCj4+ Pj4gDQo+Pj4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNi5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzYuYw0KPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPj4+PiBpbmRleCAwMDAwMDAwMDAwMC4uZTViNGU1MTYwYTQNCj4+Pj4gLS0tIC9kZXYvbnVs bA0KPj4+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNi5jDQo+Pj4+IEBAIC0w LDAgKzEsNjAgQEANCj4+Pj4gKy8qIC1mc3RyaWN0LWZsZXgtYXJyYXkgaXMgYWxpYXNlZCB3aXRo IC1mdHJpY3QtZmxleC1hcnJheT0zLCB3aGljaCBpcyB0aGUNCj4+Pj4gKyAgIHN0cmljdGVzdCwg b25seSBbXSBpcyB0cmVhdGVkIGFzIGZsZXhpYmxlIGFycmF5LiAgKi8gDQo+Pj4+ICsvKiBQUiB0 cmVlLW9wdGltaXphdGlvbi8xMDE4MzYgKi8NCj4+Pj4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4+ Pj4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3RyaWN0LWZsZXgtYXJyYXkiIH0gKi8NCj4+Pj4g Kw0KPj4+PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+Pj4+ICsNCj4+Pj4gKyNkZWZpbmUgZXhwZWN0 KHAsIF92KSBkbyB7IFwNCj4+Pj4gKyAgICBzaXplX3QgdiA9IF92OyBcDQo+Pj4+ICsgICAgaWYg KHAgPT0gdikgXA0KPj4+PiArICAgICAgICBwcmludGYoIm9rOiAgJXMgPT0gJXpkXG4iLCAjcCwg cCk7IFwNCj4+Pj4gKyAgICBlbHNlIFwNCj4+Pj4gKwl7ICBcDQo+Pj4+ICsgICAgICAgICAgcHJp bnRmKCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQgJXpkKVxuIiwgI3AsIHAsIHYpOyBcDQo+Pj4+ ICsJICBfX2J1aWx0aW5fYWJvcnQgKCk7IFwNCj4+Pj4gKwl9IFwNCj4+Pj4gK30gd2hpbGUgKDAp Ow0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSB7DQo+Pj4+ICsgICAgaW50 IGE7DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbNF07DQo+Pj4+ICt9Ow0KPj4+ PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiB7DQo+Pj4+ICsgICAgaW50IGE7DQo+ Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbMV07DQo+Pj4+ICt9Ow0KPj4+PiArDQo+ Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMyB7DQo+Pj4+ICsgICAgaW50IGE7DQo+Pj4+ICsg ICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbMF07DQo+Pj4+ICt9Ow0KPj4+PiArc3RydWN0IHRy YWlsaW5nX2FycmF5XzQgew0KPj4+PiArICAgIGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+ PiArICAgIGludCBjW107DQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICt2b2lkIF9fYXR0cmlidXRl X18oKF9fbm9pbmxpbmVfXykpIHN0dWZmKA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJh eV8xICpub3JtYWwsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgKnRyYWlsaW5n XzEsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgKnRyYWlsaW5nXzAsDQo+Pj4+ ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzQgKnRyYWlsaW5nX2ZsZXgpDQo+Pj4+ICt7DQo+ Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShub3JtYWwtPmMsIDEpLCAxNik7 DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ18xLT5jLCAx KSwgNCk7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ18w LT5jLCAxKSwgMCk7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFp bGluZ19mbGV4LT5jLCAxKSwgLTEpOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQ0KPj4+PiArew0KPj4+PiArICAgIHN0dWZmKCh2b2lkICop YXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlsw XSk7DQo+Pj4+ICsNCj4+Pj4gKyAgICByZXR1cm4gMDsNCj4+Pj4gK30NCj4+Pj4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzEuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ByMTAxODM2XzEuYw0KPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+PiBpbmRleCAw MDAwMDAwMDAwMC4uMzBlYTIwNDI3YTUNCj4+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+PiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl8xLmMNCj4+Pj4gQEAgLTAsMCArMSw2MCBAQA0K Pj4+PiArLyogLWZzdHJpY3QtZmxleC1hcnJheT0zIGlzIHRoZSBzdHJpY3Rlc3QsIG9ubHkgW10g aXMgdHJlYXRlZCBhcw0KPj4+PiArICAgZmxleGlibGUgYXJyYXkuICAqLyANCj4+Pj4gKy8qIFBS IHRyZWUtb3B0aW1pemF0aW9uLzEwMTgzNiAqLw0KPj4+PiArLyogeyBkZy1kbyBydW4gfSAqLw0K Pj4+PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZzdHJpY3QtZmxleC1hcnJheT0zIiB9ICovDQo+ Pj4+ICsNCj4+Pj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPj4+PiArDQo+Pj4+ICsjZGVmaW5lIGV4 cGVjdChwLCBfdikgZG8geyBcDQo+Pj4+ICsgICAgc2l6ZV90IHYgPSBfdjsgXA0KPj4+PiArICAg IGlmIChwID09IHYpIFwNCj4+Pj4gKyAgICAgICAgcHJpbnRmKCJvazogICVzID09ICV6ZFxuIiwg I3AsIHApOyBcDQo+Pj4+ICsgICAgZWxzZSBcDQo+Pj4+ICsJeyAgXA0KPj4+PiArICAgICAgICAg IHByaW50ZigiV0FUOiAlcyA9PSAlemQgKGV4cGVjdGVkICV6ZClcbiIsICNwLCBwLCB2KTsgXA0K Pj4+PiArCSAgX19idWlsdGluX2Fib3J0ICgpOyBcDQo+Pj4+ICsJfSBcDQo+Pj4+ICt9IHdoaWxl ICgwKTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzEgew0KPj4+PiArICAg IGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzRdOw0KPj4+PiArfTsN Cj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgew0KPj4+PiArICAgIGludCBh Ow0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzFdOw0KPj4+PiArfTsNCj4+Pj4g Kw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPj4+PiArICAgIGludCBhOw0KPj4+ PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzBdOw0KPj4+PiArfTsNCj4+Pj4gK3N0cnVj dCB0cmFpbGluZ19hcnJheV80IHsNCj4+Pj4gKyAgICBpbnQgYTsNCj4+Pj4gKyAgICBpbnQgYjsN Cj4+Pj4gKyAgICBpbnQgY1tdOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArdm9pZCBfX2F0dHJp YnV0ZV9fKChfX25vaW5saW5lX18pKSBzdHVmZigNCj4+Pj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdf YXJyYXlfMSAqbm9ybWFsLA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8yICp0cmFp bGluZ18xLA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8zICp0cmFpbGluZ18wLA0K Pj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV80ICp0cmFpbGluZ19mbGV4KQ0KPj4+PiAr ew0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUobm9ybWFsLT5jLCAxKSwg MTYpOw0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfMS0+ YywgMSksIDQpOw0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxp bmdfMC0+YywgMSksIDApOw0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUo dHJhaWxpbmdfZmxleC0+YywgMSksIC0xKTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAraW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+Pj4gK3sNCj4+Pj4gKyAgICBzdHVmZigodm9p ZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFy Z3ZbMF0pOw0KPj4+PiArDQo+Pj4+ICsgICAgcmV0dXJuIDA7DQo+Pj4+ICt9DQo+Pj4+IGRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl8yLmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9wcjEwMTgzNl8yLmMNCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4gaW5k ZXggMDAwMDAwMDAwMDAuLmViYmU4OGY0MzNjDQo+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMi5jDQo+Pj4+IEBAIC0wLDAgKzEsNjAg QEANCj4+Pj4gKy8qIFdoZW4gLWZzdHJpY3QtZmxleC1hcnJheT0yLCBvbmx5IFtdIGFuZCBbMF0g YXJlIHRyZWF0ZWQgYXMgZmxleGlhYmxlDQo+Pj4+ICsgICBhcnJheXMuICAqLw0KPj4+PiArLyog UFIgdHJlZS1vcHRpbWl6YXRpb24vMTAxODM2ICovDQo+Pj4+ICsvKiB7IGRnLWRvIHJ1biB9ICov DQo+Pj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnN0cmljdC1mbGV4LWFycmF5PTIiIH0gKi8N Cj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+Pj4+ICsNCj4+Pj4gKyNkZWZpbmUg ZXhwZWN0KHAsIF92KSBkbyB7IFwNCj4+Pj4gKyAgICBzaXplX3QgdiA9IF92OyBcDQo+Pj4+ICsg ICAgaWYgKHAgPT0gdikgXA0KPj4+PiArICAgICAgICBwcmludGYoIm9rOiAgJXMgPT0gJXpkXG4i LCAjcCwgcCk7IFwNCj4+Pj4gKyAgICBlbHNlIFwNCj4+Pj4gKwl7ICBcDQo+Pj4+ICsgICAgICAg ICAgcHJpbnRmKCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQgJXpkKVxuIiwgI3AsIHAsIHYpOyBc DQo+Pj4+ICsJICBfX2J1aWx0aW5fYWJvcnQgKCk7IFwNCj4+Pj4gKwl9IFwNCj4+Pj4gK30gd2hp bGUgKDApOw0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSB7DQo+Pj4+ICsg ICAgaW50IGE7DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbNF07DQo+Pj4+ICt9 Ow0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiB7DQo+Pj4+ICsgICAgaW50 IGE7DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbMV07DQo+Pj4+ICt9Ow0KPj4+ PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMyB7DQo+Pj4+ICsgICAgaW50IGE7DQo+ Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbMF07DQo+Pj4+ICt9Ow0KPj4+PiArc3Ry dWN0IHRyYWlsaW5nX2FycmF5XzQgew0KPj4+PiArICAgIGludCBhOw0KPj4+PiArICAgIGludCBi Ow0KPj4+PiArICAgIGludCBjW107DQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICt2b2lkIF9fYXR0 cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHN0dWZmKA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGlu Z19hcnJheV8xICpub3JtYWwsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgKnRy YWlsaW5nXzEsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgKnRyYWlsaW5nXzAs DQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzQgKnRyYWlsaW5nX2ZsZXgpDQo+Pj4+ ICt7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShub3JtYWwtPmMsIDEp LCAxNik7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ18x LT5jLCAxKSwgNCk7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFp bGluZ18wLT5jLCAxKSwgLTEpOw0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3Np emUodHJhaWxpbmdfZmxleC0+YywgMSksIC0xKTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAraW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+Pj4gK3sNCj4+Pj4gKyAgICBzdHVmZigo dm9pZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAq KWFyZ3ZbMF0pOw0KPj4+PiArDQo+Pj4+ICsgICAgcmV0dXJuIDA7DQo+Pj4+ICt9DQo+Pj4+IGRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl8zLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy9wcjEwMTgzNl8zLmMNCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4g aW5kZXggMDAwMDAwMDAwMDAuLmQ0YmEwYWZlNWJjDQo+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMy5jDQo+Pj4+IEBAIC0wLDAgKzEs NjAgQEANCj4+Pj4gKy8qIFdoZW4gLWZzdHJpY3QtZmxleC1hcnJheT0xLCBbXSwgWzBdLCBhbmQg WzFdIGFyZSB0cmVhdGVkIGFzIGZsZXhpYmxlDQo+Pj4+ICsgICBhcnJheXMuICAqLw0KPj4+PiAr LyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMTAxODM2ICovDQo+Pj4+ICsvKiB7IGRnLWRvIHJ1biB9 ICovDQo+Pj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnN0cmljdC1mbGV4LWFycmF5PTEiIH0g Ki8NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+Pj4+ICsNCj4+Pj4gKyNkZWZp bmUgZXhwZWN0KHAsIF92KSBkbyB7IFwNCj4+Pj4gKyAgICBzaXplX3QgdiA9IF92OyBcDQo+Pj4+ ICsgICAgaWYgKHAgPT0gdikgXA0KPj4+PiArICAgICAgICBwcmludGYoIm9rOiAgJXMgPT0gJXpk XG4iLCAjcCwgcCk7IFwNCj4+Pj4gKyAgICBlbHNlIFwNCj4+Pj4gKwl7ICBcDQo+Pj4+ICsgICAg ICAgICAgcHJpbnRmKCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQgJXpkKVxuIiwgI3AsIHAsIHYp OyBcDQo+Pj4+ICsJICBfX2J1aWx0aW5fYWJvcnQgKCk7IFwNCj4+Pj4gKwl9IFwNCj4+Pj4gK30g d2hpbGUgKDApOw0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSB7DQo+Pj4+ ICsgICAgaW50IGE7DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbNF07DQo+Pj4+ ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiB7DQo+Pj4+ICsgICAg aW50IGE7DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbMV07DQo+Pj4+ICt9Ow0K Pj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMyB7DQo+Pj4+ICsgICAgaW50IGE7 DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbMF07DQo+Pj4+ICt9Ow0KPj4+PiAr c3RydWN0IHRyYWlsaW5nX2FycmF5XzQgew0KPj4+PiArICAgIGludCBhOw0KPj4+PiArICAgIGlu dCBiOw0KPj4+PiArICAgIGludCBjW107DQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICt2b2lkIF9f YXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHN0dWZmKA0KPj4+PiArICAgIHN0cnVjdCB0cmFp bGluZ19hcnJheV8xICpub3JtYWwsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzIg KnRyYWlsaW5nXzEsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgKnRyYWlsaW5n XzAsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzQgKnRyYWlsaW5nX2ZsZXgpDQo+ Pj4+ICt7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShub3JtYWwtPmMs IDEpLCAxNik7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGlu Z18xLT5jLCAxKSwgLTEpOw0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUo dHJhaWxpbmdfMC0+YywgMSksIC0xKTsNCj4+Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVj dF9zaXplKHRyYWlsaW5nX2ZsZXgtPmMsIDEpLCAtMSk7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4g K2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+Pj4+ICt7DQo+Pj4+ICsgICAgc3R1 ZmYoKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZv aWQgKilhcmd2WzBdKTsNCj4+Pj4gKw0KPj4+PiArICAgIHJldHVybiAwOw0KPj4+PiArfQ0KPj4+ PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfNC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfNC5jDQo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ Pj4+IGluZGV4IDAwMDAwMDAwMDAwLi5iMTBkM2NlMzEyZA0KPj4+PiAtLS0gL2Rldi9udWxsDQo+ Pj4+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzQuYw0KPj4+PiBAQCAtMCww ICsxLDYwIEBADQo+Pj4+ICsvKiB3aGVuIC1mc3RyaWN0LWZsZXgtYXJyYXk9MCwgYWxsIHRyYWls aW5nIGFycmF5cyBhcmUgdHJlYXRlZCBhcw0KPj4+PiArICAgZmxleGlibGUgYXJyYXlzLiAgKi8N Cj4+Pj4gKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzEwMTgzNiAqLw0KPj4+PiArLyogeyBkZy1k byBydW4gfSAqLw0KPj4+PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZzdHJpY3QtZmxleC1hcnJh eT0wIiB9ICovDQo+Pj4+ICsNCj4+Pj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPj4+PiArDQo+Pj4+ ICsjZGVmaW5lIGV4cGVjdChwLCBfdikgZG8geyBcDQo+Pj4+ICsgICAgc2l6ZV90IHYgPSBfdjsg XA0KPj4+PiArICAgIGlmIChwID09IHYpIFwNCj4+Pj4gKyAgICAgICAgcHJpbnRmKCJvazogICVz ID09ICV6ZFxuIiwgI3AsIHApOyBcDQo+Pj4+ICsgICAgZWxzZSBcDQo+Pj4+ICsJeyAgXA0KPj4+ PiArICAgICAgICAgIHByaW50ZigiV0FUOiAlcyA9PSAlemQgKGV4cGVjdGVkICV6ZClcbiIsICNw LCBwLCB2KTsgXA0KPj4+PiArCSAgX19idWlsdGluX2Fib3J0ICgpOyBcDQo+Pj4+ICsJfSBcDQo+ Pj4+ICt9IHdoaWxlICgwKTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzEg ew0KPj4+PiArICAgIGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzRd Ow0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgew0KPj4+ PiArICAgIGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzFdOw0KPj4+ PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPj4+PiArICAg IGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzBdOw0KPj4+PiArfTsN Cj4+Pj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV80IHsNCj4+Pj4gKyAgICBpbnQgYTsNCj4+Pj4g KyAgICBpbnQgYjsNCj4+Pj4gKyAgICBpbnQgY1tdOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiAr dm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSBzdHVmZigNCj4+Pj4gKyAgICBzdHJ1 Y3QgdHJhaWxpbmdfYXJyYXlfMSAqbm9ybWFsLA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19h cnJheV8yICp0cmFpbGluZ18xLA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8zICp0 cmFpbGluZ18wLA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV80ICp0cmFpbGluZ19m bGV4KQ0KPj4+PiArew0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUobm9y bWFsLT5jLCAxKSwgLTEpOw0KPj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUo dHJhaWxpbmdfMS0+YywgMSksIC0xKTsNCj4+Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVj dF9zaXplKHRyYWlsaW5nXzAtPmMsIDEpLCAtMSk7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRp bl9vYmplY3Rfc2l6ZSh0cmFpbGluZ19mbGV4LT5jLCAxKSwgLTEpOw0KPj4+PiArfQ0KPj4+PiAr DQo+Pj4+ICtpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPj4+PiArew0KPj4+PiAr ICAgIHN0dWZmKCh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3Zb MF0sICh2b2lkICopYXJndlswXSk7DQo+Pj4+ICsNCj4+Pj4gKyAgICByZXR1cm4gMDsNCj4+Pj4g K30NCj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzUuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzUuYw0KPj4+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPj4+PiBpbmRleCAwMDAwMDAwMDAwMC4uMmY2YjVmN2FlMWYNCj4+Pj4gLS0tIC9kZXYv bnVsbA0KPj4+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl81LmMNCj4+Pj4g QEAgLTAsMCArMSw2MCBAQA0KPj4+PiArLyogLWZuby1zdHJpY3QtZmxleC1hcnJheSBpcyBhbGlh c2VkIHRvIC1mc3RyaWN0LWZsZXgtYXJyYXk9MCwNCj4+Pj4gKyAgIGFsbCB0cmFpbGluZyBhcnJh eXMgYXJlIHRyZWF0ZWQgYXMgZmxleGlibGUgYXJyYXkuICAqLw0KPj4+PiArLyogUFIgdHJlZS1v cHRpbWl6YXRpb24vMTAxODM2ICovDQo+Pj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+Pj4+ICsv KiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXN0cmljdC1mbGV4LWFycmF5IiB9ICovDQo+Pj4+ICsN Cj4+Pj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPj4+PiArDQo+Pj4+ICsjZGVmaW5lIGV4cGVjdChw LCBfdikgZG8geyBcDQo+Pj4+ICsgICAgc2l6ZV90IHYgPSBfdjsgXA0KPj4+PiArICAgIGlmIChw ID09IHYpIFwNCj4+Pj4gKyAgICAgICAgcHJpbnRmKCJvazogICVzID09ICV6ZFxuIiwgI3AsIHAp OyBcDQo+Pj4+ICsgICAgZWxzZSBcDQo+Pj4+ICsJeyAgXA0KPj4+PiArICAgICAgICAgIHByaW50 ZigiV0FUOiAlcyA9PSAlemQgKGV4cGVjdGVkICV6ZClcbiIsICNwLCBwLCB2KTsgXA0KPj4+PiAr CSAgX19idWlsdGluX2Fib3J0ICgpOyBcDQo+Pj4+ICsJfSBcDQo+Pj4+ICt9IHdoaWxlICgwKTsN Cj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzEgew0KPj4+PiArICAgIGludCBh Ow0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzRdOw0KPj4+PiArfTsNCj4+Pj4g Kw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgew0KPj4+PiArICAgIGludCBhOw0KPj4+ PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzFdOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+ PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPj4+PiArICAgIGludCBhOw0KPj4+PiArICAg IGludCBiOw0KPj4+PiArICAgIGludCBjWzBdOw0KPj4+PiArfTsNCj4+Pj4gK3N0cnVjdCB0cmFp bGluZ19hcnJheV80IHsNCj4+Pj4gKyAgICBpbnQgYTsNCj4+Pj4gKyAgICBpbnQgYjsNCj4+Pj4g KyAgICBpbnQgY1tdOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArdm9pZCBfX2F0dHJpYnV0ZV9f KChfX25vaW5saW5lX18pKSBzdHVmZigNCj4+Pj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlf MSAqbm9ybWFsLA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8yICp0cmFpbGluZ18x LA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8zICp0cmFpbGluZ18wLA0KPj4+PiAr ICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV80ICp0cmFpbGluZ19mbGV4KQ0KPj4+PiArew0KPj4+ PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUobm9ybWFsLT5jLCAxKSwgLTEpOw0K Pj4+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfMS0+YywgMSks IC0xKTsNCj4+Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWlsaW5nXzAt PmMsIDEpLCAtMSk7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFp bGluZ19mbGV4LT5jLCAxKSwgLTEpOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQ0KPj4+PiArew0KPj4+PiArICAgIHN0dWZmKCh2b2lkICop YXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlsw XSk7DQo+Pj4+ICsNCj4+Pj4gKyAgICByZXR1cm4gMDsNCj4+Pj4gK30NCj4+Pj4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYw0KPj4+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPj4+PiBpbmRleCAwMDAwMDAwMDAwMC4uMzI2ZGRjZmVkYTUNCj4+Pj4gLS0tIC9kZXYv bnVsbA0KPj4+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS0y LmMNCj4+Pj4gQEAgLTAsMCArMSw2MCBAQA0KPj4+PiArLyogdGVzdCB0aGUgY29tYmluYXRpb24g b2YgYXR0cmlidXRlIHN0cmljdF9mbGV4X2FycmF5IGFuZCBvcHRpb24NCj4+Pj4gKyAgIC1mc3Ry aWN0LWZsZXgtYXJyYXk6IHdoZW4gYm90aCBhdHRyaWJ1dGUgYW5kIG9wdGlvbiBzcGVjaWZpZWQs DQo+Pj4+ICsgICBhdHRyaWJ1dGUgd2lsbCBoYXZlIGhpZ2hlciBwcmlvcml0eS4gICovDQo+Pj4+ ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+Pj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnN0cmlj dC1mbGV4LWFycmF5PTMiIH0gKi8NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ Pj4+ICsNCj4+Pj4gKyNkZWZpbmUgZXhwZWN0KHAsIF92KSBkbyB7IFwNCj4+Pj4gKyAgICBzaXpl X3QgdiA9IF92OyBcDQo+Pj4+ICsgICAgaWYgKHAgPT0gdikgXA0KPj4+PiArICAgICAgICBwcmlu dGYoIm9rOiAgJXMgPT0gJXpkXG4iLCAjcCwgcCk7IFwNCj4+Pj4gKyAgICBlbHNlIFwNCj4+Pj4g Kwl7ICBcDQo+Pj4+ICsgICAgICAgICAgcHJpbnRmKCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQg JXpkKVxuIiwgI3AsIHAsIHYpOyBcDQo+Pj4+ICsJICBfX2J1aWx0aW5fYWJvcnQgKCk7IFwNCj4+ Pj4gKwl9IFwNCj4+Pj4gK30gd2hpbGUgKDApOw0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxp bmdfYXJyYXlfMSB7DQo+Pj4+ICsgICAgaW50IGE7DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsg ICAgaW50IGNbNF0gX19hdHRyaWJ1dGVfXyAoKHN0cmljdF9mbGV4X2FycmF5ICgwKSkpOw0KPj4+ PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgew0KPj4+PiArICAg IGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzFdIF9fYXR0cmlidXRl X18gKChzdHJpY3RfZmxleF9hcnJheSAoMSkpKTsNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gK3N0 cnVjdCB0cmFpbGluZ19hcnJheV8zIHsNCj4+Pj4gKyAgICBpbnQgYTsNCj4+Pj4gKyAgICBpbnQg YjsNCj4+Pj4gKyAgICBpbnQgY1swXSBfX2F0dHJpYnV0ZV9fICgoc3RyaWN0X2ZsZXhfYXJyYXkg KDIpKSk7DQo+Pj4+ICt9Ow0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzQgew0KPj4+PiAr ICAgIGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjW107DQo+Pj4+ICt9 Ow0KPj4+PiArDQo+Pj4+ICt2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHN0dWZm KA0KPj4+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8xICpub3JtYWwsDQo+Pj4+ICsgICAg c3RydWN0IHRyYWlsaW5nX2FycmF5XzIgKnRyYWlsaW5nXzEsDQo+Pj4+ICsgICAgc3RydWN0IHRy YWlsaW5nX2FycmF5XzMgKnRyYWlsaW5nXzAsDQo+Pj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2Fy cmF5XzQgKnRyYWlsaW5nX2ZsZXgpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVpbHRp bl9vYmplY3Rfc2l6ZShub3JtYWwtPmMsIDEpLCAtMSk7DQo+Pj4+ICsgICAgZXhwZWN0KF9fYnVp bHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ18xLT5jLCAxKSwgLTEpOw0KPj4+PiArICAgIGV4cGVj dChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfMC0+YywgMSksIC0xKTsNCj4+Pj4gKyAg ICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWlsaW5nX2ZsZXgtPmMsIDEpLCAtMSk7 DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p DQo+Pj4+ICt7DQo+Pj4+ICsgICAgc3R1ZmYoKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3Zb MF0sICh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdKTsNCj4+Pj4gKw0KPj4+PiArICAg IHJldHVybiAwOw0KPj4+PiArfQ0KPj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvc3RyaWN0LWZsZXgtYXJyYXktMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZs ZXgtYXJyYXktMy5jDQo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+Pj4+IGluZGV4IDAwMDAw MDAwMDAwLi45OTBjNWJiNjIyMw0KPj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTMuYw0KPj4+PiBAQCAtMCwwICsxLDYw IEBADQo+Pj4+ICsvKiB0ZXN0IHRoZSBjb21iaW5hdGlvbiBvZiBhdHRyaWJ1dGUgc3RyaWN0X2Zs ZXhfYXJyYXkgYW5kIG9wdGlvbg0KPj4+PiArICAgLWZzdHJpY3QtZmxleC1hcnJheTogd2hlbiBi b3RoIGF0dHJpYnV0ZSBhbmQgb3B0aW9uIHNwZWNpZmllZCwNCj4+Pj4gKyAgIGF0dHJpYnV0ZSB3 aWxsIGhhdmUgaGlnaGVyIHByaW9yaXR5LiAgKi8NCj4+Pj4gKy8qIHsgZGctZG8gcnVuIH0gKi8N Cj4+Pj4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3RyaWN0LWZsZXgtYXJyYXk9MCIgfSAqLw0K Pj4+PiArDQo+Pj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4+Pj4gKw0KPj4+PiArI2RlZmluZSBl eHBlY3QocCwgX3YpIGRvIHsgXA0KPj4+PiArICAgIHNpemVfdCB2ID0gX3Y7IFwNCj4+Pj4gKyAg ICBpZiAocCA9PSB2KSBcDQo+Pj4+ICsgICAgICAgIHByaW50Zigib2s6ICAlcyA9PSAlemRcbiIs ICNwLCBwKTsgXA0KPj4+PiArICAgIGVsc2UgXA0KPj4+PiArCXsgIFwNCj4+Pj4gKyAgICAgICAg ICBwcmludGYoIldBVDogJXMgPT0gJXpkIChleHBlY3RlZCAlemQpXG4iLCAjcCwgcCwgdik7IFwN Cj4+Pj4gKwkgIF9fYnVpbHRpbl9hYm9ydCAoKTsgXA0KPj4+PiArCX0gXA0KPj4+PiArfSB3aGls ZSAoMCk7DQo+Pj4+ICsNCj4+Pj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8xIHsNCj4+Pj4gKyAg ICBpbnQgYTsNCj4+Pj4gKyAgICBpbnQgYjsNCj4+Pj4gKyAgICBpbnQgY1s0XSBfX2F0dHJpYnV0 ZV9fICgoc3RyaWN0X2ZsZXhfYXJyYXkgKDEpKSk7DQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtz dHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiB7DQo+Pj4+ICsgICAgaW50IGE7DQo+Pj4+ICsgICAgaW50 IGI7DQo+Pj4+ICsgICAgaW50IGNbMV0gX19hdHRyaWJ1dGVfXyAoKHN0cmljdF9mbGV4X2FycmF5 ICgyKSkpOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMg ew0KPj4+PiArICAgIGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzBd IF9fYXR0cmlidXRlX18gKChzdHJpY3RfZmxleF9hcnJheSAoMykpKTsNCj4+Pj4gK307DQo+Pj4+ ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfNCB7DQo+Pj4+ICsgICAgaW50IGE7DQo+Pj4+ICsgICAg aW50IGI7DQo+Pj4+ICsgICAgaW50IGNbXTsNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gK3ZvaWQg X19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9fKSkgc3R1ZmYoDQo+Pj4+ICsgICAgc3RydWN0IHRy YWlsaW5nX2FycmF5XzEgKm5vcm1hbCwNCj4+Pj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlf MiAqdHJhaWxpbmdfMSwNCj4+Pj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMyAqdHJhaWxp bmdfMCwNCj4+Pj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfNCAqdHJhaWxpbmdfZmxleCkN Cj4+Pj4gK3sNCj4+Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKG5vcm1hbC0+ YywgMSksIDE2KTsNCj4+Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWls aW5nXzEtPmMsIDEpLCA0KTsNCj4+Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXpl KHRyYWlsaW5nXzAtPmMsIDEpLCAwKTsNCj4+Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVj dF9zaXplKHRyYWlsaW5nX2ZsZXgtPmMsIDEpLCAtMSk7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4g K2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+Pj4+ICt7DQo+Pj4+ICsgICAgc3R1 ZmYoKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZv aWQgKilhcmd2WzBdKTsNCj4+Pj4gKw0KPj4+PiArICAgIHJldHVybiAwOw0KPj4+PiArfQ0KPj4+ PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtb2JqZWN0LXNpemUuY2MgYi9nY2MvdHJlZS1vYmplY3Qt c2l6ZS5jYw0KPj4+PiBpbmRleCA0ZWI0NTRhNGEzMy4uOTA3MTBlY2JhNzIgMTAwNjQ0DQo+Pj4+ IC0tLSBhL2djYy90cmVlLW9iamVjdC1zaXplLmNjDQo+Pj4+ICsrKyBiL2djYy90cmVlLW9iamVj dC1zaXplLmNjDQo+Pj4+IEBAIC02MDQsOSArNjA0LDkgQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3Ry dWN0IG9iamVjdF9zaXplX2luZm8gKm9zaSwgY29uc3RfdHJlZSBwdHIsDQo+Pj4+IAkgIGVsc2Ug aWYgKHZhciAhPSBwdF92YXIgJiYgVFJFRV9DT0RFIChwdF92YXIpID09IE1FTV9SRUYpDQo+Pj4+ IAkgICAgew0KPj4+PiAJICAgICAgdHJlZSB2ID0gdmFyOw0KPj4+PiAtCSAgICAgIC8qIEZvciAm WC0+ZmxkLCBjb21wdXRlIG9iamVjdCBzaXplIG9ubHkgaWYgZmxkIGlzbid0IHRoZSBsYXN0DQo+ Pj4+IC0JCSBmaWVsZCwgYXMgc3RydWN0IHsgaW50IGk7IGNoYXIgY1sxXTsgfSBpcyBvZnRlbiB1 c2VkIGluc3RlYWQNCj4+Pj4gLQkJIG9mIGZsZXhpYmxlIGFycmF5IG1lbWJlci4gICovDQo+Pj4+ ICsJICAgICAgYm9vbCBpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmID0gZmFsc2U7DQo+Pj4+ICsJ ICAgICAgLyogRm9yICZYLT5mbGQsIGNvbXB1dGUgb2JqZWN0IHNpemUgaWYgZmxkIGlzbid0IGEg ZmxleGlibGUgYXJyYXkNCj4+Pj4gKwkJIG1lbWJlci4gICovDQo+Pj4+IAkgICAgICB3aGlsZSAo diAmJiB2ICE9IHB0X3ZhcikNCj4+Pj4gCQlzd2l0Y2ggKFRSRUVfQ09ERSAodikpDQo+Pj4+IAkJ ICB7DQo+Pj4+IEBAIC02MzMsNiArNjMzLDkgQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3RydWN0IG9i amVjdF9zaXplX2luZm8gKm9zaSwgY29uc3RfdHJlZSBwdHIsDQo+Pj4+IAkJCXYgPSBOVUxMX1RS RUU7DQo+Pj4+IAkJCWJyZWFrOw0KPj4+PiAJCSAgICAgIH0NCj4+Pj4gKwkJICAgIGlzX2ZsZXhp YmxlX2FycmF5X21lbV9yZWYNCj4+Pj4gKwkJICAgICAgPSBhcnJheV9hdF9zdHJ1Y3RfZW5kX3Ag KHYpDQo+Pj4+ICsJCQkmJiAhREVDTF9OT1RfRkxFWEFSUkFZIChUUkVFX09QRVJBTkQgKHYsIDEp KTsNCj4+PiANCj4+PiBBcyBzYWlkIGluIHRoZSByZXZpZXcgZm9yIHRoZSBmaXJzdCBwYXRjaCBh cnJheV9hdF9zdHJ1Y3RfZW5kX3Agc2hvdWxkDQo+Pj4gY2hlY2sgREVDTF9OT1RfRkxFWEFSUkFZ Lg0KPj4gT2theS4NCj4+IA0KPj4gVGhlbiwgc2hvdWxkIHdlIGNoYW5nZSB0aGUgbmFtZSBvZiDi gJxhcnJheV9hdF9zdHJ1Y3RfZW5kX3DigJ0gdG8gYSBtb3JlIA0KPj4gZGVzY3JpcHRpdmUgbmFt ZSwgZm9yIGV4YW1wbGUs4oCdZmxleGlibGVfYXJyYXlfbWVtYmVyX3DigJ0/IE90aGVyd2lzZSwg SXTigJlzIA0KPj4gcmVhbGx5IGNvbmZ1c2luZy4NCj4gDQo+IEl0IGhhcyBiZWVuIHRoYXQgd2F5 IHNpbmNlIGZvcmV2ZXIsIHNvIHBsZWFzZSBkb24ndCAoYXQgbGVhc3Qgbm90IGFzDQo+IHBhcnQg b2YgdGhpcyBzZXJpZXMpLg0KDQpPa2F5LCBJIHdpbGwga2VlcCB0aGUgbmFtZSBhcyBpdCBpbiB0 aGlzIHNldCBvZiBwYXRjaGVzLg0KKEhvd2V2ZXIsIEkgZG8gdGhpbmsgdGhhdCB3ZSBzaG91bGQg Y2hhbmdlIHRoZSBuYW1lIG9mIHRoaXMgcm91dGluZSwgaXTigJlzIHJlYWxseSBjb25mdXNpbmfi gKYpDQoNClFpbmcNCj4gDQo+PiANCj4+IA0KPj4+IA0KPj4+IE9LIHdpdGggcmVtb3ZpbmcgdGhl IGV4dHJhIGNoZWNrIGhlcmUuDQo+PiANCj4+IE9rYXkuDQo+PiANCj4+IA0KPj4gdGhhbmtzLg0K Pj4gDQo+PiBRaW5nDQo+Pj4gDQo+Pj4+IAkJICAgIHdoaWxlICh2ICE9IHB0X3ZhciAmJiBUUkVF X0NPREUgKHYpID09IENPTVBPTkVOVF9SRUYpDQo+Pj4+IAkJICAgICAgaWYgKFRSRUVfQ09ERSAo VFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+Pj4gCQkJICAhPSBVTklPTl9UWVBF DQo+Pj4+IEBAIC02NDUsMTIgKzY0OCw5IEBAIGFkZHJfb2JqZWN0X3NpemUgKHN0cnVjdCBvYmpl Y3Rfc2l6ZV9pbmZvICpvc2ksIGNvbnN0X3RyZWUgcHRyLA0KPj4+PiAJCQkmJiBUUkVFX0NPREUg KFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+Pj4+IAkJCSAgID09IFJFQ09SRF9U WVBFKQ0KPj4+PiAJCSAgICAgIHsNCj4+Pj4gLQkJCXRyZWUgZmxkX2NoYWluID0gREVDTF9DSEFJ TiAoVFJFRV9PUEVSQU5EICh2LCAxKSk7DQo+Pj4+IC0JCQlmb3IgKDsgZmxkX2NoYWluOyBmbGRf Y2hhaW4gPSBERUNMX0NIQUlOIChmbGRfY2hhaW4pKQ0KPj4+PiAtCQkJICBpZiAoVFJFRV9DT0RF IChmbGRfY2hhaW4pID09IEZJRUxEX0RFQ0wpDQo+Pj4+IC0JCQkgICAgYnJlYWs7DQo+Pj4+IC0N Cj4+Pj4gLQkJCWlmIChmbGRfY2hhaW4pDQo+Pj4+ICsJCQkvKiBjb21wdXRlIG9iamVjdCBzaXpl IG9ubHkgaWYgdiBpcyBub3QgYQ0KPj4+PiArCQkJICAgZmxleGlibGUgYXJyYXkgbWVtYmVyLiAg Ki8NCj4+Pj4gKwkJCWlmICghaXNfZmxleGlibGVfYXJyYXlfbWVtX3JlZikNCj4+Pj4gCQkJICB7 DQo+Pj4+IAkJCSAgICB2ID0gTlVMTF9UUkVFOw0KPj4+PiAJCQkgICAgYnJlYWs7DQo+Pj4+IA0K Pj4+IA0KPj4+IC0tIA0KPj4+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4+ PiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0 NiwgOTA0NjEgTnVlcm5iZXJnLA0KPj4+IEdlcm1hbnk7IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBN eWVycywgQW5kcmV3IE1jRG9uYWxkLCBCb3VkaWVuIE1vZXJtYW47DQo+Pj4gSFJCIDM2ODA5IChB RyBOdWVybmJlcmcpDQo+PiANCj4+IA0KPiANCj4gLS0gDQo+IFJpY2hhcmQgQmllbmVyIDxyZ3Vl bnRoZXJAc3VzZS5kZT4NCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBG cmFua2Vuc3RyYXNzZSAxNDYsIDkwNDYxIE51ZXJuYmVyZywNCj4gR2VybWFueTsgR0Y6IEl2byBU b3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNEb25hbGQsIEJvdWRpZW4gTW9lcm1hbjsNCj4g SFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQoNCg==