From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web08.9214.1663948628752134788 for ; Fri, 23 Sep 2022 08:57:08 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=f6itD82B; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663948628; x=1695484628; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZlvXkKAyC5ZhR3r8UEgjtW+5Y3ml5gMIHlrpaH3YqBU=; b=f6itD82BdziHMYR0/LzzgGjHLNYJVjuqmbiBaBp4vX7WZJyjh7wmumrj hHh/D0t0O2yka2wzlGf/WKSpjcw11W4nD4EXZorPd/5zZoqDeZ0KARRc5 n3HPT8LFS9U3kHCfmxNgdgV05w5eOT/DVm4bndVkU+OOIcRw+/4m/3d/d 7zMd3vzSWJdRpBXtLoKKWrOejCPBsLD3A0JWkHIiuhYa+M0v1VQhdf+Fz s6KhlmUMz4d2SSehZ16Flt8vIdUyR+g7E+TSfqSw8MPP+dSZxKX2h1arf a3s3jvFlhI2feke/tCOw/a3so8acVEBzRV/DjVay7zwFrl9bZKaueK42N Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10479"; a="364638898" X-IronPort-AV: E=Sophos;i="5.93,339,1654585200"; d="scan'208";a="364638898" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2022 08:57:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,339,1654585200"; d="scan'208";a="650994413" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga008.jf.intel.com with ESMTP; 23 Sep 2022 08:57:08 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 23 Sep 2022 08:57:07 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 23 Sep 2022 08:57:07 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.107) 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.2375.31; Fri, 23 Sep 2022 08:57:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a1K/PYB4usRRHIhMVTkZvbjRHoSvP4fFDFrjUUmhUtDk4guGe7dQlTaOH7VzLY8JVhEYNqBIe2LLAasjU74WhA01D238co3HX5o+68y6Qdn/WKv2jRATlRC7sGAoDK9KOYKOQM73rSQBPMwghIv4X+rYEgL6l+VRGIcBoqwSTokvCEQKtRZOpsseHfKm8mgR+TurvH2OxrXtif48YsLuWqK5x/y6w0gQ8e3Dqv4GFCSazxihhA78AiDZeppI12i4Y6v+8YJihKl1eW02u+dSkQSZSbagCy59n8DMPdZQLOFyBZX/hY4xtA6txZTEEe4RbrOCpHf5PlA0pagbz1hN+w== 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=ZlvXkKAyC5ZhR3r8UEgjtW+5Y3ml5gMIHlrpaH3YqBU=; b=cmk5LMZG6u5/o4qBjJlsInaBoZS8acOijCFw3+ZtXiZvff3B/PNYV6nyM2kNFqH2aRWl8LcJvJikhqKLmUl+IdvHbxaE2Kx6okqboVlEHH9U/CLbF1Vs4Sz2cnc162voHVrVnrQnbNQB9k4GQOpL9Nz+2Ib9+gPXcHWknuBMbWEAt0pF54NiZvOrV1HEtyDMR/HAmoVHIUvSdBURDZJ16oG7KWTWDAYn/3aH8QvNAEimNRlzsktgk1THI4P4T0IxsA5LIaE48v7G8Ap7XFjQRZRrsfsXf6Fp7rw5p219uNbXVl2my4DX2KFu+l8/iYwsdLzOnxQ2PrI2EQqCcjZiLQ== 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 Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by PH0PR11MB5047.namprd11.prod.outlook.com (2603:10b6:510:3c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.20; Fri, 23 Sep 2022 15:57:04 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2%7]) with mapi id 15.20.5654.020; Fri, 23 Sep 2022 15:57:04 +0000 From: "Michael D Kinney" To: Chao Li , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Gao, Liming" , "Liu, Zhiguang" , Baoqi Zhang Subject: Re: [PATCH v2 28/34] MdePkg/BaseSynchronizationLib: LoongArch cache related code. Thread-Topic: [PATCH v2 28/34] MdePkg/BaseSynchronizationLib: LoongArch cache related code. Thread-Index: AQHYyB5J2M6p/C8jJU62Xk9tER7MjK3tOJBg Date: Fri, 23 Sep 2022 15:57:04 +0000 Message-ID: References: <20220914094144.3697283-1-lichao@loongson.cn> In-Reply-To: <20220914094144.3697283-1-lichao@loongson.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.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|PH0PR11MB5047:EE_ x-ms-office365-filtering-correlation-id: 38189970-f338-4be7-95b5-08da9d7c4279 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1UZVRczhrsdJt8x2C5v9Fx9NqKirYvoTT7Fz+rwSRaCavizcGcA7RFVTErjuJgbZ1E4PVr6mgnhWrvUpANX+1X4gVvd1cKsluNAdZL5igtA6PQNeCD0sc6JeiiUqKFnC14KO5qaiDKriqiEgdX+cr0cAEQBuTDFa2GNVw//2+rxNooujdV4HoOx2cYr6utHm5SqMg5Jtc+R/obTQ3SMyJ2fiMGFw4jRYN3QS+pZmLRTQTID35Y02OGKGnqRViPimMSAKEuL1uEec/hx9TpOaOtt0zgG9yGJ/fE/Zh4Eh87/fl9tul/DAz+L78blga4NwZPhD4opsbx+EcOImrXb2gAdvAnobTLqR9778d+thMQ/EdCVPR0gBbeAV8BRhNL+YcZlb7Zyo1JUjDcyFCLft/3dIUl72jGAub68m6Ko9xFkFjmgf22cpzw5cutG+LpVdvqx2w+sa06ZDRuzcUGhOUDEJlNfG8MjboLx1ZEts0JWfsoDUSfOZSKm1URcwih+NXdf4chialk3VcN62JE0Cj6a5HgLaQfCDExbfbGODNKoSXmYWD62ad2PRVr32yP5gtmujNqE74Z9u0/k39zjOIZh7BjVckPMYqQ7m3ShRZVr6zymTXlHpXFfbPw36gPSFqLlfjL7resqf/xcePivs06x0NfnoSjixsNhHVQzdUtlMUczJ/m9Z+XFZvxaI1GtmTSqCjJsFBerKP6z9hwOLwf8wCB91lFK6W0SENDPVCDFMmOxxUoQofVIfzlfmJusq8xinpFDjnzDdITlZ/UntzGZ8ds0+Syjw7JGsELPcSWA= 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:(13230022)(346002)(376002)(39860400002)(136003)(366004)(396003)(451199015)(66476007)(54906003)(110136005)(76116006)(66556008)(7696005)(82960400001)(122000001)(53546011)(38100700002)(64756008)(6506007)(5660300002)(66446008)(66946007)(33656002)(8676002)(41300700001)(52536014)(55016003)(8936002)(86362001)(186003)(4326008)(19627235002)(38070700005)(966005)(9686003)(316002)(26005)(2906002)(478600001)(83380400001)(71200400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U1R4RHYwMzdwMm5PUzZoZ2F1Z3hzZXJQZXl6STAyWDdtdnFxT1JFdGM3U1lL?= =?utf-8?B?Z1NhK1RrUDgxeVp0c24zcWw5Y1FpTFpiZ3A0L1oycUx1OGo1OGY1dy9PWTB2?= =?utf-8?B?LzlJV0lUcUVDeHpKSVcrZUFWeHFwN1J4YkZZVmY4S3VjVTBxa1EycTlRRG1G?= =?utf-8?B?ODJGaVZ6ZGVVdXZpRTM4R1lsYzNTVUZkWk1pWnF5ejQ3QU91MFlSUERCd3U1?= =?utf-8?B?bjlNRkVkYUxRdks3dFR3NG1xa3BacWozMm5GQnNaMzZsY3BXQzd2cVZ4YVNO?= =?utf-8?B?bXh6VmdBNGJtOTJ0eWJkVXlPR3lHeUU0eTdOaHY2eW5ucjhqeFhOSlJZbTVY?= =?utf-8?B?ODgrbjVDYmJ6RVlvRC9MQ3lybmsxU3g1bXlYTUxUbnByYUY3R0RlblBNcFRu?= =?utf-8?B?Qmd6R3o1cVZicWpnYmFEWStNc242bXZRVk4yR3R5WkU5QnI4dHVQbjdoZnUy?= =?utf-8?B?OHFEMkxvN0czZUcySHNCUjNMcklnSzNmK2piR0IydDUzOFVUMFkzKzM5K0xV?= =?utf-8?B?TGJGYVhVd09ra0NJMFVqNjNDRE52WkRCUWk4UDYyM0ZjUjd4cFlnK3pFWjlt?= =?utf-8?B?ZnZQZmhET29NSTJEUjY5OFJtVXg1OGZpalhUV2owT0VmckxKWjVHb1htMndv?= =?utf-8?B?WE00UWlHWjJTc0NHdUo5NnhHOCthRU93OGwzSDNYRDR5bldIUEJLSmhtd1hy?= =?utf-8?B?VndGK3U2SE0veG9Ya3R4TDZ2T0NjMDExTkEzK1kwRDlWYWl1aGt5YnNYTmlP?= =?utf-8?B?Z0cxeThSTTZjMnk4ckZoUUVkK2dPNjFMOS95bVdpSWM0MmVlUG5tby85WDd3?= =?utf-8?B?S05sN3oxaENYWFNVbmlGVWt5b0hHdzRvQU9Qc3dEWXExTlpCUkVhQ1RYdXdx?= =?utf-8?B?K1BzbGNIUXNpU1NUK1BzNFdLaXdoMjZ5QVVUREd3VDZYNis0dVZkLzZxVmFG?= =?utf-8?B?REtLalJ4WjE2NDZDUlU1MUZNZHJBUnk1SDN0R0dEY0VGenRDdHVKNmVtdXhO?= =?utf-8?B?VE1yaDBtd1JkemdMbDJRclVoeElpUDdLWEZnRUJLQWlIOWxYQnRwaFoyV2g3?= =?utf-8?B?MmxXcHRoRmRZNlQ1OGg5cTY2cnBrY044T09tcFdCMjZZek5EK0YwUCtLTk5w?= =?utf-8?B?b05qU0V4ZU5LZUh2d0w4Zyt0T3BMbVFESUdwTFM2U09qL1NrZUIwVzFIOW4y?= =?utf-8?B?cGNMN21jaEFTWnlYQzMveW5KbmF6NzhVc3Y0bkJJS1J1T3lJendkRUc3cS9K?= =?utf-8?B?U2N0RTlneXNES0JQMjRnNHpyM0QyajY1NGI5aXlJTEdkTy9Nd0lpMjRZa1hQ?= =?utf-8?B?c0xmSzIveWtFalIzQUdxNlh0cjcyc2VsRkowRHI4aktvVGlYZmRmQTRlLzBL?= =?utf-8?B?M0lQWmp1NVFFSnNXTDRBV2c2WXM3amJPNEFsZUtkR3FmeENTSUNjVmhTRWk1?= =?utf-8?B?dGJ6MWFDNVBJWHB0YnhRMEJyUGxtN1puWUxLeThSQy92WE1kOUJtVVkvd1lF?= =?utf-8?B?Y0IzK2lBMXAxSlJ3WG1TeDUyUE9jNGtJeDVXNDh0Vm5wejdaaVJ4N2FxZG9j?= =?utf-8?B?WmY4OVZnZnhXcWI3aEh1N0hXM1RLbWhQU1l1YXozNVBQcUdGdXhGMkRqLytY?= =?utf-8?B?OGJwZTZKQUlYQ2NmdnlwbGFDd2I2elVlWjNrSlZ5blhlVk1VZW5jZU1YVTNj?= =?utf-8?B?aU9GckxHL2JJVmtsRmNJNWhpNjFYcC95YVZmOGxQSDFka3lGWmxNcThCV2lJ?= =?utf-8?B?eFJnT3BzT1dlUGR0Q04zQnpZUUVyb2RUa3IrVldDK3dxSFdJcElQTkdFUWE0?= =?utf-8?B?RWFSMWdjb29vL1FtWndaN0pSalhkTy92MHg1d1pEbXhZNVFtNGV2bzFQWGdU?= =?utf-8?B?K2s4OStiSFZ5cCtMY1haQURmUituWTdwS0xuc0M4Q0tzOE5EMlorTS9Ga2xx?= =?utf-8?B?Sit6aU1ndzNMTi9SZnRqc3JCSGdEZEtaYi9WS1AzL2RxYmUzQVdiVUNHeFF4?= =?utf-8?B?Z3hBUUJKR3lHNzZFanFTRHNUdktlSDg3UXAremRtMzJRaXZlV0NPWmZzOEJM?= =?utf-8?B?R0xCMGZpVlJuYmFrczNUTmNkMC9MeDVvY0U4N3hwdjZsMVNQMm5kUzk5eXpU?= =?utf-8?B?VlBYd2pieXBhbXE1N2VDcnBVZ0ZMajE0SUJhQytpWWFPaVMwcXBxU2RFZCtn?= =?utf-8?B?N1E9PQ==?= 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: 38189970-f338-4be7-95b5-08da9d7c4279 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2022 15:57:04.2804 (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: GY3hWVkQ4lU8zR2ORsBf3r8bTPcMVFq+A0wTcS/zZ3k3kNo1jaZoQKX0omM6tOGfLxlp0HAmgbEfnTguxLDCk5m/sJZyzqmlZIHRBcS93oo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5047 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 Q29tbWVudHMgYmVsb3cuDQoNClJlY29tbWVuZCBtb3ZpbmcgaW5saW5lIGFzc2VtYmx5IHRvIC5T IGZpbGVzIHRvby4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDaGFv IExpIDxsaWNoYW9AbG9vbmdzb24uY24+DQo+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDE0 LCAyMDIyIDI6NDIgQU0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBLaW5uZXks IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8Z2Fv bGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVs LmNvbT47DQo+IEJhb3FpIFpoYW5nIDx6aGFuZ2Jhb3FpQGxvb25nc29uLmNuPg0KPiBTdWJqZWN0 OiBbUEFUQ0ggdjIgMjgvMzRdIE1kZVBrZy9CYXNlU3luY2hyb25pemF0aW9uTGliOiBMb29uZ0Fy Y2ggY2FjaGUgcmVsYXRlZCBjb2RlLg0KPiANCj4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5v Y29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTQwNTMNCj4gDQo+IFN1cHBvcnQgTG9vbmdBcmNoIGNh Y2hlIHJlbGF0ZWQgZnVuY3Rpb25zLg0KPiANCj4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3Nv ZnQuY29tLmNuPg0KPiBDYzogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0K PiANCj4gU2lnbmVkLW9mZi1ieTogQ2hhbyBMaSA8bGljaGFvQGxvb25nc29uLmNuPg0KPiBDby1h dXRob3JlZC1ieTogQmFvcWkgWmhhbmcgPHpoYW5nYmFvcWlAbG9vbmdzb24uY24+DQo+IC0tLQ0K PiAgLi4uL0Jhc2VTeW5jaHJvbml6YXRpb25MaWIuaW5mICAgICAgICAgICAgICAgIHwgICA1ICsN Cj4gIC4uLi9Mb29uZ0FyY2g2NC9TeW5jaHJvbml6YXRpb24uYyAgICAgICAgICAgICB8IDI0NiAr KysrKysrKysrKysrKysrKysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjUxIGluc2VydGlvbnMoKykN Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9u TGliL0xvb25nQXJjaDY0L1N5bmNocm9uaXphdGlvbi5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRl UGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9CYXNlU3luY2hyb25pemF0aW9uTGli LmluZg0KPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQmFzZVN5bmNo cm9uaXphdGlvbkxpYi5pbmYNCj4gaW5kZXggMDJiYTEyOTYxYS4uMTAwMjFmMzM1MiAxMDA3NTUN Cj4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9CYXNlU3luY2hy b25pemF0aW9uTGliLmluZg0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0 aW9uTGliL0Jhc2VTeW5jaHJvbml6YXRpb25MaWIuaW5mDQo+IEBAIC00LDYgKzQsNyBAQA0KPiAg IyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gICMgIFBvcnRpb25zIGNvcHlyaWdodCAoYykgMjAwOCAt IDIwMDksIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiAgIyAgQ29w eXJpZ2h0IChjKSAyMDIwLCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBM UC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDIy LCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiANCj4gICMNCj4gDQo+ICAjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gICMNCj4gDQo+IEBAIC04Miw2ICs4MywxMCBAQA0K PiAgICBTeW5jaHJvbml6YXRpb24uYw0KPiANCj4gICAgUmlzY1Y2NC9TeW5jaHJvbml6YXRpb24u Uw0KPiANCj4gDQo+IA0KPiArW1NvdXJjZXMuTE9PTkdBUkNINjRdDQo+IA0KPiArICBTeW5jaHJv bml6YXRpb24uYw0KPiANCj4gKyAgTG9vbmdBcmNoNjQvU3luY2hyb25pemF0aW9uLmMNCj4gDQo+ ICsNCj4gDQo+ICBbUGFja2FnZXNdDQo+IA0KPiAgICBNZGVQa2cvTWRlUGtnLmRlYw0KPiANCj4g DQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxp Yi9Mb29uZ0FyY2g2NC9TeW5jaHJvbml6YXRpb24uYw0KPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VT eW5jaHJvbml6YXRpb25MaWIvTG9vbmdBcmNoNjQvU3luY2hyb25pemF0aW9uLmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uYjc3ODlmMzIxMg0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvTG9v bmdBcmNoNjQvU3luY2hyb25pemF0aW9uLmMNCj4gQEAgLTAsMCArMSwyNDYgQEANCj4gKy8qKiBA ZmlsZQ0KPiANCj4gKyAgTG9vbmdBcmNoIHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbnMuDQo+IA0K PiArDQo+IA0KPiArICBDb3B5cmlnaHQgKGMpIDIwMjIsIExvb25nc29uIFRlY2hub2xvZ3kgQ29y cG9yYXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArDQo+IA0K PiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4g Kw0KPiANCj4gKyoqLw0KPiANCj4gKw0KPiANCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGli Lmg+DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBQZXJmb3JtcyBhbiBhdG9taWMgY29t cGFyZSBleGNoYW5nZSBvcGVyYXRpb24gb24gYSAxNi1iaXQNCj4gDQo+ICsgIHVuc2lnbmVkIGlu dGVnZXIuDQo+IA0KPiArDQo+IA0KPiArICBQZXJmb3JtcyBhbiBhdG9taWMgY29tcGFyZSBleGNo YW5nZSBvcGVyYXRpb24gb24gdGhlIDE2LWJpdA0KPiANCj4gKyAgdW5zaWduZWQgaW50ZWdlciBz cGVjaWZpZWQgYnkgVmFsdWUuICBJZiBWYWx1ZSBpcyBlcXVhbCB0bw0KPiANCj4gKyAgQ29tcGFy ZVZhbHVlLCB0aGVuIFZhbHVlIGlzIHNldCB0byBFeGNoYW5nZVZhbHVlIGFuZA0KPiANCj4gKyAg Q29tcGFyZVZhbHVlIGlzIHJldHVybmVkLiAgSWYgVmFsdWUgaXMgbm90IGVxdWFsIHRvDQo+IA0K PiArICBDb21wYXJlVmFsdWUsIHRoZW4gVmFsdWUgaXMgcmV0dXJuZWQuIFRoZSBjb21wYXJlIGV4 Y2hhbmdlDQo+IA0KPiArICBvcGVyYXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdXNpbmcgTVAgc2Fm ZSBtZWNoYW5pc21zLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSAgVmFsdWUgICAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIDE2LWJpdCB2YWx1ZSBmb3IgdGhlDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgY29tcGFyZSBleGNoYW5nZSBvcGVyYXRpb24uDQo+IA0KPiArICBAcGFy YW1baW5dICBDb21wYXJlVmFsdWUgIDE2LWJpdCB2YWx1ZSB1c2VkIGluIGNvbXBhcmUgb3BlcmF0 aW9uLg0KPiANCj4gKyAgQHBhcmFtW2luXSAgRXhjaGFuZ2VWYWx1ZSAxNi1iaXQgdmFsdWUgdXNl ZCBpbiBleGNoYW5nZSBvcGVyYXRpb24uDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBv cmlnaW5hbCAqVmFsdWUgYmVmb3JlIGV4Y2hhbmdlLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiAN Cj4gK1VJTlQxNg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ludGVybmFsU3luY0NvbXBhcmVFeGNo YW5nZTE2ICgNCj4gDQo+ICsgIElOICAgICAgdm9sYXRpbGUgVUlOVDE2ICAqVmFsdWUsDQo+IA0K PiArICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgQ29tcGFyZVZhbHVlLA0KPiANCj4gKyAgSU4g ICAgICBVSU5UMTYgICAgICAgICAgIEV4Y2hhbmdlVmFsdWUNCj4gDQo+ICsgICkNCj4gDQo+ICt7 DQo+IA0KPiArICBVSU5UMzIgICAgICAgICAgIFJldFZhbHVlOw0KPiANCj4gKyAgVUlOVDMyICAg ICAgICAgICBUZW1wOw0KPiANCj4gKyAgVUlOVDMyICAgICAgICAgICBTaGlmdDsNCj4gDQo+ICsg IFVJTlQ2NCAgICAgICAgICAgTWFzazsNCj4gDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgTG9jYWxD b21wYXJlVmFsdWU7DQo+IA0KPiArICBVSU5UNjQgICAgICAgICAgIExvY2FsRXhjaGFuZ2VWYWx1 ZTsNCj4gDQo+ICsgIHZvbGF0aWxlIFVJTlQzMiAgKlB0cjMyOw0KPiANCj4gKw0KPiANCj4gKyAg LyogQ2hlY2sgdGhhdCBwdHIgaXMgbmF0dXJhbGx5IGFsaWduZWQgKi8NCj4gDQo+ICsgIEFTU0VS VCAoISgoVUlOVDY0KVZhbHVlICYgKHNpemVvZiAoVmFsdWUpIC0gMSkpKTsNCg0KUmVjb21tZW5k IHVzaW5nIG1hY3JvcyBpbiBCYXNlLmggdCBjaGVjayBhbGlnbm1lbnQuDQo+IA0KPiArDQo+IA0K PiArICAvKiBNYXNrIGlucHV0cyB0byB0aGUgY29ycmVjdCBzaXplLiAqLw0KPiANCj4gKyAgTWFz ayAgICAgICAgICAgICAgID0gKCgofjBVTCkgLSAoMVVMIDw8ICgwKSkgKyAxKSAmICh+MFVMID4+ ICg2NCAtIDEgLSAoKHNpemVvZiAoVUlOVDE2KSAqIDgpIC0gMSkpKSk7DQoNClRoaXMgc3RhdGVt ZW50IGlzIGhhcmQgdG8gcmVhZC4gRXNwZWNpYWxseSB3aXRoIH4wIGFuZCA8PCAwLiAgQmFzZS5o IGhhcyBNQVhfVUlOVDY0IHdoaWNoIG1heSBiZSBiZXR0ZXIgdGhhbiB+MC4NCg0KPiANCj4gKyAg TG9jYWxDb21wYXJlVmFsdWUgID0gKChVSU5UNjQpQ29tcGFyZVZhbHVlKSAmIE1hc2s7DQo+IA0K PiArICBMb2NhbEV4Y2hhbmdlVmFsdWUgPSAoKFVJTlQ2NClFeGNoYW5nZVZhbHVlKSAmIE1hc2s7 DQo+IA0KPiArDQo+IA0KPiArICAvKg0KPiANCj4gKyAgICogQ2FsY3VsYXRlIGEgc2hpZnQgJiBt YXNrIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgdmFsdWUgd2Ugd2lzaCB0bw0KPiANCj4gKyAgICog Y29tcGFyZSAmIGV4Y2hhbmdlIHdpdGhpbiB0aGUgbmF0dXJhbGx5IGFsaWduZWQgNCBieXRlIGlu dGVnZXINCj4gDQo+ICsgICAqIHRoYXQgaW5jbHVkZXMgaXQuDQo+IA0KPiArICAgKi8NCj4gDQo+ ICsgIFNoaWZ0ICAgICAgICAgICAgICAgID0gKFVJTlQ2NClWYWx1ZSAmIDB4MzsNCj4gDQo+ICsg IFNoaWZ0ICAgICAgICAgICAgICAgKj0gODsgLyogQklUU19QRVJfQllURSAqLw0KPiANCj4gKyAg TG9jYWxDb21wYXJlVmFsdWUgIDw8PSBTaGlmdDsNCj4gDQo+ICsgIExvY2FsRXhjaGFuZ2VWYWx1 ZSA8PD0gU2hpZnQ7DQo+IA0KPiArICBNYXNrICAgICAgICAgICAgICAgPDw9IFNoaWZ0Ow0KPiAN Cj4gKw0KPiANCj4gKyAgLyoNCj4gDQo+ICsgICAqIENhbGN1bGF0ZSBhIHBvaW50ZXIgdG8gdGhl IG5hdHVyYWxseSBhbGlnbmVkIDQgYnl0ZSBpbnRlZ2VyIHRoYXQNCj4gDQo+ICsgICAqIGluY2x1 ZGVzIG91ciBieXRlIG9mIGludGVyZXN0LCBhbmQgbG9hZCBpdHMgdmFsdWUuDQo+IA0KPiArICAg Ki8NCj4gDQo+ICsgIFB0cjMyID0gKFVJTlQzMiAqKSgoVUlOVDY0KVZhbHVlICYgfjB4Myk7DQo+ IA0KPiArDQo+IA0KPiArICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+IA0KPiArICAgICIxOiAg ICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAibGwudyAgJTAsICUzICAgICBcbiINCj4gDQo+ ICsgICAgImFuZCAgICUxLCAlMCwgJTQgXG4iDQo+IA0KPiArICAgICJibmUgICAlMSwgJTUsIDJm IFxuIg0KPiANCj4gKyAgICAiYW5kbiAgJTEsICUwLCAlNCBcbiINCj4gDQo+ICsgICAgIm9yICAg ICUxLCAlMSwgJTYgXG4iDQo+IA0KPiArICAgICJzYy53ICAlMSwgJTIgICAgIFxuIg0KPiANCj4g KyAgICAiYmVxeiAgJTEsIDFiICAgICBcbiINCj4gDQo+ICsgICAgImIgICAgIDNmICAgICAgICAg XG4iDQo+IA0KPiArICAgICIyOiAgICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAiZGJhciAg MCAgICAgICAgICBcbiINCj4gDQo+ICsgICAgIjM6ICAgICAgICAgICAgICAgXG4iDQo+IA0KPiAr ICAgIDogIj0mciIgKFJldFZhbHVlKSwgIj0mciIgKFRlbXApLCAiPSIgIlpDIiAoKlB0cjMyKQ0K PiANCj4gKyAgICA6ICJaQyIgKCpQdHIzMiksICJKciIgKE1hc2spLCAiSnIiIChMb2NhbENvbXBh cmVWYWx1ZSksICJKciIgKExvY2FsRXhjaGFuZ2VWYWx1ZSkNCj4gDQo+ICsgICAgOiAibWVtb3J5 Ig0KPiANCj4gKyAgKTsNCg0KUmVjb21tZW5kIHJlbW92aW5nIGlubGluZSBhc3NlbWJseQ0KDQo+ IA0KPiArDQo+IA0KPiArICByZXR1cm4gKFJldFZhbHVlICYgTWFzaykgPj4gU2hpZnQ7DQo+IA0K PiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUGVyZm9ybXMgYW4gYXRvbWljIGNv bXBhcmUgZXhjaGFuZ2Ugb3BlcmF0aW9uIG9uIGEgMzItYml0DQo+IA0KPiArICB1bnNpZ25lZCBp bnRlZ2VyLg0KPiANCj4gKw0KPiANCj4gKyAgUGVyZm9ybXMgYW4gYXRvbWljIGNvbXBhcmUgZXhj aGFuZ2Ugb3BlcmF0aW9uIG9uIHRoZSAzMi1iaXQNCj4gDQo+ICsgIHVuc2lnbmVkIGludGVnZXIg c3BlY2lmaWVkIGJ5IFZhbHVlLiAgSWYgVmFsdWUgaXMgZXF1YWwgdG8NCj4gDQo+ICsgIENvbXBh cmVWYWx1ZSwgdGhlbiBWYWx1ZSBpcyBzZXQgdG8gRXhjaGFuZ2VWYWx1ZSBhbmQNCj4gDQo+ICsg IENvbXBhcmVWYWx1ZSBpcyByZXR1cm5lZC4gIElmIFZhbHVlIGlzIG5vdCBlcXVhbCB0bw0KPiAN Cj4gKyAgQ29tcGFyZVZhbHVlLCB0aGVuIFZhbHVlIGlzIHJldHVybmVkLiBUaGUgY29tcGFyZSBl eGNoYW5nZQ0KPiANCj4gKyAgb3BlcmF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHVzaW5nIE1QIHNh ZmUgbWVjaGFuaXNtcy4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gIFZhbHVlICAgICAg ICAgQSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgdmFsdWUgZm9yIHRoZQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGNvbXBhcmUgZXhjaGFuZ2Ugb3BlcmF0aW9uLg0KPiANCj4gKyAgQHBh cmFtW2luXSAgQ29tcGFyZVZhbHVlICAzMi1iaXQgdmFsdWUgdXNlZCBpbiBjb21wYXJlIG9wZXJh dGlvbi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gIEV4Y2hhbmdlVmFsdWUgMzItYml0IHZhbHVlIHVz ZWQgaW4gZXhjaGFuZ2Ugb3BlcmF0aW9uLg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUg b3JpZ2luYWwgKlZhbHVlIGJlZm9yZSBleGNoYW5nZS4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4g DQo+ICtVSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtJbnRlcm5hbFN5bmNDb21wYXJlRXhj aGFuZ2UzMiAoDQo+IA0KPiArICBJTiAgICAgIHZvbGF0aWxlIFVJTlQzMiAgKlZhbHVlLA0KPiAN Cj4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgIENvbXBhcmVWYWx1ZSwNCj4gDQo+ICsgIElO ICAgICAgVUlOVDMyICAgICAgICAgICBFeGNoYW5nZVZhbHVlDQo+IA0KPiArICApDQo+IA0KPiAr ew0KPiANCj4gKyAgVUlOVDMyICBSZXRWYWx1ZTsNCj4gDQo+ICsNCj4gDQo+ICsgIF9fYXNtX18g X192b2xhdGlsZV9fICgNCj4gDQo+ICsgICAgIjE6ICAgICAgICAgICAgICBcbiINCj4gDQo+ICsg ICAgImxsLncgJTAsICUyICAgICBcbiINCj4gDQo+ICsgICAgImJuZSAgJTAsICUzLCAyZiBcbiIN Cj4gDQo+ICsgICAgIm1vdmUgJTAsICU0ICAgICBcbiINCj4gDQo+ICsgICAgInNjLncgJTAsICUx ICAgICBcbiINCj4gDQo+ICsgICAgImJlcXogJTAsIDFiICAgICBcbiINCj4gDQo+ICsgICAgImIg ICAgM2YgICAgICAgICBcbiINCj4gDQo+ICsgICAgIjI6ICAgICAgICAgICAgICBcbiINCj4gDQo+ ICsgICAgImRiYXIgMCAgICAgICAgICBcbiINCj4gDQo+ICsgICAgIjM6ICAgICAgICAgICAgICBc biINCj4gDQo+ICsgICAgOiAiPSZyIiAoUmV0VmFsdWUpLCAiPSIgIlpDIiAoKlZhbHVlKQ0KPiAN Cj4gKyAgICA6ICJaQyIgKCpWYWx1ZSksICJKciIgKENvbXBhcmVWYWx1ZSksICJKciIgKEV4Y2hh bmdlVmFsdWUpDQo+IA0KPiArICAgIDogIm1lbW9yeSINCj4gDQo+ICsgICk7DQoNClJlY29tbWVu ZCByZW1vdmluZyBpbmxpbmUgYXNzZW1ibHkNCg0KPiANCj4gKyAgcmV0dXJuIFJldFZhbHVlOw0K PiANCj4gK30NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFBlcmZvcm1zIGFuIGF0b21p YyBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBvbiBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2Vy Lg0KPiANCj4gKw0KPiANCj4gKyAgUGVyZm9ybXMgYW4gYXRvbWljIGNvbXBhcmUgZXhjaGFuZ2Ug b3BlcmF0aW9uIG9uIHRoZSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlciBzcGVjaWZpZWQNCj4gDQo+ ICsgIGJ5IFZhbHVlLiAgSWYgVmFsdWUgaXMgZXF1YWwgdG8gQ29tcGFyZVZhbHVlLCB0aGVuIFZh bHVlIGlzIHNldCB0byBFeGNoYW5nZVZhbHVlIGFuZA0KPiANCj4gKyAgQ29tcGFyZVZhbHVlIGlz IHJldHVybmVkLiAgSWYgVmFsdWUgaXMgbm90IGVxdWFsIHRvIENvbXBhcmVWYWx1ZSwgdGhlbiBW YWx1ZSBpcyByZXR1cm5lZC4NCj4gDQo+ICsgIFRoZSBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlv biBtdXN0IGJlIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMuDQo+IA0KPiArDQo+ IA0KPiArICBAcGFyYW1baW5dICBWYWx1ZSAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgNjQtYml0 IHZhbHVlIGZvciB0aGUgY29tcGFyZSBleGNoYW5nZQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIG9wZXJhdGlvbi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gIENvbXBhcmVWYWx1ZSAgNjQt Yml0IHZhbHVlIHVzZWQgaW4gY29tcGFyZSBvcGVyYXRpb24uDQo+IA0KPiArICBAcGFyYW1baW5d ICBFeGNoYW5nZVZhbHVlIDY0LWJpdCB2YWx1ZSB1c2VkIGluIGV4Y2hhbmdlIG9wZXJhdGlvbi4N Cj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9yaWdpbmFsICpWYWx1ZSBiZWZvcmUgZXhj aGFuZ2UuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArVUlOVDY0DQo+IA0KPiArRUZJQVBJ DQo+IA0KPiArSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlNjQgKA0KPiANCj4gKyAgSU4gICAg ICB2b2xhdGlsZSBVSU5UNjQgICpWYWx1ZSwNCj4gDQo+ICsgIElOICAgICAgVUlOVDY0ICAgICAg ICAgICBDb21wYXJlVmFsdWUsDQo+IA0KPiArICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgRXhj aGFuZ2VWYWx1ZQ0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIFVJTlQ2NCAgUmV0VmFs dWU7DQo+IA0KPiArDQo+IA0KPiArICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+IA0KPiArICAg ICIxOiAgICAgICAgICAgICAgXG4iDQo+IA0KPiArICAgICJsbC5kICUwLCAlMiAgICAgXG4iDQo+ IA0KPiArICAgICJibmUgICUwLCAlMywgMmYgXG4iDQo+IA0KPiArICAgICJtb3ZlICUwLCAlNCAg ICAgXG4iDQo+IA0KPiArICAgICJzYy5kICUwLCAlMSAgICAgXG4iDQo+IA0KPiArICAgICJiZXF6 ICUwLCAxYiAgICAgXG4iDQo+IA0KPiArICAgICJiICAgIDNmICAgICAgICAgXG4iDQo+IA0KPiAr ICAgICIyOiAgICAgICAgICAgICAgXG4iDQo+IA0KPiArICAgICJkYmFyIDAgICAgICAgICAgXG4i DQo+IA0KPiArICAgICIzOiAgICAgICAgICAgICAgXG4iDQo+IA0KPiArICAgIDogIj0mciIgKFJl dFZhbHVlKSwgIj0iICJaQyIgKCpWYWx1ZSkNCj4gDQo+ICsgICAgOiAiWkMiICgqVmFsdWUpLCAi SnIiIChDb21wYXJlVmFsdWUpLCAiSnIiIChFeGNoYW5nZVZhbHVlKQ0KPiANCj4gKyAgICA6ICJt ZW1vcnkiDQo+IA0KPiArICApOw0KPiANCj4gKyAgcmV0dXJuIFJldFZhbHVlOw0KPiANCj4gK30N Cj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFBlcmZvcm1zIGFuIGF0b21pYyBpbmNyZW1l bnQgb2YgYW4gMzItYml0IHVuc2lnbmVkIGludGVnZXIuDQo+IA0KPiArDQo+IA0KPiArICBQZXJm b3JtcyBhbiBhdG9taWMgaW5jcmVtZW50IG9mIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBz cGVjaWZpZWQgYnkNCj4gDQo+ICsgIFZhbHVlIGFuZCByZXR1cm5zIHRoZSBpbmNyZW1lbnRlZCB2 YWx1ZS4gVGhlIGluY3JlbWVudCBvcGVyYXRpb24gbXVzdCBiZQ0KPiANCj4gKyAgcGVyZm9ybWVk IHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4gVGhlIHN0YXRlIG9mIHRoZSByZXR1cm4gdmFsdWUg aXMgbm90DQo+IA0KPiArICBndWFyYW50ZWVkIHRvIGJlIE1QIHNhZmUuDQo+IA0KPiArDQo+IA0K PiArICBAcGFyYW1baW5dICBWYWx1ZSBBIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCB2YWx1ZSB0byBp bmNyZW1lbnQuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBpbmNyZW1lbnRlZCB2YWx1 ZS4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtVSU5UMzINCj4gDQo+ICtFRklBUEkNCj4g DQo+ICtJbnRlcm5hbFN5bmNJbmNyZW1lbnQgKA0KPiANCj4gKyAgSU4gICAgICB2b2xhdGlsZSBV SU5UMzIgICpWYWx1ZQ0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIFVJTlQzMiAgVGVt cDsNCj4gDQo+ICsNCj4gDQo+ICsgIFRlbXAgPSAqVmFsdWU7DQo+IA0KPiArICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoDQo+IA0KPiArICAgICAiZGJhciAgICAwICAgICAgICAgIFxuIg0KPiANCj4g KyAgICAgImFtYWRkLncgJTEsICUyLCAlMCBcbiINCj4gDQo+ICsgICAgIDogIitaQiIgKCpWYWx1 ZSksICI9JnIiIChUZW1wKQ0KPiANCj4gKyAgICAgOiAiciIgKDEpDQo+IA0KPiArICAgICA6ICJt ZW1vcnkiDQo+IA0KPiArICApOw0KPiANCj4gKyAgcmV0dXJuICpWYWx1ZTsNCj4gDQo+ICt9DQo+ IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBQZXJmb3JtcyBhbiBhdG9taWMgZGVjcmVtZW50 IG9mIGFuIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLg0KPiANCj4gKw0KPiANCj4gKyAgUGVyZm9y bXMgYW4gYXRvbWljIGRlY3JlbWVudCBvZiB0aGUgMzItYml0IHVuc2lnbmVkIGludGVnZXIgc3Bl Y2lmaWVkIGJ5DQo+IA0KPiArICBWYWx1ZSBhbmQgcmV0dXJucyB0aGUgZGVjcmVtZW50IHZhbHVl LiBUaGUgZGVjcmVtZW50IG9wZXJhdGlvbiBtdXN0IGJlDQo+IA0KPiArICBwZXJmb3JtZWQgdXNp bmcgTVAgc2FmZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcyBu b3QNCj4gDQo+ICsgIGd1YXJhbnRlZWQgdG8gYmUgTVAgc2FmZS4NCj4gDQo+ICsNCj4gDQo+ICsg IEBwYXJhbVtpbl0gIFZhbHVlIEEgcG9pbnRlciB0byB0aGUgMzItYml0IHZhbHVlIHRvIGRlY3Jl bWVudC4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIGRlY3JlbWVudCB2YWx1ZS4NCj4g DQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtVSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtJ bnRlcm5hbFN5bmNEZWNyZW1lbnQgKA0KPiANCj4gKyAgSU4gICAgICB2b2xhdGlsZSBVSU5UMzIg ICpWYWx1ZQ0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIFVJTlQzMiAgVGVtcDsNCj4g DQo+ICsNCj4gDQo+ICsgIFRlbXAgPSAqVmFsdWU7DQo+IA0KPiArICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoDQo+IA0KPiArICAgICAiZGJhciAgICAwICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAg ImFtYWRkLncgJTEsICUyLCAlMCBcbiINCj4gDQo+ICsgICAgIDogIitaQiIgKCpWYWx1ZSksICI9 JnIiIChUZW1wKQ0KPiANCj4gKyAgICAgOiAiciIgKC0xKQ0KPiANCj4gKyAgICAgOiAibWVtb3J5 Ig0KPiANCj4gKyAgKTsNCj4gDQo+ICsgIHJldHVybiAqVmFsdWU7DQo+IA0KPiArfQ0KPiANCj4g LS0NCj4gMi4yNy4wDQoNCg==