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 CFBC7385E833 for ; Tue, 2 Aug 2022 14:06:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CFBC7385E833 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 272E5kfh022271; Tue, 2 Aug 2022 14:06:51 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 3hmu80xwc6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 02 Aug 2022 14:06:51 +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 272E4Eu9001056; Tue, 2 Aug 2022 14:06:50 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2171.outbound.protection.outlook.com [104.47.55.171]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hp57r7fc1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 02 Aug 2022 14:06:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aFikrKYN3OO/pNFOiG433VL26EzCl+Rj3qhPmbY3EQC/m3F0BJO3eMFv33WtT80dckI/xgHs1YWuhKARYWCWP0/DmSPTmszCTP5m2L3KmLNYS+5MTSdueq41u8b+nElEw1ZWqjH+R0zdm5ebu/5oCmkCefdO0xDpd87Wg6AhaC5CjlEYMfaV1UQxk0LAOj8hr6HSFqAHGlppxoZS3QVF/GyrpJUDzAnlaAOPXIpyXS+2I/tgpitH+ywEIDqCqR2bbfE7m7SE6JQP9svks+UHSuHz5L2Fq2IJYp+EOFPb7TcJH2MNsKAsuufw7e4si6YBPXBZd9orUY8x4R5PHTUOlw== 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=kzRhlx21BKPw2ibfqgbOV0PVJGlBSHhVeSRNZz4zxYM=; b=PyTD9aMJsk7yd6A0quJDj0W/U7jx9g9VwmbZdykTSUWAn56O+9r6xBghBkKyCfT+6kf812IcMtE+diycsrnobSzUeVsZxB5xMw1Cm1TytYRhWqoOzsPMxWtnJZpwkx0N73poGU1it9uU9jCESykVSCjR3oanQzFIlzx8ZpatK098thvEWYr2F1oQCnuwdXu1m+Es/Hr/ZZQt3n0V4O5FLQguSohQ8kr0cyFil/Q35jnnJNPSa6A4HPPCo0AZ4ZH71X2FlDbJADKtGA9SmZ3eLC0TGwZjqDthmd56dlqIUQfWlTliFvx6MG9zGOC4NZUBe0FYwwILIPGrxFYfZsB2Fw== 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 SN6PR10MB3453.namprd10.prod.outlook.com (2603:10b6:805:db::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.15; Tue, 2 Aug 2022 14:06:46 +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; Tue, 2 Aug 2022 14:06:46 +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][1/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][1/2]Add a new option -fstrict-flex-array[=n] and attribute strict_flex_array(n) and use it in PR101836 Thread-Index: AQHYm3kzWKnaJcRdM06lFScE7QxsLa2Tb+OAgAJjrgCAA+i8AIAAhLIAgAEEG4CAAHYlgA== Date: Tue, 2 Aug 2022 14:06:46 +0000 Message-ID: <393DFE88-B99B-41BF-A770-1B177B0E2ACE@oracle.com> References: <567D133A-E24A-4107-A843-95D2ED07ACF2@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: d2a45165-ee0c-450f-2497-08da74903c54 x-ms-traffictypediagnostic: SN6PR10MB3453:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hRWsVR0MODFsW88jAxA/r6PtK1NElhP6DaH7CbzpLbXD9wJfJuaMP0jbc/bp5+bgpOYoZ+ahDmtTEFADy4UdA/l1erzRZEUAEkG1XaUM8lA40H28jxSf8hlH0LGHA/o/q9Vtro80jtdDQthq2QsYoYpswLB8rT4mDnqEoN/eKpUdqN0DyGnePaqNHrvnwM+NcY28XAUISB8WjxJnCkrdDjUk0IF18BQYHO1X+nsg2OACu/YmMk3rdlkb2teX52Y/5oUjm6gQSkT6MeYvdYAqIvvTCpLZJrNP/61DPkIXnbuKoPN3qF6WIyzAjJ3IRZ9yu8MCu+t0HvVSZ+W2H1HuyfqgHrhba948Afp+Ie7vspMDnjS7cTzHB6xpbel+ENBLjn79tYs+VM+M0Bp81piYE06J5HuwtLt9P1e0S7R9C8knJREXr6FrLXXOU21PiyN+4vlmJkVG/PC+F36gBYK3pwP2Tgs7QL5mgY5jbdCWW7fxIhr8WkZTWnerUqoHq2bZQx4xta6E9EdUo4WBcIUhKvLrRyPJHPduTBGCcVjqyIybxnUvThzScA1LN5+eIhYxUZT7jLm0HykG3ms0PireruGS87tlJGJXNGL778m4I5Hg+PXZFeAmonSb4h8SdznDDDhThnBn8tw5rsTp84iZ9c71XuyvIvlAqyEBz8yL6jTEOGXRwftCXGb+CqR/In+7ksVzmMEeNkZbE13hLr9sSpaGlQEyPvQU19mJ3/c4wrxhsO+M5J64/EgnZ8Jg4IfKUJwwcvpUnoKQHIv6aB7oQ3Up4mVphFCpAH4kNtcbylbRQfZun6+QATmTIHlNp7e0V9KA+mKWy0YDOPdjsacnghPyGo6CKkrHgA2/p+uMp8RUSwYZNDdDysyEFfm/uy8MzRpP5gE3W1+pTEmqbyZduA== 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)(136003)(39860400002)(376002)(366004)(346002)(396003)(316002)(83380400001)(2906002)(84970400001)(33656002)(41300700001)(8936002)(86362001)(66556008)(66946007)(66476007)(76116006)(91956017)(64756008)(38070700005)(478600001)(71200400001)(4326008)(8676002)(5660300002)(966005)(6486002)(66446008)(44832011)(122000001)(30864003)(6506007)(2616005)(36756003)(186003)(6916009)(54906003)(6512007)(38100700002)(53546011)(45980500001)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cTBySjRuWk93L1RRY0NOajB5K1hKVFFVem1mS282ZSttNDJJTExrdEQ2R05T?= =?utf-8?B?bkwzMXdycFE4WmF2MElxZTFORGxpblJheGp2UEhMZCtYRXJCOEtYNERsRW9n?= =?utf-8?B?U0Q3Um8vV25jWS94cFBQMVpSTWZOQ3ZSZFJCRHNZNk0wM0RuMWI1YUMycU1s?= =?utf-8?B?V3RDVjVsZXFpYVFkNUlWSk10WkJBRnZJSlR5Wkx4MWxCS1VjZjhBVU9MUWVT?= =?utf-8?B?SFovVTJkMHZ4N2Rwb0xUQ0E4bmQ2K2JBS3JtSnBDeUg2bjJwZURMWGZLRVVm?= =?utf-8?B?NWxXU0pQVmFnREI4aDVhbzZPK3ViVzF4QWhkdTFNb2RtWVlZQjFlRWcra1hJ?= =?utf-8?B?OUpRRTZMMXBaeld0bTdZWUpveWV2U3NSczVlc3hObGNKVUcyMVJkaU1xenAr?= =?utf-8?B?ZmRySU9MWENFb2FHMUtkcGtwcDhwNGsrMEVoM2xNUVpjd0Zubmxsb0lnM2dh?= =?utf-8?B?elVWbFh5amZId1pSZ2NMdHE5aG1CNkIrUjNkQ1F5Y3Z4VVdqRDV3V0NCbUhY?= =?utf-8?B?LzM5QlJKQVJpOW5BRGVhaXI4VGJVUkV4NnN4eXp3OVczRlVGbVBjMGxoRStj?= =?utf-8?B?aGdjdzBxSTNhZ0RJSEYrWGJvNS92M05EbHBpcEJSS0NWQ3FBMnhSb2RncTVL?= =?utf-8?B?S1cwK2t6aFd2MkhkZXpTcm5qUk53dVRUNlpBcEdYZjhLcVBVWWVMOHl3YXFE?= =?utf-8?B?SnpWNWlOTkVZUlNzczRVeVpJSm9xcERKeHB3a0xNVzZmeC9wR3NIcUlYU1hR?= =?utf-8?B?aCtRSkExc0MxTWp1ZmZrRytYNUc1RkZWanZ5OFZQQktrdGM0eWw3TWx1VFd5?= =?utf-8?B?dXdNZExHWUEvNHZWM2NHNmRGYk5TZVNFZUNHN1JHYXQ2VlNGMklwVmF0N1R4?= =?utf-8?B?ODBuNmlWK0JEcUVDcTBWK1h0THlHUkt4VlhhQlRQRUM3Rk9WRWwzWU9wMHBh?= =?utf-8?B?bm9CNHBLcmxzNnBiQkZNVDcrY1ZyZ2M1cDFrZ2lvQ2g2MDE0d1ZiNEY4Wi94?= =?utf-8?B?VmJIM3dEbVJ4R0lERHQ2ZHl6dG1MelRPTThLQkIzWGdtampDNll2MTg4R1Bu?= =?utf-8?B?Z0VlS09lTHJOMjVaQ0pxTkpVMnRTemhuL0hoRVBWZU91VTlDdytabjV0RXow?= =?utf-8?B?TzdpVW5EeHJJMmczQmVJUWVnZStsTmZrYnl6Tzd1UHNjMHpjRC85QlN4OUVF?= =?utf-8?B?bng2QWRKSU1RNEhKUVMwNEdkUkpxUDl3RTRBQi93K0N2N042Wk9ZSDRPS25o?= =?utf-8?B?UXQ5NHgwOStraC9zcDJmQ1A3bHd5TVFSVXFxTmxnSGg5NG4xZEx5NzhjT3o4?= =?utf-8?B?VWsvM3VsL0tlSnhqbHNSclhJZFp1dm50YmV4V3VMQlZSVWoyVE9uSEdaOG1T?= =?utf-8?B?WXMrbFBTbEN3Y1NRbFZlWS9yQkNlZE0zc0VTeVdLKzhUb2hKa2h6N0tmbUJo?= =?utf-8?B?RGN4aDNUbHRUK2ZibmUvV2NDZjB2QUdqVldkbExDUGwxWExZeVc0K05OUUx3?= =?utf-8?B?WE5nY2Y0c2JSY0hvbUFUWm1wMWh3bjI0N1BhOTFrNGlIc0x1aC8yQzhmVTNu?= =?utf-8?B?aWFmdDNoQzhUb2NtNVVZbEc1L1JjQnBQSWZoK2JzTERhRzlBVU83TkJIOS9h?= =?utf-8?B?UkFjYmhXdmVZd25KemRFdVIwY2dpZGxqWG5xQUw5Rm1peUtoemZFZFR3ZXQy?= =?utf-8?B?NU0xK1JhWGcvVGw0U1ZtcldEeHlYY21TdGxaMm9zNEdtNU8xcjhKZjJKeTBK?= =?utf-8?B?Z0trYVVxayt0S3hBOURZbE1WQjc0NEtSR0FGMC9pcEFoazNEdjFVdElYRTBQ?= =?utf-8?B?UG40SlVDK295cnRwemV6R1hQWTNoZUhMK1lISzI0UXdoZEhCdVV3MlhjZXgv?= =?utf-8?B?MkNJSmtvT3pxbDEyZWdMTlpqRU9lVmVpQXJBQm9jQTE3dTRhU0szbzV5YmZt?= =?utf-8?B?SVNrTXBFbXhrcXpyN3FRUmt1UnJVcXpERTYzU3VDL2ZWZTNpNWgwQnBEZWdo?= =?utf-8?B?V0FpS0pBVlpScWpVTGJHSkxrYitFUk1hZUpPUFJHanI0aWttdFBOTnhmTWFs?= =?utf-8?B?Nmlwd1JjWmoyNGpoOGpCUGU5dFJzREdadTNBdDVSK0FoYk1DbUVGcXJYYzB4?= =?utf-8?B?cGpSdlVqYWhyQUcvczV6aXJ5RGh4RE9XbUZJTGFWV3lmRndBVVhKZmJOck9O?= =?utf-8?Q?svpBFH8z7zVobTI4gH5GWW4=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: d2a45165-ee0c-450f-2497-08da74903c54 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2022 14:06:46.2137 (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: njY3DjAsFLwWxKZiPPFo5XsWQ4TR54TZXG/jitGYSxtkkEpSaARq5eJai73WppxiJLBgRKpthahhYyzuIJdo/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR10MB3453 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-02_07,2022-08-02_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-2208020065 X-Proofpoint-ORIG-GUID: tJLFYaXOWwVIQWr4-GT_yI-pFc3CGpNN X-Proofpoint-GUID: tJLFYaXOWwVIQWr4-GT_yI-pFc3CGpNN 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, KAM_SHORT, 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: Tue, 02 Aug 2022 14:07:04 -0000 DQoNCj4gT24gQXVnIDIsIDIwMjIsIGF0IDM6MDMgQU0sIFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRo ZXJAc3VzZS5kZT4gd3JvdGU6DQo+IA0KPiBPbiBNb24sIDEgQXVnIDIwMjIsIFFpbmcgWmhhbyB3 cm90ZToNCj4gDQo+PiANCj4+IA0KPj4+IE9uIEF1ZyAxLCAyMDIyLCBhdCAzOjM4IEFNLCBSaWNo YXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0KPj4+IA0KPj4+IE9uIEZyaSwg MjkgSnVsIDIwMjIsIFFpbmcgWmhhbyB3cm90ZToNCj4+PiANCj4+Pj4gSGksIFJpY2hhcmQsDQo+ Pj4+IA0KPj4+PiBUaGFua3MgYSBsb3QgZm9yIHlvdXIgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb25z LiAoQW5kIHNvcnJ5IGZvciBteSBsYXRlIHJlcGx5KS4NCj4+Pj4gDQo+Pj4+PiBPbiBKdWwgMjgs IDIwMjIsIGF0IDM6MjYgQU0sIFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4gd3Jv dGU6DQo+Pj4+PiANCj4+Pj4+IE9uIFR1ZSwgMTkgSnVsIDIwMjIsIFFpbmcgWmhhbyB3cm90ZToN Cj4+Pj4+IA0KPj4+Pj4+IEZyb20gMzg1NDAwNDgwMmI4ZTJmMTMyZWJmMjE4ZmMzNWE2MzJmNWU4 MGM2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCj4+Pj4+PiBGcm9tOiBRaW5nIFpoYW8gPHFp bmcuemhhb0BvcmFjbGUuY29tPg0KPj4+Pj4+IERhdGU6IE1vbiwgMTggSnVsIDIwMjIgMTc6MDQ6 MTIgKzAwMDANCj4+Pj4+PiBTdWJqZWN0OiBbUEFUQ0ggMS8yXSBBZGQgYSBuZXcgb3B0aW9uIC1m c3RyaWN0LWZsZXgtYXJyYXlbPW5dIGFuZCBuZXcNCj4+Pj4+PiBhdHRyaWJ1dGUgc3RyaWN0X2Zs ZXhfYXJyYXkNCj4+Pj4+PiANCj4+Pj4+PiBBZGQgdGhlIGZvbGxvd2luZyBuZXcgb3B0aW9uIC1m c3RyaWN0LWZsZXgtYXJyYXlbPW5dIGFuZCBhIGNvcnJlc3BvbmRpbmcNCj4+Pj4+PiBhdHRyaWJ1 dGUgc3RyaWN0X2ZsZXhfYXJyYXkgdG8gR0NDOg0KPj4+Pj4+IA0KPj4+Pj4+ICctZnN0cmljdC1m bGV4LWFycmF5Jw0KPj4+Pj4+ICBUcmVhdCB0aGUgdHJhaWxpbmcgYXJyYXkgb2YgYSBzdHJ1Y3R1 cmUgYXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXINCj4+Pj4+PiAgaW4gYSBzdHJpY3RlciB3YXku ICBUaGUgcG9zaXRpdmUgZm9ybSBpcyBlcXVpdmFsZW50IHRvDQo+Pj4+Pj4gICctZnN0cmljdC1m bGV4LWFycmF5PTMnLCB3aGljaCBpcyB0aGUgc3RyaWN0ZXN0LiAgQSB0cmFpbGluZyBhcnJheQ0K Pj4+Pj4+ICBpcyB0cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIG9ubHkgd2hlbiBp dCBpcyBkZWNsYXJlZCBhcyBhDQo+Pj4+Pj4gIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5 IHN0YW5kYXJkIG9ud2FyZHMuICBUaGUgbmVnYXRpdmUgZm9ybQ0KPj4+Pj4+ICBpcyBlcXVpdmFs ZW50IHRvICctZnN0cmljdC1mbGV4LWFycmF5PTAnLCB3aGljaCBpcyB0aGUgbGVhc3QNCj4+Pj4+ PiAgc3RyaWN0LiAgQWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzIGFyZSB0cmVhdGVk IGFzIGZsZXhpYmxlDQo+Pj4+Pj4gIGFycmF5IG1lbWJlcnMuDQo+Pj4+Pj4gDQo+Pj4+Pj4gJy1m c3RyaWN0LWZsZXgtYXJyYXk9TEVWRUwnDQo+Pj4+Pj4gIFRyZWF0IHRoZSB0cmFpbGluZyBhcnJh eSBvZiBhIHN0cnVjdHVyZSBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4+Pj4+ICBpbiBh IHN0cmljdGVyIHdheS4gIFRoZSB2YWx1ZSBvZiBMRVZFTCBjb250cm9scyB0aGUgbGV2ZWwgb2YN Cj4+Pj4+PiAgc3RyaWN0bmVzcy4NCj4+Pj4+PiANCj4+Pj4+PiAgVGhlIHBvc3NpYmxlIHZhbHVl cyBvZiBMRVZFTCBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZQ0KPj4+Pj4+ICAnc3RyaWN0X2ZsZXhf YXJyYXknIGF0dHJpYnV0ZSAoKm5vdGUgVmFyaWFibGUgQXR0cmlidXRlczo6KS4NCj4+Pj4+PiAN Cj4+Pj4+PiAgWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgdHJh aWxpbmcgYXJyYXkgZmllbGQNCj4+Pj4+PiAgb2YgYSBzdHJ1Y3R1cmUgYnkgdXNpbmcgdGhlIHZh cmlhYmxlIGF0dHJpYnV0ZSAnc3RyaWN0X2ZsZXhfYXJyYXknDQo+Pj4+Pj4gIGF0dHJpYnV0ZSAo Km5vdGUgVmFyaWFibGUgQXR0cmlidXRlczo6KS4NCj4+Pj4+PiANCj4+Pj4+PiAnc3RyaWN0X2Zs ZXhfYXJyYXkgKExFVkVMKScNCj4+Pj4+PiAgVGhlICdzdHJpY3RfZmxleF9hcnJheScgYXR0cmli dXRlIHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUNCj4+Pj4+PiAgdHJhaWxpbmcgYXJyYXkgZmll bGQgb2YgYSBzdHJ1Y3R1cmUuICBJdCBzcGVjaWZpZXMgdGhlIGxldmVsIG9mDQo+Pj4+Pj4gIHN0 cmljdG5lc3Mgb2YgdHJlYXRpbmcgdGhlIHRyYWlsaW5nIGFycmF5IGZpZWxkIG9mIGEgc3RydWN0 dXJlIGFzIGENCj4+Pj4+PiAgZmxleGlibGUgYXJyYXkgbWVtYmVyLiAgTEVWRUwgbXVzdCBiZSBh biBpbnRlZ2VyIGJldHdlbiAwIHRvIDMuDQo+Pj4+Pj4gDQo+Pj4+Pj4gIExFVkVMPTAgaXMgdGhl IGxlYXN0IHN0cmljdCBsZXZlbCwgYWxsIHRyYWlsaW5nIGFycmF5cyBvZg0KPj4+Pj4+ICBzdHJ1 Y3R1cmVzIGFyZSB0cmVhdGVkIGFzIGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuICBMRVZFTD0zIGlz IHRoZQ0KPj4+Pj4+ICBzdHJpY3Rlc3QgbGV2ZWwsIG9ubHkgd2hlbiB0aGUgdHJhaWxpbmcgYXJy YXkgaXMgZGVjbGFyZWQgYXMgYQ0KPj4+Pj4+ICBmbGV4aWJsZSBhcnJheSBtZW1iZXIgcGVyIEM5 OSBzdGFuZGFyZCBvbndhcmRzIChbXSksIGl0IGlzIHRyZWF0ZWQNCj4+Pj4+PiAgYXMgYSBmbGV4 aWJsZSBhcnJheSBtZW1iZXIuDQo+Pj4+Pj4gDQo+Pj4+Pj4gIFRoZXJlIGFyZSB0d28gbW9yZSBs ZXZlbHMgaW4gYmV0d2VlbiAwIGFuZCAzLCB3aGljaCBhcmUgcHJvdmlkZWQgdG8NCj4+Pj4+PiAg c3VwcG9ydCBvbGRlciBjb2RlcyB0aGF0IHVzZSBHQ0MgemVyby1sZW5ndGggYXJyYXkgZXh0ZW5z aW9uIChbMF0pDQo+Pj4+Pj4gIG9yIG9uZS1zaXplIGFycmF5IGFzIGZsZXhpYmxlIGFycmF5IG1l bWJlciAoWzFdKTogV2hlbiBMRVZFTCBpcyAxLA0KPj4+Pj4+ICB0aGUgdHJhaWxpbmcgYXJyYXkg aXMgdHJlYXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciB3aGVuIGl0IGlzDQo+Pj4+Pj4g IGRlY2xhcmVkIGFzIGVpdGhlciBbXSwgWzBdLCBvciBbMV07IFdoZW4gTEVWRUwgaXMgMiwgdGhl IHRyYWlsaW5nDQo+Pj4+Pj4gIGFycmF5IGlzIHRyZWF0ZWQgYXMgYSBmbGV4aWJsZSBhcnJheSBt ZW1iZXIgd2hlbiBpdCBpcyBkZWNsYXJlZCBhcw0KPj4+Pj4+ICBlaXRoZXIgW10sIG9yIFswXS4N Cj4+Pj4+PiANCj4+Pj4+PiAgVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgd2l0aCBvciB3aXRo b3V0ICctZnN0cmljdC1mbGV4LWFycmF5Jy4NCj4+Pj4+PiAgV2hlbiBib3RoIHRoZSBhdHRyaWJ1 dGUgYW5kIHRoZSBvcHRpb24gcHJlc2VudCBhdCB0aGUgc2FtZSB0aW1lLA0KPj4+Pj4+ICB0aGUg bGV2ZWwgb2YgdGhlIHN0cmljdG5lc3MgZm9yIHRoZSBzcGVjaWZpYyB0cmFpbGluZyBhcnJheSBm aWVsZA0KPj4+Pj4+ICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhdHRyaWJ1dGUuDQo+Pj4+Pj4gDQo+ Pj4+Pj4gZ2NjL2MtZmFtaWx5L0NoYW5nZUxvZzoNCj4+Pj4+PiANCj4+Pj4+PiAJKiBjLWF0dHJp YnMuY2MgKGhhbmRsZV9zdHJpY3RfZmxleF9hcnJheV9hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24u DQo+Pj4+Pj4gCShjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGUpOiBOZXcgaXRlbSBmb3Igc3RyaWN0 X2ZsZXhfYXJyYXkuDQo+Pj4+Pj4gCSogYy5vcHQgKGZzdHJpY3QtZmxleC1hcnJheSk6IE5ldyBv cHRpb24uDQo+Pj4+Pj4gCShmc3RyaWN0LWZsZXgtYXJyYXk9KTogTmV3IG9wdGlvbi4NCj4+Pj4+ PiANCj4+Pj4+PiBnY2MvYy9DaGFuZ2VMb2c6DQo+Pj4+Pj4gDQo+Pj4+Pj4gCSogYy1kZWNsLmNj IChhZGRfZmxleGlibGVfYXJyYXlfZWx0c190b19zaXplKTogQ2FsbCBuZXcgdXRpbGl0eQ0KPj4+ Pj4+IAlyb3V0aW5lIGZsZXhpYmxlX2FycmF5X21lbWJlcl9wLg0KPj4+Pj4+IAkoaXNfZmxleGli bGVfYXJyYXlfbWVtYmVyX3ApOiBOZXcgZnVuY3Rpb24uDQo+Pj4+Pj4gCShmaW5pc2hfc3RydWN0 KTogU2V0IHRoZSBuZXcgREVDTF9OT1RfRkxFWEFSUkFZIGZsYWcuDQo+Pj4+Pj4gDQo+Pj4+Pj4g Z2NjL0NoYW5nZUxvZzoNCj4+Pj4+PiANCj4+Pj4+PiAJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3Vt ZW50IHN0cmljdF9mbGV4X2FycmF5IGF0dHJpYnV0ZS4NCj4+Pj4+PiAJKiBkb2MvaW52b2tlLnRl eGk6IERvY3VtZW50IC1mc3RyaWN0LWZsZXgtYXJyYXlbPW5dIG9wdGlvbi4NCj4+Pj4+PiAJKiB0 cmVlLWNvcmUuaCAoc3RydWN0IHRyZWVfZGVjbF9jb21tb24pOiBOZXcgYml0IGZpZWxkDQo+Pj4+ Pj4gCWRlY2xfbm90X2ZsZXhhcnJheS4NCj4+Pj4+PiAJKiB0cmVlLmNjIChjb21wb25lbnRfcmVm X3NpemUpOiBSZW9yZyBieSB1c2luZyBuZXcgdXRpbGl0eSBmdW5jdGlvbnMuDQo+Pj4+Pj4gCShm bGV4aWJsZV9hcnJheV9tZW1iZXJfcCk6IE5ldyBmdW5jdGlvbi4NCj4+Pj4+PiAJKHplcm9fbGVu Z3RoX2FycmF5X3ApOiBMaWtld2lzZS4NCj4+Pj4+PiAJKG9uZV9lbGVtZW50X2FycmF5X3ApOiBM aWtld2lzZS4NCj4+Pj4+PiAJKGZsZXhpYmxlX2FycmF5X3R5cGVfcCk6IExpa2V3aXNlLg0KPj4+ Pj4+IAkqIHRyZWUuaCAoREVDTF9OT1RfRkxFWEFSUkFZKTogTmV3IGZsYWcuDQo+Pj4+Pj4gCSh6 ZXJvX2xlbmd0aF9hcnJheV9wKTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZS4NCj4+Pj4+PiAJKG9u ZV9lbGVtZW50X2FycmF5X3ApOiBMaWtld2lzZS4NCj4+Pj4+PiAJKGZsZXhpYmxlX2FycmF5X21l bWJlcl9wKTogTGlrZXdpc2UuDQo+Pj4+Pj4gDQo+Pj4+Pj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VM b2c6DQo+Pj4+Pj4gDQo+Pj4+Pj4gCSogZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuYzogTmV3 IHRlc3QuDQo+Pj4+Pj4gLS0tDQo+Pj4+Pj4gZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyAgICAg ICAgICAgICAgICAgIHwgIDQ3ICsrKysrKysrDQo+Pj4+Pj4gZ2NjL2MtZmFtaWx5L2Mub3B0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsrDQo+Pj4+Pj4gZ2NjL2MvYy1kZWNsLmNjICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkxICsrKysrKysrKysrKystLQ0KPj4+Pj4+IGdj Yy9kb2MvZXh0ZW5kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArKysrDQo+Pj4+ Pj4gZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsrKyst DQo+Pj4+Pj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMS5jIHwgIDMx ICsrKysrDQo+Pj4+Pj4gZ2NjL3RyZWUtY29yZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA1ICstDQo+Pj4+Pj4gZ2NjL3RyZWUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMTMwICsrKysrKysrKysrKysrLS0tLS0tLQ0KPj4+Pj4+IGdjYy90cmVlLmggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArKy0NCj4+Pj4+PiA5IGZpbGVzIGNoYW5n ZWQsIDMyMiBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkNCj4+Pj4+PiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMS5jDQo+Pj4+ Pj4gDQo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MgYi9nY2Mv Yy1mYW1pbHkvYy1hdHRyaWJzLmNjDQo+Pj4+Pj4gaW5kZXggYzhkOTY3MjNmNGMuLjEwZDE2NTMy ZjBkIDEwMDY0NA0KPj4+Pj4+IC0tLSBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MNCj4+Pj4+ PiArKysgYi9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmNjDQo+Pj4+Pj4gQEAgLTEwMSw2ICsxMDEs OCBAQCBzdGF0aWMgdHJlZSBoYW5kbGVfc3BlY2lhbF92YXJfc2VjX2F0dHJpYnV0ZSAodHJlZSAq LCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7DQo+Pj4+Pj4gc3RhdGljIHRyZWUgaGFuZGxlX2Fs aWduZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsNCj4+Pj4+ PiBzdGF0aWMgdHJlZSBoYW5kbGVfd2Fybl9pZl9ub3RfYWxpZ25lZF9hdHRyaWJ1dGUgKHRyZWUg KiwgdHJlZSwgdHJlZSwNCj4+Pj4+PiAJCQkJCQkgIGludCwgYm9vbCAqKTsNCj4+Pj4+PiArc3Rh dGljIHRyZWUgaGFuZGxlX3N0cmljdF9mbGV4X2FycmF5X2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVl LCB0cmVlLA0KPj4+Pj4+ICsJCQkJCQlpbnQsIGJvb2wgKik7DQo+Pj4+Pj4gc3RhdGljIHRyZWUg aGFuZGxlX3dlYWtfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKSA7 DQo+Pj4+Pj4gc3RhdGljIHRyZWUgaGFuZGxlX25vcGx0X2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVl LCB0cmVlLCBpbnQsIGJvb2wgKikgOw0KPj4+Pj4+IHN0YXRpYyB0cmVlIGhhbmRsZV9hbGlhc19p ZnVuY19hdHRyaWJ1dGUgKGJvb2wsIHRyZWUgKiwgdHJlZSwgdHJlZSwgYm9vbCAqKTsNCj4+Pj4+ PiBAQCAtMzY3LDYgKzM2OSw4IEBAIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBjX2NvbW1v bl9hdHRyaWJ1dGVfdGFibGVbXSA9DQo+Pj4+Pj4gCSAgICAgICAgICAgICAgICAgICAgICBhdHRy X2FsaWduZWRfZXhjbHVzaW9ucyB9LA0KPj4+Pj4+IHsgIndhcm5faWZfbm90X2FsaWduZWQiLCAg ICAwLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwNCj4+Pj4+PiAJCQkgICAgICBoYW5k bGVfd2Fybl9pZl9ub3RfYWxpZ25lZF9hdHRyaWJ1dGUsIE5VTEwgfSwNCj4+Pj4+PiArICB7ICJz dHJpY3RfZmxleF9hcnJheSIsICAgICAgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us DQo+Pj4+Pj4gKwkJCSAgICAgIGhhbmRsZV9zdHJpY3RfZmxleF9hcnJheV9hdHRyaWJ1dGUsIE5V TEwgfSwNCj4+Pj4+PiB7ICJ3ZWFrIiwgICAgICAgICAgICAgICAgICAgMCwgMCwgdHJ1ZSwgIGZh bHNlLCBmYWxzZSwgZmFsc2UsDQo+Pj4+Pj4gCQkJICAgICAgaGFuZGxlX3dlYWtfYXR0cmlidXRl LCBOVUxMIH0sDQo+Pj4+Pj4geyAibm9wbHQiLCAgICAgICAgICAgICAgICAgICAwLCAwLCB0cnVl LCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwNCj4+Pj4+PiBAQCAtMjQ5OCw2ICsyNTAyLDQ5IEBAIGhh bmRsZV93YXJuX2lmX25vdF9hbGlnbmVkX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1l LA0KPj4+Pj4+IAkJCQkJICBub19hZGRfYXR0cnMsIHRydWUpOw0KPj4+Pj4+IH0NCj4+Pj4+PiAN Cj4+Pj4+PiArLyogSGFuZGxlIGEgInN0cmljdF9mbGV4X2FycmF5IiBhdHRyaWJ1dGU7IGFyZ3Vt ZW50cyBhcyBpbg0KPj4+Pj4+ICsgICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICov DQo+Pj4+Pj4gKw0KPj4+Pj4+ICtzdGF0aWMgdHJlZQ0KPj4+Pj4+ICtoYW5kbGVfc3RyaWN0X2Zs ZXhfYXJyYXlfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsDQo+Pj4+Pj4gKwkJCQkg ICAgdHJlZSBhcmdzLCBpbnQgQVJHX1VOVVNFRCAoZmxhZ3MpLA0KPj4+Pj4+ICsJCQkJICAgIGJv b2wgKm5vX2FkZF9hdHRycykNCj4+Pj4+PiArew0KPj4+Pj4+ICsgIHRyZWUgZGVjbCA9ICpub2Rl Ow0KPj4+Pj4+ICsgIHRyZWUgYXJndmFsID0gVFJFRV9WQUxVRSAoYXJncyk7DQo+Pj4+Pj4gKw0K Pj4+Pj4+ICsgIC8qIFRoaXMgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byBmaWVsZCBkZWNscyBv ZiBhIHN0cnVjdHVyZS4gICovDQo+Pj4+Pj4gKyAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgIT0gRklF TERfREVDTCkNCj4+Pj4+PiArICAgIHsNCj4+Pj4+PiArICAgICAgZXJyb3JfYXQgKERFQ0xfU09V UkNFX0xPQ0FUSU9OIChkZWNsKSwNCj4+Pj4+PiArCQkiJXFFIGF0dHJpYnV0ZSBtYXkgbm90IGJl IHNwZWNpZmllZCBmb3IgJXErRCIsIG5hbWUsIGRlY2wpOw0KPj4+Pj4+ICsgICAgICAqbm9fYWRk X2F0dHJzID0gdHJ1ZTsNCj4+Pj4+PiArICAgIH0NCj4+Pj4+PiArICAvKiBUaGlzIGF0dHJpYnV0 ZSBvbmx5IGFwcGxpZXMgdG8gZmllbGQgd2l0aCBhcnJheSB0eXBlLiAgKi8NCj4+Pj4+PiArICBl bHNlIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoZGVjbCkpICE9IEFSUkFZX1RZUEUpDQo+Pj4+ Pj4gKyAgICB7DQo+Pj4+Pj4gKyAgICAgIGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAo ZGVjbCksDQo+Pj4+Pj4gKwkJIiVxRSBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9y IGEgbm9uIGFycmF5IGZpZWxkIiwNCj4+Pj4+PiArCQluYW1lKTsNCj4+Pj4+PiArICAgICAgKm5v X2FkZF9hdHRycyA9IHRydWU7DQo+Pj4+Pj4gKyAgICB9DQo+Pj4+Pj4gKyAgZWxzZSBpZiAoVFJF RV9DT0RFIChhcmd2YWwpICE9IElOVEVHRVJfQ1NUKQ0KPj4+Pj4+ICsgICAgew0KPj4+Pj4+ICsg ICAgICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wpLA0KPj4+Pj4+ICsJCSIl cUUgYXR0cmlidXRlIGFyZ3VtZW50IG5vdCBhbiBpbnRlZ2VyIiwgbmFtZSk7DQo+Pj4+Pj4gKyAg ICAgICpub19hZGRfYXR0cnMgPSB0cnVlOw0KPj4+Pj4+ICsgICAgfQ0KPj4+Pj4+ICsgIGVsc2Ug aWYgKCF0cmVlX2ZpdHNfdWh3aV9wIChhcmd2YWwpIHx8IHRyZWVfdG9fdWh3aSAoYXJndmFsKSA+ IDMpDQo+Pj4+Pj4gKyAgICB7DQo+Pj4+Pj4gKyAgICAgIGVycm9yX2F0IChERUNMX1NPVVJDRV9M T0NBVElPTiAoZGVjbCksDQo+Pj4+Pj4gKwkJIiVxRSBhdHRyaWJ1dGUgYXJndW1lbnQgJXFFIGlz IG5vdCBhbiBpbnRlZ2VyIGNvbnN0YW50Ig0KPj4+Pj4+ICsJCSIgYmV0d2VlbiAwIGFuZCAzIiwg bmFtZSwgYXJndmFsKTsNCj4+Pj4+PiArICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7DQo+Pj4+ Pj4gKyAgICB9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsgIHJldHVybiBOVUxMX1RSRUU7DQo+Pj4+Pj4g K30NCj4+Pj4+PiArDQo+Pj4+Pj4gLyogSGFuZGxlIGEgIndlYWsiIGF0dHJpYnV0ZTsgYXJndW1l bnRzIGFzIGluDQo+Pj4+Pj4gc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLw0KPj4+ Pj4+IA0KPj4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1p bHkvYy5vcHQNCj4+Pj4+PiBpbmRleCA0NGUxYTYwY2UyNC4uODY0Y2Q4ZGYxZDMgMTAwNjQ0DQo+ Pj4+Pj4gLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0DQo+Pj4+Pj4gKysrIGIvZ2NjL2MtZmFtaWx5 L2Mub3B0DQo+Pj4+Pj4gQEAgLTIwNjAsNiArMjA2MCwxMyBAQCBmc2l6ZWQtZGVhbGxvY2F0aW9u DQo+Pj4+Pj4gQysrIE9iakMrKyBWYXIoZmxhZ19zaXplZF9kZWFsbG9jYXRpb24pIEluaXQoLTEp DQo+Pj4+Pj4gRW5hYmxlIEMrKzE0IHNpemVkIGRlYWxsb2NhdGlvbiBzdXBwb3J0Lg0KPj4+Pj4+ IA0KPj4+Pj4+ICtmc3RyaWN0LWZsZXgtYXJyYXkNCj4+Pj4+PiArQyBDKysgQ29tbW9uIEFsaWFz KGZzdHJpY3QtZmxleC1hcnJheT0sMywwKQ0KPj4+Pj4+ICsNCj4+Pj4+PiArZnN0cmljdC1mbGV4 LWFycmF5PQ0KPj4+Pj4+ICtDIEMrKyBDb21tb24gSm9pbmVkIFJlamVjdE5lZ2F0aXZlIFVJbnRl Z2VyIFZhcihmbGFnX3N0cmljdF9mbGV4X2FycmF5KSBJbml0KDApIEludGVnZXJSYW5nZSgwLDMp DQo+Pj4+Pj4gKy1mc3RyaWN0LWZsZXgtYXJyYXk9PGxldmVsPiAgICBUcmVhdCB0aGUgdHJhaWxp bmcgYXJyYXkgb2YgYSBzdHJ1Y3R1cmUgYXMgYSBmbGV4aWJsZSBhcnJheSBpbiBhIHN0cmljdGVy IHdheS4gIFRoZSBkZWZhdWx0IGlzIHRyZWF0aW5nIGFsbCB0cmFpbGluZyBhcnJheXMgb2Ygc3Ry dWN0dXJlcyBhcyBmbGV4aWJsZSBhcnJheXMuDQo+Pj4+Pj4gKw0KPj4+Pj4+IGZzcXVhbmdsZQ0K Pj4+Pj4+IEMrKyBPYmpDKysgV2FyblJlbW92ZWQNCj4+Pj4+PiANCj4+Pj4+PiBkaWZmIC0tZ2l0 IGEvZ2NjL2MvYy1kZWNsLmNjIGIvZ2NjL2MvYy1kZWNsLmNjDQo+Pj4+Pj4gaW5kZXggYWU4OTkw YzEzOGYuLjE0ZGVmYWU5NTg0IDEwMDY0NA0KPj4+Pj4+IC0tLSBhL2djYy9jL2MtZGVjbC5jYw0K Pj4+Pj4+ICsrKyBiL2djYy9jL2MtZGVjbC5jYw0KPj4+Pj4+IEBAIC01MDEzLDEwICs1MDEzLDcg QEAgYWRkX2ZsZXhpYmxlX2FycmF5X2VsdHNfdG9fc2l6ZSAodHJlZSBkZWNsLCB0cmVlIGluaXQp DQo+Pj4+Pj4gDQo+Pj4+Pj4gZWx0ID0gQ09OU1RSVUNUT1JfRUxUUyAoaW5pdCktPmxhc3QgKCku dmFsdWU7DQo+Pj4+Pj4gdHlwZSA9IFRSRUVfVFlQRSAoZWx0KTsNCj4+Pj4+PiAtICBpZiAoVFJF RV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBFDQo+Pj4+Pj4gLSAgICAgICYmIFRZUEVfU0laRSAo dHlwZSkgPT0gTlVMTF9UUkVFDQo+Pj4+Pj4gLSAgICAgICYmIFRZUEVfRE9NQUlOICh0eXBlKSAh PSBOVUxMX1RSRUUNCj4+Pj4+PiAtICAgICAgJiYgVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlO ICh0eXBlKSkgPT0gTlVMTF9UUkVFKQ0KPj4+Pj4+ICsgIGlmIChmbGV4aWJsZV9hcnJheV9tZW1i ZXJfcCAodHlwZSkpDQo+Pj4+Pj4gIHsNCj4+Pj4+PiAgICBjb21wbGV0ZV9hcnJheV90eXBlICgm dHlwZSwgZWx0LCBmYWxzZSk7DQo+Pj4+Pj4gICAgREVDTF9TSVpFIChkZWNsKQ0KPj4+Pj4+IEBA IC04NzIwLDYgKzg3MTcsODAgQEAgZmluaXNoX2luY29tcGxldGVfdmFycyAodHJlZSBpbmNvbXBs ZXRlX3ZhcnMsIGJvb2wgdG9wbGV2ZWwpDQo+Pj4+Pj4gIH0NCj4+Pj4+PiB9DQo+Pj4+Pj4gDQo+ Pj4+Pj4gKy8qIERldGVybWluZSB3aGV0aGVyIHRoZSBGSUVMRF9ERUNMIFggaXMgYSBmbGV4aWJs ZSBhcnJheSBtZW1iZXIgYWNjb3JkaW5nIHRvDQo+Pj4+Pj4gKyAgIHRoZSBmb2xsb3dpbmcgaW5m bzoNCj4+Pj4+PiArICBBLiB3aGV0aGVyIHRoZSBGSUVMRF9ERUNMIFggaXMgdGhlIGxhc3QgZmll bGQgb2YgdGhlIERFQ0xfQ09OVEVYVDsNCj4+Pj4+PiArICBCLiB3aGV0aGVyIHRoZSBGSUVMRF9E RUNMIGlzIGFuIGFycmF5IHRoYXQgaXMgZGVjbGFyZWQgYXMgIltdIiwgIlswXSIsDQo+Pj4+Pj4g KyAgICAgb3IgIlsxXSI7DQo+Pj4+Pj4gKyAgQy4gZmxhZ19zdHJpY3RfZmxleF9hcnJheTsNCj4+ Pj4+PiArICBELiB0aGUgYXR0cmlidXRlIHN0cmljdF9mbGV4X2FycmF5IHRoYXQgaXMgYXR0YWNo ZWQgdG8gdGhlIGZpZWxkDQo+Pj4+Pj4gKyAgICAgaWYgcHJlc2VudGluZy4NCj4+Pj4+PiArICBS ZXR1cm4gVFJVRSB3aGVuIGl0J3MgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIsIEZBTFNFIG90aGVy d2lzZS4gICovDQo+Pj4+Pj4gKw0KPj4+Pj4+ICtzdGF0aWMgYm9vbA0KPj4+Pj4+ICtpc19mbGV4 aWJsZV9hcnJheV9tZW1iZXJfcCAoYm9vbCBpc19sYXN0X2ZpZWxkLA0KPj4+Pj4+ICsJCQkgICAg dHJlZSB4KQ0KPj4+Pj4+ICt7DQo+Pj4+Pj4gKyAgLyogaWYgbm90IHRoZSBsYXN0IGZpZWxkLCBy ZXR1cm4gZmFsc2UuICAqLw0KPj4+Pj4+ICsgIGlmICghaXNfbGFzdF9maWVsZCkNCj4+Pj4+PiAr ICAgIHJldHVybiBmYWxzZTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKyAgLyogaWYgbm90IGFuIGFycmF5 IGZpZWxkLCByZXR1cm4gZmFsc2UuICAqLw0KPj4+Pj4+ICsgIGlmIChUUkVFX0NPREUgKFRSRUVf VFlQRSAoeCkpICE9IEFSUkFZX1RZUEUpDQo+Pj4+Pj4gKyAgICByZXR1cm4gZmFsc2U7DQo+Pj4+ Pj4gKw0KPj4+Pj4+ICsgIGJvb2wgaXNfemVyb19sZW5ndGhfYXJyYXkgPSB6ZXJvX2xlbmd0aF9h cnJheV9wIChUUkVFX1RZUEUgKHgpKTsNCj4+Pj4+PiArICBib29sIGlzX29uZV9lbGVtZW50X2Fy cmF5ID0gb25lX2VsZW1lbnRfYXJyYXlfcCAoVFJFRV9UWVBFICh4KSk7DQo+Pj4+Pj4gKyAgYm9v bCBpc19mbGV4aWJsZV9hcnJheSA9IGZsZXhpYmxlX2FycmF5X21lbWJlcl9wIChUUkVFX1RZUEUg KHgpKTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKyAgdW5zaWduZWQgaW50IHN0cmljdF9mbGV4X2FycmF5 X2xldmVsID0gZmxhZ19zdHJpY3RfZmxleF9hcnJheTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKyAgdHJl ZSBhdHRyX3N0cmljdF9mbGV4X2FycmF5ID0gbG9va3VwX2F0dHJpYnV0ZSAoInN0cmljdF9mbGV4 X2FycmF5IiwNCj4+Pj4+PiArCQkJCQkJICBERUNMX0FUVFJJQlVURVMgKHgpKTsNCj4+Pj4+PiAr ICAvKiBpZiB0aGVyZSBpcyBhIHN0cmljdF9mbGV4X2FycmF5IGF0dHJpYnV0ZSBhdHRhY2hlZCB0 byB0aGUgZmllbGQsDQo+Pj4+Pj4gKyAgICAgb3ZlcnJpZGUgdGhlIGZsYWdfc3RyaWN0X2ZsZXhf YXJyYXkuICAqLw0KPj4+Pj4+ICsgIGlmIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KQ0KPj4+Pj4+ ICsgICAgew0KPj4+Pj4+ICsgICAgICAvKiBnZXQgdGhlIHZhbHVlIG9mIHRoZSBsZXZlbCBmaXJz dCBmcm9tIHRoZSBhdHRyaWJ1dGUuICAqLw0KPj4+Pj4+ICsgICAgICB1bnNpZ25lZCBIT1NUX1dJ REVfSU5UIGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXlfbGV2ZWwgPSAwOw0KPj4+Pj4+ICsgICAgICBn Y2NfYXNzZXJ0IChUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KSAhPSBOVUxMX1RS RUUpOw0KPj4+Pj4+ICsgICAgICBhdHRyX3N0cmljdF9mbGV4X2FycmF5ID0gVFJFRV9WQUxVRSAo YXR0cl9zdHJpY3RfZmxleF9hcnJheSk7DQo+Pj4+Pj4gKyAgICAgIGdjY19hc3NlcnQgKFRSRUVf VkFMVUUgKGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkpICE9IE5VTExfVFJFRSk7DQo+Pj4+Pj4gKyAg ICAgIGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkgPSBUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4 X2FycmF5KTsNCj4+Pj4+PiArICAgICAgZ2NjX2Fzc2VydCAodHJlZV9maXRzX3Vod2lfcCAoYXR0 cl9zdHJpY3RfZmxleF9hcnJheSkpOw0KPj4+Pj4+ICsgICAgICBhdHRyX3N0cmljdF9mbGV4X2Fy cmF5X2xldmVsID0gdHJlZV90b191aHdpIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KTsNCj4+Pj4+ PiArDQo+Pj4+Pj4gKyAgICAgIC8qIHRoZSBhdHRyaWJ1dGUgaGFzIGhpZ2hlciBwcmlvcml0eSB0 aGFuIGZsYWdfc3RydWN0X2ZsZXhfYXJyYXkuICAqLw0KPj4+Pj4+ICsgICAgICBzdHJpY3RfZmxl eF9hcnJheV9sZXZlbCA9IGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXlfbGV2ZWw7DQo+Pj4+Pj4gKyAg ICB9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsgIHN3aXRjaCAoc3RyaWN0X2ZsZXhfYXJyYXlfbGV2ZWwp DQo+Pj4+Pj4gKyAgICB7DQo+Pj4+Pj4gKyAgICAgIGNhc2UgMDoNCj4+Pj4+PiArCS8qIGRlZmF1 bHQsIGFsbCB0cmFpbGluZyBhcnJheXMgYXJlIGZsZXhpYWJsZSBhcnJheSBtZW1iZXJzLiAgKi8N Cj4+Pj4+PiArCXJldHVybiB0cnVlOw0KPj4+Pj4+ICsgICAgICBjYXNlIDE6DQo+Pj4+Pj4gKwkv KiBMZXZlbCAxOiBhbGwgIlsxXSIsICJbMF0iLCBhbmQgIltdIiBhcmUgZmxleGlhYmxlIGFycmF5 IG1lbWJlcnMuICAqLw0KPj4+Pj4+ICsJaWYgKGlzX29uZV9lbGVtZW50X2FycmF5KQ0KPj4+Pj4+ ICsJICByZXR1cm4gdHJ1ZTsNCj4+Pj4+PiArCS8qIEZBTExUSFJPVUdILiAgKi8NCj4+Pj4+PiAr ICAgICAgY2FzZSAyOg0KPj4+Pj4+ICsJLyogTGV2ZWwgMjogYWxsICJbMF0iLCBhbmQgIltdIiBh cmUgZmxleGlhYmxlIGFycmF5IG1lbWJlcnMuICAqLw0KPj4+Pj4+ICsJaWYgKGlzX3plcm9fbGVu Z3RoX2FycmF5KQ0KPj4+Pj4+ICsJICByZXR1cm4gdHJ1ZTsNCj4+Pj4+PiArCS8qIEZBTExUSFJP VUdILiAgKi8NCj4+Pj4+PiArICAgICAgY2FzZSAzOg0KPj4+Pj4+ICsJLyogTGV2ZWwgMzogT25s eSAiW10iIGFyZSBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLiAgKi8NCj4+Pj4+PiArCWlmIChpc19m bGV4aWJsZV9hcnJheSkNCj4+Pj4+PiArCSAgcmV0dXJuIHRydWU7DQo+Pj4+Pj4gKwlicmVhazsN Cj4+Pj4+PiArICAgICAgZGVmYXVsdDoNCj4+Pj4+PiArCWdjY191bnJlYWNoYWJsZSAoKTsNCj4+ Pj4+PiArICAgIH0NCj4+Pj4+PiArICByZXR1cm4gZmFsc2U7DQo+Pj4+Pj4gK30NCj4+Pj4+PiAr DQo+Pj4+Pj4gKw0KPj4+Pj4+IC8qIEZpbGwgaW4gdGhlIGZpZWxkcyBvZiBhIFJFQ09SRF9UWVBF IG9yIFVOSU9OX1RZUEUgbm9kZSwgVC4NCj4+Pj4+PiBMT0MgaXMgdGhlIGxvY2F0aW9uIG9mIHRo ZSBSRUNPUkRfVFlQRSBvciBVTklPTl9UWVBFJ3MgZGVmaW5pdGlvbi4NCj4+Pj4+PiBGSUVMRExJ U1QgaXMgYSBjaGFpbiBvZiBGSUVMRF9ERUNMIG5vZGVzIGZvciB0aGUgZmllbGRzLg0KPj4+Pj4+ IEBAIC04NzgxLDYgKzg4NTIsOCBAQCBmaW5pc2hfc3RydWN0IChsb2NhdGlvbl90IGxvYywgdHJl ZSB0LCB0cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRyaWJ1dGVzLA0KPj4+Pj4+IGJvb2wgc2F3X25h bWVkX2ZpZWxkID0gZmFsc2U7DQo+Pj4+Pj4gZm9yICh4ID0gZmllbGRsaXN0OyB4OyB4ID0gREVD TF9DSEFJTiAoeCkpDQo+Pj4+Pj4gIHsNCj4+Pj4+PiArICAgICAgYm9vbCBpc19sYXN0X2ZpZWxk ID0gKERFQ0xfQ0hBSU4gKHgpID09IE5VTExfVFJFRSk7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICAgIGlm IChUUkVFX1RZUEUgKHgpID09IGVycm9yX21hcmtfbm9kZSkNCj4+Pj4+PiAJY29udGludWU7DQo+ Pj4+Pj4gDQo+Pj4+Pj4gQEAgLTg4MTksMTAgKzg4OTIsNyBAQCBmaW5pc2hfc3RydWN0IChsb2Nh dGlvbl90IGxvYywgdHJlZSB0LCB0cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRyaWJ1dGVzLA0KPj4+ Pj4+IAlERUNMX1BBQ0tFRCAoeCkgPSAxOw0KPj4+Pj4+IA0KPj4+Pj4+ICAgIC8qIERldGVjdCBm bGV4aWJsZSBhcnJheSBtZW1iZXIgaW4gYW4gaW52YWxpZCBjb250ZXh0LiAgKi8NCj4+Pj4+PiAt ICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh4KSkgPT0gQVJSQVlfVFlQRQ0KPj4+Pj4+ IC0JICAmJiBUWVBFX1NJWkUgKFRSRUVfVFlQRSAoeCkpID09IE5VTExfVFJFRQ0KPj4+Pj4+IC0J ICAmJiBUWVBFX0RPTUFJTiAoVFJFRV9UWVBFICh4KSkgIT0gTlVMTF9UUkVFDQo+Pj4+Pj4gLQkg ICYmIFRZUEVfTUFYX1ZBTFVFIChUWVBFX0RPTUFJTiAoVFJFRV9UWVBFICh4KSkpID09IE5VTExf VFJFRSkNCj4+Pj4+PiArICAgICAgaWYgKGZsZXhpYmxlX2FycmF5X21lbWJlcl9wIChUUkVFX1RZ UEUgKHgpKSkNCj4+Pj4+PiAJew0KPj4+Pj4+IAkgIGlmIChUUkVFX0NPREUgKHQpID09IFVOSU9O X1RZUEUpDQo+Pj4+Pj4gCSAgICB7DQo+Pj4+Pj4gQEAgLTg4MzAsNyArODkwMCw3IEBAIGZpbmlz aF9zdHJ1Y3QgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIHQsIHRyZWUgZmllbGRsaXN0LCB0cmVlIGF0 dHJpYnV0ZXMsDQo+Pj4+Pj4gCQkJImZsZXhpYmxlIGFycmF5IG1lbWJlciBpbiB1bmlvbiIpOw0K Pj4+Pj4+IAkgICAgICBUUkVFX1RZUEUgKHgpID0gZXJyb3JfbWFya19ub2RlOw0KPj4+Pj4+IAkg ICAgfQ0KPj4+Pj4+IC0JICBlbHNlIGlmIChERUNMX0NIQUlOICh4KSAhPSBOVUxMX1RSRUUpDQo+ Pj4+Pj4gKwkgIGVsc2UgaWYgKCFpc19sYXN0X2ZpZWxkKQ0KPj4+Pj4+IAkgICAgew0KPj4+Pj4+ IAkgICAgICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHgpLA0KPj4+Pj4+IAkJCSJm bGV4aWJsZSBhcnJheSBtZW1iZXIgbm90IGF0IGVuZCBvZiBzdHJ1Y3QiKTsNCj4+Pj4+PiBAQCAt ODg1MCw2ICs4OTIwLDkgQEAgZmluaXNoX3N0cnVjdCAobG9jYXRpb25fdCBsb2MsIHRyZWUgdCwg dHJlZSBmaWVsZGxpc3QsIHRyZWUgYXR0cmlidXRlcywNCj4+Pj4+PiAJcGVkd2FybiAoREVDTF9T T1VSQ0VfTE9DQVRJT04gKHgpLCBPUFRfV3BlZGFudGljLA0KPj4+Pj4+IAkJICJpbnZhbGlkIHVz ZSBvZiBzdHJ1Y3R1cmUgd2l0aCBmbGV4aWJsZSBhcnJheSBtZW1iZXIiKTsNCj4+Pj4+PiANCj4+ Pj4+PiArICAgICAgLyogU2V0IERFQ0xfTk9UX0ZMRVhBUlJBWSBmbGFnIGZvciBGSUVMRF9ERUNM IHguICAqLw0KPj4+Pj4+ICsgICAgICBERUNMX05PVF9GTEVYQVJSQVkgKHgpID0gIWlzX2ZsZXhp YmxlX2FycmF5X21lbWJlcl9wIChpc19sYXN0X2ZpZWxkLCB4KTsNCj4+Pj4+PiArDQo+Pj4+Pj4g ICAgaWYgKERFQ0xfTkFNRSAoeCkNCj4+Pj4+PiAJICB8fCBSRUNPUkRfT1JfVU5JT05fVFlQRV9Q IChUUkVFX1RZUEUgKHgpKSkNCj4+Pj4+PiAJc2F3X25hbWVkX2ZpZWxkID0gdHJ1ZTsNCj4+Pj4+ PiBkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBiL2djYy9kb2MvZXh0ZW5kLnRleGkN Cj4+Pj4+PiBpbmRleCBkZmJlMzNhYzY1Mi4uNzQ1MTQxMGEwMTEgMTAwNjQ0DQo+Pj4+Pj4gLS0t IGEvZ2NjL2RvYy9leHRlbmQudGV4aQ0KPj4+Pj4+ICsrKyBiL2djYy9kb2MvZXh0ZW5kLnRleGkN Cj4+Pj4+PiBAQCAtNzQzNiw2ICs3NDM2LDMxIEBAIFRoaXMgd2FybmluZyBjYW4gYmUgZGlzYWJs ZWQgYnkgQG9wdGlvbnstV25vLWlmLW5vdC1hbGlnbmVkfS4NCj4+Pj4+PiBUaGUgQGNvZGV7d2Fy bl9pZl9ub3RfYWxpZ25lZH0gYXR0cmlidXRlIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHR5cGVzDQo+ Pj4+Pj4gKEBweHJlZntDb21tb24gVHlwZSBBdHRyaWJ1dGVzfS4pDQo+Pj4+Pj4gDQo+Pj4+Pj4g K0BjaW5kZXggQGNvZGV7c3RyaWN0X2ZsZXhfYXJyYXl9IHZhcmlhYmxlIGF0dHJpYnV0ZQ0KPj4+ Pj4+ICtAaXRlbSBzdHJpY3RfZmxleF9hcnJheSAoQHZhcntsZXZlbH0pDQo+Pj4+Pj4gK1RoZSBA Y29kZXtzdHJpY3RfZmxleF9hcnJheX0gYXR0cmlidXRlIHNob3VsZCBiZSBhdHRhY2hlZCB0byB0 aGUgdHJhaWxpbmcNCj4+Pj4+PiArYXJyYXkgZmllbGQgb2YgYSBzdHJ1Y3R1cmUuICBJdCBzcGVj aWZpZXMgdGhlIGxldmVsIG9mIHN0cmljdG5lc3Mgb2YNCj4+Pj4+PiArdHJlYXRpbmcgdGhlIHRy YWlsaW5nIGFycmF5IGZpZWxkIG9mIGEgc3RydWN0dXJlIGFzIGEgZmxleGlibGUgYXJyYXkNCj4+ Pj4+PiArbWVtYmVyLiBAdmFye2xldmVsfSBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VuIDAgdG8g My4NCj4+Pj4+PiArDQo+Pj4+Pj4gK0B2YXJ7bGV2ZWx9PTAgaXMgdGhlIGxlYXN0IHN0cmljdCBs ZXZlbCwgYWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzDQo+Pj4+Pj4gK2FyZSB0cmVh dGVkIGFzIGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuIEB2YXJ7bGV2ZWx9PTMgaXMgdGhlIHN0cmlj dGVzdCBsZXZlbCwNCj4+Pj4+PiArb25seSB3aGVuIHRoZSB0cmFpbGluZyBhcnJheSBpcyBkZWNs YXJlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5DQo+Pj4+Pj4gK3N0YW5kYXJk IG9ud2FyZHMgKFtdKSwgaXQgaXMgdHJlYXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlci4N Cj4+Pj4+IA0KPj4+Pj4gSG93IGlzIGxldmVsIDMgKHRodXMgLWZzdHJpY3QtZmxleC1hcnJheSkg aW50ZXJwcmV0ZWQgd2hlbiB5b3Ugc3BlY2lmeSANCj4+Pj4+IC1zdGQ9Yzg5PyAgSG93IGZvciAt c3RkPWdudTg5Pw0KPj4+PiANCj4+Pj4gMS4gd2hhdOKAmXMgdGhlIG1ham9yIGRpZmZlcmVuY2Ug YmV0d2VlbiAtc3RkPWM4OSBhbmQgLXN0ZD1nbnU4OSBvbiBmbGV4aWJsZSBhcnJheT8gKENoZWNr ZWQgb25saW5lLCBjYW5ub3QgZmluZCBhIGNvbmNyZXRlIGFuc3dlciBvbiB0aGlzKS4NCj4+Pj4g CSoqIG15IHVuZGVyc3RhbmRpbmcgaXM6ICAgLXN0ZD1jODkgd2lsbCBub3Qgc3VwcG9ydCBhbnkg ZmxleGlibGUgYXJyYXkgKG5laXRoZXIgW10sIFswXSwgWzFdKSwgYnV0IC1zdGQ9Z251ODkgd2ls bCBzdXBwb3J0IFswXSBhbmQgWzFdLCBidXQgbm90IFtdLg0KPj4+PiAgICAgICAgSXMgdGhpcyBj b3JyZWN0Pw0KPj4+IA0KPj4+IFllcy4NCj4+PiANCj4+Pj4gSWYgbXkgYW5zd2VyIHRvIHRoZSBm aXJzdCBxdWVzdGlvbiBpcyBjb3JyZWN0LCB0aGVuOg0KPj4+PiANCj4+Pj4gMi4gV2hlbiAtZnN0 cmljdC1mbGV4LWFycmF5PW4gYW5kIC1zdGQ9Yzg5IHByZXNlbnQgYXQgdGhlIHNhbWUgdGltZSwg d2hpY2ggb25lIGhhcyB0aGUgaGlnaGVyIHByaW9yaXR5PyANCj4+Pj4gICAgCSoqIEkgdGhpbmsg dGhhdCAtc3RkPWM4OSBzaG91bGQgYmUgaG9ub3JlZCBvdmVyIC1mc3RyaWN0LWZsZXgtYXJyYXks IHRoZXJlZm9yZSB3ZSBzaG91bGQgZGlzYWJsZSAtZnN0cmljdC1mbGV4LWFycmF5PW4gd2hlbiBu ID4gMCAgYW5kIGlzc3VlIHdhcm5pbmdzIHRvIHRoZSB1c2VyLg0KPj4+PiANCj4+Pj4gDQo+Pj4+ IDMuIGhvdyBhYm91dCAtZnN0cmljdC1mbGV4LWFycmF5PW4gYW5kIC1zdGQ9Z251ODkgcHJlc2Vu dCBhdCB0aGUgc2FtZSB0aW1lPyANCj4+Pj4gICAgCSoqIFdoZW4gLXN0ZD1nbnU4OSBwcmVzZW50 LCBbXSBpcyBub3Qgc3VwcG9ydGVkLiBTbywgd2UgbmVlZCB0byBpc3N1ZSBhbiB3YXJuaW5nIHRv IGRpc2FibGUgLWZzdHJpY3QtZmxleC1hcnJheT0zOyBidXQgbGV2ZWwgMSBhbmQgbGV2ZWwgMiBp cyBPa2F5Lg0KPj4+PiANCj4+Pj4gV2UgYWxzbyBuZWVkIHRvIGRvY3VtZW50IHRoZSBhYm92ZS4N Cj4+Pj4gDQo+Pj4+IExldCBtZSBrbm93IGlmIHlvdSBoYXZlIGFueSBtb3JlIGNvbW1lbnQgYW5k IHN1Z2dlc3Rpb25zIGhlcmUuDQo+Pj4gDQo+Pj4gSW4gbXkgb3BpbmlvbiAtZnN0cmljdC1mbGV4 LWFycmF5IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCBDOTkgYW5kIGFib3ZlLiAgDQo+Pj4gVGhlIGV4 dHJhIHN1Yi1sZXZlbHMgYWxsb3dpbmcgWzBdIG9yIFsxXSBhcmUgb2YgcXVlc3Rpb25hYmxlIGJl bmVmaXQuDQo+PiBUaGUgbXVsdGlwbGUtbGV2ZWxzIGNvbnRyb2wgZm9yIC1mc3RyaWN0LWZsZXgt YXJyYXlzIHdhcyBhbiBhZ3JlZW1lbnQgb24gdGhlIGRpc2N1c3Npb24gb2YgUFIxMDE4MzY6DQo+ PiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMDE4MzYNCj4+ IA0KPj4gUGxlYXNlIHNlZSBjb21tZW50IzE3IHRpbGwgIzI1IGZvciB0aGUgZGV0YWlscy4NCj4+ IA0KPj4gQSBzdW1tYXJ5IG9mIHRoZSBkaXNjdXNzaW9uIGlzOiAgKFBsZWFzZSBjb21tZW50IG9u IHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBoIGlmIHlvdSBzZWUgYW55IGlzc3VlIHdpdGggaXQpDQo+ PiANCj4+ID09PT09DQo+PiBGbGV4aWJsZSBBcnJheSBNZW1iZXIgKEZBTSkgaXMgYSBmZWF0dXJl IGludHJvZHVjZWQgaW4gdGhlIEM5OSBzdGFuZGFyZCBvZiB0aGUgQyBsYW5ndWFnZSBpbiBNYXkg MjAwMC4gIEl0J3MgdXNlZCBhcyB0aGUgbGFzdCBlbGVtZW50IG9mIGEgc3RydWN0dXJlIHdoaWNo IGlzIHJlYWxseSBhIGhlYWRlciBmb3IgYSB2YXJpYWJsZS1sZW5ndGggb2JqZWN0Lg0KPj4gVGhp cyBmZWF0dXJlIHdhcyBvZmZpY2lhbGx5IHN0YW5kYXJkaXplZCBpbiBDOTkuIEhvd2V2ZXIsIGNv bXBpbGVycyAoR0NDLCBNaWNvcnNvZnQgY29tcGlsZXIsIGV0Yy4pIHN1cHBvcnRlZCB0aGlzIGZl YXR1cmUgd2VsbCBiZWZvcmUgQzk5LCB3aXRoIHRoZSBmb2xsb3dpbmcgdmFyaWFudHM6DQo+PiAg QS4gdHJhaWxpbmcgemVyby1sZW5ndGggYXJyYXkgb2YgYSBzdHJ1Y3R1cmUgd2FzIHRyZWF0ZWQg YXMgRkFNLiAgDQo+PiAgICAgQmVmb3JlIEM5OSwgYSB2YWxpZCBHQ0MgZXh0ZW5zaW9uLCB6ZXJv LWxlbmd0aCBhcnJheSB3YXMgdXNlZCB0byBzdXBwb3J0IGZsZXhpYmxlIGFycmF5IG1lbWJlci4g IFNlZSBtb3JlIGRldGFpbHMgYXQ6ICBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2Nj L1plcm8tTGVuZ3RoLmh0bWwuDQo+PiAgQi4gdHJhaWxpbmcgb25lLWVsZW1lbnQgYXJyYXkgb2Yg YSBzdHJ1Y3R1cmUgd2FzIHRyZWF0ZWQgYXMgRkFNLg0KPj4gICAgIEluIHRoZSBhYnNlbmNlIG9m IHRoZSB6ZXJvLWxlbmd0aCBhcnJheSBleHRlbnNpb24sIGluIElTTyBDOTAsIG9uZS1lbGVtZW50 IGFycmF5cyBhdCB0aGUgZW5kIG9mIHN0cnVjdHVyZXMgd2VyZSB1c2VkIHRvIHJlcHJlc2VudCBG QU1zIGFzIGEgY29udmVydGlvbi4NCj4+ICBDLiBhbnkgdHJhaWxpbmcgYXJyYXkgb2YgYSBzdHJ1 Y3R1cmUgd2FzIHRyZWF0ZWQgYXMgRkFNLg0KPj4gICAgIEV2ZW4gZWFybGllciB0aW1lLCBpbiB0 aGUgYWJzZW5jZSBvZiBib3RoIHplcm8tbGVuZ3RoIGFycmF5IEdDQyBleHRlbnNpb24gYW5kIG9u ZS1lbGVtZW50IGFycmF5IGNvbnZlbnRpb24sIGFsbCB0cmFpbGluZyBhcnJheXMgb2Ygc3RydWN0 dXJlcyBjb3VsZCBiZSB1c2VkIGFzIGEgRkFNLiAgICAgDQo+PiBBcyBhIHJlc3VsdCwgb2xkZXIg Y29kZXMgKGJlZm9yZSBDOTkpIG1pZ2h0IGluY2x1ZGUgYW55IG9mIHRoZSBhYm92ZSB2YXJpYW50 cyAoQSwgQiwgYW5kIEMpIHRvIHJlcHJlc2VudCBGQU1zLiANCj4+IEFub3RoZXIgY29tcGxpY2F0 aW9uIGlzIEMrKywgc3RhbmRhcmQgQysrIGRvZXNuJ3QgYWxsb3cgZWl0aGVyIEM5OSBmbGV4aWJs ZSBhcnJheSBtZW1iZXJzIG9yIHplcm8tbGVuZ3RoIGFycmF5LiBBIEMrKyBwcm9ncmFtbWVyIGhh cyB0byB1c2UgdGhlIEdDQyB6ZXJvLWxlbmd0aCBhcnJheSBleHRlbnNpb24gb3Igb25lLWVsZW1l bnQgYXJyYXkgY29udmVudGlvbiBmb3IgdGhlIHB1cnBvc2Ugb2YgRkFNLg0KPj4gPT09PT0NCj4+ IA0KPj4gQXMgbWVudGlvbmVkIGJ5IEpha3ViIGluIGNvbW1lbnQgIzI1OiANCj4+IA0KPj4gImRp ZmZlcmVudGlhdGluZyBiZXR3ZWVuIG9ubHkgYWxsb3dpbmcgW10gYXMgZmxleCwgb3IgW10gYW5k IFswXSwNCj4+IG9yIFtdLCBbMF0gYW5kIFsxXSwgb3IgYW55IHRyYWlsaW5nIGFycmF5IGlzIHVz ZWZ1bC4iDQo+IA0KPiBPSy4NCj4gDQo+Pj4gDQo+Pj4gSSB0aGluayB0aGF0IHdpdGggLWZzdHJp Y3QtZmxleC1hcnJheSB3ZSdyZSBtaXNzaW5nIGEgLVdzdHJpY3QtZmxleC1hcnJheQ0KPj4+IHRo YXQgd291bGQgZGlhZ25vc2UgYWNjZXNzZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHRyZWF0ZWQgYXMg ZmxleCBhcnJheQ0KPj4+IGFjY2VzcyBidXQgd291bGQgYmUgd2l0aG91dCAtZnN0cmljdC1mbGV4 LWFycmF5PyAgVGhlIGdvYWwgb2YNCj4+PiAtZnN0cmljdC1mbGV4LWFycmF5ICsgLVdzdHJpY3Qt ZmxleC1hcnJheSBpcyB0byBtYWtlIGNvZGUgc3RhbmRhcmQNCj4+PiBjb25mb3JtYW50LCBubz8g IE5vdCB0byBlbmFibGUgZXh0cmEgb3B0aW1pemF0aW9uIGZvciBbMV0gYXJyYXlzIHdoZW4NCj4+ PiB3ZSBrbm93IFswXSBpcyB1c2VkIGFzIGZsZXhhcnJheT8NCj4+IA0KPj4gWWVzLCBJIGFncmVl LCBhbmQgdGhpcyB3aWxsIG1ha2UgdGhlIGZlYXR1cmUgbW9yZSBjb21wbGV0ZSBhbmQgbW9yZQ0K Pj4gdXNlZnVsIHRvIGhlbHAgdXNlcnMgdG8gZ2V0IHJpZCBvZiB0aGUgbm9uLXN0YW5kYXJkLWNv bWZvcm1pbmcgc3R5bGVzLiANCj4+IA0KPj4gUGxlYXNlIHNlZSBjb21tZW50cyAjMjMsICMzNQ0K Pj4gDQo+PiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMDE4 MzYjYzIzDQo+PiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0x MDE4MzYjYzM1DQo+PiANCj4+IEEgc3VtbWFyeSBpczoNCj4+IA0KPj4gPT09PQ0KPj4gSSB0aGlu ayB0aGF0IC1Xc3RyaWN0LWZsZXgtYXJyYXlzIHdpbGwgbmVlZCB0byBiZSBjb29wZXJhdGVkIHdp dGggLWZzdHJpY3QtZmxleC1hcnJheXM9TiwgaS5lLCBvbmx5IHdoZW4gLWZzdHJpY3QtZmxleC1h cnJheXM9TiBpcyBwcmVzZW50aW5nLCAtV3N0cmljdC1mbGV4LWFycmF5cyB3aWxsIGJlIHZhbGlk IGFuZCByZXBvcnQgdGhlIHdhcm5pbmdzIHdoZW4gc2VlIGEgWzBdLCBvciBbMV0sIG9yIGFueSB0 cmFpbGluZyBhcnJheSBiYXNlZCBvbiBOOg0KPj4gDQo+PiB3aGVuIC1mc3RyaWN0LWZsZXgtYXJy YXlzDQo+PiA9MCwgLVdzdHJpY3QtZmxleC1hcnJheXMgd2lsbCBOT1QgaXNzdWUgYW55IHdhcm5p bmdzOw0KPj4gPTEsIC1Xc3RyaWN0LWZsZXgtYXJyYXlzIHdpbGwgaXNzdWUgd2FybmluZ3Mgd2hl biBhbiBhcnJheSByZWYncyBpbmRleCBpcyBsYXJnZXIgdGhhbiB0aGUgdXBwZXIgYm91bmRzIG9m IGEgdHJhaWxpbmcgYXJyYXkgdGhhdCBpcyBhIHJlZ3VsYXIgdHJhaWxpbmcgYXJyYXk7DQo+PiA9 MiwgLVdzdHJpY3QtZmxleC1hcnJheXMgd2lsbCBpc3N1ZSB3YXJuaW5ncyB3aGVuIGFuIGFycmF5 IHJlZidzIGluZGV4IGlzIGxhcmdlciB0aGFuIHRoZSB1cHBlciBib3VuZHMgb2YgYSB0cmFpbGlu ZyBhcnJheSB0aGF0IGlzIGEgcmVndWxhciB0cmFpbGluZyBhcnJheSBvciBbMV07DQo+PiA9Mywg LVdzdHJpY3QtZmxleC1hcnJheXMgd2lsbCBpc3N1ZSB3YXJuaW5ncyB3aGVuIGFuIGFycmF5IHJl ZidzIGluZGV4IGlzIGxhcmdlciB0aGFuIHRoZSB1cHBlciBib3VuZHMgb2YgYSB0cmFpbGluZyBh cnJheSB0aGF0IGlzIGEgcmVndWxhciB0cmFpbGluZyBhcnJheSBvciBbMV0sIG9yIFswXS4NCj4+ IA0KPj4gbGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55IGNvbW1lbnQgYW5kIHN1Z2dlc3Rpb24g b24gdGhpcy4NCj4+IA0KPj4gPT09PQ0KPiANCj4gQWgsIEkgc2VlIC0gZ29vZCB0aGF0IHRoaXMg aGFzIGJlZW4gZGlzY3Vzc2VkLiAgLVdzdHJpY3QtZmxleC1hcnJheQ0KPiBzaG91bGRuJ3QgYmUg YSByZXF1aXJlbWVudCBmb3IgLWZzdHJpY3QtZmxleC1hcnJheSB0byBnbyBpbiwgYnV0IGl0DQo+ IHdvdWxkIGJlIG5pY2UgdG8gZm9sbG93dXAgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhl IGFib3ZlDQo+IChpdCBtaWdodCBiZSB0cmlja3kgdG8gZmluZCBhIGdvb2QgcGxhY2UgZm9yIGl0 LCBidXQgZXZlbnR1YWxseSBpdA0KPiBzb3VuZHMgbGlrZSAtV2FycmF5LWJvdW5kcyBkaWFnbm9z aW5nIHBsYWNlcyBjb3VsZCBldmVudHVhbGx5IGJlDQo+IGFkanVzdGVkKQ0KWWVzLCB0aGlzIGlz IG9uIG15IHRvLWRvIGxpc3QsIEkgd2lsbCBmaW5pc2ggdGhpcyBwYXJ0IGluIEdDQzEzLiAgVGhl IGZvbGxvd2luZyBpcyBteSBwbGFuOg0KPT09PT0NCg0KCTEuIEFkZCBhIG5ldyBJUiBmbGFnIOKA nERFQ0xfTk9UX0ZMRVhBUlJBWeKAnSB0byBGSUVMRF9ERUNMOyANCgkyLiBJbiBDL0MrKyBGRSwg c2V0IHRoZSBuZXcgZmxhZyDigJxERUNMX05PVF9GTEVYQVJSQVnigJ0gZm9yIGEgRklFTERfREVD TCBiYXNlZCBvbiBbMF0sIFsxXSwgWyBdIGFuZCB0aGUgb3B0aW9uIC1mc3RyaWN0LWZsZXgtYXJy YXlzLCB0aGUgYXR0cmlidXRlIHN0cmljdF9mbGV4X2FycmF5cyBhbmQgd2hldGhlciBpdOKAmXMg dGhlIGxhc3QgZmllbGQgb2YgdGhlIERFQ0xfQ09OVEVYVC4NCgkzLiBJbiBNaWRkbGUgZW5kLCAg dXBkYXRlIGFsbCBwbGFjZXMgdGhhdCB0cmVhdCBhbnkgdHJhaWxpbmcgYXJyYXkgYXMgZmxleGli bGUgYXJyYXkgbWVtYmVyIHdpdGggdGhlIG5ldyBmbGFnICBERUNMX05PVF9GTEVYQVJSQVkgKyBh cnJheV9hdF9zdHJ1Y3RfZW5kX3AgdG8gY29udHJvbCB0aGUgYmVoYXZpb3Igd2l0aCBtdWx0aXBs ZSBsZXZlbHMgY29uc2lzdGVudGx5Lg0KCSAgICAzLjEuIHVwZGF0ZSB0cmVlLW9iamVjdC1zaXpl LmNjIHRvIGZpeCBQUjEwMTgzNjsNCgkgICAgMy4yLiB1cGRhdGUgb3RoZXIgcGxhY2VzIHRvIG1h a2UgR0NDIGNvbnNpc3RlbnRseSBoYW5kbGUgZmxleGlibGUgYXJyYXkgbWVtYmVyOw0KCTQuIElu IE1pZGRsZSBlbmQsICBhZGQgLVdzdHJpY3QtZmxleC1hcnJheSBhbmQgdXBkYXRlIHRoZSB3YXJu aW5ncyBlbWl0dGVkIGJ5IC1XYXJyYXktYm91bmRzIGJhc2VkIG9uIG11bHRpcGxlIGxldmVsczsN Cgk1LiBBZGQgYSBuZXcgLVd6ZXJvLWxlbmd0aC1hcnJheSB3YXJuaW5nOyAoaHR0cHM6Ly9nY2Mu Z251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MjgpLg0KPT09PT0NCg0KTGV0IG1l IGtub3cgaWYgeW91IGhhdmUgYW55IGNvbW1lbnQgb3Igc3VnZ2VzdGlvbiBoZXJlLg0KDQo+IA0K Pj4gDQo+Pj4gDQo+Pj4+PiANCj4+Pj4+PiArDQo+Pj4+Pj4gK1RoZXJlIGFyZSB0d28gbW9yZSBs ZXZlbHMgaW4gYmV0d2VlbiAwIGFuZCAzLCB3aGljaCBhcmUgcHJvdmlkZWQgdG8gc3VwcG9ydA0K Pj4+Pj4+ICtvbGRlciBjb2RlcyB0aGF0IHVzZSBHQ0MgemVyby1sZW5ndGggYXJyYXkgZXh0ZW5z aW9uIChbMF0pIG9yIG9uZS1zaXplIGFycmF5DQo+Pj4+Pj4gK2FzIGZsZXhpYmxlIGFycmF5IG1l bWJlciAoWzFdKToNCj4+Pj4+PiArV2hlbiBAdmFye2xldmVsfSBpcyAxLCB0aGUgdHJhaWxpbmcg YXJyYXkgaXMgdHJlYXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4+Pj4+ICt3aGVu IGl0IGlzIGRlY2xhcmVkIGFzIGVpdGhlciAiW10iLCAiWzBdIiwgb3IgIlsxXSI7DQo+Pj4+Pj4g K1doZW4gQHZhcntsZXZlbH0gaXMgMiwgdGhlIHRyYWlsaW5nIGFycmF5IGlzIHRyZWF0ZWQgYXMg YSBmbGV4aWJsZSBhcnJheSBtZW1iZXINCj4+Pj4+PiArd2hlbiBpdCBpcyBkZWNsYXJlZCBhcyBl aXRoZXIgIltdIiwgb3IgIlswXSIuDQo+Pj4+PiANCj4+Pj4+IEdpdmVuIHRoZSBhYm92ZSBkb2Vz IGFkZGluZyBsZXZlbCAyIG1ha2Ugc2Vuc2UgZ2l2ZW4gdGhhdCBbMF0gaXMgYSBHTlUNCj4+Pj4+ IGV4dGVuc2lvbj8NCj4+Pj4gSSB0aGluayBLZWVzIGFscmVhZHkgYW5zd2VyZWQgdGhpcyBxdWVz dGlvbi4NCj4+Pj4+IA0KPj4+Pj4+ICtUaGlzIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB3aXRoIG9y IHdpdGhvdXQgQG9wdGlvbnstZnN0cmljdC1mbGV4LWFycmF5fS4gV2hlbg0KPj4+Pj4+ICtib3Ro IHRoZSBhdHRyaWJ1dGUgYW5kIHRoZSBvcHRpb24gcHJlc2VudCBhdCB0aGUgc2FtZSB0aW1lLCB0 aGUgbGV2ZWwgb2YgdGhlDQo+Pj4+Pj4gK3N0cmljdG5lc3MgZm9yIHRoZSBzcGVjaWZpYyB0cmFp bGluZyBhcnJheSBmaWVsZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhdHRyaWJ1dGUuDQo+Pj4+Pj4g Kw0KPj4+Pj4+ICsNCj4+Pj4+PiBAaXRlbSBhbGxvY19zaXplIChAdmFye3Bvc2l0aW9ufSkNCj4+ Pj4+PiBAaXRlbXggYWxsb2Nfc2l6ZSAoQHZhcntwb3NpdGlvbi0xfSwgQHZhcntwb3NpdGlvbi0y fSkNCj4+Pj4+PiBAY2luZGV4IEBjb2Rle2FsbG9jX3NpemV9IHZhcmlhYmxlIGF0dHJpYnV0ZQ0K Pj4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2Uu dGV4aQ0KPj4+Pj4+IGluZGV4IDk0ZmU1N2FhNGUyLi45YmVmZTYwMTgxNyAxMDA2NDQNCj4+Pj4+ PiAtLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpDQo+Pj4+Pj4gKysrIGIvZ2NjL2RvYy9pbnZva2Uu dGV4aQ0KPj4+Pj4+IEBAIC0yMDcsNyArMjA3LDggQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9u cy4NCj4+Pj4+PiAtZm9wZW5tcCAgLWZvcGVubXAtc2ltZCBAZ29sDQo+Pj4+Pj4gLWZwZXJtaXR0 ZWQtZmx0LWV2YWwtbWV0aG9kcz1AdmFye3N0YW5kYXJkfSBAZ29sDQo+Pj4+Pj4gLWZwbGFuOS1l eHRlbnNpb25zICAtZnNpZ25lZC1iaXRmaWVsZHMgIC1mdW5zaWduZWQtYml0ZmllbGRzIEBnb2wN Cj4+Pj4+PiAtLWZzaWduZWQtY2hhciAgLWZ1bnNpZ25lZC1jaGFyICAtZnNzby1zdHJ1Y3Q9QHZh cntlbmRpYW5uZXNzfX0NCj4+Pj4+PiArLWZzaWduZWQtY2hhciAgLWZ1bnNpZ25lZC1jaGFyIC1m c3RyaWN0LWZsZXgtYXJyYXlbPUB2YXJ7bn1dIEBnb2wNCj4+Pj4+PiArLWZzc28tc3RydWN0PUB2 YXJ7ZW5kaWFubmVzc319DQo+Pj4+Pj4gDQo+Pj4+Pj4gQGl0ZW0gQysrIExhbmd1YWdlIE9wdGlv bnMNCj4+Pj4+PiBAeHJlZntDKysgRGlhbGVjdCBPcHRpb25zLCxPcHRpb25zIENvbnRyb2xsaW5n IEMrKyBEaWFsZWN0fS4NCj4+Pj4+PiBAQCAtMjgyNSw2ICsyODI2LDMwIEBAIFRoZSB0eXBlIEBj b2Rle2NoYXJ9IGlzIGFsd2F5cyBhIGRpc3RpbmN0IHR5cGUgZnJvbSBlYWNoIG9mDQo+Pj4+Pj4g QGNvZGV7c2lnbmVkIGNoYXJ9IG9yIEBjb2Rle3Vuc2lnbmVkIGNoYXJ9LCBldmVuIHRob3VnaCBp dHMgYmVoYXZpb3INCj4+Pj4+PiBpcyBhbHdheXMganVzdCBsaWtlIG9uZSBvZiB0aG9zZSB0d28u DQo+Pj4+Pj4gDQo+Pj4+Pj4gK0BpdGVtIC1mc3RyaWN0LWZsZXgtYXJyYXkNCj4+Pj4+PiArQG9w aW5kZXggZnN0cmljdC1mbGV4LWFycmF5DQo+Pj4+Pj4gK0BvcGluZGV4IGZuby1zdHJpY3QtZmxl eC1hcnJheQ0KPj4+Pj4+ICtUcmVhdCB0aGUgdHJhaWxpbmcgYXJyYXkgb2YgYSBzdHJ1Y3R1cmUg YXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgaW4gYQ0KPj4+Pj4+ICtzdHJpY3RlciB3YXkuDQo+ Pj4+Pj4gK1RoZSBwb3NpdGl2ZSBmb3JtIGlzIGVxdWl2YWxlbnQgdG8gQG9wdGlvbnstZnN0cmlj dC1mbGV4LWFycmF5PTN9LCB3aGljaCBpcyB0aGUNCj4+Pj4+PiArc3RyaWN0ZXN0LiAgQSB0cmFp bGluZyBhcnJheSBpcyB0cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIG9ubHkgd2hl biBpdA0KPj4+Pj4+ICtpcyBkZWNsYXJlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIg Qzk5IHN0YW5kYXJkIG9ud2FyZHMuDQo+Pj4+Pj4gK1RoZSBuZWdhdGl2ZSBmb3JtIGlzIGVxdWl2 YWxlbnQgdG8gQG9wdGlvbnstZnN0cmljdC1mbGV4LWFycmF5PTB9LCB3aGljaCBpcyB0aGUNCj4+ Pj4+PiArbGVhc3Qgc3RyaWN0LiAgQWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzIGFy ZSB0cmVhdGVkIGFzIGZsZXhpYmxlIGFycmF5DQo+Pj4+Pj4gK21lbWJlcnMuDQo+Pj4+Pj4gKw0K Pj4+Pj4+ICtAaXRlbSAtZnN0cmljdC1mbGV4LWFycmF5PUB2YXJ7bGV2ZWx9DQo+Pj4+Pj4gK0Bv cGluZGV4IGZzdHJpY3QtZmxleC1hcnJheT1AdmFye2xldmVsfQ0KPj4+Pj4+ICtUcmVhdCB0aGUg dHJhaWxpbmcgYXJyYXkgb2YgYSBzdHJ1Y3R1cmUgYXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIg aW4gYQ0KPj4+Pj4+ICtzdHJpY3RlciB3YXkuICBUaGUgdmFsdWUgb2YgQHZhcntsZXZlbH0gY29u dHJvbHMgdGhlIGxldmVsIG9mIHN0cmljdG5lc3MuDQo+Pj4+Pj4gKw0KPj4+Pj4+ICtUaGUgcG9z c2libGUgdmFsdWVzIG9mIEB2YXJ7bGV2ZWx9IGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlDQo+Pj4+ Pj4gK0Bjb2Rle3N0cmljdF9mbGV4X2FycmF5fSBhdHRyaWJ1dGUgKEBweHJlZntWYXJpYWJsZSBB dHRyaWJ1dGVzfSkuDQo+Pj4+Pj4gKw0KPj4+Pj4+ICtZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhh dmlvciBmb3IgYSBzcGVjaWZpYyB0cmFpbGluZyBhcnJheSBmaWVsZCBvZiBhDQo+Pj4+Pj4gK3N0 cnVjdHVyZSBieSB1c2luZyB0aGUgdmFyaWFibGUgYXR0cmlidXRlIEBjb2Rle3N0cmljdF9mbGV4 X2FycmF5fSBhdHRyaWJ1dGUNCj4+Pj4+PiArKEBweHJlZntWYXJpYWJsZSBBdHRyaWJ1dGVzfSku DQo+Pj4+Pj4gKw0KPj4+Pj4+IEBpdGVtIC1mc3NvLXN0cnVjdD1AdmFye2VuZGlhbm5lc3N9DQo+ Pj4+Pj4gQG9waW5kZXggZnNzby1zdHJ1Y3QNCj4+Pj4+PiBTZXQgdGhlIGRlZmF1bHQgc2NhbGFy IHN0b3JhZ2Ugb3JkZXIgb2Ygc3RydWN0dXJlcyBhbmQgdW5pb25zIHRvIHRoZQ0KPj4+Pj4+IGRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS0xLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS0xLmMNCj4+Pj4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwLi5lYzg4NmM5OWIyNQ0KPj4+ Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJp Y3QtZmxleC1hcnJheS0xLmMNCj4+Pj4+PiBAQCAtMCwwICsxLDMxIEBADQo+Pj4+Pj4gKy8qIHRl c3RpbmcgdGhlIGNvcnJlY3QgdXNhZ2Ugb2YgYXR0cmlidXRlIHN0cmljdF9mbGV4X2FycmF5LiAg Ki8gICANCj4+Pj4+PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4+Pj4+PiArLyogeyBkZy1v cHRpb25zICItTzIiIH0gKi8NCj4+Pj4+PiArDQo+Pj4+Pj4gKw0KPj4+Pj4+ICtpbnQgeCBfX2F0 dHJpYnV0ZV9fICgoc3RyaWN0X2ZsZXhfYXJyYXkgKDEpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJp Y3RfZmxleF9hcnJheScgYXR0cmlidXRlIG1heSBub3QgYmUgc3BlY2lmaWVkIGZvciAneCciIH0g Ki8NCj4+Pj4+PiArDQo+Pj4+Pj4gK3N0cnVjdCB0cmFpbGluZyB7DQo+Pj4+Pj4gKyAgICBpbnQg YTsNCj4+Pj4+PiArICAgIGludCBjIF9fYXR0cmlidXRlICgoc3RyaWN0X2ZsZXhfYXJyYXkpKTsg LyogeyBkZy1lcnJvciAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBzcGVjaWZpZWQgZm9yICdz dHJpY3RfZmxleF9hcnJheScgYXR0cmlidXRlIiB9ICovDQo+Pj4+Pj4gK307DQo+Pj4+Pj4gKw0K Pj4+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfMSB7DQo+Pj4+Pj4gKyAgICBpbnQgYTsNCj4+Pj4+PiAr ICAgIGludCBiOw0KPj4+Pj4+ICsgICAgaW50IGMgX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9h cnJheSAoMikpKTsgLyogeyBkZy1lcnJvciAiJ3N0cmljdF9mbGV4X2FycmF5JyBhdHRyaWJ1dGUg bWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9yIGEgbm9uIGFycmF5IGZpZWxkIiB9ICovDQo+Pj4+Pj4g K307DQo+Pj4+Pj4gKw0KPj4+Pj4+ICtleHRlcm4gaW50IGQ7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICtz dHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiB7DQo+Pj4+Pj4gKyAgICBpbnQgYTsNCj4+Pj4+PiArICAg IGludCBiOw0KPj4+Pj4+ICsgICAgaW50IGNbMV0gX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9h cnJheSAoZCkpKTsgLyogeyBkZy1lcnJvciAiJ3N0cmljdF9mbGV4X2FycmF5JyBhdHRyaWJ1dGUg YXJndW1lbnQgbm90IGFuIGludGVnZXIiIH0gKi8NCj4+Pj4+PiArfTsNCj4+Pj4+PiArDQo+Pj4+ Pj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8zIHsNCj4+Pj4+PiArICAgIGludCBhOw0KPj4+Pj4+ ICsgICAgaW50IGI7DQo+Pj4+Pj4gKyAgICBpbnQgY1swXSBfX2F0dHJpYnV0ZSAoKHN0cmljdF9m bGV4X2FycmF5ICg1KSkpOyAvKiB7IGRnLWVycm9yICInc3RyaWN0X2ZsZXhfYXJyYXknIGF0dHJp YnV0ZSBhcmd1bWVudCAnNScgaXMgbm90IGFuIGludGVnZXIgY29uc3RhbnQgYmV0d2VlbiAwIGFu ZCAzIiB9ICovDQo+Pj4+Pj4gK307DQo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLWNvcmUu aCBiL2djYy90cmVlLWNvcmUuaA0KPj4+Pj4+IGluZGV4IGVhOWYyODFmMWNjLi40NThjNmU2Y2Vl YSAxMDA2NDQNCj4+Pj4+PiAtLS0gYS9nY2MvdHJlZS1jb3JlLmgNCj4+Pj4+PiArKysgYi9nY2Mv dHJlZS1jb3JlLmgNCj4+Pj4+PiBAQCAtMTgxMyw3ICsxODEzLDEwIEBAIHN0cnVjdCBHVFkoKCkp IHRyZWVfZGVjbF9jb21tb24gew0KPj4+Pj4+ICAgVFlQRV9XQVJOX0lGX05PVF9BTElHTi4gICov DQo+Pj4+Pj4gdW5zaWduZWQgaW50IHdhcm5faWZfbm90X2FsaWduIDogNjsNCj4+Pj4+PiANCj4+ Pj4+PiAtICAvKiAxNCBiaXRzIHVudXNlZC4gICovDQo+Pj4+Pj4gKyAgLyogSW4gRklFTERfREVD TCwgdGhpcyBpcyBERUNMX05PVF9GTEVYQVJSQVkuICAqLw0KPj4+Pj4+ICsgIHVuc2lnbmVkIGlu dCBkZWNsX25vdF9mbGV4YXJyYXkgOiAxOw0KPj4+Pj4+ICsNCj4+Pj4+PiArICAvKiAxMyBiaXRz IHVudXNlZC4gICovDQo+Pj4+PiANCj4+Pj4+IEkndmUgbm90IHNlZW4gaXQgc28geW91IGFyZSBw cm9iYWJseSBtaXNzaW5nIGl0IC0gdGhlIGJpdCBoYXMgdG8gYmUNCj4+Pj4+IHN0cmVhbWVkIGlu IHRyZWUtc3RyZWFtZXIte2luLG91dH0uY2MgdG8gYmUgdXNhYmxlIGZyb20gTFRPLg0KPj4+PiAN Cj4+Pj4gWW91IG1lYW4gYWRkIGl0IHRvIHRoZSByb3V0aW5lIOKAnHVucGFja190c19kZWNsX2Nv bW1vbl92YWx1ZV9maWVsZHPigJ0gb2YgdHJlZS1zdHJlYW1lci1pbi5jYw0KPj4+PiBBbmQg4oCc cGFja190c19kZWNsX2NvbW1vbl92YWx1ZV9maWVsZHPigJ0gb2YgdHJlZS1zdHJlYW1lci1vdXQu Y2M/DQo+Pj4gDQo+Pj4gWWVzLg0KPj4+IA0KPj4+PiANCj4+Pj4+IEMrKyBtb2R1bGUgc3RyZWFt aW5nIGFsc28gbmVlZHMgdG8gaGFuZGxlIGl0Lg0KPj4+PiANCj4+Pj4gV2hpY2ggZmlsZSBpcyBm b3IgdGhpcyBDKysgbW9kdWxlIHN0cmVhbWluZz8NCj4+PiANCj4+PiBOb3Qgc3VyZSwgbWF5YmUg Y3AvbW9kdWxlLmNjDQo+PiANCj4+IEp1c3QgY2hlY2tlZCB0aGlzIGZpbGUsIGxvb2tzIGxpa2Ug aXTigJlzIOKAnEV4cGVyaW1lbnRhbOKAnToNCj4+IC8qIEMrKyBtb2R1bGVzLiAgRXhwZXJpbWVu dGFsIQ0KPj4gDQo+PiBJcyBpdCB1c2VkIHJpZ2h0IG5vdz8gVG8gd2hvbSBJIGNhbiBjb25zdWx0 IHdpdGggdG8gZ2V0IG1vcmUgZGV0YWlsIG9uIEMrKz8NCj4gDQo+IFRoZXJlJ3MgdGVzdHN1aXRl IGluIGcrKy5kZy9tb2R1bGVzLywgTmF0aGFuIFNpZHdlbGwgc2hvdWxkIGtub3cgc2luY2UNCj4g aGUgaW1wbGVtZW50ZWQgaXQuDQpUaGFua3MsIHdpbGwgY2hlY2sgb24gdGhpcyBhbmQgY29uZmly bSB3aXRoIE5hdGhhbi4NCj4gDQo+Pj4gDQo+Pj4+PiANCj4+Pj4+PiANCj4+Pj4+PiAvKiBVSUQg Zm9yIHBvaW50cy10byBzZXRzLCBzdGFibGUgb3ZlciBjb3B5aW5nIGZyb20gaW5saW5pbmcuICAq Lw0KPj4+Pj4+IHVuc2lnbmVkIGludCBwdF91aWQ7DQo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90 cmVlLmNjIGIvZ2NjL3RyZWUuY2MNCj4+Pj4+PiBpbmRleCA4NDAwMGRkOGI2OS4uMDJlMjc0Njk5 ZmIgMTAwNjQ0DQo+Pj4+Pj4gLS0tIGEvZ2NjL3RyZWUuY2MNCj4+Pj4+PiArKysgYi9nY2MvdHJl ZS5jYw0KPj4+Pj4+IEBAIC0xMjg2Miw3ICsxMjg2Miw3IEBAIGdldF9pbml0aWFsaXplcl9mb3Ig KHRyZWUgaW5pdCwgdHJlZSBkZWNsKQ0KPj4+Pj4+IC8qIERldGVybWluZXMgdGhlIHNpemUgb2Yg dGhlIG1lbWJlciByZWZlcmVuY2VkIGJ5IHRoZSBDT01QT05FTlRfUkVGDQo+Pj4+Pj4gUkVGLCB1 c2luZyBpdHMgaW5pdGlhbGl6ZXIgZXhwcmVzc2lvbiBpZiBuZWNlc3NhcnkgaW4gb3JkZXIgdG8N Cj4+Pj4+PiBkZXRlcm1pbmUgdGhlIHNpemUgb2YgYW4gaW5pdGlhbGl6ZWQgZmxleGlibGUgYXJy YXkgbWVtYmVyLg0KPj4+Pj4+IC0gICBJZiBub24tbnVsbCwgc2V0ICpBUksgd2hlbiBSRUYgcmVm ZXJzIHRvIGFuIGludGVyaW9yIHplcm8tbGVuZ3RoDQo+Pj4+Pj4gKyAgIElmIG5vbi1udWxsLCBz ZXQgKlNBTSB3aGVuIFJFRiByZWZlcnMgdG8gYW4gaW50ZXJpb3IgemVyby1sZW5ndGgNCj4+Pj4+ PiBhcnJheSBvciBhIHRyYWlsaW5nIG9uZS1lbGVtZW50IGFycmF5Lg0KPj4+Pj4+IFJldHVybnMg dGhlIHNpemUgYXMgc2l6ZXR5cGUgKHdoaWNoIG1pZ2h0IGJlIHplcm8gZm9yIGFuIG9iamVjdA0K Pj4+Pj4+IHdpdGggYW4gdW5pbml0aWFsaXplZCBmbGV4aWJsZSBhcnJheSBtZW1iZXIpIG9yIG51 bGwgaWYgdGhlIHNpemUNCj4+Pj4+PiBAQCAtMTI4NzgsMTYgKzEyODc4LDMyIEBAIGNvbXBvbmVu dF9yZWZfc2l6ZSAodHJlZSByZWYsIHNwZWNpYWxfYXJyYXlfbWVtYmVyICpzYW0gLyogPSBOVUxM ICovKQ0KPj4+Pj4+ICBzYW0gPSAmc2FtYnVmOw0KPj4+Pj4+ICpzYW0gPSBzcGVjaWFsX2FycmF5 X21lbWJlcjo6bm9uZTsNCj4+Pj4+PiANCj4+Pj4+PiArICAvKiBXaGV0aGVyIHRoaXMgcmVmIGlz IGFuIGFycmF5IGF0IHRoZSBlbmQgb2YgYSBzdHJ1Y3R1cmUuICAqLw0KPj4+Pj4+ICsgIGJvb2wg dHJhaWxpbmcgPSBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHJlZik7DQo+Pj4+Pj4gKw0KPj4+Pj4g DQo+Pj4+PiBhY3R1YWxseSBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgcmV0dXJucyB3aGV0aGVyIHJl ZiBwb3NzaWJseSByZWZlcnMgdG8NCj4+Pj4+IGEgdHJhaWxpbmcgYXJyYXkuICBJbiBwYXJ0aWN1 bGFyIGl0IG1heSByZXR1cm4gZmFsc2UgZm9yIGFycmF5cyBhdA0KPj4+Pj4gc3RydWN0IGVuZCB3 aXRoIGEga25vd24gbGVuZ3RoIGFzIGluIGEuYltpXSBmb3IgdGhlIHJlZmVyZW5jZSB0byBnbG9i YWwgDQo+Pj4+PiAnYSc6DQo+Pj4+PiANCj4+Pj4+IHN0cnVjdCB7IGludCBiWzFdOyB9IGE7DQo+ Pj4+IA0KPj4+PiBZZXMsIEkgbm90aWNlZCB0aGlzIGJlaGF2aW9yIGR1cmluZyBteSByZWNlbnQg ZGVidWdnaW5nIG9mIHRoaXMgcm91dGluZS4gSSB0aG91Z2h0IGl04oCZcyBhIGJ1ZyBhbmQgcGxh bm5lZCB0byBmaWxlIGFub3RoZXIgYnVnIGFnYWluc3QgaXQuDQo+Pj4+IExvb2tzIGxpa2UgdGhh dCB0aGlzIGlzIGFuIGV4cGVjdGVkIGJlaGF2aW9yLg0KPj4+PiANCj4+Pj4gVGhlbiBJIHJlYWxs eSBmZWVsIHRoZSBuYW1lIGFuZCB0aGUgY29tbWVudHMgb2YgdGhlIHJvdXRpbmUgaXMgdmVyeSBj b25mdXNpbmfigKYNCj4+Pj4gU2hhbGwgd2UgY2hhbmdlIHRoZSBuYW1lIG9mIHRoaXMgcm91dGlu ZSB0byBhIG1vcmUgZGVzY3JpcHRpdmUgb25lPyBGb3IgZXhhbXBsZSwg4oCcZmxleGlibGVfYXJy YXlfbWVtYmVyX3DigJ0/IA0KPj4+IA0KPj4+IE5vdGUgdGhlIHJvdXRpbmUgaXMgYWJvdXQgY2xh c3NpZnlpbmcgYSBjb25jcmV0ZSByZWZlcmVuY2UsIHNvIGEgYmV0dGVyDQo+Pj4gbmFtZSBjb3Vs ZCBiZSBmbGV4X2FycmF5X3JlZl9wICgpLiAgVGhlIG5hbWUgY2hhbmdlIHNob3VsZCBiZSBkb25l DQo+Pj4gc2VwYXJhdGVseSAoaWYgYXQgYWxsKS4NCj4+IA0KPj4gT2theS4gDQo+PiANCj4+PiAN Cj4+Pj4+IA0KPj4+Pj4gc28gaW4gdGhlIGVuZCBpdCBzaG91bGQgYmUgYXJyYXlfYXRfc3RydWN0 X2VuZF9wIGFsc28gaG9ub3JpbmcNCj4+Pj4+IERFQ0xfTk9UX0ZMRVhBUlJBWS4NCj4+Pj4gDQo+ Pj4+IFRoZW4gaXTigJlzIG1ha2UgbW9yZSBzZW5zZSB0byBjaGVjayBERUNMX05PVF9GTEVYQVJS QVkgaW5zaWRlIHRoaXMgdXRpbGl0eSByb3V0aW5lPw0KPj4+IA0KPj4+IFllcy4NCj4+PiANCj4+ Pj4+IA0KPj4+Pj4+IC8qIFRoZSBvYmplY3QvYXJndW1lbnQgcmVmZXJlbmNlZCBieSB0aGUgQ09N UE9ORU5UX1JFRiBhbmQgaXRzIHR5cGUuICAqLw0KPj4+Pj4+IHRyZWUgYXJnID0gVFJFRV9PUEVS QU5EIChyZWYsIDApOw0KPj4+Pj4+IHRyZWUgYXJndHlwZSA9IFRSRUVfVFlQRSAoYXJnKTsNCj4+ Pj4+PiAtICAvKiBUaGUgcmVmZXJlbmNlZCBtZW1iZXIuICAqLw0KPj4+Pj4+IC0gIHRyZWUgbWVt YmVyID0gVFJFRV9PUEVSQU5EIChyZWYsIDEpOw0KPj4+Pj4+IA0KPj4+Pj4+ICsgIC8qIFRoZSBy ZWZlcmVuY2VkIGZpZWxkIG1lbWJlci4gICovDQo+Pj4+Pj4gKyAgdHJlZSBtZW1iZXIgPSBUUkVF X09QRVJBTkQgKHJlZiwgMSk7DQo+Pj4+Pj4gKyAgdHJlZSBtZW10eXBlID0gVFJFRV9UWVBFICht ZW1iZXIpOw0KPj4+Pj4+IHRyZWUgbWVtc2l6ZSA9IERFQ0xfU0laRV9VTklUIChtZW1iZXIpOw0K Pj4+Pj4+ICsNCj4+Pj4+PiArICBib29sIGlzX3plcm9fbGVuZ3RoX2FycmF5X3JlZiA9IHplcm9f bGVuZ3RoX2FycmF5X3AgKG1lbXR5cGUpOw0KPj4+Pj4+ICsgIGJvb2wgaXNfY29uc3RhbnRfbGVu Z3RoX2FycmF5X3JlZiA9IGZhbHNlOw0KPj4+Pj4+ICsgIGJvb2wgaXNfb25lX2VsZW1lbnRfYXJy YXlfcmVmDQo+Pj4+Pj4gKwk9IG9uZV9lbGVtZW50X2FycmF5X3AgKG1lbXR5cGUsICZpc19jb25z dGFudF9sZW5ndGhfYXJyYXlfcmVmKTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKyAgLyogRGV0ZXJtaW5l IHRoZSB0eXBlIG9mIHRoZSBzcGVjaWFsIGFycmF5IG1lbWJlci4gICovDQo+Pj4+Pj4gKyAgaWYg KGlzX3plcm9fbGVuZ3RoX2FycmF5X3JlZikNCj4+Pj4+PiArICAgICpzYW0gPSB0cmFpbGluZyA/ IHNwZWNpYWxfYXJyYXlfbWVtYmVyOjp0cmFpbF8wDQo+Pj4+Pj4gKwkgICA6IHNwZWNpYWxfYXJy YXlfbWVtYmVyOjppbnRfMDsNCj4+Pj4+PiArICBlbHNlIGlmIChpc19vbmVfZWxlbWVudF9hcnJh eV9yZWYgJiYgdHJhaWxpbmcpDQo+Pj4+Pj4gKyAgICAqc2FtID0gc3BlY2lhbF9hcnJheV9tZW1i ZXI6OnRyYWlsXzE7DQo+Pj4+Pj4gKw0KPj4+Pj4+IGlmIChtZW1zaXplKQ0KPj4+Pj4+ICB7DQo+ Pj4+Pj4gLSAgICAgIHRyZWUgbWVtdHlwZSA9IFRSRUVfVFlQRSAobWVtYmVyKTsNCj4+Pj4+PiAg ICBpZiAoVFJFRV9DT0RFIChtZW10eXBlKSAhPSBBUlJBWV9UWVBFKQ0KPj4+Pj4+IAkvKiBERUNM X1NJWkUgbWF5IGJlIGxlc3MgdGhhbiBUWVBFX1NJWkUgaW4gQysrIHdoZW4gcmVmZXJyaW5nDQo+ Pj4+Pj4gCSAgIHRvIHRoZSB0eXBlIG9mIGEgY2xhc3Mgd2l0aCBhIHZpcnR1YWwgYmFzZSB3aGlj aCBkb2Vzbid0DQo+Pj4+Pj4gQEAgLTEyODk3LDUwICsxMjkxMywzMCBAQCBjb21wb25lbnRfcmVm X3NpemUgKHRyZWUgcmVmLCBzcGVjaWFsX2FycmF5X21lbWJlciAqc2FtIC8qID0gTlVMTCAqLykN Cj4+Pj4+PiAJcmV0dXJuICh0cmVlX2ludF9jc3RfZXF1YWwgKG1lbXNpemUsIFRZUEVfU0laRV9V TklUIChtZW10eXBlKSkNCj4+Pj4+PiAJCT8gbWVtc2l6ZSA6IE5VTExfVFJFRSk7DQo+Pj4+Pj4g DQo+Pj4+Pj4gLSAgICAgIGJvb2wgdHJhaWxpbmcgPSBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHJl Zik7DQo+Pj4+Pj4gLSAgICAgIGJvb2wgemVyb19sZW5ndGggPSBpbnRlZ2VyX3plcm9wIChtZW1z aXplKTsNCj4+Pj4+PiAtICAgICAgaWYgKCF0cmFpbGluZyAmJiAhemVyb19sZW5ndGgpDQo+Pj4+ Pj4gKyAgICAgIGlmICghdHJhaWxpbmcgJiYgIWlzX3plcm9fbGVuZ3RoX2FycmF5X3JlZikNCj4+ Pj4+PiAJLyogTUVNQkVSIGlzIGVpdGhlciBhbiBpbnRlcmlvciBhcnJheSBvciBpcyBhbiBhcnJh eSB3aXRoDQo+Pj4+Pj4gCSAgIG1vcmUgdGhhbiBvbmUgZWxlbWVudC4gICovDQo+Pj4+Pj4gCXJl dHVybiBtZW1zaXplOw0KPj4+Pj4+IA0KPj4+Pj4+IC0gICAgICBpZiAoemVyb19sZW5ndGgpDQo+ Pj4+Pj4gLQl7DQo+Pj4+Pj4gLQkgIGlmICh0cmFpbGluZykNCj4+Pj4+PiAtCSAgICAqc2FtID0g c3BlY2lhbF9hcnJheV9tZW1iZXI6OnRyYWlsXzA7DQo+Pj4+Pj4gLQkgIGVsc2UNCj4+Pj4+PiAt CSAgICB7DQo+Pj4+Pj4gLQkgICAgICAqc2FtID0gc3BlY2lhbF9hcnJheV9tZW1iZXI6OmludF8w Ow0KPj4+Pj4+IC0JICAgICAgbWVtc2l6ZSA9IE5VTExfVFJFRTsNCj4+Pj4+PiAtCSAgICB9DQo+ Pj4+Pj4gLQl9DQo+Pj4+Pj4gKyAgICAgIGlmICgqc2FtICE9IHNwZWNpYWxfYXJyYXlfbWVtYmVy Ojp0cmFpbF8xDQo+Pj4+Pj4gKwkgICYmIGlzX2NvbnN0YW50X2xlbmd0aF9hcnJheV9yZWYpDQo+ Pj4+Pj4gKwkvKiBNRU1CRVIgaXMgYSBjb25zdGFudCBsZW5ndGggYXJyYXkgd2hpY2ggaXMgbm90 IGEgb25lLWVsZW1lbnQNCj4+Pj4+PiArCSAgIHRyYWlsaW5nIGFycmF5LiAgKi8NCj4+Pj4+PiAr CXJldHVybiBtZW1zaXplOw0KPj4+Pj4+IA0KPj4+Pj4+IC0gICAgICBpZiAoIXplcm9fbGVuZ3Ro KQ0KPj4+Pj4+IC0JaWYgKHRyZWUgZG9tID0gVFlQRV9ET01BSU4gKG1lbXR5cGUpKQ0KPj4+Pj4+ IC0JICBpZiAodHJlZSBtaW4gPSBUWVBFX01JTl9WQUxVRSAoZG9tKSkNCj4+Pj4+PiAtCSAgICBp ZiAodHJlZSBtYXggPSBUWVBFX01BWF9WQUxVRSAoZG9tKSkNCj4+Pj4+PiAtCSAgICAgIGlmIChU UkVFX0NPREUgKG1pbikgPT0gSU5URUdFUl9DU1QNCj4+Pj4+PiAtCQkgICYmIFRSRUVfQ09ERSAo bWF4KSA9PSBJTlRFR0VSX0NTVCkNCj4+Pj4+PiAtCQl7DQo+Pj4+Pj4gLQkJICBvZmZzZXRfaW50 IG1pbmlkeCA9IHdpOjp0b19vZmZzZXQgKG1pbik7DQo+Pj4+Pj4gLQkJICBvZmZzZXRfaW50IG1h eGlkeCA9IHdpOjp0b19vZmZzZXQgKG1heCk7DQo+Pj4+Pj4gLQkJICBvZmZzZXRfaW50IG5lbHRz bTEgPSBtYXhpZHggLSBtaW5pZHg7DQo+Pj4+Pj4gLQkJICBpZiAobmVsdHNtMSA+IDApDQo+Pj4+ Pj4gLQkJICAgIC8qIE1FTUJFUiBpcyBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiBvbmUgZWxlbWVu dC4gICovDQo+Pj4+Pj4gLQkJICAgIHJldHVybiBtZW1zaXplOw0KPj4+Pj4+IC0NCj4+Pj4+PiAt CQkgIGlmIChuZWx0c20xID09IDApDQo+Pj4+Pj4gLQkJICAgICpzYW0gPSBzcGVjaWFsX2FycmF5 X21lbWJlcjo6dHJhaWxfMTsNCj4+Pj4+PiAtCQl9DQo+Pj4+Pj4gKyAgICAgIGlmICgqc2FtID09 IHNwZWNpYWxfYXJyYXlfbWVtYmVyOjppbnRfMCkNCj4+Pj4+PiArCW1lbXNpemUgPSBOVUxMX1RS RUU7DQo+Pj4+Pj4gDQo+Pj4+Pj4gLSAgICAgIC8qIEZvciBhIHJlZmVyZW5jZSB0byBhIHplcm8t IG9yIG9uZS1lbGVtZW50IGFycmF5IG1lbWJlciBvZiBhIHVuaW9uDQo+Pj4+Pj4gLQkgdXNlIHRo ZSBzaXplIG9mIHRoZSB1bmlvbiBpbnN0ZWFkIG9mIHRoZSBzaXplIG9mIHRoZSBtZW1iZXIuICAq Lw0KPj4+Pj4+ICsgICAgICAvKiBGb3IgYSByZWZlcmVuY2UgdG8gYSBmbGV4aWJsZSBhcnJheSBt ZW1iZXIsIGFuIGludGVyaW9yIHplcm8gbGVuZ3RoDQo+Pj4+Pj4gKwkgYXJyYXksIG9yIGFuIGFy cmF5IHdpdGggdmFyaWFibGUgbGVuZ3RoIG9mIGEgdW5pb24sIHVzZSB0aGUgc2l6ZSBvZg0KPj4+ Pj4+ICsJIHRoZSB1bmlvbiBpbnN0ZWFkIG9mIHRoZSBzaXplIG9mIHRoZSBtZW1iZXIuICAqLw0K Pj4+Pj4+ICAgIGlmIChUUkVFX0NPREUgKGFyZ3R5cGUpID09IFVOSU9OX1RZUEUpDQo+Pj4+Pj4g CW1lbXNpemUgPSBUWVBFX1NJWkVfVU5JVCAoYXJndHlwZSk7DQo+Pj4+Pj4gIH0NCj4+Pj4+PiAN Cj4+Pj4+PiAtICAvKiBNRU1CRVIgaXMgZWl0aGVyIGEgYm9uYSBmaWRlIGZsZXhpYmxlIGFycmF5 IG1lbWJlciwgb3IgYSB6ZXJvLWxlbmd0aA0KPj4+Pj4+IC0gICAgIGFycmF5IG1lbWJlciwgb3Ig YW4gYXJyYXkgb2YgbGVuZ3RoIG9uZSB0cmVhdGVkIGFzIHN1Y2guICAqLw0KPj4+Pj4+ICsgIC8q IE1FTUJFUiBub3cgaXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIsIGFuIGludGVyaW9yIHplcm8g bGVuZ3RoIGFycmF5LCBvcg0KPj4+Pj4+ICsgICAgIGFuIGFycmF5IHdpdGggdmFyaWFibGUgbGVu Z3RoLiAgV2UgbmVlZCB0byBkZWNpZGUgaXRzIHNpemUgZnJvbSBpdHMNCj4+Pj4+PiArICAgICBp bml0aWFsaXplci4gICovDQo+Pj4+Pj4gDQo+Pj4+Pj4gLyogSWYgdGhlIHJlZmVyZW5jZSBpcyB0 byBhIGRlY2xhcmVkIG9iamVjdCBhbmQgdGhlIG1lbWJlciBhIHRydWUNCj4+Pj4+PiAgIGZsZXhp YmxlIGFycmF5LCB0cnkgdG8gZGV0ZXJtaW5lIGl0cyBzaXplIGZyb20gaXRzIGluaXRpYWxpemVy LiAgKi8NCj4+Pj4+PiBAQCAtMTQzNTEsNiArMTQzNDcsNTkgQEAgZGVmYXVsdF9pc19lbXB0eV9y ZWNvcmQgKGNvbnN0X3RyZWUgdHlwZSkNCj4+Pj4+PiByZXR1cm4gaXNfZW1wdHlfdHlwZSAoVFlQ RV9NQUlOX1ZBUklBTlQgKHR5cGUpKTsNCj4+Pj4+PiB9DQo+Pj4+Pj4gDQo+Pj4+Pj4gKy8qIERl dGVybWluZSB3aGV0aGVyIFRZUEUgaXMgYSBJU08gZmxleGlibGUgYXJyYXkgbWVtZWJlciB0eXBl ICJbXSIuICAqLw0KPj4+Pj4gDQo+Pj4+PiBJU08gQzk5DQo+Pj4+IA0KPj4+PiBPa2F5LCB3aWxs IGFkZCB0aGlzLg0KPj4+Pj4gDQo+Pj4+Pj4gK2Jvb2wNCj4+Pj4+PiArZmxleGlibGVfYXJyYXlf bWVtYmVyX3AgKGNvbnN0X3RyZWUgdHlwZSkNCj4+Pj4+IA0KPj4+Pj4gc2luY2UgeW91IHBhc3Mg aW4gYSB0eXBlIGEgYmV0dGVyIG5hbWUgd291bGQgYmUNCj4+Pj4+IGZsZXhpYmxlX2FycmF5X3R5 cGVfcD8NCj4+Pj4gT2theSwgaG93IGFib3V0IOKAnGZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBl X3DigJ0/IChTaW5jZSDigJxmbGV4aWJsZSBhcnJheSBtZW1iZXLigJ0gaXMgYSBjb21wbGV0ZSBj b25jZXB0KS4NCj4+PiANCj4+PiB3b3JrcyBmb3IgbWUNCj4+PiANCj4+Pj4+IA0KPj4+Pj4+ICt7 DQo+Pj4+Pj4gKyAgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRQ0KPj4+Pj4+ICsg ICAgICAmJiBUWVBFX1NJWkUgKHR5cGUpID09IE5VTExfVFJFRQ0KPj4+Pj4+ICsgICAgICAmJiBU WVBFX0RPTUFJTiAodHlwZSkgIT0gTlVMTF9UUkVFDQo+Pj4+PiANCj4+Pj4+IHdoeSByZXF1aXJl IGEgc3BlY2lmaWVkIFRZUEVfRE9NQUlOPw0KPj4+PiANCj4+Pj4gVGhlcmUgYXJlIG11bHRpcGxl IHBsYWNlcyBpbiB0aGUgY3VycmVudCBHQ0MgdXNlZCB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOg0K Pj4+PiANCj4+Pj4gLSAgICAgIGlmIChUUkVFX0NPREUgKHR5cGUpKSA9PSBBUlJBWV9UWVBFDQo+ Pj4+IC0gICAgICAgICAmJiBUWVBFX1NJWkUgKHR5cGUpID09IE5VTExfVFJFRQ0KPj4+PiAtICAg ICAgICAgJiYgVFlQRV9ET01BSU4gKHR5cGUpICE9IE5VTExfVFJFRQ0KPj4+PiAtICAgICAgICAg JiYgVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOICh0eXBlKSkgPT0gTlVMTF9UUkVFKQ0KPj4+ PiANCj4+Pj4gVG8gY2hlY2sgd2hldGhlciB0aGUgdHlwZSBpcyBhIGZsZXhpYmxlX2FycmF5X21l bWJlciB0eXBlLiAgDQo+Pj4+IChGb3IgZXhhbXBsZSwgdGhlIHJvdXRpbmUg4oCcYWRkX2ZsZXhp YmxlX2FycmF5X2VsdHNfdG9fc2l6ZeKAnSBpbiBjL2MtZGVjbC5jYw0KPj4+PiAJCQl0aGUgcm91 dGluZSDigJxmaW5pc2hfc3RydWN04oCdIGluIGMvYy1kZWNsLmNjDQo+Pj4+IAkJCXRoZSByb3V0 aW5lIOKAnGZsZXhpYmxlX2FycmF5X3R5cGVfcOKAnSBpbiB0cmVlLmNjKQ0KPj4+PiANCj4+Pj4g VGhhdOKAmXMgdGhlIHJlYXNvbiBJIGNvbWUgdXAgd2l0aCB0aGlzIGNvbW1vbiByb3V0aW5lIHRv IHJlcGxhY2UgYWxsIHRoZXNlIHNlcXVlbmNlcy4NCj4+Pj4gDQo+Pj4+IA0KPj4+Pj4+ICsgICAg ICAmJiBUWVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKHR5cGUpKSA9PSBOVUxMX1RSRUUpDQo+ Pj4+PiANCj4+Pj4+IGFuZCB3aHkgYSBOVUxMIFRZUEVfTUFYX1ZBTFVFPyAgSXNuJ3QgYW4gdW5r bm93biBUWVBFX1NJWkUgZW5vdWdoPw0KPj4+PiANCj4+Pj4gRG9lcyB0aGUgY3VycmVudCBGRSBn ZW5lcmF0ZSBzdWNoIElSIGZvciBhIFtdPyAgQW4gYXJyYXkgdHlwZSwgd2l0aG91dCBUWVBFX1NJ WkUsIHdpdGggYSBUWVBFX0RPTUFJTiwgYnV0IHRoZSBNQVhfVkFMVUUgb2YgdGhlIFRZUEVfRE9N QUlOIGlzIE5VTEw/DQo+Pj4+IA0KPj4+Pj4gDQo+Pj4+PiBUaGF0IHNhaWQsIEknbSBub3Qgc3Vy ZSBwcm92aWRpbmcgdGhpcyBhYnN0cmFjdGlvbiBpcyBhIGdvb2QgaWRlYQ0KPj4+Pj4gZ2l2ZW4g dGhlIHVzZSBJIHNlZSBpcyBpbiBmcm9udGVuZCBjb2RlLg0KPj4+PiANCj4+Pj4gVGhpcyBvbmUg aXMgYWxzbyB1c2VkIGluIG1pZGRsZS1lbmQsIGZvciBleGFtcGxlIOKAnGZsZXhpYmxlX2FycmF5 X3R5cGVfcOKAnSBpbiB0cmVlLmNjLg0KPj4+IA0KPj4+IFRoYXQgd2FzIG9yaWdpbmFsbHkgaW4g Yy1kZWNsLmMsIHNlZW1zIHNvbWUgdGFyZ2V0IHdhbnRlZCB0byB1c2UgaXQuICBUaGUNCj4+PiBp c3N1ZSB3aXRoIHRoaXMgaXMgdGhhdCBpdCB0ZXN0cyB0aGUgQyBmcm9udGVuZCB3YXkgb2YgZGVj bGFyaW5nIGEgZmxleA0KPj4+IGFycmF5IChhbmQgaXQgaXMgdXNlZCBieSB0aGUgZnJvbnRlbmQp LCBidXQgdGhlcmUgYXJlIG1hbnkgb3RoZXIgcG9zc2libGUNCj4+PiByZXByZXNlbnRhdGlvbnMg dGhlIG1pZGRsZS1lbmQgc2hvdWxkIGNsYXNzaWZ5IGFzIGZsZXggYXJyYXkuDQo+Pj4gDQo+Pj4g VGhlIE9iamVjdGl2ZSBDIGZyb250ZW5kIGFsc28gaGFzIGEgZnVuY3Rpb24gbmFtZWQgdGhpcyB3 YXkgYW5kIGl0IHNlZW1zDQo+Pj4gdG8gYmUgYSAxOjEgY29weSA6Lw0KPj4+IA0KPj4+IFRoZSBu aW9zMiB1c2Ugb2YgdGhlIGZ1bmN0aW9uIGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIG1lIC0g ZXh0ZXJuYWxzDQo+Pj4gc2hvdWxkIG5vdCBlbmQgdXAgaW4gX2FueV8gc2VjdGlvbiE/DQo+PiAN Cj4+IFdoYXTigJlzIHlvdSBtZWFuIGJ5IOKAnG5pb3My4oCdID8gIE5vdCBxdWl0ZSB1bmRlcnN0 YW5kIHRoaXMgc2VudGVuY2UuIC06KSBjb3VsZCB5b3UgZXhwbGFpbiBhIGxpdHRsZSBiaXQ/DQo+ IA0KPiBuaW9zMiBpcyBvbmUgb2YgR0NDcyB0YXJnZXQgYXJjaGl0ZWN0dXJlcywgaXQgd2FzIGEg dXNlIGluIHRoZSBuaW9zMg0KPiBiYWNrZW5kIHRoaXMgZnVuY3Rpb24gd2FzIG1vdmVkIHRvIGdl bmVyaWMgY29kZSBmb3IgYnV0IHRoZSBhY3R1YWwgdXNlDQo+IGRvZXNuJ3QgcmVhbGx5IG1ha2Ug c2Vuc2UgdG8gbWUgLi4uIChpdCdzIG5vdCB5b3VyIGZhdWx0IG9mIGNvdXJzZSkNCg0KT2theSwg SSBzZWUuICBUaGFua3MgZm9yIHRoZSBkZXRhaWxlZCBleHBsYW5hdGlvbi4gDQoNCkFuZCBub3cg SSB1bmRlcnN0YW5kIHlvdXIgcG9pbnQsIEdDQyBoYXMgbXVsdGlwbGUgRkVzLCBzbyB0aGUgRkUg c3BlY2lmaWMgY29uY2VwdA0KIChmb3IgZXhhbXBsZSwgdGhpcyBmbGV4aWJsZSBhcnJheSBtZW1i ZXIgY29uY2VwdCBpcyBhIEMvQysrIHNwZWNpZmljIGNvbmNlcHQpIHNob3VsZCANCm5vdCBiZSBw dXQgaW50byBtaWRkbGUgZW5kLiANCg0KSSB3aWxsIGtlZXAgdGhpcyBpbiBtaW5kIGluIHRoZSBu ZXh0IHZlcnNpb24uDQoNCg0KPiANCj4+PiANCj4+PiBTbyBJJ2QgcmF0aGVyIG1vdmUgdGhpcyBm dW5jdGlvbiBiYWNrIHRvIHdoZXJlIGl0IGNhbWUgZnJvbSwgaWRlYWxseQ0KPj4+IHRvIGMtZmFt aWx5LywgcmVtb3ZpbmcgdGhlIGNvcHkgaW4gb2JqZWN0aXZlIEMgLi4uDQo+PiANCj4+IE9rYXks IEkgd2lsbCB0cnkgIHRoaXMgaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4+PiANCj4+Pj4+IA0KPj4+ Pj4+ICsgICAgcmV0dXJuIHRydWU7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsgIHJldHVybiBmYWxzZTsN Cj4+Pj4+PiArfQ0KPj4+Pj4+ICsNCj4+Pj4+PiArLyogRGV0ZXJtaW5lIHdoZXRoZXIgVFlQRSBp cyBhIHplcm8tbGVuZ3RoIGFycmF5IHR5cGUgIlswXSIuICAqLw0KPj4+Pj4+ICtib29sDQo+Pj4+ Pj4gK3plcm9fbGVuZ3RoX2FycmF5X3AgKGNvbnN0X3RyZWUgdHlwZSkNCj4+Pj4+PiArew0KPj4+ Pj4+ICsgIGlmIChUUkVFX0NPREUgKHR5cGUpID09IEFSUkFZX1RZUEUpDQo+Pj4+Pj4gKyAgICBp ZiAodHJlZSB0eXBlX3NpemUgPSBUWVBFX1NJWkVfVU5JVCAodHlwZSkpDQo+Pj4+Pj4gKyAgICAg IGlmICgoaW50ZWdlcl96ZXJvcCAodHlwZV9zaXplKSkNCj4+Pj4+PiArCSAgICYmIFRZUEVfRE9N QUlOICh0eXBlKSAhPSBOVUxMX1RSRUUNCj4+Pj4+PiArCSAgICYmIFRZUEVfTUFYX1ZBTFVFIChU WVBFX0RPTUFJTiAodHlwZSkpID09IE5VTExfVFJFRSkNCj4+Pj4+IA0KPj4+Pj4gdGhhdCBhZ2Fp biBzZWVtcyB2ZXJ5IEMoPykgZnJvbnRlbmQgc3BlY2lmaWMsIHBsZWFzZSBkcm9wIGl0Lg0KPj4+ PiBDdXJyZW50bHksIHRoZSBtaWRkbGUtZW5kIHV0aWxpdHkgcm91dGluZSDigJxjb21wb25lbnRf cmVmX3NpemXigJ0gbmVlZCB0byBjaGVjayB6ZXJvX2xlbmd0aF9hcnJheSwgb25lX2VsZW1lbnRf YXJyYXksIGV0YywgDQo+Pj4+IFNvLCB0aGlzIGlzIG5vdCBvbmx5IGEgRkUgc3BlY2lmaWMgcm91 dGluZS4NCj4+PiANCj4+PiBTaWdoLCBpdCdzIG5vdGhlciBzdHJhbmdlIGZ1bmN0aW9uIHRoYXQg d2FzIGludHJvZHVjZWQganVzdCBmb3IgDQo+Pj4gZGlhZ25vc3RpY3MgKHNvIGl0J3Mgbm90ICJj b3JyZWN0IiksIGl0IHNob3VsZG4ndCBoYXZlIGVuZGVkIHVwIGluDQo+Pj4gdHJlZS5jYyBJTUhP Lg0KPj4gDQo+PiBUaGUgY29kZXMgaW4gR0NDIHRvIGhhbmRsZSBmbGV4aWJsZSBhcnJheSBhcmUg cmVhbGx5IG1lc3N5LCBJIGhvcGUgdGhhdCB3ZSBjYW4gbWFrZSBpdCBjbGVhbiBhbmQgY29uc2lz dGVudCB0aHJvdWdoIHRoaXMgd29yay4gDQo+PiBPZiBjb3Vyc2UgZ3JhZHVhbGx54oCmDQo+IA0K PiBBcyBzYWlkLCBpdCdzIHVuZm9ydHVuYXRlIHRvIGhhdmUgbWFueSBBUElzIGRvaW5nIHNpbWls YXIgdGhpbmdzIGFuZA0KPiBJJ2QgcmF0aGVyIGF2b2lkIGludHJvZHVjaW5nIG5ldyBBUElzICh3 aXRoIHRvIG1lLCBxdWVzdGlvbmFibGUNCj4gaW1wbGVtZW50YXRpb24gb3IgZ2VuZXJhbCB1c2Vm dWxuZXNzKSB3aGVuIHBvc3NpYmxlLg0KDQpPa2F5LCB3aWxsIGtlZXAgdGhlIEFQSXMgYXMgc2lt cGxlIGFzIHBvc3NpYmxlLg0KPiANCj4+PiANCj4+Pj4gQW5kIEkgdGhpbmsgdGhhdCBmb3IgbWFr aW5nIHRoZSAtZnN0cmljdC1mbGV4LWFycmF5IHdvcmsgY2xlYXIsIHdlIG1pZ2h0IHdhbnQgdG8g ZW1waGFzaXplICBhbmQgZGlzdGluZ3Vpc2ggdGhlIGNvbmNlcHRzIG9mIA0KPj4+PiANCj4+Pj4g W10gICAgICAgICAgZmxleGlibGVfYXJyYXlfbWVtYmVyX3R5cGVfcA0KPj4+PiBbMF0gICAgICAg IHplcm9fbGVuZ3RoX2FycmF5X3R5cGVfcA0KPj4+PiBbMV0gICAgICAgIG9uZV9lbGVtZW50X2Fy cmF5X3R5cGVfcA0KPj4+PiANCj4+Pj4gQWNyb3NzIEdDQy4NCj4+PiANCj4+PiBXaHk/DQo+PiAN Cj4+IEJlY2F1c2UgdGhlIHdob2xlIGNvbmZ1c2lvbiBvZiBmbGV4aWJsZSBhcnJheSBoYW5kbGlu Z3MgaW4gb3VyIGNvbXBpbGVyIHN0YXJ0ZWQgZnJvbSB0aGUgY29uZnVzaW9uIG9mIHRoZXNlIGNv bmNlcHRzLg0KPj4gRHVyaW5nIG15IHN0dWR5IG9mIHRoaXMgd2hvbGUgcHJvYmxlbSwgSSBmb3Vu ZCB0aGF0IHRoZXNlIGNvbmNlcHRzIHdlcmUgcmVhbGx5IGNvbmZ1c2lvbiwgYW5kIGFmdGVyIEkg d2FzIGZpbmFsbHkgY2xlYXIgb24NCj4+IFRoZXNlIGNvbmNlcHRzLCBJIHN0YXJ0ZWQgdG8ga25v dyBob3cgdG8gcmVzb2x2ZSB0aGUgd2hvbGUgaXNzdWUuIA0KPj4gDQo+PiBJbiBvdXIgR0NDIGRv YywgaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9aZXJvLUxlbmd0aC5odG1sDQo+ PiANCj4+IFdlIGFscmVhZHkgaGF2ZSBzdWNoIGNvbmNlcHRzLCBidXQgbm90IHZlcnkgY2xlYXIu ICANCj4+IEkgdGhpbmsgbWFraW5nIHRoZXNlIGNvbmNlcHRzIGNsZWFyIGlzIHZlcnkgaW1wb3J0 YW50IHRvIHJlc29sdmUgc3VjaCBtZXNzeSBzaXR1YXRpb24gaW4gR0NDLg0KPj4gDQo+Pj4gVGhl IG9ubHkgaW1wb3J0YW50IHRoaW5nIHRvIHRoZSBtaWRkbGUtZW5kIGlzIHdoZXRoZXIgdGhlDQo+ Pj4gc2l6ZSBvZiB0aGUgYXJyYXkgaXMga25vd24gKGFrYSBhcnJheV9hdF9zdHJ1Y3RfZW5kX3Ap LiAgVGhpcw0KPj4+IHJvdXRpbmUgY2xhc3NpZmllcyBpdCB3aXRoDQo+PiANCj4+IEJ1dCB3aGV0 aGVyIHRoZSBzaXplIG9mIHRoZSBhcnJheSBpcyBrbm93biBkZXBlbmRzIG9uIHdoZXRoZXIgdGhl IGFycmF5IGlzIGENCj4+IA0KPj4gWzBdLA0KPj4gWzFdLA0KPj4gW10NCj4+IA0KPj4gKyAgLWZz dHJpY3QtZmxleC1hcnJheXM9bg0KPiANCj4gQnV0IG9ubHkgYXJyYXlfYXRfc3RydWN0X2VuZF9w IHNob3VsZCBjYXJlIGFuZCBmb3IgaXQgd2Ugd2lsbCBoYXZlDQo+IERFQ0xfTk9UX0ZMRVhBUlJB WS4gIEFuZCBmcm9udGVuZHMgbWF5IGhhdmUgZGlmZmVyZW50IGlkZWFzIGhvdyB0aGV5DQo+IHJl cHJlc2VudCBbMF0sIFsxXSBvciBbXSAoYW5kIGluIGZhY3QgdGhleSBkbykuICBUaGUgcmVzdCBv ZiB0aGUNCj4gbWlkZGxlLWVuZCByZWFsbHkgc2hvdWxkIF9ub3RfIGNhcmUuDQoNCkFncmVlZCBu b3cuICAtOikNCj4gDQo+PiANCj4+PiANCj4+PiAvKiBUaGUgYXJyYXkgbm93IGlzIGF0IHN0cnVj dCBlbmQuICBUcmVhdCBmbGV4aWJsZSBhcnJheXMgYXMNCj4+PiAgICBhbHdheXMgc3ViamVjdCB0 byBleHRlbmQsIGV2ZW4gaW50byBqdXN0IHBhZGRpbmcgY29uc3RyYWluZWQgYnkNCj4+PiAgICBh biB1bmRlcmx5aW5nIGRlY2wuICAqLw0KPj4+IGlmICghIFRZUEVfU0laRSAoYXR5cGUpDQo+Pj4g ICAgIHx8ICEgVFlQRV9ET01BSU4gKGF0eXBlKQ0KPj4+ICAgICB8fCAhIFRZUEVfTUFYX1ZBTFVF IChUWVBFX0RPTUFJTiAoYXR5cGUpKSkNCj4+PiAgIHJldHVybiB0cnVlOw0KPj4gDQo+PiBUaGlz IHNlcXVlbmNlIGlzIG9ubHkgZm9yIGlkZW50aWZ5aW5nIFtdLiBSaWdodD8NCj4+IA0KPj4gVGhl IFswXSBhbmQgWzFdIGlzIG5vdCBoYW5kbGVkIGJ5IHRoZSBhYm92ZS4NCj4gDQo+IFllcy4gIEJ1 dCBhbHNvIGludCBhWzE6XSB3b3VsZCBiZSBpZGVudGlmaWVkIHRoaXMgd2F5LCBvdGhlciBmcm9u dGVuZHMNCj4gbGlrZSBBZGEgb3IgRm9ydHJhbiBoYXZlIG1lYW5zIHRvIG1vcmUgZWxhYm9yYXRl bHkgc3BlY2lmeSBhcnJheQ0KPiBkaW1lbnNpb25zLg0KDQpPa2F5LiBJIHNlZS4NCj4gDQo+Pj4g DQo+Pj4gYW55IGZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBlX3AgdGhhdCBjb3ZlcnMgYSBkaWZm ZXJlbnQgc3Vic2V0IG9mDQo+Pj4gZmxleC1hcnJheSB0eXBlcyB3b3VsZCBiZSBodWdlbHkgY29u ZnVzaW5nLg0KPj4gDQo+PiBEb27igJl0IHF1aXRlIHVuZGVyc3RhbmQgdGhpcyBzZW50ZW5jZS4u Lg0KPiANCj4gSSBtZWFuIGlmIGFycmF5X2F0X3N0cnVjdF9lbmRfcCBkZWNpZGVzIHN0aCBpcyBh IGZsZXggYXJyYXkgcmVmZXJlbmNlDQo+IGJ1dCBmbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9w IG9uIHRoZSB0eXBlIGRlY2lkZXMgaXQgaXMgbm90LCB0aGF0DQo+IHdvdWxkIGJlIGNvbmZ1c2lu Zy4gIFRodXMgaWYgYWRkaW5nIHN1Y2ggbmV3IEFQSSB0aGVuIGl0IHNob3VsZCBiZQ0KPiBwb3Nz aWJsZSB0byB1c2UgaXQgZnJvbSBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AsIHJlbW92aW5nIHRoZW4g c29tZQ0KPiBvZiB0aGUgcmVkdW5kYW50IGNoZWNrcyB0aGVyZS4NCg0KT2theSwgSSBzZWUgbm93 Lg0KDQpUaGFua3MuIFdpbGwgd29yayBvbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQpRaW5nDQo+IA0K Pj4+IA0KPj4+PiANCj4+Pj4+IA0KPj4+Pj4+ICsJcmV0dXJuIHRydWU7DQo+Pj4+Pj4gKyAgcmV0 dXJuIGZhbHNlOw0KPj4+Pj4+ICt9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsvKiBEZXRlcm1pbmUgd2hl dGhlciBUWVBFIGlzIGEgb25lLWVsZW1lbnQgYXJyYXkgdHlwZSAiWzFdIi4NCj4+Pj4+PiArICAg U2V0IElTX0NPTlNUQU5UX0xFTkdUSCB0byB0cnVlIGlmIHRoZSBsZW5ndGggaXMgY29uc3RhbnQs DQo+Pj4+Pj4gKyAgIG90aGVyd2lzZSwgSVNfQ09OU1RBTlRfTEVOR1RIIGlzIHNldCB0byBmYWxz ZS4gICovDQo+Pj4+Pj4gK2Jvb2wNCj4+Pj4+PiArb25lX2VsZW1lbnRfYXJyYXlfcCAoY29uc3Rf dHJlZSB0eXBlLCBib29sICppc19jb25zdGFudF9sZW5ndGggLyogPSBOVUxMICovKQ0KPj4+Pj4+ ICt7DQo+Pj4+Pj4gKyAgaWYgKGlzX2NvbnN0YW50X2xlbmd0aCkNCj4+Pj4+PiArICAgICppc19j b25zdGFudF9sZW5ndGggPSBmYWxzZTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKyAgaWYgKFRSRUVfQ09E RSAodHlwZSkgPT0gQVJSQVlfVFlQRSkNCj4+Pj4+PiArICAgIGlmICh0cmVlIGRvbSA9IFRZUEVf RE9NQUlOICh0eXBlKSkNCj4+Pj4+PiArICAgICAgaWYgKHRyZWUgbWluID0gVFlQRV9NSU5fVkFM VUUgKGRvbSkpDQo+Pj4+Pj4gKwlpZiAodHJlZSBtYXggPSBUWVBFX01BWF9WQUxVRSAoZG9tKSkN Cj4+Pj4+PiArCSAgaWYgKFRSRUVfQ09ERSAobWluKSA9PSBJTlRFR0VSX0NTVA0KPj4+Pj4+ICsJ ICAgICAgJiYgVFJFRV9DT0RFIChtYXgpID09IElOVEVHRVJfQ1NUKQ0KPj4+Pj4+ICsJICAgIHsN Cj4+Pj4+PiArCSAgICAgIG9mZnNldF9pbnQgbWluaWR4ID0gd2k6OnRvX29mZnNldCAobWluKTsN Cj4+Pj4+PiArCSAgICAgIG9mZnNldF9pbnQgbWF4aWR4ID0gd2k6OnRvX29mZnNldCAobWF4KTsN Cj4+Pj4+PiArCSAgICAgIG9mZnNldF9pbnQgbmVsdHNtMSA9IG1heGlkeCAtIG1pbmlkeDsNCj4+ Pj4+PiArCSAgICAgIGlmIChpc19jb25zdGFudF9sZW5ndGgpDQo+Pj4+Pj4gKwkJKmlzX2NvbnN0 YW50X2xlbmd0aCA9IHRydWU7DQo+Pj4+Pj4gKwkgICAgICBpZiAobmVsdHNtMSA9PSAwKQ0KPj4+ Pj4+ICsJCXJldHVybiB0cnVlOw0KPj4+Pj4+ICsJICAgIH0NCj4+Pj4+IA0KPj4+Pj4gSSdkIHNh eSBsaWtld2lzZS4gIE1heWJlIG1vdmUgdGhlbSB0byBjLWZhbWlseS9jLWNvbW1vbi57Y2MsaH0g aW5zdGVhZA0KPj4+Pj4gaW4gYSBtb3JlIHNwZWNpYWxpemVkIHdheSBmb3IgdGhlIHNpbmdsZSB1 c2UgeW91IGhhdmU/DQo+Pj4+IA0KPj4+PiBJdOKAmXMgbm90IHNpbmdsZSB1c2UsIGl04oCZcyBh bHNvIHVzZWQgaW4g4oCcY29tcG9uZW50X3JlZl9zaXpl4oCdIHJvdXRpbmUuIA0KPj4+IA0KPj4+ IERvbid0IGNvcHkgZnJvbSBhIHJvdXRpbmUgdGhhdCdzIG5vdCBkZXNpZ25lZCB0byBiZSAiY29y cmVjdOKAnS4NCj4+IA0KPj4gT2theeKApi4NCj4+IA0KPj4gDQo+Pj4gSW4NCj4+PiBmYWN0IHRo ZSBtaWRkbGUtZW5kIGFscmVhZHkgaGFzIGFycmF5X3R5cGVfbmVsdHMsIHNvIG9uZV9lbGVtZW50 X2FycmF5X3ANCj4+PiBjYW4gYmUgd3JpdHRlbiBhcyBpbnRlZ2VyX3plcm9wIChhcnJheV90eXBl X25lbHRzICh0eXBlKSkuICBJdCBhbHNvDQo+Pj4gaGFzIHRoZSBjb21tZW50DQo+Pj4gDQo+Pj4g LyogVFlQRV9NQVhfVkFMVUUgbWF5IG5vdCBiZSBzZXQgaWYgdGhlIGFycmF5IGhhcyB1bmtub3du IGxlbmd0aC4gICovDQo+Pj4gaWYgKCFtYXgpDQo+Pj4gICB7DQo+Pj4gICAgIC8qIHplcm8gc2l6 ZWQgYXJyYXlzIGFyZSByZXByZXNlbnRlZCBmcm9tIEMgRkUgYXMgY29tcGxldGUgdHlwZXMgDQo+ Pj4gd2l0aA0KPj4+ICAgICAgICBOVUxMIFRZUEVfTUFYX1ZBTFVFIGFuZCB6ZXJvIFRZUEVfU0la RSwgd2hpbGUgQysrIEZFIHJlcHJlc2VudHMNCj4+PiAgICAgICAgdGhlbSBhcyBtaW4gMCwgbWF4 IC0xLiAgKi8NCj4+PiAgICAgaWYgKENPTVBMRVRFX1RZUEVfUCAodHlwZSkNCj4+PiAgICAgICAg ICYmIGludGVnZXJfemVyb3AgKFRZUEVfU0laRSAodHlwZSkpDQo+Pj4gICAgICAgICAmJiBpbnRl Z2VyX3plcm9wIChtaW4pKQ0KPj4+ICAgICAgIHJldHVybiBidWlsZF9pbnRfY3N0IChUUkVFX1RZ UEUgKG1pbiksIC0xKTsNCj4+IA0KPj4gVGhhbmtzIGZvciB0aGUgaW5mbywgSSB3aWxsIGNoZWNr IG9uIHRoZSBhYm92ZSwgYW5kIHJld3JpdGUg4oCcb25lX2VsZW1lbnRfYXJyYXlfcOKAnSB3aXRo IOKAnGFycmF5X3R5cGVfbmVsdHPigJ0uDQo+PiANCj4+IFFpbmcNCj4+PiANCj4+PiBSaWNoYXJk Lg0KPj4+IA0KPj4+PiBUaGFua3MgYSBsb3QgZm9yIHlvdXIgY29tbWVudHMuDQo+Pj4+IA0KPj4+ PiBRaW5nDQo+Pj4+PiANCj4+Pj4+PiArICByZXR1cm4gZmFsc2U7DQo+Pj4+Pj4gK30NCj4+Pj4+ PiArDQo+Pj4+Pj4gLyogRGV0ZXJtaW5lIHdoZXRoZXIgVFlQRSBpcyBhIHN0cnVjdHVyZSB3aXRo IGEgZmxleGlibGUgYXJyYXkgbWVtYmVyLA0KPj4+Pj4+IG9yIGEgdW5pb24gY29udGFpbmluZyBz dWNoIGEgc3RydWN0dXJlIChwb3NzaWJseSByZWN1cnNpdmVseSkuICAqLw0KPj4+Pj4+IA0KPj4+ Pj4+IEBAIC0xNDM2NywxMCArMTQ0MTYsNyBAQCBmbGV4aWJsZV9hcnJheV90eXBlX3AgKGNvbnN0 X3RyZWUgdHlwZSkNCj4+Pj4+PiAJICBsYXN0ID0geDsNCj4+Pj4+PiAgICBpZiAobGFzdCA9PSBO VUxMX1RSRUUpDQo+Pj4+Pj4gCXJldHVybiBmYWxzZTsNCj4+Pj4+PiAtICAgICAgaWYgKFRSRUVf Q09ERSAoVFJFRV9UWVBFIChsYXN0KSkgPT0gQVJSQVlfVFlQRQ0KPj4+Pj4+IC0JICAmJiBUWVBF X1NJWkUgKFRSRUVfVFlQRSAobGFzdCkpID09IE5VTExfVFJFRQ0KPj4+Pj4+IC0JICAmJiBUWVBF X0RPTUFJTiAoVFJFRV9UWVBFIChsYXN0KSkgIT0gTlVMTF9UUkVFDQo+Pj4+Pj4gLQkgICYmIFRZ UEVfTUFYX1ZBTFVFIChUWVBFX0RPTUFJTiAoVFJFRV9UWVBFIChsYXN0KSkpID09IE5VTExfVFJF RSkNCj4+Pj4+PiArICAgICAgaWYgKGZsZXhpYmxlX2FycmF5X21lbWJlcl9wIChUUkVFX1RZUEUg KGxhc3QpKSkNCj4+Pj4+PiAJcmV0dXJuIHRydWU7DQo+Pj4+Pj4gICAgcmV0dXJuIGZhbHNlOw0K Pj4+Pj4+ICBjYXNlIFVOSU9OX1RZUEU6DQo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLmgg Yi9nY2MvdHJlZS5oDQo+Pj4+Pj4gaW5kZXggZTY1NjRhYWNjYjcuLjMxMDdkZTViNDk5IDEwMDY0 NA0KPj4+Pj4+IC0tLSBhL2djYy90cmVlLmgNCj4+Pj4+PiArKysgYi9nY2MvdHJlZS5oDQo+Pj4+ Pj4gQEAgLTI5OTMsNiArMjk5MywxMSBAQCBleHRlcm4gdm9pZCBkZWNsX3ZhbHVlX2V4cHJfaW5z ZXJ0ICh0cmVlLCB0cmVlKTsNCj4+Pj4+PiAjZGVmaW5lIERFQ0xfUEFERElOR19QKE5PREUpIFwN Cj4+Pj4+PiAoRklFTERfREVDTF9DSEVDSyAoTk9ERSktPmRlY2xfY29tbW9uLmRlY2xfZmxhZ18z KQ0KPj4+Pj4+IA0KPj4+Pj4+ICsvKiBVc2VkIGluIGEgRklFTERfREVDTCB0byBpbmRpY2F0ZSB3 aGV0aGVyIHRoaXMgZmllbGQgaXMgbm90IGEgZmxleGlibGUNCj4+Pj4+PiArICAgYXJyYXkgbWVt YmVyLiAgKi8NCj4+Pj4+PiArI2RlZmluZSBERUNMX05PVF9GTEVYQVJSQVkoTk9ERSkgXA0KPj4+ Pj4+ICsgIChGSUVMRF9ERUNMX0NIRUNLIChOT0RFKS0+ZGVjbF9jb21tb24uZGVjbF9ub3RfZmxl eGFycmF5KQ0KPj4+Pj4+ICsNCj4+Pj4+PiAvKiBBIG51bWVyaWMgdW5pcXVlIGlkZW50aWZpZXIg Zm9yIGEgTEFCRUxfREVDTC4gIFRoZSBVSUQgYWxsb2NhdGlvbiBpcw0KPj4+Pj4+IGRlbnNlLCB1 bmlxdWUgd2l0aGluIGFueSBvbmUgZnVuY3Rpb24sIGFuZCBtYXkgYmUgdXNlZCB0byBpbmRleCBh cnJheXMuDQo+Pj4+Pj4gSWYgdGhlIHZhbHVlIGlzIC0xLCB0aGVuIG5vIFVJRCBoYXMgYmVlbiBh c3NpZ25lZC4gICovDQo+Pj4+Pj4gQEAgLTU1MzEsMTAgKzU1MzYsMTAgQEAgZXh0ZXJuIHRyZWUg Y29tcG9uZW50X3JlZl9maWVsZF9vZmZzZXQgKHRyZWUpOw0KPj4+Pj4+IHJldHVybnMgbnVsbC4g ICovDQo+Pj4+Pj4gZW51bSBzdHJ1Y3Qgc3BlY2lhbF9hcnJheV9tZW1iZXINCj4+Pj4+PiB7DQo+ Pj4+Pj4gLSAgIG5vbmUsICAgICAgLyogTm90IGEgc3BlY2lhbCBhcnJheSBtZW1iZXIuICAqLw0K Pj4+Pj4+IC0gICBpbnRfMCwgICAgIC8qIEludGVyaW9yIGFycmF5IG1lbWJlciB3aXRoIHNpemUg emVyby4gICovDQo+Pj4+Pj4gLSAgIHRyYWlsXzAsICAgLyogVHJhaWxpbmcgYXJyYXkgbWVtYmVy IHdpdGggc2l6ZSB6ZXJvLiAgKi8NCj4+Pj4+PiAtICAgdHJhaWxfMSAgICAvKiBUcmFpbGluZyBh cnJheSBtZW1iZXIgd2l0aCBvbmUgZWxlbWVudC4gICovDQo+Pj4+Pj4gKyAgICBub25lLAkvKiBO b3QgYSBzcGVjaWFsIGFycmF5IG1lbWJlci4gICovDQo+Pj4+Pj4gKyAgICBpbnRfMCwJLyogSW50 ZXJpb3IgYXJyYXkgbWVtYmVyIHdpdGggc2l6ZSB6ZXJvLiAgKi8NCj4+Pj4+PiArICAgIHRyYWls XzAsCS8qIFRyYWlsaW5nIGFycmF5IG1lbWJlciB3aXRoIHNpemUgemVyby4gICovDQo+Pj4+Pj4g KyAgICB0cmFpbF8xCS8qIFRyYWlsaW5nIGFycmF5IG1lbWJlciB3aXRoIG9uZSBlbGVtZW50LiAg Ki8NCj4+Pj4+PiB9Ow0KPj4+Pj4+IA0KPj4+Pj4+IC8qIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUg bWVtYmVyIHJlZmVyZW5jZWQgYnkgdGhlIENPTVBPTkVOVF9SRUYsIHVzaW5nDQo+Pj4+Pj4gQEAg LTY0ODksNiArNjQ5NCw5IEBAIGV4dGVybiB2b2lkIGd0X3BjaF9ueCAodHJlZSAmLCBndF9wb2lu dGVyX29wZXJhdG9yLCB2b2lkICopOw0KPj4+Pj4+IGV4dGVybiBib29sIG5vbm51bGxfYXJnX3Ag KGNvbnN0X3RyZWUpOw0KPj4+Pj4+IGV4dGVybiBib29sIGlzX2VtcHR5X3R5cGUgKGNvbnN0X3Ry ZWUpOw0KPj4+Pj4+IGV4dGVybiBib29sIGRlZmF1bHRfaXNfZW1wdHlfcmVjb3JkIChjb25zdF90 cmVlKTsNCj4+Pj4+PiArZXh0ZXJuIGJvb2wgemVyb19sZW5ndGhfYXJyYXlfcCAoY29uc3RfdHJl ZSk7DQo+Pj4+Pj4gK2V4dGVybiBib29sIG9uZV9lbGVtZW50X2FycmF5X3AgKGNvbnN0X3RyZWUs IGJvb2wgKiA9IE5VTEwpOw0KPj4+Pj4+ICtleHRlcm4gYm9vbCBmbGV4aWJsZV9hcnJheV9tZW1i ZXJfcCAoY29uc3RfdHJlZSk7DQo+Pj4+Pj4gZXh0ZXJuIGJvb2wgZmxleGlibGVfYXJyYXlfdHlw ZV9wIChjb25zdF90cmVlKTsNCj4+Pj4+PiBleHRlcm4gSE9TVF9XSURFX0lOVCBhcmdfaW50X3Np emVfaW5fYnl0ZXMgKGNvbnN0X3RyZWUpOw0KPj4+Pj4+IGV4dGVybiB0cmVlIGFyZ19zaXplX2lu X2J5dGVzIChjb25zdF90cmVlKTsNCj4+Pj4+PiANCj4+Pj4+IA0KPj4+Pj4gLS0gDQo+Pj4+PiBS aWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+Pj4+PiBTVVNFIFNvZnR3YXJlIFNv bHV0aW9ucyBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJn LA0KPj4+Pj4gR2VybWFueTsgR0Y6IEl2byBUb3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNE b25hbGQsIEJvdWRpZW4gTW9lcm1hbjsNCj4+Pj4+IEhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0K Pj4+PiANCj4+Pj4gDQo+Pj4gDQo+Pj4gLS0gDQo+Pj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhl ckBzdXNlLmRlPg0KPj4+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgRnJh bmtlbnN0cmFzc2UgMTQ2LCA5MDQ2MSBOdWVybmJlcmcsDQo+Pj4gR2VybWFueTsgR0Y6IEl2byBU b3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNEb25hbGQsIEJvdWRpZW4gTW9lcm1hbjsNCj4+ PiBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCj4+IA0KPj4gDQo+IA0KPiAtLSANCj4gUmljaGFy ZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBH ZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJnLA0KPiBHZXJt YW55OyBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFsZCwgQm91ZGll biBNb2VybWFuOw0KPiBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCg0K