From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web09.3394.1607991581876969150 for ; Mon, 14 Dec 2020 16:19:42 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=FyYyaDea; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: oG8WwuGRgbgyanT9gpvaJQckFMZ30TlS0EpBMDDYLUfiuvvmwvp5W4Aze8oa3tnpTStW9Tl46w yx5mqKWTB5dw== X-IronPort-AV: E=McAfee;i="6000,8403,9835"; a="171293862" X-IronPort-AV: E=Sophos;i="5.78,420,1599548400"; d="scan'208";a="171293862" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2020 16:19:40 -0800 IronPort-SDR: +wo5HAynq9w9rgxqr8yvmm8/gjO4jwF0amm2XbjnFmPutCg1i8XD+FoZ8grz7LLrbhvYxv+IwD dxo/14lRmS7Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,420,1599548400"; d="scan'208";a="335018840" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga008.fm.intel.com with ESMTP; 14 Dec 2020 16:19:40 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx605.amr.corp.intel.com (10.18.126.85) 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 16:19:40 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx611.amr.corp.intel.com (10.18.126.91) 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 16:19:40 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.174) by edgegateway.intel.com (192.55.55.71) 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 16:19:39 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gc4Fa1BhT/WGdufqTytr2r4KI6v02kDdJvFhZMIfjvlrr3ZITu1W+fVxUFLOEL+c7InDoGngwyIf+byp+HWbVwtYs+Av6wPpbvd9gqZ3d3tk5lWHb0k/OUVR3AMAOoEUCQZSk/m5Bii4ROsz99Ts3ds0C6s41T9864qru9+wSYlv5p6zAPuvxJZYKX7bYxjQUaqEp/tpt1ERV6izSaaVmamE5DZDtrqZfUcqigB22cX5/DifWG+UtfUwuHx82d+/RZGogQnP6zcQggnJ+Jbnuel9+A4zS3N5wxHAePhas+vU4TmcgQN+MSBEHtjCtmjvaUsm2vEkTzMvBfOSNFtYgg== 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=EPm97yyZLgChA/uQp9NoRg3YkN1QecPKgRIckV/gtbw=; b=SS53w+xZwFU8TRhE9gkOb7oxiTxiGzegwyAhiW/pl04FIbxJgPrh0mH/X1x238zK5KCLxpCp1Q4rymf4ZkMisgb3ZtYvybGJUMFzkcUFNPTr8J0ux9gWh+/iI6QU0NkavmsPrzBGpUTUi6QHL5h+VlghD5iaQNQ58yuI9U83FKEWkXleaTHeJwcqQPGkvrxScVWtNnlJkrO8Bsltrdf8NmqAudqVrM7Xrky3g3oSFZcO20R1tc75/L68XnqlL6B8sMC1uKVBn59ys45KY5T3s+85z3ftB8WCsRRgOnV9jIf4VQLzTl6+RiAna6QHRmGZB9ASCJ7Y6zlVCfiXb1SnLw== 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=EPm97yyZLgChA/uQp9NoRg3YkN1QecPKgRIckV/gtbw=; b=FyYyaDea9GpheetKgBwcuxNfvyEOY7HN9P4c0yRHc7qQ7hf9Kf8BD7hszuTNsS36jaRYwbJ/4Cr5gRo6JWJ9eVUDy+lEfoVmVPgsILQhjekHMmp3W0PsN5UpO0sb3XxBryzTNkeyhza2ozBoFqUPZ44XxvFH4MBRf8THjCWjhHc= Received: from BL0PR11MB3236.namprd11.prod.outlook.com (2603:10b6:208:60::18) by BL0PR11MB3155.namprd11.prod.outlook.com (2603:10b6:208:68::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12; Tue, 15 Dec 2020 00:19:37 +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; Tue, 15 Dec 2020 00:19:37 +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: AQHW0jOnCVnLFzoXRkG3ZBb2k8r8t6n3Syhg Date: Tue, 15 Dec 2020 00:19:36 +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: 46b5558b-f94d-4dd6-1f79-08d8a08f1b47 x-ms-traffictypediagnostic: BL0PR11MB3155: 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: od0l5imaOyIP3nwZAl+xHQ7mkmiNbQ4VXk7/G6QYxtBpCUJL2Z9JKbI1dpxQm6B9QASqXzC+ImYOMECmbfl2DRwUGxauDZGngD3iGjWk+DxrtlkRynvqknlIW6S5cjDgFoJhYlir6b68s6k+NdgDrxjI8VYo2RBYmC8P7rQ2P9Mop3i6CHFMuzPvr/Ozxk7jGpMT8VRogHZFe7qi6Fs8/0njEFBYRkzW6d0B4HVVY7rrALI/hLDtmyGI3a+qSgFqfwtLAOtSbDsFxqNZezmjgd3X9lswUKZwc33H/I2AtjnpZ1aJQ4b6M4h5px/4Nm1kri9RmSIZXrT/GBdE0KT41Z8XrPPHwZJabRsTL2ghKC0APb4ffCtu/er8SGHUrooWWoRLgU755VbDkPqp/hUS3uYRGfOtEZkuqpDo5YyfLIOMu4bvk5SHOR+5FbSEiDkFQrzMA7UFVCUYpTrh1QmcMspNPYNZ1slOZWXw/JNqsro= 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)(366004)(376002)(30864003)(966005)(6506007)(186003)(53546011)(66476007)(7696005)(4326008)(66946007)(66446008)(66556008)(508600001)(64756008)(52536014)(83380400001)(5660300002)(26005)(76116006)(54906003)(33656002)(86362001)(8936002)(8676002)(9686003)(71200400001)(55016002)(2906002)(110136005)(461764006)(21314003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?UHhhQlU0MEdPOXpXQlU5YzVrTlNVSHAxNnArdnUyWVNkZ2NGTnU5YW9nd0tB?= =?utf-8?B?a2tmTDB3eXp4NHBoZTFyZWtMaHRTenRuUHFtL3BxeTJGQklKWHBLbUgxTHJx?= =?utf-8?B?VHNHamJUL0pqMTZ6WUdnQXd3Q3IvUEZGSmNhS1Vxc2Q1bUtwRlk0NUk5MnNO?= =?utf-8?B?ckxuT0JNbitFMjdnUmN1dVVoWTk1UGxmWC9qQldydFhZWkduYk1NUG93dXQv?= =?utf-8?B?WTJtZS9BUUJLa0UvSWJiWWxLN3QzUzZYU3IvMGhwamlXUGZhN0lxV01lRTBH?= =?utf-8?B?dXJ6dDJ2OUdvUElkeTJldnhzeVVaZlZyU3EvdXdXYWRpTEdjbWYzN0hJZVpW?= =?utf-8?B?WmdzcVcvWlFrdkdPYXZLTnhSdGdlZG5xMTBoRXNDS0RXKzBlSXhFQXF4UmZL?= =?utf-8?B?S3F0Um5mZ1YySFNGZ0V3OUdSNXNiUEYxS0YyQ0YvUHdWaG5UVDhndjY4ajdJ?= =?utf-8?B?U2QxMzRGV3N0ZU5Wb2RQOWhucUhWdnZHVWZyREhTd2pNTTJyOUV6L0FQejlM?= =?utf-8?B?RzV2WHMwV0ZBMzM4SWN0d3M3Ni8xbGR6THNmWmFRMUo1RHRHYTRMVGUxdmlH?= =?utf-8?B?TVRsWldCWXFnOW95NXMyRjJwQ2ZtQ0s5RkRRdklMOEkwRmlvYUNrUlkwWEZ4?= =?utf-8?B?Ly9ybkRQaXYreUZlV002aFFRK1VqdFJLTDI2RFBXMzF0bUpIa0I5ckk5Nmd6?= =?utf-8?B?VTJvSWJrVnN0YVdpeW41OUsxS25HRDNMWUJMNkczbDVCY3k3YXl6SkxtV2tS?= =?utf-8?B?eUU0bTFLRGRpT29iYXdudlJoMlV1QmxuSlZDYkxCRW5UZ3NDWXRnY1JlSEZR?= =?utf-8?B?MDEraS9FelRxUlpVSDVJRTZmbFNXdXpJS015WUh5dFBXUW0ralJndWZ5ZXQw?= =?utf-8?B?K0dSQzhIUnhoSFVqWFNrYkV2S21DU29lS1I2NTl1OGV2VTFWaC95WHNSVUpR?= =?utf-8?B?VW9QaXErUnR6cWFKSWh1NmZ5VWl0RVlvQW9KM1lnbU8wZmlNUGlyczduRzJ6?= =?utf-8?B?OE5EU3hGNUpQbWp6bXBVeDBEbnQzeXRhalpHSWJmQ3VyUVpDMExNSHZVRito?= =?utf-8?B?WUJwbnVRd2xsUFozSEdnQTV1Y2dGaTQ2K2EvNjhweTZUZjNaTGRkY2JTYnp1?= =?utf-8?B?RGhSUW1xZ2o5ZFZKN2JyazFaWmNYRVBCYlpmdkxMRWp5aCszZklMRWFyWFRI?= =?utf-8?B?c1YxSk54ZUI2c09JcHZaWWtIYXFxNnBXckZtTHJrLzVCZWR4RW9mRGhWUWpG?= =?utf-8?B?VTBXbWg2bUNBam8xUWNCR3c5eGFjMGs2MnBzOWp4c2t0Rk4vY0FZT2pnYm02?= =?utf-8?Q?wpGDkNCBastr0=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: 46b5558b-f94d-4dd6-1f79-08d8a08f1b47 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Dec 2020 00:19:36.9499 (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: 4us9I4qZ0S9CDVrE8Ct1Qc4zdGpGZIVdlEl4DZVsDKcy96zFjcznu6Gc23d5WaTYVeWqsKVO+BhBfvugbzRWQ/z1AEih3bZdGXWDrksw0cE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3155 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 SGkgQWJuZXIsDQoNCkkgc2VlIHdoYXQgYXBwZWFycyB0byBiZSBzb21lIGR1cGxpY2F0aW9uIG9m IHRoZSBxc29ydCBzb3VyY2UgY29kZS4NCg0KQ2FuIHlvdSB1c2UgdGhlIFBlcmZvcm1RdWlja1Nv cnQoKSBBUEkgZnJvbSB0aGUgUXNvcnRMaWIgaW4gdGhlIE1kZU1vZHVsZVBrZz8NCg0KVGhhbmtz LA0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxA ZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgQWJuZXIg Q2hhbmcNCj4gU2VudDogU3VuZGF5LCBEZWNlbWJlciAxMywgMjAyMCA3OjUzIFBNDQo+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5j b20+OyBOaWNrbGUgV2FuZyA8bmlja2xlLndhbmdAaHBlLmNvbT47IFBldGVyIE8nSGFubGV5IDxw ZXRlci5vaGFubGV5QGhwZS5jb20+DQo+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjYg My82XSBSZWRmaXNoUGtnL0NydExpYjogQyBydW50aW1lIGxpYnJhcnkNCj4gDQo+IENSVCBsaWJy YXJ5IGlzIGN1cnJlbnRseSB1c2VkIGJ5IGVkazIgSnNvbkxpYiAob3BlbiBzb3VyY2UNCj4gamFu c3NvbiBwcm9qZWN0KSBhbmQgZWRrMiBSZWRmaXNoTGliIChsaWJyZWRmaXNoIG9wZW4gc291cmNl DQo+IHByb2plY3QpLiBDcnRMaWIgbGlicmFyeSBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IEMgcnVu dGltZQ0KPiBlcXVpdmFsZW50IGVkazIgZnVuY3Rpb25zIGZvciBvcGVuIHNvdXJjZSBwcm9qZWN0 cy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BocGUuY29t Pg0KPiANCj4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPg0KPiBDYzogTmlj a2xlIFdhbmcgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+IENjOiBQZXRlciBPJ0hhbmxleSA8cGV0 ZXIub2hhbmxleUBocGUuY29tPg0KPiAtLS0NCj4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNz ZXJ0LmggICAgICB8ICAxNiArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmggICAg ICAgfCAgMTYgKw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9saW1pdHMuaCAgICAgIHwgIDE2 ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0aC5oICAgICAgICB8ICAxNiArDQo+ICBS ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oICAgICAgfCAgMTUgKw0KPiAgUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9zdGRkZWYuaCAgICAgIHwgIDE2ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvc3RkaW8uaCAgICAgICB8ICAxNSArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0 ZGxpYi5oICAgICAgfCAgMTYgKw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaCAg ICAgIHwgIDE2ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaCAgICB8ICAx NSArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oICAgfCAgMTUgKw0KPiAg UmVkZmlzaFBrZy9JbmNsdWRlL0NydC90aW1lLmggICAgICAgIHwgIDE1ICsNCj4gIFJlZGZpc2hQ a2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oICB8IDE5NSArKysrKysrKw0KPiAgUmVkZmlzaFBr Zy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuYyAgIHwgNzA1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mIHwgIDM3ICsrDQo+ ICBSZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMgICAgICAgfCAgIDEgKw0KPiAgUmVkZmlz aFBrZy9SZWRmaXNoUGtnLmNpLnlhbWwgICAgICAgIHwgIDE5ICsNCj4gIFJlZGZpc2hQa2cvUmVk ZmlzaFBrZy5kZWMgICAgICAgICAgICB8ICAgOCArDQo+ICBSZWRmaXNoUGtnL1JlZGZpc2hQa2cu ZHNjICAgICAgICAgICAgfCAgIDEgKw0KPiAgMTkgZmlsZXMgY2hhbmdlZCwgMTE1MyBpbnNlcnRp b25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9hc3Nl cnQuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvZXJybm8u aA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbGltaXRzLmgN Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L21hdGguaA0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJnLmgNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oDQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaA0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmgNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90aW1lLmgNCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRMaWIuaA0KPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmMNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBSZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5pbmYNCj4gDQo+IGRpZmYg LS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Fzc2VydC5oIGIvUmVkZmlzaFBrZy9JbmNs dWRlL0NydC9hc3NlcnQuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwLi5mOWFiN2VmOWNhDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNs dWRlL0NydC9hc3NlcnQuaA0KPiBAQCAtMCwwICsxLDE2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAg SW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24g bGlicmFyeS4NCj4gKw0KPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0 IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiAr DQo+ICsjaWZuZGVmIENSVF9BU1NFUlRfSF8NCj4gKyNkZWZpbmUgQ1JUX0FTU0VSVF9IXw0KPiAr DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYg LS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmggYi9SZWRmaXNoUGtnL0luY2x1 ZGUvQ3J0L2Vycm5vLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uZDMwYWVlMTRkZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvZXJybm8uaA0KPiBAQCAtMCwwICsxLDE2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5j bHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGli cmFyeS4NCj4gKw0KPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBh Y2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ ICsjaWZuZGVmIENSVF9FUlJOT19IXw0KPiArI2RlZmluZSBDUlRfRVJSTk9fSF8NCj4gKw0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0 IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9saW1pdHMuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9D cnQvbGltaXRzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4u ZjNiZGQzM2YyYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9D cnQvbGltaXRzLmgNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1 ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJh cnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNr YXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiAr I2lmbmRlZiBDUlRfTElNSVRTX0hfDQo+ICsjZGVmaW5lIENSVF9MSU1JVFNfSF8NCj4gKw0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0 IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRoLmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L21hdGguaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi45ODRj MGNjYzIxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9t YXRoLmgNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmls ZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVu dGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRl ZiBDUlRfTUFUSF9IXw0KPiArI2RlZmluZSBDUlRfTUFUSF9IXw0KPiArDQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcu aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5kNWEzMTRhZDNi DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcu aA0KPiBAQCAtMCwwICsxLDE1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRv IHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0K PiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2lmbmRlZiBDUlRfU1RE QVJHX0hfDQo+ICsjZGVmaW5lIENSVF9TVERBUkdfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJh cnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9J bmNsdWRlL0NydC9zdGRkZWYuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVmLmgNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMTVhMzdiZjUwZQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVmLmgNCj4g QEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBw b3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBD b3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDUlRfU1RE REVGX0hfDQo+ICsjZGVmaW5lIENSVF9TVERERUZfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJh cnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9J bmNsdWRlL0NydC9zdGRpby5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjI1ZTYxMGJlMTANCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGlvLmgNCj4gQEAg LTAsMCArMSwxNSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0 IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBDb3B5 cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2 ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKyNpZm5kZWYgQ1JUX1NURElPX0hfDQo+ ICsjZGVmaW5lIENSVF9TVERJT19IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIu aD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L3N0ZGxpYi5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaA0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi41YjNkZDI3M2M4DQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaA0KPiBAQCAtMCwwICsx LDE2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRp bmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENvcHlyaWdodCAo YykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr IChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVu dCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIENSVF9TVERMSUJfSF8NCj4g KyNkZWZpbmUgQ1JUX1NURExJQl9IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIu aD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L3N0cmluZy5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaA0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mNjBiODdjY2QyDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaA0KPiBAQCAtMCwwICsx LDE2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRp bmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENvcHlyaWdodCAo YykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr IChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVu dCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIENSVF9TVFJJTkdfSF8NCj4g KyNkZWZpbmUgQ1JUX1NUUklOR19IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIu aD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L3N5cy90aW1lLmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNGNlZDE3NmNkYQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaA0KPiBAQCAt MCwwICsxLDE1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQg YnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENvcHly aWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZl bG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2lmbmRlZiBDUlRfU1lTX1RJTUVfSF8N Cj4gKyNkZWZpbmUgQ1JUX1NZU19USU1FX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Ny dExpYi5oPg0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvc3lzL3R5cGVzLmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmM0ZjgwNzIxNGMNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5o DQo+IEBAIC0wLDAgKzEsMTUgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBJbmNsdWRlIGZpbGUgdG8g c3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiArDQo+ ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnBy aXNlIERldmVsb3BtZW50IExQPEJSPg0KPiArDQo+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsjaWZuZGVmIENSVF9TWVNf VFlQRVNfSF8NCj4gKyNkZWZpbmUgQ1JUX1NZU19UWVBFU19IXw0KPiArDQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9DcnRMaWIuaD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3RpbWUuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvdGltZS5oDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmNhMDRhYzg3MzANCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3RpbWUuaA0KPiBA QCAtMCwwICsxLDE1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBv cnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBE ZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2lmbmRlZiBDUlRfVElNRV9IXw0K PiArI2RlZmluZSBDUlRfVElNRV9IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIu aD4NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvTGli cmFyeS9DcnRMaWIuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjhjNzQ4NGU3NWINCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRMaWIuaA0K PiBAQCAtMCwwICsxLDE5NSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIENSVCB3cmFwcGVyIGhlYWQg ZnVuY3Rpb25zIGZvciBqYW5zc29uIHN5c3RlbSBjYWxsLg0KPiArDQo+ICsgIENvcHlyaWdodCAo YykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr ICAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1l bnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDUlRfTElCX0hfDQo+ICsj ZGVmaW5lIENSVF9MSUJfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsNCj4g KyNkZWZpbmUgTUFYX1NUUklOR19TSVpFICAweDEwMDAwMDAwDQo+ICsNCj4gKy8vIE1pbmltdW0g dmFsdWUgZm9yIGFuIG9iamVjdCBvZiB0eXBlIGxvbmcgbG9uZyBpbnQuDQo+ICsjZGVmaW5lIExM T05HX01JTiAgIE1JTl9JTlQ2NA0KPiArDQo+ICsvLyBNYXhpbXVtIHZhbHVlIGZvciBhbiBvYmpl Y3Qgb2YgdHlwZSBsb25nIGxvbmcgaW50Lg0KPiArI2RlZmluZSBMTE9OR19NQVggICBNQVhfSU5U NjQNCj4gKw0KPiArLy8gV2UgZG9udCBzdXBwb3J0IGRvdWJsZSBvbiBlZGsyDQo+ICsjZGVmaW5l IEhVR0VfVkFMICAgIDANCj4gKw0KPiArI2lmIGRlZmluZWQoTURFX0NQVV9YNjQpIHx8IGRlZmlu ZWQoTURFX0NQVV9BQVJDSDY0KSB8fCBkZWZpbmVkKE1ERV9DUFVfSUE2NCkgfHwgZGVmaW5lZChN REVfQ1BVX1JJU0NWNjQpDQo+ICsvLw0KPiArLy8gV2l0aCBHQ0Mgd2Ugd291bGQgbm9ybWFsbHkg dXNlIFNJWFRZX0ZPVVJfQklUX0xPTkcsIGJ1dCBNU1ZDIG5lZWRzDQo+ICsvLyBTSVhUWV9GT1VS X0JJVCwgYmVjYXVzZSAnbG9uZycgaXMgMzItYml0IGFuZCBvbmx5ICdsb25nIGxvbmcnIGlzDQo+ ICsvLyA2NC1iaXQuIFNpbmNlIHVzaW5nICdsb25nIGxvbmcnIHdvcmtzIGZpbmUgb24gR0NDIHRv bywganVzdCBkbyB0aGF0Lg0KPiArLy8NCj4gKyNkZWZpbmUgU0lYVFlfRk9VUl9CSVQNCj4gKyNl bGlmIGRlZmluZWQoTURFX0NQVV9JQTMyKSB8fCBkZWZpbmVkKE1ERV9DUFVfQVJNKSB8fCBkZWZp bmVkKE1ERV9DUFVfRUJDKQ0KPiArI2RlZmluZSBUSElSVFlfVFdPX0JJVA0KPiArI2VuZGlmDQo+ ICsNCj4gKy8vDQo+ICsvLyBNYXAgYWxsIHZhX3h4eHggZWxlbWVudHMgdG8gVkFfeHh4IGRlZmlu ZWQgaW4gTWRlUGtnL0luY2x1ZGUvQmFzZS5oDQo+ICsvLw0KPiArI2lmICFkZWZpbmVkKF9fQ0Nf QVJNKSAvLyBpZiB2YV9saXN0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQNCj4gKyNkZWZpbmUgdmFf bGlzdCAgIFZBX0xJU1QNCj4gKyNkZWZpbmUgdmFfYXJnICAgIFZBX0FSRw0KPiArI2RlZmluZSB2 YV9zdGFydCAgVkFfU1RBUlQNCj4gKyNkZWZpbmUgdmFfZW5kICAgIFZBX0VORA0KPiArI2Vsc2Ug Ly8gX19DQ19BUk0NCj4gKyNkZWZpbmUgdmFfc3RhcnQoTWFya2VyLCBQYXJhbWV0ZXIpICAgX192 YV9zdGFydChNYXJrZXIsIFBhcmFtZXRlcikNCj4gKyNkZWZpbmUgdmFfYXJnKE1hcmtlciwgVFlQ RSkgICAgICAgICAgX192YV9hcmcoTWFya2VyLCBUWVBFKQ0KPiArI2RlZmluZSB2YV9lbmQoTWFy a2VyKSAgICAgICAgICAgICAgICAoKHZvaWQpMCkNCj4gKyNlbmRpZg0KPiArDQo+ICsvLw0KPiAr Ly8gRGVmaW5pdGlvbnMgZm9yIGdsb2JhbCBjb25zdGFudHMgdXNlZCBieSBDUlQgbGlicmFyeSBy b3V0aW5lcw0KPiArLy8NCj4gKyNkZWZpbmUgSU5UX01BWCAgICAgIE1BWF9JTlQzMiAgICAgICAg LyogTWF4aW11bSAoc2lnbmVkKSBpbnQgdmFsdWUgKi8NCj4gKyNkZWZpbmUgTE9OR19NQVggICAg IDBYN0ZGRkZGRkZMICAgICAgLyogbWF4IHZhbHVlIGZvciBhIGxvbmcgKi8NCj4gKyNkZWZpbmUg TE9OR19NSU4gICAgICgtTE9OR19NQVgtMSkgICAgLyogbWluIHZhbHVlIGZvciBhIGxvbmcgKi8N Cj4gKyNkZWZpbmUgVUxPTkdfTUFYICAgIDB4RkZGRkZGRkYgICAgICAgLyogTWF4aW11bSB1bnNp Z25lZCBsb25nIHZhbHVlICovDQo+ICsjZGVmaW5lIENIQVJfQklUICAgICA4ICAgICAgICAgICAg ICAgIC8qIE51bWJlciBvZiBiaXRzIGluIGEgY2hhciAqLw0KPiArDQo+ICsvLyBNYXhpbXVtIHZh bHVlIGZvciBhbiBvYmplY3Qgb2YgdHlwZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50Lg0KPiArI2Rl ZmluZSBVTExPTkdfTUFYICAweEZGRkZGRkZGRkZGRkZGRkZVTEwgLy8gMl42NCAtIDENCj4gKy8v IE1heGltdW0gdmFsdWUgZm9yIGFuIG9iamVjdCBvZiB0eXBlIHVuc2lnbmVkIGNoYXIuDQo+ICsj ZGVmaW5lIFVDSEFSX01BWCAgIDI1NSAgLy8gMl44IC0gMQ0KPiArDQo+ICsvLw0KPiArLy8gQmFz aWMgdHlwZXMgbWFwcGluZw0KPiArLy8NCj4gK3R5cGVkZWYgVUlOVE4gICAgICAgICAgc2l6ZV90 Ow0KPiArdHlwZWRlZiBJTlROICAgICAgICAgICBzc2l6ZV90Ow0KPiArdHlwZWRlZiBJTlQzMiAg ICAgICAgICB0aW1lX3Q7DQo+ICt0eXBlZGVmIFVJTlQ4ICAgICAgICAgIF9fdWludDhfdDsNCj4g K3R5cGVkZWYgVUlOVDggICAgICAgICAgc2FfZmFtaWx5X3Q7DQo+ICt0eXBlZGVmIFVJTlQzMiAg ICAgICAgIHVpZF90Ow0KPiArdHlwZWRlZiBVSU5UMzIgICAgICAgICBnaWRfdDsNCj4gK3R5cGVk ZWYgSU5UMzIgICAgICAgICAgaW50MzJfdDsNCj4gK3R5cGVkZWYgVUlOVDMyICAgICAgICAgdWlu dDMyX3Q7DQo+ICt0eXBlZGVmIFVJTlQxNiAgICAgICAgIHVpbnQxNl90Ow0KPiArdHlwZWRlZiBV SU5UOCAgICAgICAgICB1aW50OF90Ow0KPiArdHlwZWRlZiBlbnVtIHtmYWxzZSwgdHJ1ZX0gYm9v bDsNCj4gKw0KPiArLy8NCj4gKy8vIEZpbGUgb3BlcmF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIGZv ciBFRkkgYnVpbGRpbmcsDQo+ICsvLyBzbyBGSUxFIGlzIG1hcHBlZCB0byBWT0lEICogdG8gcGFz cyBidWlsZA0KPiArLy8NCj4gK3R5cGVkZWYgVk9JRCAgKkZJTEU7DQo+ICsNCj4gKy8vDQo+ICsv LyBHbG9iYWwgdmFyaWFibGVzDQo+ICsvLw0KPiArZXh0ZXJuIGludCAgZXJybm87DQo+ICtleHRl cm4gRklMRSAqc3RkZXJyOw0KPiArDQo+ICsvLw0KPiArLy8gRnVuY3Rpb24gcHJvdG90eXBlcyBv ZiBDUlQgTGlicmFyeSByb3V0aW5lcw0KPiArLy8NCj4gK3ZvaWQgICAgICAgICAgICptYWxsb2Mg ICAgIChzaXplX3QpOw0KPiArdm9pZCAgICAgICAgICAgKnJlYWxsb2MgICAgKHZvaWQgKiwgc2l6 ZV90KTsNCj4gK3ZvaWQgICAgICAgICAgICpjYWxsb2MgICAgIChzaXplX3QgTnVtLCBzaXplX3Qg U2l6ZSk7DQo+ICt2b2lkICAgICAgICAgICBmcmVlICAgICAgICAodm9pZCAqKTsNCj4gK3ZvaWQg ICAgICAgICAgICptZW1zZXQgICAgICh2b2lkICosIGludCwgc2l6ZV90KTsNCj4gK2ludCAgICAg ICAgICAgIG1lbWNtcCAgICAgIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsN Cj4gK2ludCAgICAgICAgICAgIGlzZGlnaXQgICAgIChpbnQpOw0KPiAraW50ICAgICAgICAgICAg aXNzcGFjZSAgICAgKGludCk7DQo+ICtpbnQgICAgICAgICAgICB0b2xvd2VyICAgICAoaW50KTsN Cj4gK2ludCAgICAgICAgICAgIGlzdXBwZXIgICAgIChpbnQpOw0KPiAraW50ICAgICAgICAgICAg aXN4ZGlnaXQgICAgKGludCk7DQo+ICtpbnQgICAgICAgICAgICBpc2FsbnVtICAgICAoaW50KTsN Cj4gK3ZvaWQgICAgICAgICAgICptZW1jcHkgICAgICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90KTsNCj4gK3ZvaWQgICAgICAgICAgICptZW1zZXQgICAgICh2b2lkICosIGludCwgc2l6ZV90 KTsNCj4gK3ZvaWQgICAgICAgICAgICptZW1jaHIgICAgIChjb25zdCB2b2lkICosIGludCwgc2l6 ZV90KTsNCj4gK2ludCAgICAgICAgICAgIG1lbWNtcCAgICAgIChjb25zdCB2b2lkICosIGNvbnN0 IHZvaWQgKiwgc2l6ZV90KTsNCj4gK3ZvaWQgICAgICAgICAgICptZW1tb3ZlICAgICh2b2lkICos IGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNCj4gK2ludCAgICAgICAgICAgIHN0cmNtcCAgICAgIChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ICtpbnQgICAgICAgICAgICBzdHJuY21wICAg ICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ICtjaGFyICAgICAgICAg ICAqc3RyY3B5ICAgICAoY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiArc2l6ZV90ICAgICAgICAg c3RybGVuICAgICAgKGNvbnN0IGNoYXIgKik7DQo+ICtjaGFyICAgICAgICAgICAqc3RyY2F0ICAg ICAoY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiArY2hhciAgICAgICAgICAgKnN0cmNociAgICAg KGNvbnN0IGNoYXIgKiwgaW50KTsNCj4gK2ludCAgICAgICAgICAgIHN0cmNhc2VjbXAgIChjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ICtpbnQgICAgICAgICAgICBzdHJuY2FzZWNtcCAo Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ICtjaGFyICAgICAgICAgICAq c3RybmNweSAgICAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCj4gK2lu dCAgICAgICAgICAgIHN0cm5jbXAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6 ZV90KTsNCj4gK2NoYXIgICAgICAgICAgICpzdHJyY2hyICAgIChjb25zdCBjaGFyICosIGludCk7 DQo+ICt1bnNpZ25lZCBsb25nICBzdHJ0b3VsICAgICAoY29uc3QgY2hhciAqLCBjaGFyICoqLCBp bnQpOw0KPiArY2hhciAqICAgICAgICAgc3Ryc3RyICAgICAgKGNvbnN0IGNoYXIgKnMxICwgY29u c3QgY2hhciAqczIpOw0KPiArbG9uZyAgICAgICAgICAgc3RydG9sICAgICAgKGNvbnN0IGNoYXIg KiwgY2hhciAqKiwgaW50KTsNCj4gK2NoYXIgICAgICAgICAgICpzdHJlcnJvciAgIChpbnQpOw0K PiArc2l6ZV90ICAgICAgICAgc3Ryc3BuICAgICAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq KTsNCj4gK2NoYXIgKiAgICAgICAgIHN0cmR1cCAgICAgIChjb25zdCBjaGFyICpzdHIpOw0KPiAr Y2hhciAqICAgICAgICAgc3RycGJyayAgICAgKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpz Mik7DQo+ICt1bnNpZ25lZCBsb25nIGxvbmcgc3RydG91bGwoY29uc3QgY2hhciAqIG5wdHIsIGNo YXIgKiogZW5kcHRyLCBpbnQgYmFzZSk7DQo+ICtsb25nIGxvbmcgICAgICBzdHJ0b2xsICAgICAo Y29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFzZSk7DQo+ICtsb25nICAg ICAgICAgICBzdHJ0b2wgICAgICAoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBp bnQgYmFzZSk7DQo+ICtkb3VibGUgICAgICAgICBzdHJ0b2QgICAgICAoY29uc3QgY2hhciAqIF9f cmVzdHJpY3QgbnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IGVuZHB0cik7DQo+ICtzaXplX3QgICAg ICAgICBzdHJjc3BuICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiAraW50ICAg ICAgICAgICAgcHJpbnRmICAgICAgKGNvbnN0IGNoYXIgKiwgLi4uKTsNCj4gK2ludCAgICAgICAg ICAgIHNzY2FuZiAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsNCj4gK0ZJ TEUgICAgICAgICAgICpmb3BlbiAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ ICtzaXplX3QgICAgICAgICBmcmVhZCAgICAgICAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklM RSAqKTsNCj4gK3NpemVfdCAgICAgICAgIGZ3cml0ZSAgICAgIChjb25zdCB2b2lkICosIHNpemVf dCwgc2l6ZV90LCBGSUxFICopOw0KPiAraW50ICAgICAgICAgICAgZmNsb3NlICAgICAgKEZJTEUg Kik7DQo+ICtpbnQgICAgICAgICAgICBmcHJpbnRmICAgICAoRklMRSAqLCBjb25zdCBjaGFyICos IC4uLik7DQo+ICtpbnQgICAgICAgICAgICBmZ2V0YyAgICAgICAoRklMRSAqIF9GaWxlKTsNCj4g K3VpZF90ICAgICAgICAgIGdldHVpZCAgICAgICh2b2lkKTsNCj4gK3VpZF90ICAgICAgICAgIGdl dGV1aWQgICAgICh2b2lkKTsNCj4gK2dpZF90ICAgICAgICAgIGdldGdpZCAgICAgICh2b2lkKTsN Cj4gK2dpZF90ICAgICAgICAgIGdldGVnaWQgICAgICh2b2lkKTsNCj4gK3ZvaWQgICAgICAgICAg IHFzb3J0ICAgICAgICh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQg KiwgY29uc3Qgdm9pZCAqKSk7DQo+ICtjaGFyICAgICAgICAgICAqZ2V0ZW52ICAgICAoY29uc3Qg Y2hhciAqKTsNCj4gKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMikNCj4g K3ZvaWQgICAgICAgICAgIGFib3J0ICAgICAgICh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0 dXJuX18pKTsNCj4gKyNlbHNlDQo+ICt2b2lkICAgICAgICAgICBhYm9ydCAgICAgICAodm9pZCk7 DQo+ICsjZW5kaWYNCj4gK2ludCAgICAgICAgICAgIHRvdXBwZXIgICAgIChpbnQpOw0KPiAraW50 ICAgICAgICAgICAgRGlnaXQyVmFsICAgKGludCk7DQo+ICt0aW1lX3QgICAgICAgICB0aW1lICAg ICAgICAodGltZV90ICopOw0KPiArDQo+ICsvLw0KPiArLy8gTWFjcm9zIHRoYXQgZGlyZWN0bHkg bWFwIGZ1bmN0aW9ucyB0byBCYXNlTGliLCBCYXNlTWVtb3J5TGliLCBhbmQgRGVidWdMaWIgZnVu Y3Rpb25zDQo+ICsvLw0KPiArI2RlZmluZSBzdHJjbXAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQXNjaWlTdHJDbXANCj4gKyNkZWZpbmUgbWVtY3B5KGRlc3Qsc291cmNlLGNvdW50KSAgICAg ICAgIENvcHlNZW0oZGVzdCxzb3VyY2UsKFVJTlROKShjb3VudCkpDQo+ICsjZGVmaW5lIG1lbXNl dChkZXN0LGNoLGNvdW50KSAgICAgICAgICAgICBTZXRNZW0oZGVzdCwoVUlOVE4pKGNvdW50KSwo VUlOVDgpKGNoKSkNCj4gKyNkZWZpbmUgbWVtY2hyKGJ1ZixjaCxjb3VudCkgICAgICAgICAgICAg IFNjYW5NZW04KGJ1ZiwoVUlOVE4pKGNvdW50KSwoVUlOVDgpY2gpDQo+ICsjZGVmaW5lIG1lbWNt cChidWYxLGJ1ZjIsY291bnQpICAgICAgICAgICAoaW50KShDb21wYXJlTWVtKGJ1ZjEsYnVmMiwo VUlOVE4pKGNvdW50KSkpDQo+ICsjZGVmaW5lIG1lbW1vdmUoZGVzdCxzb3VyY2UsY291bnQpICAg ICAgICBDb3B5TWVtKGRlc3Qsc291cmNlLChVSU5UTikoY291bnQpKQ0KPiArI2RlZmluZSBzdHJs ZW4oc3RyKSAgICAgICAgICAgICAgICAgICAgICAgKHNpemVfdCkoQXNjaWlTdHJuTGVuUyhzdHIs TUFYX1NUUklOR19TSVpFKSkNCj4gKyNkZWZpbmUgc3RyY3B5KHN0ckRlc3Qsc3RyU291cmNlKSAg ICAgICAgIEFzY2lpU3RyQ3B5UyhzdHJEZXN0LChzdHJsZW4oc3RyU291cmNlKSsxKSxzdHJTb3Vy Y2UpDQo+ICsjZGVmaW5lIHN0cm5jcHkoc3RyRGVzdCxzdHJTb3VyY2UsY291bnQpICBBc2NpaVN0 cm5DcHlTKHN0ckRlc3QsKFVJTlROKWNvdW50LHN0clNvdXJjZSwoVUlOVE4pY291bnQpDQo+ICsj ZGVmaW5lIHN0cm5jcHlzKHN0ckRlc3QsIERlc3RMZW4sIHN0clNvdXJjZSxjb3VudCkgIEFzY2lp U3RybkNweVMoc3RyRGVzdCxEZXN0TGVuLHN0clNvdXJjZSwoVUlOVE4pY291bnQpDQo+ICsjZGVm aW5lIHN0cmNhdChzdHJEZXN0LHN0clNvdXJjZSkgICAgICAgICBBc2NpaVN0ckNhdFMoc3RyRGVz dCwoc3RybGVuKHN0clNvdXJjZSkrc3RybGVuKHN0ckRlc3QpKzEpLHN0clNvdXJjZSkNCj4gKyNk ZWZpbmUgc3RyY2hyKHN0cixjaCkgICAgICAgICAgICAgICAgICAgIFNjYW5NZW04KChWT0lEICop KHN0ciksQXNjaWlTdHJTaXplKHN0ciksKFVJTlQ4KWNoKQ0KPiArI2RlZmluZSBzdHJuY21wKHN0 cmluZzEsc3RyaW5nMixjb3VudCkgICAgKGludCkoQXNjaWlTdHJuQ21wKHN0cmluZzEsc3RyaW5n MiwoVUlOVE4pKGNvdW50KSkpDQo+ICsjZGVmaW5lIHN0cmNhc2VjbXAoc3RyMSxzdHIyKSAgICAg ICAgICAgICAoaW50KUFzY2lpU3RyaUNtcChzdHIxLHN0cjIpDQo+ICsjZGVmaW5lIHN0cnN0cihz MSxzMikgICAgICAgICAgICAgICAgICAgICBBc2NpaVN0clN0cihzMSxzMikNCj4gKyNkZWZpbmUg c3ByaW50ZihidWYsLi4uKSAgICAgICAgICAgICAgICAgIEFzY2lpU1ByaW50KGJ1ZixNQVhfU1RS SU5HX1NJWkUsX19WQV9BUkdTX18pDQo+ICsjZGVmaW5lIHNucHJpbnRmKGJ1ZixsZW4sLi4uKSAg ICAgICAgICAgICBBc2NpaVNQcmludChidWYsbGVuLF9fVkFfQVJHU19fKQ0KPiArI2RlZmluZSB2 c25wcmludGYoYnVmLGxlbixmb3JtYXQsbWFya2VyKSAgQXNjaWlWU1ByaW50KChidWYpLChsZW4p LChmb3JtYXQpLChtYXJrZXIpKQ0KPiArI2RlZmluZSBhc3NlcnQoZXhwcmVzc2lvbikgICAgICAg ICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24pDQo+ICsjZGVmaW5lIGF0b2kobnB0cikgICAgICAg ICAgICAgICAgICAgICAgICBBc2NpaVN0ckRlY2ltYWxUb1VpbnRuKG5wdHIpDQo+ICsjZGVmaW5l IGZhYnMoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh4KSA8IDAuMCk/ICgteCk6ICh4 KSkNCj4gKyNkZWZpbmUgb2Zmc2V0b2YodHlwZSxtZW1iZXIpICAgICAgICAgICAgIE9GRlNFVF9P Rih0eXBlLG1lbWJlcikNCj4gKw0KPiArI2RlZmluZSBFT0YgKC0xKQ0KPiArDQo+ICtleHRlcm4g aW50ICBlcnJubzsNCj4gKw0KPiArI2RlZmluZSBFUkFOR0UgICAzNCAgICAgICAgICAgICAgICAv KiAzNCAgIFJlc3VsdCB0b28gbGFyZ2UgKi8NCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQg YS9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5jIGIvUmVkZmlzaFBrZy9MaWJyYXJ5 L0NydExpYi9DcnRMaWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwLi4xZmY0MDIzZGJlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVkZmlzaFBrZy9MaWJy YXJ5L0NydExpYi9DcnRMaWIuYw0KPiBAQCAtMCwwICsxLDcwNSBAQA0KPiArLyoqIEBmaWxlDQo+ ICsgIENSVCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3Igc3lzdGVtIGNhbGwuDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ICsgIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBE ZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5 QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNl c1RhYmxlTGliLmg+DQo+ICsNCj4gK2ludCAgZXJybm8gPSAwOw0KPiArDQo+ICsvKioNCj4gKyAg RGV0ZXJtaW5lIGlmIGEgcGFydGljdWxhciBjaGFyYWN0ZXIgaXMgYW4gYWxwaGFudW1lcmljIGNo YXJhY3Rlcg0KPiArICBAcmV0dXJuICBSZXR1cm5zIDEgaWYgYyBpcyBhbiBhbHBoYW51bWVyaWMg Y2hhcmFjdGVyLCBvdGhlcndpc2UgcmV0dXJucyAwLg0KPiArKiovDQo+ICtpbnQgaXNhbG51bSAo aW50IGMpDQo+ICt7DQo+ICsgIC8vDQo+ICsgIC8vIDxhbG51bT4gOjo9IFswLTldIHwgW2Etel0g fCBbQS1aXQ0KPiArICAvLw0KPiArICByZXR1cm4gKCgoJzAnIDw9IChjKSkgJiYgKChjKSA8PSAn OScpKSB8fA0KPiArICAgICAgICAgICgoJ2EnIDw9IChjKSkgJiYgKChjKSA8PSAneicpKSB8fA0K PiArICAgICAgICAgICgoJ0EnIDw9IChjKSkgJiYgKChjKSA8PSAnWicpKSk7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGNoYXJhY3RlciBpcyBhIGRp Z2l0YWwgY2hhcmFjdGVyDQo+ICsNCj4gKyAgQHJldHVybiAgUmV0dXJucyAxIGlmIGMgaXMgYW4g ZGlnaXRhbCBjaGFyYWN0ZXIsIG90aGVyd2lzZSByZXR1cm5zIDAuDQo+ICsqKi8NCj4gK2ludCBp c2RjaGFyIChpbnQgYykNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gWzAtOV0gfCBbZSArLS5dDQo+ ICsgIC8vDQo+ICsgIHJldHVybiAoKCgnMCcgPD0gKGMpKSAmJiAoKGMpIDw9ICc5JykpIHx8DQo+ ICsgICAgICAgICAgKGMgPT0gJ2UnKSB8fCAoYyA9PSAnRScpIHx8DQo+ICsgICAgICAgICAgKGMg PT0gJysnKSB8fCAoYyA9PSAnLScpIHx8DQo+ICsgICAgICAgICAgKGMgPT0gJy4nKSk7DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGNoYXJhY3RlciBp cyBhIHNwYWNlIGNoYXJhY3Rlcg0KPiArDQo+ICsgIEByZXR1cm4gIFJldHVybnMgMSBpZiBjIGlz IGEgc3BhY2UgY2hhcmFjdGVyDQo+ICsqKi8NCj4gK2ludCBpc3NwYWNlIChpbnQgYykNCj4gK3sN Cj4gKyAgLy8NCj4gKyAgLy8gPHNwYWNlPiA6Oj0gWyBdDQo+ICsgIC8vDQo+ICsgIHJldHVybiAo KGMpID09ICcgJykgfHwgKChjKSA9PSAnXHQnKSB8fCAoKGMpID09ICdccicpIHx8ICgoYykgPT0g J1xuJykgfHwgKChjKSA9PSAnXHYnKSAgfHwgKChjKSA9PSAnXGYnKTsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIEFsbG9jYXRlcyBtZW1vcnkgYmxvY2tzDQo+ICsqLw0KPiArdm9pZCAqbWFsbG9j IChzaXplX3Qgc2l6ZSkNCj4gK3sNCj4gKyAgcmV0dXJuIEFsbG9jYXRlUG9vbCAoKFVJTlROKSBz aXplKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIERlLWFsbG9jYXRlcyBvciBmcmVlcyBhIG1l bW9yeSBibG9jaw0KPiArKi8NCj4gK3ZvaWQgZnJlZSAodm9pZCAqcHRyKQ0KPiArew0KPiArICAv Lw0KPiArICAvLyBJbiBTdGFuZGFyZCBDLCBmcmVlKCkgaGFuZGxlcyBhIG51bGwgcG9pbnRlciBh cmd1bWVudCB0cmFuc3BhcmVudGx5LiBUaGlzDQo+ICsgIC8vIGlzIG5vdCB0cnVlIG9mIEZyZWVQ b29sKCkgYmVsb3csIHNvIHByb3RlY3QgaXQuDQo+ICsgIC8vDQo+ICsgIGlmIChwdHIgIT0gTlVM TCkgew0KPiArICAgIEZyZWVQb29sIChwdHIpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBOZXRCU0QgQ29tcGF0aWJpbGl0eSBGdW5jdGlvbiBzdHJkdXAgY3JlYXRlcyBhIGR1cGxp Y2F0ZSBjb3B5IG9mIGEgc3RyaW5nLg0KPiArDQo+ICsgIEByZXR1cm4gIFJldHVybnMgdGhlIHBv aW50ZXIgdG8gZHVwbGljYXRlZCBzdHJpbmcuDQo+ICsqKi8NCj4gK2NoYXIgKiBzdHJkdXAoY29u c3QgY2hhciAqc3RyKQ0KPiArew0KPiArICBzaXplX3QgbGVuOw0KPiArICBjaGFyICpjb3B5Ow0K PiArDQo+ICsgIGxlbiA9IHN0cmxlbihzdHIpICsgMTsNCj4gKyAgaWYgKChjb3B5ID0gbWFsbG9j KGxlbikpID09IE5VTEwpDQo+ICsgICAgcmV0dXJuIChOVUxMKTsNCj4gKyAgbWVtY3B5KGNvcHks IHN0ciwgbGVuKTsNCj4gKyAgcmV0dXJuIChjb3B5KTsNCj4gK30NCj4gKw0KPiArLyoqIFRoZSB0 b3VwcGVyIGZ1bmN0aW9uIGNvbnZlcnRzIGEgbG93ZXJjYXNlIGxldHRlciB0byBhIGNvcnJlc3Bv bmRpbmcNCj4gKyAgICB1cHBlcmNhc2UgbGV0dGVyLg0KPiArDQo+ICsgICAgQHBhcmFtW2luXSAg ICBjICAgVGhlIGNoYXJhY3RlciB0byBiZSBjb252ZXJ0ZWQuDQo+ICsNCj4gKyAgICBAcmV0dXJu ICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgY2hhcmFjdGVyIGZvciB3aGljaCBpc2xvd2VyIGlzIHRy dWUgYW5kDQo+ICsgICAgICAgICAgICAgIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBjb3JyZXNwb25k aW5nIGNoYXJhY3RlcnMsIGFzIHNwZWNpZmllZCBieQ0KPiArICAgICAgICAgICAgICB0aGUgY3Vy cmVudCBsb2NhbGUsIGZvciB3aGljaCBpc3VwcGVyIGlzIHRydWUsIHRoZSB0b3VwcGVyDQo+ICsg ICAgICAgICAgICAgIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNo YXJhY3RlcnMgKGFsd2F5cyB0aGUNCj4gKyAgICAgICAgICAgICAgc2FtZSBvbmUgZm9yIGFueSBn aXZlbiBsb2NhbGUpOyBvdGhlcndpc2UsIHRoZSBhcmd1bWVudCBpcw0KPiArICAgICAgICAgICAg ICByZXR1cm5lZCB1bmNoYW5nZWQuDQo+ICsqKi8NCj4gK2ludA0KPiArdG91cHBlcigNCj4gKyAg SU4gIGludCBjDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCAoYyA+PSAnYScpICYmIChjIDw9ICd6 JykgKSB7DQo+ICsgICAgYyA9IGMgLSAoJ2EnIC0gJ0EnKTsNCj4gKyAgfQ0KPiArICByZXR1cm4g YzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIERpZ2l0IHRvIGEgdmFsdWUuDQo+ICsNCj4gKyAg QHJldHVybiAgUmV0dXJucyB0aGUgdmFsdWUgb2YgZGlnaXQuDQo+ICsqKi8NCj4gK2ludA0KPiAr RGlnaXQyVmFsKCBpbnQgYykNCj4gK3sNCj4gKyAgaWYgKCgoYyA+PSAnYScpICYmIChjIDw9ICd6 JykpIHx8ICgoYyA+PSAnQScpICYmIChjIDw9ICdaJykpKSB7ICAvKiBJZiBjIGlzIG9uZSBvZiBb QS1aYS16XS4uLiAqLw0KPiArICAgIGMgPSB0b3VwcGVyKGMpIC0gNzsgICAvLyBBZGp1c3Qgc28g J0EnIGlzICgnOScgKyAxKQ0KPiArICB9DQo+ICsgIHJldHVybiBjIC0gJzAnOyAgIC8vIFZhbHVl IHJldHVybmVkIGlzIGJldHdlZW4gMCBhbmQgMzUsIGluY2x1c2l2ZS4NCj4gK30NCj4gKw0KPiAr DQo+ICsvKiogVGhlIHN0cnRvbGwgZnVuY3Rpb24gY29udmVydHMgdGhlIGluaXRpYWwgcG9ydGlv biBvZiB0aGUgc3RyaW5nIHBvaW50ZWQgdG8NCj4gKyAgICBieSBucHRyIHRvIGxvbmcgbG9uZyBp bnQgcmVwcmVzZW50YXRpb24uDQo+ICsNCj4gKyAgICBTZWUgdGhlIGRlc2NyaXB0aW9uIGZvciBz dHJ0b2wgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQo+ICsNCj4gKyAgQHJldHVybiAgIFRoZSBzdHJ0 b2xsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnZlcnRlZCB2YWx1ZSwgaWYgYW55LiBJZiBubw0K PiArICAgICAgICAgICAgY29udmVyc2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQsIHplcm8gaXMgcmV0 dXJuZWQuIElmIHRoZSBjb3JyZWN0DQo+ICsgICAgICAgICAgICB2YWx1ZSBpcyBvdXRzaWRlIHRo ZSByYW5nZSBvZiByZXByZXNlbnRhYmxlIHZhbHVlcywgTExPTkdfTUlOIG9yDQo+ICsgICAgICAg ICAgICBMTE9OR19NQVggaXMgcmV0dXJuZWQgKGFjY29yZGluZyB0byB0aGUgc2lnbiBvZiB0aGUg dmFsdWUsIGlmIGFueSksDQo+ICsgICAgICAgICAgICBhbmQgdGhlIHZhbHVlIG9mIHRoZSBtYWNy byBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0KPiArKiovDQo+ICtsb25nIGxvbmcNCj4gK3N0 cnRvbGwoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFzZSkNCj4gK3sN Cj4gKyAgY29uc3QgY2hhciAqcEVuZDsNCj4gKyAgbG9uZyBsb25nICAgUmVzdWx0ID0gMDsNCj4g KyAgbG9uZyBsb25nICAgUHJldmlvdXM7DQo+ICsgIGludCAgICAgICAgIHRlbXA7DQo+ICsgIEJP T0xFQU4gICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsNCj4gKyAgcEVuZCA9IG5wdHI7DQo+ICsN Cj4gKyAgaWYoKGJhc2UgPCAwKSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiAr ICAgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ICsgICAgKmVuZHB0ciA9IE5VTEw7DQo+ICsgICAg fQ0KPiArICAgIHJldHVybiAwOw0KPiArICB9DQo+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFjZXMu DQo+ICsgIHdoaWxlKGlzc3BhY2UoKm5wdHIpKSAgICsrbnB0cjsNCj4gKw0KPiArICAvLyBQcm9j ZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsIHNpZ24gZm9sbG93ZWQgYnkgZGlnaXRzLg0K PiArICBpZigqbnB0ciA9PSAnKycpIHsNCj4gKyAgICBOZWdhdGl2ZSA9IEZBTFNFOw0KPiArICAg ICsrbnB0cjsNCj4gKyAgfQ0KPiArICBlbHNlIGlmKCpucHRyID09ICctJykgew0KPiArICAgIE5l Z2F0aXZlID0gVFJVRTsNCj4gKyAgICArK25wdHI7DQo+ICsgIH0NCj4gKw0KPiArICBpZigqbnB0 ciA9PSAnMCcpIHsgIC8qIE1pZ2h0IGJlIE9jdGFsIG9yIEhleCAqLw0KPiArICAgIGlmKHRvdXBw ZXIobnB0clsxXSkgPT0gJ1gnKSB7ICAgLyogTG9va3MgbGlrZSBIZXggKi8NCj4gKyAgICAgIGlm KChiYXNlID09IDApIHx8IChiYXNlID09IDE2KSkgew0KPiArICAgICAgICBucHRyICs9IDI7ICAv KiBTa2lwIHRoZSAiMFgiICAgICAgKi8NCj4gKyAgICAgICAgYmFzZSA9IDE2OyAgLyogSW4gY2Fz ZSBiYXNlIHdhcyAwICovDQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICAgIGVsc2UgeyAgICAv KiBMb29rcyBsaWtlIE9jdGFsICovDQo+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9 PSA4KSkgew0KPiArICAgICAgICArK25wdHI7ICAgICAvKiBTa2lwIHRoZSBsZWFkaW5nICIwIiAq Lw0KPiArICAgICAgICBiYXNlID0gODsgICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgICAqLw0KPiAr ICAgICAgfQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArICBpZihiYXNlID09IDApIHsgICAvKiBJZiBz dGlsbCB6ZXJvIHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ICsgICAgYmFzZSA9IDEwOw0KPiAr ICB9DQo+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gKyAgICBmb3IoIDsgKm5wdHIgPT0gJzAn OyArK25wdHIpOyAgLyogU2tpcCBhbnkgcmVtYWluaW5nIGxlYWRpbmcgemVyb3MgKi8NCj4gKyAg ICBwRW5kID0gbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIHdoaWxlKCBpc2FsbnVtKCpucHRyKSAm JiAoKHRlbXAgPSBEaWdpdDJWYWwoKm5wdHIpKSA8IGJhc2UpKSB7DQo+ICsgICAgUHJldmlvdXMg PSBSZXN1bHQ7DQo+ICsgICAgUmVzdWx0ID0gTXVsdFM2NHg2NCAoUmVzdWx0LCBiYXNlKSArIChs b25nIGxvbmcgaW50KXRlbXA7DQo+ICsgICAgaWYoIFJlc3VsdCA8PSBQcmV2aW91cykgeyAgIC8v IERldGVjdCBPdmVyZmxvdw0KPiArICAgICAgaWYoTmVnYXRpdmUpIHsNCj4gKyAgICAgICAgUmVz dWx0ID0gTExPTkdfTUlOOw0KPiArICAgICAgfQ0KPiArICAgICAgZWxzZSB7DQo+ICsgICAgICAg IFJlc3VsdCA9IExMT05HX01BWDsNCj4gKyAgICAgIH0NCj4gKyAgICAgIE5lZ2F0aXZlID0gRkFM U0U7DQo+ICsgICAgICBlcnJubyA9IEVSQU5HRTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0N Cj4gKyAgICBwRW5kID0gKytucHRyOw0KPiArICB9DQo+ICsgIGlmKE5lZ2F0aXZlKSB7DQo+ICsg ICAgUmVzdWx0ID0gLVJlc3VsdDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIFNhdmUgcG9pbnRlciB0 byBmaW5hbCBzZXF1ZW5jZQ0KPiArICBpZihlbmRwdHIgIT0gTlVMTCkgew0KPiArICAgICplbmRw dHIgPSAoY2hhciAqKXBFbmQ7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIFJlc3VsdDsNCj4gK30NCj4g Kw0KPiArLyoqIFRoZSBzdHJ0b2wsIHN0cnRvbGwsIHN0cnRvdWwsIGFuZCBzdHJ0b3VsbCBmdW5j dGlvbnMgY29udmVydCB0aGUgaW5pdGlhbA0KPiArICAgIHBvcnRpb24gb2YgdGhlIHN0cmluZyBw b2ludGVkIHRvIGJ5IG5wdHIgdG8gbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQsDQo+ICsgICAgdW5z aWduZWQgbG9uZyBpbnQsIGFuZCB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHJlcHJlc2VudGF0aW9u LCByZXNwZWN0aXZlbHkuDQo+ICsgICAgRmlyc3QsIHRoZXkgZGVjb21wb3NlIHRoZSBpbnB1dCBz dHJpbmcgaW50byB0aHJlZSBwYXJ0czogYW4gaW5pdGlhbCwNCj4gKyAgICBwb3NzaWJseSBlbXB0 eSwgc2VxdWVuY2Ugb2Ygd2hpdGUtc3BhY2UgY2hhcmFjdGVycyAoYXMgc3BlY2lmaWVkIGJ5IHRo ZQ0KPiArICAgIGlzc3BhY2UgZnVuY3Rpb24pLCBhIHN1YmplY3Qgc2VxdWVuY2UgcmVzZW1ibGlu ZyBhbiBpbnRlZ2VyIHJlcHJlc2VudGVkIGluDQo+ICsgICAgc29tZSByYWRpeCBkZXRlcm1pbmVk IGJ5IHRoZSB2YWx1ZSBvZiBiYXNlLCBhbmQgYSBmaW5hbCBzdHJpbmcgb2Ygb25lIG9yDQo+ICsg ICAgbW9yZSB1bnJlY29nbml6ZWQgY2hhcmFjdGVycywgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGlu ZyBudWxsIGNoYXJhY3RlciBvZg0KPiArICAgIHRoZSBpbnB1dCBzdHJpbmcuIFRoZW4sIHRoZXkg YXR0ZW1wdCB0byBjb252ZXJ0IHRoZSBzdWJqZWN0IHNlcXVlbmNlIHRvIGFuDQo+ICsgICAgaW50 ZWdlciwgYW5kIHJldHVybiB0aGUgcmVzdWx0Lg0KPiArDQo+ICsgICAgSWYgdGhlIHZhbHVlIG9m IGJhc2UgaXMgemVybywgdGhlIGV4cGVjdGVkIGZvcm0gb2YgdGhlIHN1YmplY3Qgc2VxdWVuY2Ug aXMNCj4gKyAgICB0aGF0IG9mIGFuIGludGVnZXIgY29uc3RhbnQsIG9wdGlvbmFsbHkgcHJlY2Vk ZWQNCj4gKyAgICBieSBhIHBsdXMgb3IgbWludXMgc2lnbiwgYnV0IG5vdCBpbmNsdWRpbmcgYW4g aW50ZWdlciBzdWZmaXguIElmIHRoZSB2YWx1ZQ0KPiArICAgIG9mIGJhc2UgaXMgYmV0d2VlbiAy IGFuZCAzNiAoaW5jbHVzaXZlKSwgdGhlIGV4cGVjdGVkIGZvcm0gb2YgdGhlIHN1YmplY3QNCj4g KyAgICBzZXF1ZW5jZSBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgYW5kIGRpZ2l0cyByZXByZXNl bnRpbmcgYW4gaW50ZWdlciB3aXRoDQo+ICsgICAgdGhlIHJhZGl4IHNwZWNpZmllZCBieSBiYXNl LCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGEgcGx1cyBvciBtaW51cyBzaWduLA0KPiArICAgIGJ1 dCBub3QgaW5jbHVkaW5nIGFuIGludGVnZXIgc3VmZml4LiBUaGUgbGV0dGVycyBmcm9tIGEgKG9y IEEpIHRocm91Z2ggeg0KPiArICAgIChvciBaKSBhcmUgYXNjcmliZWQgdGhlIHZhbHVlcyAxMCB0 aHJvdWdoIDM1OyBvbmx5IGxldHRlcnMgYW5kIGRpZ2l0cyB3aG9zZQ0KPiArICAgIGFzY3JpYmVk IHZhbHVlcyBhcmUgbGVzcyB0aGFuIHRoYXQgb2YgYmFzZSBhcmUgcGVybWl0dGVkLiBJZiB0aGUg dmFsdWUgb2YNCj4gKyAgICBiYXNlIGlzIDE2LCB0aGUgY2hhcmFjdGVycyAweCBvciAwWCBtYXkg b3B0aW9uYWxseSBwcmVjZWRlIHRoZSBzZXF1ZW5jZSBvZg0KPiArICAgIGxldHRlcnMgYW5kIGRp Z2l0cywgZm9sbG93aW5nIHRoZSBzaWduIGlmIHByZXNlbnQuDQo+ICsNCj4gKyAgICBUaGUgc3Vi amVjdCBzZXF1ZW5jZSBpcyBkZWZpbmVkIGFzIHRoZSBsb25nZXN0IGluaXRpYWwgc3Vic2VxdWVu Y2Ugb2YgdGhlDQo+ICsgICAgaW5wdXQgc3RyaW5nLCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBu b24td2hpdGUtc3BhY2UgY2hhcmFjdGVyLCB0aGF0IGlzIG9mDQo+ICsgICAgdGhlIGV4cGVjdGVk IGZvcm0uIFRoZSBzdWJqZWN0IHNlcXVlbmNlIGNvbnRhaW5zIG5vIGNoYXJhY3RlcnMgaWYgdGhl IGlucHV0DQo+ICsgICAgc3RyaW5nIGlzIGVtcHR5IG9yIGNvbnNpc3RzIGVudGlyZWx5IG9mIHdo aXRlIHNwYWNlLCBvciBpZiB0aGUgZmlyc3QNCj4gKyAgICBub24td2hpdGUtc3BhY2UgY2hhcmFj dGVyIGlzIG90aGVyIHRoYW4gYSBzaWduIG9yIGEgcGVybWlzc2libGUgbGV0dGVyIG9yIGRpZ2l0 Lg0KPiArDQo+ICsgICAgSWYgdGhlIHN1YmplY3Qgc2VxdWVuY2UgaGFzIHRoZSBleHBlY3RlZCBm b3JtIGFuZCB0aGUgdmFsdWUgb2YgYmFzZSBpcw0KPiArICAgIHplcm8sIHRoZSBzZXF1ZW5jZSBv ZiBjaGFyYWN0ZXJzIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IGRpZ2l0IGlzDQo+ICsgICAgaW50 ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBjb25zdGFudC4gSWYgdGhlIHN1YmplY3Qgc2VxdWVuY2Ug aGFzIHRoZQ0KPiArICAgIGV4cGVjdGVkIGZvcm0gYW5kIHRoZSB2YWx1ZSBvZiBiYXNlIGlzIGJl dHdlZW4gMiBhbmQgMzYsIGl0IGlzIHVzZWQgYXMgdGhlDQo+ICsgICAgYmFzZSBmb3IgY29udmVy c2lvbiwgYXNjcmliaW5nIHRvIGVhY2ggbGV0dGVyIGl0cyB2YWx1ZSBhcyBnaXZlbiBhYm92ZS4g SWYNCj4gKyAgICB0aGUgc3ViamVjdCBzZXF1ZW5jZSBiZWdpbnMgd2l0aCBhIG1pbnVzIHNpZ24s IHRoZSB2YWx1ZSByZXN1bHRpbmcgZnJvbSB0aGUNCj4gKyAgICBjb252ZXJzaW9uIGlzIG5lZ2F0 ZWQgKGluIHRoZSByZXR1cm4gdHlwZSkuIEEgcG9pbnRlciB0byB0aGUgZmluYWwgc3RyaW5nDQo+ ICsgICAgaXMgc3RvcmVkIGluIHRoZSBvYmplY3QgcG9pbnRlZCB0byBieSBlbmRwdHIsIHByb3Zp ZGVkIHRoYXQgZW5kcHRyIGlzDQo+ICsgICAgbm90IGEgbnVsbCBwb2ludGVyLg0KPiArDQo+ICsg ICAgSW4gb3RoZXIgdGhhbiB0aGUgIkMiIGxvY2FsZSwgYWRkaXRpb25hbCBsb2NhbGUtc3BlY2lm aWMgc3ViamVjdCBzZXF1ZW5jZQ0KPiArICAgIGZvcm1zIG1heSBiZSBhY2NlcHRlZC4NCj4gKw0K PiArICAgIElmIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGlzIGVtcHR5IG9yIGRvZXMgbm90IGhhdmUg dGhlIGV4cGVjdGVkIGZvcm0sIG5vDQo+ICsgICAgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQ7IHRo ZSB2YWx1ZSBvZiBucHRyIGlzIHN0b3JlZCBpbiB0aGUgb2JqZWN0IHBvaW50ZWQNCj4gKyAgICB0 byBieSBlbmRwdHIsIHByb3ZpZGVkIHRoYXQgZW5kcHRyIGlzIG5vdCBhIG51bGwgcG9pbnRlci4N Cj4gKw0KPiArICBAcmV0dXJuICAgVGhlIHN0cnRvbCwgc3RydG9sbCwgc3RydG91bCwgYW5kIHN0 cnRvdWxsIGZ1bmN0aW9ucyByZXR1cm4gdGhlDQo+ICsgICAgICAgICAgICBjb252ZXJ0ZWQgdmFs dWUsIGlmIGFueS4gSWYgbm8gY29udmVyc2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQsIHplcm8NCj4g KyAgICAgICAgICAgIGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdCB2YWx1ZSBpcyBvdXRzaWRl IHRoZSByYW5nZSBvZg0KPiArICAgICAgICAgICAgcmVwcmVzZW50YWJsZSB2YWx1ZXMsIExPTkdf TUlOLCBMT05HX01BWCwgTExPTkdfTUlOLCBMTE9OR19NQVgsDQo+ICsgICAgICAgICAgICBVTE9O R19NQVgsIG9yIFVMTE9OR19NQVggaXMgcmV0dXJuZWQgKGFjY29yZGluZyB0byB0aGUgcmV0dXJu IHR5cGUNCj4gKyAgICAgICAgICAgIGFuZCBzaWduIG9mIHRoZSB2YWx1ZSwgaWYgYW55KSwgYW5k IHRoZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFDQo+ICsgICAgICAgICAgICBpcyBzdG9yZWQg aW4gZXJybm8uDQo+ICsqKi8NCj4gK2xvbmcNCj4gK3N0cnRvbChjb25zdCBjaGFyICogbnB0ciwg Y2hhciAqKiBlbmRwdHIsIGludCBiYXNlKQ0KPiArew0KPiArICBjb25zdCBjaGFyICpwRW5kOw0K PiArICBsb25nICAgICAgICBSZXN1bHQgPSAwOw0KPiArICBsb25nICAgICAgICBQcmV2aW91czsN Cj4gKyAgaW50ICAgICAgICAgdGVtcDsNCj4gKyAgQk9PTEVBTiAgICAgTmVnYXRpdmUgPSBGQUxT RTsNCj4gKw0KPiArICBwRW5kID0gbnB0cjsNCj4gKw0KPiArICBpZigoYmFzZSA8IDApIHx8IChi YXNlID09IDEpIHx8IChiYXNlID4gMzYpKSB7DQo+ICsgICAgaWYoZW5kcHRyICE9IE5VTEwpIHsN Cj4gKyAgICAqZW5kcHRyID0gTlVMTDsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIDA7DQo+ICsg IH0NCj4gKyAgLy8gU2tpcCBsZWFkaW5nIHNwYWNlcy4NCj4gKyAgd2hpbGUoaXNzcGFjZSgqbnB0 cikpICAgKytucHRyOw0KPiArDQo+ICsgIC8vIFByb2Nlc3MgU3ViamVjdCBzZXF1ZW5jZTogb3B0 aW9uYWwgc2lnbiBmb2xsb3dlZCBieSBkaWdpdHMuDQo+ICsgIGlmKCpucHRyID09ICcrJykgew0K PiArICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsgICAgKytucHRyOw0KPiArICB9DQo+ICsgIGVs c2UgaWYoKm5wdHIgPT0gJy0nKSB7DQo+ICsgICAgTmVnYXRpdmUgPSBUUlVFOw0KPiArICAgICsr bnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmKCpucHRyID09ICcwJykgeyAgLyogTWlnaHQgYmUg T2N0YWwgb3IgSGV4ICovDQo+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9PSAnWCcpIHsgICAv KiBMb29rcyBsaWtlIEhleCAqLw0KPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0g MTYpKSB7DQo+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIwWCIgICAgICAqLw0K PiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8NCj4gKyAgICAg IH0NCj4gKyAgICB9DQo+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2UgT2N0YWwgKi8NCj4g KyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ICsgICAgICAgICsrbnB0 cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ICsgICAgICAgIGJhc2UgPSA4OyAg IC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9 DQo+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHplcm8gdGhlbiBtdXN0IGJlIGRl Y2ltYWwgKi8NCj4gKyAgICBiYXNlID0gMTA7DQo+ICsgIH0NCj4gKyAgaWYoKm5wdHIgID09ICcw Jykgew0KPiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7ICAvKiBTa2lwIGFueSBy ZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0KPiArICAgIHBFbmQgPSBucHRyOw0KPiArICB9DQo+ ICsNCj4gKyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERpZ2l0MlZhbCgqbnB0 cikpIDwgYmFzZSkpIHsNCj4gKyAgICBQcmV2aW91cyA9IFJlc3VsdDsNCj4gKyAgICBSZXN1bHQg PSAoUmVzdWx0ICogYmFzZSkgKyAobG9uZyBpbnQpdGVtcDsNCj4gKyAgICBpZiggUmVzdWx0IDw9 IFByZXZpb3VzKSB7ICAgLy8gRGV0ZWN0IE92ZXJmbG93DQo+ICsgICAgICBpZihOZWdhdGl2ZSkg ew0KPiArICAgICAgICBSZXN1bHQgPSBMT05HX01JTjsNCj4gKyAgICAgIH0NCj4gKyAgICAgIGVs c2Ugew0KPiArICAgICAgICBSZXN1bHQgPSBMT05HX01BWDsNCj4gKyAgICAgIH0NCj4gKyAgICAg IE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsgICAgICBlcnJubyA9IEVSQU5HRTsNCj4gKyAgICAgIGJy ZWFrOw0KPiArICAgIH0NCj4gKyAgICBwRW5kID0gKytucHRyOw0KPiArICB9DQo+ICsgIGlmKE5l Z2F0aXZlKSB7DQo+ICsgICAgUmVzdWx0ID0gLVJlc3VsdDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v IFNhdmUgcG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiArICBpZihlbmRwdHIgIT0gTlVMTCkg ew0KPiArICAgICplbmRwdHIgPSAoY2hhciAqKXBFbmQ7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIFJl c3VsdDsNCj4gK30NCj4gKw0KPiArLyoqIFRoZSBzdHJ0b3VsbCBmdW5jdGlvbiBjb252ZXJ0cyB0 aGUgaW5pdGlhbCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcgcG9pbnRlZCB0bw0KPiArICAgIGJ5IG5w dHIgdG8gdW5zaWduZWQgbG9uZyBsb25nIGludCByZXByZXNlbnRhdGlvbi4NCj4gKw0KPiArICAg IFNlZSB0aGUgZGVzY3JpcHRpb24gZm9yIHN0cnRvbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4NCj4g Kw0KPiArICBAcmV0dXJuICAgVGhlIHN0cnRvdWxsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnZl cnRlZCB2YWx1ZSwgaWYgYW55LiBJZiBubw0KPiArICAgICAgICAgICAgY29udmVyc2lvbiBjb3Vs ZCBiZSBwZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3JyZWN0DQo+ICsgICAg ICAgICAgICB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZiByZXByZXNlbnRhYmxlIHZhbHVl cywgVUxMT05HX01BWCBpcw0KPiArICAgICAgICAgICAgcmV0dXJuZWQgYW5kIHRoZSB2YWx1ZSBv ZiB0aGUgbWFjcm8gRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gKyoqLw0KPiArdW5zaWdu ZWQgbG9uZyBsb25nDQo+ICtzdHJ0b3VsbChjb25zdCBjaGFyICogbnB0ciwgY2hhciAqKiBlbmRw dHIsIGludCBiYXNlKQ0KPiArew0KPiArICBjb25zdCBjaGFyICAgICAgICAgICAqcEVuZDsNCj4g KyAgdW5zaWduZWQgbG9uZyBsb25nICAgIFJlc3VsdCA9IDA7DQo+ICsgIHVuc2lnbmVkIGxvbmcg bG9uZyAgICBQcmV2aW91czsNCj4gKyAgaW50ICAgICAgICAgICAgICAgICAgIHRlbXA7DQo+ICsN Cj4gKyAgcEVuZCA9IG5wdHI7DQo+ICsNCj4gKyAgaWYoKGJhc2UgPCAwKSB8fCAoYmFzZSA9PSAx KSB8fCAoYmFzZSA+IDM2KSkgew0KPiArICAgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ICsgICAg KmVuZHB0ciA9IE5VTEw7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiAwOw0KPiArICB9DQo+ICsg IC8vIFNraXAgbGVhZGluZyBzcGFjZXMuDQo+ICsgIHdoaWxlKGlzc3BhY2UoKm5wdHIpKSAgICsr bnB0cjsNCj4gKw0KPiArICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsICsg c2lnbiBmb2xsb3dlZCBieSBkaWdpdHMuDQo+ICsgIGlmKCpucHRyID09ICcrJykgew0KPiArICAg ICsrbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmKCpucHRyID09ICcwJykgeyAgLyogTWlnaHQg YmUgT2N0YWwgb3IgSGV4ICovDQo+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9PSAnWCcpIHsg ICAvKiBMb29rcyBsaWtlIEhleCAqLw0KPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2Ug PT0gMTYpKSB7DQo+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIwWCIgICAgICAq Lw0KPiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8NCj4gKyAg ICAgIH0NCj4gKyAgICB9DQo+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2UgT2N0YWwgKi8N Cj4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ICsgICAgICAgICsr bnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ICsgICAgICAgIGJhc2UgPSA4 OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiAr ICB9DQo+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHplcm8gdGhlbiBtdXN0IGJl IGRlY2ltYWwgKi8NCj4gKyAgICBiYXNlID0gMTA7DQo+ICsgIH0NCj4gKyAgaWYoKm5wdHIgID09 ICcwJykgew0KPiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7ICAvKiBTa2lwIGFu eSByZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0KPiArICAgIHBFbmQgPSBucHRyOw0KPiArICB9 DQo+ICsNCj4gKyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERpZ2l0MlZhbCgq bnB0cikpIDwgYmFzZSkpIHsNCj4gKyAgICBQcmV2aW91cyA9IFJlc3VsdDsNCj4gKyAgICBSZXN1 bHQgPSBEaXZVNjR4MzIgKFJlc3VsdCwgYmFzZSkgKyAodW5zaWduZWQgbG9uZyBsb25nKXRlbXA7 DQo+ICsgICAgaWYoIFJlc3VsdCA8IFByZXZpb3VzKSAgeyAgIC8vIElmIHdlIG92ZXJmbG93ZWQN Cj4gKyAgICAgIFJlc3VsdCA9IFVMTE9OR19NQVg7DQo+ICsgICAgICBlcnJubyA9IEVSQU5HRTsN Cj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBwRW5kID0gKytucHRyOw0KPiArICB9 DQo+ICsNCj4gKyAgLy8gU2F2ZSBwb2ludGVyIHRvIGZpbmFsIHNlcXVlbmNlDQo+ICsgIGlmKGVu ZHB0ciAhPSBOVUxMKSB7DQo+ICsgICAgKmVuZHB0ciA9IChjaGFyICopcEVuZDsNCj4gKyAgfQ0K PiArICByZXR1cm4gUmVzdWx0Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgZWRrMiBKYW5zc29u IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBkb3VibGVzLCBzaW1wbHkgcmV0dXJuIDAuDQo+ICsNCj4g KyAgVGhlc2UgY29udmVyc2lvbiBmdW5jdGlvbnMgY29udmVydCB0aGUgaW5pdGlhbCBwb3J0aW9u IG9mIHRoZSBzdHJpbmcNCj4gKyAgcG9pbnRlZCB0byBieSBucHRyIHRvIGRvdWJsZSwgZmxvYXQs IGFuZCBsb25nIGRvdWJsZSByZXByZXNlbnRhdGlvbiwNCj4gKyAgcmVzcGVjdGl2ZWx5Lg0KPiAr DQo+ICsgIFRoZSBzdHJ0b2QoKSwgc3RydG9mKCksIGFuZCBzdHJ0b2xkKCkgZnVuY3Rpb25zIHJl dHVybiB0aGUgY29udmVydGVkDQo+ICsgIHZhbHVlLCBpZiBhbnkuDQo+ICsNCj4gKyAgSWYgZW5k cHRyIGlzIG5vdCBOVUxMLCBhIHBvaW50ZXIgdG8gdGhlIGNoYXJhY3RlciBhZnRlciB0aGUgbGFz dCBjaGFyYWMtDQo+ICsgIHRlciB1c2VkIGluIHRoZSBjb252ZXJzaW9uIGlzIHN0b3JlZCBpbiB0 aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieQ0KPiArICBlbmRwdHIuDQo+ICsNCj4gKyAgSWYgbm8g Y29udmVyc2lvbiBpcyBwZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQgYW5kIHRoZSB2YWx1ZSBv ZiBucHRyIGlzDQo+ICsgIHN0b3JlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieSBlbmRw dHIuDQo+ICsNCj4gKyAgSWYgdGhlIGNvcnJlY3QgdmFsdWUgd291bGQgY2F1c2Ugb3ZlcmZsb3cs IHBsdXMgb3IgbWludXMgSFVHRV9WQUwsDQo+ICsgIEhVR0VfVkFMRiwgb3IgSFVHRV9WQUxMIGlz IHJldHVybmVkIChhY2NvcmRpbmcgdG8gdGhlIHNpZ24gYW5kIHR5cGUgb2YNCj4gKyAgdGhlIHJl dHVybiB2YWx1ZSksIGFuZCBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLiAgSWYgdGhlIGNvcnJl Y3QgdmFsdWUNCj4gKyAgd291bGQgY2F1c2UgdW5kZXJmbG93LCB6ZXJvIGlzIHJldHVybmVkIGFu ZCBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0KPiArDQo+ICsgIEByZXR1cm4gIFJldHVybiAw Lg0KPiArKiovDQo+ICtkb3VibGUNCj4gK3N0cnRvZCAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3Qg bnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IGVuZHB0cikgew0KPiArICAgIGlmKGVuZHB0cikNCj4g KyAgICAgICplbmRwdHIgPSAoY2hhciAqKShucHRyICsgc3RybGVuKG5wdHIpKTsNCj4gKw0KPiAr ICAgIHJldHVybiAoZG91YmxlKTA7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBBbGxvY2F0ZSBh bmQgemVyby1pbml0aWFsaXplIGFycmF5Lg0KPiArKiovDQo+ICt2b2lkICoNCj4gK2NhbGxvYyhz aXplX3QgTnVtLCBzaXplX3QgU2l6ZSkNCj4gK3sNCj4gKyAgdm9pZCAgICAgICAqUmV0VmFsOw0K PiArICBzaXplX3QgICAgICBOdW1TaXplOw0KPiArDQo+ICsgIE51bVNpemUgPSBOdW0gKiBTaXpl Ow0KPiArICBSZXRWYWwgID0gTlVMTDsNCj4gKyAgaWYgKE51bVNpemUgIT0gMCkgew0KPiArICBS ZXRWYWwgPSBtYWxsb2MoTnVtU2l6ZSk7DQo+ICsgIGlmKCBSZXRWYWwgIT0gTlVMTCkgew0KPiAr ICAgIChWT0lEKVplcm9NZW0oIFJldFZhbCwgTnVtU2l6ZSk7DQo+ICsgIH0NCj4gKyAgfQ0KPiAr ICBERUJVRygoREVCVUdfUE9PTCwgIjB4JXAgPSBjYWxsb2MoJWQsICVkKVxuIiwgUmV0VmFsLCBO dW0sIFNpemUpKTsNCj4gKw0KPiArICByZXR1cm4gUmV0VmFsOw0KPiArfQ0KPiArDQo+ICsvLw0K PiArLy8gIFRoZSBhcnJheXMgZ2l2ZSB0aGUgY3VtdWxhdGl2ZSBudW1iZXIgb2YgZGF5cyB1cCB0 byB0aGUgZmlyc3Qgb2YgdGhlDQo+ICsvLyAgbW9udGggbnVtYmVyIHVzZWQgYXMgdGhlIGluZGV4 ICgxIC0+IDEyKSBmb3IgcmVndWxhciBhbmQgbGVhcCB5ZWFycy4NCj4gKy8vICBUaGUgdmFsdWUg YXQgaW5kZXggMTMgaXMgZm9yIHRoZSB3aG9sZSB5ZWFyLg0KPiArLy8NCj4gK1VJTlROIEN1bXVs YXRpdmVEYXlzWzJdWzE0XSA9IHsNCj4gKyAgew0KPiArICAgIDAsDQo+ICsgICAgMCwNCj4gKyAg ICAzMSwNCj4gKyAgICAzMSArIDI4LA0KPiArICAgIDMxICsgMjggKyAzMSwNCj4gKyAgICAzMSAr IDI4ICsgMzEgKyAzMCwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxLA0KPiArICAgIDMx ICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMx ICsgMzAgKyAzMSwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMx LA0KPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCwNCj4g KyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSwNCj4g KyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSArIDMw LA0KPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMx ICsgMzAgKyAzMQ0KPiArICB9LA0KPiArICB7DQo+ICsgICAgMCwNCj4gKyAgICAwLA0KPiArICAg IDMxLA0KPiArICAgIDMxICsgMjksDQo+ICsgICAgMzEgKyAyOSArIDMxLA0KPiArICAgIDMxICsg MjkgKyAzMSArIDMwLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEsDQo+ICsgICAgMzEg KyAyOSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEg KyAzMCArIDMxLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEs DQo+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwLA0KPiAr ICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxLA0KPiAr ICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxICsgMzAs DQo+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEg KyAzMCArIDMxDQo+ICsgIH0NCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgSXNMZWFwKHkpICAgKCgo eSkgJSA0KSA9PSAwICYmICgoKHkpICUgMTAwKSAhPSAwIHx8ICgoeSkgJSA0MDApID09IDApKQ0K PiArI2RlZmluZSBTRUNTUEVSTUlOICAoNjApDQo+ICsjZGVmaW5lIFNFQ1NQRVJIT1VSICg2MCAq IDYwKQ0KPiArI2RlZmluZSBTRUNTUEVSREFZICAoMjQgKiBTRUNTUEVSSE9VUikNCj4gKw0KPiAr LyoqDQo+ICsgIEdldCB0aGUgc3lzdGVtIHRpbWUgYXMgc2Vjb25kcyBlbGFwc2VkIHNpbmNlIG1p ZG5pZ2h0LCBKYW51YXJ5IDEsIDE5NzAuDQo+ICsqKi8NCj4gK3RpbWVfdCB0aW1lICh0aW1lX3Qg KnRpbWVyKQ0KPiArew0KPiArICBFRklfVElNRSAgVGltZTsNCj4gKyAgdGltZV90ICAgIENhbFRp bWU7DQo+ICsgIFVJTlROICAgICBZZWFyOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCB0aGUg Y3VycmVudCB0aW1lIGFuZCBkYXRlIGluZm9ybWF0aW9uDQo+ICsgIC8vDQo+ICsgIGdSVC0+R2V0 VGltZSAoJlRpbWUsIE5VTEwpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFllYXJzIEhhbmRsaW5n DQo+ICsgIC8vIFVUaW1lIHNob3VsZCBub3cgYmUgc2V0IHRvIDAwOjAwOjAwIG9uIEphbiAxIG9m IHRoZSBjdXJyZW50IHllYXIuDQo+ICsgIC8vDQo+ICsgIGZvciAoWWVhciA9IDE5NzAsIENhbFRp bWUgPSAwOyBZZWFyICE9IFRpbWUuWWVhcjsgWWVhcisrKSB7DQo+ICsgICAgQ2FsVGltZSA9IENh bFRpbWUgKyAodGltZV90KShDdW11bGF0aXZlRGF5c1tJc0xlYXAoWWVhcildWzEzXSAqIFNFQ1NQ RVJEQVkpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWRkIGluIG51bWJlciBvZiBz ZWNvbmRzIGZvciBjdXJyZW50IE1vbnRoLCBEYXksIEhvdXIsIE1pbnV0ZSwgU2Vjb25kcywgYW5k IFRpbWVab25lIGFkanVzdG1lbnQNCj4gKyAgLy8NCj4gKyAgQ2FsVGltZSA9IENhbFRpbWUgKw0K PiArICAgICAgICAgICAgKHRpbWVfdCkoKFRpbWUuVGltZVpvbmUgIT0gRUZJX1VOU1BFQ0lGSUVE X1RJTUVaT05FKSA/IChUaW1lLlRpbWVab25lICogNjApIDogMCkgKw0KPiArICAgICAgICAgICAg KHRpbWVfdCkoQ3VtdWxhdGl2ZURheXNbSXNMZWFwKFRpbWUuWWVhcildW1RpbWUuTW9udGhdICog U0VDU1BFUkRBWSkgKw0KPiArICAgICAgICAgICAgKHRpbWVfdCkoKChUaW1lLkRheSA+IDApID8g VGltZS5EYXkgLSAxIDogMCkgKiBTRUNTUEVSREFZKSArDQo+ICsgICAgICAgICAgICAodGltZV90 KShUaW1lLkhvdXIgKiBTRUNTUEVSSE9VUikgKw0KPiArICAgICAgICAgICAgKHRpbWVfdCkoVGlt ZS5NaW51dGUgKiA2MCkgKw0KPiArICAgICAgICAgICAgKHRpbWVfdClUaW1lLlNlY29uZDsNCj4g Kw0KPiArICBpZiAodGltZXIgIT0gTlVMTCkgew0KPiArICAgICp0aW1lciA9IENhbFRpbWU7DQo+ ICsgIH0NCj4gKw0KPiArICByZXR1cm4gQ2FsVGltZTsNCj4gK30NCj4gKw0KPiArdHlwZWRlZg0K PiAraW50DQo+ICsoKlNPUlRfQ09NUEFSRSkoDQo+ICsgIElOICBWT0lEICAqQnVmZmVyMSwNCj4g KyAgSU4gIFZPSUQgICpCdWZmZXIyDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBEdXBsaWNh dGVkIGZyb20gRURLSUkgQmFzZVNvcnRMaWIgZm9yIHFzb3J0KCkgd3JhcHBlcg0KPiArICBAcGFy YW1baW4sIG91dF0gQnVmZmVyVG9Tb3J0ICAgb24gY2FsbCBhIEJ1ZmZlciBvZiAocG9zc2libHkg c29ydGVkKSBlbGVtZW50cw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24g cmV0dXJuIGEgYnVmZmVyIG9mIHNvcnRlZCBlbGVtZW50cw0KPiArICBAcGFyYW1baW5dIENvdW50 ICAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYnVmZmVyIHRvIHNv cnQNCj4gKyAgQHBhcmFtW2luXSBFbGVtZW50U2l6ZSAgICAgICAgIFNpemUgb2YgYW4gZWxlbWVu dCBpbiBieXRlcw0KPiArICBAcGFyYW1baW5dIENvbXBhcmVGdW5jdGlvbiAgICAgVGhlIGZ1bmN0 aW9uIHRvIGNhbGwgdG8gcGVyZm9ybSB0aGUgY29tcGFyaXNvbg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2YgYW55IDIgZWxlbWVudHMNCj4gKyAgQHBhcmFtW2luXSBCdWZm ZXIgICAgICAgICAgICAgIEJ1ZmZlciBvZiBzaXplIEVsZW1lbnRTaXplIGZvciB1c2UgaW4gc3dh cHBpbmcNCj4gKyoqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtRdWlja1NvcnRXb3JrZXIgKA0K PiArICBJTiBPVVQgICAgVk9JRCAgICAgICAgICAqQnVmZmVyVG9Tb3J0LA0KPiArICBJTiBDT05T VCAgVUlOVE4gICAgICAgICBDb3VudCwNCj4gKyAgSU4gQ09OU1QgIFVJTlROICAgICAgICAgRWxl bWVudFNpemUsDQo+ICsgIElOICAgICAgICBTT1JUX0NPTVBBUkUgIENvbXBhcmVGdW5jdGlvbiwN Cj4gKyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgKkJ1ZmZlcg0KPiArICApDQo+ICt7DQo+ICsg IFZPSUQgICAgICAgICpQaXZvdDsNCj4gKyAgVUlOVE4gICAgICAgTG9vcENvdW50Ow0KPiArICBV SU5UTiAgICAgICBOZXh0U3dhcExvY2F0aW9uOw0KPiArDQo+ICsgIEFTU0VSVChCdWZmZXJUb1Nv cnQgICAgIT0gTlVMTCk7DQo+ICsgIEFTU0VSVChDb21wYXJlRnVuY3Rpb24gIT0gTlVMTCk7DQo+ ICsgIEFTU0VSVChCdWZmZXIgICAgICAgICAgIT0gTlVMTCk7DQo+ICsNCj4gKyAgaWYgKENvdW50 IDwgMiB8fCBFbGVtZW50U2l6ZSAgPCAxKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsN Cj4gKyAgTmV4dFN3YXBMb2NhdGlvbiA9IDA7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUGljayBh IHBpdm90ICh3ZSBjaG9vc2UgbGFzdCBlbGVtZW50KQ0KPiArICAvLw0KPiArICBQaXZvdCA9ICgo VUlOVDggKilCdWZmZXJUb1NvcnQgKyAoKENvdW50IC0gMSkgKiBFbGVtZW50U2l6ZSkpOw0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIE5vdyBnZXQgdGhlIHBpdm90IHN1Y2ggdGhhdCBhbGwgb24gImxl ZnQiIGFyZSBiZWxvdyBpdA0KPiArICAvLyBhbmQgZXZlcnl0aGluZyAicmlnaHQiIGFyZSBhYm92 ZSBpdA0KPiArICAvLw0KPiArICBmb3IgKExvb3BDb3VudCA9IDA7IExvb3BDb3VudCA8IENvdW50 IC0gMTsgIExvb3BDb3VudCsrKQ0KPiArICB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBJZiB0aGUg ZWxlbWVudCBpcyBsZXNzIHRoYW4gdGhlIHBpdm90DQo+ICsgICAgLy8NCj4gKyAgICBpZiAoQ29t cGFyZUZ1bmN0aW9uICgoVk9JRCAqKSgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoKExvb3BDb3Vu dCkgKiBFbGVtZW50U2l6ZSkpLCBQaXZvdCkgPD0gMCkgew0KPiArICAgICAgLy8NCj4gKyAgICAg IC8vIFN3YXANCj4gKyAgICAgIC8vDQo+ICsgICAgICBDb3B5TWVtIChCdWZmZXIsIChVSU5UOCAq KUJ1ZmZlclRvU29ydCArIChOZXh0U3dhcExvY2F0aW9uICogRWxlbWVudFNpemUpLCBFbGVtZW50 U2l6ZSk7DQo+ICsgICAgICBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3 YXBMb2NhdGlvbiAqIEVsZW1lbnRTaXplKSwgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKChMb29w Q291bnQpICoNCj4gRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7DQo+ICsgICAgICBDb3B5TWVt ICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoKExvb3BDb3VudCkgKiBFbGVtZW50U2l6ZSksIEJ1 ZmZlciwgRWxlbWVudFNpemUpOw0KPiArDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gSW5jcmVt ZW50IE5leHRTd2FwTG9jYXRpb24NCj4gKyAgICAgIC8vDQo+ICsgICAgICBOZXh0U3dhcExvY2F0 aW9uKys7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsgIC8vDQo+ICsgIC8vIFN3YXAgcGl2b3QgdG8g aXQncyBmaW5hbCBwb3NpdGlvbiAoTmV4dFN3YXBMb2NhaXRvbikNCj4gKyAgLy8NCj4gKyAgQ29w eU1lbSAoQnVmZmVyLCBQaXZvdCwgRWxlbWVudFNpemUpOw0KPiArICBDb3B5TWVtIChQaXZvdCwg KFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKE5leHRTd2FwTG9jYXRpb24gKiBFbGVtZW50U2l6ZSks IEVsZW1lbnRTaXplKTsNCj4gKyAgQ29weU1lbSAoKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKE5l eHRTd2FwTG9jYXRpb24gKiBFbGVtZW50U2l6ZSksIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIE5vdyByZWN1cnNlIG9uIDIgcGFyaXRpYWwgbGlzdHMuICBOZWl0 aGVyIG9mIHRoZXNlIHdpbGwgaGF2ZSB0aGUgJ3Bpdm90JyBlbGVtZW50Lg0KPiArICAvLyBJRSBs aXN0IGlzIHNvcnRlZCBsZWZ0IGhhbGYsIHBpdm90IGVsZW1lbnQsIHNvcnRlZCByaWdodCBoYWxm Li4uDQo+ICsgIC8vDQo+ICsgIFF1aWNrU29ydFdvcmtlciAoDQo+ICsgICAgQnVmZmVyVG9Tb3J0 LA0KPiArICAgIE5leHRTd2FwTG9jYXRpb24sDQo+ICsgICAgRWxlbWVudFNpemUsDQo+ICsgICAg Q29tcGFyZUZ1bmN0aW9uLA0KPiArICAgIEJ1ZmZlcg0KPiArICAgICk7DQo+ICsNCj4gKyAgUXVp Y2tTb3J0V29ya2VyICgNCj4gKyAgICAoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBM b2NhdGlvbiArIDEpICogRWxlbWVudFNpemUsDQo+ICsgICAgQ291bnQgLSBOZXh0U3dhcExvY2F0 aW9uIC0gMSwNCj4gKyAgICBFbGVtZW50U2l6ZSwNCj4gKyAgICBDb21wYXJlRnVuY3Rpb24sDQo+ ICsgICAgQnVmZmVyDQo+ICsgICAgKTsNCj4gKw0KPiArICByZXR1cm47DQo+ICt9DQo+ICsNCj4g Ky8qKg0KPiArICBQZXJmb3JtcyBhIHF1aWNrIHNvcnQNCj4gKyoqLw0KPiArdm9pZCBxc29ydCAo dm9pZCAqYmFzZSwgc2l6ZV90IG51bSwgc2l6ZV90IHdpZHRoLCBpbnQgKCpjb21wYXJlKShjb25z dCB2b2lkICosIGNvbnN0IHZvaWQgKikpDQo+ICt7DQo+ICsgIFZPSUQgICpCdWZmZXI7DQo+ICsN Cj4gKyAgQVNTRVJUIChiYXNlICAgICE9IE5VTEwpOw0KPiArICBBU1NFUlQgKGNvbXBhcmUgIT0g TlVMTCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVXNlIENSVC1zdHlsZSBtYWxsb2MgdG8gY292 ZXIgQlMgYW5kIFJUIG1lbW9yeSBhbGxvY2F0aW9uLg0KPiArICAvLw0KPiArICBCdWZmZXIgPSBt YWxsb2MgKHdpZHRoKTsNCj4gKyAgQVNTRVJUIChCdWZmZXIgIT0gTlVMTCk7DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gUmUtdXNlIFBlcmZvcm1RdWlja1NvcnQoKSBmdW5jdGlvbiBJbXBsZW1lbnRh dGlvbiBpbiBFREtJSSBCYXNlU29ydExpYi4NCj4gKyAgLy8NCj4gKyAgUXVpY2tTb3J0V29ya2Vy IChiYXNlLCAoVUlOVE4pbnVtLCAoVUlOVE4pd2lkdGgsIChTT1JUX0NPTVBBUkUpY29tcGFyZSwg QnVmZmVyKTsNCj4gKw0KPiArICBmcmVlIChCdWZmZXIpOw0KPiArICByZXR1cm47DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBHZXQgY2hhcmFjdGVyIGZyb20gc3RyZWFtLCB3ZSBkb24ndCBzdXBw b3J0IGZpbGUgb3BlcmFzdGlvbiBvbiBlZGsyIEpTT04gbGlicmFyeS4NCj4gKw0KPiArICBAcmV0 dXJuIFJldHVybnMgdGhlIGNoYXJhY3RlciBjdXJyZW50bHkgcG9pbnRlZCBieSB0aGUgaW50ZXJu YWwgZmlsZSBwb3NpdGlvbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBzdHJlYW0NCj4gKw0K PiArKiovDQo+ICtpbnQgZmdldGMoRklMRSAqIF9GaWxlKXsNCj4gKyAgIHJldHVybiAwOw0KPiAr fQ0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mIGIv UmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmI1MTQ4MTdjZjQNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5pbmYNCj4gQEAgLTAsMCArMSwz NyBAQA0KPiArIyMgQGZpbGUNCj4gKyMgRURLMiBDIFJ1bnRpbWUgTGlicmFyeSBmb3Igb3BlbnNv dXJjZSBwcm9qZWN0Lg0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgKEMpIENvcHlyaWdodCAyMDIw IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiArIw0KPiAr IyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArIw0K PiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAg ICAgICA9IDB4MDAwMTAwMWINCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0g Q3J0TGliDQo+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDgyNjNCOEFDLUQw MjEtNDI1RC1CMzM3LTNFQzk2RjVEQzE5Qg0KPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAg ICAgICAgPSBEWEVfRFJJVkVSDQo+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9 IDEuMA0KPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBDcnRMaWJ8RFhFX0NP UkUgRFhFX0RSSVZFUiBEWEVfUlVOVElNRV9EUklWRVIgRFhFX1NNTV9EUklWRVIgVUVGSV9BUFBM SUNBVElPTg0KPiBVRUZJX0RSSVZFUg0KPiArDQo+ICsjDQo+ICsjICBWQUxJRF9BUkNISVRFQ1RV UkVTICAgICAgICAgICA9IElBMzIgWDY0IEFSTSBBQVJDSDY0IFJJU0NWNjQNCj4gKyMNCj4gKw0K PiArW1NvdXJjZXNdDQo+ICsgIENydExpYi5jDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4g KyAgQmFzZUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsg IFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsg IFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMNCj4gKw0KPiArDQo+IGRpZmYgLS1naXQgYS9SZWRm aXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMgYi9SZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5p bmMNCj4gaW5kZXggZDRjMDhlMThhYy4uMmE5NTFiZDhmYSAxMDA2NDQNCj4gLS0tIGEvUmVkZmlz aFBrZy9SZWRmaXNoTGlicy5kc2MuaW5jDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaExpYnMu ZHNjLmluYw0KPiBAQCAtMTIsNSArMTIsNiBAQA0KPiAgIyMNCj4gICFpZiAkKFJFREZJU0hfRU5B QkxFKSA9PSBUUlVFDQo+ICAgIFVjczJVdGY4TGlifFJlZGZpc2hQa2cvTGlicmFyeS9CYXNlVWNz MlV0ZjhMaWIvQmFzZVVjczJVdGY4TGliLmluZg0KPiArICBDcnRMaWJ8UmVkZmlzaFBrZy9MaWJy YXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ICAhZW5kaWYNCj4gDQo+IGRpZmYgLS1naXQgYS9SZWRm aXNoUGtnL1JlZGZpc2hQa2cuY2kueWFtbCBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1s DQo+IGluZGV4IDIwYzI5N2FkMjIuLjk4OTVmZGFjOTkgMTAwNjQ0DQo+IC0tLSBhL1JlZGZpc2hQ a2cvUmVkZmlzaFBrZy5jaS55YW1sDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55 YW1sDQo+IEBAIC0xNyw2ICsxNywyNSBAQA0KPiAgICAgICAgICBdLA0KPiAgICAgICAgICAjIyBC b3RoIGZpbGUgcGF0aCBhbmQgZGlyZWN0b3J5IHBhdGggYXJlIGFjY2VwdGVkLg0KPiAgICAgICAg ICAiSWdub3JlRmlsZXMiOiBbDQo+ICsgICAgICAgICAgICAjIyBCZWxvdyBhcmUgZmlsZXMgaW5j b3Jwb3JhdGVkIHdpdGggb3BlbiBzb3VyY2Ugd2hpY2ggYXJlDQo+ICsgICAgICAgICAgICAjIyBu b3QgZWRrMiBjb2Rpbmcgc3RhbmRhcmQgY29tcGxpYW50Lg0KPiArICAgICAgICAgICAgIyMNCj4g KyAgICAgICAgICAgICMjIEVESzIgQ1JUIGxpYnJhcnkgd2hpY2ggaXMgbm90IGVkazIgY29kaW5n DQo+ICsgICAgICAgICAgICAjIyBzdGFuZGFyZCBjb21wbGlhbnQuDQo+ICsgICAgICAgICAgICAj IyBDIHJ1bnRpbWUgbGlicmFyeSBmb3IgRURLSUkgSnNvbkxpYi4NCj4gKyAgICAgICAgICAgICJJ bmNsdWRlL0NydC9zeXMiLA0KPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L2Fzc2VydC5oIiwN Cj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9lcnJuby5oIiwNCj4gKyAgICAgICAgICAgICJJ bmNsdWRlL0NydC9saW1pdHMuaCIsDQo+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvbWF0aC5o IiwNCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9zdGRhcmcuaCIsDQo+ICsgICAgICAgICAg ICAiSW5jbHVkZS9DcnQvc3RkZGVmLmgiLA0KPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L3N0 ZGlvLmgiLA0KPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGxpYi5oIiwNCj4gKyAgICAg ICAgICAgICJJbmNsdWRlL0NydC9zdHJpbmcuaCIsDQo+ICsgICAgICAgICAgICAiSW5jbHVkZS9D cnQvdGltZS5oIiwNCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgiLA0K PiArICAgICAgICAgICAgIkxpYnJhcnkvQ3J0TGliL0NydExpYi5jIg0KPiAgICAgICAgICBdDQo+ ICAgICAgfSwNCj4gICAgICAiQ29tcGlsZXJQbHVnaW4iOiB7DQo+IGRpZmYgLS1naXQgYS9SZWRm aXNoUGtnL1JlZGZpc2hQa2cuZGVjIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRlYw0KPiBpbmRl eCBhZWNjMWY0YTNhLi4yMTQyYjQzNjQwIDEwMDY0NA0KPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZp c2hQa2cuZGVjDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMNCj4gQEAgLTE1LDE2 ICsxNSwyNCBAQA0KPiANCj4gIFtJbmNsdWRlc10NCj4gICAgSW5jbHVkZQ0KPiArICBJbmNsdWRl L0NydCAgICAgICAgICAgICAgICAgICAjIEhlYWRlciBmaWxlcyBmb3IgQyBSVEwuDQo+IA0KPiAg W0xpYnJhcnlDbGFzc2VzXQ0KPiAgICAjIyAgQGxpYnJhcnljbGFzcyBQbGF0Zm9ybSBSZWRmaXNo IEhvc3QgSW50ZXJmYWNlIExpYnJhcnkNCj4gICAgIyAgIFBsYXRmb3JtIGltcGxlbWVudGF0aW9u LXNwZWNpZmljIFJlZGZpc2ggSG9zdCBJbnRlcmZhY2UuDQo+ICAgIFJlZGZpc2hQbGF0Zm9ybUhv c3RJbnRlcmZhY2VMaWJ8SW5jbHVkZS9MaWJyYXJ5L1JlZGZpc2hIb3N0SW50ZXJmYWNlTGliLmgN Cj4gKw0KPiAgICAjIyAgQGxpYnJhcnljbGFzcyAgVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIFVDUzIg dG8gVVRGOCBtYW5pcHVsYXRpb24NCj4gICAgIyAgIGZ1bmN0aW9ucy4NCj4gICAgIw0KPiAgICBV Y3MyVXRmOExpYnxJbmNsdWRlL0xpYnJhcnkvQmFzZVVjczJVdGY4TGliLmgNCj4gDQo+ICsgICMj ICBAbGlicmFyeWNsYXNzICBQcm92aWRlcyB0aGUgQyBydW50aW1lIGxpYnJhcnkgZnVuY3Rpb25z DQo+ICsgICMgICBDUlQgbGlicmFyeSBpcyBjdXJyZW50bHkgdXNlZCBieSBlZGsyIEpzb25MaWIg KG9wZW4gc291cmNlDQo+ICsgICMgICBqYW5zc29uIHByb2plY3QpIGFuZCBlZGsyIFJlZGZpc2hM aWIgKGxpYnJlZGZpc2ggb3BlbiBzb3VyY2UNCj4gKyAgIyAgIHByb2plY3QpLg0KPiArICBDcnRM aWJ8SW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oDQo+ICsNCj4gIFtQcm90b2NvbHNdDQo+ICAgICMj IEluY2x1ZGUvUHJvdG9jb2wvUmVkZmlzaERpc2NvdmVyLmgNCj4gICAgZ0VmaVJlZGZpc2hEaXNj b3ZlclByb3RvY29sR3VpZCAgICAgID0geyAweDVkYjEyNTA5LCAweDQ1NTAsIDB4NDM0NywgeyAw eDk2LCAweGIzLCAweDczLCAweGMwLCAweGZmLCAweDZlLCAweDg2LCAweDlmDQo+IH19DQo+IGRp ZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjIGIvUmVkZmlzaFBrZy9SZWRmaXNo UGtnLmRzYw0KPiBpbmRleCAzNjM5YjYyMGU2Li5hYTFjY2Q1YTk1IDEwMDY0NA0KPiAtLS0gYS9S ZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5k c2MNCj4gQEAgLTQ4LDUgKzQ4LDYgQEANCj4gIFtDb21wb25lbnRzXQ0KPiAgICBSZWRmaXNoUGtn L0xpYnJhcnkvUGxhdGZvcm1Ib3N0SW50ZXJmYWNlTGliTnVsbC9QbGF0Zm9ybUhvc3RJbnRlcmZh Y2VMaWJOdWxsLmluZg0KPiAgICBSZWRmaXNoUGtnL0xpYnJhcnkvQmFzZVVjczJVdGY4TGliL0Jh c2VVY3MyVXRmOExpYi5pbmYNCj4gKyAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIu aW5mDQo+IA0KPiAgICAhaW5jbHVkZSBSZWRmaXNoUGtnL1JlZGZpc2guZHNjLmluYw0KPiAtLQ0K PiAyLjE3LjENCj4gDQo+IA0KPiANCj4gDQo+IA0KDQo=