From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web09.11450.1633708010541128684 for ; Fri, 08 Oct 2021 08:46:51 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=o1TgXMJ+; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: michael.d.kinney@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10131"; a="249894666" X-IronPort-AV: E=Sophos;i="5.85,358,1624345200"; d="scan'208";a="249894666" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2021 08:46:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,358,1624345200"; d="scan'208";a="525087280" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga008.fm.intel.com with ESMTP; 08 Oct 2021 08:46:47 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 8 Oct 2021 08:46:47 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 8 Oct 2021 08:46:47 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Fri, 8 Oct 2021 08:46:47 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.175) 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.2242.12; Fri, 8 Oct 2021 08:46:46 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dd/3EyokkIVYJBslkM3GN3w2W9DWXW1X3hiVhrfR0ZIkDaiUGrGQ6SlY/i7988ypK81o7nG7qRZyFFE3HDGKbGVQ/MbdJmiUb0BwaarcL9aM2oY/HqmdNlne4Hpq4b7jaj3dZWChO/KoWUXNvQGajoLJl+sYadhJ76ZnhICcZNKjjX6XUOloNsJEAqOYk1O+LEFdNYNWSDMJ75OxHEF1nq3y22kyYrK70IRA8ZZjUNmKe0OIcCmTjxs5vFIAccdS++NPm5b3dxHy1DxrBC3zT2jglrB7hhO4Zw1KDlmCSFkGi/+G4b7M5dd4uCTwZemROCxGpk6xPIQiPm6x8hLPxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MQ9d8uk550cg2m2DsouJ9lx44bSGKSpB8UcKj065Tc0=; b=SHzyAYVXonHZ1y6PMFrTJwlTyXQAsO8+IXzYQ0qpQl2q+Ut9vBNtPz/+PMon0uxbKOC8H2aI5RuIqCYD9vAp5CQiRxR8iZpyehOAJgNy3UPtWF1FfMgwE62yZKAWp5WdushUFWaelxqUBl6Iikub2VRngYyUxYNriWR98YfxORulakaA/vKwgQk2/4EQejz43PGJXOP9RfXxICHNu9gEFBCr3PbAN0JrVjJrIVIvRH0wqEeWyHU1ZV9OF+7xL+cBib6YJ2xgHdRBoy6ffX5kses5PI4q3w0bDCVOKlzViR3olrqUna2Exxc7ZHVow+HETHWzbT082o2LedAJfTa7UA== 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=MQ9d8uk550cg2m2DsouJ9lx44bSGKSpB8UcKj065Tc0=; b=o1TgXMJ+En4JU2N4VJ+Hac4CIqyhxMmVladHwNBNHzLoIsc+Gz+9T/JH0VRF6Hxh+MeVMy89JeEUzu8jwnm1BgQxBmfPFUmUKNEeaZkBefils5W46ftDeFAOEbl98ps+OpLhmwTz51ECFuX895F0jl58OmGEGkSB8cWszTjNJSs= Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by MWHPR11MB1389.namprd11.prod.outlook.com (2603:10b6:300:26::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.21; Fri, 8 Oct 2021 15:46:45 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::68cc:6227:db69:d81a]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::68cc:6227:db69:d81a%6]) with mapi id 15.20.4587.022; Fri, 8 Oct 2021 15:46:45 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" , "Kuo, IanX" , "Kinney, Michael D" CC: "Chan, Amy" , "Ni, Ray" , "Liu, Zhiguang" Subject: Re: [edk2-devel] [PATCH v7 1/1] MdePkg/BaseLib: Add QuickSort function on BaseLib Thread-Topic: [edk2-devel] [PATCH v7 1/1] MdePkg/BaseLib: Add QuickSort function on BaseLib Thread-Index: AQHXu9tS9mQ+fhLPCkaQGTc9lTnQzKvIXRwAgADhvfA= Date: Fri, 8 Oct 2021 15:46:45 +0000 Message-ID: References: <20211008002710.763-1-ianx.kuo@intel.com> <20211008002710.763-2-ianx.kuo@intel.com> <006601d7bbea$69db2570$3d917050$@byosoft.com.cn> In-Reply-To: <006601d7bbea$69db2570$3d917050$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 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-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f62b26ef-407e-4827-d404-08d98a72d4fc x-ms-traffictypediagnostic: MWHPR11MB1389: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gQ95BkRG/SlZYZCBth37KCEl8k7vOaoGT1S+iNnu75v8rsT5uTYs+Q+665KXZOnd0u6RuqMl/wqa9Kmysbz8BLWnfG8FE8suRkgAkOAoIKhPmClbfnLZ3eDQxf6dAHQri4dKUOO64Lt5gNNgBzhQvlx7VXPHkMHNkCRp+Acn295uwGndXhe93k0A/88oW9iIH+N89dMAWAV2IU6N+OVGPflzrrPTQgvULagPs+XVVIzSmjBRUQ69UdQWl3ChMQTcFqGONS/6KnkjXOjcEcHNeW5PRLRTqFccsFeP8s0MuL1ZCwoYsteYqy9B5xmsgjhfZJR/1+n0YijnIlji0sQymiDIbCU6desIyUdUUMc+52/OEh7kJeuGyFFBFi/VO51wn6apSgOxbltTE7GtsgZvqikGHMbtZCltG9veWR2xYegpr+hlerUxZi38huPlVGNsb2HvyKL092Qhrcit/HyJ1aO0i5yMyQKyh6frhDXIr+8JyZ/QGH3wM+JWp44i0MYFxoCnYVpuzng/Lr4J7GuE3gImjKeyAxdOiJD/2xV95BSnWSRcZSolwrN4hFiSwpj/oxHOTapFo5DQPKP6VKg6JfuaesK0qsb42Cq4bcdDtSNXf2+4ng5zD+0N2FPwWnTUPBGIPljqpzmPnY8t5hOxtPQIOF9ovS1J/ruG7kRtFQZOz50h+rwgiewD5u4IIcmtpnVke6W6Mq85QPqJ5cjel9KmL8lw9huBZVynmYkk8DyF03K0tS0LQ9dWWo/neDvM3nlqCsjEHYWlBTpY/SwqtROkUCSeW4/MdQ3wHEL0XtX2nEgk3uiC8JZvwOA+n7RRDx7JVo3dbBDYc4F+ZiOlTA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(7696005)(508600001)(86362001)(2906002)(38100700002)(122000001)(76116006)(66946007)(66556008)(64756008)(55016002)(66476007)(66446008)(966005)(9686003)(53546011)(6506007)(71200400001)(5660300002)(110136005)(8936002)(186003)(107886003)(83380400001)(8676002)(4326008)(38070700005)(30864003)(33656002)(52536014)(54906003)(26005)(316002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QlUvQlJHYk8yL0srbTM3dVdSZlhaOUVTMGQ4ZEQ2Y0JLVkYvMlY2aG5Zbktw?= =?utf-8?B?aEtFZy9BakhTVkpPdXRJOERpaytXdUNDRHpIUDJiVkdwWXRxa28zcGZURVFk?= =?utf-8?B?clJwRVhKTkFNaktmaCtEcEVtbURRNHpBVzRBdm45YmNxdHR5ZmY0WmZpNC9Y?= =?utf-8?B?THN5QVNMZnZsbDJQZ055d1M2aXhNWXRIOTEvYUJSTFJzYlFWL1dKOWZTaC9O?= =?utf-8?B?blJndW14bnlxS0pNdVRiY1JISGJCMU5FWVRhbnp4Vy9FaExBN2hjQ0pYaitE?= =?utf-8?B?YlM4dlJrdjdlNWxmTXZZOGZPU3lRZGN4eS93TEI0UlB4aXJucTZFdFQ2Nzgw?= =?utf-8?B?YTlFVG50V1IzejZVSnpTdzg0UTBhWGEvSWk3UUV6aktZL0pIZExrSW1JZVoy?= =?utf-8?B?SXlIcmZTYmFpZlpIRTVXSVZxbHZVelFwcnBWSTRkWjc3VmhKU05hUU4vRXRL?= =?utf-8?B?R0dTZ0s3cnZxcmJweVBKdzhaQ0VuNjJaUXJJdjVyQkZxY0lBa1ZwL25vZjRF?= =?utf-8?B?OFdkbGpId3pWUDMyOHE5UnRFa2FDUUdqejZla3U2N3hsYmM5VGRFQlZwQ0Rm?= =?utf-8?B?NnVPMDRFMWVTRjl6Z3hUYjAwK0dzeUMxY0RDdHVYWUlROUlDTnozc1VMaFlW?= =?utf-8?B?NVhlMGRWWkwwa0NCU2V2Wi9DVGFmcC8wRCs3MVVkc0RLWTRJZ0VZV0x0cFVI?= =?utf-8?B?SDBoRVU0MFduNTNMVWVFS1NaV0VOZ3NLeHVMekFwL3pyeHVOZUdORk83YWo3?= =?utf-8?B?dFBLZk55WUtDOFdqajFnTXVmOW91MHN5b1JwbUNJZmNWV3RvdXI0TFlLVnVG?= =?utf-8?B?OUdrbWRqOUZWZUFNMDRZcndwMUdLL0pzY3ZzWElUcFBkZ04xbjhMbDh1MEM2?= =?utf-8?B?cHlBNGNwTmhVZ25OOGoyV29pcGpreTFIVENpUUZGM1l2c2I4Ty9xSDg0SlNr?= =?utf-8?B?Z25aaFlmM2czYjJ4Q3VLZUpUWUI2cWc3cERLYVkzOW41cm0wK1RDdUF6Y3l2?= =?utf-8?B?K3ZTYUpmN0Rqb3YzTXFtR0lDc2NmNER1bHdwQjJNYjdSbnkrZC9zaDUrY2Vy?= =?utf-8?B?L3FabHZkby9Mbmw4TTgvaXVZQm5YQUNPV1RJT1ZVdWZ5RXJib0xlamZERUJK?= =?utf-8?B?MTF0TnVJQldhWWdOYk1CK2lCdDh4VzFxQ0dEcndNUnBDd3dtN090L1hZNzFT?= =?utf-8?B?Ujc4MWJGMHpmU2NFd3lBWjYxcmQ5TGdzSExDZWtqeWxlck83ejcyV3dqRWNs?= =?utf-8?B?QlpZN3RGTHBObkhGbXd6aFFWZGxJaWZ6cEtSTFBYZW1oYTRyeFZTM0pwOGxo?= =?utf-8?B?bzUrNlBXOWltSVlqeFBndkJHMitJT0FLRVFUcWJPdkp2SCtGZlFTK2Y4dFVp?= =?utf-8?B?QXRadXNlcWxITTQyODQ5SHZSYmV3aHpkK3lOQmJuRDRjeHU2OWk0S0hvSFhE?= =?utf-8?B?NnMxRUFEbStUQmNxeWI3QnJac0h1TXBhRUczSzdEbGZ1OGlrTGUvQWlXbVFD?= =?utf-8?B?UmZwQ2hUWUE0Q3hHcHMwViswNjlpeEZ1L3RsQmdsZnBDem0xcFE4K29Kdm9E?= =?utf-8?B?UWZJcm9TTStUcmtpTEo5SHJQZGQ0bk9OVm04TklQaHlDdFp6WVZPSS9XZldH?= =?utf-8?B?cHZSa0U5U0tFdUNTUTlXa3RyUS9YNUdnam5Cd0FSaGs1K0hkdU1GcVo4d1pD?= =?utf-8?B?ei9abUdpNmFXbE9BSnRUcHpCZHJsTG0wUXBQQlN6V0g2SjhzL1NtYXQxT3Jo?= =?utf-8?Q?M9sZF/QnM+48n43n7s=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f62b26ef-407e-4827-d404-08d98a72d4fc X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2021 15:46:45.2535 (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: LFw3Wn7PMT0jHhd5iipHf2lWSNl+ZI8DZ89ap/P1CxzJXCU9U6vKFQlWU7R8X0r694gXi7R/Wpv2H8FJzwMuqeYohmQ8rCIULR3Fkf/9qxc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1389 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 SGkgTGltaW5nLA0KDQpJbiBnZW5lcmFsIGl0IGlzIG5vdCBhIGdvb2QgaWRlYSB0byBpbmNsdWRl IGEgbGlicmFyeSBpbmNsdWRlIGZpbGUgZnJvbSBhbm90aGVyIGxpYnJhcnkgaW5jbHVkZSBmaWxl Lg0KDQpUaGlzIGJlY29tZXMgYSBoaWRkZW4gZGVwZW5kZW5jeS4NCg0KTWlrZQ0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZl bEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIGdhb2xpbWluZw0KPiBTZW50OiBUaHVyc2Rh eSwgT2N0b2JlciA3LCAyMDIxIDc6MTYgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBL dW8sIElhblggPGlhbngua3VvQGludGVsLmNvbT4NCj4gQ2M6IENoYW4sIEFteSA8YW15LmNoYW5A aW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IExpdSwNCj4gWmhpZ3VhbmcgPHpoaWd1YW5n LmxpdUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IOWbnuWkjTogW2VkazItZGV2ZWxdIFtQQVRDSCB2 NyAxLzFdIE1kZVBrZy9CYXNlTGliOiBBZGQgUXVpY2tTb3J0IGZ1bmN0aW9uIG9uIEJhc2VMaWIN Cj4gDQo+IEt1bzoNCj4gICBJIHN1Z2dlc3QgdG8gbW92ZSBTT1JUX0NPTVBBUkUgZGVmaW5pdGlv biBmcm9tDQo+IE1kZU1vZHVsZVBrZ1xJbmNsdWRlXExpYnJhcnlcU29ydExpYi5oIHRvIE1kZVBr Z1xJbmNsdWRlXExpYnJhcnlcQmFzZUxpYi5oLA0KPiBhbmQgdGhlbiBsZXQgU29ydExpYi5oIGlu Y2x1ZGUgQmFzZUxpYi5oLg0KPiANCj4gVGhhbmtzDQo+IExpbWluZw0KPiA+IC0tLS0t6YKu5Lu2 5Y6f5Lu2LS0tLS0NCj4gPiDlj5Hku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBl ZGsyLmdyb3Vwcy5pbz4g5Luj6KGoIElhblggS3VvDQo+ID4g5Y+R6YCB5pe26Ze0OiAyMDIx5bm0 MTDmnIg45pelIDg6MjcNCj4gPiDmlLbku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4g 5oqE6YCBOiBhbXkuY2hhbkBpbnRlbC5jb207IHJheS5uaUBpbnRlbC5jb207IElhblggS3VvDQo+ ID4gPGlhbngua3VvQGludGVsLmNvbT47IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPjsNCj4gPiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+ OyBaaGlndWFuZyBMaXUNCj4gPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gPiDkuLvpopg6 IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjcgMS8xXSBNZGVQa2cvQmFzZUxpYjogQWRkIFF1aWNrU29y dCBmdW5jdGlvbg0KPiA+IG9uIEJhc2VMaWINCj4gPg0KPiA+IEZyb206IElhblggS3VvIDxpYW54 Lmt1b0BpbnRlbC5jb20+DQo+ID4NCj4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3Jl Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3NQ0KPiA+DQo+ID4gQWRkIFF1aWNrU29ydCBmdW5jdGlv biBpbnRvIEJhc2VMaWINCj4gPg0KPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ ID4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4gQ2M6IFpoaWd1 YW5nIExpdSA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBJYW5Y IEt1byA8aWFueC5rdW9AaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBNZGVQa2cvSW5jbHVkZS9M aWJyYXJ5L0Jhc2VMaWIuaCAgICAgICAgICAgICAgfCAgNDkgKysrKysrKysNCj4gPiAgTWRlUGtn L0xpYnJhcnkvQmFzZUxpYi9CYXNlTGliLmluZiAgICAgICAgICAgIHwgICAxICsNCj4gPiAgTWRl UGtnL0xpYnJhcnkvQmFzZUxpYi9RdWlja1NvcnQuYyAgICAgICAgICAgIHwgMTE2DQo+ID4gKysr KysrKysrKysrKysrKysrDQo+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFz ZUxpYi5pbmYgICB8ICAgMyArLQ0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFy eS9CYXNlTGliL1F1aWNrU29ydC5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0luY2x1 ZGUvTGlicmFyeS9CYXNlTGliLmgNCj4gPiBiL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxp Yi5oDQo+ID4gaW5kZXggMjQ1MmMxZDkyZS4uMGFlMGY0ZTZhZiAxMDA2NDQNCj4gPiAtLS0gYS9N ZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VMaWIuaA0KPiA+ICsrKyBiL01kZVBrZy9JbmNsdWRl L0xpYnJhcnkvQmFzZUxpYi5oDQo+ID4gQEAgLTI4NTYsNiArMjg1Niw1NSBAQCBSZW1vdmVFbnRy eUxpc3QgKA0KPiA+ICAvLw0KPiA+DQo+ID4gIC8vIE1hdGggU2VydmljZXMNCj4gPg0KPiA+ICAv Lw0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4gKyAgUHJvdG90eXBlIGZvciBjb21wYXJpc29uIGZ1 bmN0aW9uIGZvciBhbnkgdHdvIGVsZW1lbnQgdHlwZXMuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICBAcGFyYW1baW5dIEJ1ZmZlcjEgICAgICAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBmaXJz dCBidWZmZXIuDQo+ID4NCj4gPiArICBAcGFyYW1baW5dIEJ1ZmZlcjIgICAgICAgICAgICAgICAg ICBUaGUgcG9pbnRlciB0byBzZWNvbmQgYnVmZmVyLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg QHJldHZhbCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyMSBlcXVhbCB0byBCdWZm ZXIyLg0KPiA+DQo+ID4gKyAgQHJldHVybiA8MCAgICAgICAgICAgICAgICAgICAgICAgICAgQnVm ZmVyMSBpcyBsZXNzIHRoYW4gQnVmZmVyMi4NCj4gPg0KPiA+ICsgIEByZXR1cm4gPjAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjEgaXMgZ3JlYXRlciB0aGFuDQo+ID4gQnVmZmVyMi4N Cj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+ICt0eXBlZGVmDQo+ID4NCj4gPiArSU5UTg0KPiA+DQo+ ID4gKyhFRklBUEkgKkJBU0VfU09SVF9DT01QQVJFKSgNCj4gPg0KPiA+ICsgIElOIENPTlNUIFZP SUQgICAgICAgICAgICAgICAgICpCdWZmZXIxLA0KPiA+DQo+ID4gKyAgSU4gQ09OU1QgVk9JRCAg ICAgICAgICAgICAgICAgKkJ1ZmZlcjINCj4gPg0KPiA+ICsgICk7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArLyoqDQo+ID4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byBwZXJm b3JtIFF1aWNrU29ydCwNCj4gPg0KPiA+ICsgIGV4Y2VwdCB0aGF0IGlzIHVzZXMgdGhlIHByZS1h bGxvY2F0ZWQgYnVmZmVyIHNvIHRoZSBpbiBwbGFjZSBzb3J0aW5nDQo+IGRvZXMgbm90DQo+ID4g bmVlZCB0bw0KPiA+DQo+ID4gKyAgYWxsb2NhdGUgYW5kIGZyZWUgYnVmZmVycyBjb25zdGFudGx5 Lg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgRWFjaCBlbGVtZW50IG11c3QgYmUgZXF1YWwgc2l6 ZWQuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBpZiBCdWZmZXJUb1NvcnQgaXMgTlVMTCwgdGhl biBBU1NFUlQuDQo+ID4NCj4gPiArICBpZiBDb21wYXJlRnVuY3Rpb24gaXMgTlVMTCwgdGhlbiBB U1NFUlQuDQo+ID4NCj4gPiArICBpZiBCdWZmZXJPbmVFbGVtZW50IGlzIE5VTEwsIHRoZW4gQVNT RVJULg0KPiA+DQo+ID4gKyAgaWYgRWxlbWVudFNpemUgaXMgPCAxLCB0aGVuIEFTU0VSVC4NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgIGlmIENvdW50IGlzIDwgMiB0aGVuIHBlcmZvcm0gbm8gYWN0 aW9uLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdIEJ1ZmZlclRvU29y dCAgIG9uIGNhbGwgYSBCdWZmZXIgb2YgKHBvc3NpYmx5IHNvcnRlZCkNCj4gPiBlbGVtZW50cw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHJldHVybiBhIGJ1 ZmZlciBvZiBzb3J0ZWQNCj4gPiBlbGVtZW50cw0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSBDb3Vu dCAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlDQo+ID4gYnVmZmVy IHRvIHNvcnQNCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gRWxlbWVudFNpemUgICAgICAgICBTaXpl IG9mIGFuIGVsZW1lbnQgaW4gYnl0ZXMNCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gQ29tcGFyZUZ1 bmN0aW9uICAgICBUaGUgZnVuY3Rpb24gdG8gY2FsbCB0byBwZXJmb3JtIHRoZQ0KPiA+IGNvbXBh cmlzb24NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbnkg MiBlbGVtZW50cw0KPiA+DQo+ID4gKyAgQHBhcmFtW291dF0gQnVmZmVyT25lRWxlbWVudCAgIENh bGxlciBwcm92aWRlZCBidWZmZXIgd2hvc2Ugc2l6ZQ0KPiA+IGVxdWFscyB0byBFbGVtZW50U2l6 ZS4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCdzIHVzZWQg YnkgUXVpY2tTb3J0KCkgZm9yDQo+ID4gc3dhcHBpbmcgaW4gc29ydGluZy4NCj4gPg0KPiA+ICsq Ki8NCj4gPg0KPiA+ICtWT0lEDQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPiArUXVpY2tTb3J0 ICgNCj4gPg0KPiA+ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1 ZmZlclRvU29ydCwNCj4gPg0KPiA+ICsgIElOIENPTlNUIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgQ291bnQsDQo+ID4NCj4gPiArICBJTiBDT05TVCBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgIEVsZW1lbnRTaXplLA0KPiA+DQo+ID4gKyAgSU4gICAgICAgQkFTRV9TT1JUX0NPTVBB UkUgICAgICAgICAgICBDb21wYXJlRnVuY3Rpb24sDQo+ID4NCj4gPiArICBPVVQgVk9JRCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXJPbmVFbGVtZW50DQo+ID4NCj4gPiArICAp Ow0KPiA+DQo+ID4NCj4gPg0KPiA+ICAvKioNCj4gPg0KPiA+ICAgIFNoaWZ0cyBhIDY0LWJpdCBp bnRlZ2VyIGxlZnQgYmV0d2VlbiAwIGFuZCA2MyBiaXRzLiBUaGUgbG93IGJpdHMgYXJlDQo+IGZp bGxlZA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxp Yi5pbmYNCj4gPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYi5pbmYNCj4gPiBpbmRl eCA2ZWZhNTMxNWI2Li5jZWJkYTNiMjEwIDEwMDY0NA0KPiA+IC0tLSBhL01kZVBrZy9MaWJyYXJ5 L0Jhc2VMaWIvQmFzZUxpYi5pbmYNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0Jh c2VMaWIuaW5mDQo+ID4gQEAgLTMyLDYgKzMyLDcgQEANCj4gPiAgICBTd2FwQnl0ZXMxNi5jDQo+ ID4NCj4gPiAgICBMb25nSnVtcC5jDQo+ID4NCj4gPiAgICBTZXRKdW1wLmMNCj4gPg0KPiA+ICsg IFF1aWNrU29ydC5jDQo+ID4NCj4gPiAgICBSU2hpZnRVNjQuYw0KPiA+DQo+ID4gICAgUlJvdFU2 NC5jDQo+ID4NCj4gPiAgICBSUm90VTMyLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cv TGlicmFyeS9CYXNlTGliL1F1aWNrU29ydC5jDQo+ID4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGli L1F1aWNrU29ydC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAw MDAwLi5hODI1YzA3MmIwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZVBrZy9MaWJy YXJ5L0Jhc2VMaWIvUXVpY2tTb3J0LmMNCj4gPiBAQCAtMCwwICsxLDExNiBAQA0KPiA+ICsvKiog QGZpbGUNCj4gPg0KPiA+ICsgIE1hdGggd29ya2VyIGZ1bmN0aW9ucy4NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiA+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsjaW5jbHVkZSAiQmFzZUxpYkludGVybmFscy5oIg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKy8qKg0KPiA+DQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gcGVy Zm9ybSBRdWlja1NvcnQsDQo+ID4NCj4gPiArICBleGNlcHQgdGhhdCBpcyB1c2VzIHRoZSBwcmUt YWxsb2NhdGVkIGJ1ZmZlciBzbyB0aGUgaW4gcGxhY2Ugc29ydGluZw0KPiBkb2VzIG5vdA0KPiA+ IG5lZWQgdG8NCj4gPg0KPiA+ICsgIGFsbG9jYXRlIGFuZCBmcmVlIGJ1ZmZlcnMgY29uc3RhbnRs eS4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIEVhY2ggZWxlbWVudCBtdXN0IGJlIGVxdWFsIHNp emVkLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgaWYgQnVmZmVyVG9Tb3J0IGlzIE5VTEwsIHRo ZW4gQVNTRVJULg0KPiA+DQo+ID4gKyAgaWYgQ29tcGFyZUZ1bmN0aW9uIGlzIE5VTEwsIHRoZW4g QVNTRVJULg0KPiA+DQo+ID4gKyAgaWYgQnVmZmVyT25lRWxlbWVudCBpcyBOVUxMLCB0aGVuIEFT U0VSVC4NCj4gPg0KPiA+ICsgIGlmIEVsZW1lbnRTaXplIGlzIDwgMSwgdGhlbiBBU1NFUlQuDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICBpZiBDb3VudCBpcyA8IDIgdGhlbiBwZXJmb3JtIG5vIGFj dGlvbi4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSBCdWZmZXJUb1Nv cnQgICBvbiBjYWxsIGEgQnVmZmVyIG9mIChwb3NzaWJseSBzb3J0ZWQpDQo+ID4gZWxlbWVudHMN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiByZXR1cm4gYSBi dWZmZXIgb2Ygc29ydGVkDQo+ID4gZWxlbWVudHMNCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gQ291 bnQgICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZQ0KPiA+IGJ1ZmZl ciB0byBzb3J0DQo+ID4NCj4gPiArICBAcGFyYW1baW5dIEVsZW1lbnRTaXplICAgICAgICAgU2l6 ZSBvZiBhbiBlbGVtZW50IGluIGJ5dGVzDQo+ID4NCj4gPiArICBAcGFyYW1baW5dIENvbXBhcmVG dW5jdGlvbiAgICAgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgdG8gcGVyZm9ybSB0aGUNCj4gPiBjb21w YXJpc29uDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYW55 IDIgZWxlbWVudHMNCj4gPg0KPiA+ICsgIEBwYXJhbVtvdXRdIEJ1ZmZlck9uZUVsZW1lbnQgICBD YWxsZXIgcHJvdmlkZWQgYnVmZmVyIHdob3NlIHNpemUNCj4gPiBlcXVhbHMgdG8gRWxlbWVudFNp emUuDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQncyB1c2Vk IGJ5IFF1aWNrU29ydCgpIGZvcg0KPiA+IHN3YXBwaW5nIGluIHNvcnRpbmcuDQo+ID4NCj4gPiAr KiovDQo+ID4NCj4gPiArVk9JRA0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4gK1F1aWNrU29y dCAoDQo+ID4NCj4gPiArICBJTiBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICpC dWZmZXJUb1NvcnQsDQo+ID4NCj4gPiArICBJTiBDT05TVCBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgIENvdW50LA0KPiA+DQo+ID4gKyAgSU4gQ09OU1QgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICBFbGVtZW50U2l6ZSwNCj4gPg0KPiA+ICsgIElOICAgICAgIEJBU0VfU09SVF9DT01Q QVJFICAgICAgICAgICAgQ29tcGFyZUZ1bmN0aW9uLA0KPiA+DQo+ID4gKyAgT1VUIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyT25lRWxlbWVudA0KPiA+DQo+ID4gKyAg KQ0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+ICsgIFZPSUQgICAgICAgICpQaXZvdDsNCj4gPg0KPiA+ ICsgIFVJTlROICAgICAgIExvb3BDb3VudDsNCj4gPg0KPiA+ICsgIFVJTlROICAgICAgIE5leHRT d2FwTG9jYXRpb247DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBBU1NFUlQgKEJ1ZmZlclRvU29y dCAgICAgIT0gTlVMTCk7DQo+ID4NCj4gPiArICBBU1NFUlQgKENvbXBhcmVGdW5jdGlvbiAgIT0g TlVMTCk7DQo+ID4NCj4gPiArICBBU1NFUlQgKEJ1ZmZlck9uZUVsZW1lbnQgIT0gTlVMTCk7DQo+ ID4NCj4gPiArICBBU1NFUlQgKEVsZW1lbnRTaXplICAgICAgPj0gMSk7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICBpZiAoQ291bnQgPCAyKSB7DQo+ID4NCj4gPiArICAgIHJldHVybjsNCj4gPg0K PiA+ICsgIH0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIE5leHRTd2FwTG9jYXRpb24gPSAwOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgLy8NCj4gPg0KPiA+ICsgIC8vIHBpY2sgYSBwaXZvdCAo d2UgY2hvb3NlIGxhc3QgZWxlbWVudCkNCj4gPg0KPiA+ICsgIC8vDQo+ID4NCj4gPiArICBQaXZv dCA9ICgoVUlOVDgqKSBCdWZmZXJUb1NvcnQgKyAoKENvdW50IC0gMSkgKiBFbGVtZW50U2l6ZSkp Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgLy8NCj4gPg0KPiA+ICsgIC8vIE5vdyBnZXQgdGhl IHBpdm90IHN1Y2ggdGhhdCBhbGwgb24gImxlZnQiIGFyZSBiZWxvdyBpdA0KPiA+DQo+ID4gKyAg Ly8gYW5kIGV2ZXJ5dGhpbmcgInJpZ2h0IiBhcmUgYWJvdmUgaXQNCj4gPg0KPiA+ICsgIC8vDQo+ ID4NCj4gPiArICBmb3IgKExvb3BDb3VudCA9IDA7IExvb3BDb3VudCA8IENvdW50IC0xOyBMb29w Q291bnQrKykgew0KPiA+DQo+ID4gKyAgICAvLw0KPiA+DQo+ID4gKyAgICAvLyBpZiB0aGUgZWxl bWVudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHBpdm90DQo+ID4NCj4gPiArICAgIC8v DQo+ID4NCj4gPiArICAgIGlmIChDb21wYXJlRnVuY3Rpb24gKChWT0lEKikgKChVSU5UOCopIEJ1 ZmZlclRvU29ydCArICgoTG9vcENvdW50KSAqDQo+ID4gRWxlbWVudFNpemUpKSwgUGl2b3QpIDw9 IDApew0KPiA+DQo+ID4gKyAgICAgIC8vDQo+ID4NCj4gPiArICAgICAgLy8gc3dhcA0KPiA+DQo+ ID4gKyAgICAgIC8vDQo+ID4NCj4gPiArICAgICAgQ29weU1lbSAoQnVmZmVyT25lRWxlbWVudCwg KFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsNCj4gPiAoTmV4dFN3YXBMb2NhdGlvbiAqIEVsZW1lbnRT aXplKSwgRWxlbWVudFNpemUpOw0KPiA+DQo+ID4gKyAgICAgIENvcHlNZW0gKChVSU5UOCopIEJ1 ZmZlclRvU29ydCArIChOZXh0U3dhcExvY2F0aW9uICoNCj4gPiBFbGVtZW50U2l6ZSksIChVSU5U OCopIEJ1ZmZlclRvU29ydCArICgoTG9vcENvdW50KSAqIEVsZW1lbnRTaXplKSwNCj4gPiBFbGVt ZW50U2l6ZSk7DQo+ID4NCj4gPiArICAgICAgQ29weU1lbSAoKFVJTlQ4KikgQnVmZmVyVG9Tb3J0 ICsgKChMb29wQ291bnQpKkVsZW1lbnRTaXplKSwNCj4gPiBCdWZmZXJPbmVFbGVtZW50LCBFbGVt ZW50U2l6ZSk7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgLy8NCj4gPg0KPiA+ICsgICAg ICAvLyBpbmNyZW1lbnQgTmV4dFN3YXBMb2NhdGlvbg0KPiA+DQo+ID4gKyAgICAgIC8vDQo+ID4N Cj4gPiArICAgICAgTmV4dFN3YXBMb2NhdGlvbisrOw0KPiA+DQo+ID4gKyAgICB9DQo+ID4NCj4g PiArICB9DQo+ID4NCj4gPiArICAvLw0KPiA+DQo+ID4gKyAgLy8gc3dhcCBwaXZvdCB0byBpdCdz IGZpbmFsIHBvc2l0aW9uIChOZXh0U3dhcExvY2F0aW9uKQ0KPiA+DQo+ID4gKyAgLy8NCj4gPg0K PiA+ICsgIENvcHlNZW0gKEJ1ZmZlck9uZUVsZW1lbnQsIFBpdm90LCBFbGVtZW50U2l6ZSk7DQo+ ID4NCj4gPiArICBDb3B5TWVtIChQaXZvdCwgKFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsgKE5leHRT d2FwTG9jYXRpb24gKg0KPiA+IEVsZW1lbnRTaXplKSwgRWxlbWVudFNpemUpOw0KPiA+DQo+ID4g KyAgQ29weU1lbSAoKFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsgKE5leHRTd2FwTG9jYXRpb24gKiBF bGVtZW50U2l6ZSksDQo+ID4gQnVmZmVyT25lRWxlbWVudCwgRWxlbWVudFNpemUpOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgLy8NCj4gPg0KPiA+ICsgIC8vIE5vdyByZWN1cnNlIG9uIDIgcGFy dGlhbCBsaXN0cy4gIG5laXRoZXIgb2YgdGhlc2Ugd2lsbCBoYXZlIHRoZQ0KPiAncGl2b3QnDQo+ ID4gZWxlbWVudA0KPiA+DQo+ID4gKyAgLy8gSUUgbGlzdCBpcyBzb3J0ZWQgbGVmdCBoYWxmLCBw aXZvdCBlbGVtZW50LCBzb3J0ZWQgcmlnaHQgaGFsZi4uLg0KPiA+DQo+ID4gKyAgLy8NCj4gPg0K PiA+ICsgIGlmIChOZXh0U3dhcExvY2F0aW9uID49IDIpIHsNCj4gPg0KPiA+ICsgICAgUXVpY2tT b3J0ICgNCj4gPg0KPiA+ICsgICAgICBCdWZmZXJUb1NvcnQsDQo+ID4NCj4gPiArICAgICAgTmV4 dFN3YXBMb2NhdGlvbiwNCj4gPg0KPiA+ICsgICAgICBFbGVtZW50U2l6ZSwNCj4gPg0KPiA+ICsg ICAgICBDb21wYXJlRnVuY3Rpb24sDQo+ID4NCj4gPiArICAgICAgQnVmZmVyT25lRWxlbWVudA0K PiA+DQo+ID4gKyAgICAgICk7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICBpZiAoKENvdW50IC0gTmV4dFN3YXBMb2NhdGlvbiAtIDEpID49IDIpIHsNCj4gPg0KPiA+ICsg ICAgUXVpY2tTb3J0ICgNCj4gPg0KPiA+ICsgICAgICAoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAo TmV4dFN3YXBMb2NhdGlvbiArIDEpICogRWxlbWVudFNpemUsDQo+ID4NCj4gPiArICAgICAgQ291 bnQgLSBOZXh0U3dhcExvY2F0aW9uIC0gMSwNCj4gPg0KPiA+ICsgICAgICBFbGVtZW50U2l6ZSwN Cj4gPg0KPiA+ICsgICAgICBDb21wYXJlRnVuY3Rpb24sDQo+ID4NCj4gPiArICAgICAgQnVmZmVy T25lRWxlbWVudA0KPiA+DQo+ID4gKyAgICAgICk7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiAr fQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RI b3N0QmFzZUxpYi5pbmYNCj4gPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0 QmFzZUxpYi5pbmYNCj4gPiBpbmRleCBlYWUxYTcxNThkLi5kMDliZDEyYmVmIDEwMDY0NA0KPiA+ IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi5pbmYNCj4g PiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIuaW5mDQo+ ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gICMjIEBmaWxlDQo+ID4NCj4gPiAgIyAgQmFzZSBMaWJy YXJ5IGltcGxlbWVudGF0aW9uIGZvciB1c2Ugd2l0aCBob3N0IGJhc2VkIHVuaXQgdGVzdHMuDQo+ ID4NCj4gPiAgIw0KPiA+DQo+ID4gLSMgIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPg0KPiA+ICsjICBDb3B5 cmlnaHQgKGMpIDIwMDcgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4NCj4gPiAgIyAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAw OSwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gPg0KPiA+ICAjICBQ b3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDEzLCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPg0KPiA+ICAjICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQgUGFj a2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQLiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+DQo+ID4gQEAgLTMzLDYgKzMzLDcgQEANCj4gPiAgICBTd2FwQnl0ZXMxNi5jDQo+ ID4NCj4gPiAgICBMb25nSnVtcC5jDQo+ID4NCj4gPiAgICBTZXRKdW1wLmMNCj4gPg0KPiA+ICsg IFF1aWNrU29ydC5jDQo+ID4NCj4gPiAgICBSU2hpZnRVNjQuYw0KPiA+DQo+ID4gICAgUlJvdFU2 NC5jDQo+ID4NCj4gPiAgICBSUm90VTMyLmMNCj4gPg0KPiA+IC0tDQo+ID4gMi4zMC4wLndpbmRv d3MuMQ0KPiA+DQo+ID4NCj4gPg0KPiA+IC09LT0tPS09LT0tPQ0KPiA+IEdyb3Vwcy5pbyBMaW5r czogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4NCj4gPiBWaWV3 L1JlcGx5IE9ubGluZSAoIzgxNjE1KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21l c3NhZ2UvODE2MTUNCj4gPiBNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210Lzg2 MTU5NzI4LzQ5MDU5NTMNCj4gPiBHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMu aW8NCj4gPiBVbnN1YnNjcmliZTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL3Vuc3Vi DQo+ID4gW2dhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbl0NCj4gPiAtPS09LT0tPS09LT0NCj4gPg0K PiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCg0K