From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web12.2916.1608093493058219945 for ; Tue, 15 Dec 2020 20:38:13 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=onAVezma; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0619d1d483=abner.chang@hpe.com) Received: from pps.filterd (m0134425.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 0BG4X4eF021137; Wed, 16 Dec 2020 04:38:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=1ORKeNwtzXjQBGz3msJv0htxnmNyFQyDamRZii7kR4w=; b=onAVezmayANhiQBrWj2onabPnHSt9LojtGZBPGYVGeuqXYy+REHcg63UxDsqsxrMFUyB kvx64K/F65u1T20AvYgLLYDQ6vE/PXyrfy3WwHY01dI9nlTeIA461ce36By3WATh/Syk p3Epdg9/MqFQ1s2IgJYfyqLAdi4lo+PV5RsK2Jh9JdaZSMCN20X+pbnPX26P/vw4fYra FOtoutJm/cWouUfnGDLVnDXp0z8dMYJ9qekB/1ft50IBDMnNYjwKGCTUXbhgd067rat7 5jNLl01lYHsDKyJhWLw7cTFs8l2iSx+3Czz25uYL7Q7NpzoFQuvbcG+vKtVqUYvmw2DM Qg== Received: from g2t2352.austin.hpe.com (g2t2352.austin.hpe.com [15.233.44.25]) by mx0b-002e3701.pphosted.com with ESMTP id 35exxt5waq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Dec 2020 04:38:11 +0000 Received: from G2W6309.americas.hpqcorp.net (g2w6309.austin.hp.com [16.197.64.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2352.austin.hpe.com (Postfix) with ESMTPS id 624C8B3; Wed, 16 Dec 2020 04:38:11 +0000 (UTC) Received: from G2W6309.americas.hpqcorp.net (2002:10c5:4033::10c5:4033) by G2W6309.americas.hpqcorp.net (2002:10c5:4033::10c5:4033) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Dec 2020 04:38:10 +0000 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (15.241.52.11) by G2W6309.americas.hpqcorp.net (16.197.64.51) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 16 Dec 2020 04:38:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dsr7te4wTY6Q5sj1eUEUMiD84QlPISEDRPBw9F4F5Tmw5YlOarXvAHY5tZrw+NCogPSnOlPc4ixSRnjht3G1nLCUyes5Hq2a6FUMEBFoWYvBDrOLAlphlkNqLMolMx0Wd7n4rPqBimor4M7qXqv9qTiizJG7/dFsb0acrnt9NvjZx1YD0zF5qcBAIN/s0obnXCQGgE2MFZB8kHmXb8cko8p0xhV9+Tny7uwCYurbmmgmdE5tjJZ4Tv9WwOpp0qG7bMsTMpdqa4LTCBGWIqxNpvvymxwWqIPlW3Piz8kDLQjBrCReiT6nxyi+mW7SKKdSy/dRGqkm+TYwTbcZeol9Yw== 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=uT9WXGw05zgqDIEjlpKqDXyJUA/eSIls5lZqHlId+FE=; b=mYQX8VUqHyMdSAxUW/Z9X/yzaKkKhBbKPMWxustBpSwcs6pHU1ZHO3AbJtweTS64I/zX+yJ1OT4FeXDAadf7eraMPBUuxDz3DH06X9dcG1vgUUBjlgD+V6hCOWugbpw7buF+QnqbjS81EKq60L7LYcaYkZdzMcI1hR9s9ykaWnr/O7kCDvKf2y+5so/IHKgTpxFft57+HGOw809H6+p95t6AN1Umh/HyxXmXcGlsRze4/NOiCNNL6ytrQiIiUfh00xmaO40StzFKBqG+FqzObzfMJ1rn4bXaZWwBCECCdfnQ9jN2WmhcSWtfMTPbtwm+WP1aJBXvFJwULBX/l5bQxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB0519.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7509::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3589.20; Wed, 16 Dec 2020 04:38:08 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e%10]) with mapi id 15.20.3654.025; Wed, 16 Dec 2020 04:38:07 +0000 From: "Abner Chang" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Leif Lindholm , "Wang, Nickle (HPS SW)" , "O'Hanley, Peter (EXL)" Subject: Re: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Topic: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Index: AQHW0nf49ZknCiqcYkm8poCnEy7pLKn5Ircw Date: Wed, 16 Dec 2020 04:38:07 +0000 Message-ID: References: <20201214035321.17000-1-abner.chang@hpe.com> <20201214035321.17000-4-abner.chang@hpe.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=hpe.com; x-originating-ip: [16.242.247.131] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: d31a7da5-6975-4551-6dd9-08d8a17c62de x-ms-traffictypediagnostic: CS1PR8401MB0519: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: sAear0hiFF18g0hlA6hmtiohaHYHwJMzbCAFNYl2bOINFYo5nBKATM7Rw7EN8UsgQH+cdhGKP1j9W2/lNj4omEMayw3WkU0P3/g6KlWzmhPQjm5jEmAez0lGBw0HaaNf1oPT1rmcIjFIjguyTluXQcUKnIBl3ijxQ2b10+cFCUBwXe16iL9nACbetp3FxkWZhYimcVn1dUuhbHinVOqUiQDQTgDm4aLVShm29TGShbUkrJf6+MSil8tu8Xzcj8+t6a/g4qfQYrmpWti7SCNUA74ZXW0I27L4CGWeqYWA/lRe6t2IPob98eWWbH450lq1fQMnmtilWkLxHuykooKoDluoTrpTcfGdCZ/E/OBgeXmhbbjV2GzAZ0SNYe7jPL8w1yNgN/6LeYocDagQWCpB9wiUnrqdwwPw3kgUSi2TQbfaFeWNFNqsv50inDRBMMqMnoNIK93PHgm0hH6+D0PDP+mghPVx5SrxagiFehWq9hM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(39860400002)(396003)(366004)(346002)(376002)(136003)(55016002)(54906003)(66556008)(64756008)(53546011)(66946007)(9686003)(83380400001)(966005)(33656002)(186003)(76116006)(66446008)(316002)(19627235002)(110136005)(26005)(478600001)(71200400001)(8936002)(52536014)(86362001)(66476007)(5660300002)(6506007)(8676002)(4326008)(30864003)(7696005)(2906002)(461764006)(21314003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?Zms2cmVTZW56OGtHSlZSVktiRU1FVmVDL0tFSTJkeXVzRXBrMjNuVXRjUko1?= =?utf-8?B?TkEraXp5YkpKaTR1blByMm5YMG53aDhqckR4eTBaUXZoeWprYzZrLzVQM1Ja?= =?utf-8?B?dk52WHN2bWExNmVDVWg5UUwyUFY4MGplemtmV0lzS3hlMEZFNFZKMCtneVl2?= =?utf-8?B?K01HWitqd0llVTc4RGU1SGlPbW93OWZBRS91cU0rOWRhVC93MGpZTDVKblVG?= =?utf-8?B?cEloOGVzSGd0SzdCRXNHYkxpanV0WHVBdW52SXY5dzF4MTZFQm0wQk9vc0sz?= =?utf-8?B?akErWFdBRUVsU2ZxYU9jM2g5WmMxRVdoV3AxQnZXd2VvQnJ1STdlblB1VU5Z?= =?utf-8?B?VDgzMzhhbnJSR09hWHlwRTNxbW1MVGZ6Ylg1ZGR3SjY0anlrYStrS3lrVlFT?= =?utf-8?B?SnZKaWkrRDJsYy9Pa2FFRjlDL2M0UFdjQ3kweUk4Q2djK3J3UmxCUzZvZkxs?= =?utf-8?B?cWdUZFZwdjl5ZmEvUUF1ZGM0M25GUzE1aG9Bc3o3blpaU3RKL1FGQ3lXa0dz?= =?utf-8?B?Qml0SDlIU2ZNZ25yRUZYVEZSZ2NuK1pDcWVaTmxRNHZid3JJd2pmRElkT2du?= =?utf-8?B?VU1xdllTTU5FQlF2VTNTUU1jZXZxek0yT2lIc2JjbWcvUSsrMG1oT2srQjU0?= =?utf-8?B?U21wUkpQMnVCd1o5TmhnNW9nYys3U2lRT05peHkzWlVyaVdEU1RweVJJVnZt?= =?utf-8?B?MFNGSlZJOTgyRTVTREtKQzhRdWZFN3hQSVRmMDFIcERXUEhoVjdUQXk5amJi?= =?utf-8?B?L3pnb2phU3FGWEFGdUhPMDhKa3M4MlA5RWhocVg5NmpobnMxeVlTclBXNVRh?= =?utf-8?B?R3VJendCQnpJWHN3OGJqNHM3dkp3TTVHemFLWkVEZ3hGUEJ3Y2x2QTRDck5t?= =?utf-8?B?SW9VWUNjWksvakNwMkZTb3U4NUlCeEhFV3JlNThucTAyNTNKZG1EMzQ2SHhE?= =?utf-8?B?SVJRMEZvVG1JU3QxcTBkQnRSdEEwSElsYW9SSytCSzJZSGxsYlRhbTdlQkds?= =?utf-8?B?MzZyL3RHYzBBMnY4eTFCa0JxUkNxNEFUd1dpaUNjOVA0VW5iWVhoWEV0cEtk?= =?utf-8?B?cEw5TkNqLzJTRWdNZ3pPZ1pCa2RuT2l0RHdQVThUVzJob0VzdllibVVUVFlB?= =?utf-8?B?Rmx0Z0gvcW9zbjhhSGpCUUJybmE4OHdjTm9nMHRVM3dlUmJ2ZjJiQ2NxVUp6?= =?utf-8?B?NEdObFpxRURoa0I2VUZRNlZmNko2RXpkcGRlbDRwOTVRd21ISExtYmd4OHB3?= =?utf-8?B?bkNkY2habm14QktDSW5HRTlSdUc2elFhZkpwTG5tZTR3aG1Qb1pVTGFpY05P?= =?utf-8?Q?sKahIEMsEyBm8=3D?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d31a7da5-6975-4551-6dd9-08d8a17c62de X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2020 04:38:07.8456 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +SjSzPh27vG10bGOvLevyWsclIJifF6+Hbb/Eu2a+eMQX9J5U2QrEP3K0UqzJFWwb8IHCIQwIkeilkC2yUyHiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0519 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.343,18.0.737 definitions=2020-12-16_01:2020-12-15,2020-12-16 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 impostorscore=0 phishscore=0 adultscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 mlxscore=0 mlxlogscore=999 clxscore=1015 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2012160028 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCBb bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tXQ0KPiBTZW50OiBUdWVzZGF5LCBEZWNl bWJlciAxNSwgMjAyMCA4OjIwIEFNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgQ2hhbmcs IEFibmVyIChIUFMgU1cvRlcgVGVjaG5vbG9naXN0KQ0KPiA8YWJuZXIuY2hhbmdAaHBlLmNvbT47 IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IExl aWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsgV2FuZywgTmlja2xlIChIUFMgU1cpDQo+ IDxuaWNrbGUud2FuZ0BocGUuY29tPjsgTydIYW5sZXksIFBldGVyIChFWEwpIDxwZXRlci5vaGFu bGV5QGhwZS5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY2IDMvNl0g UmVkZmlzaFBrZy9DcnRMaWI6IEMgcnVudGltZSBsaWJyYXJ5DQo+IA0KPiBIaSBBYm5lciwNCj4g DQo+IEkgc2VlIHdoYXQgYXBwZWFycyB0byBiZSBzb21lIGR1cGxpY2F0aW9uIG9mIHRoZSBxc29y dCBzb3VyY2UgY29kZS4NCj4gDQo+IENhbiB5b3UgdXNlIHRoZSBQZXJmb3JtUXVpY2tTb3J0KCkg QVBJIGZyb20gdGhlIFFzb3J0TGliIGluIHRoZQ0KPiBNZGVNb2R1bGVQa2c/DQpEb25lIHRoYW5r cyENCj4gDQo+IFRoYW5rcywNCj4gDQo+IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91 cHMuaW8+IE9uIEJlaGFsZiBPZiBBYm5lcg0KPiA+IENoYW5nDQo+ID4gU2VudDogU3VuZGF5LCBE ZWNlbWJlciAxMywgMjAyMCA3OjUzIFBNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ ID4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsgTmlja2xlIFdhbmcNCj4g PiA8bmlja2xlLndhbmdAaHBlLmNvbT47IFBldGVyIE8nSGFubGV5IDxwZXRlci5vaGFubGV5QGhw ZS5jb20+DQo+ID4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtQQVRDSCB2NiAzLzZdIFJlZGZpc2hQ a2cvQ3J0TGliOiBDIHJ1bnRpbWUNCj4gPiBsaWJyYXJ5DQo+ID4NCj4gPiBDUlQgbGlicmFyeSBp cyBjdXJyZW50bHkgdXNlZCBieSBlZGsyIEpzb25MaWIgKG9wZW4gc291cmNlIGphbnNzb24NCj4g PiBwcm9qZWN0KSBhbmQgZWRrMiBSZWRmaXNoTGliIChsaWJyZWRmaXNoIG9wZW4gc291cmNlIHBy b2plY3QpLiBDcnRMaWINCj4gPiBsaWJyYXJ5IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgQyBydW50 aW1lIGVxdWl2YWxlbnQgZWRrMiBmdW5jdGlvbnMgZm9yDQo+ID4gb3BlbiBzb3VyY2UgcHJvamVj dHMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAaHBl LmNvbT4NCj4gPg0KPiA+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCj4g PiBDYzogTmlja2xlIFdhbmcgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+ID4gQ2M6IFBldGVyIE8n SGFubGV5IDxwZXRlci5vaGFubGV5QGhwZS5jb20+DQo+ID4gLS0tDQo+ID4gIFJlZGZpc2hQa2cv SW5jbHVkZS9DcnQvYXNzZXJ0LmggICAgICB8ICAxNiArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvZXJybm8uaCAgICAgICB8ICAxNiArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQv bGltaXRzLmggICAgICB8ICAxNiArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0aC5o ICAgICAgICB8ICAxNiArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJnLmggICAg ICB8ICAxNSArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVmLmggICAgICB8ICAx NiArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8uaCAgICAgICB8ICAxNSArDQo+ ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmggICAgICB8ICAxNiArDQo+ID4gIFJl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmggICAgICB8ICAxNiArDQo+ID4gIFJlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaCAgICB8ICAxNSArDQo+ID4gIFJlZGZpc2hQa2cvSW5j bHVkZS9DcnQvc3lzL3R5cGVzLmggICB8ICAxNSArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9D cnQvdGltZS5oICAgICAgICB8ICAxNSArDQo+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5 L0NydExpYi5oICB8IDE5NSArKysrKysrKw0KPiA+ICBSZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGli L0NydExpYi5jICAgfCA3MDUNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIFJl ZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmluZiB8ICAzNyArKw0KPiA+ICBSZWRmaXNo UGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMgICAgICAgfCAgIDEgKw0KPiA+ICBSZWRmaXNoUGtnL1Jl ZGZpc2hQa2cuY2kueWFtbCAgICAgICAgfCAgMTkgKw0KPiA+ICBSZWRmaXNoUGtnL1JlZGZpc2hQ a2cuZGVjICAgICAgICAgICAgfCAgIDggKw0KPiA+ICBSZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNj ICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICAxOSBmaWxlcyBjaGFuZ2VkLCAxMTUzIGluc2VydGlv bnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNz ZXJ0LmggIGNyZWF0ZSBtb2RlDQo+ID4gMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvZXJy bm8uaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9saW1p dHMuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRo LmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJn LmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVm LmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8u aCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIu aCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcu aCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdGlt ZS5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90 eXBlcy5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3Rp bWUuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0xpYnJhcnkv Q3J0TGliLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvTGlicmFyeS9DcnRM aWIvQ3J0TGliLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvTGlicmFyeS9D cnRMaWIvQ3J0TGliLmluZg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvYXNzZXJ0LmgNCj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNzZXJ0LmggbmV3 IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwLi5mOWFiN2VmOWNhDQo+ID4g LS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNzZXJ0LmgN Cj4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmls ZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNr YXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0K PiA+ICsNCj4gPiArI2lmbmRlZiBDUlRfQVNTRVJUX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX0FTU0VS VF9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9lcnJuby5o DQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmggbmV3IGZpbGUgbW9kZSAxMDA2 NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwLi5kMzBhZWUxNGRlDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvZXJybm8uaA0KPiA+IEBAIC0wLDAgKzEs MTYgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVp bGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5 cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBE ZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZu ZGVmIENSVF9FUlJOT19IXw0KPiA+ICsjZGVmaW5lIENSVF9FUlJOT19IXw0KPiA+ICsNCj4gPiAr I2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZm IC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9saW1pdHMuaA0KPiA+IGIvUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9saW1pdHMuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAw MDAwMDAwMDAuLmYzYmRkMzNmMmENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9saW1pdHMuaA0KPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiArLyoq IEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJk LXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTks IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIChDKSBD b3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxC Uj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIENSVF9MSU1JVFNf SF8NCj4gPiArI2RlZmluZSBDUlRfTElNSVRTX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGli cmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9SZWRm aXNoUGtnL0luY2x1ZGUvQ3J0L21hdGguaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9t YXRoLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwLi45ODRjMGNj YzIxDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQv bWF0aC5oDQo+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBJbmNs dWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJy YXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xl dHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgQ1JUX01BVEhfSF8NCj4gPiArI2RlZmluZSBDUlRf TUFUSF9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0K PiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRh cmcuaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcuaCBuZXcgZmlsZSBtb2Rl IDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLmQ1YTMxNGFkM2INCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcuaA0KPiA+IEBAIC0w LDAgKzEsMTUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBv cnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4g KyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKyNpZm5k ZWYgQ1JUX1NUREFSR19IXw0KPiA+ICsjZGVmaW5lIENSVF9TVERBUkdfSF8NCj4gPiArDQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlm ZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVmLmgNCj4gPiBiL1JlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvc3RkZGVmLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAw MDAwMDAwMDAwLi4xNWEzN2JmNTBlDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZp c2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVmLmgNCj4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gKy8q KiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGly ZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5 LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAoQykg Q29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8 QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBDUlRfU1REREVG X0hfDQo+ID4gKyNkZWZpbmUgQ1JUX1NURERFRl9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExp YnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oDQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L3N0ZGlvLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwLi4yNWU2 MTBiZTEwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9D cnQvc3RkaW8uaA0KPiA+IEBAIC0wLDAgKzEsMTUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAg SW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24g bGlicmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBI ZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4g KyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsN Cj4gPiArKiovDQo+ID4gKyNpZm5kZWYgQ1JUX1NURElPX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX1NU RElPX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxp Yi5oDQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxpYi5oIG5ldyBmaWxlIG1vZGUg MTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uNWIzZGQyNzNjOA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxpYi5oDQo+ID4gQEAgLTAs MCArMSwxNiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9y dCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiAr IENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnBy aXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4g KyNpZm5kZWYgQ1JUX1NURExJQl9IXw0KPiA+ICsjZGVmaW5lIENSVF9TVERMSUJfSF8NCj4gPiAr DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmgNCj4gPiBiL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgN Cj4gPiAwMDAwMDAwMDAwLi5mNjBiODdjY2QyDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBi L1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmgNCj4gPiBAQCAtMCwwICsxLDE2IEBADQo+ ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRo ZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChj KSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4g KyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1l bnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBDUlRf U1RSSU5HX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX1NUUklOR19IXw0KPiA+ICsNCj4gPiArI2luY2x1 ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0 IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdGltZS5oDQo+ID4gYi9SZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4 IDAwMDAwMDAwMDAuLjRjZWQxNzZjZGENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdGltZS5oDQo+ID4gQEAgLTAsMCArMSwxNSBAQA0KPiA+ ICsvKiogQGZpbGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUg dGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykg MjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsg KEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50 IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArI2lmbmRlZiBDUlRfU1lTX1RJTUVf SF8NCj4gPiArI2RlZmluZSBDUlRfU1lTX1RJTUVfSF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3R5cGVzLmgNCj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvc3lzL3R5cGVzLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw MDAwMDAwMDAuLmM0ZjgwNzIxNGMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9zeXMvdHlwZXMuaA0KPiA+IEBAIC0wLDAgKzEsMTUgQEANCj4gPiAr LyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRo aXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIw MTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIChD KSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBM UDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKyNpZm5kZWYgQ1JUX1NZU19UWVBFU19I Xw0KPiA+ICsjZGVmaW5lIENSVF9TWVNfVFlQRVNfSF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvdGltZS5oDQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L3RpbWUuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLmNhMDRh Yzg3MzANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC90aW1lLmgNCj4gPiBAQCAtMCwwICsxLDE1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIElu Y2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxp YnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3 bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsg ICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICsjaWZuZGVmIENSVF9USU1FX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX1RJTUVf SF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiAr I2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExp Yi5oDQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRMaWIuaA0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uOGM3NDg0ZTc1Yg0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRMaWIu aA0KPiA+IEBAIC0wLDAgKzEsMTk1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIENSVCB3cmFw cGVyIGhlYWQgZnVuY3Rpb25zIGZvciBqYW5zc29uIHN5c3RlbSBjYWxsLg0KPiA+ICsNCj4gPiAr ICBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gPiArICAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVy cHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4g PiArI2lmbmRlZiBDUlRfTElCX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX0xJQl9IXw0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9C YXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1BWF9T VFJJTkdfU0laRSAgMHgxMDAwMDAwMA0KPiA+ICsNCj4gPiArLy8gTWluaW11bSB2YWx1ZSBmb3Ig YW4gb2JqZWN0IG9mIHR5cGUgbG9uZyBsb25nIGludC4NCj4gPiArI2RlZmluZSBMTE9OR19NSU4g ICBNSU5fSU5UNjQNCj4gPiArDQo+ID4gKy8vIE1heGltdW0gdmFsdWUgZm9yIGFuIG9iamVjdCBv ZiB0eXBlIGxvbmcgbG9uZyBpbnQuDQo+ID4gKyNkZWZpbmUgTExPTkdfTUFYICAgTUFYX0lOVDY0 DQo+ID4gKw0KPiA+ICsvLyBXZSBkb250IHN1cHBvcnQgZG91YmxlIG9uIGVkazINCj4gPiArI2Rl ZmluZSBIVUdFX1ZBTCAgICAwDQo+ID4gKw0KPiA+ICsjaWYgZGVmaW5lZChNREVfQ1BVX1g2NCkg fHwgZGVmaW5lZChNREVfQ1BVX0FBUkNINjQpIHx8DQo+ID4gK2RlZmluZWQoTURFX0NQVV9JQTY0 KSB8fCBkZWZpbmVkKE1ERV9DUFVfUklTQ1Y2NCkgLy8gLy8gV2l0aCBHQ0MNCj4gd2UNCj4gPiAr d291bGQgbm9ybWFsbHkgdXNlIFNJWFRZX0ZPVVJfQklUX0xPTkcsIGJ1dCBNU1ZDIG5lZWRzIC8v DQo+ID4gK1NJWFRZX0ZPVVJfQklULCBiZWNhdXNlICdsb25nJyBpcyAzMi1iaXQgYW5kIG9ubHkg J2xvbmcgbG9uZycgaXMgLy8NCj4gPiArNjQtYml0LiBTaW5jZSB1c2luZyAnbG9uZyBsb25nJyB3 b3JrcyBmaW5lIG9uIEdDQyB0b28sIGp1c3QgZG8gdGhhdC4NCj4gPiArLy8NCj4gPiArI2RlZmlu ZSBTSVhUWV9GT1VSX0JJVA0KPiA+ICsjZWxpZiBkZWZpbmVkKE1ERV9DUFVfSUEzMikgfHwgZGVm aW5lZChNREVfQ1BVX0FSTSkgfHwNCj4gPiArZGVmaW5lZChNREVfQ1BVX0VCQykgI2RlZmluZSBU SElSVFlfVFdPX0JJVCAjZW5kaWYNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIE1hcCBhbGwgdmFf eHh4eCBlbGVtZW50cyB0byBWQV94eHggZGVmaW5lZCBpbg0KPiA+ICtNZGVQa2cvSW5jbHVkZS9C YXNlLmggLy8gI2lmICFkZWZpbmVkKF9fQ0NfQVJNKSAvLyBpZiB2YV9saXN0IGlzIG5vdA0KPiA+ ICthbHJlYWR5IGRlZmluZWQNCj4gPiArI2RlZmluZSB2YV9saXN0ICAgVkFfTElTVA0KPiA+ICsj ZGVmaW5lIHZhX2FyZyAgICBWQV9BUkcNCj4gPiArI2RlZmluZSB2YV9zdGFydCAgVkFfU1RBUlQN Cj4gPiArI2RlZmluZSB2YV9lbmQgICAgVkFfRU5EDQo+ID4gKyNlbHNlIC8vIF9fQ0NfQVJNDQo+ ID4gKyNkZWZpbmUgdmFfc3RhcnQoTWFya2VyLCBQYXJhbWV0ZXIpICAgX192YV9zdGFydChNYXJr ZXIsIFBhcmFtZXRlcikNCj4gPiArI2RlZmluZSB2YV9hcmcoTWFya2VyLCBUWVBFKSAgICAgICAg ICBfX3ZhX2FyZyhNYXJrZXIsIFRZUEUpDQo+ID4gKyNkZWZpbmUgdmFfZW5kKE1hcmtlcikgICAg ICAgICAgICAgICAgKCh2b2lkKTApDQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArLy8NCj4gPiAr Ly8gRGVmaW5pdGlvbnMgZm9yIGdsb2JhbCBjb25zdGFudHMgdXNlZCBieSBDUlQgbGlicmFyeSBy b3V0aW5lcyAvLw0KPiA+ICsjZGVmaW5lIElOVF9NQVggICAgICBNQVhfSU5UMzIgICAgICAgIC8q IE1heGltdW0gKHNpZ25lZCkgaW50IHZhbHVlICovDQo+ID4gKyNkZWZpbmUgTE9OR19NQVggICAg IDBYN0ZGRkZGRkZMICAgICAgLyogbWF4IHZhbHVlIGZvciBhIGxvbmcgKi8NCj4gPiArI2RlZmlu ZSBMT05HX01JTiAgICAgKC1MT05HX01BWC0xKSAgICAvKiBtaW4gdmFsdWUgZm9yIGEgbG9uZyAq Lw0KPiA+ICsjZGVmaW5lIFVMT05HX01BWCAgICAweEZGRkZGRkZGICAgICAgIC8qIE1heGltdW0g dW5zaWduZWQgbG9uZyB2YWx1ZQ0KPiAqLw0KPiA+ICsjZGVmaW5lIENIQVJfQklUICAgICA4ICAg ICAgICAgICAgICAgIC8qIE51bWJlciBvZiBiaXRzIGluIGEgY2hhciAqLw0KPiA+ICsNCj4gPiAr Ly8gTWF4aW11bSB2YWx1ZSBmb3IgYW4gb2JqZWN0IG9mIHR5cGUgdW5zaWduZWQgbG9uZyBsb25n IGludC4NCj4gPiArI2RlZmluZSBVTExPTkdfTUFYICAweEZGRkZGRkZGRkZGRkZGRkZVTEwgLy8g Ml42NCAtIDEgLy8gTWF4aW11bQ0KPiA+ICt2YWx1ZSBmb3IgYW4gb2JqZWN0IG9mIHR5cGUgdW5z aWduZWQgY2hhci4NCj4gPiArI2RlZmluZSBVQ0hBUl9NQVggICAyNTUgIC8vIDJeOCAtIDENCj4g PiArDQo+ID4gKy8vDQo+ID4gKy8vIEJhc2ljIHR5cGVzIG1hcHBpbmcNCj4gPiArLy8NCj4gPiAr dHlwZWRlZiBVSU5UTiAgICAgICAgICBzaXplX3Q7DQo+ID4gK3R5cGVkZWYgSU5UTiAgICAgICAg ICAgc3NpemVfdDsNCj4gPiArdHlwZWRlZiBJTlQzMiAgICAgICAgICB0aW1lX3Q7DQo+ID4gK3R5 cGVkZWYgVUlOVDggICAgICAgICAgX191aW50OF90Ow0KPiA+ICt0eXBlZGVmIFVJTlQ4ICAgICAg ICAgIHNhX2ZhbWlseV90Ow0KPiA+ICt0eXBlZGVmIFVJTlQzMiAgICAgICAgIHVpZF90Ow0KPiA+ ICt0eXBlZGVmIFVJTlQzMiAgICAgICAgIGdpZF90Ow0KPiA+ICt0eXBlZGVmIElOVDMyICAgICAg ICAgIGludDMyX3Q7DQo+ID4gK3R5cGVkZWYgVUlOVDMyICAgICAgICAgdWludDMyX3Q7DQo+ID4g K3R5cGVkZWYgVUlOVDE2ICAgICAgICAgdWludDE2X3Q7DQo+ID4gK3R5cGVkZWYgVUlOVDggICAg ICAgICAgdWludDhfdDsNCj4gPiArdHlwZWRlZiBlbnVtIHtmYWxzZSwgdHJ1ZX0gYm9vbDsNCj4g PiArDQo+ID4gKy8vDQo+ID4gKy8vIEZpbGUgb3BlcmF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIGZv ciBFRkkgYnVpbGRpbmcsIC8vIHNvIEZJTEUgaXMNCj4gPiArbWFwcGVkIHRvIFZPSUQgKiB0byBw YXNzIGJ1aWxkIC8vIHR5cGVkZWYgVk9JRCAgKkZJTEU7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsv LyBHbG9iYWwgdmFyaWFibGVzDQo+ID4gKy8vDQo+ID4gK2V4dGVybiBpbnQgIGVycm5vOw0KPiA+ ICtleHRlcm4gRklMRSAqc3RkZXJyOw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gRnVuY3Rpb24g cHJvdG90eXBlcyBvZiBDUlQgTGlicmFyeSByb3V0aW5lcyAvLw0KPiA+ICt2b2lkICAgICAgICAg ICAqbWFsbG9jICAgICAoc2l6ZV90KTsNCj4gPiArdm9pZCAgICAgICAgICAgKnJlYWxsb2MgICAg KHZvaWQgKiwgc2l6ZV90KTsNCj4gPiArdm9pZCAgICAgICAgICAgKmNhbGxvYyAgICAgKHNpemVf dCBOdW0sIHNpemVfdCBTaXplKTsNCj4gPiArdm9pZCAgICAgICAgICAgZnJlZSAgICAgICAgKHZv aWQgKik7DQo+ID4gK3ZvaWQgICAgICAgICAgICptZW1zZXQgICAgICh2b2lkICosIGludCwgc2l6 ZV90KTsNCj4gPiAraW50ICAgICAgICAgICAgbWVtY21wICAgICAgKGNvbnN0IHZvaWQgKiwgY29u c3Qgdm9pZCAqLCBzaXplX3QpOw0KPiA+ICtpbnQgICAgICAgICAgICBpc2RpZ2l0ICAgICAoaW50 KTsNCj4gPiAraW50ICAgICAgICAgICAgaXNzcGFjZSAgICAgKGludCk7DQo+ID4gK2ludCAgICAg ICAgICAgIHRvbG93ZXIgICAgIChpbnQpOw0KPiA+ICtpbnQgICAgICAgICAgICBpc3VwcGVyICAg ICAoaW50KTsNCj4gPiAraW50ICAgICAgICAgICAgaXN4ZGlnaXQgICAgKGludCk7DQo+ID4gK2lu dCAgICAgICAgICAgIGlzYWxudW0gICAgIChpbnQpOw0KPiA+ICt2b2lkICAgICAgICAgICAqbWVt Y3B5ICAgICAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7DQo+ID4gK3ZvaWQgICAgICAg ICAgICptZW1zZXQgICAgICh2b2lkICosIGludCwgc2l6ZV90KTsNCj4gPiArdm9pZCAgICAgICAg ICAgKm1lbWNociAgICAgKGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOw0KPiA+ICtpbnQgICAg ICAgICAgICBtZW1jbXAgICAgICAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7 DQo+ID4gK3ZvaWQgICAgICAgICAgICptZW1tb3ZlICAgICh2b2lkICosIGNvbnN0IHZvaWQgKiwg c2l6ZV90KTsNCj4gPiAraW50ICAgICAgICAgICAgc3RyY21wICAgICAgKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqKTsNCj4gPiAraW50ICAgICAgICAgICAgc3RybmNtcCAgICAgKGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOw0KPiA+ICtjaGFyICAgICAgICAgICAqc3RyY3B5 ICAgICAoY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiA+ICtzaXplX3QgICAgICAgICBzdHJsZW4g ICAgICAoY29uc3QgY2hhciAqKTsNCj4gPiArY2hhciAgICAgICAgICAgKnN0cmNhdCAgICAgKGNo YXIgKiwgY29uc3QgY2hhciAqKTsNCj4gPiArY2hhciAgICAgICAgICAgKnN0cmNociAgICAgKGNv bnN0IGNoYXIgKiwgaW50KTsNCj4gPiAraW50ICAgICAgICAgICAgc3RyY2FzZWNtcCAgKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCj4gPiAraW50ICAgICAgICAgICAgc3RybmNhc2VjbXAg KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOw0KPiA+ICtjaGFyICAgICAgICAg ICAqc3RybmNweSAgICAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCj4g PiAraW50ICAgICAgICAgICAgc3RybmNtcCAgICAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq LCBzaXplX3QpOw0KPiA+ICtjaGFyICAgICAgICAgICAqc3RycmNociAgICAoY29uc3QgY2hhciAq LCBpbnQpOw0KPiA+ICt1bnNpZ25lZCBsb25nICBzdHJ0b3VsICAgICAoY29uc3QgY2hhciAqLCBj aGFyICoqLCBpbnQpOw0KPiA+ICtjaGFyICogICAgICAgICBzdHJzdHIgICAgICAoY29uc3QgY2hh ciAqczEgLCBjb25zdCBjaGFyICpzMik7DQo+ID4gK2xvbmcgICAgICAgICAgIHN0cnRvbCAgICAg IChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7DQo+ID4gK2NoYXIgICAgICAgICAgICpzdHJl cnJvciAgIChpbnQpOw0KPiA+ICtzaXplX3QgICAgICAgICBzdHJzcG4gICAgICAoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOw0KPiA+ICtjaGFyICogICAgICAgICBzdHJkdXAgICAgICAoY29u c3QgY2hhciAqc3RyKTsNCj4gPiArY2hhciAqICAgICAgICAgc3RycGJyayAgICAgKGNvbnN0IGNo YXIgKnMxLCBjb25zdCBjaGFyICpzMik7DQo+ID4gK3Vuc2lnbmVkIGxvbmcgbG9uZyBzdHJ0b3Vs bChjb25zdCBjaGFyICogbnB0ciwgY2hhciAqKiBlbmRwdHIsIGludCBiYXNlKTsNCj4gPiArbG9u ZyBsb25nICAgICAgc3RydG9sbCAgICAgKGNvbnN0IGNoYXIgKiBucHRyLCBjaGFyICoqIGVuZHB0 ciwgaW50IGJhc2UpOw0KPiA+ICtsb25nICAgICAgICAgICBzdHJ0b2wgICAgICAoY29uc3QgY2hh ciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFzZSk7DQo+ID4gK2RvdWJsZSAgICAgICAg IHN0cnRvZCAgICAgIChjb25zdCBjaGFyICogX19yZXN0cmljdCBucHRyLCBjaGFyICoqIF9fcmVz dHJpY3QNCj4gZW5kcHRyKTsNCj4gPiArc2l6ZV90ICAgICAgICAgc3RyY3NwbiAgICAgKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCj4gPiAraW50ICAgICAgICAgICAgcHJpbnRmICAgICAg KGNvbnN0IGNoYXIgKiwgLi4uKTsNCj4gPiAraW50ICAgICAgICAgICAgc3NjYW5mICAgICAgKGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOw0KPiA+ICtGSUxFICAgICAgICAgICAqZm9w ZW4gICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiA+ICtzaXplX3QgICAgICAg ICBmcmVhZCAgICAgICAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsNCj4gPiArc2l6 ZV90ICAgICAgICAgZndyaXRlICAgICAgKGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJ TEUgKik7DQo+ID4gK2ludCAgICAgICAgICAgIGZjbG9zZSAgICAgIChGSUxFICopOw0KPiA+ICtp bnQgICAgICAgICAgICBmcHJpbnRmICAgICAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7DQo+ ID4gK2ludCAgICAgICAgICAgIGZnZXRjICAgICAgIChGSUxFICogX0ZpbGUpOw0KPiA+ICt1aWRf dCAgICAgICAgICBnZXR1aWQgICAgICAodm9pZCk7DQo+ID4gK3VpZF90ICAgICAgICAgIGdldGV1 aWQgICAgICh2b2lkKTsNCj4gPiArZ2lkX3QgICAgICAgICAgZ2V0Z2lkICAgICAgKHZvaWQpOw0K PiA+ICtnaWRfdCAgICAgICAgICBnZXRlZ2lkICAgICAodm9pZCk7DQo+ID4gK3ZvaWQgICAgICAg ICAgIHFzb3J0ICAgICAgICh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCopKGNvbnN0IHZv aWQgKiwgY29uc3Qgdm9pZA0KPiAqKSk7DQo+ID4gK2NoYXIgICAgICAgICAgICpnZXRlbnYgICAg IChjb25zdCBjaGFyICopOw0KPiA+ICsjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19f ID49IDIpDQo+ID4gK3ZvaWQgICAgICAgICAgIGFib3J0ICAgICAgICh2b2lkKSBfX2F0dHJpYnV0 ZV9fKChfX25vcmV0dXJuX18pKTsNCj4gPiArI2Vsc2UNCj4gPiArdm9pZCAgICAgICAgICAgYWJv cnQgICAgICAgKHZvaWQpOw0KPiA+ICsjZW5kaWYNCj4gPiAraW50ICAgICAgICAgICAgdG91cHBl ciAgICAgKGludCk7DQo+ID4gK2ludCAgICAgICAgICAgIERpZ2l0MlZhbCAgIChpbnQpOw0KPiA+ ICt0aW1lX3QgICAgICAgICB0aW1lICAgICAgICAodGltZV90ICopOw0KPiA+ICsNCj4gPiArLy8N Cj4gPiArLy8gTWFjcm9zIHRoYXQgZGlyZWN0bHkgbWFwIGZ1bmN0aW9ucyB0byBCYXNlTGliLCBC YXNlTWVtb3J5TGliLCBhbmQNCj4gPiArRGVidWdMaWIgZnVuY3Rpb25zIC8vDQo+ID4gKyNkZWZp bmUgc3RyY21wICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzY2lpU3RyQ21wDQo+ID4gKyNk ZWZpbmUgbWVtY3B5KGRlc3Qsc291cmNlLGNvdW50KQ0KPiBDb3B5TWVtKGRlc3Qsc291cmNlLChV SU5UTikoY291bnQpKQ0KPiA+ICsjZGVmaW5lIG1lbXNldChkZXN0LGNoLGNvdW50KQ0KPiBTZXRN ZW0oZGVzdCwoVUlOVE4pKGNvdW50KSwoVUlOVDgpKGNoKSkNCj4gPiArI2RlZmluZSBtZW1jaHIo YnVmLGNoLGNvdW50KQ0KPiBTY2FuTWVtOChidWYsKFVJTlROKShjb3VudCksKFVJTlQ4KWNoKQ0K PiA+ICsjZGVmaW5lIG1lbWNtcChidWYxLGJ1ZjIsY291bnQpDQo+IChpbnQpKENvbXBhcmVNZW0o YnVmMSxidWYyLChVSU5UTikoY291bnQpKSkNCj4gPiArI2RlZmluZSBtZW1tb3ZlKGRlc3Qsc291 cmNlLGNvdW50KQ0KPiBDb3B5TWVtKGRlc3Qsc291cmNlLChVSU5UTikoY291bnQpKQ0KPiA+ICsj ZGVmaW5lIHN0cmxlbihzdHIpDQo+IChzaXplX3QpKEFzY2lpU3RybkxlblMoc3RyLE1BWF9TVFJJ TkdfU0laRSkpDQo+ID4gKyNkZWZpbmUgc3RyY3B5KHN0ckRlc3Qsc3RyU291cmNlKQ0KPiBBc2Np aVN0ckNweVMoc3RyRGVzdCwoc3RybGVuKHN0clNvdXJjZSkrMSksc3RyU291cmNlKQ0KPiA+ICsj ZGVmaW5lIHN0cm5jcHkoc3RyRGVzdCxzdHJTb3VyY2UsY291bnQpDQo+ID4gK0FzY2lpU3RybkNw eVMoc3RyRGVzdCwoVUlOVE4pY291bnQsc3RyU291cmNlLChVSU5UTiljb3VudCkNCj4gPiArI2Rl ZmluZSBzdHJuY3B5cyhzdHJEZXN0LCBEZXN0TGVuLCBzdHJTb3VyY2UsY291bnQpDQo+IEFzY2lp U3RybkNweVMoc3RyRGVzdCxEZXN0TGVuLHN0clNvdXJjZSwoVUlOVE4pY291bnQpDQo+ID4gKyNk ZWZpbmUgc3RyY2F0KHN0ckRlc3Qsc3RyU291cmNlKQ0KPiBBc2NpaVN0ckNhdFMoc3RyRGVzdCwo c3RybGVuKHN0clNvdXJjZSkrc3RybGVuKHN0ckRlc3QpKzEpLHN0clNvdXJjZSkNCj4gPiArI2Rl ZmluZSBzdHJjaHIoc3RyLGNoKSAgICAgICAgICAgICAgICAgICAgU2Nhbk1lbTgoKFZPSUQNCj4g Kikoc3RyKSxBc2NpaVN0clNpemUoc3RyKSwoVUlOVDgpY2gpDQo+ID4gKyNkZWZpbmUgc3RybmNt cChzdHJpbmcxLHN0cmluZzIsY291bnQpDQo+IChpbnQpKEFzY2lpU3RybkNtcChzdHJpbmcxLHN0 cmluZzIsKFVJTlROKShjb3VudCkpKQ0KPiA+ICsjZGVmaW5lIHN0cmNhc2VjbXAoc3RyMSxzdHIy KSAgICAgICAgICAgICAoaW50KUFzY2lpU3RyaUNtcChzdHIxLHN0cjIpDQo+ID4gKyNkZWZpbmUg c3Ryc3RyKHMxLHMyKSAgICAgICAgICAgICAgICAgICAgIEFzY2lpU3RyU3RyKHMxLHMyKQ0KPiA+ ICsjZGVmaW5lIHNwcmludGYoYnVmLC4uLikNCj4gQXNjaWlTUHJpbnQoYnVmLE1BWF9TVFJJTkdf U0laRSxfX1ZBX0FSR1NfXykNCj4gPiArI2RlZmluZSBzbnByaW50ZihidWYsbGVuLC4uLikgICAg ICAgICAgICAgQXNjaWlTUHJpbnQoYnVmLGxlbixfX1ZBX0FSR1NfXykNCj4gPiArI2RlZmluZSB2 c25wcmludGYoYnVmLGxlbixmb3JtYXQsbWFya2VyKQ0KPiBBc2NpaVZTUHJpbnQoKGJ1ZiksKGxl biksKGZvcm1hdCksKG1hcmtlcikpDQo+ID4gKyNkZWZpbmUgYXNzZXJ0KGV4cHJlc3Npb24pICAg ICAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uKQ0KPiA+ICsjZGVmaW5lIGF0b2kobnB0cikg ICAgICAgICAgICAgICAgICAgICAgICBBc2NpaVN0ckRlY2ltYWxUb1VpbnRuKG5wdHIpDQo+ID4g KyNkZWZpbmUgZmFicyh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHgpIDwgMC4wKT8g KC14KTogKHgpKQ0KPiA+ICsjZGVmaW5lIG9mZnNldG9mKHR5cGUsbWVtYmVyKSAgICAgICAgICAg ICBPRkZTRVRfT0YodHlwZSxtZW1iZXIpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEVPRiAoLTEpDQo+ ID4gKw0KPiA+ICtleHRlcm4gaW50ICBlcnJubzsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRVJBTkdF ICAgMzQgICAgICAgICAgICAgICAgLyogMzQgICBSZXN1bHQgdG9vIGxhcmdlICovDQo+ID4gKw0K PiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9D cnRMaWIuYw0KPiA+IGIvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuYw0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMWZmNDAyM2RiZQ0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExp Yi5jDQo+ID4gQEAgLTAsMCArMSw3MDUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgQ1JUIHdy YXBwZXIgZnVuY3Rpb25zIGZvciBzeXN0ZW0gY2FsbC4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0 IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ID4gKyAgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVs b3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArI2luY2x1ZGUgPFVlZmku aD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJy YXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4gI2luY2x1ZGUNCj4gPiArPExpYnJhcnkvVWVmaVJ1 bnRpbWVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gKw0KPiA+ICtpbnQgIGVycm5vID0gMDsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIERldGVybWluZSBpZiBhIHBhcnRpY3VsYXIgY2hhcmFjdGVy IGlzIGFuIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXINCj4gPiArICBAcmV0dXJuICBSZXR1cm5zIDEg aWYgYyBpcyBhbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVyLCBvdGhlcndpc2UgcmV0dXJucyAwLg0K PiA+ICsqKi8NCj4gPiAraW50IGlzYWxudW0gKGludCBjKQ0KPiA+ICt7DQo+ID4gKyAgLy8NCj4g PiArICAvLyA8YWxudW0+IDo6PSBbMC05XSB8IFthLXpdIHwgW0EtWl0NCj4gPiArICAvLw0KPiA+ ICsgIHJldHVybiAoKCgnMCcgPD0gKGMpKSAmJiAoKGMpIDw9ICc5JykpIHx8DQo+ID4gKyAgICAg ICAgICAoKCdhJyA8PSAoYykpICYmICgoYykgPD0gJ3onKSkgfHwNCj4gPiArICAgICAgICAgICgo J0EnIDw9IChjKSkgJiYgKChjKSA8PSAnWicpKSk7IH0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IERldGVybWluZSBpZiBhIHBhcnRpY3VsYXIgY2hhcmFjdGVyIGlzIGEgZGlnaXRhbCBjaGFyYWN0 ZXINCj4gPiArDQo+ID4gKyAgQHJldHVybiAgUmV0dXJucyAxIGlmIGMgaXMgYW4gZGlnaXRhbCBj aGFyYWN0ZXIsIG90aGVyd2lzZSByZXR1cm5zIDAuDQo+ID4gKyoqLw0KPiA+ICtpbnQgaXNkY2hh ciAoaW50IGMpDQo+ID4gK3sNCj4gPiArICAvLw0KPiA+ICsgIC8vIFswLTldIHwgW2UgKy0uXQ0K PiA+ICsgIC8vDQo+ID4gKyAgcmV0dXJuICgoKCcwJyA8PSAoYykpICYmICgoYykgPD0gJzknKSkg fHwNCj4gPiArICAgICAgICAgIChjID09ICdlJykgfHwgKGMgPT0gJ0UnKSB8fA0KPiA+ICsgICAg ICAgICAgKGMgPT0gJysnKSB8fCAoYyA9PSAnLScpIHx8DQo+ID4gKyAgICAgICAgICAoYyA9PSAn LicpKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRGV0ZXJtaW5lIGlmIGEgcGFy dGljdWxhciBjaGFyYWN0ZXIgaXMgYSBzcGFjZSBjaGFyYWN0ZXINCj4gPiArDQo+ID4gKyAgQHJl dHVybiAgUmV0dXJucyAxIGlmIGMgaXMgYSBzcGFjZSBjaGFyYWN0ZXIgKiovIGludCBpc3NwYWNl IChpbnQNCj4gPiArYykgew0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gPHNwYWNlPiA6Oj0gWyBdDQo+ ID4gKyAgLy8NCj4gPiArICByZXR1cm4gKChjKSA9PSAnICcpIHx8ICgoYykgPT0gJ1x0JykgfHwg KChjKSA9PSAnXHInKSB8fCAoKGMpID09DQo+ID4gKydcbicpIHx8ICgoYykgPT0gJ1x2JykgIHx8 ICgoYykgPT0gJ1xmJyk7IH0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFsbG9jYXRlcyBtZW1v cnkgYmxvY2tzDQo+ID4gKyovDQo+ID4gK3ZvaWQgKm1hbGxvYyAoc2l6ZV90IHNpemUpDQo+ID4g K3sNCj4gPiArICByZXR1cm4gQWxsb2NhdGVQb29sICgoVUlOVE4pIHNpemUpOyB9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBEZS1hbGxvY2F0ZXMgb3IgZnJlZXMgYSBtZW1vcnkgYmxvY2sgKi8g dm9pZCBmcmVlICh2b2lkICpwdHIpIHsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEluIFN0YW5kYXJk IEMsIGZyZWUoKSBoYW5kbGVzIGEgbnVsbCBwb2ludGVyIGFyZ3VtZW50DQo+ID4gK3RyYW5zcGFy ZW50bHkuIFRoaXMNCj4gPiArICAvLyBpcyBub3QgdHJ1ZSBvZiBGcmVlUG9vbCgpIGJlbG93LCBz byBwcm90ZWN0IGl0Lg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKHB0ciAhPSBOVUxMKSB7DQo+ID4g KyAgICBGcmVlUG9vbCAocHRyKTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIE5ldEJTRCBDb21wYXRpYmlsaXR5IEZ1bmN0aW9uIHN0cmR1cCBjcmVhdGVzIGEgZHVw bGljYXRlIGNvcHkgb2YgYSBzdHJpbmcuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gIFJldHVybnMg dGhlIHBvaW50ZXIgdG8gZHVwbGljYXRlZCBzdHJpbmcuDQo+ID4gKyoqLw0KPiA+ICtjaGFyICog c3RyZHVwKGNvbnN0IGNoYXIgKnN0cikNCj4gPiArew0KPiA+ICsgIHNpemVfdCBsZW47DQo+ID4g KyAgY2hhciAqY29weTsNCj4gPiArDQo+ID4gKyAgbGVuID0gc3RybGVuKHN0cikgKyAxOw0KPiA+ ICsgIGlmICgoY29weSA9IG1hbGxvYyhsZW4pKSA9PSBOVUxMKQ0KPiA+ICsgICAgcmV0dXJuIChO VUxMKTsNCj4gPiArICBtZW1jcHkoY29weSwgc3RyLCBsZW4pOw0KPiA+ICsgIHJldHVybiAoY29w eSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGUgdG91cHBlciBmdW5jdGlvbiBjb252ZXJ0 cyBhIGxvd2VyY2FzZSBsZXR0ZXIgdG8gYSBjb3JyZXNwb25kaW5nDQo+ID4gKyAgICB1cHBlcmNh c2UgbGV0dGVyLg0KPiA+ICsNCj4gPiArICAgIEBwYXJhbVtpbl0gICAgYyAgIFRoZSBjaGFyYWN0 ZXIgdG8gYmUgY29udmVydGVkLg0KPiA+ICsNCj4gPiArICAgIEByZXR1cm4gICBJZiB0aGUgYXJn dW1lbnQgaXMgYSBjaGFyYWN0ZXIgZm9yIHdoaWNoIGlzbG93ZXIgaXMgdHJ1ZSBhbmQNCj4gPiAr ICAgICAgICAgICAgICB0aGVyZSBhcmUgb25lIG9yIG1vcmUgY29ycmVzcG9uZGluZyBjaGFyYWN0 ZXJzLCBhcyBzcGVjaWZpZWQgYnkNCj4gPiArICAgICAgICAgICAgICB0aGUgY3VycmVudCBsb2Nh bGUsIGZvciB3aGljaCBpc3VwcGVyIGlzIHRydWUsIHRoZSB0b3VwcGVyDQo+ID4gKyAgICAgICAg ICAgICAgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVy cyAoYWx3YXlzIHRoZQ0KPiA+ICsgICAgICAgICAgICAgIHNhbWUgb25lIGZvciBhbnkgZ2l2ZW4g bG9jYWxlKTsgb3RoZXJ3aXNlLCB0aGUgYXJndW1lbnQgaXMNCj4gPiArICAgICAgICAgICAgICBy ZXR1cm5lZCB1bmNoYW5nZWQuDQo+ID4gKyoqLw0KPiA+ICtpbnQNCj4gPiArdG91cHBlcigNCj4g PiArICBJTiAgaW50IGMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoIChjID49ICdhJykg JiYgKGMgPD0gJ3onKSApIHsNCj4gPiArICAgIGMgPSBjIC0gKCdhJyAtICdBJyk7DQo+ID4gKyAg fQ0KPiA+ICsgIHJldHVybiBjOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEaWdp dCB0byBhIHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICBSZXR1cm5zIHRoZSB2YWx1ZSBv ZiBkaWdpdC4NCj4gPiArKiovDQo+ID4gK2ludA0KPiA+ICtEaWdpdDJWYWwoIGludCBjKQ0KPiA+ ICt7DQo+ID4gKyAgaWYgKCgoYyA+PSAnYScpICYmIChjIDw9ICd6JykpIHx8ICgoYyA+PSAnQScp ICYmIChjIDw9ICdaJykpKSB7ICAvKiBJZiBjIGlzIG9uZSBvZiBbQS0NCj4gWmEtel0uLi4gKi8N Cj4gPiArICAgIGMgPSB0b3VwcGVyKGMpIC0gNzsgICAvLyBBZGp1c3Qgc28gJ0EnIGlzICgnOScg KyAxKQ0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gYyAtICcwJzsgICAvLyBWYWx1ZSByZXR1cm5l ZCBpcyBiZXR3ZWVuIDAgYW5kIDM1LCBpbmNsdXNpdmUuDQo+ID4gK30NCj4gPiArDQo+ID4gKw0K PiA+ICsvKiogVGhlIHN0cnRvbGwgZnVuY3Rpb24gY29udmVydHMgdGhlIGluaXRpYWwgcG9ydGlv biBvZiB0aGUgc3RyaW5nIHBvaW50ZWQgdG8NCj4gPiArICAgIGJ5IG5wdHIgdG8gbG9uZyBsb25n IGludCByZXByZXNlbnRhdGlvbi4NCj4gPiArDQo+ID4gKyAgICBTZWUgdGhlIGRlc2NyaXB0aW9u IGZvciBzdHJ0b2wgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4g ICBUaGUgc3RydG9sbCBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb252ZXJ0ZWQgdmFsdWUsIGlmIGFu eS4gSWYgbm8NCj4gPiArICAgICAgICAgICAgY29udmVyc2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQs IHplcm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3JyZWN0DQo+ID4gKyAgICAgICAgICAgIHZhbHVl IGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHJlcHJlc2VudGFibGUgdmFsdWVzLCBMTE9OR19NSU4g b3INCj4gPiArICAgICAgICAgICAgTExPTkdfTUFYIGlzIHJldHVybmVkIChhY2NvcmRpbmcgdG8g dGhlIHNpZ24gb2YgdGhlIHZhbHVlLCBpZiBhbnkpLA0KPiA+ICsgICAgICAgICAgICBhbmQgdGhl IHZhbHVlIG9mIHRoZSBtYWNybyBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0KPiA+ICsqKi8N Cj4gPiArbG9uZyBsb25nDQo+ID4gK3N0cnRvbGwoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiog ZW5kcHRyLCBpbnQgYmFzZSkgew0KPiA+ICsgIGNvbnN0IGNoYXIgKnBFbmQ7DQo+ID4gKyAgbG9u ZyBsb25nICAgUmVzdWx0ID0gMDsNCj4gPiArICBsb25nIGxvbmcgICBQcmV2aW91czsNCj4gPiAr ICBpbnQgICAgICAgICB0ZW1wOw0KPiA+ICsgIEJPT0xFQU4gICAgIE5lZ2F0aXZlID0gRkFMU0U7 DQo+ID4gKw0KPiA+ICsgIHBFbmQgPSBucHRyOw0KPiA+ICsNCj4gPiArICBpZigoYmFzZSA8IDAp IHx8IChiYXNlID09IDEpIHx8IChiYXNlID4gMzYpKSB7DQo+ID4gKyAgICBpZihlbmRwdHIgIT0g TlVMTCkgew0KPiA+ICsgICAgKmVuZHB0ciA9IE5VTEw7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBy ZXR1cm4gMDsNCj4gPiArICB9DQo+ID4gKyAgLy8gU2tpcCBsZWFkaW5nIHNwYWNlcy4NCj4gPiAr ICB3aGlsZShpc3NwYWNlKCpucHRyKSkgICArK25wdHI7DQo+ID4gKw0KPiA+ICsgIC8vIFByb2Nl c3MgU3ViamVjdCBzZXF1ZW5jZTogb3B0aW9uYWwgc2lnbiBmb2xsb3dlZCBieSBkaWdpdHMuDQo+ ID4gKyAgaWYoKm5wdHIgPT0gJysnKSB7DQo+ID4gKyAgICBOZWdhdGl2ZSA9IEZBTFNFOw0KPiA+ ICsgICAgKytucHRyOw0KPiA+ICsgIH0NCj4gPiArICBlbHNlIGlmKCpucHRyID09ICctJykgew0K PiA+ICsgICAgTmVnYXRpdmUgPSBUUlVFOw0KPiA+ICsgICAgKytucHRyOw0KPiA+ICsgIH0NCj4g PiArDQo+ID4gKyAgaWYoKm5wdHIgPT0gJzAnKSB7ICAvKiBNaWdodCBiZSBPY3RhbCBvciBIZXgg Ki8NCj4gPiArICAgIGlmKHRvdXBwZXIobnB0clsxXSkgPT0gJ1gnKSB7ICAgLyogTG9va3MgbGlr ZSBIZXggKi8NCj4gPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0gMTYpKSB7DQo+ ID4gKyAgICAgICAgbnB0ciArPSAyOyAgLyogU2tpcCB0aGUgIjBYIiAgICAgICovDQo+ID4gKyAg ICAgICAgYmFzZSA9IDE2OyAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICovDQo+ID4gKyAgICAgIH0N Cj4gPiArICAgIH0NCj4gPiArICAgIGVsc2UgeyAgICAvKiBMb29rcyBsaWtlIE9jdGFsICovDQo+ ID4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ID4gKyAgICAgICAg KytucHRyOyAgICAgLyogU2tpcCB0aGUgbGVhZGluZyAiMCIgKi8NCj4gPiArICAgICAgICBiYXNl ID0gODsgICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgICAqLw0KPiA+ICsgICAgICB9DQo+ID4gKyAg ICB9DQo+ID4gKyAgfQ0KPiA+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHplcm8g dGhlbiBtdXN0IGJlIGRlY2ltYWwgKi8NCj4gPiArICAgIGJhc2UgPSAxMDsNCj4gPiArICB9DQo+ ID4gKyAgaWYoKm5wdHIgID09ICcwJykgew0KPiA+ICsgICAgZm9yKCA7ICpucHRyID09ICcwJzsg KytucHRyKTsgIC8qIFNraXAgYW55IHJlbWFpbmluZyBsZWFkaW5nIHplcm9zICovDQo+ID4gKyAg ICBwRW5kID0gbnB0cjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHdoaWxlKCBpc2FsbnVtKCpu cHRyKSAmJiAoKHRlbXAgPSBEaWdpdDJWYWwoKm5wdHIpKSA8IGJhc2UpKSB7DQo+ID4gKyAgICBQ cmV2aW91cyA9IFJlc3VsdDsNCj4gPiArICAgIFJlc3VsdCA9IE11bHRTNjR4NjQgKFJlc3VsdCwg YmFzZSkgKyAobG9uZyBsb25nIGludCl0ZW1wOw0KPiA+ICsgICAgaWYoIFJlc3VsdCA8PSBQcmV2 aW91cykgeyAgIC8vIERldGVjdCBPdmVyZmxvdw0KPiA+ICsgICAgICBpZihOZWdhdGl2ZSkgew0K PiA+ICsgICAgICAgIFJlc3VsdCA9IExMT05HX01JTjsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAg ICBlbHNlIHsNCj4gPiArICAgICAgICBSZXN1bHQgPSBMTE9OR19NQVg7DQo+ID4gKyAgICAgIH0N Cj4gPiArICAgICAgTmVnYXRpdmUgPSBGQUxTRTsNCj4gPiArICAgICAgZXJybm8gPSBFUkFOR0U7 DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcEVuZCA9ICsrbnB0cjsN Cj4gPiArICB9DQo+ID4gKyAgaWYoTmVnYXRpdmUpIHsNCj4gPiArICAgIFJlc3VsdCA9IC1SZXN1 bHQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBTYXZlIHBvaW50ZXIgdG8gZmluYWwgc2Vx dWVuY2UNCj4gPiArICBpZihlbmRwdHIgIT0gTlVMTCkgew0KPiA+ICsgICAgKmVuZHB0ciA9IChj aGFyICopcEVuZDsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIFJlc3VsdDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoqIFRoZSBzdHJ0b2wsIHN0cnRvbGwsIHN0cnRvdWwsIGFuZCBzdHJ0b3VsbCBm dW5jdGlvbnMgY29udmVydCB0aGUgaW5pdGlhbA0KPiA+ICsgICAgcG9ydGlvbiBvZiB0aGUgc3Ry aW5nIHBvaW50ZWQgdG8gYnkgbnB0ciB0byBsb25nIGludCwgbG9uZyBsb25nIGludCwNCj4gPiAr ICAgIHVuc2lnbmVkIGxvbmcgaW50LCBhbmQgdW5zaWduZWQgbG9uZyBsb25nIGludCByZXByZXNl bnRhdGlvbiwNCj4gcmVzcGVjdGl2ZWx5Lg0KPiA+ICsgICAgRmlyc3QsIHRoZXkgZGVjb21wb3Nl IHRoZSBpbnB1dCBzdHJpbmcgaW50byB0aHJlZSBwYXJ0czogYW4gaW5pdGlhbCwNCj4gPiArICAg IHBvc3NpYmx5IGVtcHR5LCBzZXF1ZW5jZSBvZiB3aGl0ZS1zcGFjZSBjaGFyYWN0ZXJzIChhcyBz cGVjaWZpZWQgYnkNCj4gdGhlDQo+ID4gKyAgICBpc3NwYWNlIGZ1bmN0aW9uKSwgYSBzdWJqZWN0 IHNlcXVlbmNlIHJlc2VtYmxpbmcgYW4gaW50ZWdlcg0KPiByZXByZXNlbnRlZCBpbg0KPiA+ICsg ICAgc29tZSByYWRpeCBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiBiYXNlLCBhbmQgYSBmaW5h bCBzdHJpbmcgb2Ygb25lIG9yDQo+ID4gKyAgICBtb3JlIHVucmVjb2duaXplZCBjaGFyYWN0ZXJz LCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyDQo+IG9mDQo+ID4gKyAg ICB0aGUgaW5wdXQgc3RyaW5nLiBUaGVuLCB0aGV5IGF0dGVtcHQgdG8gY29udmVydCB0aGUgc3Vi amVjdCBzZXF1ZW5jZSB0bw0KPiBhbg0KPiA+ICsgICAgaW50ZWdlciwgYW5kIHJldHVybiB0aGUg cmVzdWx0Lg0KPiA+ICsNCj4gPiArICAgIElmIHRoZSB2YWx1ZSBvZiBiYXNlIGlzIHplcm8sIHRo ZSBleHBlY3RlZCBmb3JtIG9mIHRoZSBzdWJqZWN0IHNlcXVlbmNlDQo+IGlzDQo+ID4gKyAgICB0 aGF0IG9mIGFuIGludGVnZXIgY29uc3RhbnQsIG9wdGlvbmFsbHkgcHJlY2VkZWQNCj4gPiArICAg IGJ5IGEgcGx1cyBvciBtaW51cyBzaWduLCBidXQgbm90IGluY2x1ZGluZyBhbiBpbnRlZ2VyIHN1 ZmZpeC4gSWYgdGhlIHZhbHVlDQo+ID4gKyAgICBvZiBiYXNlIGlzIGJldHdlZW4gMiBhbmQgMzYg KGluY2x1c2l2ZSksIHRoZSBleHBlY3RlZCBmb3JtIG9mIHRoZQ0KPiBzdWJqZWN0DQo+ID4gKyAg ICBzZXF1ZW5jZSBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgYW5kIGRpZ2l0cyByZXByZXNlbnRp bmcgYW4gaW50ZWdlcg0KPiB3aXRoDQo+ID4gKyAgICB0aGUgcmFkaXggc3BlY2lmaWVkIGJ5IGJh c2UsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYSBwbHVzIG9yIG1pbnVzIHNpZ24sDQo+ID4gKyAg ICBidXQgbm90IGluY2x1ZGluZyBhbiBpbnRlZ2VyIHN1ZmZpeC4gVGhlIGxldHRlcnMgZnJvbSBh IChvciBBKSB0aHJvdWdoIHoNCj4gPiArICAgIChvciBaKSBhcmUgYXNjcmliZWQgdGhlIHZhbHVl cyAxMCB0aHJvdWdoIDM1OyBvbmx5IGxldHRlcnMgYW5kIGRpZ2l0cw0KPiB3aG9zZQ0KPiA+ICsg ICAgYXNjcmliZWQgdmFsdWVzIGFyZSBsZXNzIHRoYW4gdGhhdCBvZiBiYXNlIGFyZSBwZXJtaXR0 ZWQuIElmIHRoZSB2YWx1ZSBvZg0KPiA+ICsgICAgYmFzZSBpcyAxNiwgdGhlIGNoYXJhY3RlcnMg MHggb3IgMFggbWF5IG9wdGlvbmFsbHkgcHJlY2VkZSB0aGUgc2VxdWVuY2UNCj4gb2YNCj4gPiAr ICAgIGxldHRlcnMgYW5kIGRpZ2l0cywgZm9sbG93aW5nIHRoZSBzaWduIGlmIHByZXNlbnQuDQo+ ID4gKw0KPiA+ICsgICAgVGhlIHN1YmplY3Qgc2VxdWVuY2UgaXMgZGVmaW5lZCBhcyB0aGUgbG9u Z2VzdCBpbml0aWFsIHN1YnNlcXVlbmNlIG9mDQo+IHRoZQ0KPiA+ICsgICAgaW5wdXQgc3RyaW5n LCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBub24td2hpdGUtc3BhY2UgY2hhcmFjdGVyLCB0aGF0 IGlzIG9mDQo+ID4gKyAgICB0aGUgZXhwZWN0ZWQgZm9ybS4gVGhlIHN1YmplY3Qgc2VxdWVuY2Ug Y29udGFpbnMgbm8gY2hhcmFjdGVycyBpZiB0aGUNCj4gaW5wdXQNCj4gPiArICAgIHN0cmluZyBp cyBlbXB0eSBvciBjb25zaXN0cyBlbnRpcmVseSBvZiB3aGl0ZSBzcGFjZSwgb3IgaWYgdGhlIGZp cnN0DQo+ID4gKyAgICBub24td2hpdGUtc3BhY2UgY2hhcmFjdGVyIGlzIG90aGVyIHRoYW4gYSBz aWduIG9yIGEgcGVybWlzc2libGUgbGV0dGVyIG9yDQo+IGRpZ2l0Lg0KPiA+ICsNCj4gPiArICAg IElmIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGhhcyB0aGUgZXhwZWN0ZWQgZm9ybSBhbmQgdGhlIHZh bHVlIG9mIGJhc2UgaXMNCj4gPiArICAgIHplcm8sIHRoZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJz IHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IGRpZ2l0IGlzDQo+ID4gKyAgICBpbnRlcnByZXRlZCBh cyBhbiBpbnRlZ2VyIGNvbnN0YW50LiBJZiB0aGUgc3ViamVjdCBzZXF1ZW5jZSBoYXMgdGhlDQo+ ID4gKyAgICBleHBlY3RlZCBmb3JtIGFuZCB0aGUgdmFsdWUgb2YgYmFzZSBpcyBiZXR3ZWVuIDIg YW5kIDM2LCBpdCBpcyB1c2VkIGFzDQo+IHRoZQ0KPiA+ICsgICAgYmFzZSBmb3IgY29udmVyc2lv biwgYXNjcmliaW5nIHRvIGVhY2ggbGV0dGVyIGl0cyB2YWx1ZSBhcyBnaXZlbiBhYm92ZS4gSWYN Cj4gPiArICAgIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGJlZ2lucyB3aXRoIGEgbWludXMgc2lnbiwg dGhlIHZhbHVlIHJlc3VsdGluZyBmcm9tDQo+IHRoZQ0KPiA+ICsgICAgY29udmVyc2lvbiBpcyBu ZWdhdGVkIChpbiB0aGUgcmV0dXJuIHR5cGUpLiBBIHBvaW50ZXIgdG8gdGhlIGZpbmFsIHN0cmlu Zw0KPiA+ICsgICAgaXMgc3RvcmVkIGluIHRoZSBvYmplY3QgcG9pbnRlZCB0byBieSBlbmRwdHIs IHByb3ZpZGVkIHRoYXQgZW5kcHRyIGlzDQo+ID4gKyAgICBub3QgYSBudWxsIHBvaW50ZXIuDQo+ ID4gKw0KPiA+ICsgICAgSW4gb3RoZXIgdGhhbiB0aGUgIkMiIGxvY2FsZSwgYWRkaXRpb25hbCBs b2NhbGUtc3BlY2lmaWMgc3ViamVjdCBzZXF1ZW5jZQ0KPiA+ICsgICAgZm9ybXMgbWF5IGJlIGFj Y2VwdGVkLg0KPiA+ICsNCj4gPiArICAgIElmIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGlzIGVtcHR5 IG9yIGRvZXMgbm90IGhhdmUgdGhlIGV4cGVjdGVkIGZvcm0sDQo+IG5vDQo+ID4gKyAgICBjb252 ZXJzaW9uIGlzIHBlcmZvcm1lZDsgdGhlIHZhbHVlIG9mIG5wdHIgaXMgc3RvcmVkIGluIHRoZSBv YmplY3QNCj4gcG9pbnRlZA0KPiA+ICsgICAgdG8gYnkgZW5kcHRyLCBwcm92aWRlZCB0aGF0IGVu ZHB0ciBpcyBub3QgYSBudWxsIHBvaW50ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gICBUaGUg c3RydG9sLCBzdHJ0b2xsLCBzdHJ0b3VsLCBhbmQgc3RydG91bGwgZnVuY3Rpb25zIHJldHVybiB0 aGUNCj4gPiArICAgICAgICAgICAgY29udmVydGVkIHZhbHVlLCBpZiBhbnkuIElmIG5vIGNvbnZl cnNpb24gY291bGQgYmUgcGVyZm9ybWVkLCB6ZXJvDQo+ID4gKyAgICAgICAgICAgIGlzIHJldHVy bmVkLiBJZiB0aGUgY29ycmVjdCB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZg0KPiA+ICsg ICAgICAgICAgICByZXByZXNlbnRhYmxlIHZhbHVlcywgTE9OR19NSU4sIExPTkdfTUFYLCBMTE9O R19NSU4sDQo+IExMT05HX01BWCwNCj4gPiArICAgICAgICAgICAgVUxPTkdfTUFYLCBvciBVTExP TkdfTUFYIGlzIHJldHVybmVkIChhY2NvcmRpbmcgdG8gdGhlIHJldHVybg0KPiB0eXBlDQo+ID4g KyAgICAgICAgICAgIGFuZCBzaWduIG9mIHRoZSB2YWx1ZSwgaWYgYW55KSwgYW5kIHRoZSB2YWx1 ZSBvZiB0aGUgbWFjcm8gRVJBTkdFDQo+ID4gKyAgICAgICAgICAgIGlzIHN0b3JlZCBpbiBlcnJu by4NCj4gPiArKiovDQo+ID4gK2xvbmcNCj4gPiArc3RydG9sKGNvbnN0IGNoYXIgKiBucHRyLCBj aGFyICoqIGVuZHB0ciwgaW50IGJhc2UpIHsNCj4gPiArICBjb25zdCBjaGFyICpwRW5kOw0KPiA+ ICsgIGxvbmcgICAgICAgIFJlc3VsdCA9IDA7DQo+ID4gKyAgbG9uZyAgICAgICAgUHJldmlvdXM7 DQo+ID4gKyAgaW50ICAgICAgICAgdGVtcDsNCj4gPiArICBCT09MRUFOICAgICBOZWdhdGl2ZSA9 IEZBTFNFOw0KPiA+ICsNCj4gPiArICBwRW5kID0gbnB0cjsNCj4gPiArDQo+ID4gKyAgaWYoKGJh c2UgPCAwKSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiA+ICsgICAgaWYoZW5k cHRyICE9IE5VTEwpIHsNCj4gPiArICAgICplbmRwdHIgPSBOVUxMOw0KPiA+ICsgICAgfQ0KPiA+ ICsgICAgcmV0dXJuIDA7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFjZXMu DQo+ID4gKyAgd2hpbGUoaXNzcGFjZSgqbnB0cikpICAgKytucHRyOw0KPiA+ICsNCj4gPiArICAv LyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsIHNpZ24gZm9sbG93ZWQgYnkgZGln aXRzLg0KPiA+ICsgIGlmKCpucHRyID09ICcrJykgew0KPiA+ICsgICAgTmVnYXRpdmUgPSBGQUxT RTsNCj4gPiArICAgICsrbnB0cjsNCj4gPiArICB9DQo+ID4gKyAgZWxzZSBpZigqbnB0ciA9PSAn LScpIHsNCj4gPiArICAgIE5lZ2F0aXZlID0gVFJVRTsNCj4gPiArICAgICsrbnB0cjsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIGlmKCpucHRyID09ICcwJykgeyAgLyogTWlnaHQgYmUgT2N0YWwg b3IgSGV4ICovDQo+ID4gKyAgICBpZih0b3VwcGVyKG5wdHJbMV0pID09ICdYJykgeyAgIC8qIExv b2tzIGxpa2UgSGV4ICovDQo+ID4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDE2 KSkgew0KPiA+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIwWCIgICAgICAqLw0K PiA+ICsgICAgICAgIGJhc2UgPSAxNjsgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAqLw0KPiA+ICsg ICAgICB9DQo+ID4gKyAgICB9DQo+ID4gKyAgICBlbHNlIHsgICAgLyogTG9va3MgbGlrZSBPY3Rh bCAqLw0KPiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSA4KSkgew0KPiA+ICsg ICAgICAgICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ID4gKyAgICAg ICAgYmFzZSA9IDg7ICAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICAgKi8NCj4gPiArICAgICAgfQ0K PiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArICBpZihiYXNlID09IDApIHsgICAvKiBJZiBzdGls bCB6ZXJvIHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ID4gKyAgICBiYXNlID0gMTA7DQo+ID4g KyAgfQ0KPiA+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gPiArICAgIGZvciggOyAqbnB0ciA9 PSAnMCc7ICsrbnB0cik7ICAvKiBTa2lwIGFueSByZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0K PiA+ICsgICAgcEVuZCA9IG5wdHI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICB3aGlsZSggaXNh bG51bSgqbnB0cikgJiYgKCh0ZW1wID0gRGlnaXQyVmFsKCpucHRyKSkgPCBiYXNlKSkgew0KPiA+ ICsgICAgUHJldmlvdXMgPSBSZXN1bHQ7DQo+ID4gKyAgICBSZXN1bHQgPSAoUmVzdWx0ICogYmFz ZSkgKyAobG9uZyBpbnQpdGVtcDsNCj4gPiArICAgIGlmKCBSZXN1bHQgPD0gUHJldmlvdXMpIHsg ICAvLyBEZXRlY3QgT3ZlcmZsb3cNCj4gPiArICAgICAgaWYoTmVnYXRpdmUpIHsNCj4gPiArICAg ICAgICBSZXN1bHQgPSBMT05HX01JTjsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBlbHNlIHsN Cj4gPiArICAgICAgICBSZXN1bHQgPSBMT05HX01BWDsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAg ICBOZWdhdGl2ZSA9IEZBTFNFOw0KPiA+ICsgICAgICBlcnJubyA9IEVSQU5HRTsNCj4gPiArICAg ICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBwRW5kID0gKytucHRyOw0KPiA+ICsgIH0N Cj4gPiArICBpZihOZWdhdGl2ZSkgew0KPiA+ICsgICAgUmVzdWx0ID0gLVJlc3VsdDsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIC8vIFNhdmUgcG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiA+ ICsgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ID4gKyAgICAqZW5kcHRyID0gKGNoYXIgKilwRW5k Ow0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gUmVzdWx0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KiogVGhlIHN0cnRvdWxsIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBpbml0aWFsIHBvcnRpb24gb2Yg dGhlIHN0cmluZyBwb2ludGVkDQo+IHRvDQo+ID4gKyAgICBieSBucHRyIHRvIHVuc2lnbmVkIGxv bmcgbG9uZyBpbnQgcmVwcmVzZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgICAgU2VlIHRoZSBkZXNj cmlwdGlvbiBmb3Igc3RydG9sIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KPiA+ICsNCj4gPiArICBA cmV0dXJuICAgVGhlIHN0cnRvdWxsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnZlcnRlZCB2YWx1 ZSwgaWYgYW55LiBJZiBubw0KPiA+ICsgICAgICAgICAgICBjb252ZXJzaW9uIGNvdWxkIGJlIHBl cmZvcm1lZCwgemVybyBpcyByZXR1cm5lZC4gSWYgdGhlIGNvcnJlY3QNCj4gPiArICAgICAgICAg ICAgdmFsdWUgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgcmVwcmVzZW50YWJsZSB2YWx1ZXMsIFVM TE9OR19NQVggaXMNCj4gPiArICAgICAgICAgICAgcmV0dXJuZWQgYW5kIHRoZSB2YWx1ZSBvZiB0 aGUgbWFjcm8gRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gPiArKiovDQo+ID4gK3Vuc2ln bmVkIGxvbmcgbG9uZw0KPiA+ICtzdHJ0b3VsbChjb25zdCBjaGFyICogbnB0ciwgY2hhciAqKiBl bmRwdHIsIGludCBiYXNlKSB7DQo+ID4gKyAgY29uc3QgY2hhciAgICAgICAgICAgKnBFbmQ7DQo+ ID4gKyAgdW5zaWduZWQgbG9uZyBsb25nICAgIFJlc3VsdCA9IDA7DQo+ID4gKyAgdW5zaWduZWQg bG9uZyBsb25nICAgIFByZXZpb3VzOw0KPiA+ICsgIGludCAgICAgICAgICAgICAgICAgICB0ZW1w Ow0KPiA+ICsNCj4gPiArICBwRW5kID0gbnB0cjsNCj4gPiArDQo+ID4gKyAgaWYoKGJhc2UgPCAw KSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiA+ICsgICAgaWYoZW5kcHRyICE9 IE5VTEwpIHsNCj4gPiArICAgICplbmRwdHIgPSBOVUxMOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAg cmV0dXJuIDA7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFjZXMuDQo+ID4g KyAgd2hpbGUoaXNzcGFjZSgqbnB0cikpICAgKytucHRyOw0KPiA+ICsNCj4gPiArICAvLyBQcm9j ZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsICsgc2lnbiBmb2xsb3dlZCBieSBkaWdpdHMu DQo+ID4gKyAgaWYoKm5wdHIgPT0gJysnKSB7DQo+ID4gKyAgICArK25wdHI7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICBpZigqbnB0ciA9PSAnMCcpIHsgIC8qIE1pZ2h0IGJlIE9jdGFsIG9yIEhl eCAqLw0KPiA+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9PSAnWCcpIHsgICAvKiBMb29rcyBs aWtlIEhleCAqLw0KPiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSAxNikpIHsN Cj4gPiArICAgICAgICBucHRyICs9IDI7ICAvKiBTa2lwIHRoZSAiMFgiICAgICAgKi8NCj4gPiAr ICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8NCj4gPiArICAgICAg fQ0KPiA+ICsgICAgfQ0KPiA+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2UgT2N0YWwgKi8N Cj4gPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0gOCkpIHsNCj4gPiArICAgICAg ICArK25wdHI7ICAgICAvKiBTa2lwIHRoZSBsZWFkaW5nICIwIiAqLw0KPiA+ICsgICAgICAgIGJh c2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ID4gKyAgICAgIH0NCj4gPiAr ICAgIH0NCj4gPiArICB9DQo+ID4gKyAgaWYoYmFzZSA9PSAwKSB7ICAgLyogSWYgc3RpbGwgemVy byB0aGVuIG11c3QgYmUgZGVjaW1hbCAqLw0KPiA+ICsgICAgYmFzZSA9IDEwOw0KPiA+ICsgIH0N Cj4gPiArICBpZigqbnB0ciAgPT0gJzAnKSB7DQo+ID4gKyAgICBmb3IoIDsgKm5wdHIgPT0gJzAn OyArK25wdHIpOyAgLyogU2tpcCBhbnkgcmVtYWluaW5nIGxlYWRpbmcgemVyb3MgKi8NCj4gPiAr ICAgIHBFbmQgPSBucHRyOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgd2hpbGUoIGlzYWxudW0o Km5wdHIpICYmICgodGVtcCA9IERpZ2l0MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsNCj4gPiArICAg IFByZXZpb3VzID0gUmVzdWx0Ow0KPiA+ICsgICAgUmVzdWx0ID0gRGl2VTY0eDMyIChSZXN1bHQs IGJhc2UpICsgKHVuc2lnbmVkIGxvbmcgbG9uZyl0ZW1wOw0KPiA+ICsgICAgaWYoIFJlc3VsdCA8 IFByZXZpb3VzKSAgeyAgIC8vIElmIHdlIG92ZXJmbG93ZWQNCj4gPiArICAgICAgUmVzdWx0ID0g VUxMT05HX01BWDsNCj4gPiArICAgICAgZXJybm8gPSBFUkFOR0U7DQo+ID4gKyAgICAgIGJyZWFr Ow0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcEVuZCA9ICsrbnB0cjsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgIC8vIFNhdmUgcG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiA+ICsgIGlmKGVuZHB0 ciAhPSBOVUxMKSB7DQo+ID4gKyAgICAqZW5kcHRyID0gKGNoYXIgKilwRW5kOw0KPiA+ICsgIH0N Cj4gPiArICByZXR1cm4gUmVzdWx0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBl ZGsyIEphbnNzb24gcG9ydCBkb2VzIG5vdCBzdXBwb3J0IGRvdWJsZXMsIHNpbXBseSByZXR1cm4g MC4NCj4gPiArDQo+ID4gKyAgVGhlc2UgY29udmVyc2lvbiBmdW5jdGlvbnMgY29udmVydCB0aGUg aW5pdGlhbCBwb3J0aW9uIG9mIHRoZQ0KPiA+ICsgc3RyaW5nICBwb2ludGVkIHRvIGJ5IG5wdHIg dG8gZG91YmxlLCBmbG9hdCwgYW5kIGxvbmcgZG91YmxlDQo+ID4gKyByZXByZXNlbnRhdGlvbiwg IHJlc3BlY3RpdmVseS4NCj4gPiArDQo+ID4gKyAgVGhlIHN0cnRvZCgpLCBzdHJ0b2YoKSwgYW5k IHN0cnRvbGQoKSBmdW5jdGlvbnMgcmV0dXJuIHRoZQ0KPiA+ICsgY29udmVydGVkICB2YWx1ZSwg aWYgYW55Lg0KPiA+ICsNCj4gPiArICBJZiBlbmRwdHIgaXMgbm90IE5VTEwsIGEgcG9pbnRlciB0 byB0aGUgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYXN0DQo+ID4gKyBjaGFyYWMtICB0ZXIgdXNlZCBp biB0aGUgY29udmVyc2lvbiBpcyBzdG9yZWQgaW4gdGhlIGxvY2F0aW9uDQo+ID4gKyByZWZlcmVu Y2VkIGJ5ICBlbmRwdHIuDQo+ID4gKw0KPiA+ICsgIElmIG5vIGNvbnZlcnNpb24gaXMgcGVyZm9y bWVkLCB6ZXJvIGlzIHJldHVybmVkIGFuZCB0aGUgdmFsdWUgb2YNCj4gPiArIG5wdHIgaXMgIHN0 b3JlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieSBlbmRwdHIuDQo+ID4gKw0KPiA+ICsg IElmIHRoZSBjb3JyZWN0IHZhbHVlIHdvdWxkIGNhdXNlIG92ZXJmbG93LCBwbHVzIG9yIG1pbnVz IEhVR0VfVkFMLA0KPiA+ICsgSFVHRV9WQUxGLCBvciBIVUdFX1ZBTEwgaXMgcmV0dXJuZWQgKGFj Y29yZGluZyB0byB0aGUgc2lnbiBhbmQgdHlwZQ0KPiA+ICsgb2YgIHRoZSByZXR1cm4gdmFsdWUp LCBhbmQgRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4gIElmIHRoZQ0KPiA+ICsgY29ycmVjdCB2 YWx1ZSAgd291bGQgY2F1c2UgdW5kZXJmbG93LCB6ZXJvIGlzIHJldHVybmVkIGFuZCBFUkFOR0Ug aXMNCj4gc3RvcmVkIGluIGVycm5vLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICBSZXR1cm4gMC4N Cj4gPiArKiovDQo+ID4gK2RvdWJsZQ0KPiA+ICtzdHJ0b2QgKGNvbnN0IGNoYXIgKiBfX3Jlc3Ry aWN0IG5wdHIsIGNoYXIgKiogX19yZXN0cmljdCBlbmRwdHIpIHsNCj4gPiArICAgIGlmKGVuZHB0 cikNCj4gPiArICAgICAgKmVuZHB0ciA9IChjaGFyICopKG5wdHIgKyBzdHJsZW4obnB0cikpOw0K PiA+ICsNCj4gPiArICAgIHJldHVybiAoZG91YmxlKTA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIEFsbG9jYXRlIGFuZCB6ZXJvLWluaXRpYWxpemUgYXJyYXkuDQo+ID4gKyoqLw0K PiA+ICt2b2lkICoNCj4gPiArY2FsbG9jKHNpemVfdCBOdW0sIHNpemVfdCBTaXplKQ0KPiA+ICt7 DQo+ID4gKyAgdm9pZCAgICAgICAqUmV0VmFsOw0KPiA+ICsgIHNpemVfdCAgICAgIE51bVNpemU7 DQo+ID4gKw0KPiA+ICsgIE51bVNpemUgPSBOdW0gKiBTaXplOw0KPiA+ICsgIFJldFZhbCAgPSBO VUxMOw0KPiA+ICsgIGlmIChOdW1TaXplICE9IDApIHsNCj4gPiArICBSZXRWYWwgPSBtYWxsb2Mo TnVtU2l6ZSk7DQo+ID4gKyAgaWYoIFJldFZhbCAhPSBOVUxMKSB7DQo+ID4gKyAgICAoVk9JRCla ZXJvTWVtKCBSZXRWYWwsIE51bVNpemUpOw0KPiA+ICsgIH0NCj4gPiArICB9DQo+ID4gKyAgREVC VUcoKERFQlVHX1BPT0wsICIweCVwID0gY2FsbG9jKCVkLCAlZClcbiIsIFJldFZhbCwgTnVtLCBT aXplKSk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBSZXRWYWw7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8vDQo+ID4gKy8vICBUaGUgYXJyYXlzIGdpdmUgdGhlIGN1bXVsYXRpdmUgbnVtYmVyIG9mIGRh eXMgdXAgdG8gdGhlIGZpcnN0IG9mDQo+ID4gK3RoZSAvLyAgbW9udGggbnVtYmVyIHVzZWQgYXMg dGhlIGluZGV4ICgxIC0+IDEyKSBmb3IgcmVndWxhciBhbmQgbGVhcA0KPiB5ZWFycy4NCj4gPiAr Ly8gIFRoZSB2YWx1ZSBhdCBpbmRleCAxMyBpcyBmb3IgdGhlIHdob2xlIHllYXIuDQo+ID4gKy8v DQo+ID4gK1VJTlROIEN1bXVsYXRpdmVEYXlzWzJdWzE0XSA9IHsNCj4gPiArICB7DQo+ID4gKyAg ICAwLA0KPiA+ICsgICAgMCwNCj4gPiArICAgIDMxLA0KPiA+ICsgICAgMzEgKyAyOCwNCj4gPiAr ICAgIDMxICsgMjggKyAzMSwNCj4gPiArICAgIDMxICsgMjggKyAzMSArIDMwLA0KPiA+ICsgICAg MzEgKyAyOCArIDMxICsgMzAgKyAzMSwNCj4gPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEg KyAzMCwNCj4gPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxLA0KPiA+ICsg ICAgMzEgKyAyOCArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSwNCj4gPiArICAgIDMxICsg MjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCwNCj4gPiArICAgIDMxICsgMjgg KyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxLA0KPiA+ICsgICAgMzEgKyAy OCArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCwNCj4gPiArICAg IDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxICsgMzAgKyAz MQ0KPiA+ICsgIH0sDQo+ID4gKyAgew0KPiA+ICsgICAgMCwNCj4gPiArICAgIDAsDQo+ID4gKyAg ICAzMSwNCj4gPiArICAgIDMxICsgMjksDQo+ID4gKyAgICAzMSArIDI5ICsgMzEsDQo+ID4gKyAg ICAzMSArIDI5ICsgMzEgKyAzMCwNCj4gPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEsDQo+ ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMxICsgMzAsDQo+ID4gKyAgICAzMSArIDI5ICsg MzEgKyAzMCArIDMxICsgMzAgKyAzMSwNCj4gPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEg KyAzMCArIDMxICsgMzEsDQo+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMxICsgMzAgKyAz MSArIDMxICsgMzAsDQo+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSAr IDMxICsgMzAgKyAzMSwNCj4gPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMx ICsgMzEgKyAzMCArIDMxICsgMzAsDQo+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMxICsg MzAgKyAzMSArIDMxICsgMzAgKyAzMSArIDMwICsgMzENCj4gPiArICB9DQo+ID4gK307DQo+ID4g Kw0KPiA+ICsjZGVmaW5lIElzTGVhcCh5KSAgICgoKHkpICUgNCkgPT0gMCAmJiAoKCh5KSAlIDEw MCkgIT0gMCB8fCAoKHkpICUgNDAwKSA9PSAwKSkNCj4gPiArI2RlZmluZSBTRUNTUEVSTUlOICAo NjApDQo+ID4gKyNkZWZpbmUgU0VDU1BFUkhPVVIgKDYwICogNjApDQo+ID4gKyNkZWZpbmUgU0VD U1BFUkRBWSAgKDI0ICogU0VDU1BFUkhPVVIpDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBHZXQg dGhlIHN5c3RlbSB0aW1lIGFzIHNlY29uZHMgZWxhcHNlZCBzaW5jZSBtaWRuaWdodCwgSmFudWFy eSAxLCAxOTcwLg0KPiA+ICsqKi8NCj4gPiArdGltZV90IHRpbWUgKHRpbWVfdCAqdGltZXIpDQo+ ID4gK3sNCj4gPiArICBFRklfVElNRSAgVGltZTsNCj4gPiArICB0aW1lX3QgICAgQ2FsVGltZTsN Cj4gPiArICBVSU5UTiAgICAgWWVhcjsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBHZXQg dGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSBpbmZvcm1hdGlvbiAgLy8gIGdSVC0+R2V0VGltZQ0K PiA+ICsgKCZUaW1lLCBOVUxMKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBZZWFycyBI YW5kbGluZw0KPiA+ICsgIC8vIFVUaW1lIHNob3VsZCBub3cgYmUgc2V0IHRvIDAwOjAwOjAwIG9u IEphbiAxIG9mIHRoZSBjdXJyZW50IHllYXIuDQo+ID4gKyAgLy8NCj4gPiArICBmb3IgKFllYXIg PSAxOTcwLCBDYWxUaW1lID0gMDsgWWVhciAhPSBUaW1lLlllYXI7IFllYXIrKykgew0KPiA+ICsg ICAgQ2FsVGltZSA9IENhbFRpbWUgKyAodGltZV90KShDdW11bGF0aXZlRGF5c1tJc0xlYXAoWWVh cildWzEzXSAqDQo+ID4gKyBTRUNTUEVSREFZKTsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiAr ICAvLyBBZGQgaW4gbnVtYmVyIG9mIHNlY29uZHMgZm9yIGN1cnJlbnQgTW9udGgsIERheSwgSG91 ciwgTWludXRlLA0KPiA+ICsgU2Vjb25kcywgYW5kIFRpbWVab25lIGFkanVzdG1lbnQgIC8vICBD YWxUaW1lID0gQ2FsVGltZSArDQo+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKChUaW1lLlRpbWVa b25lICE9IEVGSV9VTlNQRUNJRklFRF9USU1FWk9ORSkgPw0KPiAoVGltZS5UaW1lWm9uZSAqIDYw KSA6IDApICsNCj4gPiArICAgICAgICAgICAgKHRpbWVfdCkoQ3VtdWxhdGl2ZURheXNbSXNMZWFw KFRpbWUuWWVhcildW1RpbWUuTW9udGhdICoNCj4gU0VDU1BFUkRBWSkgKw0KPiA+ICsgICAgICAg ICAgICAodGltZV90KSgoKFRpbWUuRGF5ID4gMCkgPyBUaW1lLkRheSAtIDEgOiAwKSAqIFNFQ1NQ RVJEQVkpICsNCj4gPiArICAgICAgICAgICAgKHRpbWVfdCkoVGltZS5Ib3VyICogU0VDU1BFUkhP VVIpICsNCj4gPiArICAgICAgICAgICAgKHRpbWVfdCkoVGltZS5NaW51dGUgKiA2MCkgKw0KPiA+ ICsgICAgICAgICAgICAodGltZV90KVRpbWUuU2Vjb25kOw0KPiA+ICsNCj4gPiArICBpZiAodGlt ZXIgIT0gTlVMTCkgew0KPiA+ICsgICAgKnRpbWVyID0gQ2FsVGltZTsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIHJldHVybiBDYWxUaW1lOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt0eXBlZGVmDQo+ ID4gK2ludA0KPiA+ICsoKlNPUlRfQ09NUEFSRSkoDQo+ID4gKyAgSU4gIFZPSUQgICpCdWZmZXIx LA0KPiA+ICsgIElOICBWT0lEICAqQnVmZmVyMg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBEdXBsaWNhdGVkIGZyb20gRURLSUkgQmFzZVNvcnRMaWIgZm9yIHFzb3J0KCkgd3Jh cHBlcg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSBCdWZmZXJUb1NvcnQgICBvbiBjYWxsIGEgQnVm ZmVyIG9mIChwb3NzaWJseSBzb3J0ZWQpDQo+IGVsZW1lbnRzDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9uIHJldHVybiBhIGJ1ZmZlciBvZiBzb3J0ZWQgZWxlbWVudHMN Cj4gPiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBlbGVt ZW50cyBpbiB0aGUgYnVmZmVyIHRvIHNvcnQNCj4gPiArICBAcGFyYW1baW5dIEVsZW1lbnRTaXpl ICAgICAgICAgU2l6ZSBvZiBhbiBlbGVtZW50IGluIGJ5dGVzDQo+ID4gKyAgQHBhcmFtW2luXSBD b21wYXJlRnVuY3Rpb24gICAgIFRoZSBmdW5jdGlvbiB0byBjYWxsIHRvIHBlcmZvcm0gdGhlDQo+ IGNvbXBhcmlzb24NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYW55 IDIgZWxlbWVudHMNCj4gPiArICBAcGFyYW1baW5dIEJ1ZmZlciAgICAgICAgICAgICAgQnVmZmVy IG9mIHNpemUgRWxlbWVudFNpemUgZm9yIHVzZSBpbiBzd2FwcGluZw0KPiA+ICsqKi8NCj4gPiAr U1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArUXVpY2tTb3J0V29ya2VyICgNCj4gPiArICBJTiBPVVQg ICAgVk9JRCAgICAgICAgICAqQnVmZmVyVG9Tb3J0LA0KPiA+ICsgIElOIENPTlNUICBVSU5UTiAg ICAgICAgIENvdW50LA0KPiA+ICsgIElOIENPTlNUICBVSU5UTiAgICAgICAgIEVsZW1lbnRTaXpl LA0KPiA+ICsgIElOICAgICAgICBTT1JUX0NPTVBBUkUgIENvbXBhcmVGdW5jdGlvbiwNCj4gPiAr ICBJTiAgICAgICAgVk9JRCAgICAgICAgICAqQnVmZmVyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgVk9JRCAgICAgICAgKlBpdm90Ow0KPiA+ICsgIFVJTlROICAgICAgIExvb3BDb3VudDsNCj4g PiArICBVSU5UTiAgICAgICBOZXh0U3dhcExvY2F0aW9uOw0KPiA+ICsNCj4gPiArICBBU1NFUlQo QnVmZmVyVG9Tb3J0ICAgICE9IE5VTEwpOw0KPiA+ICsgIEFTU0VSVChDb21wYXJlRnVuY3Rpb24g IT0gTlVMTCk7DQo+ID4gKyAgQVNTRVJUKEJ1ZmZlciAgICAgICAgICAhPSBOVUxMKTsNCj4gPiAr DQo+ID4gKyAgaWYgKENvdW50IDwgMiB8fCBFbGVtZW50U2l6ZSAgPCAxKSB7DQo+ID4gKyAgICBy ZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBOZXh0U3dhcExvY2F0aW9uID0gMDsNCj4g PiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBQaWNrIGEgcGl2b3QgKHdlIGNob29zZSBsYXN0IGVs ZW1lbnQpICAvLyAgUGl2b3QgPSAoKFVJTlQ4DQo+ID4gKyAqKUJ1ZmZlclRvU29ydCArICgoQ291 bnQgLSAxKSAqIEVsZW1lbnRTaXplKSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTm93 IGdldCB0aGUgcGl2b3Qgc3VjaCB0aGF0IGFsbCBvbiAibGVmdCIgYXJlIGJlbG93IGl0ICAvLyBh bmQNCj4gPiArIGV2ZXJ5dGhpbmcgInJpZ2h0IiBhcmUgYWJvdmUgaXQgIC8vICBmb3IgKExvb3BD b3VudCA9IDA7IExvb3BDb3VudCA8DQo+ID4gKyBDb3VudCAtIDE7ICBMb29wQ291bnQrKykgIHsN Cj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBsZXNzIHRoYW4gdGhl IHBpdm90DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgaWYgKENvbXBhcmVGdW5jdGlvbiAoKFZPSUQg KikoKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKChMb29wQ291bnQpICoNCj4gRWxlbWVudFNpemUp KSwgUGl2b3QpIDw9IDApIHsNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gU3dhcA0KPiA+ ICsgICAgICAvLw0KPiA+ICsgICAgICBDb3B5TWVtIChCdWZmZXIsIChVSU5UOCAqKUJ1ZmZlclRv U29ydCArIChOZXh0U3dhcExvY2F0aW9uICoNCj4gRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7 DQo+ID4gKyAgICAgIENvcHlNZW0gKChVSU5UOCAqKUJ1ZmZlclRvU29ydCArIChOZXh0U3dhcExv Y2F0aW9uICoNCj4gPiArIEVsZW1lbnRTaXplKSwgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKChM b29wQ291bnQpICoNCj4gPiBFbGVtZW50U2l6ZSksIEVsZW1lbnRTaXplKTsNCj4gPiArICAgICAg Q29weU1lbSAoKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKChMb29wQ291bnQpICogRWxlbWVudFNp emUpLA0KPiA+ICsgQnVmZmVyLCBFbGVtZW50U2l6ZSk7DQo+ID4gKw0KPiA+ICsgICAgICAvLw0K PiA+ICsgICAgICAvLyBJbmNyZW1lbnQgTmV4dFN3YXBMb2NhdGlvbg0KPiA+ICsgICAgICAvLw0K PiA+ICsgICAgICBOZXh0U3dhcExvY2F0aW9uKys7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gU3dhcCBwaXZvdCB0byBpdCdzIGZpbmFsIHBvc2l0aW9uIChOZXh0 U3dhcExvY2FpdG9uKSAgLy8NCj4gPiArIENvcHlNZW0gKEJ1ZmZlciwgUGl2b3QsIEVsZW1lbnRT aXplKTsgIENvcHlNZW0gKFBpdm90LCAoVUlOVDgNCj4gPiArICopQnVmZmVyVG9Tb3J0ICsgKE5l eHRTd2FwTG9jYXRpb24gKiBFbGVtZW50U2l6ZSksIEVsZW1lbnRTaXplKTsNCj4gPiArIENvcHlN ZW0gKChVSU5UOCAqKUJ1ZmZlclRvU29ydCArIChOZXh0U3dhcExvY2F0aW9uICogRWxlbWVudFNp emUpLA0KPiA+ICsgQnVmZmVyLCBFbGVtZW50U2l6ZSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gTm93IHJlY3Vyc2Ugb24gMiBwYXJpdGlhbCBsaXN0cy4gIE5laXRoZXIgb2YgdGhlc2Ug d2lsbCBoYXZlIHRoZSAncGl2b3QnDQo+IGVsZW1lbnQuDQo+ID4gKyAgLy8gSUUgbGlzdCBpcyBz b3J0ZWQgbGVmdCBoYWxmLCBwaXZvdCBlbGVtZW50LCBzb3J0ZWQgcmlnaHQgaGFsZi4uLg0KPiA+ ICsgIC8vDQo+ID4gKyAgUXVpY2tTb3J0V29ya2VyICgNCj4gPiArICAgIEJ1ZmZlclRvU29ydCwN Cj4gPiArICAgIE5leHRTd2FwTG9jYXRpb24sDQo+ID4gKyAgICBFbGVtZW50U2l6ZSwNCj4gPiAr ICAgIENvbXBhcmVGdW5jdGlvbiwNCj4gPiArICAgIEJ1ZmZlcg0KPiA+ICsgICAgKTsNCj4gPiAr DQo+ID4gKyAgUXVpY2tTb3J0V29ya2VyICgNCj4gPiArICAgIChVSU5UOCAqKUJ1ZmZlclRvU29y dCArIChOZXh0U3dhcExvY2F0aW9uICsgMSkgKiBFbGVtZW50U2l6ZSwNCj4gPiArICAgIENvdW50 IC0gTmV4dFN3YXBMb2NhdGlvbiAtIDEsDQo+ID4gKyAgICBFbGVtZW50U2l6ZSwNCj4gPiArICAg IENvbXBhcmVGdW5jdGlvbiwNCj4gPiArICAgIEJ1ZmZlcg0KPiA+ICsgICAgKTsNCj4gPiArDQo+ ID4gKyAgcmV0dXJuOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZXJmb3JtcyBh IHF1aWNrIHNvcnQNCj4gPiArKiovDQo+ID4gK3ZvaWQgcXNvcnQgKHZvaWQgKmJhc2UsIHNpemVf dCBudW0sIHNpemVfdCB3aWR0aCwgaW50DQo+ID4gKygqY29tcGFyZSkoY29uc3Qgdm9pZCAqLCBj b25zdCB2b2lkICopKSB7DQo+ID4gKyAgVk9JRCAgKkJ1ZmZlcjsNCj4gPiArDQo+ID4gKyAgQVNT RVJUIChiYXNlICAgICE9IE5VTEwpOw0KPiA+ICsgIEFTU0VSVCAoY29tcGFyZSAhPSBOVUxMKTsN Cj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBVc2UgQ1JULXN0eWxlIG1hbGxvYyB0byBjb3Zl ciBCUyBhbmQgUlQgbWVtb3J5IGFsbG9jYXRpb24uDQo+ID4gKyAgLy8NCj4gPiArICBCdWZmZXIg PSBtYWxsb2MgKHdpZHRoKTsNCj4gPiArICBBU1NFUlQgKEJ1ZmZlciAhPSBOVUxMKTsNCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBSZS11c2UgUGVyZm9ybVF1aWNrU29ydCgpIGZ1bmN0aW9u IEltcGxlbWVudGF0aW9uIGluIEVES0lJDQo+IEJhc2VTb3J0TGliLg0KPiA+ICsgIC8vDQo+ID4g KyAgUXVpY2tTb3J0V29ya2VyIChiYXNlLCAoVUlOVE4pbnVtLCAoVUlOVE4pd2lkdGgsDQo+ID4g KyAoU09SVF9DT01QQVJFKWNvbXBhcmUsIEJ1ZmZlcik7DQo+ID4gKw0KPiA+ICsgIGZyZWUgKEJ1 ZmZlcik7DQo+ID4gKyAgcmV0dXJuOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBH ZXQgY2hhcmFjdGVyIGZyb20gc3RyZWFtLCB3ZSBkb24ndCBzdXBwb3J0IGZpbGUgb3BlcmFzdGlv biBvbiBlZGsyDQo+IEpTT04gbGlicmFyeS4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBSZXR1cm5z IHRoZSBjaGFyYWN0ZXIgY3VycmVudGx5IHBvaW50ZWQgYnkgdGhlIGludGVybmFsDQo+ID4gKyBm aWxlIHBvc2l0aW9uIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWVkIHN0cmVhbQ0KPiA+ICsNCj4g PiArKiovDQo+ID4gK2ludCBmZ2V0YyhGSUxFICogX0ZpbGUpew0KPiA+ICsgICByZXR1cm4gMDsN Cj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExp Yi5pbmYNCj4gPiBiL1JlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmluZg0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uYjUxNDgxN2NmNA0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExp Yi5pbmYNCj4gPiBAQCAtMCwwICsxLDM3IEBADQo+ID4gKyMjIEBmaWxlDQo+ID4gKyMgRURLMiBD IFJ1bnRpbWUgTGlicmFyeSBmb3Igb3BlbnNvdXJjZSBwcm9qZWN0Lg0KPiA+ICsjDQo+ID4gKyMg Q29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+ICMNCj4gPiArKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnBy aXNlIERldmVsb3BtZW50IExQPEJSPiAjDQo+ID4gKyMgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArIw0KPiA+ICsjIw0KPiA+ICsNCj4gPiArW0Rl ZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAx Yg0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IENydExpYg0KPiA+ICsg IEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDgyNjNCOEFDLUQwMjEtNDI1RC1CMzM3 LTNFQzk2RjVEQzE5Qg0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IERY RV9EUklWRVINCj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4g PiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBDcnRMaWJ8RFhFX0NPUkUgRFhF X0RSSVZFUg0KPiBEWEVfUlVOVElNRV9EUklWRVIgRFhFX1NNTV9EUklWRVIgVUVGSV9BUFBMSUNB VElPTg0KPiA+IFVFRklfRFJJVkVSDQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgIFZBTElEX0FSQ0hJ VEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgQVJNIEFBUkNINjQgUklTQ1Y2NA0KPiA+ICsj DQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4gPiArICBDcnRMaWIuYw0KPiA+ICsNCj4gPiArW0xp YnJhcnlDbGFzc2VzXQ0KPiA+ICsgIEJhc2VMaWINCj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIE1l bW9yeUFsbG9jYXRpb25MaWINCj4gPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4g PiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKyAgUmVkZmlzaFBrZy9SZWRmaXNoUGtn LmRlYw0KPiA+ICsNCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvUmVkZmlzaExp YnMuZHNjLmluYw0KPiA+IGIvUmVkZmlzaFBrZy9SZWRmaXNoTGlicy5kc2MuaW5jIGluZGV4IGQ0 YzA4ZTE4YWMuLjJhOTUxYmQ4ZmEgMTAwNjQ0DQo+ID4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNo TGlicy5kc2MuaW5jDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoTGlicy5kc2MuaW5jDQo+ ID4gQEAgLTEyLDUgKzEyLDYgQEANCj4gPiAgIyMNCj4gPiAgIWlmICQoUkVERklTSF9FTkFCTEUp ID09IFRSVUUNCj4gPiAgICBVY3MyVXRmOExpYnxSZWRmaXNoUGtnL0xpYnJhcnkvQmFzZVVjczJV dGY4TGliL0Jhc2VVY3MyVXRmOExpYi5pbmYNCj4gPiArICBDcnRMaWJ8UmVkZmlzaFBrZy9MaWJy YXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ID4gICFlbmRpZg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1sDQo+ID4gYi9SZWRmaXNoUGtnL1JlZGZpc2hQ a2cuY2kueWFtbCBpbmRleCAyMGMyOTdhZDIyLi45ODk1ZmRhYzk5IDEwMDY0NA0KPiA+IC0tLSBh L1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1sDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRm aXNoUGtnLmNpLnlhbWwNCj4gPiBAQCAtMTcsNiArMTcsMjUgQEANCj4gPiAgICAgICAgICBdLA0K PiA+ICAgICAgICAgICMjIEJvdGggZmlsZSBwYXRoIGFuZCBkaXJlY3RvcnkgcGF0aCBhcmUgYWNj ZXB0ZWQuDQo+ID4gICAgICAgICAgIklnbm9yZUZpbGVzIjogWw0KPiA+ICsgICAgICAgICAgICAj IyBCZWxvdyBhcmUgZmlsZXMgaW5jb3Jwb3JhdGVkIHdpdGggb3BlbiBzb3VyY2Ugd2hpY2ggYXJl DQo+ID4gKyAgICAgICAgICAgICMjIG5vdCBlZGsyIGNvZGluZyBzdGFuZGFyZCBjb21wbGlhbnQu DQo+ID4gKyAgICAgICAgICAgICMjDQo+ID4gKyAgICAgICAgICAgICMjIEVESzIgQ1JUIGxpYnJh cnkgd2hpY2ggaXMgbm90IGVkazIgY29kaW5nDQo+ID4gKyAgICAgICAgICAgICMjIHN0YW5kYXJk IGNvbXBsaWFudC4NCj4gPiArICAgICAgICAgICAgIyMgQyBydW50aW1lIGxpYnJhcnkgZm9yIEVE S0lJIEpzb25MaWIuDQo+ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9zeXMiLA0KPiA+ICsg ICAgICAgICAgICAiSW5jbHVkZS9DcnQvYXNzZXJ0LmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5j bHVkZS9DcnQvZXJybm8uaCIsDQo+ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9saW1pdHMu aCIsDQo+ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9tYXRoLmgiLA0KPiA+ICsgICAgICAg ICAgICAiSW5jbHVkZS9DcnQvc3RkYXJnLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9D cnQvc3RkZGVmLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3RkaW8uaCIsDQo+ ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9zdGRsaWIuaCIsDQo+ID4gKyAgICAgICAgICAg ICJJbmNsdWRlL0NydC9zdHJpbmcuaCIsDQo+ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC90 aW1lLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oIiwNCj4g PiArICAgICAgICAgICAgIkxpYnJhcnkvQ3J0TGliL0NydExpYi5jIg0KPiA+ICAgICAgICAgIF0N Cj4gPiAgICAgIH0sDQo+ID4gICAgICAiQ29tcGlsZXJQbHVnaW4iOiB7DQo+ID4gZGlmZiAtLWdp dCBhL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMgYi9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVj DQo+ID4gaW5kZXggYWVjYzFmNGEzYS4uMjE0MmI0MzY0MCAxMDA2NDQNCj4gPiAtLS0gYS9SZWRm aXNoUGtnL1JlZGZpc2hQa2cuZGVjDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRl Yw0KPiA+IEBAIC0xNSwxNiArMTUsMjQgQEANCj4gPg0KPiA+ICBbSW5jbHVkZXNdDQo+ID4gICAg SW5jbHVkZQ0KPiA+ICsgIEluY2x1ZGUvQ3J0ICAgICAgICAgICAgICAgICAgICMgSGVhZGVyIGZp bGVzIGZvciBDIFJUTC4NCj4gPg0KPiA+ICBbTGlicmFyeUNsYXNzZXNdDQo+ID4gICAgIyMgIEBs aWJyYXJ5Y2xhc3MgUGxhdGZvcm0gUmVkZmlzaCBIb3N0IEludGVyZmFjZSBMaWJyYXJ5DQo+ID4g ICAgIyAgIFBsYXRmb3JtIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIFJlZGZpc2ggSG9zdCBJbnRl cmZhY2UuDQo+ID4NCj4gPiBSZWRmaXNoUGxhdGZvcm1Ib3N0SW50ZXJmYWNlTGlifEluY2x1ZGUv TGlicmFyeS9SZWRmaXNoSG9zdEludGVyZmFjZUxpDQo+ID4gYi5oDQo+ID4gKw0KPiA+ICAgICMj ICBAbGlicmFyeWNsYXNzICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgVUNTMiB0byBVVEY4IG1hbmlw dWxhdGlvbg0KPiA+ICAgICMgICBmdW5jdGlvbnMuDQo+ID4gICAgIw0KPiA+ICAgIFVjczJVdGY4 TGlifEluY2x1ZGUvTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIuaA0KPiA+DQo+ID4gKyAgIyMgIEBs aWJyYXJ5Y2xhc3MgIFByb3ZpZGVzIHRoZSBDIHJ1bnRpbWUgbGlicmFyeSBmdW5jdGlvbnMNCj4g PiArICAjICAgQ1JUIGxpYnJhcnkgaXMgY3VycmVudGx5IHVzZWQgYnkgZWRrMiBKc29uTGliIChv cGVuIHNvdXJjZQ0KPiA+ICsgICMgICBqYW5zc29uIHByb2plY3QpIGFuZCBlZGsyIFJlZGZpc2hM aWIgKGxpYnJlZGZpc2ggb3BlbiBzb3VyY2UNCj4gPiArICAjICAgcHJvamVjdCkuDQo+ID4gKyAg Q3J0TGlifEluY2x1ZGUvTGlicmFyeS9DcnRMaWIuaA0KPiA+ICsNCj4gPiAgW1Byb3RvY29sc10N Cj4gPiAgICAjIyBJbmNsdWRlL1Byb3RvY29sL1JlZGZpc2hEaXNjb3Zlci5oDQo+ID4gICAgZ0Vm aVJlZGZpc2hEaXNjb3ZlclByb3RvY29sR3VpZCAgICAgID0geyAweDVkYjEyNTA5LCAweDQ1NTAs IDB4NDM0NywgeyAweDk2LA0KPiAweGIzLCAweDczLCAweGMwLCAweGZmLCAweDZlLCAweDg2LCAw eDlmDQo+ID4gfX0NCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRzYyBi L1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2MNCj4gPiBpbmRleCAzNjM5YjYyMGU2Li5hYTFjY2Q1 YTk1IDEwMDY0NA0KPiA+IC0tLSBhL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2MNCj4gPiArKysg Yi9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjDQo+ID4gQEAgLTQ4LDUgKzQ4LDYgQEANCj4gPiAg W0NvbXBvbmVudHNdDQo+ID4NCj4gUmVkZmlzaFBrZy9MaWJyYXJ5L1BsYXRmb3JtSG9zdEludGVy ZmFjZUxpYk51bGwvUGxhdGZvcm1Ib3N0SW50ZXJmYWNlTGliTg0KPiB1bGwuaW5mDQo+ID4gICAg UmVkZmlzaFBrZy9MaWJyYXJ5L0Jhc2VVY3MyVXRmOExpYi9CYXNlVWNzMlV0ZjhMaWIuaW5mDQo+ ID4gKyAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ID4NCj4gPiAgICAh aW5jbHVkZSBSZWRmaXNoUGtnL1JlZGZpc2guZHNjLmluYw0KPiA+IC0tDQo+ID4gMi4xNy4xDQo+ ID4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCg0K