From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20]) by sourceware.org (Postfix) with ESMTPS id 9931C3858D1E for ; Sat, 2 Mar 2024 07:46:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9931C3858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9931C3858D1E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=198.175.65.20 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709365620; cv=pass; b=cbXRnk1X6EetdIwBE0DvnEouQtGFzPsUaFXYcmSubWewL77ajwMj66y6VxfsJusp61hGCDWidLlJll3+CjXm3OxSu2U8x/uz+mKW5WwwErM7YfSslOtM3hAbyA8RvIF7yzltwgOb7YNVmJ7pPtbXrvZMB4vCY+riSH213FzxsUo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709365620; c=relaxed/simple; bh=wO1snUUE0SYYeUAyboB/HSWuYhoPKe6XYjnddUJTp54=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=dqWMhwCaWijCw22TWBEV/YW1frJzegI48wD6JV/IPqGt6A4KQEOU2aN7TnZ8HgJYpDdvwKPayy8N8HM2yppyg8M7GVzaT41Y/GxS3qZ7i9i6IOGtX2ZdLf1NHGjOC3NNpIS/NuON5xYsYU6sZit/jJ85D0Qnd3qPcQs/JSd2mv4= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709365616; x=1740901616; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=wO1snUUE0SYYeUAyboB/HSWuYhoPKe6XYjnddUJTp54=; b=GY0Km08+BsyEKlNj+LYuL0adzZej5IPMpAxOw4zTeep+oNWcg2US+2hL lmR4AMkQwo2ggmBSGjrSvgiZb8pOX1N6cIqMTOE73I++JrYDqMYpxxBtb fXf3w2QPLGjiFjmT1PJxcAO30kG4BkokUdm9pqYiH2+weDyvUPQA6bQBl 8mFPaRalPmoPNj2jFFm9S8xAMsuVad5Rc7yWZxNQce0KezEevBQ2YKSGx npLV33XAHPhm93p1BblPJWMtk5e/vwZCuRkw2sMkn3+x0k4KcLj4FL/Hc W/s5+My4UjX78AkUOfJxjsiICoew7V2nAVevY7cBhja49zc7nFO4x6UV1 g==; X-IronPort-AV: E=McAfee;i="6600,9927,11000"; a="3797279" X-IronPort-AV: E=Sophos;i="6.06,199,1705392000"; d="scan'208";a="3797279" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2024 23:46:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,199,1705392000"; d="scan'208";a="8380491" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmviesa010.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 01 Mar 2024 23:46:54 -0800 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 1 Mar 2024 23:46:52 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 1 Mar 2024 23:46:52 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Fri, 1 Mar 2024 23:46:52 -0800 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.100) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 1 Mar 2024 23:46:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C3jv3tuMjutvRW6ySAnygwtwxd+B7CBENG/YoaKpgp5C6dtQtzGUDIXUEDBZEUqGlwR/bl1LKbgsxLqVb79HzCOHkIz68o+VKEwvsmEOh24u4xpftc+TErgvD4crPTsgIQE06mnJET85ywnUxKm+U3IpZXkYQqvmC67qQ8gsOLVgDxlXAQb1cYMvYALS6AI6vCaGGGEMsClx+DxImYzAqCPajJJAkJX1m0zmxmYdNo7x2FQuf0KovoluGsevmkbNUxI6HHo4uA3mDQCpH0EPmN6ypdx+tKfenI2MYEVnjv8/e60NtTQgZh8+QM7H6NYf/GR40G6tFitL/V7j7bZirw== 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=wO1snUUE0SYYeUAyboB/HSWuYhoPKe6XYjnddUJTp54=; b=AvV8Ij2jMShrd+nh8O2r3+oKz3aYRSOVWyksy5M0HOyqvAmHRWhWFo7wkPoazkJHlD/KmPEQ+o8X1EHvGrNynhB6XqLOmxC5Eh0vO83tQ3OPpe7iObPALPX1+XH/VELqseSxx3+/JoNn1gMpRNHjKq+fbpNCubu5pzZe7UPhAvWMdB5snrc3DA7aA0evT5k5FNS+AKd6uuf2EdRykSWtHt5pD/jm2aGdM+5632yF5DEx5uDfg3IIb3ik1NsbfZGwvir8NH3FZHiSsmvDoHAMhDaTubcdjDUmqawRFFtyZHJJMFH5TWTf+V5/z9aq2jAVuENR/yK+bQsHrEV73Lr0Lw== 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 MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by MN0PR11MB5986.namprd11.prod.outlook.com (2603:10b6:208:371::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.12; Sat, 2 Mar 2024 07:46:49 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::aaa8:bc22:5fb0:5ed0]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::aaa8:bc22:5fb0:5ed0%6]) with mapi id 15.20.7362.015; Sat, 2 Mar 2024 07:46:49 +0000 From: "Li, Pan2" To: "Li, Pan2" , Richard Biener , Tamar Christina CC: "gcc-patches@gcc.gnu.org" , "juzhe.zhong@rivai.ai" , "Wang, Yanzhang" , "kito.cheng@gmail.com" , "jeffreyalaw@gmail.com" Subject: RE: [PATCH v2] Draft|Internal-fn: Introduce internal fn saturation US_PLUS Thread-Topic: [PATCH v2] Draft|Internal-fn: Introduce internal fn saturation US_PLUS Thread-Index: AQHaZxJhgae57M2uAE28OfyZmRXZ/LEaxFWAgAMwbYCAAAOmgIAAJynQgAALOoCAAAyMAIAADMpwgAV6soA= Date: Sat, 2 Mar 2024 07:46:48 +0000 Message-ID: References: <20240217103029.3120318-1-pan2.li@intel.com> <20240224111229.1536064-1-pan2.li@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: MW5PR11MB5908:EE_|MN0PR11MB5986:EE_ x-ms-office365-filtering-correlation-id: d8cf88af-74d6-4ade-cf44-08dc3a8cead5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0SoLgYq5Nb+m7tJnL7FffljkHvkqpwlexkxWo6GbrPpd2wL/nbuJKK2IKOepqzQDLq+UeXHtR71xGAYiS4WzpeDrhw13nPMeSt1CbapbgoEwJlNxrrzcF6Asy5Z9IQx9/cujj7oly5V1MMEhswLq+kGOFFlh+RXIIbziLA7VoFVzQBS0bsOCdifw3GwlE1bJRkAdPTw8gkTZhWmuK9xFXtzncejXT9eMUPa4wVba85WErjtMXKpzmmJ2+tQynUKybYXFP1ZJ/EyCDjb0HHiU4QqNIJoDrwr1rT9EbTA9Ntu2QKFbe5DJhvYkM1ArvKCpVEnlO/sJ1I3qW0zjWmR7OUzPXsBTaJw+iqjOdSXNL3vwcm0sAByQs6YYexdikg7S+MzfBq81aT2MQbfh9fxWnp8DIvv3d5dndLl8CKNVtnV1u9kO93wjkl6AqSKfi02xrWq83AOAcznvehJeLqLnWiqKlfMabTbBn9+OALE4LVHWxiEm36snnu0pRfGAqnVUZAWMJMwWC6JDOYvrfKg6tqN8G2EvdYpfxJQZ81DIVpH2FyxfcisSZ/SMGO9ghCCubDn4n1/2sOqOu5PnRoBbRkTqcN/iT2zdTQ8SVy12f+Z5Ut4GYILhZKJ+jE4Aylnq3MpqLHmbr9JW2d3EHjLPH23fpItoLhtixuoUuAYX8YnRQp4jWk6/GM+ZEgOyK0ICfHU4Vft+ODB1cY8Of1hQGyN0YyNxBLPxyPWYh4s9Bvo= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aEJNamIwanNDc0F2TEFZd0k5d0hCUXhPaG9WcHRVeExIRTAwZklVMUpXdnpQ?= =?utf-8?B?MEQ3YVJWL1dPTEh3eUpIeTMveFB1dElSSmtkSGdwTXV1MXpKdXFwVmpmeUVS?= =?utf-8?B?R21ORUJpWTBWenViQThUWkFXa0JQejNZYnltVjgyWVRUVUxqL2RWT2FJemlI?= =?utf-8?B?THQrREYzKzFxUElTTmJDN1hVUG53MUI2V1VyNzFrTVgvdlJXQno4UFc4UC9x?= =?utf-8?B?OStZRGh1OUpTNThwcisyaUVQbnZzQVhPS05tNFVNRlZLNnRCczA4aDlaOUxO?= =?utf-8?B?MnViOWZGY0J4NGV2a0t2cGNrSEwwc20ySlJGSmxHRm0xdU0yZ015Y2hzdmNY?= =?utf-8?B?RGhnNGRnZGNrSnVWMWYrTFNpMGNjQ2dYNG5weW5YRU93S1hoSCs4UmZnajkx?= =?utf-8?B?QzNETCtmYU5neXBSRkxpQXFKU2FPeVBheGpxQVVHQUVJc3JrcTlvcFVEQkdm?= =?utf-8?B?aldqV2tCbmp1c3REV1Ric1B6dXFRbW01aTYxNkNKampuNzRwcWZ3VDUrczJn?= =?utf-8?B?YythdVUwWXZoMlYyZkgvNEJIRWdDUlZ3T3A4d1l2MDdLTUNhQU42Zk8yRlEr?= =?utf-8?B?bTRCYzBsSE5WMHh2U0ZLZExDcnF0TkNWa2xQNXNRQmhXZ1RLOEd5TE5ZZGV1?= =?utf-8?B?QzdrS1NrN1FJSVUwWERmRjh5VGVhZ25mWExrTXNlZDdLZXVVNHVCL3UweTM5?= =?utf-8?B?UlBkbzloZW5oUVpIQ2h4QkZvQmhNbXpwSDExSXRPS3FwaWNTMmhoWHFCZkc4?= =?utf-8?B?c0hCRU9QaFoySmNLNElGajk2eEI1dmNCV0JWY1FFYUJhNFJHaDFXVDllbmZK?= =?utf-8?B?dGdOZTZTY2FDRTNIdkdLaDc1STNTdkQ0YmFPL01tZWNlUTVteG1XU1hNQ3ZH?= =?utf-8?B?cmV3a0JPTTdzdVI3QnpFUUxsOWlZbXVFbktCVUhWay94Zy9mdy91eExTS1FU?= =?utf-8?B?c3M4eG94dTBiZndlNCtzZzIzcXpVUitVTFNGbTNoWmN0RDNzQVdLL1lsUklh?= =?utf-8?B?ZXJyWFNyL1dWbzB4UTVmaENwNkZKTW4xZ0NhRzVpaTl1dEdHVjIwRWFJUWN6?= =?utf-8?B?a2xTZFhmcEtsd0t4ejJPUE5MVFYvWVlYMFRjbHJwS0N2a3ZVazhPVnQ2VGFy?= =?utf-8?B?dGVKZHFGdzFsa2oveUVLdXN4M0RBWXdmZkcvM1ZueWRxUm1vK3VpbW9IZEhi?= =?utf-8?B?NkFxcDNQbjhMSGwzcXBGUEZXR1hiekhFTjRlb0pRT3Avb0hodE9zNStYSFJp?= =?utf-8?B?a1pnVVhBSDRCeW9wakVKUnYwYjNlL1BJelFHSVB0MEl6akZ2NnVuNUhlcGJS?= =?utf-8?B?c0g2YUxPQ1pOVjZqOEd2Z01QRGkrUVNaODU0dHc3aUNlUVkrUXlkekVmQWZ6?= =?utf-8?B?enZ1OVR4VVJCUUVWbW94aUpkWXltU1VjRmpwa0xJVm1DamxqYndBNitoWjd2?= =?utf-8?B?dlluYWpaZ1VUVkR3R2h4YWFtcWxBVHRtTzg0OUVHdUFYTkVjZkFNVUc5RnBu?= =?utf-8?B?aCtzQlA3ZHA2ZHY4anBSVXBYblJUR2FPcU42N21UVHFkU29CZkZDcnNvOFlZ?= =?utf-8?B?MTRHVFJlMXlaMm0zclgzckxMc3UxT1o5TVVKNWpLeXIzZ0p6ekg1ekhSaGpF?= =?utf-8?B?Nm1SWWtwUUV5UmFxR0haMm93TGdyOTgzK2RFN2ZmZUIyaXFTRmFJSnhHeHA3?= =?utf-8?B?WGs1bHZXT1FJOHNsaVRJUHNPaU9qa1BPRk10dXB5RkRuMVlOSndHOUkvQ0pC?= =?utf-8?B?N0RwVnZRTFJIc0x0SUlFYTdQMFBTbDlMdEdsb0hYZTZqV25YcGwvMkk0R2lt?= =?utf-8?B?K1RCQXl5Y3cxeTBGa0prRlcvVXJVOWJqdnFoNk5zd1JoTjFramc0cS9Ndkdm?= =?utf-8?B?KzFidFhoZnNMUm1YWlhjNFUvOFVqVFkwck02ZmZIcXhOa2V6VVdYSEVYcmpW?= =?utf-8?B?YWFlYUFTdEhsY2R2ajhESFc4QnhLU3ZiRnRZdDk0cjRMeG5lOTRMeEpRZHJS?= =?utf-8?B?cERjMG5tZUR4c2hzN1hKVXhFSDFqY2hMcytoMjBrVDMwaGpqTDlUMnhXblVD?= =?utf-8?B?OWZZK3ZkdGxyU1g5K2pNS3pjSkI0NDk1LzZPUnR3US83Qm4wNHU5Q2VjY1hk?= =?utf-8?Q?hIQs=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8cf88af-74d6-4ade-cf44-08dc3a8cead5 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Mar 2024 07:46:48.9331 (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: h2exoRqwTAcnneDJXn46WYPLQ1D/NPu6So+h0ElLs6cs5blOQTTzhttt0fyYOVnmekQjSZagTdZzX5E5tRt7dg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB5986 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_ASCII_DIVIDERS,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: SGkgUmljaGFyZCBhbmQgVGFtYXIsDQoNCkkgaGF2ZSBhIHRyeSB3aXRoIERFRl9JTlRFUk5BTF9T SUdORURfT1BUQUJfRk4gZm9yIFNBVF9BREQvU1VCL01VTCBidXQgbWVldCBzb21lIHByb2JsZW0g d2hlbiBtYXRjaC5wZC4NCg0KRm9yIHVuc2lnbmVkIFNBVF9BREQgPSAoeCArIHkpIHwgLSAoKHgg KyB5KSA8IHgpLCB0aGUgbWF0Y2gucGQgY2FuIGJlIChiaXRfaW9yOmMgKHBsdXM6Y0AyIEAwIEAx KSAobmVnYXRlIChjb252ZXJ0IChsdCBAMiBAMCkpKSkuDQpGb3IgdW5zaWduZWQgU0FUX1NVQiA9 IHggPj0geSA/IHggLSB5IDogMCwgYW5kIHRoZW4gbWF0Y2gucGQgY2FuIGJlIChjb25kIChnZSBA MCBAMSkgKG1pbnVzIEAwIEAxKSBpbnRlZ2VyX3plcm9wKS4NCg0KRm9yIHNpZ25lZCBTQVRfQURE L1NBVF9TVUIgYXMgYmVsb3csIHNlZW1zIG5vdCBlYXN5IHRvIG1ha2UgdGhlIHNpbXBsaWZ5IHBh dHRlcm4gd29ya3Mgd2VsbCBhcyBleHBlY3RlZCB1cCB0byBhIHBvaW50Lg0Kc2ludDY0X3Qgc2F0 X2FkZCAoc2ludDY0X3QgeCwgc2ludDY0X3QgeSkNCnsNCiAgc2ludDY0X3QgYSA9IHggXiB5Ow0K ICBzaW50NjRfdCBhZGQgPSB4ICsgeTsNCiAgc2ludDY0X3QgYiA9IHN1bSBeIHg7DQoNCiAgcmV0 dXJuIChhIDwgMCB8fCAoYSA+PSAwICYmIGIgPj0gMCkpID8gYWRkIDogKE1BWF9JTlQ2NCArICh4 IDwgMCkpOw0KfQ0KDQpzaW50NjRfdCBzYWRfc3ViIChzaW50NjRfdCB4LCBzaW50NjRfdCB5KQ0K ew0KICBzaW50NjRfdCBhID0geCBeIHk7DQogIHNpbnQ2NF90IHN1YiA9IHggLSB5Ow0KICBzaW50 NjRfdCBiID0gc3ViIF4geDsNCg0KICByZXR1cm4gKGEgPj0gMCB8fCAoYSA8IDAgJiYgYiA+PSAw KSA/IHN1YiA6IChNQVhfSU5UNjQgKyAoeCA8IDApKTsNCn0NCg0KRm9yIFNBVF9NVUwgYXMgYmVs b3csIGxvb2tzIHdlIG1heSBuZWVkIHdpZGVuIHR5cGUuIEkgYW0gbm90IHN1cmUgaWYgd2UgY2Fu IGxldmVyYWdlIE1VTF9PVkVSRkxPVyBvciBub3QgaW4gbWF0Y2gucGQuDQoNCnVpbnQzMl90IHNh dF9tdWwgKHVpbnQzMl90IHgsIHVpbnQzMl90IHkpDQp7DQogIHVpbnQ2NF90IG11bCA9ICh1aW50 NjRfdCl4ICogKHVpbnQ2NF90KXk7DQogIHJldHVybiBtdWwgPiBVSU5UMzJfTUFYID8gVUlOVDMy X01BWCA6ICh1aW50MzJfdCltdWw7DQp9DQoNCnNpbnQzMl90IHNhdF9tdWwgKHNpbnQzMl90IHgs IHNpbnQzMl90IHkpDQp7DQogIHNpbnQ2NF90IG11bCA9IChzaW50NjRfdCl4ICogKHNpbnQ2NF90 KSl5Ow0KDQogIHJldHVybiBtdWwgPD0gTUFYX0lOVDMyICYmIG11bCA+PSBNSU5fSU5UMzIgPyBt dWwgOiBNQVhfSU5UMzIgKyAoeCBeIHkpID4gMDsNCn0NCg0KQmVsb3cgZGlmZiBvbmx5IGNvbnRh aW5zIHVuc2lnbmVkIFNBVF9BREQgYW5kIFNBVF9TVUIgZm9yIHByb3RvdHlwZSB2YWxpZGF0aW9u Lg0KSSB3aWxsIGNvbnRpbnVlIHRvIHRyeSB0aGUgcmVzdCBwYXJ0IGluIG1hdGNoLnBkIGFuZCBr ZWVwIHlvdSBwb3N0ZWQuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCg0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt cHJvdG9zLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oDQppbmRleCA4MGVmZGYy YjdlNS4uZDlhZDZmZTJiNTggMTAwNjQ0DQotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXBy b3Rvcy5oDQorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oDQpAQCAtMTMyLDYg KzEzMiw5IEBAIGV4dGVybiB2b2lkIHJpc2N2X2FzbV9vdXRwdXRfZXh0ZXJuYWwgKEZJTEUgKiwg Y29uc3QgdHJlZSwgY29uc3QgY2hhciAqKTsNCiBleHRlcm4gYm9vbA0KIHJpc2N2X3pjbXBfdmFs aWRfc3RhY2tfYWRqX2J5dGVzX3AgKEhPU1RfV0lERV9JTlQsIGludCk7DQogZXh0ZXJuIHZvaWQg cmlzY3ZfbGVnaXRpbWl6ZV9wb2x5X21vdmUgKG1hY2hpbmVfbW9kZSwgcnR4LCBydHgsIHJ0eCk7 DQorZXh0ZXJuIHZvaWQgcmlzY3ZfZXhwYW5kX3VzYWRkIChydHgsIHJ0eCwgcnR4KTsNCitleHRl cm4gdm9pZCByaXNjdl9leHBhbmRfdXNzdWIgKHJ0eCwgcnR4LCBydHgpOw0KIA0KICNpZmRlZiBS VFhfQ09ERQ0KIGV4dGVybiB2b2lkIHJpc2N2X2V4cGFuZF9pbnRfc2NjIChydHgsIGVudW0gcnR4 X2NvZGUsIHJ0eCwgcnR4LCBib29sICppbnZlcnRfcHRyID0gMCk7DQpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5jYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MNCmluZGV4 IDVlOTg0ZWUyYTU1Li43OTU0NjI1MjZkZiAxMDA2NDQNCi0tLSBhL2djYy9jb25maWcvcmlzY3Yv cmlzY3YuY2MNCisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MNCkBAIC0xMDY1NSw2ICsx MDY1NSwyOCBAQCByaXNjdl92ZWN0b3JfbW9kZV9zdXBwb3J0ZWRfYW55X3RhcmdldF9wIChtYWNo aW5lX21vZGUpDQogICByZXR1cm4gdHJ1ZTsNCiB9DQogDQorLyogRW1pdCBpbnNuIGZvciB0aGUg c2F0dXJhdGlvbiBhZGR1LCBha2EgKHggKyB5KSB8IC0gKCh4ICsgeSkgPCB4KS4gICovDQordm9p ZA0KK3Jpc2N2X2V4cGFuZF91c2FkZCAocnR4IGRlc3QsIHJ0eCB4LCBydHggeSkNCit7DQorICBm cHJpbnRmIChzdGRvdXQsICJIaXQgcmlzY3ZfZXhwYW5kX3VzYWRkLlxuIik7DQorICAvLyBUb0Rv DQorfQ0KKw0KK3ZvaWQNCityaXNjdl9leHBhbmRfdXNzdWIgKHJ0eCBkZXN0LCBydHggeCwgcnR4 IHkpDQorew0KKyAgZnByaW50ZiAoc3Rkb3V0LCAiSGl0IHJpc2N2X2V4cGFuZF91c3N1Yi5cbiIp Ow0KKyAgLy8gVG9Ebw0KK30NCisNCiAvKiBJbml0aWFsaXplIHRoZSBHQ0MgdGFyZ2V0IHN0cnVj dHVyZS4gICovDQogI3VuZGVmIFRBUkdFVF9BU01fQUxJR05FRF9ISV9PUA0KICNkZWZpbmUgVEFS R0VUX0FTTV9BTElHTkVEX0hJX09QICJcdC5oYWxmXHQiDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5tZCBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YubWQNCmluZGV4IDFmZWMx MzA5MmUyLi5lMmRiYWRiM2VhZCAxMDA2NDQNCi0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yu bWQNCisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YubWQNCkBAIC0zODM5LDYgKzM4MzksMzkg QEAgKGRlZmluZV9pbnNuICIqbGFyZ2VfbG9hZF9hZGRyZXNzIg0KICAgWyhzZXRfYXR0ciAidHlw ZSIgImxvYWQiKQ0KICAgIChzZXQgKGF0dHIgImxlbmd0aCIpIChjb25zdF9pbnQgOCkpXSkNCiAN CisoZGVmaW5lX2V4cGFuZCAidXNhZGQ8bW9kZT4zIg0KKyAgWyhtYXRjaF9vcGVyYW5kOkFOWUkg MCAicmVnaXN0ZXJfb3BlcmFuZCIpDQorICAgKG1hdGNoX29wZXJhbmQ6QU5ZSSAxICJyZWdpc3Rl cl9vcGVyYW5kIikNCisgICAobWF0Y2hfb3BlcmFuZDpBTllJIDIgInJlZ2lzdGVyX29wZXJhbmQi KV0NCisgICIiDQorICB7DQorICAgIHJpc2N2X2V4cGFuZF91c2FkZCAob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7DQorICAgIERPTkU7DQorICB9DQorKQ0KKw0KKyhkZWZp bmVfZXhwYW5kICJ1c3N1Yjxtb2RlPjMiDQorICBbKG1hdGNoX29wZXJhbmQ6QU5ZSSAwICJyZWdp c3Rlcl9vcGVyYW5kIikNCisgICAobWF0Y2hfb3BlcmFuZDpBTllJIDEgInJlZ2lzdGVyX29wZXJh bmQiKQ0KKyAgIChtYXRjaF9vcGVyYW5kOkFOWUkgMiAicmVnaXN0ZXJfb3BlcmFuZCIpXQ0KKyAg IiINCisgIHsNCisgICAgcmlzY3ZfZXhwYW5kX3Vzc3ViIChvcGVyYW5kc1swXSwgb3BlcmFuZHNb MV0sIG9wZXJhbmRzWzJdKTsNCisgICAgRE9ORTsNCisgIH0NCispDQorDQogKGluY2x1ZGUgImJp dG1hbmlwLm1kIikNCiAoaW5jbHVkZSAiY3J5cHRvLm1kIikNCiAoaW5jbHVkZSAic3luYy5tZCIp DQpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2djYy9pbnRlcm5hbC1mbi5kZWYN CmluZGV4IDg0OGJiOWRiZmYzLi4wZmZmMTljODc1ZiAxMDA2NDQNCi0tLSBhL2djYy9pbnRlcm5h bC1mbi5kZWYNCisrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYNCkBAIC0yNzUsNiArMjc1LDEzIEBA IERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gKE1VTEhTLCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9U SFJPVywgZmlyc3QsDQogREVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiAoTVVMSFJTLCBFQ0Zf Q09OU1QgfCBFQ0ZfTk9USFJPVywgZmlyc3QsDQogCQkJICAgICAgc211bGhycywgdW11bGhycywg YmluYXJ5KQ0KIA0KK0RFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gKFNBVF9BREQsIEVDRl9D T05TVCB8IEVDRl9OT1RIUk9XLCBmaXJzdCwNCisJCQkgICAgICBzc2FkZCwgdXNhZGQsIGJpbmFy eSkNCitERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOIChTQVRfU1VCLCBFQ0ZfQ09OU1QgfCBF Q0ZfTk9USFJPVywgZmlyc3QsDQorCQkJICAgICAgc3NzdWIsIHVzc3ViLCBiaW5hcnkpDQorDQog REVGX0lOVEVSTkFMX0NPTkRfRk4gKEFERCwgRUNGX0NPTlNULCBhZGQsIGJpbmFyeSkNCiBERUZf SU5URVJOQUxfQ09ORF9GTiAoU1VCLCBFQ0ZfQ09OU1QsIHN1YiwgYmluYXJ5KQ0KIERFRl9JTlRF Uk5BTF9DT05EX0ZOIChNVUwsIEVDRl9DT05TVCwgc211bCwgYmluYXJ5KQ0KZGlmZiAtLWdpdCBh L2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZA0KaW5kZXggZjNmZmZkOGRlYzIuLjY1OTJkZWE2 NDNhIDEwMDY0NA0KLS0tIGEvZ2NjL21hdGNoLnBkDQorKysgYi9nY2MvbWF0Y2gucGQNCkBAIC0x MDI3NiwzICsxMDI3NiwzMiBAQCBhbmQsDQogICAgICAgfQ0KICAgICAgIChpZiAoZnVsbF9wZXJt X3ApDQogCSh2ZWNfcGVybSAob3BAMyBAMCBAMSkgQDMgQDIpKSkpKSkNCisNCisjaWYgR0lNUExF DQorDQorLyogVW5zaWduZWQgc2F0dXJhdGlvbiBhZGQsIGFrYToNCisgICBTQVRfQUREVSA9IChY ICsgWSkgfCAtICgoWCArIFkpIDwgWCkgb3INCisgICBTQVRfQUREVSA9IChYICsgWSkgfCAtICgo WCArIFkpIDwgWSkuICAqLw0KKyhzaW1wbGlmeQ0KKyAoYml0X2lvcjpjIChwbHVzOmNAMiBAMCBA MSkgKG5lZ2F0ZSAoY29udmVydCAobHQgQDIgQDApKSkpDQorICAgKGlmIChvcHRpbWl6ZQ0KKwkm JiBJTlRFR1JBTF9UWVBFX1AgKHR5cGUpDQorCSYmIHR5cGVzX21hdGNoICh0eXBlLCBUUkVFX1RZ UEUgKEAwKSkNCisJJiYgdHlwZXNfbWF0Y2ggKHR5cGUsIFRSRUVfVFlQRSAoQDEpKQ0KKwkmJiBU WVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKEAwKSkNCisJJiYgZGlyZWN0X2ludGVybmFsX2ZuX3N1 cHBvcnRlZF9wIChJRk5fU0FUX0FERCwgdHlwZSwgT1BUSU1JWkVfRk9SX0JPVEgpKQ0KKyAgIChJ Rk5fU0FUX0FERCBAMCBAMSkpKQ0KKw0KKy8qIFVuc2lnbmVkIHNhdHVyYXRpb24gc3ViICwgYWth DQorICAgU0FUX1NVQlUgPSB4ID49IHkgPyB4IC0geSA6IDAuICAqLw0KKyhzaW1wbGlmeQ0KKyAg KGNvbmQgKGdlIEAwIEAxKSAobWludXMgQDAgQDEpIGludGVnZXJfemVyb3ApDQorICAgIChpZiAo b3B0aW1pemUNCisJJiYgSU5URUdSQUxfVFlQRV9QICh0eXBlKQ0KKwkmJiBUWVBFX1VOU0lHTkVE IChUUkVFX1RZUEUgKEAwKSkNCisJJiYgdHlwZXNfbWF0Y2ggKHR5cGUsIFRSRUVfVFlQRSAoQDAp KQ0KKwkmJiB0eXBlc19tYXRjaCAodHlwZSwgVFJFRV9UWVBFIChAMSkpDQorCSYmIGRpcmVjdF9p bnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX1NBVF9TVUIsIHR5cGUsIE9QVElNSVpFX0ZPUl9C T1RIKSkNCisgICAgKElGTl9TQVRfU1VCIEAwIEAxKSkpDQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0 IGEvZ2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZg0KaW5kZXggYWQxNGY5MzI4YjkuLmJl YmUzOGM4ODhiIDEwMDY0NA0KLS0tIGEvZ2NjL29wdGFicy5kZWYNCisrKyBiL2djYy9vcHRhYnMu ZGVmDQpAQCAtMTExLDE1ICsxMTEsMTUgQEAgT1BUQUJfTlgoYWRkX29wdGFiLCAiYWRkJEYkYTMi KQ0KIE9QVEFCX05YKGFkZF9vcHRhYiwgImFkZCRRJGEzIikNCiBPUFRBQl9WTChhZGR2X29wdGFi LCAiYWRkdiRJJGEzIiwgUExVUywgImFkZCIsICczJywgZ2VuX2ludHZfZnBfbGliZnVuYykNCiBP UFRBQl9WWChhZGR2X29wdGFiLCAiYWRkJEYkYTMiKQ0KLU9QVEFCX05MKHNzYWRkX29wdGFiLCAi c3NhZGQkUSRhMyIsIFNTX1BMVVMsICJzc2FkZCIsICczJywgZ2VuX3NpZ25lZF9maXhlZF9saWJm dW5jKQ0KLU9QVEFCX05MKHVzYWRkX29wdGFiLCAidXNhZGQkUSRhMyIsIFVTX1BMVVMsICJ1c2Fk ZCIsICczJywgZ2VuX3Vuc2lnbmVkX2ZpeGVkX2xpYmZ1bmMpDQorT1BUQUJfTkwoc3NhZGRfb3B0 YWIsICJzc2FkZCRhMyIsIFNTX1BMVVMsICJzc2FkZCIsICczJywgZ2VuX2ludF9saWJmdW5jKQ0K K09QVEFCX05MKHVzYWRkX29wdGFiLCAidXNhZGQkYTMiLCBVU19QTFVTLCAidXNhZGQiLCAnMycs IGdlbl9pbnRfbGliZnVuYykNCiBPUFRBQl9OTChzdWJfb3B0YWIsICJzdWIkUCRhMyIsIE1JTlVT LCAic3ViIiwgJzMnLCBnZW5faW50X2ZwX2ZpeGVkX2xpYmZ1bmMpDQogT1BUQUJfTlgoc3ViX29w dGFiLCAic3ViJEYkYTMiKQ0KIE9QVEFCX05YKHN1Yl9vcHRhYiwgInN1YiRRJGEzIikNCiBPUFRB Ql9WTChzdWJ2X29wdGFiLCAic3VidiRJJGEzIiwgTUlOVVMsICJzdWIiLCAnMycsIGdlbl9pbnR2 X2ZwX2xpYmZ1bmMpDQogT1BUQUJfVlgoc3Vidl9vcHRhYiwgInN1YiRGJGEzIikNCi1PUFRBQl9O TChzc3N1Yl9vcHRhYiwgInNzc3ViJFEkYTMiLCBTU19NSU5VUywgInNzc3ViIiwgJzMnLCBnZW5f c2lnbmVkX2ZpeGVkX2xpYmZ1bmMpDQotT1BUQUJfTkwodXNzdWJfb3B0YWIsICJ1c3N1YiRRJGEz IiwgVVNfTUlOVVMsICJ1c3N1YiIsICczJywgZ2VuX3Vuc2lnbmVkX2ZpeGVkX2xpYmZ1bmMpDQor T1BUQUJfTkwoc3NzdWJfb3B0YWIsICJzc3N1YiRhMyIsIFNTX01JTlVTLCAic3NzdWIiLCAnMycs IGdlbl9pbnRfbGliZnVuYykNCitPUFRBQl9OTCh1c3N1Yl9vcHRhYiwgInVzc3ViJGEzIiwgVVNf TUlOVVMsICJ1c3N1YiIsICczJywgZ2VuX2ludF9saWJmdW5jKQ0KIE9QVEFCX05MKHNtdWxfb3B0 YWIsICJtdWwkUSRhMyIsIE1VTFQsICJtdWwiLCAnMycsIGdlbl9pbnRfZnBfZml4ZWRfbGliZnVu YykNCiBPUFRBQl9OWChzbXVsX29wdGFiLCAibXVsJFAkYTMiKQ0KIE9QVEFCX05YKHNtdWxfb3B0 YWIsICJtdWwkRiRhMyIpDQoNClBhbg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJv bTogTGksIFBhbjIgPHBhbjIubGlAaW50ZWwuY29tPiANClNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5 IDI3LCAyMDI0IDEwOjM2IFBNDQpUbzogUmljaGFyZCBCaWVuZXIgPHJpY2hhcmQuZ3VlbnRoZXJA Z21haWwuY29tPjsgVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCkNj OiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsganV6aGUuemhvbmdAcml2YWkuYWk7IFdhbmcsIFlh bnpoYW5nIDx5YW56aGFuZy53YW5nQGludGVsLmNvbT47IGtpdG8uY2hlbmdAZ21haWwuY29tOyBy aWNoYXJkLnNhbmRpZm9yZEBhcm0uY29tMjsgamVmZnJleWFsYXdAZ21haWwuY29tDQpTdWJqZWN0 OiBSRTogW1BBVENIIHYyXSBEcmFmdHxJbnRlcm5hbC1mbjogSW50cm9kdWNlIGludGVybmFsIGZu IHNhdHVyYXRpb24gVVNfUExVUw0KDQpUaGFua3MgUmljaGFyZCBhbmQgVGFtbWVyIGZvciBtb3Zp bmcgdGhpcyBmb3J3YXJkLg0KDQo+IFRoYXQgc2FpZCwgSSB3b3VsZCBsaWtlIHRvIHNlZSB0aGUg YmlnZ2VyIHBpY3R1cmUgdG8gYmUga2VwdCBpbiBtaW5kDQo+IGJlZm9yZSBhbHRlcmluZyB0aGUg R0lNUExFIElMLg0KDQo+IEFkZGluZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgYW4gYWxyZWFk eSBwcmVzZW50IG9wdGFiIGlzIGENCj4gbm8tYnJhaW5lci4gIEFkZGluZyBhIHZlY3Rvcml6ZXIN Cj4gYW5kL29yIGlmLWNvbnZlcnNpb24gcGF0dGVybiB0byBtYWtlIHVzZSBvZiB0aGlzIGR1cmlu ZyB2ZWN0b3JpemF0aW9uDQo+IGlzIGV4aXN0aW5nIHByYWN0aWNlLg0KPiBBZGRpbmcgcGF0dGVy biByZWNvZ25pdGlvbiB0byBJU0VMIG9yIHdpZGVuaW5nLW11bCBwYXNzZXMgZm9yDQo+IGluc3Ry dWN0aW9ucyB0aGUgQ1BVIGNhbiBkbw0KPiBpcyBleGlzdGluZyBwcmFjdGljZSBhbmQgT0suDQoN ClRoYW5rcyBmb3IgZXhwbGFpbmluZywgZ290IHRoZSBwb2ludCBoZXJlLg0KDQo+IFNvIEknZCBz dWdnZXN0IHdyaXRpbmcgc29tZSBleGFtcGxlIG9mIGJvdGggc2lnbmVkIGFuZCB1bnNpZ25lZCBz YXR1cmF0aW5nIGFkZCBhbmQgbXVsdGlwbHkNCg0KPiBCZWNhdXNlIHNpZ25lZCBhZGRpdGlvbiwg d2lsbCBsaWtlbHkgcmVxdWlyZSBhIGJyYW5jaCBhbmQgc2lnbmVkIG11bHRpcGxpY2F0aW9uIHdv dWxkIHJlcXVpcmUgYQ0KPiBsYXJnZXIgdHlwZS4NCg0KQWNrLCB3aWxsIHByZXBhcmUgb25lIHBy b3RvdHlwZSB2YWxpZGF0aW9uIHBhdGNoIGZvciBhZGQsIHN1YiBhbmQgbXVsIChib3RoIHVuc2ln bmVkIGFuZCBzaWduZWQpIHNvb24uDQoNClBhbg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KRnJvbTogUmljaGFyZCBCaWVuZXIgPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPiANClNl bnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDI3LCAyMDI0IDk6NDIgUE0NClRvOiBUYW1hciBDaHJpc3Rp bmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPg0KQ2M6IExpLCBQYW4yIDxwYW4yLmxpQGludGVs LmNvbT47IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBqdXpoZS56aG9uZ0ByaXZhaS5haTsgV2Fu ZywgWWFuemhhbmcgPHlhbnpoYW5nLndhbmdAaW50ZWwuY29tPjsga2l0by5jaGVuZ0BnbWFpbC5j b207IHJpY2hhcmQuc2FuZGlmb3JkQGFybS5jb20yOyBqZWZmcmV5YWxhd0BnbWFpbC5jb20NClN1 YmplY3Q6IFJlOiBbUEFUQ0ggdjJdIERyYWZ0fEludGVybmFsLWZuOiBJbnRyb2R1Y2UgaW50ZXJu YWwgZm4gc2F0dXJhdGlvbiBVU19QTFVTDQoNCk9uIFR1ZSwgRmViIDI3LCAyMDI0IGF0IDE6NTfi gK9QTSBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPiB3cm90ZToNCj4N Cj4gPiBUaGFua3MgVGFtYXIuDQo+ID4NCj4gPiA+IFRob3NlIHR3byBjYXNlcyBhbHNvICpjb21w bGV0ZWx5KiBzdG9wIHZlY3Rvcml6YXRpb24gYmVjYXVzZSBvZiBlaXRoZXIgdGhlDQo+ID4gPiBj b250cm9sIGZsb3cgb3IgdGhlIGZhY3QgdGhlIHZlY3Rvcml6ZXIgY2FuJ3QgaGFuZGxlIGNvbXBs ZXggdHlwZXMuDQo+ID4NCj4gPiBZZXMsIHdlIGV2ZW50dWFsbHkgd291bGQgbGlrZSB0byB2ZWN0 b3JpemUgdGhlIFNBVCBBTFUgYnV0IHdlIHN0YXJ0IHdpdGggc2NhbGFyIHBhcnQNCj4gPiBmaXJz dC4NCj4gPiBJIHRyaWVkIHRoZSBERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0VYVF9GTiBhcyB5 b3VyIHN1Z2dlc3Rpb24uIEl0IHdvcmtzDQo+ID4gd2VsbCB3aXRoIHNvbWUgYWRkaXRpb25zIGFz IGJlbG93Lg0KPiA+IEZlZWwgZnJlZSB0byBjb3JyZWN0IG1lIGlmIGFueSBtaXN1bmRlcnN0YW5k aW5ncy4NCj4gPg0KPiA+IDEuIHVzYWRkJFEkYTMgYXJlIHJlc3RyaWN0ZWQgdG8gZml4ZWQgcG9p bnQgYW5kIHdlIG5lZWQgdG8gY2hhbmdlIGl0IHRvDQo+ID4gdXNhZGQkYTMoYXMgd2VsbCBhcyBn ZW5faW50X2xpYmZ1bmMpIGZvciBpbnQuDQo+ID4gMi4gV2UgbmVlZCB0byBpbXBsZW1lbnQgYSBk ZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIFNBVF9BREQgaWYNCj4gPiBkaXJlY3RfYmluYXJ5X29w dGFiX3N1cHBvcnRlZF9wIGlzIGZhbHNlLg0KPiA+ICAgICBJdCBsb29rcyBsaWtlIHRoZSBkZWZh dWx0IGltcGxlbWVudGF0aW9uIGlzIGRpZmZpY3VsdCB0byBtYWtlIGV2ZXJ5IGJhY2tlbmQgaGFw cHkuDQo+ID4gVGhhdCBpcyB3aHkgeW91IHN1Z2dlc3QganVzdCBub3JtYWwNCj4gPiAgICAgREVG X0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiBpbiBhbm90aGVyIHRocmVhZC4NCj4gPg0KPiA+IFRo YW5rcyBSaWNoYXJkLg0KPiA+DQo+ID4gPiBCdXQgd2hhdCBJJ2QgbGlrZSB0byBzZWUgaXMgdGhh dCB3ZSBkbyBtb3JlIGluc3RydWN0aW9uIHNlbGVjdGlvbiBvbiBHSU1QTEUNCj4gPiA+IGJ1dCBf bGF0ZV8gKHRoZXJlJ3MgdGhlIHBhc3Nfb3B0aW1pemVfd2lkZW5pbmdfbXVsIGFuZCBwYXNzX2dp bXBsZV9pc2VsDQo+ID4gPiBwYXNzZXMgZG9pbmcgd2hhdCBJJ2QgY2FsbCBpbnN0cnVjdGlvbiBz ZWxlY3Rpb24pLiAgQnV0IHRoYXQgbWVhbnMgbm90IGFkZGluZw0KPiA+ID4gbWF0Y2gucGQgcGF0 dGVybnMgZm9yIHRoYXQgb3IgYXQgbGVhc3QgaGF2ZSBhIHNlcGFyYXRlIGlzZWwtbWF0Y2gucGQN Cj4gPiA+IG1hY2hpbmVyeSBmb3IgdGhhdC4NCj4gPg0KPiA+ID4gU28gYXMgYSBzdGFydCBJIHdv dWxkIGdvIGZvciBhIGRpcmVjdCBvcHRhYiBhbmQgc2VlIHRvIHJlY29nbml6ZSBpdCBkdXJpbmcN Cj4gPiA+IElTRUw/DQo+ID4NCj4gPiBMb29rcyB3ZSBoYXZlIHNvcnRzIG9mIFNBVCBhbHUgbGlr ZSBQTFVTL01JTlVTL01VTFQvRElWL1NISUZUL05FRy9BQlMsIGdvb2QNCj4gPiB0byBrbm93IGlz ZWwgYW5kIEkgYW0gaGFwcHkgdG8NCj4gPiB0cnkgdGhhdCBvbmNlIHdlIGhhdmUgY29uY2x1c2lv bi4NCj4gPg0KPg0KPiBTbyBhZnRlciBhIGxpdmVseSBkaXNjdXNzaW9uIG9uIElSQywgdGhlIGNv bmNsdXNpb24gaXMgdGhhdCBiZWZvcmUgd2UgcHJvY2VlZCBSaWNoaSB3b3VsZA0KPiBsaWtlIHRv IHNlZSBzb21lIGV4YW1wbGVzIG9mIHZhcmlvdXMgb3BlcmF0aW9ucy4gIFRoZSBwcm9ibGVtIGlz IHRoYXQgdW5zaWduZWQgc2F0dXJhdGluZw0KPiBhZGRpdGlvbiBpcyB0aGUgc2ltcGxlc3QgZXhh bXBsZSBhbmQgaXQgbWF5IGxlYWQgdG8gYW4gaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kgdGhhdCBk b2Vzbid0DQo+IHNjYWxlLg0KPg0KPiBTbyBJJ2Qgc3VnZ2VzdCB3cml0aW5nIHNvbWUgZXhhbXBs ZSBvZiBib3RoIHNpZ25lZCBhbmQgdW5zaWduZWQgc2F0dXJhdGluZyBhZGQgYW5kIG11bHRpcGx5 DQo+DQo+IEJlY2F1c2Ugc2lnbmVkIGFkZGl0aW9uLCB3aWxsIGxpa2VseSByZXF1aXJlIGEgYnJh bmNoIGFuZCBzaWduZWQgbXVsdGlwbGljYXRpb24gd291bGQgcmVxdWlyZSBhDQo+IGxhcmdlciB0 eXBlLg0KPg0KPiBUaGlzIHdvdWxkIGFsbG93IHVzIHRvIGJldHRlciB1bmRlcnN0YW5kIHdoYXQg a2luZCBvZiBnaW1wbGUgd291bGQgaGF2ZSB0byB0byBkZWFsIHdpdGggaW4NCj4gSVNFTCBhbmQg VkVDVCBpZiB3ZSBkZWNpZGUgbm90IHRvIGxvd2VyIGVhcmx5Lg0KDQpNb3JlIHNwZWNpZmljYWxs eSBiZWZvcmUgbWFraW5nIHNvbWV0aGluZyBsaWtlIC5TQVRfQUREIGEgY29yZSBwYXJ0IG9mDQpH SU1QTEUgSSdkIGxpa2UNCnRvIHBvaW50IG91dCB0aGF0IHdlIGhhdmUgc2F0dXJhdGluZyBQTFVT X0VYUFIgYnV0IGp1c3QgZm9yDQpmaXhlZC1wb2ludCB0eXBlcy4gIEkgcmVhbGl6ZQ0KSm9zZXBo IHRoaW5rcyB0aGF0IGtleWluZyB0aGlzIG9uIHRoZSB0eXBlIHdhcyB3cm9uZyBhbmQgaXQgc2hv dWxkDQpoYXZlIHVzZWQgaW50ZWdlcg0KdHlwZXMgYW5kIHNwZWNpYWwgc2F0dXJhdGluZyBvcGVy YXRpb25zLiAgU3RpbGwgaGF2aW5nIGJvdGgsDQp0eXBlLWtleWVkIHNhdHVyYXRpbmcgUExVU19F WFBSDQphbmQgImNvZGUiLWtleWVkIC5TQVRfQUREIChvbiBpbnRlZ2VyIHR5cGVzIG9ubHk/KSBs b29rcyBsaWtlIGEgbWVzcy4NCg0KSXQgbWlnaHQgYmUgdGhhdCB0aGUgd2F5IHRvIGdvIGlzIHRv IHR1cm4gYWxsIGV4aXN0aW5nIHNhdHVyYXRpbmcgdHlwZQ0KKl9FWFBSIGludG8NCi5TQVRfKiBp bnRlcm5hbCBmdW5jdGlvbiBjYWxscywgaW4gdGhlIGVuZCBtYXBwaW5nIHRvIHRoZSBvcHRhYnMg YW5kDQpldmVudHVhbCBSVFggY29kZXMuDQoNClRoYXQgY291bGQgd29yayBmb3IgYm90aCBpbnRl Z2VyIHR5cGVzIGFuZCBmaXhlZC1wb2ludCB0eXBlcy4NCg0KSSdsbCBhbHNvIG5vdGUgdGhhdCAi c2F0dXJhdGluZyIgaXMganVzdCBhbm90aGVyIHZhcmlhbnQgb2Ygb3ZlcmZsb3cNCmJlaGF2aW9y IG9mIHdoaWNoIHdlIGhhdmUNCnRyYXBwaW5nICgtZnRyYXB2KSwgd3JhcHBpbmcgKC1md3JhcHYp LCBzaWduZWQtdW5kZWZpbmVkIChkZWZhdWx0KSBhbmQNCmFsc28gKGtpbmQtb2YpIHNhbml0aXpl ZC4NCldlIGRvIGxhY2sgZGlyZWN0IElMIHJlcHJlc2VudGF0aW9uIG9mIC1mdHJhcHYgYW5kIC1m d3JhcHYsIHRoZQ0Kc2VtYW50aWNzIG9uIGEgUExVU19FWFBSDQpkZXBlbmQgb24gcGVyLWZ1bmN0 aW9uIGZsYWdzLiAgRXZlbnR1YWxseSBhIGNvbW1vbiByZXByZXNlbnRhdGlvbg0KY291bGQgYmUg Zm91bmQgaGVyZS4NCkZvciBzYXR1cmF0aW5nIEkgd2FzIHRoaW5raW5nIG9mIC5BRERfT1ZFUkZM T1cgKGEsIGIsDQpzYXR1cmF0aW9uLXZhbHVlKSwgYSAidHJhcCIgY291bGQNCmJlIGEgInRyYXBw aW5nIiBzYXR1cmF0aW9uIHZhbHVlLCAidW5kZWZpbmVkIiBjb3VsZCBiZSBhDQoibm90LWEtdGhp bmciLiAgQnV0IEkgZGlkbid0IHRoaW5rIG11Y2gNCmFib3V0IHRoaXMuDQoNClRoYXQgc2FpZCwg SSB3b3VsZCBsaWtlIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUgdG8gYmUga2VwdCBpbiBtaW5k DQpiZWZvcmUgYWx0ZXJpbmcgdGhlIEdJTVBMRSBJTC4NCg0KQWRkaW5nIGFuIGludGVybmFsIGZ1 bmN0aW9uIGZvciBhbiBhbHJlYWR5IHByZXNlbnQgb3B0YWIgaXMgYQ0Kbm8tYnJhaW5lci4gIEFk ZGluZyBhIHZlY3Rvcml6ZXINCmFuZC9vciBpZi1jb252ZXJzaW9uIHBhdHRlcm4gdG8gbWFrZSB1 c2Ugb2YgdGhpcyBkdXJpbmcgdmVjdG9yaXphdGlvbg0KaXMgZXhpc3RpbmcgcHJhY3RpY2UuDQpB ZGRpbmcgcGF0dGVybiByZWNvZ25pdGlvbiB0byBJU0VMIG9yIHdpZGVuaW5nLW11bCBwYXNzZXMg Zm9yDQppbnN0cnVjdGlvbnMgdGhlIENQVSBjYW4gZG8NCmlzIGV4aXN0aW5nIHByYWN0aWNlIGFu ZCBPSy4NCg0KVGhhbmtzLA0KUmljaGFyZC4NCg0KDQo+IFRoYW5rcywNCj4gVGFtYXINCj4NCj4g PiBQYW4NCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogVGFt YXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gPiBTZW50OiBUdWVzZGF5 LCBGZWJydWFyeSAyNywgMjAyNCA1OjU3IFBNDQo+ID4gVG86IFJpY2hhcmQgQmllbmVyIDxyaWNo YXJkLmd1ZW50aGVyQGdtYWlsLmNvbT4NCj4gPiBDYzogTGksIFBhbjIgPHBhbjIubGlAaW50ZWwu Y29tPjsgZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IGp1emhlLnpob25nQHJpdmFpLmFpOw0KPiA+ IFdhbmcsIFlhbnpoYW5nIDx5YW56aGFuZy53YW5nQGludGVsLmNvbT47IGtpdG8uY2hlbmdAZ21h aWwuY29tOw0KPiA+IHJpY2hhcmQuc2FuZGlmb3JkQGFybS5jb20yOyBqZWZmcmV5YWxhd0BnbWFp bC5jb20NCj4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHYyXSBEcmFmdHxJbnRlcm5hbC1mbjogSW50 cm9kdWNlIGludGVybmFsIGZuIHNhdHVyYXRpb24NCj4gPiBVU19QTFVTDQo+ID4NCj4gPiA+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmlj aGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQo+ID4gPiBTZW50OiBUdWVzZGF5LCBGZWJydWFyeSAy NywgMjAyNCA5OjQ0IEFNDQo+ID4gPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3Rp bmFAYXJtLmNvbT4NCj4gPiA+IENjOiBwYW4yLmxpQGludGVsLmNvbTsgZ2NjLXBhdGNoZXNAZ2Nj LmdudS5vcmc7IGp1emhlLnpob25nQHJpdmFpLmFpOw0KPiA+ID4geWFuemhhbmcud2FuZ0BpbnRl bC5jb207IGtpdG8uY2hlbmdAZ21haWwuY29tOw0KPiA+ID4gcmljaGFyZC5zYW5kaWZvcmRAYXJt LmNvbTI7IGplZmZyZXlhbGF3QGdtYWlsLmNvbQ0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2 Ml0gRHJhZnR8SW50ZXJuYWwtZm46IEludHJvZHVjZSBpbnRlcm5hbCBmbiBzYXR1cmF0aW9uDQo+ ID4gPiBVU19QTFVTDQo+ID4gPg0KPiA+ID4gT24gU3VuLCBGZWIgMjUsIDIwMjQgYXQgMTA6MDHi gK9BTSBUYW1hciBDaHJpc3RpbmENCj4gPiA+IDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4gd3Jv dGU6DQo+ID4gPiA+DQo+ID4gPiA+IEhpIFBhbiwNCj4gPiA+ID4NCj4gPiA+ID4gPiBGcm9tOiBQ YW4gTGkgPHBhbjIubGlAaW50ZWwuY29tPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSGkgUmljaGFy ZCAmIFRhbWFyLA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVHJ5IHRoZSBERUZfSU5URVJOQUxfSU5U X0VYVF9GTiBhcyB5b3VyIHN1Z2dlc3Rpb24uICBCeSBtYXBwaW5nDQo+ID4gPiA+ID4gdXNfcGx1 cyRhMyB0byB0aGUgUlRMIHJlcHJlc2VudGF0aW9uICh1c19wbHVzOm0geCB5KSBpbiBvcHRhYnMu ZGVmLg0KPiA+ID4gPiA+IEFuZCB0aGVuIGV4cGFuZF9VU19QTFVTIGluIGludGVybmFsLWZuLmNj LiAgTm90IHZlcnkgc3VyZSBpZiBteQ0KPiA+ID4gPiA+IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVj dCBmb3IgREVGX0lOVEVSTkFMX0lOVF9FWFRfRk4uDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJIGFt IG5vdCBzdXJlIGlmIHdlIHN0aWxsIG5lZWQgREVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiBo ZXJlLCBnaXZlbg0KPiA+ID4gPiA+IHRoZSBSVEwgcmVwcmVzZW50YXRpb24gaGFzIChzc19wbHVz Om0geCB5KSBhbmQgKHVzX3BsdXM6bSB4IHkpIGFscmVhZHkuDQo+ID4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4gSSB0aGluayBhIGNvdXBsZSBvZiB0aGluZ3MgYXJlIGJlaW5nIGNvbmZ1c2VkIGhl cmUuICBTbyBsZXRzIGJyZWFrIGl0IGRvd246DQo+ID4gPiA+DQo+ID4gPiA+IFRoZSByZWFzb24g Zm9yIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gaXMgYmVjYXVzZSBpbiBHSU1QTEUNCj4g PiA+ID4gd2Ugb25seSB3YW50IG9uZSBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgYm90aCBzaWduZWQg YW5kIHVuc2lnbmVkIFNBVF9BREQuDQo+ID4gPiA+IHdpdGggdGhpcyBkZWZpbml0aW9uIHdlIGRv bid0IG5lZWQgU0FUX1VBREQgYW5kIFNBVF9TQUREIGJ1dCBpbnN0ZWFkDQo+ID4gPiA+IHdlIHdp bGwgb25seSBoYXZlIFNBVF9BREQsIHdoaWNoIHdpbGwgZXhwYW5kIHRvIHVzX3BsdXMgb3Igc3Nf cGx1cy4NCj4gPiA+ID4NCj4gPiA+ID4gTm93IHRoZSBkb3duc2lkZSBvZiB0aGlzIGlzIHRoYXQg dGhpcyBpcyBhIGRpcmVjdCBpbnRlcm5hbCBvcHRhYi4gIFRoaXMgbWVhbnMNCj4gPiA+ID4gdGhh dCBmb3IgdGhlIHJlcHJlc2VudGF0aW9uIHRvIGJlIHVzZWQgdGhlIHRhcmdldCAqbXVzdCogaGF2 ZSB0aGUgb3B0YWINCj4gPiA+ID4gaW1wbGVtZW50ZWQuICAgVGhpcyBpcyBhIGJpdCBhbm5veWlu ZyBiZWNhdXNlIGl0IGRvZXNuJ3QgYWxsb3cgdXMgdG8gZ2VuZXJpY2FsbHkNCj4gPiA+ID4gYXNz dW1lIHRoYXQgYWxsIHRhcmdldHMgdXNlIFNBVF9BREQgZm9yIHNhdHVyYXRpbmcgYWRkIGFuZCB0 aHVzIG9ubHkgaGF2ZSB0bw0KPiA+ID4gPiB3cml0ZSBvcHRpbWl6YXRpb24gZm9yIHRoaXMgcmVw cmVzZW50YXRpb24uDQo+ID4gPiA+DQo+ID4gPiA+IFRoaXMgaXMgd2h5IFJpY2hpIHNhaWQgd2Ug bWF5IG5lZWQgdG8gdXNlIGEgbmV3IHRyZWVfY29kZSBiZWNhdXNlIHdlIGNhbg0KPiA+ID4gPiBv dmVycmlkZSB0cmVlIGNvZGUgZXhwYW5zaW9ucy4gIEhvd2V2ZXIgdGhlIHNhbWUgY2FuIGJlIGRv bmUgd2l0aCB0aGUNCj4gPiBfRVhUX0ZODQo+ID4gPiA+IGludGVybmFsIGZ1bmN0aW9ucy4NCj4g PiA+ID4NCj4gPiA+ID4gU28gd2hhdCBJIG1lYW50IHdhcyB0aGF0IHdlIHdhbnQgdG8gaGF2ZSBh IGNvbWJpbmF0aW9uIG9mIHRoZSB0d28uIGkuZS4gYQ0KPiA+ID4gPiBERUZfSU5URVJOQUxfU0lH TkVEX09QVEFCX0VYVF9GTi4NCj4gPiA+DQo+ID4gPiBXaGV0aGVyIHdlIHdhbnQvbmVlZCBfRVhU IG9yIG9ubHkgZGlyZWN0IGRlcGVuZHMgbWFpbmx5IG9uIGhvdyB3ZSB3YW50IHRvDQo+ID4gPiBs ZXZlcmFnZSBzdXBwb3J0LiAgSWYgaXQncyBvbmx5IGR1cmluZyB2ZWN0b3JpemF0aW9uIGFuZCBw b3NzaWJseSBpbnN0cnVjdGlvbg0KPiA+ID4gc2VsZWN0aW9uIGEgZGlyZWN0IG9wdGFiIGlzIElN TyB0aGUgd2F5IHRvIGdvLiAgR2VuZXJpYyBvcHRpbWl6YXRpb24gb25seQ0KPiA+ID4gbWFyZ2lu YWxseSBpbXByb3ZlcyB3aGVuIHlvdSBleHBsb2RlIHRoZSBudW1iZXIgb2YgYmFzaWMgb3BlcmF0 aW9ucyB5b3UNCj4gPiA+IGV4cG9zZSAtIGluIGZhY3QgaXQgZ2V0cyBxdWl0ZSB1bndpZWxkbHkg dG8gc3VwcG9ydCBhbGwgb2YgdGhlbSBpbg0KPiA+ID4gc2ltcGxpZmljYXRpb25zDQo+ID4gPiBh bmQvb3IgY2Fub25pY2FsaXphdGlvbiBhbmQgeW91IHBvc3NpYmx5IG5lZWQgdG8gdHJhbnNsYXRl IHRoZW0gYmFjayB0byB3aGF0DQo+ID4gPiB0aGUgdGFyZ2V0IENQVSBzdXBwb3J0cy4NCj4gPiA+ DQo+ID4gPiBXZSBhbHJlYWR5IGRvIGhhdmUgdG9vIG1hbnkgKElNTykgInNwZWNpYWwiIG9wZXJh dGlvbnMgZXhwb3NlZCAiZWFybHkiDQo+ID4gPiBpbiB0aGUgR0lNUExFIHBpcGVsaW5lLg0KPiA+ ID4NCj4gPiA+IEJ1dCB3aGF0IEknZCBsaWtlIHRvIHNlZSBpcyB0aGF0IHdlIGRvIG1vcmUgaW5z dHJ1Y3Rpb24gc2VsZWN0aW9uIG9uIEdJTVBMRQ0KPiA+ID4gYnV0IF9sYXRlXyAodGhlcmUncyB0 aGUgcGFzc19vcHRpbWl6ZV93aWRlbmluZ19tdWwgYW5kIHBhc3NfZ2ltcGxlX2lzZWwNCj4gPiA+ IHBhc3NlcyBkb2luZyB3aGF0IEknZCBjYWxsIGluc3RydWN0aW9uIHNlbGVjdGlvbikuICBCdXQg dGhhdCBtZWFucyBub3QgYWRkaW5nDQo+ID4gPiBtYXRjaC5wZCBwYXR0ZXJucyBmb3IgdGhhdCBv ciBhdCBsZWFzdCBoYXZlIGEgc2VwYXJhdGUgaXNlbC1tYXRjaC5wZA0KPiA+ID4gbWFjaGluZXJ5 IGZvciB0aGF0Lg0KPiA+ID4NCj4gPiA+IFNvIGFzIGEgc3RhcnQgSSB3b3VsZCBnbyBmb3IgYSBk aXJlY3Qgb3B0YWIgYW5kIHNlZSB0byByZWNvZ25pemUgaXQgZHVyaW5nDQo+ID4gPiBJU0VMPw0K PiA+ID4NCj4gPg0KPiA+IFRoZSBwcm9ibGVtIHdpdGggSVNFTCBhbmQgdGhlIHJlYXNvbiBJIHN1 Z2dlc3RlZCBhbiBpbmRpcmVjdCBJRk4gaXMgdGhhdCB0aGVyZQ0KPiA+IEFyZSBiZW5lZml0IHRv IGJlIGhhZCBmcm9tIHJlY29nbml6aW5nIGl0IGVhcmx5LiAgU2F0dXJhdGluZyBhcml0aG1ldGlj IGNhbiBiZQ0KPiA+IG9wdGltaXplZA0KPiA+IERpZmZlcmVudGx5IGZyb20gbm9uLXNhdHVyYXRp bmcgb25lcy4NCj4gPg0KPiA+IEJ1dCBhZGRpdGlvbmFsbHkgYSBjb21tb24gd2F5IG9mIHNwZWNp ZnlpbmcgdGhlbSBkZWNvbXBvc2VzIHRvIGJyYW5jaGVzDQo+ID4gYW5kL29yIHVzaW5nIENPTVBM RVhfRVhQUiAoc2VlIHRoZSB2YXJpb3VzIFBScyBvbiBzYXR1cmF0aW5nIGFyaXRobWV0aWMpLg0K PiA+DQo+ID4gVGhlc2UgdHdvIHJlcHJlc2VudGF0aW9uIGNhbiBiZSBkZXRlY3RlZCBpbiBQSEkt b3B0cyBhbmQgaXQncyBiZW5lZmljaWFsIHRvIGFsbA0KPiA+IHRhcmdldHMgdG8gY2Fub25pY2Fs aXplIHRoZW0gdG8gdGhlIGJyYW5jaGxlc3MgY29kZS4NCj4gPg0KPiA+IFRob3NlIHR3byBjYXNl cyBhbHNvICpjb21wbGV0ZWx5KiBzdG9wIHZlY3Rvcml6YXRpb24gYmVjYXVzZSBvZiBlaXRoZXIg dGhlDQo+ID4gY29udHJvbCBmbG93IG9yIHRoZSBmYWN0IHRoZSB2ZWN0b3JpemVyIGNhbid0IGhh bmRsZSBjb21wbGV4IHR5cGVzLg0KPiA+DQo+ID4gU28gcmVhbGx5LCBnaW1wbGUgSVNFTCB3b3Vs ZCBmaXgganVzdCAxIG9mIHRoZSAzIHZlcnkgY29tbW9uIGNhc2VzLCBhbmQgdGhlbg0KPiA+IFdl J2Qgc3RpbGwgbmVlZCB0byBoYWNrIHRoZSB2ZWN0b3JpemVyIGNvc3QgbW9kZWxzIGZvciB0YXJn ZXRzIHdpdGggc2F0dXJhdGluZw0KPiA+IHZlY3RvciBpbnN0cnVjdGlvbnMuDQo+ID4NCj4gPiBJ IG9mIGNvdXJzZSBkZWZlciB0byB5b3UsIGJ1dCBpdCBzZWVtcyBxdWl0ZSBzdWJvcHRpbWFsIHRv IGRvIGl0IHRoaXMgd2F5IGFuZA0KPiA+IGRvZXNuJ3QgZ2V0IHVzIGZpcnN0IGNsYXNzIHNhdHVy YXRpb24gc3VwcG9ydC4NCj4gPg0KPiA+IEFkZGl0aW9uYWxseSB0aGVyZSBoYXZlIGJlZW4gZGlz Y3Vzc2lvbnMgd2hldGhlciBib3RoIGNsYW5nIGFuZCBnY2Mgc2hvdWxkDQo+ID4gcHJvdmlkZSBf X2J1aWx0aW5fc2F0dXJhdGVfKiBtZXRob2RzLCB3aGljaCB0aGUgbm9uLWRpcmVjdCBJRk4gd291 bGQgaGVscA0KPiA+IHN1cHBvcnQuDQo+ID4NCj4gPiBUYW1hci4NCj4gPg0KPiA+ID4gPiBJZiBS aWNoaSBhZ3JlZXMsIHRoZSBiZWxvdyBpcyB3aGF0IEkgbWVhbnQuIEl0IGNyZWF0ZXMgdGhlIGlu ZnJhc3RydWN0dXJlIGZvciB0aGlzDQo+ID4gPiA+IGFuZCBmb3Igbm93IG9ubHkgYWxsb3dzIGEg ZGVmYXVsdCBmYWxsYmFjayBmb3IgdW5zaWduZWQgc2F0dXJhdGluZyBhZGQgYW5kDQo+ID4gbWFr ZXMNCj4gPiA+ID4gaXQgZWFzaWVyIGZvciB1cyB0byBhZGQgdGhlIHJlc3QgbGF0ZXINCj4gPiA+ ID4NCj4gPiA+ID4gQWxzbywgdW5sZXNzIEknbSB3cm9uZyAoYW5kIFJpY2hpIGNhbiBjb3JyZWN0 IG1lIGhlcmUpLCB1c19wbHVzIGFuZCBzc19wbHVzIGFyZQ0KPiA+ID4gdGhlDQo+ID4gPiA+IFJU TCBleHByZXNzaW9uLCBidXQgdGhlIG9wdGFiIGZvciBzYXR1cmF0aW9uIGFyZSBzc2FkZCBhbmQg dXNhZGQuICBTbyB5b3UgZG9uJ3QNCj4gPiA+ID4gbmVlZCB0byBtYWtlIG5ldyB1c19wbHVzIGFu ZCBzc19wbHVzIG9uZXMuDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvaW50ZXJu YWwtZm4uY2MgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4gPiA+ID4gaW5kZXggYTA3ZjI1ZjNhZWUu LmFhZjlmODk5MWIzIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MNCj4g PiA+ID4gKysrIGIvZ2NjL2ludGVybmFsLWZuLmNjDQo+ID4gPiA+IEBAIC00MTAzLDYgKzQxMDMs MTcgQEAgZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChpbnRlcm5hbF9mbiBmbiwNCj4g PiA+IHRyZWVfcGFpciB0eXBlcywNCj4gPiA+ID4gICAgICAgICByZXR1cm4gZGlyZWN0XyMjVFlQ RSMjX29wdGFiX3N1cHBvcnRlZF9wICh3aGljaF9vcHRhYiwgdHlwZXMsICAgXA0KPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdF90eXBl KTsgICAgICAgICAgICBcDQo+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ICsjZGVmaW5lIERFRl9J TlRFUk5BTF9TSUdORURfT1BUQUJfRVhUX0ZOKENPREUsIEZMQUdTLCBTRUxFQ1RPUiwNCj4gPiA+ IFNJR05FRF9PUFRBQiwgXA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFVOU0lHTkVEX09QVEFCLCBUWVBFKSAgICAgICAgICBcDQo+ID4gPiA+ICsgICAg Y2FzZSBJRk5fIyNDT0RFOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gPiA+ID4gKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4gPiA+ICsg ICAgICAgb3B0YWIgd2hpY2hfb3B0YWIgPSAoVFlQRV9VTlNJR05FRCAodHlwZXMuU0VMRUNUT1Ip ICAgICAgICAgICAgIFwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFVO U0lHTkVEX09QVEFCICMjIF9vcHRhYiAgICAgICAgICAgICAgICAgXA0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogU0lHTkVEX09QVEFCICMjIF9vcHRhYik7ICAgICAgICAg ICAgICAgICBcDQo+ID4gPiA+ICsgICAgICAgcmV0dXJuIGRpcmVjdF8jI1RZUEUjI19vcHRhYl9z dXBwb3J0ZWRfcCAod2hpY2hfb3B0YWIsIHR5cGVzLCAgIFwNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRfdHlwZSkgICAgICAgICAg ICAgXA0KPiA+ID4gPiArICAgICAgICAgICAgICB8fCBpbnRlcm5hbF8jI0NPREUjI19mbl9zdXBw b3J0ZWRfcCAodHlwZXMuU0VMRUNUT1IsIG9wdF90eXBlKTsgXA0KPiA+ID4gPiArICAgICAgfQ0K PiA+ID4gPiAgI2luY2x1ZGUgImludGVybmFsLWZuLmRlZiINCj4gPiA+ID4NCj4gPiA+ID4gICAg ICBjYXNlIElGTl9MQVNUOg0KPiA+ID4gPiBAQCAtNDMwMyw2ICs0MzE0LDggQEAgc2V0X2Vkb21f c3VwcG9ydGVkX3AgKHZvaWQpDQo+ID4gPiA+ICAgICAgb3B0YWIgd2hpY2hfb3B0YWIgPSBkaXJl Y3RfaW50ZXJuYWxfZm5fb3B0YWIgKGZuLCB0eXBlcyk7ICAgICAgICAgIFwNCj4gPiA+ID4gICAg ICBleHBhbmRfIyNUWVBFIyNfb3B0YWJfZm4gKGZuLCBzdG10LCB3aGljaF9vcHRhYik7ICAgICAg ICAgICAgICAgICAgXA0KPiA+ID4gPiAgICB9DQo+ID4gPiA+ICsjZGVmaW5lIERFRl9JTlRFUk5B TF9TSUdORURfT1BUQUJfRVhUX0ZOKENPREUsIEZMQUdTLCBTRUxFQ1RPUiwNCj4gPiA+IFNJR05F RF9PUFRBQiwgXA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFVOU0lHTkVEX09QVEFCLCBUWVBFKQ0KPiA+ID4gPiAgI2luY2x1ZGUgImludGVybmFsLWZu LmRlZiINCj4gPiA+ID4NCj4gPiA+ID4gIC8qIFJvdXRpbmVzIHRvIGV4cGFuZCBlYWNoIGludGVy bmFsIGZ1bmN0aW9uLCBpbmRleGVkIGJ5IGZ1bmN0aW9uIG51bWJlci4NCj4gPiA+ID4gQEAgLTUx NzcsMyArNTE5MCw0NSBAQCBleHBhbmRfUE9QQ09VTlQgKGludGVybmFsX2ZuIGZuLCBnY2FsbCAq c3RtdCkNCj4gPiA+ID4gICAgICAgIGVtaXRfbW92ZV9pbnNuIChwbGhzLCBjbXApOw0KPiA+ID4g PiAgICAgIH0NCj4gPiA+ID4gIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArdm9pZA0KPiA+ID4gPiAr ZXhwYW5kX1NBVF9BREQgKGludGVybmFsX2ZuIGZuLCBnY2FsbCAqc3RtdCkNCj4gPiA+ID4gK3sN Cj4gPiA+ID4gKyAgLyogQ2hlY2sgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyB0aGUgZXhwYW5zaW9u IHRocm91Z2ggYW4gSUZOLiAgKi8NCj4gPiA+ID4gKyAgdHJlZV9wYWlyIHR5cGVzID0gZGlyZWN0 X2ludGVybmFsX2ZuX3R5cGVzIChmbiwgc3RtdCk7DQo+ID4gPiA+ICsgIG9wdGFiIHdoaWNoX29w dGFiID0gZGlyZWN0X2ludGVybmFsX2ZuX29wdGFiIChmbiwgdHlwZXMpOw0KPiA+ID4gPiArICBp ZiAoZGlyZWN0X2JpbmFyeV9vcHRhYl9zdXBwb3J0ZWRfcCAod2hpY2hfb3B0YWIsIHR5cGVzLA0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNuX29wdGlt aXphdGlvbl90eXBlICgpKSkNCj4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ICsgICAgICBleHBhbmRf YmluYXJ5X29wdGFiX2ZuIChmbiwgc3RtdCwgd2hpY2hfb3B0YWIpOw0KPiA+ID4gPiArICAgICAg cmV0dXJuOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAvKiBUYXJnZXQg ZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3B0YWIsIGJ1dCB3ZSBjYW4gZGUtY29tcG9zZSBpdC4gICov DQo+ID4gPiA+ICsgIC8qDQo+ID4gPiA+ICsgIC4uLiBkZWNvbXBvc2UgdG8gYSBjYW5vbmljYWwg cmVwcmVzZW50YXRpb24gLi4uDQo+ID4gPiA+ICsgIGlmIChUWVBFX1VOU0lHTkVEICh0eXBlcy5T RUxFQ1RPUikpDQo+ID4gPiA+ICsgICAgew0KPiA+ID4gPiArICAgICAgLi4uDQo+ID4gPiA+ICsg ICAgICBkZWNvbXBvc2UgYmFjayB0byAoWCArIFkpIHwgLSAoKFggKyBZKSA8IFgpDQo+ID4gPiA+ ICsgICAgfQ0KPiA+ID4gPiArICBlbHNlDQo+ID4gPiA+ICsgICAgew0KPiA+ID4gPiArICAgICAg Li4uDQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAqLw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICtib29sIGludGVybmFsX1NBVF9BRERfZm5fc3VwcG9ydGVkX3AgKHRyZWUgdHlw ZSwgb3B0aW1pemF0aW9uX3R5cGUgLyoNCj4gPiA+IG9wdHlwZSAqLykNCj4gPiA+ID4gK3sNCj4g PiA+ID4gKyAgLyogRm9yIG5vdywgZG9uJ3Qgc3VwcG9ydCBkZWNvbXBvc2luZyB2ZWN0b3Igb3Bz LiAgKi8NCj4gPiA+ID4gKyAgaWYgKFZFQ1RPUl9UWVBFX1AgKHR5cGUpKQ0KPiA+ID4gPiArICAg IHJldHVybiBmYWxzZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAvKiBTaWduZWQgc2F0dXJhdGlu ZyBhcml0aG1ldGljIGlzIGhhcmRlciB0byBkbyBzaW5jZSB3ZSdsbCBzbyBmb3Igbm93DQo+ID4g PiA+ICsgICAgIGxldHMgaWdub3JlLiAgKi8NCj4gPiA+ID4gKyAgaWYgKCFUWVBFX1VOU0lHTkVE ICh0eXBlKSkNCj4gPiA+ID4gKyAgICByZXR1cm4gZmFsc2U7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgcmV0dXJuIFRSRUVfQ09ERSAodHlwZSkgPT0gSU5URUdFUl9UWVBFOw0KPiA+ID4gPiArfQ0K PiA+ID4gPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCj4gPiA+ID4gZGlmZiAtLWdpdCBh L2djYy9pbnRlcm5hbC1mbi5kZWYgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ID4gPiA+IGluZGV4 IGMxNGQzMDM2NWMxLi41YTI0OTEyMjhkNSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZ2NjL2ludGVy bmFsLWZuLmRlZg0KPiA+ID4gPiArKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ID4gPiA+IEBA IC05Miw2ICs5MiwxMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAg SWYgbm90IHNlZQ0KPiA+ID4gPiAgICAgdW5zaWduZWQgaW5wdXRzIHJlc3BlY3RpdmVseSwgYm90 aCB3aXRob3V0IHRoZSB0cmFpbGluZyAiX29wdGFiIi4NCj4gPiA+ID4gICAgIFNFTEVDVE9SIHNh eXMgd2hpY2ggdHlwZSBpbiB0aGUgdHJlZV9wYWlyIGRldGVybWluZXMgdGhlIHNpZ25lZG5lc3Mu DQo+ID4gPiA+DQo+ID4gPiA+ICsgICBERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0VYVF9GTiBp cyBsaWtlDQo+ID4gPiBERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOLCBleGNlcHQNCj4gPiA+ ID4gKyAgIHRoYXQgaXQgaGFzIGV4cGFuZF8jI05BTUUgZGVmaW5lZCBpbiBpbnRlcm5hbC1mbi5j YyB0byBvdmVycmlkZSB0aGUNCj4gPiA+ID4gKyAgIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJf Rk4gZXhwYW5zaW9uIGJlaGF2aW9yLg0KPiA+ID4gPiArDQo+ID4gPiA+ICAgICBERUZfSU5URVJO QUxfRkxUX0ZOIGlzIGxpa2UgREVGX0lOVEVSTkFMX09QVEFCX0ZOLCBidXQgaW4gYWRkaXRpb24s DQo+ID4gPiA+ICAgICB0aGUgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgY29tcHV0YXRpb25hbCBw YXJ0IG9mIGEgYnVpbHQtaW4gbWF0aA0KPiA+ID4gPiAgICAgZnVuY3Rpb24gQlVJTFRfSU5fPE5B TUU+e0YsLEx9LiAgVW5saWtlIHNvbWUgYnVpbHQtaW4gZnVuY3Rpb25zLA0KPiA+ID4gPiBAQCAt MTUzLDYgKzE1NywxMyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAg SWYgbm90IHNlZQ0KPiA+ID4gPiAgICBERUZfSU5URVJOQUxfRk4gKE5BTUUsIEZMQUdTIHwgRUNG X0xFQUYsIE5VTEwpDQo+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4NCj4gPiA+ID4gKyNpZm5kZWYg REVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9FWFRfRk4NCj4gPiA+ID4gKyNkZWZpbmUgREVGX0lO VEVSTkFMX1NJR05FRF9PUFRBQl9FWFRfRk4oTkFNRSwgRkxBR1MsIFNFTEVDVE9SLA0KPiA+ID4g U0lHTkVEX09QVEFCLCBcDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBVTlNJR05FRF9PUFRBQiwgVFlQRSkgXA0KPiA+ID4gPiArICBERUZfSU5URVJOQUxfU0lH TkVEX09QVEFCX0ZOIChOQU1FLCBGTEFHUywgU0VMRUNUT1IsDQo+ID4gPiBTSUdORURfT1BUQUIs IFwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlNJR05FRF9PUFRB QiwgVFlQRSkNCj4gPiA+ID4gKyNlbmRpZg0KPiA+ID4gPiArDQo+ID4gPiA+ICAjaWZuZGVmIERF Rl9JTlRFUk5BTF9GTFRfRk4NCj4gPiA+ID4gICNkZWZpbmUgREVGX0lOVEVSTkFMX0ZMVF9GTihO QU1FLCBGTEFHUywgT1BUQUIsIFRZUEUpIFwNCj4gPiA+ID4gICAgREVGX0lOVEVSTkFMX09QVEFC X0ZOIChOQU1FLCBGTEFHUywgT1BUQUIsIFRZUEUpDQo+ID4gPiA+IEBAIC0yNzQsNiArMjg1LDgg QEAgREVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiAoTVVMSFMsDQo+ID4gPiBFQ0ZfQ09OU1Qg fCBFQ0ZfTk9USFJPVywgZmlyc3QsDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNtdWxocywgdW11bGhzLCBiaW5hcnkpDQo+ID4gPiA+ICBERUZfSU5URVJOQUxfU0lHTkVE X09QVEFCX0ZOIChNVUxIUlMsIEVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLA0KPiA+ID4gZmlyc3Qs DQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdWxocnMsIHVtdWxocnMs IGJpbmFyeSkNCj4gPiA+ID4gK0RFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRVhUX0ZOIChTQVRf QURELCBFQ0ZfQ09OU1QgfA0KPiA+ID4gRUNGX05PVEhST1csIGZpcnN0LA0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NhZGQsIHVzYWRkLCBiaW5hcnkpDQo+ID4g PiA+DQo+ID4gPiA+ICBERUZfSU5URVJOQUxfQ09ORF9GTiAoQURELCBFQ0ZfQ09OU1QsIGFkZCwg YmluYXJ5KQ0KPiA+ID4gPiAgREVGX0lOVEVSTkFMX0NPTkRfRk4gKFNVQiwgRUNGX0NPTlNULCBz dWIsIGJpbmFyeSkNCj4gPiA+ID4gQEAgLTU5Myw1ICs2MDYsNiBAQCBERUZfSU5URVJOQUxfRk4g KEJJVElOVFRPRkxPQVQsIEVDRl9QVVJFIHwNCj4gPiA+IEVDRl9MRUFGLCAiLiBSIC4gIikNCj4g PiA+ID4gICN1bmRlZiBERUZfSU5URVJOQUxfRkxUX0ZODQo+ID4gPiA+ICAjdW5kZWYgREVGX0lO VEVSTkFMX0ZMVF9GTE9BVE5fRk4NCj4gPiA+ID4gICN1bmRlZiBERUZfSU5URVJOQUxfU0lHTkVE X09QVEFCX0ZODQo+ID4gPiA+ICsjdW5kZWYgREVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9FWFRf Rk4NCj4gPiA+ID4gICN1bmRlZiBERUZfSU5URVJOQUxfT1BUQUJfRk4NCj4gPiA+ID4gICN1bmRl ZiBERUZfSU5URVJOQUxfRk4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5o IGIvZ2NjL2ludGVybmFsLWZuLmgNCj4gPiA+ID4gaW5kZXggYmNjZWUxYzNlMDkuLmRiZGIxZTZi YWQyIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uaA0KPiA+ID4gPiArKysg Yi9nY2MvaW50ZXJuYWwtZm4uaA0KPiA+ID4gPiBAQCAtMjYzLDYgKzI2Myw4IEBAIGV4dGVybiB2 b2lkIGV4cGFuZF9ESVZNT0RCSVRJTlQgKGludGVybmFsX2ZuLCBnY2FsbA0KPiA+ID4gKik7DQo+ ID4gPiA+ICBleHRlcm4gdm9pZCBleHBhbmRfRkxPQVRUT0JJVElOVCAoaW50ZXJuYWxfZm4sIGdj YWxsICopOw0KPiA+ID4gPiAgZXh0ZXJuIHZvaWQgZXhwYW5kX0JJVElOVFRPRkxPQVQgKGludGVy bmFsX2ZuLCBnY2FsbCAqKTsNCj4gPiA+ID4gIGV4dGVybiB2b2lkIGV4cGFuZF9QT1BDT1VOVCAo aW50ZXJuYWxfZm4sIGdjYWxsICopOw0KPiA+ID4gPiArZXh0ZXJuIHZvaWQgZXhwYW5kX1NBVF9B REQgKGludGVybmFsX2ZuLCBnY2FsbCAqKTsNCj4gPiA+ID4gK2V4dGVybiBib29sIGludGVybmFs X1NBVF9BRERfZm5fc3VwcG9ydGVkX3AgKHRyZWUsIG9wdGltaXphdGlvbl90eXBlKTsNCj4gPiA+ ID4NCj4gPiA+ID4gIGV4dGVybiBib29sIHZlY3Rvcml6ZWRfaW50ZXJuYWxfZm5fc3VwcG9ydGVk X3AgKGludGVybmFsX2ZuLCB0cmVlKTsNCj4gPiA+ID4NCj4gPiA+ID4gPiBOb3RlIHRoaXMgcGF0 Y2ggaXMgYSBkcmFmdCBmb3IgdmFsaWRhdGlvbiwgbm8gdGVzdCBhcmUgaW52b3ZsZWQgaGVyZS4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgICAgICAqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fVVNfUExVUyk6IEFkZCBidWlsdGluIGRl Zi4NCj4gPiA+ID4gPiAgICAgICAoQlVJTFRfSU5fVVNfUExVU0lNQVgpOiBEaXR0by4NCj4gPiA+ ID4gPiAgICAgICAoQlVJTFRfSU5fVVNfUExVU0wpOiBEaXR0by4NCj4gPiA+ID4gPiAgICAgICAo QlVJTFRfSU5fVVNfUExVU0xMKTogRGl0dG8uDQo+ID4gPiA+ID4gICAgICAgKEJVSUxUX0lOX1VT X1BMVVNHKTogRGl0dG8uDQo+ID4gPiA+ID4gICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3YtcHJv dG9zLmggKHJpc2N2X2V4cGFuZF91c19wbHVzKTogQWRkIG5ldw0KPiA+ID4gPiA+ICAgICAgIGZ1 bmMgZGVjbCBmb3IgZXhwYW5kaW5nIHVzX3BsdXMuDQo+ID4gPiA+ID4gICAgICAgKiBjb25maWcv cmlzY3YvcmlzY3YuY2MgKHJpc2N2X2V4cGFuZF91c19wbHVzKTogQWRkIG5ldyBmdW5jDQo+ID4g PiA+ID4gICAgICAgaW1wbCBmb3IgZXhwYW5kaW5nIHVzX3BsdXMuDQo+ID4gPiA+ID4gICAgICAg KiBjb25maWcvcmlzY3YvcmlzY3YubWQgKHVzX3BsdXM8bW9kZT4zKTogQWRkIG5ldyBwYXR0ZXJu IGltcGwNCj4gPiA+ID4gPiAgICAgICB1c19wbHVzPG1vZGU+My4NCj4gPiA+ID4gPiAgICAgICAq IGludGVybmFsLWZuLmNjIChleHBhbmRfVVNfUExVUyk6IEFkZCBuZXcgZnVuYyBpbXBsIHRvIGV4 cGFuZA0KPiA+ID4gPiA+ICAgICAgIFVTX1BMVVMuDQo+ID4gPiA+ID4gICAgICAgKiBpbnRlcm5h bC1mbi5kZWYgKFVTX1BMVVMpOiBBZGQgbmV3IElOVF9FWFRfRk4uDQo+ID4gPiA+ID4gICAgICAg KiBpbnRlcm5hbC1mbi5oIChleHBhbmRfVVNfUExVUyk6IEFkZCBuZXcgZnVuYyBkZWNsLg0KPiA+ ID4gPiA+ICAgICAgICogbWF0Y2gucGQ6IEFkZCBuZXcgc2ltcGxpZnkgcGF0dGVybiBmb3IgdXNf cGx1cy4NCj4gPiA+ID4gPiAgICAgICAqIG9wdGFicy5kZWYgKE9QVEFCX05MKTogQWRkIG5ldyBP UFRBQl9OTCB0byBVU19QTFVTIHJ0bC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYt Ynk6IFBhbiBMaSA8cGFuMi5saUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4g IGdjYy9idWlsdGlucy5kZWYgICAgICAgICAgICAgICAgfCAgNyArKysrKw0KPiA+ID4gPiA+ICBn Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oIHwgIDEgKw0KPiA+ID4gPiA+ICBnY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LmNjICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrDQo+ID4gPiA+ID4gIGdjYy9jb25maWcvcmlzY3YvcmlzY3YubWQgICAgICAgfCAxMSAr KysrKysrKw0KPiA+ID4gPiA+ICBnY2MvaW50ZXJuYWwtZm4uY2MgICAgICAgICAgICAgIHwgMjYg KysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ICBnY2MvaW50ZXJuYWwtZm4uZGVmICAgICAg ICAgICAgIHwgIDMgKysrDQo+ID4gPiA+ID4gIGdjYy9pbnRlcm5hbC1mbi5oICAgICAgICAgICAg ICAgfCAgMSArDQo+ID4gPiA+ID4gIGdjYy9tYXRjaC5wZCAgICAgICAgICAgICAgICAgICAgfCAx NyArKysrKysrKysrKysNCj4gPiA+ID4gPiAgZ2NjL29wdGFicy5kZWYgICAgICAgICAgICAgICAg ICB8ICAyICsrDQo+ID4gPiA+ID4gIDkgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKykN Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvYnVpbHRpbnMuZGVmIGIvZ2Nj L2J1aWx0aW5zLmRlZg0KPiA+ID4gPiA+IGluZGV4IGY2ZjNlMTA0ZjZhLi4wNzc3YjkxMmNmYSAx MDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9nY2MvYnVpbHRpbnMuZGVmDQo+ID4gPiA+ID4gKysrIGIv Z2NjL2J1aWx0aW5zLmRlZg0KPiA+ID4gPiA+IEBAIC0xMDU1LDYgKzEwNTUsMTMgQEAgREVGX0dD Q19CVUlMVElODQo+ID4gPiAoQlVJTFRfSU5fUE9QQ09VTlRJTUFYLA0KPiA+ID4gPiA+ICJwb3Bj b3VudGltYXgiLCBCVF9GTl9JTlRfVUlOVE1BWA0KPiA+ID4gPiA+ICBERUZfR0NDX0JVSUxUSU4g ICAgICAgIChCVUlMVF9JTl9QT1BDT1VOVEwsICJwb3Bjb3VudGwiLA0KPiA+ID4gQlRfRk5fSU5U X1VMT05HLA0KPiA+ID4gPiA+IEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJU1QpDQo+ID4gPiA+ ID4gIERFRl9HQ0NfQlVJTFRJTiAgICAgICAgKEJVSUxUX0lOX1BPUENPVU5UTEwsICJwb3Bjb3Vu dGxsIiwNCj4gPiA+ID4gPiBCVF9GTl9JTlRfVUxPTkdMT05HLCBBVFRSX0NPTlNUX05PVEhST1df TEVBRl9MSVNUKQ0KPiA+ID4gPiA+ICBERUZfR0NDX0JVSUxUSU4gICAgICAgIChCVUlMVF9JTl9Q T1BDT1VOVEcsICJwb3Bjb3VudGciLA0KPiA+ID4gQlRfRk5fSU5UX1ZBUiwNCj4gPiA+ID4gPiBB VFRSX0NPTlNUX05PVEhST1dfVFlQRUdFTkVSSUNfTEVBRikNCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gK0RFRl9HQ0NfQlVJTFRJTiAgICAgICAgKEJVSUxUX0lOX1VTX1BMVVMsICJ1c19wbHVzIiwg QlRfRk5fSU5UX1VJTlQsDQo+ID4gPiA+ID4gQVRUUl9DT05TVF9OT1RIUk9XX0xFQUZfTElTVCkN Cj4gPiA+ID4gPiArREVGX0dDQ19CVUlMVElOICAgICAgICAoQlVJTFRfSU5fVVNfUExVU0lNQVgs ICJ1c19wbHVzaW1heCIsDQo+ID4gPiA+ID4gQlRfRk5fSU5UX1VJTlRNQVgsIEFUVFJfQ09OU1Rf Tk9USFJPV19MRUFGX0xJU1QpDQo+ID4gPiA+ID4gK0RFRl9HQ0NfQlVJTFRJTiAgICAgICAgKEJV SUxUX0lOX1VTX1BMVVNMLCAidXNfcGx1c2wiLA0KPiA+IEJUX0ZOX0lOVF9VTE9ORywNCj4gPiA+ ID4gPiBBVFRSX0NPTlNUX05PVEhST1dfTEVBRl9MSVNUKQ0KPiA+ID4gPiA+ICtERUZfR0NDX0JV SUxUSU4gICAgICAgIChCVUlMVF9JTl9VU19QTFVTTEwsICJ1c19wbHVzbGwiLA0KPiA+ID4gPiA+ IEJUX0ZOX0lOVF9VTE9OR0xPTkcsIEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJU1QpDQo+ID4g PiA+ID4gK0RFRl9HQ0NfQlVJTFRJTiAgICAgICAgKEJVSUxUX0lOX1VTX1BMVVNHLCAidXNfcGx1 c2ciLCBCVF9GTl9JTlRfVkFSLA0KPiA+ID4gPiA+IEFUVFJfQ09OU1RfTk9USFJPV19UWVBFR0VO RVJJQ19MRUFGKQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgREVGX0VYVF9MSUJfQlVJTFRJTiAg ICAoQlVJTFRfSU5fUE9TSVhfTUVNQUxJR04sICJwb3NpeF9tZW1hbGlnbiIsDQo+ID4gPiA+ID4g QlRfRk5fSU5UX1BUUlBUUl9TSVpFX1NJWkUsIEFUVFJfTk9USFJPV19OT05OVUxMX0xFQUYpDQo+ ID4gPiA+ID4gIERFRl9HQ0NfQlVJTFRJTiAgICAgICAgKEJVSUxUX0lOX1BSRUZFVENILCAicHJl ZmV0Y2giLA0KPiA+ID4gPiA+IEJUX0ZOX1ZPSURfQ09OU1RfUFRSX1ZBUiwgQVRUUl9OT1ZPUFNf TEVBRl9MSVNUKQ0KPiA+ID4gPiA+ICBERUZfTElCX0JVSUxUSU4gICAgICAgIChCVUlMVF9JTl9S RUFMTE9DLCAicmVhbGxvYyIsIEJUX0ZOX1BUUl9QVFJfU0laRSwNCj4gPiA+ID4gPiBBVFRSX0FM TE9DX1dBUk5fVU5VU0VEX1JFU1VMVF9TSVpFXzJfTk9USFJPV19MRUFGX0xJU1QpDQo+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggYi9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oDQo+ID4gPiA+ID4gaW5kZXggODBlZmRmMmI3ZTUuLmJh NjA4NmYxZjI1IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt cHJvdG9zLmgNCj4gPiA+ID4gPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5o DQo+ID4gPiA+ID4gQEAgLTEzMiw2ICsxMzIsNyBAQCBleHRlcm4gdm9pZCByaXNjdl9hc21fb3V0 cHV0X2V4dGVybmFsIChGSUxFICosIGNvbnN0DQo+ID4gPiB0cmVlLA0KPiA+ID4gPiA+IGNvbnN0 IGNoYXIgKik7DQo+ID4gPiA+ID4gIGV4dGVybiBib29sDQo+ID4gPiA+ID4gIHJpc2N2X3pjbXBf dmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKEhPU1RfV0lERV9JTlQsIGludCk7DQo+ID4gPiA+ID4g IGV4dGVybiB2b2lkIHJpc2N2X2xlZ2l0aW1pemVfcG9seV9tb3ZlIChtYWNoaW5lX21vZGUsIHJ0 eCwgcnR4LCBydHgpOw0KPiA+ID4gPiA+ICtleHRlcm4gdm9pZCByaXNjdl9leHBhbmRfdXNfcGx1 cyAocnR4LCBydHgsIHJ0eCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgI2lmZGVmIFJUWF9DT0RF DQo+ID4gPiA+ID4gIGV4dGVybiB2b2lkIHJpc2N2X2V4cGFuZF9pbnRfc2NjIChydHgsIGVudW0g cnR4X2NvZGUsIHJ0eCwgcnR4LCBib29sDQo+ID4gKmludmVydF9wdHINCj4gPiA+ID0NCj4gPiA+ ID4gPiAwKTsNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5j YyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MNCj4gPiA+ID4gPiBpbmRleCA0MTAwYWJjOWRk MS4uMjNmMDg5NzRmMDcgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi5jYw0KPiA+ID4gPiA+ICsrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MNCj4gPiA+ ID4gPiBAQCAtMTA2NTcsNiArMTA2NTcsNTIgQEAgcmlzY3ZfdmVjdG9yX21vZGVfc3VwcG9ydGVk X2FueV90YXJnZXRfcA0KPiA+ID4gPiA+IChtYWNoaW5lX21vZGUpDQo+ID4gPiA+ID4gICAgcmV0 dXJuIHRydWU7DQo+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICsvKiBFbWl0IGlu c24gZm9yIHRoZSBzYXR1cmF0aW9uIGFkZHUsIGFrYSAoeCArIHkpIHwgLSAoKHggKyB5KSA8IHgp LiAgKi8NCj4gPiA+ID4gPiArdm9pZA0KPiA+ID4gPiA+ICtyaXNjdl9leHBhbmRfdXNfcGx1cyAo cnR4IGRlc3QsIHJ0eCB4LCBydHggeSkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIG1hY2hp bmVfbW9kZSBtb2RlID0gR0VUX01PREUgKGRlc3QpOw0KPiA+ID4gPiA+ICsgIHJ0eCBwbW9kZV9z dW0gPSBnZW5fcmVnX3J0eCAoUG1vZGUpOw0KPiA+ID4gPiA+ICsgIHJ0eCBwbW9kZV9sdCA9IGdl bl9yZWdfcnR4IChQbW9kZSk7DQo+ID4gPiA+ID4gKyAgcnR4IHBtb2RlX3ggPSBnZW5fbG93cGFy dCAoUG1vZGUsIHgpOw0KPiA+ID4gPiA+ICsgIHJ0eCBwbW9kZV95ID0gZ2VuX2xvd3BhcnQgKFBt b2RlLCB5KTsNCj4gPiA+ID4gPiArICBydHggcG1vZGVfZGVzdCA9IGdlbl9yZWdfcnR4IChQbW9k ZSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIC8qIFN0ZXAtMTogc3VtID0geCArIHkgICov DQo+ID4gPiA+ID4gKyAgaWYgKG1vZGUgPT0gU0ltb2RlICYmIG1vZGUgIT0gUG1vZGUpDQo+ID4g PiA+ID4gKyAgICB7IC8qIFRha2UgYWRkdyB0byBhdm9pZCB0aGUgc3VtIHRydW5jYXRlLiAgKi8N Cj4gPiA+ID4gPiArICAgICAgcnR4IHNpbW9kZV9zdW0gPSBnZW5fcmVnX3J0eCAoU0ltb2RlKTsN Cj4gPiA+ID4gPiArICAgICAgcmlzY3ZfZW1pdF9iaW5hcnkgKFBMVVMsIHNpbW9kZV9zdW0sIHgs IHkpOw0KPiA+ID4gPiA+ICsgICAgICBlbWl0X21vdmVfaW5zbiAocG1vZGVfc3VtLCBnZW5fbG93 cGFydCAoUG1vZGUsIHNpbW9kZV9zdW0pKTsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiAr ICBlbHNlDQo+ID4gPiA+ID4gKyAgICByaXNjdl9lbWl0X2JpbmFyeSAoUExVUywgcG1vZGVfc3Vt LCBwbW9kZV94LCBwbW9kZV95KTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgLyogU3RlcC0x LjE6IHRydW5jYXRlIHN1bSBmb3IgSEkgYW5kIFFJIGFzIHdlIGhhdmUgbm8gaW5zbiBmb3IgYWRk IFFJL0hJLg0KPiA+ICovDQo+ID4gPiA+ID4gKyAgaWYgKG1vZGUgPT0gSEltb2RlIHx8IG1vZGUg PT0gUUltb2RlKQ0KPiA+ID4gPiA+ICsgICAgew0KPiA+ID4gPiA+ICsgICAgICBpbnQgbW9kZV9i aXRzID0gR0VUX01PREVfQklUU0laRSAobW9kZSkudG9fY29uc3RhbnQgKCk7DQo+ID4gPiA+ID4g KyAgICAgIGludCBzaGlmdF9iaXRzID0gR0VUX01PREVfQklUU0laRSAoUG1vZGUpIC0gbW9kZV9i aXRzOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgZ2NjX2Fzc2VydCAoc2hpZnRfYml0 cyA+IDApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgcmlzY3ZfZW1pdF9iaW5hcnkg KEFTSElGVCwgcG1vZGVfc3VtLCBwbW9kZV9zdW0sIEdFTl9JTlQNCj4gPiA+IChzaGlmdF9iaXRz KSk7DQo+ID4gPiA+ID4gKyAgICAgIHJpc2N2X2VtaXRfYmluYXJ5IChMU0hJRlRSVCwgcG1vZGVf c3VtLCBwbW9kZV9zdW0sIEdFTl9JTlQNCj4gPiA+ID4gPiAoc2hpZnRfYml0cykpOw0KPiA+ID4g PiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAvKiBTdGVwLTI6IGx0ID0gc3Vt IDwgeCAgKi8NCj4gPiA+ID4gPiArICByaXNjdl9lbWl0X2JpbmFyeSAoTFRVLCBwbW9kZV9sdCwg cG1vZGVfc3VtLCBwbW9kZV94KTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgLyogU3RlcC0z OiBsdCA9IC1sdCAgKi8NCj4gPiA+ID4gPiArICByaXNjdl9lbWl0X3VuYXJ5IChORUcsIHBtb2Rl X2x0LCBwbW9kZV9sdCk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIC8qIFN0ZXAtNDogcG1v ZGVfZGVzdCA9IHN1bSB8IGx0ICAqLw0KPiA+ID4gPiA+ICsgIHJpc2N2X2VtaXRfYmluYXJ5IChJ T1IsIHBtb2RlX2Rlc3QsIHBtb2RlX2x0LCBwbW9kZV9zdW0pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICAvKiBTdGVwLTU6IGRlc3QgPSBwbW9kZV9kZXN0ICovDQo+ID4gPiA+ID4gKyAgZW1p dF9tb3ZlX2luc24gKGRlc3QsIGdlbl9sb3dwYXJ0IChtb2RlLCBwbW9kZV9kZXN0KSk7DQo+ID4g PiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gIC8qIEluaXRpYWxpemUgdGhlIEdDQyB0 YXJnZXQgc3RydWN0dXJlLiAgKi8NCj4gPiA+ID4gPiAgI3VuZGVmIFRBUkdFVF9BU01fQUxJR05F RF9ISV9PUA0KPiA+ID4gPiA+ICAjZGVmaW5lIFRBUkdFVF9BU01fQUxJR05FRF9ISV9PUCAiXHQu aGFsZlx0Ig0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1k IGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZA0KPiA+ID4gPiA+IGluZGV4IDNmN2EwMjNkOTQx Li5lYWE5ODY3MDIzYyAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2Lm1kDQo+ID4gPiA+ID4gKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZA0KPiA+ID4g PiA+IEBAIC0zODQxLDYgKzM4NDEsMTcgQEAgKGRlZmluZV9pbnNuICIqbGFyZ2VfbG9hZF9hZGRy ZXNzIg0KPiA+ID4gPiA+ICAgIFsoc2V0X2F0dHIgInR5cGUiICJsb2FkIikNCj4gPiA+ID4gPiAg ICAgKHNldCAoYXR0ciAibGVuZ3RoIikgKGNvbnN0X2ludCA4KSldKQ0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gKyhkZWZpbmVfZXhwYW5kICJ1c19wbHVzPG1vZGU+MyINCj4gPiA+ID4gPiArICBbKG1h dGNoX29wZXJhbmQ6QU5ZSSAgIDAgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiA+ID4gPiA+ICsgICAo bWF0Y2hfb3BlcmFuZDpBTllJICAgMSAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ID4gPiA+ID4gKyAg IChtYXRjaF9vcGVyYW5kOkFOWUkgICAyICJyZWdpc3Rlcl9vcGVyYW5kIildDQo+ID4gPiA+ID4g KyAgIiINCj4gPiA+ID4gPiArICB7DQo+ID4gPiA+ID4gKyAgICByaXNjdl9leHBhbmRfdXNfcGx1 cyAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7DQo+ID4gPiA+ID4gKyAg ICBET05FOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArKQ0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiAgKGluY2x1ZGUgImJpdG1hbmlwLm1kIikNCj4gPiA+ID4gPiAgKGluY2x1ZGUgImNyeXB0 by5tZCIpDQo+ID4gPiA+ID4gIChpbmNsdWRlICJzeW5jLm1kIikNCj4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZ2NjL2ludGVybmFsLWZuLmNjIGIvZ2NjL2ludGVybmFsLWZuLmNjDQo+ID4gPiA+ID4g aW5kZXggYTA3ZjI1ZjNhZWUuLmE3MzQxYTU3ZmZhIDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2dj Yy9pbnRlcm5hbC1mbi5jYw0KPiA+ID4gPiA+ICsrKyBiL2djYy9pbnRlcm5hbC1mbi5jYw0KPiA+ ID4gPiA+IEBAIC01MTc3LDMgKzUxNzcsMjkgQEAgZXhwYW5kX1BPUENPVU5UIChpbnRlcm5hbF9m biBmbiwgZ2NhbGwgKnN0bXQpDQo+ID4gPiA+ID4gICAgICAgIGVtaXRfbW92ZV9pbnNuIChwbGhz LCBjbXApOw0KPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICt2b2lkDQo+ID4gPiA+ID4gK2V4cGFuZF9VU19QTFVTIChpbnRlcm5hbF9mbiBmbiwg Z2NhbGwgKnN0bXQpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICB0cmVlIGxocyA9IGdpbXBs ZV9jYWxsX2xocyAoc3RtdCk7DQo+ID4gPiA+ID4gKyAgdHJlZSByaHNfMCA9IGdpbXBsZV9jYWxs X2FyZyAoc3RtdCwgMCk7DQo+ID4gPiA+ID4gKyAgdHJlZSByaHNfMSA9IGdpbXBsZV9jYWxsX2Fy ZyAoc3RtdCwgMSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGRvX3BlbmRpbmdfc3RhY2tf YWRqdXN0ICgpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBydHggdGFyZ2V0ID0gZXhwYW5k X2V4cHIgKGxocywgTlVMTF9SVFgsIFZPSURtb2RlLCBFWFBBTkRfV1JJVEUpOw0KPiA+ID4gPiA+ ICsgIHJ0eCBvcF8wID0gZXhwYW5kX25vcm1hbCAocmhzXzApOw0KPiA+ID4gPiA+ICsgIHJ0eCBv cF8xID0gZXhwYW5kX25vcm1hbCAocmhzXzEpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBj bGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbM107DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGNy ZWF0ZV9vdXRwdXRfb3BlcmFuZCAoJm9wc1swXSwgdGFyZ2V0LCBUWVBFX01PREUgKFRSRUVfVFlQ RSAobGhzKSkpOw0KPiA+ID4gPiA+ICsgIGNyZWF0ZV9vdXRwdXRfb3BlcmFuZCAoJm9wc1sxXSwg b3BfMCwgVFlQRV9NT0RFIChUUkVFX1RZUEUNCj4gPiAocmhzXzApKSk7DQo+ID4gPiA+ID4gKyAg Y3JlYXRlX291dHB1dF9vcGVyYW5kICgmb3BzWzJdLCBvcF8xLCBUWVBFX01PREUgKFRSRUVfVFlQ RQ0KPiA+IChyaHNfMSkpKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaW5zbl9jb2RlIGNv ZGUgPSBvcHRhYl9oYW5kbGVyICh1c19wbHVzX29wdGFiLCBUWVBFX01PREUgKFRSRUVfVFlQRQ0K PiA+ID4gPiA+IChyaHNfMCkpKTsNCj4gPiA+ID4gPiArICBleHBhbmRfaW5zbiAoY29kZSwgMywg b3BzKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKCFydHhfZXF1YWxfcCAodGFyZ2V0 LCBvcHNbMF0udmFsdWUpKQ0KPiA+ID4gPiA+ICsgICAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwg b3BzWzBdLnZhbHVlKTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPg0KPiA+ID4gPiBUaGlzIGNhbiBi ZSBzaW1wbGlmaWVkIGJ5IGNhbGxpbmcgZXhwYW5kX2JpbmFyeV9vcHRhYl9mbiBpbnN0ZWFkLiBT ZWUgbXkNCj4gPiA+IHRlbXBsYXRlDQo+ID4gPiA+DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2dj Yy9pbnRlcm5hbC1mbi5kZWYgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ID4gPiA+ID4gaW5kZXgg YzE0ZDMwMzY1YzEuLmIxZDdiNWEwMzA3IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2djYy9pbnRl cm5hbC1mbi5kZWYNCj4gPiA+ID4gPiArKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ID4gPiA+ ID4gQEAgLTQ0Nyw2ICs0NDcsOSBAQCBERUZfSU5URVJOQUxfSU5UX0ZOIChGRlMsIEVDRl9DT05T VCB8DQo+ID4gPiA+ID4gRUNGX05PVEhST1csIGZmcywgdW5hcnkpDQo+ID4gPiA+ID4gIERFRl9J TlRFUk5BTF9JTlRfRk4gKFBBUklUWSwgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csIHBhcml0eSwN Cj4gPiB1bmFyeSkNCj4gPiA+ID4gPiAgREVGX0lOVEVSTkFMX0lOVF9FWFRfRk4gKFBPUENPVU5U LCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywNCj4gPiA+ID4gPiBwb3Bjb3VudCwgdW5hcnkpDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiArLyogQmluYXJ5IGludGVnZXIgb3BzLiAgKi8NCj4gPiA+ID4g PiArREVGX0lOVEVSTkFMX0lOVF9FWFRfRk4gKFVTX1BMVVMsIEVDRl9DT05TVCB8IEVDRl9OT1RI Uk9XLA0KPiA+ID4gdXNfcGx1cywNCj4gPiA+ID4gPiBiaW5hcnkpDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICBERUZfSU5URVJOQUxfRk4gKEdPTVBfVEFSR0VUX1JFViwgRUNGX05PVk9QUyB8IEVD Rl9MRUFGIHwNCj4gPiA+ID4gPiBFQ0ZfTk9USFJPVywgTlVMTCkNCj4gPiA+ID4gPiAgREVGX0lO VEVSTkFMX0ZOIChHT01QX1VTRV9TSU1ULCBFQ0ZfTk9WT1BTIHwgRUNGX0xFQUYgfA0KPiA+ID4g PiA+IEVDRl9OT1RIUk9XLCBOVUxMKQ0KPiA+ID4gPiA+ICBERUZfSU5URVJOQUxfRk4gKEdPTVBf U0lNVF9FTlRFUiwgRUNGX0xFQUYgfCBFQ0ZfTk9USFJPVywNCj4gPiBOVUxMKQ0KPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS9nY2MvaW50ZXJuYWwtZm4uaCBiL2djYy9pbnRlcm5hbC1mbi5oDQo+ID4g PiA+ID4gaW5kZXggYmNjZWUxYzNlMDkuLjQ2ZTQwNGI0YTQ5IDEwMDY0NA0KPiA+ID4gPiA+IC0t LSBhL2djYy9pbnRlcm5hbC1mbi5oDQo+ID4gPiA+ID4gKysrIGIvZ2NjL2ludGVybmFsLWZuLmgN Cj4gPiA+ID4gPiBAQCAtMjYzLDYgKzI2Myw3IEBAIGV4dGVybiB2b2lkIGV4cGFuZF9ESVZNT0RC SVRJTlQgKGludGVybmFsX2ZuLA0KPiA+IGdjYWxsDQo+ID4gPiAqKTsNCj4gPiA+ID4gPiAgZXh0 ZXJuIHZvaWQgZXhwYW5kX0ZMT0FUVE9CSVRJTlQgKGludGVybmFsX2ZuLCBnY2FsbCAqKTsNCj4g PiA+ID4gPiAgZXh0ZXJuIHZvaWQgZXhwYW5kX0JJVElOVFRPRkxPQVQgKGludGVybmFsX2ZuLCBn Y2FsbCAqKTsNCj4gPiA+ID4gPiAgZXh0ZXJuIHZvaWQgZXhwYW5kX1BPUENPVU5UIChpbnRlcm5h bF9mbiwgZ2NhbGwgKik7DQo+ID4gPiA+ID4gK2V4dGVybiB2b2lkIGV4cGFuZF9VU19QTFVTIChp bnRlcm5hbF9mbiwgZ2NhbGwgKik7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgZXh0ZXJuIGJvb2wg dmVjdG9yaXplZF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoaW50ZXJuYWxfZm4sIHRyZWUpOw0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRj aC5wZA0KPiA+ID4gPiA+IGluZGV4IGM1YjY1NDBmOTM5Li5mNDVmZDU4YWQyMyAxMDA2NDQNCj4g PiA+ID4gPiAtLS0gYS9nY2MvbWF0Y2gucGQNCj4gPiA+ID4gPiArKysgYi9nY2MvbWF0Y2gucGQN Cj4gPiA+ID4gPiBAQCAtMTAyNjUsMyArMTAyNjUsMjAgQEAgYW5kLA0KPiA+ID4gPiA+ICAgICAg ICB9DQo+ID4gPiA+ID4gICAgICAgIChpZiAoZnVsbF9wZXJtX3ApDQo+ID4gPiA+ID4gICAgICAg KHZlY19wZXJtIChvcEAzIEAwIEAxKSBAMyBAMikpKSkpKQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArI2lmIEdJTVBMRQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyogVW5zaWduZWQgc2F0dXJh dGlvbiBhZGQsIGFrYToNCj4gPiA+ID4gPiArICAgU0FUX0FERFUgPSAoWCArIFkpIHwgLSAoKFgg KyBZKSA8IFgpIG9yDQo+ID4gPiA+ID4gKyAgIFNBVF9BRERVID0gKFggKyBZKSB8IC0gKChYICsg WSkgPCBZKS4gICovDQo+ID4gPiA+ID4gKyhzaW1wbGlmeQ0KPiA+ID4gPiA+ICsgKGJpdF9pb3I6 YyAocGx1czpjQDIgQDAgQDEpIChuZWdhdGUgKGNvbnZlcnQgKGx0IEAyIEAwKSkpKQ0KPiA+ID4g PiA+ICsgICAoaWYgKG9wdGltaXplDQo+ID4gPiA+ID4gKyAgICAgJiYgSU5URUdSQUxfVFlQRV9Q ICh0eXBlKQ0KPiA+ID4gPiA+ICsgICAgICYmIFRZUEVfVU5TSUdORUQgKFRSRUVfVFlQRSAoQDAp KQ0KPiA+ID4gPiA+ICsgICAgICYmIHR5cGVzX21hdGNoICh0eXBlLCBUUkVFX1RZUEUgKEAwKSkN Cj4gPiA+ID4gPiArICAgICAmJiB0eXBlc19tYXRjaCAodHlwZSwgVFJFRV9UWVBFIChAMSkpDQo+ ID4gPiA+ID4gKyAgICAgJiYgZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChJRk5fVVNf UExVUywgdHlwZSwNCj4gPiA+ID4gPiBPUFRJTUlaRV9GT1JfQk9USCkpDQo+ID4gPiA+ID4gKyAg IChJRk5fVVNfUExVUyBAMCBAMSkpKQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2VuZGlmDQo+ ID4gPiA+DQo+ID4gPiA+IFdpdGggdGhlIHZlcnNpb24gYWJvdmUgeW91IGNhbiBkcm9wIHRoZSAj aWYgR0lNUExFIGFuZCB0aGUNCj4gPiA+ID4gPiArICAgICAmJiBkaXJlY3RfaW50ZXJuYWxfZm5f c3VwcG9ydGVkX3AgKElGTl9VU19QTFVTLCB0eXBlLA0KPiA+ID4gPg0KPiA+ID4gPiBDaGVjay4N Cj4gPiA+ID4NCj4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiBUYW1hcg0KPiA+ID4gPg0KPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVmDQo+ID4gPiA+ ID4gaW5kZXggYWQxNGY5MzI4YjkuLjU4NTVjNGUwODM0IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBh L2djYy9vcHRhYnMuZGVmDQo+ID4gPiA+ID4gKysrIGIvZ2NjL29wdGFicy5kZWYNCj4gPiA+ID4g PiBAQCAtMTc5LDYgKzE3OSw4IEBAIE9QVEFCX05MKGNscnNiX29wdGFiLCAiY2xyc2IkYTIiLCBD TFJTQiwgImNscnNiIiwNCj4gPiAnMicsDQo+ID4gPiA+ID4gZ2VuX2ludF9saWJmdW5jKQ0KPiA+ ID4gPiA+ICBPUFRBQl9OTChwb3Bjb3VudF9vcHRhYiwgInBvcGNvdW50JGEyIiwgUE9QQ09VTlQs ICJwb3Bjb3VudCIsICcyJywNCj4gPiA+ID4gPiBnZW5faW50X2xpYmZ1bmMpDQo+ID4gPiA+ID4g IE9QVEFCX05MKHBhcml0eV9vcHRhYiwgInBhcml0eSRhMiIsIFBBUklUWSwgInBhcml0eSIsICcy JywgZ2VuX2ludF9saWJmdW5jKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gK09QVEFCX05MKHVzX3Bs dXNfb3B0YWIsICJ1c19wbHVzJGEzIiwgVVNfUExVUywgInVzX3BsdXMiLCAnMycsDQo+ID4gPiA+ ID4gZ2VuX2ludF9saWJmdW5jKQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgLyogQ29tcGFyaXNv biBsaWJjYWxscyBmb3IgaW50ZWdlcnMgTVVTVCBjb21lIGluIHBhaXJzLCBzaWduZWQvdW5zaWdu ZWQuICAqLw0KPiA+ID4gPiA+ICBPUFRBQl9OTChjbXBfb3B0YWIsIE5VTEwsIFVOS05PV04sICJj bXAiLCAnMicsDQo+ID4gPiBnZW5faW50X2ZwX2ZpeGVkX2xpYmZ1bmMpDQo+ID4gPiA+ID4gIE9Q VEFCX05MKHVjbXBfb3B0YWIsIE5VTEwsIFVOS05PV04sICJ1Y21wIiwgJzInLCBnZW5faW50X2xp YmZ1bmMpDQo+ID4gPiA+ID4gLS0NCj4gPiA+ID4gPiAyLjM0LjENCj4gPiA+ID4NCg==