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 AB2653986411 for ; Wed, 11 Aug 2021 20:31:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AB2653986411 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 17BKH5Am008658; Wed, 11 Aug 2021 20:30:58 GMT Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3acd649cst-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 Aug 2021 20:30:57 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 17BKGHLL112139; Wed, 11 Aug 2021 20:30:56 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by userp3020.oracle.com with ESMTP id 3aa3xvs4qx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 Aug 2021 20:30:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g+WWLjsL0aFMjIFhRe4gC/7ycxPlvecqfTS4foMTUMNT7ClpDO0MiiA3Z+kn1Nf23nJngnPMChgAOOU2aFPHjwiPBIW717VHTMkx2RXwRpVmSd/gvfF2CiPW86M+2HqHvEwLCfBe/vwmIoum1pGigRQDB7MbtyK2Ci2Ic9105BgjFawhAmcUdz9YbnucJojJagrRNhpMh+1LHDdNita14HOYL9APK3iTP5VE+N9UhwBLtV4F6qGSIPdW2sfC4L/GNuiPKm6/MEwgLOSupXKd0AnC9CG0q4GBa+qJrWO8ujWqDci1dSJZzOxHZlXJ9L5gdD+vkaCKZPvxvPlQNsTytw== 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-SenderADCheck; bh=+BkaLXuTP83kw1Z1yTChlzeLQpzgE6ydgn9bJL453LU=; b=KQEHN4yhwXR/PkljweX8asE3v76tVojdGnDxiCGyRrKX3gZTjmZSK5VvpiutJwvKGsXuh0MUq4K7kG7D6sjG+Q5I65et8tXs8XPJVZdKWbX+S+aX6Mu9NlpXLGmudTCpKCtKUfrfW3rQ0GSJX45mVeggm9CsIfsZ7ZN+MTyoHXPV+DOm49iau2iQyq7Pp/NmJD0vNJS73Y/jM+R4/q+5/g15Bz2WdsY2+1jxYwbvf6AgPtbphSkC5Z78oXcUh26JZPyFB5O7NOQ1Azb9VGhmFi+70Fce0SUUU2rwReFu73/aSbOUfjM49MZ9/LoYTcAQw0fGNlbiY3XXpiXgfq7gxQ== 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 CH0PR10MB4985.namprd10.prod.outlook.com (2603:10b6:610:de::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.16; Wed, 11 Aug 2021 20:30:53 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547%9]) with mapi id 15.20.4415.014; Wed, 11 Aug 2021 20:30:53 +0000 From: Qing Zhao To: Richard Biener CC: Richard Sandiford , Jakub Jelinek , Nick Alcock via Gcc-patches , Kees Cook Subject: Re: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Topic: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Index: AQHXgpcfj6SO0Rka1UmU0GU91mFncqtrSzIAgAApjACAAPr8gIAAZYMAgAAKVgCAAAy9gIAABZoAgABR/YCAACR6AIAAkCQAgABtVACAAAEPAIAABLkAgAABQACAABmfAIAABkYAgAAIEICAAAlUAIAAPDYA Date: Wed, 11 Aug 2021 20:30:53 +0000 Message-ID: References: <52E29277-1403-4755-901A-528116C43FB8@oracle.com> <58ADBC0C-9D44-485B-BB5A-B072664B9C4F@oracle.com> <6FD42B95-F73D-4B75-B83A-BAC4925B1714@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: 1960d240-3f64-4c7b-a287-08d95d06ea7a x-ms-traffictypediagnostic: CH0PR10MB4985: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7R8/U84Kb9DEnPwjT0ItmC3l4YYhudzYqMRnLyxbiJe7BrWu3TL7FyMXajfYlhL1Y49y06rDOUakM1SbOLFcWlVIZLDGAZTkuxAXSc04BoJMTUlt7/09ycsPqJjmuejEur+CAZnlsB9yo7TJ9seudY6V/0zvqHnjSzuNS2GOQPpIBDUGkpxUNcab/iZgRKqd2BI2tbNaEqr9D/kD3IL649zPFJrYLeSYhW9kNdwpQ3fQHExOVAOrMVWO6788fdeDL3tXbeSH8YgHOWppSoSoEvfNtPPjSyFmobv2wqrG9Z4/uWy+GWYmiYMpsvXqNCSzDM1CEjqu7abp/3oocfVYHBCDLk4KUckRCCGCEJYotOo1Gm9PMRXO20ONJW1B/U6v27avsZdQjO07JK/L69L9+3OpOsMrS0i27aadbK98fEXUQ1tV4harOK9P+aEJfISjb8hSjaSpZmbvFiDVRyM4tBEhAOnjXZBjtnRPZwLdN5r6+MR0kG5ZodZOeOwOJRoL7abYeyb6azY07Mykb1hOA2bv2+cL4EEeuKEIYAopdQs4yZA+gz5lwFwCErNDzXpUIIsVCTUxQWt/yfmx7KUNs1oTqVxeijXadLZ4i4NCSGkjuj+kesLLmU3FGeGgRWNZnrqYL+2QNw0yrhYRhBCdufcfiI82VHEGj+xkbPTJG4rr/Z4Z8aF8fmgZE/ElRsrGkhignU/ZCEoJbW4+uxmvYf2aXaAmR+Tzhfmqm65GTT36/yRVFxMwhpau5rWRgoEFU1sMXPahjXjJYJI4JYITVw== 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:(39860400002)(376002)(346002)(366004)(136003)(396003)(66476007)(66556008)(64756008)(8936002)(66946007)(8676002)(36756003)(66446008)(71200400001)(6506007)(2616005)(91956017)(76116006)(53546011)(83380400001)(38100700002)(6512007)(30864003)(66574015)(122000001)(44832011)(6486002)(4326008)(5660300002)(6916009)(2906002)(54906003)(26005)(38070700005)(186003)(33656002)(478600001)(86362001)(316002)(45980500001)(266184004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QXZHUTJ2L0lkbHgrK1JraW9iK2VIdW1SeU9XQVR4NkpGV3RYanY5Yi9NZ2xT?= =?utf-8?B?YXpnL1FRUHlqYVlzR0pSQ3Q2dlBRZzh1UTd3Z0VFSTcxOWpwUUF1Q2U4d3Vn?= =?utf-8?B?Vm5ucE1hQkM3YURKZklzQ28vcTlidFQ4cGVBcG44L3JVYlRKTjFZVFJOc0ox?= =?utf-8?B?ZzdXK1N4Zm1aSGlqQ1RVMlNncVByaitIQTYzR2ZoRWJEU3BGWDhWWWN3L0Jt?= =?utf-8?B?NnIxbDVTZXQyTEo0NWlsQ0RDZUlENE5zOXJVdnZUWTFsRWFwZmZ1b0dhR0hS?= =?utf-8?B?dlBTQm5hSmMrdUtWK3FMOUdTcW5SL1BqYWZZUVZPSEM5cnVJRTgyK1ZzajJt?= =?utf-8?B?ajNqRlNTMi9sdHhVd2EwSW5vUFZ0NVV5MUF6ZmxOeGhZcU9UbEgrRVljMk9j?= =?utf-8?B?clNTaGdKcG8xVHJRUVJLK3I3cXVuSzQ1aUI1bFEzZmpZZkNsdmJoKzlhcDY5?= =?utf-8?B?ZzVkUEVYYUZ0dGRsbDNPamVFS0orSTY5RDBBbnNxcjc0N2MrdVZvaW42dnNx?= =?utf-8?B?U1B1bEJ5QUFjNXJXMTRsWEJzSDV4UTQxN0wxYWVVb2FnYU1nWWhXenBoVk5Z?= =?utf-8?B?ZTVINVBROGlVaTl4Ry9USU5BcC90M3FZbmhDaXpQTzJmUG9EWVlURzRTR1BC?= =?utf-8?B?b1p2UVdDUk5RRG5FdTJiYWsvUWt2V0Q5RlBaWFovVk5qUWR2QnJ6emZjS0w3?= =?utf-8?B?NGs3V0hTTkVxL0E0QWVYUGMycnA0S0ZRN3FmVnhTS1VkeU95NGxkaEQ0RUtU?= =?utf-8?B?Q1hQT0hUTlpueEQ1ZnBaYjFTVTF6SEJHcDlROFNXNlFnOUNHK1BYVnpkd0JK?= =?utf-8?B?cjM5aHZBSzJIWHhYOFArS0tNUW9YTFFUaXU5TDNVL2VKd1o1d1dENTlyejYr?= =?utf-8?B?MnN4dy9MRnJuc01LQVY0MnFxNUN6dEpMWnpwMTBJNVcySUp5K2Q1emUwU0VP?= =?utf-8?B?ZGw3cHc4RWhISnpKRzE3UC9PblFPY0FGTnRyYk0wbHZTamllOUkvcjVvOXpk?= =?utf-8?B?WU0xZHFXU1A4UXdIRXdFNUtnTndRa2F4NGNMSnFjRGppbzBocEQvM1IwbUR5?= =?utf-8?B?aHJuWndrb055bkxIczNwZVcrRFdnUHJoVmU1K2Y3bm40enUvakh6Y25sTi84?= =?utf-8?B?a21VaFRRK3h2alBDM1Z2ZzNwdXNzSituMlZCenMrRDV3RTVYZEg4ai9uWkQw?= =?utf-8?B?clBkamdUVWxUeTFUd2tmdHBaNmFJUHpFc2tSUmRheXU2NXFNTnRTY3p2ZDRH?= =?utf-8?B?bFNEOC8yMVhzZnppeXpsdHUrOCt1Z3NSOGpPcDRycytmVDF2dmRjK1ozelVR?= =?utf-8?B?ZDYxTmdIUjk0K1Uzci93dHJoQnY0bjFILzY0cUEyU3YwNFF3SmRleUtDeURW?= =?utf-8?B?ek5qOHZxenBwUjhNV1pyeWN1Uzd6VzFLYVhJZmlyTmxxT1N4OVFDT2I0V1Vn?= =?utf-8?B?enpnVmF6dEdnOG8wK0N3YzIxYlc3b2ROOHE3WWJncloralZ2RnlnRFNNMTZt?= =?utf-8?B?STJPNjB2cU1YVXFtUVM5SEhkaTl3V1RFVGU1M1BhY2hadGxCc0pJeGY5dXFp?= =?utf-8?B?aGdleFJqVkgzRjNwR0tiKzFzUFQzcWJac1cxRCs5eTViT2ZGaWhSVUcrbjF0?= =?utf-8?B?Snl6dTFBVmI2UnZLY2prd1RrZkZyL29jV2lESndUdTFXM2lDUVNsSXVLVVBv?= =?utf-8?B?RVdPbmlvUmN0UGpwSlRReWxFaGpiWGQ1QUxUa0xNZXVoUytYWWVERTF2eHQz?= =?utf-8?Q?RFjroY9MhY2XC6HSWq2OC/lKO0VAF+dbIK6dRwB?= x-ms-exchange-transport-forked: True 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: 1960d240-3f64-4c7b-a287-08d95d06ea7a X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2021 20:30:53.3852 (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: ayAh4LrwDf3B1TFb0qC3egBEgIsI2zS1xrkdrg/UD+ngzVfjxunJhXLLNbKLG5mU+fp9hVfTfH9RA+9WWp6bdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4985 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10073 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108110139 X-Proofpoint-GUID: sYPhb1hi_KazPooie54nlUnQcj6lsuyb X-Proofpoint-ORIG-GUID: sYPhb1hi_KazPooie54nlUnQcj6lsuyb X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_BL, RCVD_IN_MSPIKE_L3, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Wed, 11 Aug 2021 20:31:14 -0000 SGksIA0KDQpJIG1ldCBhbm90aGVyIGlzc3VlIGZvciDigJxhZGRyZXNzIHRha2Vu4oCdIGF1dG8g dmFyaWFibGUsIHNlZSBiZWxvdyBmb3IgZGV0YWlsczoNCg0KKioqKiB0aGUgdGVzdGluZyBjYXNl OiAoZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdW5pbml0LTE2LmMpDQoNCmludCBmb28sIGJhcjsNCg0K c3RhdGljDQp2b2lkIGRlY29kZV9yZWxvYyhpbnQgcmVsb2MsIGludCAqaXNfYWx0KQ0Kew0KICBp ZiAocmVsb2MgPj0gMjApDQogICAgICAqaXNfYWx0ID0gMTsNCiAgZWxzZSBpZiAocmVsb2MgPj0g MTApDQogICAgICAqaXNfYWx0ID0gMDsNCn0NCg0Kdm9pZCB0ZXN0ZnVuYygpDQp7DQogIGludCBh bHRfcmVsb2M7DQoNCiAgZGVjb2RlX3JlbG9jKGZvbywgJmFsdF9yZWxvYyk7DQoNCiAgaWYgKGFs dF9yZWxvYykgLyogeyBkZy13YXJuaW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICov DQogICAgYmFyID0gNDI7DQp9DQoNCioqKipXaGVuIGNvbXBpbGVkIHdpdGggLWZ0cml2aWFsLWF1 dG8tdmFyLWluaXQ9emVybyAtTzIgLVd1bmluaXRpYWxpemVkIC1mZHVtcC10cmVlLWFsbDoNCg0K LioqKioqKioqKioqKipnaW1wbGUgZHVtcDoNCg0Kdm9pZCB0ZXN0ZnVuYyAoKQ0KeyANCiAgaW50 IGFsdF9yZWxvYzsNCg0KICB0cnkNCiAgICB7DQogICAgICBfMSA9IC5ERUZFUlJFRF9JTklUICg0 LCAyLCAwKTsNCiAgICAgIGFsdF9yZWxvYyA9IF8xOw0KICAgICAgZm9vLjBfMiA9IGZvbzsNCiAg ICAgIGRlY29kZV9yZWxvYyAoZm9vLjBfMiwgJmFsdF9yZWxvYyk7DQogICAgICBhbHRfcmVsb2Mu MV8zID0gYWx0X3JlbG9jOw0KICAgICAgaWYgKGFsdF9yZWxvYy4xXzMgIT0gMCkgZ290byA8RC4x OTUyPjsgZWxzZSBnb3RvIDxELjE5NTM+Ow0KICAgICAgPEQuMTk1Mj46DQogICAgICBiYXIgPSA0 MjsNCiAgICAgIDxELjE5NTM+Og0KICAgIH0NCiAgZmluYWxseQ0KICAgIHsNCiAgICAgIGFsdF9y ZWxvYyA9IHtDTE9CQkVSfTsNCiAgICB9DQp9DQoNCioqKioqKioqKioqKioqZnJlMSBkdW1wOg0K DQp2b2lkIHRlc3RmdW5jICgpDQp7DQogIGludCBhbHRfcmVsb2M7DQogIGludCBfMTsNCiAgaW50 IGZvby4wXzI7DQoNCiAgPGJiIDI+IDoNCiAgXzEgPSAuREVGRVJSRURfSU5JVCAoNCwgMiwgMCk7 DQogIGZvby4wXzIgPSBmb287DQogIGlmIChmb28uMF8yID4gMTkpDQogICAgZ290byA8YmIgMz47 IFs1MC4wMCVdDQogIGVsc2UNCiAgICBnb3RvIDxiYiA0PjsgWzUwLjAwJV0NCg0KICA8YmIgMz4g Og0KICBnb3RvIDxiYiA3PjsgWzEwMC4wMCVdDQoNCiAgPGJiIDQ+IDoNCiAgaWYgKGZvby4wXzIg PiA5KQ0KICAgIGdvdG8gPGJiIDU+OyBbNTAuMDAlXQ0KICBlbHNlDQogICAgZ290byA8YmIgNj47 IFs1MC4wMCVdDQoNCiAgPGJiIDU+IDoNCiAgZ290byA8YmIgOD47IFsxMDAuMDAlXQ0KDQogIDxi YiA2PiA6DQogIGlmIChfMSAhPSAwKQ0KICAgIGdvdG8gPGJiIDc+OyBbSU5WXQ0KICBlbHNlDQog ICAgZ290byA8YmIgOD47IFtJTlZdDQoNCiAgPGJiIDc+IDoNCiAgYmFyID0gNDI7DQoNCiAgPGJi IDg+IDoNCiAgcmV0dXJuOw0KDQp9DQoNCkZyb20gdGhlIGFib3ZlIElSIGZpbGUgYWZ0ZXIg4oCc RlJF4oCdLCB3ZSBjYW4gc2VlIHRoYXQgdGhlIG1ham9yIGlzc3VlIHdpdGggdGhpcyBJUiBpczoN Cg0KVGhlIGFkZHJlc3MgdGFrZW4gYXV0byB2YXJpYWJsZSDigJxhbHRfcmVsb2PigJ0gaGFzIGJl ZW4gY29tcGxldGVseSByZXBsYWNlZCBieSB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIOKAnF8x4oCd IGluIGFsbA0KdGhlIHVzZXMgb2YgdGhlIG9yaWdpbmFsIOKAnGFsdF9yZWxvY+KAnS4gDQoNClRo ZSBtYWpvciBwcm9ibGVtIHdpdGggc3VjaCBJUiBpcywgIGR1cmluZyB1bmluaXRpYWxpemVkIGFu YWx5c2lzIHBoYXNlLCB0aGUgb3JpZ2luYWwgdXNlIG9mIOKAnGFsdF9yZWxvY+KAnSBkaXNhcHBl YXJlZCBjb21wbGV0ZWx5Lg0KU28sIHRoZSB3YXJuaW5nIGNhbm5vdCBiZSByZXBvcnRlZC4NCg0K DQpNeSBxdWVzdGlvbnM6DQoNCjEuIElzIGl0IHBvc3NpYmxlIHRvIGdldCB0aGUgb3JpZ2luYWwg 4oCcYWx0X3JlbG9j4oCdIHRocm91Z2ggdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSDigJxfMeKAnSB3 aXRoIHNvbWUgYXZhaWxhYmxlIGluZm9ybWF0aW9uIHJlY29yZGVkIGluIHRoZSBJUj8NCjIuIElm IG5vdCwgdGhlbiB3ZSBoYXZlIHRvIHJlY29yZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4g4oCc YWx0X3JlbG9j4oCdIGFuZCDigJxfMeKAnSB3aGVuIHRoZSBvcmlnaW5hbCDigJxhbHRfcmVsb2Pi gJ0gaXMgcmVwbGFjZWQgYnkg4oCcXzHigJ0gYW5kIGdldCBzdWNoIHJlbGF0aW9uc2hpcCBkdXJp bmcNCiAgICBVbmluaXRpYWxpemVkIGFuYWx5c2lzIHBoYXNlLiAgSXMgdGhpcyBkb2FibGU/DQoz LiBMb29rcyBsaWtlIHRoYXQgZm9yIOKAnGFkZHJlc3MgdGFrZW7igJ0gYXV0byB2YXJpYWJsZSwg aWYgd2UgaGF2ZSB0byBpbnRyb2R1Y2UgYSBuZXcgdGVtcG9yYXJ5IHZhcmlhYmxlIGFuZCBzcGxp dCB0aGUgY2FsbCB0byAuREVGRVJSRURfSU5JVCBpbnRvIHR3bzoNCg0KICAgICAgdGVtcCA9IC5E RUZFUlJFRF9JTklUICg0LCAyLCAwKTsNCiAgICAgIGFsdF9yZWxvYyA9IHRlbXA7DQoNCiAgIE1v cmUgaXNzdWVzIG1pZ2h0IHBvc3NpYmxlLg0KDQpBbnkgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb25z IG9uIHRoaXMgaXNzdWU/DQoNClFpbmcNCg0Kag0KPiBPbiBBdWcgMTEsIDIwMjEsIGF0IDExOjU1 IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0KPiANCj4gT24g QXVndXN0IDExLCAyMDIxIDY6MjI6MDAgUE0gR01UKzAyOjAwLCBRaW5nIFpoYW8gPHFpbmcuemhh b0BvcmFjbGUuY29tPiB3cm90ZToNCj4+IA0KPj4gDQo+Pj4gT24gQXVnIDExLCAyMDIxLCBhdCAx MDo1MyBBTSwgUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+PiAN Cj4+PiBPbiBBdWd1c3QgMTEsIDIwMjEgNTozMDo0MCBQTSBHTVQrMDI6MDAsIFFpbmcgWmhhbyA8 cWluZy56aGFvQG9yYWNsZS5jb20+IHdyb3RlOg0KPj4+PiBJIG1vZGlmaWVkIHRoZSByb3V0aW5l IOKAnGdpbXBsZV9hZGRfaW5pdF9mb3JfYXV0b192YXLigJ0gYXMgdGhlIGZvbGxvd2luZzoNCj4+ Pj4gPT09PQ0KPj4+PiAvKiBHZW5lcmF0ZSBpbml0aWFsaXphdGlvbiB0byBhdXRvbWF0aWMgdmFy aWFibGUgREVDTCBiYXNlZCBvbiBJTklUX1RZUEUuDQo+Pj4+IEJ1aWxkIGEgY2FsbCB0byBpbnRl cm5hbCBjb25zdCBmdW5jdGlvbiBERUZFUlJFRF9JTklUOg0KPj4+PiAxc3QgYXJndW1lbnQ6IFNJ WkUgb2YgdGhlIERFQ0w7DQo+Pj4+IDJuZCBhcmd1bWVudDogSU5JVF9UWVBFOw0KPj4+PiAzcmQg YXJndW1lbnQ6IElTX1ZMQSwgMCBOTywgMSBZRVM7DQo+Pj4+IA0KPj4+PiBhcyBERUZFUlJFRF9J TklUIChTSVpFIG9mIHRoZSBERUNMLCBJTklUX1RZUEUsIElTX1ZMQSkuICAqLw0KPj4+PiBzdGF0 aWMgdm9pZA0KPj4+PiBnaW1wbGVfYWRkX2luaXRfZm9yX2F1dG9fdmFyICh0cmVlIGRlY2wsDQo+ Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gYXV0b19pbml0X3R5cGUgaW5pdF90 eXBlLA0KPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3ZsYSwNCj4+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ltcGxlX3NlcSAqc2VxX3ApDQo+Pj4+IHsNCj4+ Pj4gZ2NjX2Fzc2VydCAoVkFSX1AgKGRlY2wpICYmICFERUNMX0VYVEVSTkFMIChkZWNsKSAmJiAh VFJFRV9TVEFUSUMgKGRlY2wpKTsNCj4+Pj4gZ2NjX2Fzc2VydCAoaW5pdF90eXBlID4gQVVUT19J TklUX1VOSU5JVElBTElaRUQpOw0KPj4+PiB0cmVlIGRlY2xfc2l6ZSA9IFRZUEVfU0laRV9VTklU IChUUkVFX1RZUEUgKGRlY2wpKTsNCj4+Pj4gDQo+Pj4+IHRyZWUgaW5pdF90eXBlX25vZGUNCj4+ Pj4gID0gYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIChpbnQpIGluaXRfdHlwZSk7 DQo+Pj4+IHRyZWUgaXNfdmxhX25vZGUNCj4+Pj4gID0gYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90 eXBlX25vZGUsIChpbnQpIGlzX3ZsYSk7DQo+Pj4+IA0KPj4+PiB0cmVlIGNhbGwgPSBidWlsZF9j YWxsX2V4cHJfaW50ZXJuYWxfbG9jIChVTktOT1dOX0xPQ0FUSU9OLCBJRk5fREVGRVJSRURfSU5J VCwNCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkVFX1RZ UEUgKGRlY2wpLCAzLA0KPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlY2xfc2l6ZSwgaW5pdF90eXBlX25vZGUsDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXNfdmxhX25vZGUpOw0KPj4+PiANCj4+Pj4gLyogSWYgdGhp cyBERUNMIGlzIGEgVkxBLCBhIHRlbXBvcmFyeSBhZGRyZXNzIHZhcmlhYmxlIGZvciBpdCBoYXMg YmVlbg0KPj4+PiAgIGNyZWF0ZWQsIHRoZSByZXBsYWNlbWVudCBmb3IgREVDTCBpcyByZWNvcmRl ZCBpbiBERUNMX1ZBTFVFX0VYUFIgKGRlY2wpLA0KPj4+PiAgIHdlIHNob3VsZCB1c2UgaXQgYXMg dGhlIExIUyBvZiB0aGUgY2FsbC4gICovDQo+Pj4+IA0KPj4+PiB0cmVlIGxoc19jYWxsDQo+Pj4+ ICA9IGlzX3ZsYSA/IERFQ0xfVkFMVUVfRVhQUiAoZGVjbCkgOiBkZWNsOw0KPj4+PiBnaW1wbGlm eV9hc3NpZ24gKGxoc19jYWxsLCBjYWxsLCBzZXFfcCk7DQo+Pj4+IH0NCj4+Pj4gDQo+Pj4+IFdp dGggdGhpcyBjaGFuZ2UsIHRoZSBjdXJyZW50IGlzc3VlIGlzIHJlc29sdmVkLCB0aGUgZ2ltcGxl IGR1bXAgbm93IGlzOg0KPj4+PiANCj4+Pj4gKCphcnIuMSkgPSAuREVGRVJSRURfSU5JVCAoRC4x OTUyLCAyLCAxKTsNCj4+Pj4gDQo+Pj4+IEhvd2V2ZXIsIHRoZXJlIGlzIGFub3RoZXIgbmV3IGlz c3VlOg0KPj4+PiANCj4+Pj4gRm9yIHRoZSBmb2xsb3dpbmcgdGVzdGluZyBjYXNlOg0KPj4+PiAN Cj4+Pj4gPT09PT09DQo+Pj4+IFtvcGNAcWluemhhby1vbDh1My14ODYgZ2NjXSQgY2F0IHQuYw0K Pj4+PiBpbnQgYmFyOw0KPj4+PiANCj4+Pj4gZXh0ZXJuIHZvaWQgZGVjb2RlX3JlbG9jKGludCAq KTsNCj4+Pj4gDQo+Pj4+IHZvaWQgdGVzdGZ1bmMoKQ0KPj4+PiB7DQo+Pj4+IGludCBhbHRfcmVs b2M7DQo+Pj4+IA0KPj4+PiBkZWNvZGVfcmVsb2MoJmFsdF9yZWxvYyk7DQo+Pj4+IA0KPj4+PiBp ZiAoYWx0X3JlbG9jKSAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQi IH0gKi8NCj4+Pj4gIGJhciA9IDQyOyANCj4+Pj4gfQ0KPj4+PiA9PT09PQ0KPj4+PiANCj4+Pj4g SW4gdGhlIGFib3ZlLCB0aGUgYXV0byB2YXIg4oCcYWx0X3JlbG9j4oCdIGlzIGFkZHJlc3MgdGFr ZW4sIHRoZW4gdGhlIGdpbXBsZSBkdW1wIGZvciBpdCB3aGVuIGNvbXBpbGVkIHdpdGggLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9emVybyBpczoNCj4+Pj4gDQo+Pj4+IHZvaWQgdGVzdGZ1bmMgKCkN Cj4+Pj4gew0KPj4+PiBpbnQgYWx0X3JlbG9jOw0KPj4+PiANCj4+Pj4gdHJ5DQo+Pj4+ICB7DQo+ Pj4+ICAgIF8xID0gLkRFRkVSUkVEX0lOSVQgKDQsIDIsIDApOw0KPj4+PiAgICBhbHRfcmVsb2Mg PSBfMTsNCj4+Pj4gICAgZGVjb2RlX3JlbG9jICgmYWx0X3JlbG9jKTsNCj4+Pj4gICAgYWx0X3Jl bG9jLjBfMiA9IGFsdF9yZWxvYzsNCj4+Pj4gICAgaWYgKGFsdF9yZWxvYy4wXzIgIT0gMCkgZ290 byA8RC4xOTQ5PjsgZWxzZSBnb3RvIDxELjE5NTA+Ow0KPj4+PiAgICA8RC4xOTQ5PjoNCj4+Pj4g ICAgYmFyID0gNDI7DQo+Pj4+ICAgIDxELjE5NTA+Og0KPj4+PiAgfQ0KPj4+PiBmaW5hbGx5DQo+ Pj4+ICB7DQo+Pj4+ICAgIGFsdF9yZWxvYyA9IHtDTE9CQkVSfTsNCj4+Pj4gIH0NCj4+Pj4gfQ0K Pj4+PiANCj4+Pj4gSS5lLCBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCBJUjoNCj4+Pj4gDQo+Pj4+ IGFsdF9yZWxvYyA9IC5ERUZFUlJFRF9JTklUICg0LCAyLCAwKTsNCj4+Pj4gDQo+Pj4+IFdlIGdv dCB0aGUgZm9sbG93aW5nOg0KPj4+PiANCj4+Pj4gXzEgPSAuREVGRVJSRURfSU5JVCAoNCwgMiwg MCk7DQo+Pj4+ICAgIGFsdF9yZWxvYyA9IF8xOw0KPj4+PiANCj4+Pj4gSSBndWVzcyB0aGUgdGVt cCDigJxfMeKAnSBpcyBjcmVhdGVkIGJlY2F1c2Ug4oCcYWx0X3JlbG9j4oCdIGlzIGFkZHJlc3Mg dGFrZW4uIA0KPj4+IA0KPj4+IFllcyBhbmQgbm8uIFRoZSByZWFzb24gaXMgdGhhdCBhbHRfcmVs b2MgaXMgbWVtb3J5IChiZWNhdXNlIGl0IGlzIGFkZHJlc3MgdGFrZW4pIGFuZCB0aGF0IEdJTVBM RSBzYXlzIHRoYXQgcmVnaXN0ZXIgdHlwZWQgc3RvcmVzIG5lZWQgdG8gdXNlIGEgaXNfZ2ltcGxl X3ZhbCBSSFMgd2hpY2ggdGhlIGNhbGwgaXMgbm90Lg0KPj4gDQo+PiBPa2F5Lg0KPj4+IA0KPj4+ PiBNeSBxdWVzdGlvbnM6DQo+Pj4+IA0KPj4+PiBTaGFsbCB3ZSBhY2NlcHQgc3VjaCBJUiBmb3Ig LkRFRkVSUkVEX0lOSVQgcHVycG9zZSB3aGVuIHRoZSBhdXRvIHZhciBpcyBhZGRyZXNzIHRha2Vu PyANCj4+PiANCj4+PiBJIHRoaW5rIHNvLiBOb3RlIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgbmVl ZCBhZGRyZXNzIHRha2luZyBidXQgYW55IG90aGVyIHJlYXNvbiB0aGF0IHByZXZlbnRzIFNTQSBy ZXdyaXRpbmcgdGhlIHZhcmlhYmxlIHN1ZmZpY2VzLiANCj4+IA0KPj4gWW91IG1lYW4sIGluIGFk ZGl0aW9uIHRvIOKAnGFkZHJlc3MgdGFrZW7igJ0sIHRoZXJlIGFyZSBvdGhlciBzaXR1YXRpb25z IHRoYXQgd2lsbCBpbnRyb2R1Y2Ugc3VjaCBJUjoNCj4+IA0KPj4gdGVtcCA9IC5ERUZFUlJFRF9J TklUKCk7DQo+PiBhdXRvX3ZhciA9IHRlbXA7DQo+PiANCj4+IFNvLCBzdWNoIElSIGlzIHVuYXZv aWRhYmxlIGFuZCB3ZSBoYXZlIHRvIGhhbmRsZSBpdD8NCj4gDQo+IFllcy4gDQo+IA0KPj4gSWYg d2UgaGF2ZSB0byBoYW5kbGUgaXQsICB3aGF04oCZIHRoZSBiZXN0IHdheSB0byBkbyBpdD8NCj4+ IA0KPj4gVGhlIHNvbHV0aW9uIGluIG15IG1pbmQgaXM6DQo+PiAxLiBEdXJpbmcgdW5pbml0aWFs aXplZCBhbmFseXNpcyBwaGFzZSwgZm9sbG93aW5nIHRoZSBkYXRhIGZsb3cgdG8gY29ubmVjdCAu REVGRVJSRURfSU5JVCB0byDigJxhdXRvX3ZhcuKAnSwgYW5kIHRoZW4gZGVjaWRlIHRoYXQg4oCc YXV0b192YXLigJ0gaXMgdW5pbml0aWFsaXplZC4NCj4gDQo+IFllcy4gQmFzaWNhbGx5IGlmIHRo ZXJlJ3MgYW4gYXJ0aWZpY2lhbCB2YXJpYWJsZSBhdXRvIGluaXRpYWxpemVkIHlvdSBoYXZlIHRv IGxvb2sgYXQgaXRzIHVzZXMuIA0KPiANCj4+IDIuIER1cmluZyBSVEwgZXhwYW5zaW9uLCBmb2xs b3dpbmcgdGhlIGRhdGEgZmxvdyB0byBjb25uZWN0IC5ERUZFUlJFRF9JTklUIHRvIOKAnGF1dG9f dmFy4oCdLCBhbmQgdGhlbiBkZWxldGUg4oCcdGVtcOKAnSwgYW5kIHRoZW4gZXhwYW5kIC5ERUZF UlJFRF9JTklUIHRvIGF1dG9fdmFyLg0KPiANCj4gVGhhdCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5 LiBZb3UnZCBpbml0aWFsaXplIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyIHdoaWNoIGlzIHRoZW4gY29w aWVkIHRvIHRoZSByZWFsIHZhcmlhYmxlLiBUaGF0J3MgZ29vZCBlbm91Z2ggYW5kIHNob3VsZCBi ZSBvcHRpbWl6ZWQgYnkgdGhlIFJUTCBwaXBlbGluZS4gDQo+IA0KPj4gTGV0IG1lIGtub3cgeW91 ciBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgb24gdGhpcy4NCj4+IA0KPj4gDQo+Pj4gDQo+Pj4g VGhlIG9ubHkgb3RoZXIgb3B0aW9uIGlzIHRvIGZvcmNlLiBERUZFUkVEX0lOSVQgbWFraW5nIHRo ZSBMSFMgYWRkcmVzcyB0YWtlbiB3aGljaCBJIHRoaW5rIGNvdWxkIGJlIGFjaGlldmVkIGJ5IHBh c3NpbmcgaXQgdGhlIGFkZHJlc3MgYXMgYXJndW1lbnQgaW5zdGVhZCBvZiBoYXZpbmcgYSBMSFMu IEJ1dCBsZXQncyBub3QgZ28gZG93biB0aGlzIHJvdXRlIC0gaXQgd2lsbCBoYXZlIHF1aXRlIGJh ZCBiZWhhdmlvciBvbiBhbGlhcyBhbmFseXNpcyBhbmQgb3B0aW1pemF0aW9uLiANCj4+IA0KPj4g T2theS4NCj4+IA0KPj4gUWluZw0KPj4+IA0KPj4+PiBJZiBzbywg4oCcdW5pbml0aWFsaXplZCBh bmFseXNpc+KAnSBwaGFzZSBuZWVkIHRvIGJlIGZ1cnRoZXIgYWRqdXN0ZWQgdG8gc3BlY2lhbGx5 IGhhbmRsZSBzdWNoIElSLiANCj4+Pj4gDQo+Pj4+IElmIG5vdCwgd2hhdCBzaG91bGQgd2UgZG8g d2hlbiB0aGUgYXV0byB2YXIgaXMgYWRkcmVzcyB0YWtlbj8NCj4+Pj4gDQo+Pj4+IFRoYW5rcyBh IGxvdC4NCj4+Pj4gDQo+Pj4+IFFpbmcNCj4+Pj4gDQo+Pj4+IA0KPj4+Pj4gT24gQXVnIDExLCAy MDIxLCBhdCA4OjU4IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3Rl Og0KPj4+Pj4gDQo+Pj4+PiBPbiBXZWQsIDExIEF1ZyAyMDIxLCBRaW5nIFpoYW8gd3JvdGU6DQo+ Pj4+PiANCj4+Pj4+PiANCj4+Pj4+PiANCj4+Pj4+Pj4gT24gQXVnIDExLCAyMDIxLCBhdCA4OjM3 IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0KPj4+Pj4+PiAN Cj4+Pj4+Pj4gT24gV2VkLCAxMSBBdWcgMjAyMSwgUWluZyBaaGFvIHdyb3RlOg0KPj4+Pj4+PiAN Cj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gT24gQXVnIDExLCAyMDIxLCBhdCAyOjAy IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0KPj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4+IE9uIFR1ZSwgMTAgQXVnIDIwMjEsIFFpbmcgWmhhbyB3cm90ZToNCj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gT24gQXVnIDEwLCAy MDIxLCBhdCAzOjE2IFBNLCBRaW5nIFpoYW8gdmlhIEdjYy1wYXRjaGVzIDxnY2MtcGF0Y2hlc0Bn Y2MuZ251Lm9yZz4gd3JvdGU6DQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IEhpLCBSaWNoYXJk LA0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gT24gQXVnIDEwLCAyMDIxLCBhdCAxMDoyMiBB TSwgUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+Pj4+Pj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gRXNwZWNpYWxseSBpbiB0aGUgVkxBIGNhc2UgYnV0IGxpa2Vs eSBhbHNvIGluIGdlbmVyYWwgKHRob3VnaCB1bmxpa2VseQ0KPj4+Pj4+Pj4+Pj4+Pj4gc2luY2Ug dXN1YWxseSB0aGUgcmVjZWl2ZXIgb2YgaW5pdGlhbGl6YXRpb25zIGFyZSBzaW1wbGUgZW5vdWdo KS4gIEknZA0KPj4+Pj4+Pj4+Pj4+Pj4gZXhwZWN0IHRoZSBWTEEgY2FzZSBlbmQgdXAgYXMNCj4+ Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gKnB0cl90b19kZWNsID0gLkRFRkVSUkVEX0lO SVQgKC4uLik7DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+IHdoZXJlICpwdHJfdG9f ZGVjbCBpcyB0aGUgREVDTF9WQUxVRV9FWFBSIG9mIHRoZSBkZWNsLg0KPj4+Pj4+Pj4+Pj4+PiAN Cj4+Pj4+Pj4+Pj4+Pj4gU28sIGZvciB0aGUgZm9sbG93aW5nIHNtYWxsIHRlc3RpbmcgY2FzZToN Cj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ID09PT0NCj4+Pj4+Pj4+Pj4+Pj4gZXh0ZXJu IHZvaWQgYmFyIChpbnQpOw0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gdm9pZCBmb28o aW50IG4pDQo+Pj4+Pj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4gaW50IGFycltuXTsNCj4+Pj4+ Pj4+Pj4+Pj4gYmFyIChhcnJbMl0pOw0KPj4+Pj4+Pj4+Pj4+PiByZXR1cm47DQo+Pj4+Pj4+Pj4+ Pj4+IH0NCj4+Pj4+Pj4+Pj4+Pj4gPT09PT0NCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ IElmIEkgY29tcGlsZSBpdCB3aXRoIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1w LXRyZWUtZ2ltcGxlIC1TIC1vIGF1dG8taW5pdC0xMS5zIC1mZHVtcC1ydGwtZXhwYW5kLCB0aGUg Ki5naW1wbGUgZHVtcCBpczoNCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ID09PT09DQo+ Pj4+Pj4+Pj4+Pj4+IHZvaWQgZm9vIChpbnQgbikNCj4+Pj4+Pj4+Pj4+Pj4gew0KPj4+Pj4+Pj4+ Pj4+PiBpbnQgbi4wOw0KPj4+Pj4+Pj4+Pj4+PiBzaXpldHlwZSBELjE5NTA7DQo+Pj4+Pj4+Pj4+ Pj4+IGJpdHNpemV0eXBlIEQuMTk1MTsNCj4+Pj4+Pj4+Pj4+Pj4gc2l6ZXR5cGUgRC4xOTUyOw0K Pj4+Pj4+Pj4+Pj4+PiBiaXRzaXpldHlwZSBELjE5NTM7DQo+Pj4+Pj4+Pj4+Pj4+IHNpemV0eXBl IEQuMTk1NDsNCj4+Pj4+Pj4+Pj4+Pj4gaW50WzA6RC4xOTUwXSAqIGFyci4xOw0KPj4+Pj4+Pj4+ Pj4+PiB2b2lkICogc2F2ZWRfc3RhY2suMjsNCj4+Pj4+Pj4+Pj4+Pj4gaW50IGFyclswOkQuMTk1 MF0gW3ZhbHVlLWV4cHI6ICphcnIuMV07DQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiBz YXZlZF9zdGFjay4yID0gX19idWlsdGluX3N0YWNrX3NhdmUgKCk7DQo+Pj4+Pj4+Pj4+Pj4+IHRy eQ0KPj4+Pj4+Pj4+Pj4+PiB7DQo+Pj4+Pj4+Pj4+Pj4+IG4uMCA9IG47DQo+Pj4+Pj4+Pj4+Pj4+ IF8xID0gKGxvbmcgaW50KSBuLjA7DQo+Pj4+Pj4+Pj4+Pj4+IF8yID0gXzEgKyAtMTsNCj4+Pj4+ Pj4+Pj4+Pj4gXzMgPSAoc2l6ZXR5cGUpIF8yOw0KPj4+Pj4+Pj4+Pj4+PiBELjE5NTAgPSBfMzsN Cj4+Pj4+Pj4+Pj4+Pj4gXzQgPSAoc2l6ZXR5cGUpIG4uMDsNCj4+Pj4+Pj4+Pj4+Pj4gXzUgPSAo Yml0c2l6ZXR5cGUpIF80Ow0KPj4+Pj4+Pj4+Pj4+PiBfNiA9IF81ICogMzI7DQo+Pj4+Pj4+Pj4+ Pj4+IEQuMTk1MSA9IF82Ow0KPj4+Pj4+Pj4+Pj4+PiBfNyA9IChzaXpldHlwZSkgbi4wOw0KPj4+ Pj4+Pj4+Pj4+PiBfOCA9IF83ICogNDsNCj4+Pj4+Pj4+Pj4+Pj4gRC4xOTUyID0gXzg7DQo+Pj4+ Pj4+Pj4+Pj4+IF85ID0gKHNpemV0eXBlKSBuLjA7DQo+Pj4+Pj4+Pj4+Pj4+IF8xMCA9IChiaXRz aXpldHlwZSkgXzk7DQo+Pj4+Pj4+Pj4+Pj4+IF8xMSA9IF8xMCAqIDMyOw0KPj4+Pj4+Pj4+Pj4+ PiBELjE5NTMgPSBfMTE7DQo+Pj4+Pj4+Pj4+Pj4+IF8xMiA9IChzaXpldHlwZSkgbi4wOw0KPj4+ Pj4+Pj4+Pj4+PiBfMTMgPSBfMTIgKiA0Ow0KPj4+Pj4+Pj4+Pj4+PiBELjE5NTQgPSBfMTM7DQo+ Pj4+Pj4+Pj4+Pj4+IGFyci4xID0gX19idWlsdGluX2FsbG9jYV93aXRoX2FsaWduIChELjE5NTQs IDMyKTsNCj4+Pj4+Pj4+Pj4+Pj4gYXJyID0gLkRFRkVSUkVEX0lOSVQgKEQuMTk1MiwgMiwgMSk7 DQo+Pj4+Pj4+Pj4+Pj4+IF8xNCA9ICgqYXJyLjEpWzJdOw0KPj4+Pj4+Pj4+Pj4+PiBiYXIgKF8x NCk7DQo+Pj4+Pj4+Pj4+Pj4+IHJldHVybjsNCj4+Pj4+Pj4+Pj4+Pj4gfQ0KPj4+Pj4+Pj4+Pj4+ PiBmaW5hbGx5DQo+Pj4+Pj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4gX19idWlsdGluX3N0YWNr X3Jlc3RvcmUgKHNhdmVkX3N0YWNrLjIpOw0KPj4+Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+Pj4+Pj4+ IH0NCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ID09PT0NCj4+Pj4+Pj4+Pj4+Pj4gDQo+ Pj4+Pj4+Pj4+Pj4+IFlvdSB0aGluayB0aGF0IHRoZSBhYm92ZSAuREVGRUVSRURfSU5JVCBpcyBu b3QgY29ycmVjdD8NCj4+Pj4+Pj4+Pj4+Pj4gSXQgc2hvdWxkIGJlOg0KPj4+Pj4+Pj4+Pj4+PiAN Cj4+Pj4+Pj4+Pj4+Pj4gKmFyci4xID0gLkRFRkVSUkVEX0lOSVQgKEQuMTk1Mi4gMiwgMSk7DQo+ Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiA/DQo+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+ Pj4gWWVzLg0KPj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBJIHVwZGF0 ZWQgZ2ltcGxpZnkuYyBmb3IgVkxBIGFuZCBub3cgaXQgZW1pdHMgdGhlIGNhbGwgdG8gLkRFRkVS UkVEX0lOSVQgYXM6DQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IGFyci4xID0gX19idWlsdGlu X2FsbG9jYV93aXRoX2FsaWduIChELjE5NTQsIDMyKTsNCj4+Pj4+Pj4+Pj4+ICphcnIuMSA9IC5E RUZFUlJFRF9JTklUIChELjE5NTIsIDIsIDEpOw0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBI b3dldmVyLCB0aGlzIGNhbGwgdHJpZ2dlcmVkIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBpbiB2ZXJp ZnlfZ2ltcGxlX2NhbGwgb2YgdHJlZS1jZmcuYyBiZWNhdXNlIHRoZSBMSFMgaXMgbm90IGEgdmFs aWQgTEhTLiANCj4+Pj4+Pj4+Pj4+IFRoZW4gSSBtb2RpZnkgdHJlZS1jZmcuYyBhczoNCj4+Pj4+ Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLWNmZy5jIGIvZ2NjL3Ry ZWUtY2ZnLmMNCj4+Pj4+Pj4+Pj4+IGluZGV4IDMzMGViN2RkODliZi4uMTgwZDRmMWY5ZTMyIDEw MDY0NA0KPj4+Pj4+Pj4+Pj4gLS0tIGEvZ2NjL3RyZWUtY2ZnLmMNCj4+Pj4+Pj4+Pj4+ICsrKyBi L2djYy90cmVlLWNmZy5jDQo+Pj4+Pj4+Pj4+PiBAQCAtMzM3NSw3ICszMzc1LDExIEBAIHZlcmlm eV9naW1wbGVfY2FsbCAoZ2NhbGwgKnN0bXQpDQo+Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+Pj4+PiAN Cj4+Pj4+Pj4+Pj4+IHRyZWUgbGhzID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KTsNCj4+Pj4+Pj4+ Pj4+ICsgIC8qIEZvciAuREVGRVJSRURfSU5JVCBjYWxsLCB0aGUgTEhTIG1pZ2h0IGJlIGFuIGlu ZGlyZWN0aW9uIG9mDQo+Pj4+Pj4+Pj4+PiArICAgICBhIHBvaW50ZXIgZm9yIHRoZSBWTEEgdmFy aWFibGUsIHdoaWNoIGlzIG5vdCBhIHZhbGlkIExIUyBvZg0KPj4+Pj4+Pj4+Pj4gKyAgICAgYSBn aW1wbGUgY2FsbCwgd2UgaWdub3JlIHRoZSBhc3NzZXJ0aW9uIG9uIHRoaXMuICAqLyANCj4+Pj4+ Pj4+Pj4+IGlmIChsaHMNCj4+Pj4+Pj4+Pj4+ICsgICAgICAmJiAoIWdpbXBsZV9jYWxsX2ludGVy bmFsX3AgKHN0bXQsIElGTl9ERUZFUlJFRF9JTklUKSkNCj4+Pj4+Pj4+Pj4+ICAmJiAoIWlzX2dp bXBsZV9yZWcgKGxocykNCj4+Pj4+Pj4+Pj4+ICAgICAmJiAoIWlzX2dpbXBsZV9sdmFsdWUgKGxo cykNCj4+Pj4+Pj4+Pj4+ICAgICAgICAgfHwgdmVyaWZ5X3R5cGVzX2luX2dpbXBsZV9yZWZlcmVu Y2UNCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gVGhlIGFzc2VydGlvbiBmYWlsdXJlIGluIHRy ZWUtY2ZnLmMgZ290IHJlc29sdmVkLCBidXQgSSBnb3QgYW5vdGhlciBhc3NlcnRpb24gZmFpbHVy ZSBpbiBvcGVyYW5kc19zY2FubmVyOjpnZXRfZXhwcl9vcGVyYW5kcyAodHJlZSAqZXhwcl9wLCBp bnQgZmxhZ3MpLCBsaW5lIDk0NToNCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gOTM5ICAgLyog SWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZy4gICovDQo+Pj4+Pj4+Pj4+ PiA5NDAgICBpZiAoZmxhZ19jaGVja2luZykNCj4+Pj4+Pj4+Pj4+IDk0MSAgICAgew0KPj4+Pj4+ Pj4+Pj4gOTQyICAgICAgIGZwcmludGYgKHN0ZGVyciwgInVuaGFuZGxlZCBleHByZXNzaW9uIGlu IGdldF9leHByX29wZXJhbmRzKCk6XG4iKTsNCj4+Pj4+Pj4+Pj4+IDk0MyAgICAgICBkZWJ1Z190 cmVlIChleHByKTsNCj4+Pj4+Pj4+Pj4+IDk0NCAgICAgICBmcHV0cyAoIlxuIiwgc3RkZXJyKTsN Cj4+Pj4+Pj4+Pj4+IDk0NSAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7DQo+Pj4+Pj4+Pj4+PiA5 NDYgICAgIH0NCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gTG9va3MgbGlrZSB0aGF0ICB0aGUg Z2ltcGxlIHN0YXRlbWVudDoNCj4+Pj4+Pj4+Pj4+ICphcnIuMSA9IC5ERUZFUlJFRF9JTklUIChE LjE5NTIsIDIsIDEpOw0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBJcyBub3QgdmFsaWQuICBp LmUsIHRoZSBMSFMgc2hvdWxkIG5vdCBiZSBhbiBpbmRpcmVjdGlvbiB0byBhIHBvaW50ZXIuIA0K Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBIb3cgdG8gcmVzb2x2ZSB0aGlzIGlzc3VlPw0KPj4+ Pj4+Pj4+IA0KPj4+Pj4+Pj4+IEl0IHNvdW5kcyBsaWtlIHRoZSBMSFMgaXMgYW4gSU5ESVJFQ1Rf UkVGIG1heWJlPyAgVGhhdCBtZWFucyBpdCdzDQo+Pj4+Pj4+Pj4gc3RpbGwgbm90IHByb3Blcmx5 IGdpbXBsaWZpZWQgYmVjYXVzZSBpdCBzaG91bGQgZW5kIHVwIGFzIGEgTUVNX1JFRg0KPj4+Pj4+ Pj4+IGluc3RlYWQuDQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gQnV0IEknbSBqdXN0IGd1ZXNzaW5n IGhlcmUgLi4uIGlmIHlvdSBhcmUgaW4gYSBkZWJ1Z2dlciB0aGVuIHlvdSBjYW4NCj4+Pj4+Pj4+ PiBpbnZva2UgZGVidWdfdHJlZSAobGhzKSBpbiB0aGUgaW5mZXJpb3IgdG8gc2VlIHdoYXQgaXQg ZXhhY3RseSBpcw0KPj4+Pj4+Pj4+IGF0IHRoZSBwb2ludCBvZiB0aGUgZmFpbHVyZS4NCj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4gWWVzLCBpdOKAmXMgYW4gSU5ESVJFQ1RfUkVGIGF0IHRoZSBwb2ludCBv ZiB0aGUgZmFpbHVyZSBldmVuIHRob3VnaCBJIGFkZGVkIGEgDQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+ IGdpbXBsaWZ5X3Zhcl9vcl9wYXJtX2RlY2wgIChsaHMpIA0KPj4+Pj4+PiANCj4+Pj4+Pj4gSSB0 aGluayB0aGUgZWFzaWVzdCBpcyB0byBidWlsZCB0aGUgLkRFRkVSUkVEX0lOSVQgYXMgR0VORVJJ Qw0KPj4+Pj4+PiBhbmQgdXNlIGdpbXBsaWZ5X2Fzc2lnbiAoKSB0byBnaW1wbGlmeSBhbmQgYWRk IHRoZSByZXN1bHQNCj4+Pj4+Pj4gdG8gdGhlIHNlcXVlbmNlLiAgVGh1cywgYnVpbGQgYSBHRU5F UklDIENBTExfRVhQUiBhbmQgdGhlbg0KPj4+Pj4+PiBnaW1wbGlmeV9hc3NpZ24gKGxocywgY2Fs bF9leHByLCBzZXEpOw0KPj4+Pj4+IA0KPj4+Pj4+IFdoaWNoIHV0aWxpdHkgcm91dGluZSBpcyB1 c2VkIHRvIGJ1aWxkIGFuIEludGVybmFsIGdlbmVyaWMgY2FsbD8NCj4+Pj4+PiBDdXJyZW50bHks IEkgdXNlZCDigJxnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbOKAnSB0byBidWlsZCB0aGlzIGlu dGVybmFsIGdpbXBsZSBjYWxsLg0KPj4+Pj4+IA0KPj4+Pj4+IEZvciB0aGUgZ2VuZXJpYyBjYWxs LCBzaGFsbCBJIHVzZSDigJxidWlsZF9jYWxsX2V4cHJfbG9j4oCdID8gDQo+Pj4+PiANCj4+Pj4+ IEZvciBleGFtcGxlIGxvb2sgYXQgYnVpbGRfYXNhbl9wb2lzb25fY2FsbF9leHByIHdoaWNoIGRv ZXMgc3VjaCB0aGluZw0KPj4+Pj4gZm9yIEFTQU4gcG9pc29uIGludGVybmFsIGZ1bmN0aW9uIGNh bGwgaW5zZXJ0aW9uIGF0IGdpbXBsaWZpY2F0aW9uIHRpbWUuDQo+Pj4+PiANCj4+Pj4+IFJpY2hh cmQuDQo+Pj4+PiANCj4+Pj4+PiBRaW5nDQo+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBSaWNo YXJkLg0KPj4+Pj4+PiANCj4+Pj4+Pj4+IFFpbmcNCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IA0KPj4+ Pj4+Pj4+PiBJIGNhbWUgdXAgd2l0aCB0aGUgZm9sbG93aW5nIHNvbHV0aW9uOg0KPj4+Pj4+Pj4+ PiANCj4+Pj4+Pj4+Pj4gRGVmaW5lIHRoZSBJRk5fREVGRVJSRURfSU5JVCBmdW5jdGlvbiBhczoN Cj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IExIUyA9IERFRkVSUkVEX0lOSVQgKFNJWkUgb2YgdGhl IERFQ0wsIElOSVRfVFlQRSwgSVNfVkxBKTsNCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IGlmIElT X1ZMQSBpcyBmYWxzZSwgdGhlIExIUyBpcyB0aGUgREVDTCBpdHNlbGYsDQo+Pj4+Pj4+Pj4+IGlm IElTX1ZMQSBpcyB0cnVlLCB0aGUgTEhTIGlzIHRoZSBwb2ludGVyIHRvIHRoaXMgREVDTCB0aGF0 IGNyZWF0ZWQgYnkNCj4+Pj4+Pj4+Pj4gZ2ltcGxpZnlfdmxhX2RlY2wuDQo+Pj4+Pj4+Pj4+IA0K Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gVGhlIGJlbmVmaXQgb2YgdGhpcyBzb2x1dGlvbiBhcmU6 DQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiAxLiBSZXNvbHZlZCB0aGUgaW52YWxpZCBJUiBpc3N1 ZTsNCj4+Pj4+Pj4+Pj4gMi4gVGhlIGNhbGwgc3RtdCBjYXJyaWVzIHRoZSBhZGRyZXNzIG9mIHRo ZSBWTEEgbmF0dWFsbHk7DQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiBUaGUgaXNzdWUgd2l0aCB0 aGlzIHNvbHV0aW9uIGlzOg0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gRm9yIFZMQSBhbmQgbm9u LVZMQSwgdGhlIExIUyB3aWxsIGJlIGRpZmZlcmVudCwgDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+ PiBEbyB5b3Ugc2VlIGFueSBvdGhlciBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBzb2x1dGlv bj8NCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IHRoYW5rcy4NCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+IFFpbmcNCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+ Pj4gDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IC0tIA0KPj4+Pj4+Pj4+IFJp Y2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4+Pj4+Pj4+PiBTVVNFIFNvZnR3YXJl IFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIE1heGZlbGRzdHJhc3NlIDUsIDkwNDA5IE51ZXJuYmVy ZywNCj4+Pj4+Pj4+PiBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTDtnJmZmVyOyBIUkIgMzY4MDkg KEFHIE51ZXJuYmVyZykNCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+PiAt LSANCj4+Pj4+Pj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4+Pj4+PiBT VVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIE1heGZlbGRzdHJhc3NlIDUsIDkw NDA5IE51ZXJuYmVyZywNCj4+Pj4+Pj4gR2VybWFueTsgR0Y6IEZlbGl4IEltZW5kw7ZyZmZlcjsg SFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQo+Pj4+Pj4gDQo+Pj4+Pj4gDQo+Pj4+PiANCj4+Pj4+ IC0tIA0KPj4+Pj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4+Pj4gU1VT RSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxkc3RyYXNzZSA1LCA5MDQw OSBOdWVybmJlcmcsDQo+Pj4+PiBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTDtnJmZmVyOyBIUkIg MzY4MDkgKEFHIE51ZXJuYmVyZykNCg0K