From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.37924.1607965608377490090 for ; Mon, 14 Dec 2020 09:06:49 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=c++cKH//; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: QN3QUGdh0qtrStFt4V03n5p6IC0THjWd14Qy8aMGQm0nDfsxUH1CAdidHvCUAt3UAehdirEIK+ KGixH/skPWbg== X-IronPort-AV: E=McAfee;i="6000,8403,9834"; a="174885616" X-IronPort-AV: E=Sophos;i="5.78,420,1599548400"; d="scan'208";a="174885616" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2020 09:06:47 -0800 IronPort-SDR: k88J27LgyrfqXhpeLQ34XfmxyDTuKuPdSQE58LmYZy4LZhWdkhccMyaFb8evHA7VDzYhT3DZCV uG9S1wrKt73Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,420,1599548400"; d="scan'208";a="336202766" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga003.jf.intel.com with ESMTP; 14 Dec 2020 09:06:46 -0800 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 14 Dec 2020 09:06:45 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 14 Dec 2020 09:06:45 -0800 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.44) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 14 Dec 2020 09:06:45 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A2YCLMT4y/0VKOCWb5nCv0cvQbhOAZ0o9h8FhFzH/wC/mdKrvZBmSIBB+L/HgCLxemhHkJnYiOWHa5j0yoGMHZb6akpRvPQPvUu45CMlLLmg1J8bsjRBIbAgOvqqd0LXV7k3JtRhChRuWlBRTAnTJDY+WyaAJ8lwsDmmXhRGTePHEAZatQALr54iNz1KRHqGfQAkGtE7IrR5b/g2C1dTlf3G7gHb9Y1atadtACRF2IfmcegDlQKYCJKQs+5/BICxf0DwAeLrQrHBxEyONj64bFWCq/YtzTUoxMhhsuvARkvNw3aDZL+lriQkf83LTzE+Qh9Es0zuNi3Oo9aPBj3igA== 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=xciX1cxrI8sHN9QdHq82QU+dCiJgy6QdVrBP1WnEKXc=; b=F8+KYCDGij9c6uTPJILfBeY02ja+g3EqfVHz6OP6xpThBh2qWTpMRSxIpfnZHzblXRdjFX1xVEu3UNLYxZFIBgnTV2PgF3+2viV7r+t0kDdWh3xa/OItjIgewicHpDXDiEg56rRkVxRGIL9j65SCnwsaRMss4PTuTtCW9By0ZZj+hdy/byvbOOUN1iP+QZgKLJBj0WfnagLBYlXmgiY9laYbw6XCwFk1ASFYUgPUAv41/HuLARi3h5s6R6XNllxiCcDdkF7ku+NJ+x948LOOjxsuQpsoYjIdC1bs7RR9vcrdbA4tfAJgw4k61LNYZKRV1MqboUKYAJU6Mjel5qdsNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xciX1cxrI8sHN9QdHq82QU+dCiJgy6QdVrBP1WnEKXc=; b=c++cKH//YIu5u7pVowg9Uurt/7LjwD7brBwPDuXnh6xpamiXgtK8zKuidVumpw1qEwr6o3APYlqXvxYyGW7oFvWWkyitC+QorI5jRWLTDGOSpje4T2wmmaBnLagwUDmp1xWkqaRJ7uduVEU+zcEoVsHnCVEBZxd/c8eI8mrtfO4= Received: from BL0PR11MB3236.namprd11.prod.outlook.com (2603:10b6:208:60::18) by BL0PR11MB3395.namprd11.prod.outlook.com (2603:10b6:208:6c::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.21; Mon, 14 Dec 2020 17:06:43 +0000 Received: from BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::dcf8:f2f2:db7c:1cec]) by BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::dcf8:f2f2:db7c:1cec%7]) with mapi id 15.20.3654.025; Mon, 14 Dec 2020 17:06:43 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "abner.chang@hpe.com" , "Kinney, Michael D" CC: Leif Lindholm , Nickle Wang , Peter O'Hanley 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: AQHW0jOnCVnLFzoXRkG3ZBb2k8r8t6n20fOA Date: Mon, 14 Dec 2020 17:06:43 +0000 Message-ID: References: <20201214035321.17000-1-abner.chang@hpe.com> <20201214035321.17000-4-abner.chang@hpe.com> In-Reply-To: <20201214035321.17000-4-abner.chang@hpe.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5a553afd-f96d-4afb-2e7b-08d8a052a207 x-ms-traffictypediagnostic: BL0PR11MB3395: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: d4JION0/w6mnNWPbiy53rXt3VzZXqABE+nG5o3WVchYTiyPgtSRuOxSbLm+6snvoBHKa6SUqLLP9w9KxMTXIw2SHY5V87BC8PRD+ZvXZ97s5Wnnzl8HfiFOJojEBwZFvkyroVo2yTtg3F/lxdI74VVjj3byca182QEGkfyzEEg3l2IqcEtEH4aUPlfvOhSgBEFVmNxUnBu7lKUh3uveR+aRWcjq9AXToEiaogFudzFqxGD3a2CJABVhjRYXjgcN7yf2EQjqVEI5cCwyArC8LAvEfZgncbb1ge+PQJL/sRXRTtwXSi+iLUSfHieLF03pBkklwhZgURy8ksUhHQDIKp12/0u8N0DQJO0ZHxweTtS/UICfzgsjn8nlklg3J5E5/ieH2/VGYC4QJznHgAzDZ1awlXUjn+5dHvDtYLYUR+Fd1TkW988w9YS5QosVQv2sA89/N9a6XLEww682gtE2XUEJaMdnPf/p/xQsp8PN1I6E= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR11MB3236.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(136003)(376002)(366004)(5660300002)(76116006)(2906002)(966005)(66476007)(66446008)(66556008)(66946007)(110136005)(86362001)(30864003)(64756008)(55016002)(54906003)(186003)(508600001)(4326008)(8676002)(26005)(33656002)(71200400001)(8936002)(6506007)(53546011)(9686003)(83380400001)(7696005)(52536014)(461764006)(21314003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?NlBQck9DOW9CUnRQaXgrem5tZUxPYkdBMVFmNzNua2d1R042QWg1UTZWUGZt?= =?utf-8?B?TGw0bG1ndlN1c28vTmFjalpuUlVxVHcxZ0hGbnVpSUNlZFhkeHRJZUtEaW04?= =?utf-8?B?M2k4ck9YRW9NekJELytHRERHU0pUSm4rQmFHUURZQUIzalVOQ3F2OW0yQW9h?= =?utf-8?B?MDFlcnJnRmcyRTBUMFB4ZEszeWpUR1REbTdGeXBsbjg1S2ljQVArM0krNXFo?= =?utf-8?B?WTB3Wmh5MDJNdHFyVTRLRmd0OEZLc2tQZWFHQXU3TnVyNFlhNGNDQjdkdTlV?= =?utf-8?B?L2ZQQjljNFJIaFBDb25ENzBIeGFSd0paaEgydnNEMTVNVWNwN1MwcFcyUFZ5?= =?utf-8?B?RnJUY0QyQUpFc0FtK1hlVjVwNy95UTRQWTkrVmhDNzZoTFpHVHRrRFBiQnl4?= =?utf-8?B?dTl4UVJMU01Lb3UxSGwzWmFKdHFkMmhwanJSSVlrN1ZRcGs2UkthN2RabHRD?= =?utf-8?B?MStNL2dqTXlqRU5aL3F3U29Ja1NnQmJkUHY3cURienVtdGtOTTZnZE16MHVw?= =?utf-8?B?dWprd2ZUTnk3YUFEakcwOXdScUdMMk56U25UZmpjc3hBelVLYmhCRlkybTN2?= =?utf-8?B?WVYxb0RuRHNsa0YxTFIwUDJjL0tDVmNQNm0zSXNsMHFDeU8wQXUxQThkSnAr?= =?utf-8?B?SFpTc2ZTZHpTL3E3d0I2Uk56QlhYY3g1SE5XR0l6YjRqNUFlR1FobnorK3NW?= =?utf-8?B?UU5XV2FRYUxXVUZPM2xncmkxNENTdTgxbnVBeC9LUUJFSEdtNmxXdmFQZUJ1?= =?utf-8?B?cmtrQWxiemc4b2paUmt1VUcxL2I4QW5HeEpzelBDN1Nqd0dCWXlPbVhSclRt?= =?utf-8?B?S2JrY0RjdUxQbzJUaEtwRkJoRlhzaUJkRHNGWlBqdC9lejh4VXpYc2R4MkJS?= =?utf-8?B?eWZrYkZ0UGhDZWhmbGJwVU9kRmthRk9ZVnFBNEJHZm85eEU1bkZKVXp6SFdW?= =?utf-8?B?TWo3cVVib0NsUmZjT2FMUTZVNlFrNytJRGZPa1RiRllyMExYazNvbEJqQVRD?= =?utf-8?B?Y3JZVTc2ZXhKWlBxT3N5NFZCdDI1bmhUR2lJNGdvY0RRTmpvUzlscjZEYUtV?= =?utf-8?B?dkpvYVdFNW14VlhES2hkUVBkK2VDVHZtQXRCeWVqc0tqdHpZSTR3eEtYbTJS?= =?utf-8?B?NGFWSEZRWlN0bnhMbEZDdVozejByYWQ3dmlOOHh0eDVpYllmOU0zM09KRzFZ?= =?utf-8?B?c2ZOQWp3WWxhTkU3a2ZBR2hLN1UzT2w0YmpOYkNOaXZpRjVsZVJwdUpRRkhB?= =?utf-8?B?TFJnVk0wRGx1anNqb1prNFF1MFViOUh0SFdDSXUrL1JwTEkwQ1I4RnBXMWxs?= =?utf-8?Q?BZAQ/RC9yhrYA=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL0PR11MB3236.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a553afd-f96d-4afb-2e7b-08d8a052a207 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Dec 2020 17:06:43.6688 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: U0OSFl5IsCbS8nKUkDzZHvfu4w7u/QJOnZZwOQ2Yvu2DNgdDGW4wYY2SkknIYa2dHRUUccjedxGOOMfFJQtPihInRvlTRnVHeewTiZQbOMM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3395 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SWYgQ3J0TGliIGlzIGEgY3VzdG9tIGxpYnJhcnkgdG8gc3VwcG9ydCB1c2Ugb2YgIGphbnNzb24s IHRoZW4gaXQgc2hvdWxkIGdvIGludG8NCmEgcHJpdmF0ZSBpbmNsdWRlIGRpcmVjdG9yeSBpbiBS ZWRGaXNoUGtnLCBub3QgdGhlIHB1YmxpYyBpbmNsdWRlIGRpcmVjdG9yeS4NCg0KVGhlIG9ubHkg aW5jbHVkZSBmaWxlcyB0aGF0IHNob3VsZCBnbyBpbnRvIHRoZSBwdWJsaWMgaW5jbHVkZSBkaXJl Y3Rvcnkgb2YgDQphIHBhY2thZ2UgYXJlIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgYXZhaWxhYmxl IHRvIG1vZHVsZXMvbGlicyBpbXBsZW1lbnRlZA0Kb3V0c2lkZSB0aGUgUmVkRmlzaFBrZy4gIFBs ZWFzZSByZXZpZXcgYWxsIHRoZSBpbmNsdWRlIGZpbGVzIGluIFJlZEZpc2hQa2cNCndpdGggdGhp cyBpbiBtaW5kLg0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYg T2YgQWJuZXIgQ2hhbmcNCj4gU2VudDogU3VuZGF5LCBEZWNlbWJlciAxMywgMjAyMCA3OjUzIFBN DQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBu dXZpYWluYy5jb20+OyBOaWNrbGUgV2FuZyA8bmlja2xlLndhbmdAaHBlLmNvbT47IFBldGVyIE8n SGFubGV5IDxwZXRlci5vaGFubGV5QGhwZS5jb20+DQo+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBb UEFUQ0ggdjYgMy82XSBSZWRmaXNoUGtnL0NydExpYjogQyBydW50aW1lIGxpYnJhcnkNCj4gDQo+ IENSVCBsaWJyYXJ5IGlzIGN1cnJlbnRseSB1c2VkIGJ5IGVkazIgSnNvbkxpYiAob3BlbiBzb3Vy Y2UNCj4gamFuc3NvbiBwcm9qZWN0KSBhbmQgZWRrMiBSZWRmaXNoTGliIChsaWJyZWRmaXNoIG9w ZW4gc291cmNlDQo+IHByb2plY3QpLiBDcnRMaWIgbGlicmFyeSBwcm92aWRlcyB0aGUgbmVjZXNz YXJ5IEMgcnVudGltZQ0KPiBlcXVpdmFsZW50IGVkazIgZnVuY3Rpb25zIGZvciBvcGVuIHNvdXJj ZSBwcm9qZWN0cy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFibmVyIENoYW5nIDxhYm5lci5jaGFu Z0BocGUuY29tPg0KPiANCj4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPg0K PiBDYzogTmlja2xlIFdhbmcgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+IENjOiBQZXRlciBPJ0hh bmxleSA8cGV0ZXIub2hhbmxleUBocGUuY29tPg0KPiAtLS0NCj4gIFJlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvYXNzZXJ0LmggICAgICB8ICAxNiArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vy cm5vLmggICAgICAgfCAgMTYgKw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9saW1pdHMuaCAg ICAgIHwgIDE2ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0aC5oICAgICAgICB8ICAx NiArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oICAgICAgfCAgMTUgKw0KPiAg UmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRkZWYuaCAgICAgIHwgIDE2ICsNCj4gIFJlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvc3RkaW8uaCAgICAgICB8ICAxNSArDQo+ICBSZWRmaXNoUGtnL0luY2x1 ZGUvQ3J0L3N0ZGxpYi5oICAgICAgfCAgMTYgKw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9z dHJpbmcuaCAgICAgIHwgIDE2ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUu aCAgICB8ICAxNSArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oICAgfCAg MTUgKw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90aW1lLmggICAgICAgIHwgIDE1ICsNCj4g IFJlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oICB8IDE5NSArKysrKysrKw0KPiAg UmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuYyAgIHwgNzA1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKw0KPiAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mIHwg IDM3ICsrDQo+ICBSZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMgICAgICAgfCAgIDEgKw0K PiAgUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmNpLnlhbWwgICAgICAgIHwgIDE5ICsNCj4gIFJlZGZp c2hQa2cvUmVkZmlzaFBrZy5kZWMgICAgICAgICAgICB8ICAgOCArDQo+ICBSZWRmaXNoUGtnL1Jl ZGZpc2hQa2cuZHNjICAgICAgICAgICAgfCAgIDEgKw0KPiAgMTkgZmlsZXMgY2hhbmdlZCwgMTE1 MyBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRl L0NydC9hc3NlcnQuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9D cnQvZXJybm8uaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQv bGltaXRzLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L21h dGguaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJn LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5o DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaA0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmgNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oDQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90aW1lLmgNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRMaWIuaA0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmMNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5pbmYNCj4g DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Fzc2VydC5oIGIvUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9hc3NlcnQuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwLi5mOWFiN2VmOWNhDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9hc3NlcnQuaA0KPiBAQCAtMCwwICsxLDE2IEBADQo+ICsvKiogQGZp bGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5 IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAy MCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiAr ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4g KyoqLw0KPiArDQo+ICsjaWZuZGVmIENSVF9BU1NFUlRfSF8NCj4gKyNkZWZpbmUgQ1JUX0FTU0VS VF9IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlm DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmggYi9SZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMC4uZDMwYWVlMTRkZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvZXJybm8uaA0KPiBAQCAtMCwwICsxLDE2IEBADQo+ICsvKiogQGZpbGUN Cj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGph bnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBI ZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoq Lw0KPiArDQo+ICsjaWZuZGVmIENSVF9FUlJOT19IXw0KPiArI2RlZmluZSBDUlRfRVJSTk9fSF8N Cj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBk aWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9saW1pdHMuaCBiL1JlZGZpc2hQa2cv SW5jbHVkZS9DcnQvbGltaXRzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMC4uZjNiZGQzM2YyYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cv SW5jbHVkZS9DcnQvbGltaXRzLmgNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5z c29uIGxpYnJhcnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3 bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8N Cj4gKw0KPiArI2lmbmRlZiBDUlRfTElNSVRTX0hfDQo+ICsjZGVmaW5lIENSVF9MSU1JVFNfSF8N Cj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBk aWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRoLmggYi9SZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L21hdGguaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwLi45ODRjMGNjYzIxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNs dWRlL0NydC9tYXRoLmgNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIElu Y2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxp YnJhcnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQ YWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0K PiArI2lmbmRlZiBDUlRfTUFUSF9IXw0KPiArI2RlZmluZSBDUlRfTUFUSF9IXw0KPiArDQo+ICsj aW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQg YS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9zdGRhcmcuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5k NWEzMTRhZDNiDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9zdGRhcmcuaA0KPiBAQCAtMCwwICsxLDE1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVk ZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFy eS4NCj4gKw0KPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2th cmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2lmbmRl ZiBDUlRfU1REQVJHX0hfDQo+ICsjZGVmaW5lIENSVF9TVERBUkdfSF8NCj4gKw0KPiArI2luY2x1 ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRkZWYuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3Rk ZGVmLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMTVhMzdi ZjUwZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3Rk ZGVmLmgNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmls ZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVu dGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRl ZiBDUlRfU1REREVGX0hfDQo+ICsjZGVmaW5lIENSVF9TVERERUZfSF8NCj4gKw0KPiArI2luY2x1 ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRp by5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjI1ZTYxMGJl MTANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGlv LmgNCj4gQEAgLTAsMCArMSwxNSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0 byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsN Cj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVy cHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKyNpZm5kZWYgQ1JUX1NU RElPX0hfDQo+ICsjZGVmaW5lIENSVF9TVERJT19IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFy eS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L3N0ZGxpYi5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaA0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi41YjNkZDI3M2M4DQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaA0KPiBA QCAtMCwwICsxLDE2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBv cnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBE ZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIENSVF9TVERM SUJfSF8NCj4gKyNkZWZpbmUgQ1JUX1NURExJQl9IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFy eS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L3N0cmluZy5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaA0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mNjBiODdjY2QyDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaA0KPiBA QCAtMCwwICsxLDE2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBv cnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBE ZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIENSVF9TVFJJ TkdfSF8NCj4gKyNkZWZpbmUgQ1JUX1NUUklOR19IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFy eS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L3N5cy90aW1lLmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNGNlZDE3NmNkYQ0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUu aA0KPiBAQCAtMCwwICsxLDE1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRv IHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0K PiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2lmbmRlZiBDUlRfU1lT X1RJTUVfSF8NCj4gKyNkZWZpbmUgQ1JUX1NZU19USU1FX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0NydExpYi5oPg0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvc3lzL3R5cGVzLmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90 eXBlcy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmM0Zjgw NzIxNGMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5 cy90eXBlcy5oDQo+IEBAIC0wLDAgKzEsMTUgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBJbmNsdWRl IGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5 Lg0KPiArDQo+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2Fy ZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiArDQo+ICsgICAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsjaWZuZGVm IENSVF9TWVNfVFlQRVNfSF8NCj4gKyNkZWZpbmUgQ1JUX1NZU19UWVBFU19IXw0KPiArDQo+ICsj aW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQg YS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3RpbWUuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQv dGltZS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmNhMDRh Yzg3MzANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3Rp bWUuaA0KPiBAQCAtMCwwICsxLDE1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxl IHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4g Kw0KPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50 ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2lmbmRlZiBDUlRf VElNRV9IXw0KPiArI2RlZmluZSBDUlRfVElNRV9IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFy eS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0lu Y2x1ZGUvTGlicmFyeS9DcnRMaWIuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExp Yi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjhjNzQ4NGU3 NWINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9D cnRMaWIuaA0KPiBAQCAtMCwwICsxLDE5NSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIENSVCB3cmFw cGVyIGhlYWQgZnVuY3Rpb25zIGZvciBqYW5zc29uIHN5c3RlbSBjYWxsLg0KPiArDQo+ICsgIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiArICAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDUlRfTElC X0hfDQo+ICsjZGVmaW5lIENSVF9MSUJfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFz ZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+ DQo+ICsNCj4gKyNkZWZpbmUgTUFYX1NUUklOR19TSVpFICAweDEwMDAwMDAwDQo+ICsNCj4gKy8v IE1pbmltdW0gdmFsdWUgZm9yIGFuIG9iamVjdCBvZiB0eXBlIGxvbmcgbG9uZyBpbnQuDQo+ICsj ZGVmaW5lIExMT05HX01JTiAgIE1JTl9JTlQ2NA0KPiArDQo+ICsvLyBNYXhpbXVtIHZhbHVlIGZv ciBhbiBvYmplY3Qgb2YgdHlwZSBsb25nIGxvbmcgaW50Lg0KPiArI2RlZmluZSBMTE9OR19NQVgg ICBNQVhfSU5UNjQNCj4gKw0KPiArLy8gV2UgZG9udCBzdXBwb3J0IGRvdWJsZSBvbiBlZGsyDQo+ ICsjZGVmaW5lIEhVR0VfVkFMICAgIDANCj4gKw0KPiArI2lmIGRlZmluZWQoTURFX0NQVV9YNjQp IHx8IGRlZmluZWQoTURFX0NQVV9BQVJDSDY0KSB8fCBkZWZpbmVkKE1ERV9DUFVfSUE2NCkgfHwg ZGVmaW5lZChNREVfQ1BVX1JJU0NWNjQpDQo+ICsvLw0KPiArLy8gV2l0aCBHQ0Mgd2Ugd291bGQg bm9ybWFsbHkgdXNlIFNJWFRZX0ZPVVJfQklUX0xPTkcsIGJ1dCBNU1ZDIG5lZWRzDQo+ICsvLyBT SVhUWV9GT1VSX0JJVCwgYmVjYXVzZSAnbG9uZycgaXMgMzItYml0IGFuZCBvbmx5ICdsb25nIGxv bmcnIGlzDQo+ICsvLyA2NC1iaXQuIFNpbmNlIHVzaW5nICdsb25nIGxvbmcnIHdvcmtzIGZpbmUg b24gR0NDIHRvbywganVzdCBkbyB0aGF0Lg0KPiArLy8NCj4gKyNkZWZpbmUgU0lYVFlfRk9VUl9C SVQNCj4gKyNlbGlmIGRlZmluZWQoTURFX0NQVV9JQTMyKSB8fCBkZWZpbmVkKE1ERV9DUFVfQVJN KSB8fCBkZWZpbmVkKE1ERV9DUFVfRUJDKQ0KPiArI2RlZmluZSBUSElSVFlfVFdPX0JJVA0KPiAr I2VuZGlmDQo+ICsNCj4gKy8vDQo+ICsvLyBNYXAgYWxsIHZhX3h4eHggZWxlbWVudHMgdG8gVkFf eHh4IGRlZmluZWQgaW4gTWRlUGtnL0luY2x1ZGUvQmFzZS5oDQo+ICsvLw0KPiArI2lmICFkZWZp bmVkKF9fQ0NfQVJNKSAvLyBpZiB2YV9saXN0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQNCj4gKyNk ZWZpbmUgdmFfbGlzdCAgIFZBX0xJU1QNCj4gKyNkZWZpbmUgdmFfYXJnICAgIFZBX0FSRw0KPiAr I2RlZmluZSB2YV9zdGFydCAgVkFfU1RBUlQNCj4gKyNkZWZpbmUgdmFfZW5kICAgIFZBX0VORA0K PiArI2Vsc2UgLy8gX19DQ19BUk0NCj4gKyNkZWZpbmUgdmFfc3RhcnQoTWFya2VyLCBQYXJhbWV0 ZXIpICAgX192YV9zdGFydChNYXJrZXIsIFBhcmFtZXRlcikNCj4gKyNkZWZpbmUgdmFfYXJnKE1h cmtlciwgVFlQRSkgICAgICAgICAgX192YV9hcmcoTWFya2VyLCBUWVBFKQ0KPiArI2RlZmluZSB2 YV9lbmQoTWFya2VyKSAgICAgICAgICAgICAgICAoKHZvaWQpMCkNCj4gKyNlbmRpZg0KPiArDQo+ ICsvLw0KPiArLy8gRGVmaW5pdGlvbnMgZm9yIGdsb2JhbCBjb25zdGFudHMgdXNlZCBieSBDUlQg bGlicmFyeSByb3V0aW5lcw0KPiArLy8NCj4gKyNkZWZpbmUgSU5UX01BWCAgICAgIE1BWF9JTlQz MiAgICAgICAgLyogTWF4aW11bSAoc2lnbmVkKSBpbnQgdmFsdWUgKi8NCj4gKyNkZWZpbmUgTE9O R19NQVggICAgIDBYN0ZGRkZGRkZMICAgICAgLyogbWF4IHZhbHVlIGZvciBhIGxvbmcgKi8NCj4g KyNkZWZpbmUgTE9OR19NSU4gICAgICgtTE9OR19NQVgtMSkgICAgLyogbWluIHZhbHVlIGZvciBh IGxvbmcgKi8NCj4gKyNkZWZpbmUgVUxPTkdfTUFYICAgIDB4RkZGRkZGRkYgICAgICAgLyogTWF4 aW11bSB1bnNpZ25lZCBsb25nIHZhbHVlICovDQo+ICsjZGVmaW5lIENIQVJfQklUICAgICA4ICAg ICAgICAgICAgICAgIC8qIE51bWJlciBvZiBiaXRzIGluIGEgY2hhciAqLw0KPiArDQo+ICsvLyBN YXhpbXVtIHZhbHVlIGZvciBhbiBvYmplY3Qgb2YgdHlwZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50 Lg0KPiArI2RlZmluZSBVTExPTkdfTUFYICAweEZGRkZGRkZGRkZGRkZGRkZVTEwgLy8gMl42NCAt IDENCj4gKy8vIE1heGltdW0gdmFsdWUgZm9yIGFuIG9iamVjdCBvZiB0eXBlIHVuc2lnbmVkIGNo YXIuDQo+ICsjZGVmaW5lIFVDSEFSX01BWCAgIDI1NSAgLy8gMl44IC0gMQ0KPiArDQo+ICsvLw0K PiArLy8gQmFzaWMgdHlwZXMgbWFwcGluZw0KPiArLy8NCj4gK3R5cGVkZWYgVUlOVE4gICAgICAg ICAgc2l6ZV90Ow0KPiArdHlwZWRlZiBJTlROICAgICAgICAgICBzc2l6ZV90Ow0KPiArdHlwZWRl ZiBJTlQzMiAgICAgICAgICB0aW1lX3Q7DQo+ICt0eXBlZGVmIFVJTlQ4ICAgICAgICAgIF9fdWlu dDhfdDsNCj4gK3R5cGVkZWYgVUlOVDggICAgICAgICAgc2FfZmFtaWx5X3Q7DQo+ICt0eXBlZGVm IFVJTlQzMiAgICAgICAgIHVpZF90Ow0KPiArdHlwZWRlZiBVSU5UMzIgICAgICAgICBnaWRfdDsN Cj4gK3R5cGVkZWYgSU5UMzIgICAgICAgICAgaW50MzJfdDsNCj4gK3R5cGVkZWYgVUlOVDMyICAg ICAgICAgdWludDMyX3Q7DQo+ICt0eXBlZGVmIFVJTlQxNiAgICAgICAgIHVpbnQxNl90Ow0KPiAr dHlwZWRlZiBVSU5UOCAgICAgICAgICB1aW50OF90Ow0KPiArdHlwZWRlZiBlbnVtIHtmYWxzZSwg dHJ1ZX0gYm9vbDsNCj4gKw0KPiArLy8NCj4gKy8vIEZpbGUgb3BlcmF0aW9ucyBhcmUgbm90IHJl cXVpcmVkIGZvciBFRkkgYnVpbGRpbmcsDQo+ICsvLyBzbyBGSUxFIGlzIG1hcHBlZCB0byBWT0lE ICogdG8gcGFzcyBidWlsZA0KPiArLy8NCj4gK3R5cGVkZWYgVk9JRCAgKkZJTEU7DQo+ICsNCj4g Ky8vDQo+ICsvLyBHbG9iYWwgdmFyaWFibGVzDQo+ICsvLw0KPiArZXh0ZXJuIGludCAgZXJybm87 DQo+ICtleHRlcm4gRklMRSAqc3RkZXJyOw0KPiArDQo+ICsvLw0KPiArLy8gRnVuY3Rpb24gcHJv dG90eXBlcyBvZiBDUlQgTGlicmFyeSByb3V0aW5lcw0KPiArLy8NCj4gK3ZvaWQgICAgICAgICAg ICptYWxsb2MgICAgIChzaXplX3QpOw0KPiArdm9pZCAgICAgICAgICAgKnJlYWxsb2MgICAgKHZv aWQgKiwgc2l6ZV90KTsNCj4gK3ZvaWQgICAgICAgICAgICpjYWxsb2MgICAgIChzaXplX3QgTnVt LCBzaXplX3QgU2l6ZSk7DQo+ICt2b2lkICAgICAgICAgICBmcmVlICAgICAgICAodm9pZCAqKTsN Cj4gK3ZvaWQgICAgICAgICAgICptZW1zZXQgICAgICh2b2lkICosIGludCwgc2l6ZV90KTsNCj4g K2ludCAgICAgICAgICAgIG1lbWNtcCAgICAgIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwg c2l6ZV90KTsNCj4gK2ludCAgICAgICAgICAgIGlzZGlnaXQgICAgIChpbnQpOw0KPiAraW50ICAg ICAgICAgICAgaXNzcGFjZSAgICAgKGludCk7DQo+ICtpbnQgICAgICAgICAgICB0b2xvd2VyICAg ICAoaW50KTsNCj4gK2ludCAgICAgICAgICAgIGlzdXBwZXIgICAgIChpbnQpOw0KPiAraW50ICAg ICAgICAgICAgaXN4ZGlnaXQgICAgKGludCk7DQo+ICtpbnQgICAgICAgICAgICBpc2FsbnVtICAg ICAoaW50KTsNCj4gK3ZvaWQgICAgICAgICAgICptZW1jcHkgICAgICh2b2lkICosIGNvbnN0IHZv aWQgKiwgc2l6ZV90KTsNCj4gK3ZvaWQgICAgICAgICAgICptZW1zZXQgICAgICh2b2lkICosIGlu dCwgc2l6ZV90KTsNCj4gK3ZvaWQgICAgICAgICAgICptZW1jaHIgICAgIChjb25zdCB2b2lkICos IGludCwgc2l6ZV90KTsNCj4gK2ludCAgICAgICAgICAgIG1lbWNtcCAgICAgIChjb25zdCB2b2lk ICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNCj4gK3ZvaWQgICAgICAgICAgICptZW1tb3ZlICAg ICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNCj4gK2ludCAgICAgICAgICAgIHN0cmNt cCAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ICtpbnQgICAgICAgICAgICBz dHJuY21wICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ICtjaGFy ICAgICAgICAgICAqc3RyY3B5ICAgICAoY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiArc2l6ZV90 ICAgICAgICAgc3RybGVuICAgICAgKGNvbnN0IGNoYXIgKik7DQo+ICtjaGFyICAgICAgICAgICAq c3RyY2F0ICAgICAoY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiArY2hhciAgICAgICAgICAgKnN0 cmNociAgICAgKGNvbnN0IGNoYXIgKiwgaW50KTsNCj4gK2ludCAgICAgICAgICAgIHN0cmNhc2Vj bXAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ICtpbnQgICAgICAgICAgICBzdHJu Y2FzZWNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ICtjaGFyICAg ICAgICAgICAqc3RybmNweSAgICAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgc2l6ZV90 KTsNCj4gK2ludCAgICAgICAgICAgIHN0cm5jbXAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKiwgc2l6ZV90KTsNCj4gK2NoYXIgICAgICAgICAgICpzdHJyY2hyICAgIChjb25zdCBjaGFy ICosIGludCk7DQo+ICt1bnNpZ25lZCBsb25nICBzdHJ0b3VsICAgICAoY29uc3QgY2hhciAqLCBj aGFyICoqLCBpbnQpOw0KPiArY2hhciAqICAgICAgICAgc3Ryc3RyICAgICAgKGNvbnN0IGNoYXIg KnMxICwgY29uc3QgY2hhciAqczIpOw0KPiArbG9uZyAgICAgICAgICAgc3RydG9sICAgICAgKGNv bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsNCj4gK2NoYXIgICAgICAgICAgICpzdHJlcnJvciAg IChpbnQpOw0KPiArc2l6ZV90ICAgICAgICAgc3Ryc3BuICAgICAgKGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqKTsNCj4gK2NoYXIgKiAgICAgICAgIHN0cmR1cCAgICAgIChjb25zdCBjaGFyICpz dHIpOw0KPiArY2hhciAqICAgICAgICAgc3RycGJyayAgICAgKGNvbnN0IGNoYXIgKnMxLCBjb25z dCBjaGFyICpzMik7DQo+ICt1bnNpZ25lZCBsb25nIGxvbmcgc3RydG91bGwoY29uc3QgY2hhciAq IG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFzZSk7DQo+ICtsb25nIGxvbmcgICAgICBzdHJ0 b2xsICAgICAoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFzZSk7DQo+ ICtsb25nICAgICAgICAgICBzdHJ0b2wgICAgICAoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiog ZW5kcHRyLCBpbnQgYmFzZSk7DQo+ICtkb3VibGUgICAgICAgICBzdHJ0b2QgICAgICAoY29uc3Qg Y2hhciAqIF9fcmVzdHJpY3QgbnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IGVuZHB0cik7DQo+ICtz aXplX3QgICAgICAgICBzdHJjc3BuICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw0K PiAraW50ICAgICAgICAgICAgcHJpbnRmICAgICAgKGNvbnN0IGNoYXIgKiwgLi4uKTsNCj4gK2lu dCAgICAgICAgICAgIHNzY2FuZiAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4u KTsNCj4gK0ZJTEUgICAgICAgICAgICpmb3BlbiAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKik7DQo+ICtzaXplX3QgICAgICAgICBmcmVhZCAgICAgICAodm9pZCAqLCBzaXplX3QsIHNp emVfdCwgRklMRSAqKTsNCj4gK3NpemVfdCAgICAgICAgIGZ3cml0ZSAgICAgIChjb25zdCB2b2lk ICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOw0KPiAraW50ICAgICAgICAgICAgZmNsb3NlICAg ICAgKEZJTEUgKik7DQo+ICtpbnQgICAgICAgICAgICBmcHJpbnRmICAgICAoRklMRSAqLCBjb25z dCBjaGFyICosIC4uLik7DQo+ICtpbnQgICAgICAgICAgICBmZ2V0YyAgICAgICAoRklMRSAqIF9G aWxlKTsNCj4gK3VpZF90ICAgICAgICAgIGdldHVpZCAgICAgICh2b2lkKTsNCj4gK3VpZF90ICAg ICAgICAgIGdldGV1aWQgICAgICh2b2lkKTsNCj4gK2dpZF90ICAgICAgICAgIGdldGdpZCAgICAg ICh2b2lkKTsNCj4gK2dpZF90ICAgICAgICAgIGdldGVnaWQgICAgICh2b2lkKTsNCj4gK3ZvaWQg ICAgICAgICAgIHFzb3J0ICAgICAgICh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCopKGNv bnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7DQo+ICtjaGFyICAgICAgICAgICAqZ2V0ZW52ICAg ICAoY29uc3QgY2hhciAqKTsNCj4gKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18g Pj0gMikNCj4gK3ZvaWQgICAgICAgICAgIGFib3J0ICAgICAgICh2b2lkKSBfX2F0dHJpYnV0ZV9f KChfX25vcmV0dXJuX18pKTsNCj4gKyNlbHNlDQo+ICt2b2lkICAgICAgICAgICBhYm9ydCAgICAg ICAodm9pZCk7DQo+ICsjZW5kaWYNCj4gK2ludCAgICAgICAgICAgIHRvdXBwZXIgICAgIChpbnQp Ow0KPiAraW50ICAgICAgICAgICAgRGlnaXQyVmFsICAgKGludCk7DQo+ICt0aW1lX3QgICAgICAg ICB0aW1lICAgICAgICAodGltZV90ICopOw0KPiArDQo+ICsvLw0KPiArLy8gTWFjcm9zIHRoYXQg ZGlyZWN0bHkgbWFwIGZ1bmN0aW9ucyB0byBCYXNlTGliLCBCYXNlTWVtb3J5TGliLCBhbmQgRGVi dWdMaWIgZnVuY3Rpb25zDQo+ICsvLw0KPiArI2RlZmluZSBzdHJjbXAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQXNjaWlTdHJDbXANCj4gKyNkZWZpbmUgbWVtY3B5KGRlc3Qsc291cmNlLGNv dW50KSAgICAgICAgIENvcHlNZW0oZGVzdCxzb3VyY2UsKFVJTlROKShjb3VudCkpDQo+ICsjZGVm aW5lIG1lbXNldChkZXN0LGNoLGNvdW50KSAgICAgICAgICAgICBTZXRNZW0oZGVzdCwoVUlOVE4p KGNvdW50KSwoVUlOVDgpKGNoKSkNCj4gKyNkZWZpbmUgbWVtY2hyKGJ1ZixjaCxjb3VudCkgICAg ICAgICAgICAgIFNjYW5NZW04KGJ1ZiwoVUlOVE4pKGNvdW50KSwoVUlOVDgpY2gpDQo+ICsjZGVm aW5lIG1lbWNtcChidWYxLGJ1ZjIsY291bnQpICAgICAgICAgICAoaW50KShDb21wYXJlTWVtKGJ1 ZjEsYnVmMiwoVUlOVE4pKGNvdW50KSkpDQo+ICsjZGVmaW5lIG1lbW1vdmUoZGVzdCxzb3VyY2Us Y291bnQpICAgICAgICBDb3B5TWVtKGRlc3Qsc291cmNlLChVSU5UTikoY291bnQpKQ0KPiArI2Rl ZmluZSBzdHJsZW4oc3RyKSAgICAgICAgICAgICAgICAgICAgICAgKHNpemVfdCkoQXNjaWlTdHJu TGVuUyhzdHIsTUFYX1NUUklOR19TSVpFKSkNCj4gKyNkZWZpbmUgc3RyY3B5KHN0ckRlc3Qsc3Ry U291cmNlKSAgICAgICAgIEFzY2lpU3RyQ3B5UyhzdHJEZXN0LChzdHJsZW4oc3RyU291cmNlKSsx KSxzdHJTb3VyY2UpDQo+ICsjZGVmaW5lIHN0cm5jcHkoc3RyRGVzdCxzdHJTb3VyY2UsY291bnQp ICBBc2NpaVN0cm5DcHlTKHN0ckRlc3QsKFVJTlROKWNvdW50LHN0clNvdXJjZSwoVUlOVE4pY291 bnQpDQo+ICsjZGVmaW5lIHN0cm5jcHlzKHN0ckRlc3QsIERlc3RMZW4sIHN0clNvdXJjZSxjb3Vu dCkgIEFzY2lpU3RybkNweVMoc3RyRGVzdCxEZXN0TGVuLHN0clNvdXJjZSwoVUlOVE4pY291bnQp DQo+ICsjZGVmaW5lIHN0cmNhdChzdHJEZXN0LHN0clNvdXJjZSkgICAgICAgICBBc2NpaVN0ckNh dFMoc3RyRGVzdCwoc3RybGVuKHN0clNvdXJjZSkrc3RybGVuKHN0ckRlc3QpKzEpLHN0clNvdXJj ZSkNCj4gKyNkZWZpbmUgc3RyY2hyKHN0cixjaCkgICAgICAgICAgICAgICAgICAgIFNjYW5NZW04 KChWT0lEICopKHN0ciksQXNjaWlTdHJTaXplKHN0ciksKFVJTlQ4KWNoKQ0KPiArI2RlZmluZSBz dHJuY21wKHN0cmluZzEsc3RyaW5nMixjb3VudCkgICAgKGludCkoQXNjaWlTdHJuQ21wKHN0cmlu ZzEsc3RyaW5nMiwoVUlOVE4pKGNvdW50KSkpDQo+ICsjZGVmaW5lIHN0cmNhc2VjbXAoc3RyMSxz dHIyKSAgICAgICAgICAgICAoaW50KUFzY2lpU3RyaUNtcChzdHIxLHN0cjIpDQo+ICsjZGVmaW5l IHN0cnN0cihzMSxzMikgICAgICAgICAgICAgICAgICAgICBBc2NpaVN0clN0cihzMSxzMikNCj4g KyNkZWZpbmUgc3ByaW50ZihidWYsLi4uKSAgICAgICAgICAgICAgICAgIEFzY2lpU1ByaW50KGJ1 ZixNQVhfU1RSSU5HX1NJWkUsX19WQV9BUkdTX18pDQo+ICsjZGVmaW5lIHNucHJpbnRmKGJ1Zixs ZW4sLi4uKSAgICAgICAgICAgICBBc2NpaVNQcmludChidWYsbGVuLF9fVkFfQVJHU19fKQ0KPiAr I2RlZmluZSB2c25wcmludGYoYnVmLGxlbixmb3JtYXQsbWFya2VyKSAgQXNjaWlWU1ByaW50KChi dWYpLChsZW4pLChmb3JtYXQpLChtYXJrZXIpKQ0KPiArI2RlZmluZSBhc3NlcnQoZXhwcmVzc2lv bikgICAgICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24pDQo+ICsjZGVmaW5lIGF0b2kobnB0 cikgICAgICAgICAgICAgICAgICAgICAgICBBc2NpaVN0ckRlY2ltYWxUb1VpbnRuKG5wdHIpDQo+ ICsjZGVmaW5lIGZhYnMoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh4KSA8IDAuMCk/ ICgteCk6ICh4KSkNCj4gKyNkZWZpbmUgb2Zmc2V0b2YodHlwZSxtZW1iZXIpICAgICAgICAgICAg IE9GRlNFVF9PRih0eXBlLG1lbWJlcikNCj4gKw0KPiArI2RlZmluZSBFT0YgKC0xKQ0KPiArDQo+ ICtleHRlcm4gaW50ICBlcnJubzsNCj4gKw0KPiArI2RlZmluZSBFUkFOR0UgICAzNCAgICAgICAg ICAgICAgICAvKiAzNCAgIFJlc3VsdCB0b28gbGFyZ2UgKi8NCj4gKw0KPiArI2VuZGlmDQo+IGRp ZmYgLS1naXQgYS9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5jIGIvUmVkZmlzaFBr Zy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwLi4xZmY0MDIzZGJlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlz aFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuYw0KPiBAQCAtMCwwICsxLDcwNSBAQA0KPiArLyoq IEBmaWxlDQo+ICsgIENSVCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3Igc3lzdGVtIGNhbGwuDQo+ICsN Cj4gKyAgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ICsgIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50 ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2luY2x1ZGUgPFVl ZmkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaVJ1bnRp bWVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsNCj4gK2ludCAgZXJybm8gPSAwOw0KPiArDQo+ICsv KioNCj4gKyAgRGV0ZXJtaW5lIGlmIGEgcGFydGljdWxhciBjaGFyYWN0ZXIgaXMgYW4gYWxwaGFu dW1lcmljIGNoYXJhY3Rlcg0KPiArICBAcmV0dXJuICBSZXR1cm5zIDEgaWYgYyBpcyBhbiBhbHBo YW51bWVyaWMgY2hhcmFjdGVyLCBvdGhlcndpc2UgcmV0dXJucyAwLg0KPiArKiovDQo+ICtpbnQg aXNhbG51bSAoaW50IGMpDQo+ICt7DQo+ICsgIC8vDQo+ICsgIC8vIDxhbG51bT4gOjo9IFswLTld IHwgW2Etel0gfCBbQS1aXQ0KPiArICAvLw0KPiArICByZXR1cm4gKCgoJzAnIDw9IChjKSkgJiYg KChjKSA8PSAnOScpKSB8fA0KPiArICAgICAgICAgICgoJ2EnIDw9IChjKSkgJiYgKChjKSA8PSAn eicpKSB8fA0KPiArICAgICAgICAgICgoJ0EnIDw9IChjKSkgJiYgKChjKSA8PSAnWicpKSk7DQo+ ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGNoYXJhY3Rl ciBpcyBhIGRpZ2l0YWwgY2hhcmFjdGVyDQo+ICsNCj4gKyAgQHJldHVybiAgUmV0dXJucyAxIGlm IGMgaXMgYW4gZGlnaXRhbCBjaGFyYWN0ZXIsIG90aGVyd2lzZSByZXR1cm5zIDAuDQo+ICsqKi8N Cj4gK2ludCBpc2RjaGFyIChpbnQgYykNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gWzAtOV0gfCBb ZSArLS5dDQo+ICsgIC8vDQo+ICsgIHJldHVybiAoKCgnMCcgPD0gKGMpKSAmJiAoKGMpIDw9ICc5 JykpIHx8DQo+ICsgICAgICAgICAgKGMgPT0gJ2UnKSB8fCAoYyA9PSAnRScpIHx8DQo+ICsgICAg ICAgICAgKGMgPT0gJysnKSB8fCAoYyA9PSAnLScpIHx8DQo+ICsgICAgICAgICAgKGMgPT0gJy4n KSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGNo YXJhY3RlciBpcyBhIHNwYWNlIGNoYXJhY3Rlcg0KPiArDQo+ICsgIEByZXR1cm4gIFJldHVybnMg MSBpZiBjIGlzIGEgc3BhY2UgY2hhcmFjdGVyDQo+ICsqKi8NCj4gK2ludCBpc3NwYWNlIChpbnQg YykNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gPHNwYWNlPiA6Oj0gWyBdDQo+ICsgIC8vDQo+ICsg IHJldHVybiAoKGMpID09ICcgJykgfHwgKChjKSA9PSAnXHQnKSB8fCAoKGMpID09ICdccicpIHx8 ICgoYykgPT0gJ1xuJykgfHwgKChjKSA9PSAnXHYnKSAgfHwgKChjKSA9PSAnXGYnKTsNCj4gK30N Cj4gKw0KPiArLyoqDQo+ICsgIEFsbG9jYXRlcyBtZW1vcnkgYmxvY2tzDQo+ICsqLw0KPiArdm9p ZCAqbWFsbG9jIChzaXplX3Qgc2l6ZSkNCj4gK3sNCj4gKyAgcmV0dXJuIEFsbG9jYXRlUG9vbCAo KFVJTlROKSBzaXplKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIERlLWFsbG9jYXRlcyBvciBm cmVlcyBhIG1lbW9yeSBibG9jaw0KPiArKi8NCj4gK3ZvaWQgZnJlZSAodm9pZCAqcHRyKQ0KPiAr ew0KPiArICAvLw0KPiArICAvLyBJbiBTdGFuZGFyZCBDLCBmcmVlKCkgaGFuZGxlcyBhIG51bGwg cG9pbnRlciBhcmd1bWVudCB0cmFuc3BhcmVudGx5LiBUaGlzDQo+ICsgIC8vIGlzIG5vdCB0cnVl IG9mIEZyZWVQb29sKCkgYmVsb3csIHNvIHByb3RlY3QgaXQuDQo+ICsgIC8vDQo+ICsgIGlmIChw dHIgIT0gTlVMTCkgew0KPiArICAgIEZyZWVQb29sIChwdHIpOw0KPiArICB9DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBOZXRCU0QgQ29tcGF0aWJpbGl0eSBGdW5jdGlvbiBzdHJkdXAgY3JlYXRl cyBhIGR1cGxpY2F0ZSBjb3B5IG9mIGEgc3RyaW5nLg0KPiArDQo+ICsgIEByZXR1cm4gIFJldHVy bnMgdGhlIHBvaW50ZXIgdG8gZHVwbGljYXRlZCBzdHJpbmcuDQo+ICsqKi8NCj4gK2NoYXIgKiBz dHJkdXAoY29uc3QgY2hhciAqc3RyKQ0KPiArew0KPiArICBzaXplX3QgbGVuOw0KPiArICBjaGFy ICpjb3B5Ow0KPiArDQo+ICsgIGxlbiA9IHN0cmxlbihzdHIpICsgMTsNCj4gKyAgaWYgKChjb3B5 ID0gbWFsbG9jKGxlbikpID09IE5VTEwpDQo+ICsgICAgcmV0dXJuIChOVUxMKTsNCj4gKyAgbWVt Y3B5KGNvcHksIHN0ciwgbGVuKTsNCj4gKyAgcmV0dXJuIChjb3B5KTsNCj4gK30NCj4gKw0KPiAr LyoqIFRoZSB0b3VwcGVyIGZ1bmN0aW9uIGNvbnZlcnRzIGEgbG93ZXJjYXNlIGxldHRlciB0byBh IGNvcnJlc3BvbmRpbmcNCj4gKyAgICB1cHBlcmNhc2UgbGV0dGVyLg0KPiArDQo+ICsgICAgQHBh cmFtW2luXSAgICBjICAgVGhlIGNoYXJhY3RlciB0byBiZSBjb252ZXJ0ZWQuDQo+ICsNCj4gKyAg ICBAcmV0dXJuICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgY2hhcmFjdGVyIGZvciB3aGljaCBpc2xv d2VyIGlzIHRydWUgYW5kDQo+ICsgICAgICAgICAgICAgIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBj b3JyZXNwb25kaW5nIGNoYXJhY3RlcnMsIGFzIHNwZWNpZmllZCBieQ0KPiArICAgICAgICAgICAg ICB0aGUgY3VycmVudCBsb2NhbGUsIGZvciB3aGljaCBpc3VwcGVyIGlzIHRydWUsIHRoZSB0b3Vw cGVyDQo+ICsgICAgICAgICAgICAgIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIHRoZSBjb3JyZXNw b25kaW5nIGNoYXJhY3RlcnMgKGFsd2F5cyB0aGUNCj4gKyAgICAgICAgICAgICAgc2FtZSBvbmUg Zm9yIGFueSBnaXZlbiBsb2NhbGUpOyBvdGhlcndpc2UsIHRoZSBhcmd1bWVudCBpcw0KPiArICAg ICAgICAgICAgICByZXR1cm5lZCB1bmNoYW5nZWQuDQo+ICsqKi8NCj4gK2ludA0KPiArdG91cHBl cigNCj4gKyAgSU4gIGludCBjDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCAoYyA+PSAnYScpICYm IChjIDw9ICd6JykgKSB7DQo+ICsgICAgYyA9IGMgLSAoJ2EnIC0gJ0EnKTsNCj4gKyAgfQ0KPiAr ICByZXR1cm4gYzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIERpZ2l0IHRvIGEgdmFsdWUuDQo+ ICsNCj4gKyAgQHJldHVybiAgUmV0dXJucyB0aGUgdmFsdWUgb2YgZGlnaXQuDQo+ICsqKi8NCj4g K2ludA0KPiArRGlnaXQyVmFsKCBpbnQgYykNCj4gK3sNCj4gKyAgaWYgKCgoYyA+PSAnYScpICYm IChjIDw9ICd6JykpIHx8ICgoYyA+PSAnQScpICYmIChjIDw9ICdaJykpKSB7ICAvKiBJZiBjIGlz IG9uZSBvZiBbQS1aYS16XS4uLiAqLw0KPiArICAgIGMgPSB0b3VwcGVyKGMpIC0gNzsgICAvLyBB ZGp1c3Qgc28gJ0EnIGlzICgnOScgKyAxKQ0KPiArICB9DQo+ICsgIHJldHVybiBjIC0gJzAnOyAg IC8vIFZhbHVlIHJldHVybmVkIGlzIGJldHdlZW4gMCBhbmQgMzUsIGluY2x1c2l2ZS4NCj4gK30N Cj4gKw0KPiArDQo+ICsvKiogVGhlIHN0cnRvbGwgZnVuY3Rpb24gY29udmVydHMgdGhlIGluaXRp YWwgcG9ydGlvbiBvZiB0aGUgc3RyaW5nIHBvaW50ZWQgdG8NCj4gKyAgICBieSBucHRyIHRvIGxv bmcgbG9uZyBpbnQgcmVwcmVzZW50YXRpb24uDQo+ICsNCj4gKyAgICBTZWUgdGhlIGRlc2NyaXB0 aW9uIGZvciBzdHJ0b2wgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQo+ICsNCj4gKyAgQHJldHVybiAg IFRoZSBzdHJ0b2xsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnZlcnRlZCB2YWx1ZSwgaWYgYW55 LiBJZiBubw0KPiArICAgICAgICAgICAgY29udmVyc2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQsIHpl cm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3JyZWN0DQo+ICsgICAgICAgICAgICB2YWx1ZSBpcyBv dXRzaWRlIHRoZSByYW5nZSBvZiByZXByZXNlbnRhYmxlIHZhbHVlcywgTExPTkdfTUlOIG9yDQo+ ICsgICAgICAgICAgICBMTE9OR19NQVggaXMgcmV0dXJuZWQgKGFjY29yZGluZyB0byB0aGUgc2ln biBvZiB0aGUgdmFsdWUsIGlmIGFueSksDQo+ICsgICAgICAgICAgICBhbmQgdGhlIHZhbHVlIG9m IHRoZSBtYWNybyBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0KPiArKiovDQo+ICtsb25nIGxv bmcNCj4gK3N0cnRvbGwoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFz ZSkNCj4gK3sNCj4gKyAgY29uc3QgY2hhciAqcEVuZDsNCj4gKyAgbG9uZyBsb25nICAgUmVzdWx0 ID0gMDsNCj4gKyAgbG9uZyBsb25nICAgUHJldmlvdXM7DQo+ICsgIGludCAgICAgICAgIHRlbXA7 DQo+ICsgIEJPT0xFQU4gICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsNCj4gKyAgcEVuZCA9IG5w dHI7DQo+ICsNCj4gKyAgaWYoKGJhc2UgPCAwKSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2 KSkgew0KPiArICAgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ICsgICAgKmVuZHB0ciA9IE5VTEw7 DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiAwOw0KPiArICB9DQo+ICsgIC8vIFNraXAgbGVhZGlu ZyBzcGFjZXMuDQo+ICsgIHdoaWxlKGlzc3BhY2UoKm5wdHIpKSAgICsrbnB0cjsNCj4gKw0KPiAr ICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsIHNpZ24gZm9sbG93ZWQgYnkg ZGlnaXRzLg0KPiArICBpZigqbnB0ciA9PSAnKycpIHsNCj4gKyAgICBOZWdhdGl2ZSA9IEZBTFNF Ow0KPiArICAgICsrbnB0cjsNCj4gKyAgfQ0KPiArICBlbHNlIGlmKCpucHRyID09ICctJykgew0K PiArICAgIE5lZ2F0aXZlID0gVFJVRTsNCj4gKyAgICArK25wdHI7DQo+ICsgIH0NCj4gKw0KPiAr ICBpZigqbnB0ciA9PSAnMCcpIHsgIC8qIE1pZ2h0IGJlIE9jdGFsIG9yIEhleCAqLw0KPiArICAg IGlmKHRvdXBwZXIobnB0clsxXSkgPT0gJ1gnKSB7ICAgLyogTG9va3MgbGlrZSBIZXggKi8NCj4g KyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDE2KSkgew0KPiArICAgICAgICBucHRy ICs9IDI7ICAvKiBTa2lwIHRoZSAiMFgiICAgICAgKi8NCj4gKyAgICAgICAgYmFzZSA9IDE2OyAg LyogSW4gY2FzZSBiYXNlIHdhcyAwICovDQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICAgIGVs c2UgeyAgICAvKiBMb29rcyBsaWtlIE9jdGFsICovDQo+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8 fCAoYmFzZSA9PSA4KSkgew0KPiArICAgICAgICArK25wdHI7ICAgICAvKiBTa2lwIHRoZSBsZWFk aW5nICIwIiAqLw0KPiArICAgICAgICBiYXNlID0gODsgICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAg ICAqLw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArICBpZihiYXNlID09IDApIHsg ICAvKiBJZiBzdGlsbCB6ZXJvIHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ICsgICAgYmFzZSA9 IDEwOw0KPiArICB9DQo+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gKyAgICBmb3IoIDsgKm5w dHIgPT0gJzAnOyArK25wdHIpOyAgLyogU2tpcCBhbnkgcmVtYWluaW5nIGxlYWRpbmcgemVyb3Mg Ki8NCj4gKyAgICBwRW5kID0gbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIHdoaWxlKCBpc2FsbnVt KCpucHRyKSAmJiAoKHRlbXAgPSBEaWdpdDJWYWwoKm5wdHIpKSA8IGJhc2UpKSB7DQo+ICsgICAg UHJldmlvdXMgPSBSZXN1bHQ7DQo+ICsgICAgUmVzdWx0ID0gTXVsdFM2NHg2NCAoUmVzdWx0LCBi YXNlKSArIChsb25nIGxvbmcgaW50KXRlbXA7DQo+ICsgICAgaWYoIFJlc3VsdCA8PSBQcmV2aW91 cykgeyAgIC8vIERldGVjdCBPdmVyZmxvdw0KPiArICAgICAgaWYoTmVnYXRpdmUpIHsNCj4gKyAg ICAgICAgUmVzdWx0ID0gTExPTkdfTUlOOw0KPiArICAgICAgfQ0KPiArICAgICAgZWxzZSB7DQo+ ICsgICAgICAgIFJlc3VsdCA9IExMT05HX01BWDsNCj4gKyAgICAgIH0NCj4gKyAgICAgIE5lZ2F0 aXZlID0gRkFMU0U7DQo+ICsgICAgICBlcnJubyA9IEVSQU5HRTsNCj4gKyAgICAgIGJyZWFrOw0K PiArICAgIH0NCj4gKyAgICBwRW5kID0gKytucHRyOw0KPiArICB9DQo+ICsgIGlmKE5lZ2F0aXZl KSB7DQo+ICsgICAgUmVzdWx0ID0gLVJlc3VsdDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIFNhdmUg cG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiArICBpZihlbmRwdHIgIT0gTlVMTCkgew0KPiAr ICAgICplbmRwdHIgPSAoY2hhciAqKXBFbmQ7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIFJlc3VsdDsN Cj4gK30NCj4gKw0KPiArLyoqIFRoZSBzdHJ0b2wsIHN0cnRvbGwsIHN0cnRvdWwsIGFuZCBzdHJ0 b3VsbCBmdW5jdGlvbnMgY29udmVydCB0aGUgaW5pdGlhbA0KPiArICAgIHBvcnRpb24gb2YgdGhl IHN0cmluZyBwb2ludGVkIHRvIGJ5IG5wdHIgdG8gbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQsDQo+ ICsgICAgdW5zaWduZWQgbG9uZyBpbnQsIGFuZCB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHJlcHJl c2VudGF0aW9uLCByZXNwZWN0aXZlbHkuDQo+ICsgICAgRmlyc3QsIHRoZXkgZGVjb21wb3NlIHRo ZSBpbnB1dCBzdHJpbmcgaW50byB0aHJlZSBwYXJ0czogYW4gaW5pdGlhbCwNCj4gKyAgICBwb3Nz aWJseSBlbXB0eSwgc2VxdWVuY2Ugb2Ygd2hpdGUtc3BhY2UgY2hhcmFjdGVycyAoYXMgc3BlY2lm aWVkIGJ5IHRoZQ0KPiArICAgIGlzc3BhY2UgZnVuY3Rpb24pLCBhIHN1YmplY3Qgc2VxdWVuY2Ug cmVzZW1ibGluZyBhbiBpbnRlZ2VyIHJlcHJlc2VudGVkIGluDQo+ICsgICAgc29tZSByYWRpeCBk ZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiBiYXNlLCBhbmQgYSBmaW5hbCBzdHJpbmcgb2Ygb25l IG9yDQo+ICsgICAgbW9yZSB1bnJlY29nbml6ZWQgY2hhcmFjdGVycywgaW5jbHVkaW5nIHRoZSB0 ZXJtaW5hdGluZyBudWxsIGNoYXJhY3RlciBvZg0KPiArICAgIHRoZSBpbnB1dCBzdHJpbmcuIFRo ZW4sIHRoZXkgYXR0ZW1wdCB0byBjb252ZXJ0IHRoZSBzdWJqZWN0IHNlcXVlbmNlIHRvIGFuDQo+ ICsgICAgaW50ZWdlciwgYW5kIHJldHVybiB0aGUgcmVzdWx0Lg0KPiArDQo+ICsgICAgSWYgdGhl IHZhbHVlIG9mIGJhc2UgaXMgemVybywgdGhlIGV4cGVjdGVkIGZvcm0gb2YgdGhlIHN1YmplY3Qg c2VxdWVuY2UgaXMNCj4gKyAgICB0aGF0IG9mIGFuIGludGVnZXIgY29uc3RhbnQsIG9wdGlvbmFs bHkgcHJlY2VkZWQNCj4gKyAgICBieSBhIHBsdXMgb3IgbWludXMgc2lnbiwgYnV0IG5vdCBpbmNs dWRpbmcgYW4gaW50ZWdlciBzdWZmaXguIElmIHRoZSB2YWx1ZQ0KPiArICAgIG9mIGJhc2UgaXMg YmV0d2VlbiAyIGFuZCAzNiAoaW5jbHVzaXZlKSwgdGhlIGV4cGVjdGVkIGZvcm0gb2YgdGhlIHN1 YmplY3QNCj4gKyAgICBzZXF1ZW5jZSBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgYW5kIGRpZ2l0 cyByZXByZXNlbnRpbmcgYW4gaW50ZWdlciB3aXRoDQo+ICsgICAgdGhlIHJhZGl4IHNwZWNpZmll ZCBieSBiYXNlLCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGEgcGx1cyBvciBtaW51cyBzaWduLA0K PiArICAgIGJ1dCBub3QgaW5jbHVkaW5nIGFuIGludGVnZXIgc3VmZml4LiBUaGUgbGV0dGVycyBm cm9tIGEgKG9yIEEpIHRocm91Z2ggeg0KPiArICAgIChvciBaKSBhcmUgYXNjcmliZWQgdGhlIHZh bHVlcyAxMCB0aHJvdWdoIDM1OyBvbmx5IGxldHRlcnMgYW5kIGRpZ2l0cyB3aG9zZQ0KPiArICAg IGFzY3JpYmVkIHZhbHVlcyBhcmUgbGVzcyB0aGFuIHRoYXQgb2YgYmFzZSBhcmUgcGVybWl0dGVk LiBJZiB0aGUgdmFsdWUgb2YNCj4gKyAgICBiYXNlIGlzIDE2LCB0aGUgY2hhcmFjdGVycyAweCBv ciAwWCBtYXkgb3B0aW9uYWxseSBwcmVjZWRlIHRoZSBzZXF1ZW5jZSBvZg0KPiArICAgIGxldHRl cnMgYW5kIGRpZ2l0cywgZm9sbG93aW5nIHRoZSBzaWduIGlmIHByZXNlbnQuDQo+ICsNCj4gKyAg ICBUaGUgc3ViamVjdCBzZXF1ZW5jZSBpcyBkZWZpbmVkIGFzIHRoZSBsb25nZXN0IGluaXRpYWwg c3Vic2VxdWVuY2Ugb2YgdGhlDQo+ICsgICAgaW5wdXQgc3RyaW5nLCBzdGFydGluZyB3aXRoIHRo ZSBmaXJzdCBub24td2hpdGUtc3BhY2UgY2hhcmFjdGVyLCB0aGF0IGlzIG9mDQo+ICsgICAgdGhl IGV4cGVjdGVkIGZvcm0uIFRoZSBzdWJqZWN0IHNlcXVlbmNlIGNvbnRhaW5zIG5vIGNoYXJhY3Rl cnMgaWYgdGhlIGlucHV0DQo+ICsgICAgc3RyaW5nIGlzIGVtcHR5IG9yIGNvbnNpc3RzIGVudGly ZWx5IG9mIHdoaXRlIHNwYWNlLCBvciBpZiB0aGUgZmlyc3QNCj4gKyAgICBub24td2hpdGUtc3Bh Y2UgY2hhcmFjdGVyIGlzIG90aGVyIHRoYW4gYSBzaWduIG9yIGEgcGVybWlzc2libGUgbGV0dGVy IG9yIGRpZ2l0Lg0KPiArDQo+ICsgICAgSWYgdGhlIHN1YmplY3Qgc2VxdWVuY2UgaGFzIHRoZSBl eHBlY3RlZCBmb3JtIGFuZCB0aGUgdmFsdWUgb2YgYmFzZSBpcw0KPiArICAgIHplcm8sIHRoZSBz ZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IGRpZ2l0IGlzDQo+ ICsgICAgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBjb25zdGFudC4gSWYgdGhlIHN1YmplY3Qg c2VxdWVuY2UgaGFzIHRoZQ0KPiArICAgIGV4cGVjdGVkIGZvcm0gYW5kIHRoZSB2YWx1ZSBvZiBi YXNlIGlzIGJldHdlZW4gMiBhbmQgMzYsIGl0IGlzIHVzZWQgYXMgdGhlDQo+ICsgICAgYmFzZSBm b3IgY29udmVyc2lvbiwgYXNjcmliaW5nIHRvIGVhY2ggbGV0dGVyIGl0cyB2YWx1ZSBhcyBnaXZl biBhYm92ZS4gSWYNCj4gKyAgICB0aGUgc3ViamVjdCBzZXF1ZW5jZSBiZWdpbnMgd2l0aCBhIG1p bnVzIHNpZ24sIHRoZSB2YWx1ZSByZXN1bHRpbmcgZnJvbSB0aGUNCj4gKyAgICBjb252ZXJzaW9u IGlzIG5lZ2F0ZWQgKGluIHRoZSByZXR1cm4gdHlwZSkuIEEgcG9pbnRlciB0byB0aGUgZmluYWwg c3RyaW5nDQo+ICsgICAgaXMgc3RvcmVkIGluIHRoZSBvYmplY3QgcG9pbnRlZCB0byBieSBlbmRw dHIsIHByb3ZpZGVkIHRoYXQgZW5kcHRyIGlzDQo+ICsgICAgbm90IGEgbnVsbCBwb2ludGVyLg0K PiArDQo+ICsgICAgSW4gb3RoZXIgdGhhbiB0aGUgIkMiIGxvY2FsZSwgYWRkaXRpb25hbCBsb2Nh bGUtc3BlY2lmaWMgc3ViamVjdCBzZXF1ZW5jZQ0KPiArICAgIGZvcm1zIG1heSBiZSBhY2NlcHRl ZC4NCj4gKw0KPiArICAgIElmIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGlzIGVtcHR5IG9yIGRvZXMg bm90IGhhdmUgdGhlIGV4cGVjdGVkIGZvcm0sIG5vDQo+ICsgICAgY29udmVyc2lvbiBpcyBwZXJm b3JtZWQ7IHRoZSB2YWx1ZSBvZiBucHRyIGlzIHN0b3JlZCBpbiB0aGUgb2JqZWN0IHBvaW50ZWQN Cj4gKyAgICB0byBieSBlbmRwdHIsIHByb3ZpZGVkIHRoYXQgZW5kcHRyIGlzIG5vdCBhIG51bGwg cG9pbnRlci4NCj4gKw0KPiArICBAcmV0dXJuICAgVGhlIHN0cnRvbCwgc3RydG9sbCwgc3RydG91 bCwgYW5kIHN0cnRvdWxsIGZ1bmN0aW9ucyByZXR1cm4gdGhlDQo+ICsgICAgICAgICAgICBjb252 ZXJ0ZWQgdmFsdWUsIGlmIGFueS4gSWYgbm8gY29udmVyc2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQs IHplcm8NCj4gKyAgICAgICAgICAgIGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdCB2YWx1ZSBp cyBvdXRzaWRlIHRoZSByYW5nZSBvZg0KPiArICAgICAgICAgICAgcmVwcmVzZW50YWJsZSB2YWx1 ZXMsIExPTkdfTUlOLCBMT05HX01BWCwgTExPTkdfTUlOLCBMTE9OR19NQVgsDQo+ICsgICAgICAg ICAgICBVTE9OR19NQVgsIG9yIFVMTE9OR19NQVggaXMgcmV0dXJuZWQgKGFjY29yZGluZyB0byB0 aGUgcmV0dXJuIHR5cGUNCj4gKyAgICAgICAgICAgIGFuZCBzaWduIG9mIHRoZSB2YWx1ZSwgaWYg YW55KSwgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFDQo+ICsgICAgICAgICAgICBp cyBzdG9yZWQgaW4gZXJybm8uDQo+ICsqKi8NCj4gK2xvbmcNCj4gK3N0cnRvbChjb25zdCBjaGFy ICogbnB0ciwgY2hhciAqKiBlbmRwdHIsIGludCBiYXNlKQ0KPiArew0KPiArICBjb25zdCBjaGFy ICpwRW5kOw0KPiArICBsb25nICAgICAgICBSZXN1bHQgPSAwOw0KPiArICBsb25nICAgICAgICBQ cmV2aW91czsNCj4gKyAgaW50ICAgICAgICAgdGVtcDsNCj4gKyAgQk9PTEVBTiAgICAgTmVnYXRp dmUgPSBGQUxTRTsNCj4gKw0KPiArICBwRW5kID0gbnB0cjsNCj4gKw0KPiArICBpZigoYmFzZSA8 IDApIHx8IChiYXNlID09IDEpIHx8IChiYXNlID4gMzYpKSB7DQo+ICsgICAgaWYoZW5kcHRyICE9 IE5VTEwpIHsNCj4gKyAgICAqZW5kcHRyID0gTlVMTDsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJu IDA7DQo+ICsgIH0NCj4gKyAgLy8gU2tpcCBsZWFkaW5nIHNwYWNlcy4NCj4gKyAgd2hpbGUoaXNz cGFjZSgqbnB0cikpICAgKytucHRyOw0KPiArDQo+ICsgIC8vIFByb2Nlc3MgU3ViamVjdCBzZXF1 ZW5jZTogb3B0aW9uYWwgc2lnbiBmb2xsb3dlZCBieSBkaWdpdHMuDQo+ICsgIGlmKCpucHRyID09 ICcrJykgew0KPiArICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsgICAgKytucHRyOw0KPiArICB9 DQo+ICsgIGVsc2UgaWYoKm5wdHIgPT0gJy0nKSB7DQo+ICsgICAgTmVnYXRpdmUgPSBUUlVFOw0K PiArICAgICsrbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmKCpucHRyID09ICcwJykgeyAgLyog TWlnaHQgYmUgT2N0YWwgb3IgSGV4ICovDQo+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9PSAn WCcpIHsgICAvKiBMb29rcyBsaWtlIEhleCAqLw0KPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwg KGJhc2UgPT0gMTYpKSB7DQo+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIwWCIg ICAgICAqLw0KPiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8N Cj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2UgT2N0 YWwgKi8NCj4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ICsgICAg ICAgICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ICsgICAgICAgIGJh c2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ICsgICAgICB9DQo+ICsgICAg fQ0KPiArICB9DQo+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHplcm8gdGhlbiBt dXN0IGJlIGRlY2ltYWwgKi8NCj4gKyAgICBiYXNlID0gMTA7DQo+ICsgIH0NCj4gKyAgaWYoKm5w dHIgID09ICcwJykgew0KPiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7ICAvKiBT a2lwIGFueSByZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0KPiArICAgIHBFbmQgPSBucHRyOw0K PiArICB9DQo+ICsNCj4gKyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERpZ2l0 MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsNCj4gKyAgICBQcmV2aW91cyA9IFJlc3VsdDsNCj4gKyAg ICBSZXN1bHQgPSAoUmVzdWx0ICogYmFzZSkgKyAobG9uZyBpbnQpdGVtcDsNCj4gKyAgICBpZigg UmVzdWx0IDw9IFByZXZpb3VzKSB7ICAgLy8gRGV0ZWN0IE92ZXJmbG93DQo+ICsgICAgICBpZihO ZWdhdGl2ZSkgew0KPiArICAgICAgICBSZXN1bHQgPSBMT05HX01JTjsNCj4gKyAgICAgIH0NCj4g KyAgICAgIGVsc2Ugew0KPiArICAgICAgICBSZXN1bHQgPSBMT05HX01BWDsNCj4gKyAgICAgIH0N Cj4gKyAgICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsgICAgICBlcnJubyA9IEVSQU5HRTsNCj4g KyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBwRW5kID0gKytucHRyOw0KPiArICB9DQo+ ICsgIGlmKE5lZ2F0aXZlKSB7DQo+ICsgICAgUmVzdWx0ID0gLVJlc3VsdDsNCj4gKyAgfQ0KPiAr DQo+ICsgIC8vIFNhdmUgcG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiArICBpZihlbmRwdHIg IT0gTlVMTCkgew0KPiArICAgICplbmRwdHIgPSAoY2hhciAqKXBFbmQ7DQo+ICsgIH0NCj4gKyAg cmV0dXJuIFJlc3VsdDsNCj4gK30NCj4gKw0KPiArLyoqIFRoZSBzdHJ0b3VsbCBmdW5jdGlvbiBj b252ZXJ0cyB0aGUgaW5pdGlhbCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcgcG9pbnRlZCB0bw0KPiAr ICAgIGJ5IG5wdHIgdG8gdW5zaWduZWQgbG9uZyBsb25nIGludCByZXByZXNlbnRhdGlvbi4NCj4g Kw0KPiArICAgIFNlZSB0aGUgZGVzY3JpcHRpb24gZm9yIHN0cnRvbCBmb3IgbW9yZSBpbmZvcm1h dGlvbi4NCj4gKw0KPiArICBAcmV0dXJuICAgVGhlIHN0cnRvdWxsIGZ1bmN0aW9uIHJldHVybnMg dGhlIGNvbnZlcnRlZCB2YWx1ZSwgaWYgYW55LiBJZiBubw0KPiArICAgICAgICAgICAgY29udmVy c2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3JyZWN0 DQo+ICsgICAgICAgICAgICB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZiByZXByZXNlbnRh YmxlIHZhbHVlcywgVUxMT05HX01BWCBpcw0KPiArICAgICAgICAgICAgcmV0dXJuZWQgYW5kIHRo ZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gKyoqLw0K PiArdW5zaWduZWQgbG9uZyBsb25nDQo+ICtzdHJ0b3VsbChjb25zdCBjaGFyICogbnB0ciwgY2hh ciAqKiBlbmRwdHIsIGludCBiYXNlKQ0KPiArew0KPiArICBjb25zdCBjaGFyICAgICAgICAgICAq cEVuZDsNCj4gKyAgdW5zaWduZWQgbG9uZyBsb25nICAgIFJlc3VsdCA9IDA7DQo+ICsgIHVuc2ln bmVkIGxvbmcgbG9uZyAgICBQcmV2aW91czsNCj4gKyAgaW50ICAgICAgICAgICAgICAgICAgIHRl bXA7DQo+ICsNCj4gKyAgcEVuZCA9IG5wdHI7DQo+ICsNCj4gKyAgaWYoKGJhc2UgPCAwKSB8fCAo YmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiArICAgIGlmKGVuZHB0ciAhPSBOVUxMKSB7 DQo+ICsgICAgKmVuZHB0ciA9IE5VTEw7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiAwOw0KPiAr ICB9DQo+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFjZXMuDQo+ICsgIHdoaWxlKGlzc3BhY2UoKm5w dHIpKSAgICsrbnB0cjsNCj4gKw0KPiArICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9w dGlvbmFsICsgc2lnbiBmb2xsb3dlZCBieSBkaWdpdHMuDQo+ICsgIGlmKCpucHRyID09ICcrJykg ew0KPiArICAgICsrbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmKCpucHRyID09ICcwJykgeyAg LyogTWlnaHQgYmUgT2N0YWwgb3IgSGV4ICovDQo+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9 PSAnWCcpIHsgICAvKiBMb29rcyBsaWtlIEhleCAqLw0KPiArICAgICAgaWYoKGJhc2UgPT0gMCkg fHwgKGJhc2UgPT0gMTYpKSB7DQo+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIw WCIgICAgICAqLw0KPiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAg Ki8NCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2Ug T2N0YWwgKi8NCj4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ICsg ICAgICAgICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ICsgICAgICAg IGJhc2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ICsgICAgICB9DQo+ICsg ICAgfQ0KPiArICB9DQo+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHplcm8gdGhl biBtdXN0IGJlIGRlY2ltYWwgKi8NCj4gKyAgICBiYXNlID0gMTA7DQo+ICsgIH0NCj4gKyAgaWYo Km5wdHIgID09ICcwJykgew0KPiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7ICAv KiBTa2lwIGFueSByZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0KPiArICAgIHBFbmQgPSBucHRy Ow0KPiArICB9DQo+ICsNCj4gKyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERp Z2l0MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsNCj4gKyAgICBQcmV2aW91cyA9IFJlc3VsdDsNCj4g KyAgICBSZXN1bHQgPSBEaXZVNjR4MzIgKFJlc3VsdCwgYmFzZSkgKyAodW5zaWduZWQgbG9uZyBs b25nKXRlbXA7DQo+ICsgICAgaWYoIFJlc3VsdCA8IFByZXZpb3VzKSAgeyAgIC8vIElmIHdlIG92 ZXJmbG93ZWQNCj4gKyAgICAgIFJlc3VsdCA9IFVMTE9OR19NQVg7DQo+ICsgICAgICBlcnJubyA9 IEVSQU5HRTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBwRW5kID0gKytucHRy Ow0KPiArICB9DQo+ICsNCj4gKyAgLy8gU2F2ZSBwb2ludGVyIHRvIGZpbmFsIHNlcXVlbmNlDQo+ ICsgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ICsgICAgKmVuZHB0ciA9IChjaGFyICopcEVuZDsN Cj4gKyAgfQ0KPiArICByZXR1cm4gUmVzdWx0Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgZWRr MiBKYW5zc29uIHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBkb3VibGVzLCBzaW1wbHkgcmV0dXJuIDAu DQo+ICsNCj4gKyAgVGhlc2UgY29udmVyc2lvbiBmdW5jdGlvbnMgY29udmVydCB0aGUgaW5pdGlh bCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcNCj4gKyAgcG9pbnRlZCB0byBieSBucHRyIHRvIGRvdWJs ZSwgZmxvYXQsIGFuZCBsb25nIGRvdWJsZSByZXByZXNlbnRhdGlvbiwNCj4gKyAgcmVzcGVjdGl2 ZWx5Lg0KPiArDQo+ICsgIFRoZSBzdHJ0b2QoKSwgc3RydG9mKCksIGFuZCBzdHJ0b2xkKCkgZnVu Y3Rpb25zIHJldHVybiB0aGUgY29udmVydGVkDQo+ICsgIHZhbHVlLCBpZiBhbnkuDQo+ICsNCj4g KyAgSWYgZW5kcHRyIGlzIG5vdCBOVUxMLCBhIHBvaW50ZXIgdG8gdGhlIGNoYXJhY3RlciBhZnRl ciB0aGUgbGFzdCBjaGFyYWMtDQo+ICsgIHRlciB1c2VkIGluIHRoZSBjb252ZXJzaW9uIGlzIHN0 b3JlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieQ0KPiArICBlbmRwdHIuDQo+ICsNCj4g KyAgSWYgbm8gY29udmVyc2lvbiBpcyBwZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQgYW5kIHRo ZSB2YWx1ZSBvZiBucHRyIGlzDQo+ICsgIHN0b3JlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNl ZCBieSBlbmRwdHIuDQo+ICsNCj4gKyAgSWYgdGhlIGNvcnJlY3QgdmFsdWUgd291bGQgY2F1c2Ug b3ZlcmZsb3csIHBsdXMgb3IgbWludXMgSFVHRV9WQUwsDQo+ICsgIEhVR0VfVkFMRiwgb3IgSFVH RV9WQUxMIGlzIHJldHVybmVkIChhY2NvcmRpbmcgdG8gdGhlIHNpZ24gYW5kIHR5cGUgb2YNCj4g KyAgdGhlIHJldHVybiB2YWx1ZSksIGFuZCBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLiAgSWYg dGhlIGNvcnJlY3QgdmFsdWUNCj4gKyAgd291bGQgY2F1c2UgdW5kZXJmbG93LCB6ZXJvIGlzIHJl dHVybmVkIGFuZCBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0KPiArDQo+ICsgIEByZXR1cm4g IFJldHVybiAwLg0KPiArKiovDQo+ICtkb3VibGUNCj4gK3N0cnRvZCAoY29uc3QgY2hhciAqIF9f cmVzdHJpY3QgbnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IGVuZHB0cikgew0KPiArICAgIGlmKGVu ZHB0cikNCj4gKyAgICAgICplbmRwdHIgPSAoY2hhciAqKShucHRyICsgc3RybGVuKG5wdHIpKTsN Cj4gKw0KPiArICAgIHJldHVybiAoZG91YmxlKTA7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBB bGxvY2F0ZSBhbmQgemVyby1pbml0aWFsaXplIGFycmF5Lg0KPiArKiovDQo+ICt2b2lkICoNCj4g K2NhbGxvYyhzaXplX3QgTnVtLCBzaXplX3QgU2l6ZSkNCj4gK3sNCj4gKyAgdm9pZCAgICAgICAq UmV0VmFsOw0KPiArICBzaXplX3QgICAgICBOdW1TaXplOw0KPiArDQo+ICsgIE51bVNpemUgPSBO dW0gKiBTaXplOw0KPiArICBSZXRWYWwgID0gTlVMTDsNCj4gKyAgaWYgKE51bVNpemUgIT0gMCkg ew0KPiArICBSZXRWYWwgPSBtYWxsb2MoTnVtU2l6ZSk7DQo+ICsgIGlmKCBSZXRWYWwgIT0gTlVM TCkgew0KPiArICAgIChWT0lEKVplcm9NZW0oIFJldFZhbCwgTnVtU2l6ZSk7DQo+ICsgIH0NCj4g KyAgfQ0KPiArICBERUJVRygoREVCVUdfUE9PTCwgIjB4JXAgPSBjYWxsb2MoJWQsICVkKVxuIiwg UmV0VmFsLCBOdW0sIFNpemUpKTsNCj4gKw0KPiArICByZXR1cm4gUmV0VmFsOw0KPiArfQ0KPiAr DQo+ICsvLw0KPiArLy8gIFRoZSBhcnJheXMgZ2l2ZSB0aGUgY3VtdWxhdGl2ZSBudW1iZXIgb2Yg ZGF5cyB1cCB0byB0aGUgZmlyc3Qgb2YgdGhlDQo+ICsvLyAgbW9udGggbnVtYmVyIHVzZWQgYXMg dGhlIGluZGV4ICgxIC0+IDEyKSBmb3IgcmVndWxhciBhbmQgbGVhcCB5ZWFycy4NCj4gKy8vICBU aGUgdmFsdWUgYXQgaW5kZXggMTMgaXMgZm9yIHRoZSB3aG9sZSB5ZWFyLg0KPiArLy8NCj4gK1VJ TlROIEN1bXVsYXRpdmVEYXlzWzJdWzE0XSA9IHsNCj4gKyAgew0KPiArICAgIDAsDQo+ICsgICAg MCwNCj4gKyAgICAzMSwNCj4gKyAgICAzMSArIDI4LA0KPiArICAgIDMxICsgMjggKyAzMSwNCj4g KyAgICAzMSArIDI4ICsgMzEgKyAzMCwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxLA0K PiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCwNCj4gKyAgICAzMSArIDI4ICsgMzEg KyAzMCArIDMxICsgMzAgKyAzMSwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAg KyAzMSArIDMxLA0KPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEg KyAzMCwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAg KyAzMSwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAg KyAzMSArIDMwLA0KPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEg KyAzMCArIDMxICsgMzAgKyAzMQ0KPiArICB9LA0KPiArICB7DQo+ICsgICAgMCwNCj4gKyAgICAw LA0KPiArICAgIDMxLA0KPiArICAgIDMxICsgMjksDQo+ICsgICAgMzEgKyAyOSArIDMxLA0KPiAr ICAgIDMxICsgMjkgKyAzMSArIDMwLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEsDQo+ ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiArICAgIDMxICsgMjkgKyAzMSAr IDMwICsgMzEgKyAzMCArIDMxLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCAr IDMxICsgMzEsDQo+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSAr IDMwLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCAr IDMxLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCAr IDMxICsgMzAsDQo+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSAr IDMwICsgMzEgKyAzMCArIDMxDQo+ICsgIH0NCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgSXNMZWFw KHkpICAgKCgoeSkgJSA0KSA9PSAwICYmICgoKHkpICUgMTAwKSAhPSAwIHx8ICgoeSkgJSA0MDAp ID09IDApKQ0KPiArI2RlZmluZSBTRUNTUEVSTUlOICAoNjApDQo+ICsjZGVmaW5lIFNFQ1NQRVJI T1VSICg2MCAqIDYwKQ0KPiArI2RlZmluZSBTRUNTUEVSREFZICAoMjQgKiBTRUNTUEVSSE9VUikN Cj4gKw0KPiArLyoqDQo+ICsgIEdldCB0aGUgc3lzdGVtIHRpbWUgYXMgc2Vjb25kcyBlbGFwc2Vk IHNpbmNlIG1pZG5pZ2h0LCBKYW51YXJ5IDEsIDE5NzAuDQo+ICsqKi8NCj4gK3RpbWVfdCB0aW1l ICh0aW1lX3QgKnRpbWVyKQ0KPiArew0KPiArICBFRklfVElNRSAgVGltZTsNCj4gKyAgdGltZV90 ICAgIENhbFRpbWU7DQo+ICsgIFVJTlROICAgICBZZWFyOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8v IEdldCB0aGUgY3VycmVudCB0aW1lIGFuZCBkYXRlIGluZm9ybWF0aW9uDQo+ICsgIC8vDQo+ICsg IGdSVC0+R2V0VGltZSAoJlRpbWUsIE5VTEwpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFllYXJz IEhhbmRsaW5nDQo+ICsgIC8vIFVUaW1lIHNob3VsZCBub3cgYmUgc2V0IHRvIDAwOjAwOjAwIG9u IEphbiAxIG9mIHRoZSBjdXJyZW50IHllYXIuDQo+ICsgIC8vDQo+ICsgIGZvciAoWWVhciA9IDE5 NzAsIENhbFRpbWUgPSAwOyBZZWFyICE9IFRpbWUuWWVhcjsgWWVhcisrKSB7DQo+ICsgICAgQ2Fs VGltZSA9IENhbFRpbWUgKyAodGltZV90KShDdW11bGF0aXZlRGF5c1tJc0xlYXAoWWVhcildWzEz XSAqIFNFQ1NQRVJEQVkpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWRkIGluIG51 bWJlciBvZiBzZWNvbmRzIGZvciBjdXJyZW50IE1vbnRoLCBEYXksIEhvdXIsIE1pbnV0ZSwgU2Vj b25kcywgYW5kIFRpbWVab25lIGFkanVzdG1lbnQNCj4gKyAgLy8NCj4gKyAgQ2FsVGltZSA9IENh bFRpbWUgKw0KPiArICAgICAgICAgICAgKHRpbWVfdCkoKFRpbWUuVGltZVpvbmUgIT0gRUZJX1VO U1BFQ0lGSUVEX1RJTUVaT05FKSA/IChUaW1lLlRpbWVab25lICogNjApIDogMCkgKw0KPiArICAg ICAgICAgICAgKHRpbWVfdCkoQ3VtdWxhdGl2ZURheXNbSXNMZWFwKFRpbWUuWWVhcildW1RpbWUu TW9udGhdICogU0VDU1BFUkRBWSkgKw0KPiArICAgICAgICAgICAgKHRpbWVfdCkoKChUaW1lLkRh eSA+IDApID8gVGltZS5EYXkgLSAxIDogMCkgKiBTRUNTUEVSREFZKSArDQo+ICsgICAgICAgICAg ICAodGltZV90KShUaW1lLkhvdXIgKiBTRUNTUEVSSE9VUikgKw0KPiArICAgICAgICAgICAgKHRp bWVfdCkoVGltZS5NaW51dGUgKiA2MCkgKw0KPiArICAgICAgICAgICAgKHRpbWVfdClUaW1lLlNl Y29uZDsNCj4gKw0KPiArICBpZiAodGltZXIgIT0gTlVMTCkgew0KPiArICAgICp0aW1lciA9IENh bFRpbWU7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gQ2FsVGltZTsNCj4gK30NCj4gKw0KPiAr dHlwZWRlZg0KPiAraW50DQo+ICsoKlNPUlRfQ09NUEFSRSkoDQo+ICsgIElOICBWT0lEICAqQnVm ZmVyMSwNCj4gKyAgSU4gIFZPSUQgICpCdWZmZXIyDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiAr ICBEdXBsaWNhdGVkIGZyb20gRURLSUkgQmFzZVNvcnRMaWIgZm9yIHFzb3J0KCkgd3JhcHBlcg0K PiArICBAcGFyYW1baW4sIG91dF0gQnVmZmVyVG9Tb3J0ICAgb24gY2FsbCBhIEJ1ZmZlciBvZiAo cG9zc2libHkgc29ydGVkKSBlbGVtZW50cw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb24gcmV0dXJuIGEgYnVmZmVyIG9mIHNvcnRlZCBlbGVtZW50cw0KPiArICBAcGFyYW1b aW5dIENvdW50ICAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYnVm ZmVyIHRvIHNvcnQNCj4gKyAgQHBhcmFtW2luXSBFbGVtZW50U2l6ZSAgICAgICAgIFNpemUgb2Yg YW4gZWxlbWVudCBpbiBieXRlcw0KPiArICBAcGFyYW1baW5dIENvbXBhcmVGdW5jdGlvbiAgICAg VGhlIGZ1bmN0aW9uIHRvIGNhbGwgdG8gcGVyZm9ybSB0aGUgY29tcGFyaXNvbg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYW55IDIgZWxlbWVudHMNCj4gKyAgQHBhcmFt W2luXSBCdWZmZXIgICAgICAgICAgICAgIEJ1ZmZlciBvZiBzaXplIEVsZW1lbnRTaXplIGZvciB1 c2UgaW4gc3dhcHBpbmcNCj4gKyoqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtRdWlja1NvcnRX b3JrZXIgKA0KPiArICBJTiBPVVQgICAgVk9JRCAgICAgICAgICAqQnVmZmVyVG9Tb3J0LA0KPiAr ICBJTiBDT05TVCAgVUlOVE4gICAgICAgICBDb3VudCwNCj4gKyAgSU4gQ09OU1QgIFVJTlROICAg ICAgICAgRWxlbWVudFNpemUsDQo+ICsgIElOICAgICAgICBTT1JUX0NPTVBBUkUgIENvbXBhcmVG dW5jdGlvbiwNCj4gKyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgKkJ1ZmZlcg0KPiArICApDQo+ ICt7DQo+ICsgIFZPSUQgICAgICAgICpQaXZvdDsNCj4gKyAgVUlOVE4gICAgICAgTG9vcENvdW50 Ow0KPiArICBVSU5UTiAgICAgICBOZXh0U3dhcExvY2F0aW9uOw0KPiArDQo+ICsgIEFTU0VSVChC dWZmZXJUb1NvcnQgICAgIT0gTlVMTCk7DQo+ICsgIEFTU0VSVChDb21wYXJlRnVuY3Rpb24gIT0g TlVMTCk7DQo+ICsgIEFTU0VSVChCdWZmZXIgICAgICAgICAgIT0gTlVMTCk7DQo+ICsNCj4gKyAg aWYgKENvdW50IDwgMiB8fCBFbGVtZW50U2l6ZSAgPCAxKSB7DQo+ICsgICAgcmV0dXJuOw0KPiAr ICB9DQo+ICsNCj4gKyAgTmV4dFN3YXBMb2NhdGlvbiA9IDA7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gUGljayBhIHBpdm90ICh3ZSBjaG9vc2UgbGFzdCBlbGVtZW50KQ0KPiArICAvLw0KPiArICBQ aXZvdCA9ICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoKENvdW50IC0gMSkgKiBFbGVtZW50U2l6 ZSkpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIE5vdyBnZXQgdGhlIHBpdm90IHN1Y2ggdGhhdCBh bGwgb24gImxlZnQiIGFyZSBiZWxvdyBpdA0KPiArICAvLyBhbmQgZXZlcnl0aGluZyAicmlnaHQi IGFyZSBhYm92ZSBpdA0KPiArICAvLw0KPiArICBmb3IgKExvb3BDb3VudCA9IDA7IExvb3BDb3Vu dCA8IENvdW50IC0gMTsgIExvb3BDb3VudCsrKQ0KPiArICB7DQo+ICsgICAgLy8NCj4gKyAgICAv LyBJZiB0aGUgZWxlbWVudCBpcyBsZXNzIHRoYW4gdGhlIHBpdm90DQo+ICsgICAgLy8NCj4gKyAg ICBpZiAoQ29tcGFyZUZ1bmN0aW9uICgoVk9JRCAqKSgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAo KExvb3BDb3VudCkgKiBFbGVtZW50U2l6ZSkpLCBQaXZvdCkgPD0gMCkgew0KPiArICAgICAgLy8N Cj4gKyAgICAgIC8vIFN3YXANCj4gKyAgICAgIC8vDQo+ICsgICAgICBDb3B5TWVtIChCdWZmZXIs IChVSU5UOCAqKUJ1ZmZlclRvU29ydCArIChOZXh0U3dhcExvY2F0aW9uICogRWxlbWVudFNpemUp LCBFbGVtZW50U2l6ZSk7DQo+ICsgICAgICBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQg KyAoTmV4dFN3YXBMb2NhdGlvbiAqIEVsZW1lbnRTaXplKSwgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0 ICsgKChMb29wQ291bnQpICoNCj4gRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7DQo+ICsgICAg ICBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoKExvb3BDb3VudCkgKiBFbGVtZW50 U2l6ZSksIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiArDQo+ICsgICAgICAvLw0KPiArICAgICAg Ly8gSW5jcmVtZW50IE5leHRTd2FwTG9jYXRpb24NCj4gKyAgICAgIC8vDQo+ICsgICAgICBOZXh0 U3dhcExvY2F0aW9uKys7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsgIC8vDQo+ICsgIC8vIFN3YXAg cGl2b3QgdG8gaXQncyBmaW5hbCBwb3NpdGlvbiAoTmV4dFN3YXBMb2NhaXRvbikNCj4gKyAgLy8N Cj4gKyAgQ29weU1lbSAoQnVmZmVyLCBQaXZvdCwgRWxlbWVudFNpemUpOw0KPiArICBDb3B5TWVt IChQaXZvdCwgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKE5leHRTd2FwTG9jYXRpb24gKiBFbGVt ZW50U2l6ZSksIEVsZW1lbnRTaXplKTsNCj4gKyAgQ29weU1lbSAoKFVJTlQ4ICopQnVmZmVyVG9T b3J0ICsgKE5leHRTd2FwTG9jYXRpb24gKiBFbGVtZW50U2l6ZSksIEJ1ZmZlciwgRWxlbWVudFNp emUpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIE5vdyByZWN1cnNlIG9uIDIgcGFyaXRpYWwgbGlz dHMuICBOZWl0aGVyIG9mIHRoZXNlIHdpbGwgaGF2ZSB0aGUgJ3Bpdm90JyBlbGVtZW50Lg0KPiAr ICAvLyBJRSBsaXN0IGlzIHNvcnRlZCBsZWZ0IGhhbGYsIHBpdm90IGVsZW1lbnQsIHNvcnRlZCBy aWdodCBoYWxmLi4uDQo+ICsgIC8vDQo+ICsgIFF1aWNrU29ydFdvcmtlciAoDQo+ICsgICAgQnVm ZmVyVG9Tb3J0LA0KPiArICAgIE5leHRTd2FwTG9jYXRpb24sDQo+ICsgICAgRWxlbWVudFNpemUs DQo+ICsgICAgQ29tcGFyZUZ1bmN0aW9uLA0KPiArICAgIEJ1ZmZlcg0KPiArICAgICk7DQo+ICsN Cj4gKyAgUXVpY2tTb3J0V29ya2VyICgNCj4gKyAgICAoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAo TmV4dFN3YXBMb2NhdGlvbiArIDEpICogRWxlbWVudFNpemUsDQo+ICsgICAgQ291bnQgLSBOZXh0 U3dhcExvY2F0aW9uIC0gMSwNCj4gKyAgICBFbGVtZW50U2l6ZSwNCj4gKyAgICBDb21wYXJlRnVu Y3Rpb24sDQo+ICsgICAgQnVmZmVyDQo+ICsgICAgKTsNCj4gKw0KPiArICByZXR1cm47DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICBQZXJmb3JtcyBhIHF1aWNrIHNvcnQNCj4gKyoqLw0KPiArdm9p ZCBxc29ydCAodm9pZCAqYmFzZSwgc2l6ZV90IG51bSwgc2l6ZV90IHdpZHRoLCBpbnQgKCpjb21w YXJlKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpDQo+ICt7DQo+ICsgIFZPSUQgICpCdWZm ZXI7DQo+ICsNCj4gKyAgQVNTRVJUIChiYXNlICAgICE9IE5VTEwpOw0KPiArICBBU1NFUlQgKGNv bXBhcmUgIT0gTlVMTCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVXNlIENSVC1zdHlsZSBtYWxs b2MgdG8gY292ZXIgQlMgYW5kIFJUIG1lbW9yeSBhbGxvY2F0aW9uLg0KPiArICAvLw0KPiArICBC dWZmZXIgPSBtYWxsb2MgKHdpZHRoKTsNCj4gKyAgQVNTRVJUIChCdWZmZXIgIT0gTlVMTCk7DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gUmUtdXNlIFBlcmZvcm1RdWlja1NvcnQoKSBmdW5jdGlvbiBJ bXBsZW1lbnRhdGlvbiBpbiBFREtJSSBCYXNlU29ydExpYi4NCj4gKyAgLy8NCj4gKyAgUXVpY2tT b3J0V29ya2VyIChiYXNlLCAoVUlOVE4pbnVtLCAoVUlOVE4pd2lkdGgsIChTT1JUX0NPTVBBUkUp Y29tcGFyZSwgQnVmZmVyKTsNCj4gKw0KPiArICBmcmVlIChCdWZmZXIpOw0KPiArICByZXR1cm47 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBHZXQgY2hhcmFjdGVyIGZyb20gc3RyZWFtLCB3ZSBk b24ndCBzdXBwb3J0IGZpbGUgb3BlcmFzdGlvbiBvbiBlZGsyIEpTT04gbGlicmFyeS4NCj4gKw0K PiArICBAcmV0dXJuIFJldHVybnMgdGhlIGNoYXJhY3RlciBjdXJyZW50bHkgcG9pbnRlZCBieSB0 aGUgaW50ZXJuYWwgZmlsZSBwb3NpdGlvbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBzdHJl YW0NCj4gKw0KPiArKiovDQo+ICtpbnQgZmdldGMoRklMRSAqIF9GaWxlKXsNCj4gKyAgIHJldHVy biAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRM aWIuaW5mIGIvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmI1MTQ4MTdjZjQNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5pbmYNCj4gQEAg LTAsMCArMSwzNyBAQA0KPiArIyMgQGZpbGUNCj4gKyMgRURLMiBDIFJ1bnRpbWUgTGlicmFyeSBm b3Igb3BlbnNvdXJjZSBwcm9qZWN0Lg0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTksIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgKEMpIENvcHly aWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0K PiArIw0KPiArIyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KPiArIw0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAg ICAgICAgICAgICAgICA9IDB4MDAwMTAwMWINCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAg ICAgICAgID0gQ3J0TGliDQo+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDgy NjNCOEFDLUQwMjEtNDI1RC1CMzM3LTNFQzk2RjVEQzE5Qg0KPiArICBNT0RVTEVfVFlQRSAgICAg ICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAg ICAgICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBDcnRM aWJ8RFhFX0NPUkUgRFhFX0RSSVZFUiBEWEVfUlVOVElNRV9EUklWRVIgRFhFX1NNTV9EUklWRVIg VUVGSV9BUFBMSUNBVElPTg0KPiBVRUZJX0RSSVZFUg0KPiArDQo+ICsjDQo+ICsjICBWQUxJRF9B UkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEFSTSBBQVJDSDY0IFJJU0NWNjQNCj4g KyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIENydExpYi5jDQo+ICsNCj4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gKyAgQmFzZUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBNZW1vcnlBbGxvY2F0aW9u TGliDQo+ICsgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KPiArDQo+ICtbUGFja2FnZXNd DQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cu ZGVjDQo+ICsgIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMNCj4gKw0KPiArDQo+IGRpZmYgLS1n aXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMgYi9SZWRmaXNoUGtnL1JlZGZpc2hM aWJzLmRzYy5pbmMNCj4gaW5kZXggZDRjMDhlMThhYy4uMmE5NTFiZDhmYSAxMDA2NDQNCj4gLS0t IGEvUmVkZmlzaFBrZy9SZWRmaXNoTGlicy5kc2MuaW5jDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVk ZmlzaExpYnMuZHNjLmluYw0KPiBAQCAtMTIsNSArMTIsNiBAQA0KPiAgIyMNCj4gICFpZiAkKFJF REZJU0hfRU5BQkxFKSA9PSBUUlVFDQo+ICAgIFVjczJVdGY4TGlifFJlZGZpc2hQa2cvTGlicmFy eS9CYXNlVWNzMlV0ZjhMaWIvQmFzZVVjczJVdGY4TGliLmluZg0KPiArICBDcnRMaWJ8UmVkZmlz aFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ICAhZW5kaWYNCj4gDQo+IGRpZmYgLS1n aXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuY2kueWFtbCBiL1JlZGZpc2hQa2cvUmVkZmlzaFBr Zy5jaS55YW1sDQo+IGluZGV4IDIwYzI5N2FkMjIuLjk4OTVmZGFjOTkgMTAwNjQ0DQo+IC0tLSBh L1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1sDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlz aFBrZy5jaS55YW1sDQo+IEBAIC0xNyw2ICsxNywyNSBAQA0KPiAgICAgICAgICBdLA0KPiAgICAg ICAgICAjIyBCb3RoIGZpbGUgcGF0aCBhbmQgZGlyZWN0b3J5IHBhdGggYXJlIGFjY2VwdGVkLg0K PiAgICAgICAgICAiSWdub3JlRmlsZXMiOiBbDQo+ICsgICAgICAgICAgICAjIyBCZWxvdyBhcmUg ZmlsZXMgaW5jb3Jwb3JhdGVkIHdpdGggb3BlbiBzb3VyY2Ugd2hpY2ggYXJlDQo+ICsgICAgICAg ICAgICAjIyBub3QgZWRrMiBjb2Rpbmcgc3RhbmRhcmQgY29tcGxpYW50Lg0KPiArICAgICAgICAg ICAgIyMNCj4gKyAgICAgICAgICAgICMjIEVESzIgQ1JUIGxpYnJhcnkgd2hpY2ggaXMgbm90IGVk azIgY29kaW5nDQo+ICsgICAgICAgICAgICAjIyBzdGFuZGFyZCBjb21wbGlhbnQuDQo+ICsgICAg ICAgICAgICAjIyBDIHJ1bnRpbWUgbGlicmFyeSBmb3IgRURLSUkgSnNvbkxpYi4NCj4gKyAgICAg ICAgICAgICJJbmNsdWRlL0NydC9zeXMiLA0KPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L2Fz c2VydC5oIiwNCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9lcnJuby5oIiwNCj4gKyAgICAg ICAgICAgICJJbmNsdWRlL0NydC9saW1pdHMuaCIsDQo+ICsgICAgICAgICAgICAiSW5jbHVkZS9D cnQvbWF0aC5oIiwNCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9zdGRhcmcuaCIsDQo+ICsg ICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3RkZGVmLmgiLA0KPiArICAgICAgICAgICAgIkluY2x1 ZGUvQ3J0L3N0ZGlvLmgiLA0KPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGxpYi5oIiwN Cj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9zdHJpbmcuaCIsDQo+ICsgICAgICAgICAgICAi SW5jbHVkZS9DcnQvdGltZS5oIiwNCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0xpYnJhcnkvQ3J0 TGliLmgiLA0KPiArICAgICAgICAgICAgIkxpYnJhcnkvQ3J0TGliL0NydExpYi5jIg0KPiAgICAg ICAgICBdDQo+ICAgICAgfSwNCj4gICAgICAiQ29tcGlsZXJQbHVnaW4iOiB7DQo+IGRpZmYgLS1n aXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRl Yw0KPiBpbmRleCBhZWNjMWY0YTNhLi4yMTQyYjQzNjQwIDEwMDY0NA0KPiAtLS0gYS9SZWRmaXNo UGtnL1JlZGZpc2hQa2cuZGVjDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMNCj4g QEAgLTE1LDE2ICsxNSwyNCBAQA0KPiANCj4gIFtJbmNsdWRlc10NCj4gICAgSW5jbHVkZQ0KPiAr ICBJbmNsdWRlL0NydCAgICAgICAgICAgICAgICAgICAjIEhlYWRlciBmaWxlcyBmb3IgQyBSVEwu DQo+IA0KPiAgW0xpYnJhcnlDbGFzc2VzXQ0KPiAgICAjIyAgQGxpYnJhcnljbGFzcyBQbGF0Zm9y bSBSZWRmaXNoIEhvc3QgSW50ZXJmYWNlIExpYnJhcnkNCj4gICAgIyAgIFBsYXRmb3JtIGltcGxl bWVudGF0aW9uLXNwZWNpZmljIFJlZGZpc2ggSG9zdCBJbnRlcmZhY2UuDQo+ICAgIFJlZGZpc2hQ bGF0Zm9ybUhvc3RJbnRlcmZhY2VMaWJ8SW5jbHVkZS9MaWJyYXJ5L1JlZGZpc2hIb3N0SW50ZXJm YWNlTGliLmgNCj4gKw0KPiAgICAjIyAgQGxpYnJhcnljbGFzcyAgVGhpcyBsaWJyYXJ5IHByb3Zp ZGVzIFVDUzIgdG8gVVRGOCBtYW5pcHVsYXRpb24NCj4gICAgIyAgIGZ1bmN0aW9ucy4NCj4gICAg Iw0KPiAgICBVY3MyVXRmOExpYnxJbmNsdWRlL0xpYnJhcnkvQmFzZVVjczJVdGY4TGliLmgNCj4g DQo+ICsgICMjICBAbGlicmFyeWNsYXNzICBQcm92aWRlcyB0aGUgQyBydW50aW1lIGxpYnJhcnkg ZnVuY3Rpb25zDQo+ICsgICMgICBDUlQgbGlicmFyeSBpcyBjdXJyZW50bHkgdXNlZCBieSBlZGsy IEpzb25MaWIgKG9wZW4gc291cmNlDQo+ICsgICMgICBqYW5zc29uIHByb2plY3QpIGFuZCBlZGsy IFJlZGZpc2hMaWIgKGxpYnJlZGZpc2ggb3BlbiBzb3VyY2UNCj4gKyAgIyAgIHByb2plY3QpLg0K PiArICBDcnRMaWJ8SW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oDQo+ICsNCj4gIFtQcm90b2NvbHNd DQo+ICAgICMjIEluY2x1ZGUvUHJvdG9jb2wvUmVkZmlzaERpc2NvdmVyLmgNCj4gICAgZ0VmaVJl ZGZpc2hEaXNjb3ZlclByb3RvY29sR3VpZCAgICAgID0geyAweDVkYjEyNTA5LCAweDQ1NTAsIDB4 NDM0NywgeyAweDk2LCAweGIzLCAweDczLCAweGMwLCAweGZmLCAweDZlLCAweDg2LCAweDlmDQo+ IH19DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjIGIvUmVkZmlzaFBr Zy9SZWRmaXNoUGtnLmRzYw0KPiBpbmRleCAzNjM5YjYyMGU2Li5hYTFjY2Q1YTk1IDEwMDY0NA0K PiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVk ZmlzaFBrZy5kc2MNCj4gQEAgLTQ4LDUgKzQ4LDYgQEANCj4gIFtDb21wb25lbnRzXQ0KPiAgICBS ZWRmaXNoUGtnL0xpYnJhcnkvUGxhdGZvcm1Ib3N0SW50ZXJmYWNlTGliTnVsbC9QbGF0Zm9ybUhv c3RJbnRlcmZhY2VMaWJOdWxsLmluZg0KPiAgICBSZWRmaXNoUGtnL0xpYnJhcnkvQmFzZVVjczJV dGY4TGliL0Jhc2VVY3MyVXRmOExpYi5pbmYNCj4gKyAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExp Yi9DcnRMaWIuaW5mDQo+IA0KPiAgICAhaW5jbHVkZSBSZWRmaXNoUGtnL1JlZGZpc2guZHNjLmlu Yw0KPiAtLQ0KPiAyLjE3LjENCj4gDQo+IA0KPiANCj4gDQo+IA0KDQo=