From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web12.11572.1636696082708932983 for ; Thu, 11 Nov 2021 21:48:03 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=aXXOLUZ4; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: dandan.bi@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10165"; a="232922440" X-IronPort-AV: E=Sophos;i="5.87,228,1631602800"; d="scan'208";a="232922440" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2021 21:48:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,228,1631602800"; d="scan'208";a="502438260" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga007.fm.intel.com with ESMTP; 11 Nov 2021 21:47:57 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) 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.2242.12; Thu, 11 Nov 2021 21:47:57 -0800 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 11 Nov 2021 21:47:56 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) 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.2242.12 via Frontend Transport; Thu, 11 Nov 2021 21:47:56 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 11 Nov 2021 21:47:56 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A9hMcR7q0vVq2e6vUV5+NpN4xa+f3sjh+qy71AGC94WMYlMxCmcdDHfvWd9IWMkiQ6jEb1QjRF5RR/0fUsztLCaBrASleDm+TlQP1OP/CbimhdpGLchPJx9thzK0L+xDKwS9rK5GmoTSpPTZXxxYXFnwzEp9t6MMKNHFnjdkG+qzV5hnrcFsNrr6qzW/2MF0RWj8KdXEGHnrJYpxE4wlJ/KXuHLfWwVkm07FLfbNANsrXHVCewJDzdKT9Ph+mMIvMJ/KI5rQSTwOsDUyh4KJOF0iDiMkeLRcJ270uJf9oJv7grI7Qw1ym/Xo3MS0uvZ301QSS0+1lILrMjicFTjKHQ== 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=SqYlsXqcYqPI/eKyzFGigRBR26S/W5oAc7K8vnLND/U=; b=SPcMgcC7KmZLnvom+aJTFEc7YWrRE3UU3xT1GsMm2ZgHW8DIOoskwE1pCXjuLTBN54eibTvkh3qhUCKRhcw9Hme/eCZHoVuhFHvYHmkyOnQzr8F93lk9kdP//LRpDSXhcnn9DGoVXGHwZRvRQtOqBv9oacyb3t/Ka0FV+1x91x/f16h11e06VSwYRFnD/K44odZBulftSNPE09I/GSPFgg9zZ7jw5a/nFIpXxawIkEzqykptfDgAybzUjyuLs818kF5qVjtHKHi8paEkJlE5FkjBC9A9KF0v+ycus9QC79Y9NG+1gDJTRjExW4ywVK0hGTV2zph/BvnpB7+ic2Rt2g== 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=SqYlsXqcYqPI/eKyzFGigRBR26S/W5oAc7K8vnLND/U=; b=aXXOLUZ4nDBZ4tEZr1+9eVflKQLz+ni1Q+wXCa8wdHKGGZVMfxoYszV9P8Rx8Qo9EGLU9cuGnhLv8Ja1mNnHwwhiSdf4rm1NxMtFsn0mGzDmeqMkfQvrP5rJ3Y1+lZpaDPh18YJas3Cmi/CBCmBDGHuBzNjHH6hFuL3pyeVF8NE= Received: from BL1PR11MB5446.namprd11.prod.outlook.com (2603:10b6:208:31e::23) by MN2PR11MB3760.namprd11.prod.outlook.com (2603:10b6:208:fa::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Fri, 12 Nov 2021 05:47:54 +0000 Received: from BL1PR11MB5446.namprd11.prod.outlook.com ([fe80::6044:1a7e:45e1:d3e8]) by BL1PR11MB5446.namprd11.prod.outlook.com ([fe80::6044:1a7e:45e1:d3e8%5]) with mapi id 15.20.4669.016; Fri, 12 Nov 2021 05:47:54 +0000 From: "Dandan Bi" To: gaoliming , "devel@edk2.groups.io" CC: "Wu, Hao A" , "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/FPDT: Lock boot performance table address variable at EndOfDxe Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/FPDT: Lock boot performance table address variable at EndOfDxe Thread-Index: AQHXvlL53NDQd9ww9EGSnE0Ca9I136v/SpAAgABKDYA= Date: Fri, 12 Nov 2021 05:47:54 +0000 Message-ID: References: <20211011034852.12032-1-dandan.bi@intel.com> <01a201d7d763$9c136590$d43a30b0$@byosoft.com.cn> In-Reply-To: <01a201d7d763$9c136590$d43a30b0$@byosoft.com.cn> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: byosoft.com.cn; dkim=none (message not signed) header.d=none;byosoft.com.cn; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bce73e7a-7bd4-41f2-7789-08d9a59ff8fd x-ms-traffictypediagnostic: MN2PR11MB3760: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5nfrHhirD1+Z3BqAFrlxjuIapni1hUGBm9JOkoYF4MYGwzHMCMbtvjtD5l4hoG/mvAc2OoGAShG3o7HxxwQnRVgMF2Ou9zDjeB0JVVPH6JW0Sip4tPQZgOJjLd8vXcMO7XDg7AnE1T1BJOiv4clTYcjjnviXS7jrGSZDsdW0tr7uOGpfKLwcV9ri4XVIjrnQaeDZ+FR3H5BaPVn1V8NDUvHkuPEJg5eQQ5wJs/z0aSK5Q4P9oMQDAOfZqtwzS1/htlXen6SDNBKc3IyV+2cIEcbjVIbI7mXi0g4BI9lVkE+zk0QaLrq24OAXFqNGYiyFJG5++6ktW7XitIUnLngi3H2JnEvcp1eBSrCOmcKKmQrTbjnrs91xXcdr/OZCyADK/rrjkJl5IMY/BAgv15mM329wPIGyjcATxrc6Rz68jw4k+VLDgHpydRRpsT2HYf8SQJVE9+dKPZXmXhTt1gm45SbzRarNzBehaNt1dbdJ/txqAUrsM8hnQW+7JmP3vaC5p5TJ0BGonsEtjAXw+k9wxtNvp/wMSesSul4gyMFvgRJnoROFJxz1aOyOjsOygTq74KYw51jEcZILH3zE6JM7lyll2J6VshrEyi81ZOtvGTCvPbv9LmzLiIUYRKW0JP6OUuoBwF/U63H9T9qV37yIIwnFt0WgRI3hbCYHgs8D17tkNsPpFQtuC6TiPQnl6BGPgEAuB5JhO/kHhSJZjbPn/sIuKkLrUd2PpKNCr73JdnhTFc+ZOxXsG8IQiNW0notMXq2VowBxwrZm4YY9oQZx9MpaWYYE+tluCYEK8uvZsIVXmlHoV9xBsXfnBOxrc3K0dyKkKEQj0T264uvf8fXW5Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR11MB5446.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(366004)(84040400005)(316002)(7696005)(38070700005)(110136005)(8676002)(86362001)(54906003)(64756008)(66556008)(66476007)(76116006)(6506007)(53546011)(82960400001)(19627235002)(5660300002)(45080400002)(52536014)(66946007)(33656002)(9686003)(55016002)(66446008)(508600001)(30864003)(2906002)(8936002)(38100700002)(122000001)(107886003)(966005)(26005)(4326008)(83380400001)(71200400001)(186003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UERCVmNoRy9aMkZyWGM5aHEvMEZwT2Z3ZWJQVU1DOG9aWFg3ZTZFYVBmTnRC?= =?utf-8?B?ZzdJclVaRjVpeFJBeFZUQVVteTJINkFwUGlZeXBoUWxtUEpyWElrWUhGQnFs?= =?utf-8?B?MWx4Q3ppVFpldWQ5aXFyTWRRL2JKSW9zTmpmL3g1djAwcElnNzJObk80UmlV?= =?utf-8?B?OXZHODN5MW9PSnhsQU1NamtKYmlZaGJaeE05QlBYMTM1SWxwRzVBTWFSOXln?= =?utf-8?B?aEhGaHRPVnpqYVdsa0V6Q3NqN2htUGdtaWlFMnp4Rkc0UHZnUjFHeDJIRXV5?= =?utf-8?B?L2h4ZnEzL2x0NzNleWdMdUl3R3hpWXhJbEM4dHkwNjB3Y0UxTzliRHBjVTJ3?= =?utf-8?B?RVJkQ3lJcHE1d1ZQMFRLUjA1bDMrNTVBakV6WExveGlUR1M1TVVYSlVkZGxT?= =?utf-8?B?dDExMmcrNmkzRmFYTGlIMmZIWXUwbk5mU0ZsNjh1VldrRHd3Y3kxUzZselZj?= =?utf-8?B?YkFEWTV1dWZWRWZJRXBSeXRCL2g5YnlueVNKREtTRjdUaHBmUTlXRENUanFp?= =?utf-8?B?aWZZcjVRQ21KUUdqZmdzeWtTc3MzUzVxbzhlVzQ3M3VoTEJnT3c4WCtnQVZG?= =?utf-8?B?RnpRaXIxa3k2citKYmlETy9TZVNpOEUybWFUTS9wdnczUU43V2RzMXo3eXlZ?= =?utf-8?B?WCtTRmZUeC9zdENNUyt6Ny92djA5d1NsUTBiN21tS1dzK2lkdlkyZXpudGJ1?= =?utf-8?B?SjV5aG44OFkzQ2Y3VzNZSUhqTEZ3OVNWOFAvVjRhZHhIUmwzK242NGFXVFdB?= =?utf-8?B?YnplbWJwKzd3Rjl3MjZ6RXVPQkpTc3Bsa3kxK3ZSSmZ6eENRUHJZVCtoYkxS?= =?utf-8?B?VGgvZTVmWHR2WkFOWG1lUVc2MFByckRwdHNIWU90Yi9KNHBQa1FUY1VWRVhM?= =?utf-8?B?MWp2RU54TUtIdEU4N21FbTBnZUlPMEg5RHkzeUVVSXVIeEhrVWJzMnowZmkz?= =?utf-8?B?Q2k3UnQwdVZRV0l0QnZiaUtVRU85TGFTeUNhcmhDdFZrVjhFVGpFMzlwZzY1?= =?utf-8?B?bXlscHF5Smw5Qk5MbUd2VUF0Nm04eVpZc1lWS3Vpa2EvNVE0cFBqSTYzQTl5?= =?utf-8?B?ZVF1MUsvaXFEWCtlNE1RMWkvOGFzakJkbTlJUThUSzB3WWRBSFdZMSs2RWww?= =?utf-8?B?VlNHRzlESXJSZThseXNROW1pWDRkMEw2cE51WjcvKzZnZTlNOGVSOFFmS01S?= =?utf-8?B?S0N3NzVJK3ZvWFE3djFNV1QxL1ZMdkdPVTRJbHJucVk1YjFSU0RuaWFRdllN?= =?utf-8?B?NXArcmNpSGNoc3UyeU1kbUFSZWRmai9mMFl3eC9sM01xRjR4V2RkanJLUXJT?= =?utf-8?B?Q1ZWKzNqVVl0c1VMRVpNS1lVM0R6SWVndnRYbEVWM2ZmbHQ1UDZFa0ZFb0Zy?= =?utf-8?B?UDM3Mi9rZ3F5UE5VNVNUdk95MkxUTTF1aWF0aFpuUFFaWFVHajVyVTM5WW5F?= =?utf-8?B?bDhkb1ZLbm53K2JYUkczcFhWNndldC9tMWlreDFFZElXem12TlhOdlN3bFY1?= =?utf-8?B?S0FaSXFvQ1p4MjVDK2FaY24wOWRDV20vcE9jUUN5ZWxTTGdaVUdJV0REeHlQ?= =?utf-8?B?Ry9NbVEzbEc4WGJlaHB1VXl5VTMwUm00Nm5xR3J5djVoQXZzVHYzSmdESFBX?= =?utf-8?B?MEV1b1lLajI5NzNBdjBMSnZlSE5qYm5HaTBmUjNCWkRKN0VmZTE3OVlDTkdF?= =?utf-8?B?MTN5M0VQTlo3N0hqQkhIVTh6MXp5MWtZS3o0anNXMEVQV0szMjg1a3kyVFhL?= =?utf-8?B?NTR4bEQrQVdCaWZZaVlJSFJ3WG5ySG9OUTNPQS9iMmQ3aVBsQ0t1VnlRZXVL?= =?utf-8?B?Y1pkNXR1ZFM0ZEVQMlRKQ2hBbndHZ1JzMlRSYVZ2SktPWWtOR0Z3OU9JQklM?= =?utf-8?B?MUVkWUIyQkFkRi9TWStFT0swWEtaUlY0dVU4SVNIcTVZcXNVNVpjbytjcytI?= =?utf-8?B?VElwbEMwdk8vSDlFTkFSd0d6UUgybDlOWnFjRVVjSDh1bW9aZnlkZytYOXpy?= =?utf-8?B?ZDhpdmhNakd4eDhsQUhTWDVuN0RTSmxJcklyOFFpZlB1eE92VzF4cHZ3UWxV?= =?utf-8?B?NjlTdHBBTFhNajlOZGZxTXg4ZUNHZFlYSDJtZU85RkwyUHk2KzRSWnJmRDNx?= =?utf-8?B?Q1hWTzRBZE9Ya1RKU0xNbVFzV2Ztc0xRTlk4cHY3R0VQS0dYa2JSR0FJRXZs?= =?utf-8?B?WlE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL1PR11MB5446.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bce73e7a-7bd4-41f2-7789-08d9a59ff8fd X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Nov 2021 05:47:54.3537 (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: B7hRaoSktFgQuURSdSG7RuF4z4YLSQqXSGWM0QDk1qiyHsdVT/xWIfIdzqv07MH6WfxxQ0USbQu84RAYnjcPUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3760 Return-Path: dandan.bi@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U3VyZS4gUHVsbCByZXF1ZXN0IGlzIGNyZWF0ZWQuIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2Nv cmUvZWRrMi9wdWxsLzIyMDANCg0KDQpUaGFua3MsDQpEYW5kYW4NCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogZ2FvbGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+ DQo+IFNlbnQ6IEZyaWRheSwgTm92ZW1iZXIgMTIsIDIwMjEgOToyMSBBTQ0KPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IEJpLCBEYW5kYW4gPGRhbmRhbi5iaUBpbnRlbC5jb20+DQo+IENjOiBX dSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdA aW50ZWwuY29tPg0KPiBTdWJqZWN0OiDlm57lpI06IFtlZGsyLWRldmVsXSBbUEFUQ0hdIE1kZU1v ZHVsZVBrZy9GUERUOiBMb2NrIGJvb3QNCj4gcGVyZm9ybWFuY2UgdGFibGUgYWRkcmVzcyB2YXJp YWJsZSBhdCBFbmRPZkR4ZQ0KPiANCj4gRGFuZGFuIGFuZCBXdUhhbzoNCj4gICBUaGlzIHBhdGNo IGhhcyByZXZpZXdlZC1ieSBiZWZvcmUgc29mdCBmZWF0dXJlIGZyZWV6ZS4gQ2FuIHlvdSBoZWxw IG1lcmdlDQo+IGl0Pw0KPiANCj4gVGhhbmtzDQo+IExpbWluZw0KPiA+IC0tLS0t6YKu5Lu25Y6f 5Lu2LS0tLS0NCj4gPiDlj5Hku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsy Lmdyb3Vwcy5pbz4g5Luj6KGoIERhbmRhbiBCaQ0KPiA+IOWPkemAgeaXtumXtDogMjAyMeW5tDEw 5pyIMTHml6UgMTE6NDkNCj4gPiDmlLbku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4g 5oqE6YCBOiBEYW5kYW4gQmkgPGRhbmRhbi5iaUBpbnRlbC5jb20+OyBMaW1pbmcgR2FvDQo+ID4g PGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEhhbyBBIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+ OyBKaWFuIEoNCj4gV2FuZw0KPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4g5Li76aKY OiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cvRlBEVDogTG9jayBib290IHBlcmZv cm1hbmNlDQo+ID4gdGFibGUgYWRkcmVzcyB2YXJpYWJsZSBhdCBFbmRPZkR4ZQ0KPiA+DQo+ID4g UkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTI5NTcN Cj4gPg0KPiA+IDEuIEFsbG9jYXRlIHBlcmZvcm1hbmNlIGRhdGEgdGFibGUgYXQgRW5kT2ZEeGUg YW5kIHRoZW4gbG9jayB0aGUgdmFyaWJsZQ0KPiA+ICAgIHdoaWNoIHN0b3JlIHRoZSB0YWJsZSBh ZGRyZXNzIGF0IEVuZE9mRHhlLg0KPiA+DQo+ID4gMi4gRW5sYXJnZSBQQ0QNCj4gPiBnRWZpTWRl TW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRXh0RnBkdEJvb3RSZWNvcmRQYWRTaXplDQo+ID4g ICAgZnJvbSAweDIwMDAwIHRvIDB4MzAwMDAgaW4gb3JkZXIgdG8gaG9sZCB0aGUgRGVsdGEgcGVy Zm9ybWFuY2UgZGF0YQ0KPiA+ICAgIGJldHdlZW4gRW5kT2ZEeGUgYW5kIFJlYWR5VG9Cb290Lg0K PiA+DQo+ID4gMy4gU01NIHBlcmZvcm1hbmNlIGRhdGEgaXMgY29sbGVjdGVkIGJ5IERYRSBtb2R1 bGVzIHRocm91Z2ggU01NDQo+ID4gY29tbXVuaWNhdGlvbg0KPiA+ICAgIGF0IFJlYWR5VG9Cb290 IGJlZm9yZS4NCj4gPiAgICBOb3cgdG8gZG8gU01NIGNvbW11bmljYXRpb24gdHdpY2UsIG9uZSBm b3IgYWxsb2NhdGluZyB0aGUNCj4gcGVyZm9ybWFuY2UNCj4gPiAgICBzaXplIGF0IEVuZE9mRHhl LCBhbm90aGVyIGlzIGF0IFJlYWR5VG9Cb290IHRvIGdldCBTTU0gcGVyZm9ybWFuY2UNCj4gPiBk YXRhLg0KPiA+DQo+ID4gNC4gTWFrZSBTbW1Db3JlUGVyZm9ybWFuY2VMaWIgcmF0aGVyIHRoYW4g RmlybXdhcmVQZXJmb3JtYW5jZVNtbQ0KPiB0bw0KPiA+IGNvbW11bmljYXRlDQo+ID4gICAgd2l0 aCBEeGVDb3JlUGVyZm9ybWFuY2VMaWIgZm9yIFNNTSBwZXJmb3JtYW5jZSBkYXRhIGFuZCBzaXpl Lg0KPiA+DQo+ID4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4g PiBDYzogSGFvIEEgV3UgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPiBDYzogSmlhbiBKIFdhbmcg PGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5kYW4gQmkgPGRh bmRhbi5iaUBpbnRlbC5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IEhhbyBBIFd1IDxoYW8uYS53dUBp bnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIC4uLi9EeGVDb3JlUGVyZm9ybWFuY2VMaWIuYyAgICAg ICAgICAgICAgICAgICB8IDEzMiArKysrKysrKysrKy0tLS0NCj4gPiAgLi4uL0R4ZUNvcmVQZXJm b3JtYW5jZUxpYi5pbmYgICAgICAgICAgICAgICAgIHwgICAzICstDQo+ID4gIC4uLi9TbW1Db3Jl UGVyZm9ybWFuY2VMaWIuYyAgICAgICAgICAgICAgICAgICB8IDE0Mg0KPiA+ICsrKysrKysrKysr KystLS0tDQo+ID4gIC4uLi9TbW1Db3JlUGVyZm9ybWFuY2VMaWIuaW5mICAgICAgICAgICAgICAg ICB8ICAgNSArLQ0KPiA+ICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYyAgICAgICAgICAg ICAgICAgfCAgIDQgKy0NCj4gPiAgLi4uL0Zpcm13YXJlUGVyZm9ybWFuY2VEeGUuYyAgICAgICAg ICAgICAgICAgIHwgIDkwICsrKysrKysrKy0tDQo+ID4gIC4uLi9GaXJtd2FyZVBlcmZvcm1hbmNl RHhlLmluZiAgICAgICAgICAgICAgICB8ICAgNiArLQ0KPiA+ICAuLi4vRmlybXdhcmVQZXJmb3Jt YW5jZUNvbW1vbi5jICAgICAgICAgICAgICAgfCAxNTAgKy0tLS0tLS0tLS0tLS0tLS0tDQo+ID4g IC4uLi9GaXJtd2FyZVBlcmZvcm1hbmNlQ29tbW9uLmggICAgICAgICAgICAgICB8ICAxNyArLQ0K PiA+ICAuLi4vRmlybXdhcmVQZXJmb3JtYW5jZVNtbS5pbmYgICAgICAgICAgICAgICAgfCAgIDQg Ky0NCj4gPiAgLi4uL0Zpcm13YXJlUGVyZm9ybWFuY2VTdGFuZGFsb25lTW0uYyAgICAgICAgIHwg IDIxICstLQ0KPiA+ICAuLi4vRmlybXdhcmVQZXJmb3JtYW5jZVN0YW5kYWxvbmVNbS5pbmYgICAg ICAgfCAgIDQgKy0NCj4gPiAgLi4uL0Zpcm13YXJlUGVyZm9ybWFuY2VUcmFkaXRpb25hbC5jICAg ICAgICAgIHwgIDIxICstLQ0KPiA+ICAxMyBmaWxlcyBjaGFuZ2VkLCAzMDYgaW5zZXJ0aW9ucygr KSwgMjkzIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvTWRlTW9k dWxlUGtnL0xpYnJhcnkvRHhlQ29yZVBlcmZvcm1hbmNlTGliL0R4ZUNvcmVQZXJmb3JtYW5jZUxp DQo+IGIuDQo+ID4gYw0KPiA+DQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ29yZVBlcmZv cm1hbmNlTGliL0R4ZUNvcmVQZXJmb3JtYW5jZUxpDQo+IGIuDQo+ID4gYw0KPiA+IGluZGV4IGQz NzhjNTlkZDkuLjUzMmIzZjhjOTAgMTAwNjQ0DQo+ID4gLS0tDQo+ID4NCj4gYS9NZGVNb2R1bGVQ a2cvTGlicmFyeS9EeGVDb3JlUGVyZm9ybWFuY2VMaWIvRHhlQ29yZVBlcmZvcm1hbmNlTGkNCj4g Yi4NCj4gPiBjDQo+ID4gKysrDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDb3Jl UGVyZm9ybWFuY2VMaWIvRHhlQ29yZVBlcmZvcm1hbmNlTGkNCj4gYi4NCj4gPiBjDQo+ID4gQEAg LTEwLDcgKzEwLDcgQEANCj4gPiAgICBUaGlzIGxpYnJhcnkgaXMgbWFpbmx5IHVzZWQgYnkgRHhl Q29yZSB0byBzdGFydCBwZXJmb3JtYW5jZSBsb2dnaW5nDQo+ID4gdG8gZW5zdXJlIHRoYXQNCj4g PiAgICBQZXJmb3JtYW5jZSBQcm90b2NvbCBpcyBpbnN0YWxsZWQgYXQgdGhlIHZlcnkgYmVnaW5u aW5nIG9mIERYRSBwaGFzZS4NCj4gPg0KPiA+IC1Db3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLjxCUj4NCj4gPiArQ29w eXJpZ2h0IChjKSAyMDA2IC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4g PiArcmVzZXJ2ZWQuPEJSPg0KPiA+ICAoQykgQ29weXJpZ2h0IDIwMTYgSGV3bGV0dCBQYWNrYXJk IEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiBAQCAtNjQsNyArNjQsNyBAQCBVSU5U MzIgIG1Mb2FkSW1hZ2VDb3VudCAgICAgICA9IDA7DQo+ID4gIFVJTlQzMiAgbVBlcmZvcm1hbmNl TGVuZ3RoICAgID0gMDsNCj4gPiAgVUlOVDMyICBtTWF4UGVyZm9ybWFuY2VMZW5ndGggPSAwOw0K PiA+ICBVSU5UMzIgIG1Cb290UmVjb3JkU2l6ZSAgICAgICA9IDA7DQo+ID4gLVVJTlQzMiAgbUJv b3RSZWNvcmRNYXhTaXplICAgID0gMDsNCj4gPiArVUlOVE4gICBtQm9vdFJlY29yZE1heFNpemUg ICAgPSAwOw0KPiA+ICBVSU5UMzIgIG1DYWNoZWRMZW5ndGggICAgICAgICA9IDA7DQo+ID4NCj4g PiAgQk9PTEVBTiBtRnBkdEJ1ZmZlcklzUmVwb3J0ZWQgPSBGQUxTRTsgQEAgLTIwNSwyNSArMjA1 LDI2IEBADQo+ID4gSXNLbm93bklEICggIH0NCj4gPg0KPiA+ICAvKioNCj4gPiAtICBBbGxvY2F0 ZSBidWZmZXIgZm9yIEJvb3QgUGVyZm9ybWFuY2UgdGFibGUuDQo+ID4gKyAgVGhpcyBpbnRlcm5h bCBmdW5jdGlvbiBkdW1wcyBhbGwgdGhlIFNNTSBwZXJmb3JtYW5jZSBkYXRhIGFuZCBzaXplLg0K PiA+DQo+ID4gLSAgQHJldHVybiBTdGF0dXMgY29kZS4NCj4gPiArICBAcGFyYW0gICAgU21tUGVy ZkRhdGEgICAgICAgIFNtbSBQZXJmb3JtYW5jZSBkYXRhLiBUaGUgYnVmZmVyDQo+ID4gY29udGFp biB0aGUgU01NIHBlcmYgZGF0YSBpcyBhbGxvY2F0ZWQgYnkgdGhpcyBmdW5jdGlvbiBhbmQgY2Fs bGVyDQo+ID4gbmVlZHMNCj4gdG8NCj4gPiBmcmVlIGl0Lg0KPiA+ICsgIEBwYXJhbSAgICBTbW1Q ZXJmRGF0YVNpemUgICAgU21tIFBlcmZvcm1hbmNlIGRhdGEgc2l6ZS4NCj4gPiArICBAcGFyYW0g ICAgU2tpcEdldFBlcmZEYXRhICAgIFNraXAgdG8gZ2V0IHBlcmZvcm1hbmNlIGRhdGEsIGp1c3Qg Z2V0DQo+ID4gdGhlIHNpemUuDQo+ID4NCj4gPiAgKiovDQo+ID4gLUVGSV9TVEFUVVMNCj4gPiAt QWxsb2NhdGVCb290UGVyZm9ybWFuY2VUYWJsZSAoDQo+ID4gK1ZPSUQNCj4gPiArSW50ZXJuYWxH ZXRTbW1QZXJmRGF0YSAoDQo+ID4gKyAgT1VUIFZPSUQgICAgICAqKlNtbVBlcmZEYXRhLA0KPiA+ ICsgIE9VVCBVSU5UTiAgICAgKlNtbVBlcmZEYXRhU2l6ZSwNCj4gPiArICBJTiAgQk9PTEVBTiAg IFNraXBHZXRQZXJmRGF0YQ0KPiA+ICAgICkNCj4gPiAgew0KPiA+ICAgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gLSAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNpemU7DQo+ID4gICAgVUlOVDgNCj4gPiAqU21tQm9v dFJlY29yZENvbW1CdWZmZXI7DQo+ID4gICAgRUZJX1NNTV9DT01NVU5JQ0FURV9IRUFERVINCj4g PiAqU21tQ29tbUJ1ZmZlckhlYWRlcjsNCj4gPiAgICBTTU1fQk9PVF9SRUNPUkRfQ09NTVVOSUNB VEUgICAgICAgICAgICAgKlNtbUNvbW1EYXRhOw0KPiA+ICAgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDb21tU2l6ZTsNCj4gPiAtICBVSU5UTg0KPiA+IEJvb3RQZXJm b3JtYW5jZURhdGFTaXplOw0KPiA+IC0gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqQm9vdFBlcmZvcm1hbmNlRGF0YTsNCj4gPiAgICBFRklfU01NX0NPTU1VTklDQVRJ T05fUFJPVE9DT0wgICAgICAgICAgKkNvbW11bmljYXRpb247DQo+ID4gLSAgRklSTVdBUkVfUEVS Rk9STUFOQ0VfVkFSSUFCTEUNCj4gPiBQZXJmb3JtYW5jZVZhcmlhYmxlOw0KPiA+ICAgIEVES0lJ X1BJX1NNTV9DT01NVU5JQ0FUSU9OX1JFR0lPTl9UQUJMRQ0KPiA+ICpTbW1Db21tUmVnaW9uVGFi bGU7DQo+ID4gICAgRUZJX01FTU9SWV9ERVNDUklQVE9SDQo+ID4gKlNtbUNvbW1NZW1SZWdpb247 DQo+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0K PiA+IEBAIC0yMzcsNyArMjM4LDYgQEAgQWxsb2NhdGVCb290UGVyZm9ybWFuY2VUYWJsZSAoDQo+ ID4gICAgU21tQm9vdFJlY29yZENvbW1CdWZmZXIgPSBOVUxMOw0KPiA+ICAgIFNtbUNvbW1EYXRh ICAgICAgICAgICAgID0gTlVMTDsNCj4gPiAgICBTbW1Cb290UmVjb3JkRGF0YSAgICAgICA9IE5V TEw7DQo+ID4gLSAgU21tQm9vdFJlY29yZERhdGFTaXplICAgPSAwOw0KPiA+ICAgIFJlc2VydmVk TWVtU2l6ZSAgICAgICAgID0gMDsNCj4gPiAgICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29s ICgmZ0VmaVNtbUNvbW11bmljYXRpb25Qcm90b2NvbEd1aWQsDQo+ID4gTlVMTCwgKFZPSUQgKiop ICZDb21tdW5pY2F0aW9uKTsNCj4gPiAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ IEBAIC0yODQsNiArMjg0LDEwIEBAIEFsbG9jYXRlQm9vdFBlcmZvcm1hbmNlVGFibGUgKA0KPiA+ ICAgICAgICAgIFN0YXR1cyA9IENvbW11bmljYXRpb24tPkNvbW11bmljYXRlIChDb21tdW5pY2F0 aW9uLA0KPiA+IFNtbUJvb3RSZWNvcmRDb21tQnVmZmVyLCAmQ29tbVNpemUpOw0KPiA+DQo+ID4g ICAgICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykgJiYgIUVGSV9FUlJPUg0KPiA+IChTbW1D b21tRGF0YS0+UmV0dXJuU3RhdHVzKSAmJiBTbW1Db21tRGF0YS0+Qm9vdFJlY29yZFNpemUgIT0N Cj4gMCkgew0KPiA+ICsgICAgICAgICAgaWYgKFNraXBHZXRQZXJmRGF0YSkgew0KPiA+ICsgICAg ICAgICAgICAqU21tUGVyZkRhdGFTaXplID0gU21tQ29tbURhdGEtPkJvb3RSZWNvcmRTaXplOw0K PiA+ICsgICAgICAgICAgICByZXR1cm47DQo+ID4gKyAgICAgICAgICB9DQo+ID4gICAgICAgICAg ICAvLw0KPiA+ICAgICAgICAgICAgLy8gR2V0IGFsbCBib290IHJlY29yZHMNCj4gPiAgICAgICAg ICAgIC8vDQo+ID4gQEAgLTMwNSwxOSArMzA5LDQ1IEBAIEFsbG9jYXRlQm9vdFBlcmZvcm1hbmNl VGFibGUgKA0KPiA+ICAgICAgICAgICAgICB9DQo+ID4gICAgICAgICAgICAgIFNtbUNvbW1EYXRh LT5Cb290UmVjb3JkT2Zmc2V0ID0NCj4gPiBTbW1Db21tRGF0YS0+Qm9vdFJlY29yZE9mZnNldCAr IFNtbUNvbW1EYXRhLT5Cb290UmVjb3JkU2l6ZTsNCj4gPiAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICpTbW1QZXJmRGF0YSAgICAgPSBTbW1Cb290UmVjb3JkRGF0YTsNCj4gPiArICAgICAg ICAgICpTbW1QZXJmRGF0YVNpemUgPSBTbW1Cb290UmVjb3JkRGF0YVNpemU7DQo+ID4gICAgICAg ICAgfQ0KPiA+ICAgICAgICB9DQo+ID4gICAgICB9DQo+ID4gICAgfQ0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBBbGxvY2F0ZSBidWZmZXIgZm9yIEJvb3QgUGVyZm9ybWFuY2UgdGFi bGUuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gU3RhdHVzIGNvZGUuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArRUZJX1NUQVRVUw0KPiA+ICtBbGxvY2F0ZUJvb3RQZXJmb3JtYW5jZVRhYmxlICgNCj4g PiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gPiArICBVSU5UTg0KPiA+IEJvb3RQZXJmb3JtYW5j ZURhdGFTaXplOw0KPiA+ICsgIFVJTlQ4DQo+ID4gKkJvb3RQZXJmb3JtYW5jZURhdGE7DQo+ID4g KyAgRklSTVdBUkVfUEVSRk9STUFOQ0VfVkFSSUFCTEUNCj4gPiBQZXJmb3JtYW5jZVZhcmlhYmxl Ow0KPiA+ICsgIFVJTlRODQo+ID4gU21tQm9vdFJlY29yZERhdGFTaXplOw0KPiA+ICsNCj4gPiAr ICBTbW1Cb290UmVjb3JkRGF0YVNpemUgPSAwOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8v IEdldCBTTU0gcGVyZm9ybWFuY2UgZGF0YSBzaXplIGF0IHRoZSBwb2ludCBvZiBFbmRPZkR4ZSBp biBvcmRlcg0KPiA+ICsgdG8NCj4gPiBhbGxvY2F0ZSB0aGUgYm9vdCBwZXJmb3JtYW5jZSB0YWJs ZS4NCj4gPiArICAvLyBXaWxsIEdldCBhbGwgdGhlIGRhdGEgYXQgUmVhZHlUb0Jvb3QuDQo+ID4g KyAgLy8NCj4gPiArICBJbnRlcm5hbEdldFNtbVBlcmZEYXRhIChOVUxMLCAmU21tQm9vdFJlY29y ZERhdGFTaXplLCBUUlVFKTsNCj4gPg0KPiA+ICAgIC8vDQo+ID4gICAgLy8gUHJlcGFyZSBtZW1v cnkgZm9yIEJvb3QgUGVyZm9ybWFuY2UgdGFibGUuDQo+ID4gICAgLy8gQm9vdCBQZXJmb3JtYW5j ZSB0YWJsZSBpbmNsdWRlcyBCYXNpY0Jvb3QgcmVjb3JkLCBhbmQgb25lIG9yDQo+ID4gbW9yZSBh cHBlbmRlZCBCb290IFJlY29yZHMuDQo+ID4gICAgLy8NCj4gPiAtICBCb290UGVyZm9ybWFuY2VE YXRhU2l6ZSA9IHNpemVvZiAoQk9PVF9QRVJGT1JNQU5DRV9UQUJMRSkgKw0KPiA+IG1QZXJmb3Jt YW5jZUxlbmd0aCArIFBjZEdldDMyIChQY2RFeHRGcGR0Qm9vdFJlY29yZFBhZFNpemUpOw0KPiA+ IC0gIGlmIChTbW1Db21tRGF0YSAhPSBOVUxMICYmIFNtbUJvb3RSZWNvcmREYXRhICE9IE5VTEwp IHsNCj4gPiAtICAgIEJvb3RQZXJmb3JtYW5jZURhdGFTaXplICs9IFNtbUJvb3RSZWNvcmREYXRh U2l6ZTsNCj4gPiAtICB9DQo+ID4gKyAgQm9vdFBlcmZvcm1hbmNlRGF0YVNpemUgPSBzaXplb2Yg KEJPT1RfUEVSRk9STUFOQ0VfVEFCTEUpICsNCj4gPiBtUGVyZm9ybWFuY2VMZW5ndGggKyBTbW1C b290UmVjb3JkRGF0YVNpemUgKyBQY2RHZXQzMg0KPiA+IChQY2RFeHRGcGR0Qm9vdFJlY29yZFBh ZFNpemUpOw0KPiA+DQo+ID4gICAgLy8NCj4gPiAgICAvLyBUcnkgdG8gYWxsb2NhdGUgdGhlIHNh bWUgcnVudGltZSBidWZmZXIgYXMgbGFzdCB0aW1lIGJvb3QuDQo+ID4gQEAgLTM1OCw5ICszODgs NiBAQCBBbGxvY2F0ZUJvb3RQZXJmb3JtYW5jZVRhYmxlICgNCj4gPiAgICBERUJVRyAoKERFQlVH X0lORk8sICJEeGVDb3JlUGVyZm9ybWFuY2VMaWI6IEFDUEkgQm9vdA0KPiBQZXJmb3JtYW5jZQ0K PiA+IFRhYmxlIGFkZHJlc3MgPSAweCV4XG4iLCBtQWNwaUJvb3RQZXJmb3JtYW5jZVRhYmxlKSk7 DQo+ID4NCj4gPiAgICBpZiAobUFjcGlCb290UGVyZm9ybWFuY2VUYWJsZSA9PSBOVUxMKSB7DQo+ ID4gLSAgICBpZiAoU21tQ29tbURhdGEgIT0gTlVMTCAmJiBTbW1Cb290UmVjb3JkRGF0YSAhPSBO VUxMKSB7DQo+ID4gLSAgICAgIEZyZWVQb29sIChTbW1Cb290UmVjb3JkRGF0YSk7DQo+ID4gLSAg ICB9DQo+ID4gICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gICAgfQ0KPiA+ DQo+ID4gQEAgLTM4NSwxOSArNDEyLDEwIEBAIEFsbG9jYXRlQm9vdFBlcmZvcm1hbmNlVGFibGUg KA0KPiA+ICAgICAgbVBlcmZvcm1hbmNlTGVuZ3RoICAgID0gMDsNCj4gPiAgICAgIG1NYXhQZXJm b3JtYW5jZUxlbmd0aCA9IDA7DQo+ID4gICAgfQ0KPiA+IC0gIGlmIChTbW1Db21tRGF0YSAhPSBO VUxMICYmIFNtbUJvb3RSZWNvcmREYXRhICE9IE5VTEwpIHsNCj4gPiAtICAgIC8vDQo+ID4gLSAg ICAvLyBGaWxsIEJvb3QgcmVjb3JkcyBmcm9tIFNNTSBkcml2ZXJzLg0KPiA+IC0gICAgLy8NCj4g PiAtICAgIENvcHlNZW0gKEJvb3RQZXJmb3JtYW5jZURhdGEsIFNtbUJvb3RSZWNvcmREYXRhLA0K PiA+IFNtbUJvb3RSZWNvcmREYXRhU2l6ZSk7DQo+ID4gLSAgICBGcmVlUG9vbCAoU21tQm9vdFJl Y29yZERhdGEpOw0KPiA+IC0gICAgbUFjcGlCb290UGVyZm9ybWFuY2VUYWJsZS0+SGVhZGVyLkxl bmd0aCA9IChVSU5UMzIpDQo+ID4gKG1BY3BpQm9vdFBlcmZvcm1hbmNlVGFibGUtPkhlYWRlci5M ZW5ndGggKw0KPiBTbW1Cb290UmVjb3JkRGF0YVNpemUpOw0KPiA+IC0gICAgQm9vdFBlcmZvcm1h bmNlRGF0YSA9IEJvb3RQZXJmb3JtYW5jZURhdGEgKw0KPiA+IFNtbUJvb3RSZWNvcmREYXRhU2l6 ZTsNCj4gPiAtICB9DQo+ID4NCj4gPiAgICBtQm9vdFJlY29yZEJ1ZmZlciAgPSAoVUlOVDggKikg bUFjcGlCb290UGVyZm9ybWFuY2VUYWJsZTsNCj4gPiAgICBtQm9vdFJlY29yZFNpemUgICAgPSBt QWNwaUJvb3RQZXJmb3JtYW5jZVRhYmxlLT5IZWFkZXIuTGVuZ3RoOw0KPiA+IC0gIG1Cb290UmVj b3JkTWF4U2l6ZSA9IG1Cb290UmVjb3JkU2l6ZSArIFBjZEdldDMyDQo+ID4gKFBjZEV4dEZwZHRC b290UmVjb3JkUGFkU2l6ZSk7DQo+ID4gKyAgbUJvb3RSZWNvcmRNYXhTaXplID0gQm9vdFBlcmZv cm1hbmNlRGF0YVNpemU7DQo+ID4NCj4gPiAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gIH0N Cj4gPiBAQCAtMTMzNiw2ICsxMzU0LDQ3IEBAIFJlcG9ydEZwZHRSZWNvcmRCdWZmZXIgKA0KPiA+ ICAgIH0NCj4gPiAgfQ0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgIFVwZGF0ZSBCb290IFBlcmZvcm1h bmNlIHRhYmxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEV2ZW50ICAgIFRoZSBldmVudCBvZiBu b3RpZnkgcHJvdG9jb2wuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0ICBOb3RpZnkgZXZlbnQgY29u dGV4dC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVcGRh dGVCb290UGVyZm9ybWFuY2VUYWJsZSAoDQo+ID4gKyAgSU4gRUZJX0VWRU5UICAgICBFdmVudCwN Cj4gPiArICBJTiBWT0lEICAgICAgICAgICpDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNtbUJvb3RSZWNvcmREYXRhOw0K PiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtbUJvb3RSZWNvcmREYXRh U2l6ZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBlbmRTaXpl Ow0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpGaXJtd2FyZVBlcmZv cm1hbmNlVGFibGVQdHI7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gR2V0IFNNTSBwZXJm b3JtYW5jZSBkYXRhLg0KPiA+ICsgIC8vDQo+ID4gKyAgU21tQm9vdFJlY29yZERhdGEgPSBOVUxM Ow0KPiA+ICsgIEludGVybmFsR2V0U21tUGVyZkRhdGEgKCZTbW1Cb290UmVjb3JkRGF0YSwNCj4g PiAmU21tQm9vdFJlY29yZERhdGFTaXplLCBGQUxTRSk7DQo+ID4gKw0KPiA+ICsgIEZpcm13YXJl UGVyZm9ybWFuY2VUYWJsZVB0ciA9IChVSU5UOCAqKSBtQWNwaUJvb3RQZXJmb3JtYW5jZVRhYmxl DQo+ID4gKyBtQWNwaUJvb3RQZXJmb3JtYW5jZVRhYmxlLT5IZWFkZXIuTGVuZ3RoOw0KPiA+ICsN Cj4gPiArICBpZiAobUFjcGlCb290UGVyZm9ybWFuY2VUYWJsZS0+SGVhZGVyLkxlbmd0aCArDQo+ ID4gU21tQm9vdFJlY29yZERhdGFTaXplID4gbUJvb3RSZWNvcmRNYXhTaXplKSB7DQo+ID4gKyAg ICBERUJVRyAoKERFQlVHX0lORk8sICJEeGVDb3JlUGVyZm9ybWFuY2VMaWI6IE5vIGVub3VnaCBz cGFjZSB0bw0KPiA+IHNhdmUgYWxsIFNNTSBib290IHBlcmZvcm1hbmNlIGRhdGFcbiIpKTsNCj4g PiArICAgIEFwcGVuZFNpemUgPSBtQm9vdFJlY29yZE1heFNpemUgLQ0KPiA+IG1BY3BpQm9vdFBl cmZvcm1hbmNlVGFibGUtPkhlYWRlci5MZW5ndGg7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAg IEFwcGVuZFNpemUgPSBTbW1Cb290UmVjb3JkRGF0YVNpemU7ICB9ICBpZiAoU21tQm9vdFJlY29y ZERhdGEgIT0NCj4gPiArIE5VTEwpIHsNCj4gPiArICAgIENvcHlNZW0gKEZpcm13YXJlUGVyZm9y bWFuY2VUYWJsZVB0ciwgU21tQm9vdFJlY29yZERhdGEsDQo+ID4gQXBwZW5kU2l6ZSk7DQo+ID4g KyAgICBtQWNwaUJvb3RQZXJmb3JtYW5jZVRhYmxlLT5IZWFkZXIuTGVuZ3RoICs9IChVSU5UMzIp IEFwcGVuZFNpemU7DQo+ID4gKyAgICBtQm9vdFJlY29yZFNpemUgKz0gIChVSU5UMzIpIEFwcGVu ZFNpemU7DQo+ID4gKyAgICBGcmVlUG9vbCAoU21tQm9vdFJlY29yZERhdGEpOw0KPiA+ICsgIH0N Cj4gPiArfQ0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gICAgVGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9u IGluaXRpYWxpemVzIFBlcmZvcm1hbmNlIGluZnJhc3RydWN0dXJlIGZvcg0KPiA+IERYRSBwaGFz ZS4NCj4gPg0KPiA+IEBAIC0xMzU4LDYgKzE0MTcsNyBAQCBEeGVDb3JlUGVyZm9ybWFuY2VMaWJD b25zdHJ1Y3RvciAoICB7DQo+ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ID4gICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBIYW5kbGU7DQo+ID4gKyAgRUZJX0VW RU5UICAgICAgICAgICAgICAgICBFbmRPZkR4ZUV2ZW50Ow0KPiA+ICAgIEVGSV9FVkVOVCAgICAg ICAgICAgICAgICAgUmVhZHlUb0Jvb3RFdmVudDsNCj4gPiAgICBQRVJGT1JNQU5DRV9QUk9QRVJU WSAgICAgICpQZXJmb3JtYW5jZVByb3BlcnR5Ow0KPiA+DQo+ID4gQEAgLTEzODYsMTMgKzE0NDYs MjUgQEAgRHhlQ29yZVBlcmZvcm1hbmNlTGliQ29uc3RydWN0b3IgKA0KPiA+ICAgIEFTU0VSVF9F RklfRVJST1IgKFN0YXR1cyk7DQo+ID4NCj4gPiAgICAvLw0KPiA+IC0gIC8vIFJlZ2lzdGVyIFJl YWR5VG9Cb290IGV2ZW50IHRvIHJlcG9ydCBTdGF0dXNDb2RlIGRhdGENCj4gPiArICAvLyBSZWdp c3RlciBFbmRPZkR4ZSBldmVudCB0byBhbGxvY2F0ZSB0aGUgYm9vdCBwZXJmb3JtYW5jZSB0YWJs ZQ0KPiA+ICsgYW5kDQo+ID4gcmVwb3J0IHRoZSB0YWJsZSBhZGRyZXNzIHRocm91Z2ggc3RhdHVz IGNvZGUuDQo+ID4gICAgLy8NCj4gPiAgICBTdGF0dXMgPSBnQlMtPkNyZWF0ZUV2ZW50RXggKA0K PiA+ICAgICAgICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCj4gPiAtICAgICAgICAg ICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+ICsgICAgICAgICAgICAgICAgICBUUExfTk9USUZZ LA0KPiA+ICAgICAgICAgICAgICAgICAgICBSZXBvcnRGcGR0UmVjb3JkQnVmZmVyLA0KPiA+ICAg ICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaUVuZE9m RHhlRXZlbnRHcm91cEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZFbmRPZkR4ZUV2ZW50 DQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8g UmVnaXN0ZXIgUmVhZHlUb0Jvb3QgZXZlbnQgdG8gdXBkYXRlIHRoZSBib290IHBlcmZvcm1hbmNl IHRhYmxlDQo+ID4gKyBmb3INCj4gPiBTTU0gcGVyZm9ybWFuY2UgZGF0YS4NCj4gPiArICAvLw0K PiA+ICsgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnRFeCAoDQo+ID4gKyAgICAgICAgICAgICAg ICAgIEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+ICsgICAgICAgICAgICAgICAgICBUUExfQ0FMTEJB Q0ssDQo+ID4gKyAgICAgICAgICAgICAgICAgIFVwZGF0ZUJvb3RQZXJmb3JtYW5jZVRhYmxlLA0K PiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICAgICAgICAgICAgICAgICAgICAmZ0Vm aUV2ZW50UmVhZHlUb0Jvb3RHdWlkLA0KPiA+ICAgICAgICAgICAgICAgICAgICAmUmVhZHlUb0Jv b3RFdmVudA0KPiA+ICAgICAgICAgICAgICAgICAgICApOw0KPiA+IGRpZmYgLS1naXQNCj4gPg0K PiBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZUNvcmVQZXJmb3JtYW5jZUxpYi9EeGVDb3JlUGVy Zm9ybWFuY2VMaQ0KPiBiLmkNCj4gPiBuZg0KPiA+DQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkv RHhlQ29yZVBlcmZvcm1hbmNlTGliL0R4ZUNvcmVQZXJmb3JtYW5jZUxpDQo+IGIuaQ0KPiA+IG5m DQo+ID4gaW5kZXggMWMxZGNjNjBhNi4uNTk5ZDRkZWE2NiAxMDA2NDQNCj4gPiAtLS0NCj4gPg0K PiBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZUNvcmVQZXJmb3JtYW5jZUxpYi9EeGVDb3JlUGVy Zm9ybWFuY2VMaQ0KPiBiLmkNCj4gPiBuZg0KPiA+ICsrKw0KPiA+DQo+IGIvTWRlTW9kdWxlUGtn L0xpYnJhcnkvRHhlQ29yZVBlcmZvcm1hbmNlTGliL0R4ZUNvcmVQZXJmb3JtYW5jZUxpDQo+IGIu aQ0KPiA+IG5mDQo+ID4gQEAgLTksNyArOSw3IEBADQo+ID4gICMgIFRoaXMgbGlicmFyeSBpcyBt YWlubHkgdXNlZCBieSBEeGVDb3JlIHRvIHN0YXJ0IHBlcmZvcm1hbmNlDQo+ID4gbG9nZ2luZyB0 byBlbnN1cmUgdGhhdCAgIyAgUGVyZm9ybWFuY2UgYW5kIFBlcmZvcm1hbmNlRXggUHJvdG9jb2wg YXJlDQo+ID4gaW5zdGFsbGVkIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBEWEUgcGhhc2UuDQo+ ID4gICMNCj4gPiAtIyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMNCj4gPiByZXNlcnZlZC48QlI+DQo+ID4gKyMgIENvcHlyaWdodCAoYykg MjAwNiAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gK3Jlc2VydmVk LjxCUj4NCj4gPiAgIyAoQykgQ29weXJpZ2h0IDIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJp c2UgRGV2ZWxvcG1lbnQgTFA8QlI+ICAjDQo+ID4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQgICMgQEAgLTY3LDYgKzY3LDcgQEANCj4gPiBbR3VpZHNdDQo+ID4g ICAgZ1plcm9HdWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjDQo+ID4g U09NRVRJTUVTX0NPTlNVTUVTICMjIEdVSUQNCj4gPiAgICBnRWZpRmlybXdhcmVQZXJmb3JtYW5j ZUd1aWQgICAgICAgICAgICAgICAgICAgIyMNCj4gPiBTT01FVElNRVNfUFJPRFVDRVMgIyMgVU5E RUZJTkVEICMgU3RhdHVzQ29kZSBEYXRhDQo+ID4gICAgZ0Vka2lpRnBkdEV4dGVuZGVkRmlybXdh cmVQZXJmb3JtYW5jZUd1aWQgICAgICMjDQo+ID4gU09NRVRJTUVTX0NPTlNVTUVTICMjIEhPQiAj IFN0YXR1c0NvZGUgRGF0YQ0KPiA+ICsgIGdFZmlFbmRPZkR4ZUV2ZW50R3JvdXBHdWlkICAgICAg ICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ICMjIEV2ZW50DQo+ID4gICAgZ0VmaUV2ZW50 UmVhZHlUb0Jvb3RHdWlkICAgICAgICAgICAgICAgICAgICAgICMjIENPTlNVTUVTDQo+ID4gIyMg RXZlbnQNCj4gPiAgICBnRWRraWlQaVNtbUNvbW11bmljYXRpb25SZWdpb25UYWJsZUd1aWQgICAg ICAgIyMNCj4gPiBTT01FVElNRVNfQ09OU1VNRVMgICAgIyMgU3lzdGVtVGFibGUNCj4gPiAgICBn RWRraWlQZXJmb3JtYW5jZU1lYXN1cmVtZW50UHJvdG9jb2xHdWlkICAgICAgIyMgUFJPRFVDRVMN Cj4gPiAjIyBVTkRFRklORUQgIyBJbnN0YWxsIHByb3RvY29sDQo+ID4gZGlmZiAtLWdpdA0KPiA+ DQo+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvU21tQ29yZVBlcmZvcm1hbmNlTGliL1NtbUNvcmVQ ZXJmb3JtYW5jZQ0KPiBMaQ0KPiA+IGIuYw0KPiA+DQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkv U21tQ29yZVBlcmZvcm1hbmNlTGliL1NtbUNvcmVQZXJmb3JtYW5jZQ0KPiBMaQ0KPiA+IGIuYw0K PiA+IGluZGV4IGI0ZjIyYzE0YWUuLmQ4MGYzN2U1MjAgMTAwNjQ0DQo+ID4gLS0tDQo+ID4NCj4g YS9NZGVNb2R1bGVQa2cvTGlicmFyeS9TbW1Db3JlUGVyZm9ybWFuY2VMaWIvU21tQ29yZVBlcmZv cm1hbmNlDQo+IExpDQo+ID4gYi5jDQo+ID4gKysrDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvTGli cmFyeS9TbW1Db3JlUGVyZm9ybWFuY2VMaWIvU21tQ29yZVBlcmZvcm1hbmNlDQo+IExpDQo+ID4g Yi5jDQo+ID4gQEAgLTE2LDcgKzE2LDcgQEANCj4gPg0KPiA+ICAgU21tUGVyZm9ybWFuY2VIYW5k bGVyRXgoKSwgU21tUGVyZm9ybWFuY2VIYW5kbGVyKCkgd2lsbCByZWNlaXZlDQo+ID4gdW50cnVz dGVkIGlucHV0IGFuZCBkbyBiYXNpYyB2YWxpZGF0aW9uLg0KPiA+DQo+ID4gLUNvcHlyaWdodCAo YykgMjAxMSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2 ZWQuPEJSPg0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cw0KPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiAgKiovDQo+ID4gQEAgLTQ4LDYg KzQ4LDcgQEAgQ0hBUjggICAgICAgICAgICAgICAgKm1QbGF0Zm9ybUxhbmd1YWdlICAgID0NCj4g PiBOVUxMOw0KPiA+ICBTUElOX0xPQ0sgICAgICAgICAgICBtU21tRnBkdExvY2s7DQo+ID4gIFBF UkZPUk1BTkNFX1BST1BFUlRZICBtUGVyZm9ybWFuY2VQcm9wZXJ0eTsNCj4gPiAgVUlOVDMyICAg ICAgICAgICAgICAgbUNhY2hlZExlbmd0aCAgICAgICAgID0gMDsNCj4gPiArVUlOVDMyICAgICAg ICAgICAgICAgbUJvb3RSZWNvcmRTaXplICAgICAgID0gMDsNCj4gPg0KPiA+ICAvLw0KPiA+ICAv LyBJbnRlcmZhY2VzIGZvciBTTU0gUGVyZm9ybWFuY2VNZWFzdXJlbWVudCBQcm90b2NvbC4NCj4g PiBAQCAtNzc2LDQxICs3NzcsMTE2IEBAIEluc2VydEZwZHRSZWNvcmQgKCAgfQ0KPiA+DQo+ID4g IC8qKg0KPiA+IC0gIFNtbVJlYWR5VG9Cb290IHByb3RvY29sIG5vdGlmaWNhdGlvbiBldmVudCBo YW5kbGVyLg0KPiA+ICsgIENvbW11bmljYXRpb24gc2VydmljZSBTTUkgSGFuZGxlciBlbnRyeS4N Cj4gPg0KPiA+IC0gIEBwYXJhbSAgUHJvdG9jb2wgICBQb2ludHMgdG8gdGhlIHByb3RvY29sJ3Mg dW5pcXVlIGlkZW50aWZpZXINCj4gPiAtICBAcGFyYW0gIEludGVyZmFjZSAgUG9pbnRzIHRvIHRo ZSBpbnRlcmZhY2UgaW5zdGFuY2UNCj4gPiAtICBAcGFyYW0gIEhhbmRsZSAgICAgVGhlIGhhbmRs ZSBvbiB3aGljaCB0aGUgaW50ZXJmYWNlIHdhcyBpbnN0YWxsZWQNCj4gPiArICBUaGlzIFNNSSBo YW5kbGVyIHByb3ZpZGVzIHNlcnZpY2VzIGZvciByZXBvcnQgTU0gYm9vdCByZWNvcmRzLg0KPiA+ DQo+ID4gLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFNtbVJlYWR5VG9Cb290Q2FsbGJhY2sgcnVu cyBzdWNjZXNzZnVsbHkNCj4gPiArICBDYXV0aW9uOiBUaGlzIGZ1bmN0aW9uIG1heSByZWNlaXZl IHVudHJ1c3RlZCBpbnB1dC4NCj4gPiArICBDb21tdW5pY2F0ZSBidWZmZXIgYW5kIGJ1ZmZlciBz aXplIGFyZSBleHRlcm5hbCBpbnB1dCwgc28gdGhpcw0KPiA+ICsgZnVuY3Rpb24NCj4gd2lsbA0K PiA+IGRvIGJhc2ljIHZhbGlkYXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgIERp c3BhdGNoSGFuZGxlICBUaGUgdW5pcXVlIGhhbmRsZSBhc3NpZ25lZCB0byB0aGlzDQo+ID4gaGFu ZGxlciBieSBTbWlIYW5kbGVyUmVnaXN0ZXIoKS4NCj4gPiArICBAcGFyYW1baW5dICAgICBSZWdp c3RlckNvbnRleHQgUG9pbnRzIHRvIGFuIG9wdGlvbmFsIGhhbmRsZXIgY29udGV4dA0KPiA+IHdo aWNoIHdhcyBzcGVjaWZpZWQgd2hlbiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaGFuZGxlciB3YXMgcmVnaXN0ZXJlZC4NCj4gPiArICBAcGFyYW1baW4sIG91dF0g Q29tbUJ1ZmZlciAgICAgQSBwb2ludGVyIHRvIGEgY29sbGVjdGlvbiBvZiBkYXRhIGluDQo+ID4g bWVtb3J5IHRoYXQgd2lsbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi ZSBjb252ZXllZCBmcm9tIGEgbm9uLU1NDQo+ID4gZW52aXJvbm1lbnQgaW50byBhbiBNTSBlbnZp cm9ubWVudC4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gQ29tbUJ1ZmZlclNpemUgVGhlIHNpemUg b2YgdGhlIENvbW1CdWZmZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgICAgICAgICAgICAgICAgVGhlIGludGVycnVwdCB3YXMNCj4gPiBoYW5kbGVkIGFuZCBx dWllc2NlZC4gTm8gb3RoZXIgaGFuZGxlcnMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBzdGlsbCBiZQ0KPiA+IGNhbGxlZC4NCj4gPiAr ICBAcmV0dmFsIEVGSV9XQVJOX0lOVEVSUlVQVF9TT1VSQ0VfUVVJRVNDRUQgIFRoZSBpbnRlcnJ1 cHQgaGFzDQo+ID4gYmVlbiBxdWllc2NlZCBidXQgb3RoZXIgaGFuZGxlcnMgc2hvdWxkDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbCBiZSBj YWxsZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfV0FSTl9JTlRFUlJVUFRfU09VUkNFX1BFTkRJTkcg ICBUaGUgaW50ZXJydXB0IGlzDQo+ID4gc3RpbGwgcGVuZGluZyBhbmQgb3RoZXIgaGFuZGxlcnMg c2hvdWxkIHN0aWxsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiZSBjYWxsZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5URVJSVVBUX1BFTkRJTkcg ICAgICAgICAgICAgICBUaGUgaW50ZXJydXB0IGNvdWxkDQo+ID4gbm90IGJlIHF1aWVzY2VkLg0K PiA+DQo+ID4gICoqLw0KPiA+ICBFRklfU1RBVFVTDQo+ID4gIEVGSUFQSQ0KPiA+IC1TbW1SZXBv cnRGcGR0UmVjb3JkRGF0YSAoDQo+ID4gLSAgSU4gQ09OU1QgRUZJX0dVSUQgICAgICAgICAgICAg ICAgICAgICAgICpQcm90b2NvbCwNCj4gPiAtICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKkludGVyZmFjZSwNCj4gPiAtICBJTiBFRklfSEFORExFICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFuZGxlDQo+ID4gK0ZwZHRTbWlIYW5kbGVyICgNCj4gPiArICBJTiAg ICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBEaXNwYXRjaEhhbmRsZSwNCj4gPiArICBJ TiAgICAgQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAqUmVnaXN0ZXJDb250ZXh0LA0KPiA+ ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpDb21tQnVmZmVyLA0KPiA+ ICsgIElOIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICpDb21tQnVmZmVyU2l6ZQ0K PiA+ICAgICkNCj4gPiAgew0KPiA+IC0gIFVJTlQ2NCAgICAgICAgICBTbW1CUERUZGRyOw0KPiA+ IC0NCj4gPiAtICBpZiAoIW1GcGR0RGF0YUlzUmVwb3J0ZWQgJiYgbVNtbUJvb3RQZXJmb3JtYW5j ZVRhYmxlICE9IE5VTEwpIHsNCj4gPiAtICAgIFNtbUJQRFRkZHIgPSAoVUlOVDY0KShVSU5UTilt U21tQm9vdFBlcmZvcm1hbmNlVGFibGU7DQo+ID4gLSAgICBSRVBPUlRfU1RBVFVTX0NPREVfRVgg KA0KPiA+IC0gICAgICAgIEVGSV9QUk9HUkVTU19DT0RFLA0KPiA+IC0gICAgICAgIEVGSV9TT0ZU V0FSRV9TTU1fRFJJVkVSLA0KPiA+IC0gICAgICAgIDAsDQo+ID4gLSAgICAgICAgTlVMTCwNCj4g PiAtICAgICAgICAmZ0Vka2lpRnBkdEV4dGVuZGVkRmlybXdhcmVQZXJmb3JtYW5jZUd1aWQsDQo+ ID4gLSAgICAgICAgJlNtbUJQRFRkZHIsDQo+ID4gLSAgICAgICAgc2l6ZW9mIChVSU5UNjQpDQo+ ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgU01NX0JP T1RfUkVDT1JEX0NPTU1VTklDQVRFICAqU21tQ29tbURhdGE7DQo+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICBCb290UmVjb3JkT2Zmc2V0Ow0KPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgQm9vdFJlY29yZFNpemU7DQo+ID4gKyAgVk9JRCAgICAgICAgICAgICAg ICAgICAgICAgICAqQm9vdFJlY29yZERhdGE7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICBUZW1wQ29tbUJ1ZmZlclNpemU7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAqQm9vdFJlY29yZEJ1ZmZlcjsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBJ ZiBpbnB1dCBpcyBpbnZhbGlkLCBzdG9wIHByb2Nlc3NpbmcgdGhpcyBTTUkgIC8vICBpZg0KPiA+ ICsgKENvbW1CdWZmZXIgPT0gTlVMTCB8fCBDb21tQnVmZmVyU2l6ZSA9PSBOVUxMKSB7DQo+ID4g KyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBUZW1wQ29t bUJ1ZmZlclNpemUgPSAqQ29tbUJ1ZmZlclNpemU7DQo+ID4gKw0KPiA+ICsgIGlmKFRlbXBDb21t QnVmZmVyU2l6ZSA8IHNpemVvZg0KPiAoU01NX0JPT1RfUkVDT1JEX0NPTU1VTklDQVRFKSkNCj4g PiB7DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICBpZiAoIVNtbUlzQnVmZmVyT3V0c2lkZVNtbVZhbGlkICgoVUlOVE4pQ29tbUJ1ZmZlciwNCj4g PiBUZW1wQ29tbUJ1ZmZlclNpemUpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAi RnBkdFNtaUhhbmRsZXI6IE1NIGNvbW11bmljYXRpb24gZGF0YQ0KPiA+IGJ1ZmZlciBpbiBNTVJB TSBvciBvdmVyZmxvdyFcbiIpKTsNCj4gPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIFNtbUNvbW1EYXRhID0NCj4gKFNNTV9CT09UX1JFQ09SRF9DT01N VU5JQ0FURSopQ29tbUJ1ZmZlcjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7 DQo+ID4gKw0KPiA+ICsgIHN3aXRjaCAoU21tQ29tbURhdGEtPkZ1bmN0aW9uKSB7DQo+ID4gKyAg ICBjYXNlIFNNTV9GUERUX0ZVTkNUSU9OX0dFVF9CT09UX1JFQ09SRF9TSVpFIDoNCj4gPiArICAg ICAgaWYgKG1TbW1Cb290UGVyZm9ybWFuY2VUYWJsZSAhPSBOVUxMKSB7DQo+ID4gKyAgICAgICAg bUJvb3RSZWNvcmRTaXplID0gbVNtbUJvb3RQZXJmb3JtYW5jZVRhYmxlLT5IZWFkZXIuTGVuZ3Ro DQo+ID4gLSBzaXplb2YgKFNNTV9CT09UX1BFUkZPUk1BTkNFX1RBQkxFKTsNCj4gPiArICAgICAg fQ0KPiA+ICsgICAgICBTbW1Db21tRGF0YS0+Qm9vdFJlY29yZFNpemUgPSBtQm9vdFJlY29yZFNp emU7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgIGNhc2UgU01NX0ZQRFRfRlVO Q1RJT05fR0VUX0JPT1RfUkVDT1JEX0RBVEEgOg0KPiA+ICsgICAgICBTdGF0dXMgPSBFRklfVU5T VVBQT1JURUQ7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgIGNhc2UgU01NX0ZQ RFRfRlVOQ1RJT05fR0VUX0JPT1RfUkVDT1JEX0RBVEFfQllfT0ZGU0VUIDoNCj4gPiArICAgICAg Qm9vdFJlY29yZE9mZnNldCA9IFNtbUNvbW1EYXRhLT5Cb290UmVjb3JkT2Zmc2V0Ow0KPiA+ICsg ICAgICBCb290UmVjb3JkRGF0YSAgID0gU21tQ29tbURhdGEtPkJvb3RSZWNvcmREYXRhOw0KPiA+ ICsgICAgICBCb290UmVjb3JkU2l6ZSAgID0gU21tQ29tbURhdGEtPkJvb3RSZWNvcmRTaXplOw0K PiA+ICsgICAgICBpZiAoQm9vdFJlY29yZERhdGEgPT0gTlVMTCB8fCBCb290UmVjb3JkT2Zmc2V0 ID49DQo+ID4gbUJvb3RSZWNvcmRTaXplKSB7DQo+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICB9DQo+ID4g Kw0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBTYW5pdHkgY2hlY2sNCj4gPiArICAgICAg Ly8NCj4gPiArICAgICAgaWYgKEJvb3RSZWNvcmRTaXplID4gbUJvb3RSZWNvcmRTaXplIC0gQm9v dFJlY29yZE9mZnNldCkgew0KPiA+ICsgICAgICAgIEJvb3RSZWNvcmRTaXplID0gbUJvb3RSZWNv cmRTaXplIC0gQm9vdFJlY29yZE9mZnNldDsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBTbW1D b21tRGF0YS0+Qm9vdFJlY29yZFNpemUgPSBCb290UmVjb3JkU2l6ZTsNCj4gPiArICAgICAgaWYg KCFTbW1Jc0J1ZmZlck91dHNpZGVTbW1WYWxpZCAoKFVJTlROKUJvb3RSZWNvcmREYXRhLA0KPiA+ IEJvb3RSZWNvcmRTaXplKSkgew0KPiA+ICsgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJG cGR0U21pSGFuZGxlcjogTU0gRGF0YSBidWZmZXIgaW4NCj4gPiBNTVJBTSBvciBvdmVyZmxvdyFc biIpKTsNCj4gPiArICAgICAgICBTdGF0dXMgPSBFRklfQUNDRVNTX0RFTklFRDsNCj4gPiArICAg ICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBCb290UmVjb3JkQnVmZmVyID0g KChVSU5UOCAqKSAobVNtbUJvb3RQZXJmb3JtYW5jZVRhYmxlKSkgKw0KPiA+IHNpemVvZiAoU01N X0JPT1RfUEVSRk9STUFOQ0VfVEFCTEUpOw0KPiA+ICsgICAgICBDb3B5TWVtICgNCj4gPiArICAg ICAgICAoVUlOVDgqKUJvb3RSZWNvcmREYXRhLA0KPiA+ICsgICAgICAgIEJvb3RSZWNvcmRCdWZm ZXIgKyBCb290UmVjb3JkT2Zmc2V0LA0KPiA+ICsgICAgICAgIEJvb3RSZWNvcmRTaXplDQo+ID4g ICAgICAgICAgKTsNCj4gPiAtICAgIC8vDQo+ID4gLSAgICAvLyBTZXQgRlBEVCByZXBvcnQgc3Rh dGUgdG8gVFJVRS4NCj4gPiAtICAgIC8vDQo+ID4gLSAgICBtRnBkdERhdGFJc1JlcG9ydGVkID0g VFJVRTsNCj4gPiArICAgICAgbUZwZHREYXRhSXNSZXBvcnRlZCA9IFRSVUU7DQo+ID4gKyAgICAg IGJyZWFrOw0KPiA+ICsNCj4gPiArICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgIFN0YXR1cyA9IEVG SV9VTlNVUFBPUlRFRDsNCj4gPiAgICB9DQo+ID4gKw0KPiA+ICsgIFNtbUNvbW1EYXRhLT5SZXR1 cm5TdGF0dXMgPSBTdGF0dXM7DQo+ID4gKw0KPiA+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g PiAgfQ0KPiA+DQo+ID4gQEAgLTgzMCw4ICs5MDYsOCBAQCBJbml0aWFsaXplU21tQ29yZVBlcmZv cm1hbmNlTGliICgNCj4gPiAgICApDQo+ID4gIHsNCj4gPiAgICBFRklfSEFORExFICAgICAgICAg ICAgICAgIEhhbmRsZTsNCj4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgIFNtaUhhbmRs ZTsNCj4gPiAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiAtICBWT0lE ICAgICAgICAgICAgICAgICAgICAgICpTbW1SZWFkeVRvQm9vdFJlZ2lzdHJhdGlvbjsNCj4gPiAg ICBQRVJGT1JNQU5DRV9QUk9QRVJUWSAgICAgICpQZXJmb3JtYW5jZVByb3BlcnR5Ow0KPiA+DQo+ ID4gICAgLy8NCj4gPiBAQCAtODUxLDExICs5MjcsMTMgQEAgSW5pdGlhbGl6ZVNtbUNvcmVQZXJm b3JtYW5jZUxpYiAoDQo+ID4gICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiAgICBBU1NFUlRf RUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+DQo+ID4gLSAgU3RhdHVzID0gZ1Ntc3QtPlNtbVJlZ2lz dGVyUHJvdG9jb2xOb3RpZnkgKA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICZnRWRraWlTbW1S ZWFkeVRvQm9vdFByb3RvY29sR3VpZCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICBTbW1SZXBv cnRGcGR0UmVjb3JkRGF0YSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAmU21tUmVhZHlUb0Jv b3RSZWdpc3RyYXRpb24NCj4gPiAtICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gUmVnaXN0ZXIgU01JIGhhbmRsZXIuDQo+ID4gKyAgLy8NCj4gPiArICBTbWlIYW5k bGUgPSBOVUxMOw0KPiA+ICsgIFN0YXR1cyA9IGdTbXN0LT5TbWlIYW5kbGVyUmVnaXN0ZXIgKEZw ZHRTbWlIYW5kbGVyLA0KPiA+ICZnRWZpRmlybXdhcmVQZXJmb3JtYW5jZUd1aWQsICZTbWlIYW5k bGUpOw0KPiA+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKw0KPiA+ICAgIFN0 YXR1cyA9IEVmaUdldFN5c3RlbUNvbmZpZ3VyYXRpb25UYWJsZSAoJmdQZXJmb3JtYW5jZVByb3Rv Y29sR3VpZCwNCj4gPiAoVk9JRCAqKikgJlBlcmZvcm1hbmNlUHJvcGVydHkpOw0KPiA+ICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAgICAgIC8vDQo+ID4gZGlmZiAtLWdpdA0KPiA+ DQo+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvU21tQ29yZVBlcmZvcm1hbmNlTGliL1NtbUNvcmVQ ZXJmb3JtYW5jZQ0KPiBMaQ0KPiA+IGIuaW5mDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFy eS9TbW1Db3JlUGVyZm9ybWFuY2VMaWIvU21tQ29yZVBlcmZvcm1hbmNlDQo+IExpDQo+ID4gYi5p bmYNCj4gPiBpbmRleCA2YjAxM2I4NTU3Li45ZWVjYzRiNThjIDEwMDY0NA0KPiA+IC0tLQ0KPiA+ DQo+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvU21tQ29yZVBlcmZvcm1hbmNlTGliL1NtbUNvcmVQ ZXJmb3JtYW5jZQ0KPiBMaQ0KPiA+IGIuaW5mDQo+ID4gKysrDQo+ID4NCj4gYi9NZGVNb2R1bGVQ a2cvTGlicmFyeS9TbW1Db3JlUGVyZm9ybWFuY2VMaWIvU21tQ29yZVBlcmZvcm1hbmNlDQo+IExp DQo+ID4gYi5pbmYNCj4gPiBAQCAtOCw3ICs4LDcgQEANCj4gPiAgIyAgVGhpcyBsaWJyYXJ5IGlz IG1haW5seSB1c2VkIGJ5IFNNTSBDb3JlIHRvIHN0YXJ0IHBlcmZvcm1hbmNlDQo+ID4gbG9nZ2lu Zw0KPiB0bw0KPiA+IGVuc3VyZSB0aGF0DQo+ID4gICMgIFNNTSBQZXJmb3JtYW5jZSBhbmQgUGVy Zm9ybWFuY2VFeCBQcm90b2NvbCBhcmUgaW5zdGFsbGVkIGF0IHRoZQ0KPiA+IHZlcnkgYmVnaW5u aW5nIG9mIFNNTSBwaGFzZS4NCj4gPiAgIw0KPiA+IC0jICBDb3B5cmlnaHQgKGMpIDIwMTEgLSAy MDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLjxCUj4NCj4g PiArIyAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMNCj4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ICAjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudCAgIyAgIyMgQEAgLTU4LDE0DQo+ID4gKzU4LDEzIEBAIFtM aWJyYXJ5Q2xhc3Nlc10NCj4gPg0KPiA+ICBbUHJvdG9jb2xzXQ0KPiA+ICAgIGdFZmlTbW1CYXNl MlByb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICMjIENPTlNVTUVTDQo+ID4gLSAgZ0Vka2lp U21tUmVhZHlUb0Jvb3RQcm90b2NvbEd1aWQgICAgICAgICAgIyMgTk9USUZZDQo+ID4NCj4gPiAg W0d1aWRzXQ0KPiA+ICAgICMjIFBST0RVQ0VTICMjIFN5c3RlbVRhYmxlDQo+ID4gICAgZ1BlcmZv cm1hbmNlUHJvdG9jb2xHdWlkDQo+ID4gLSAgZ0Vka2lpRnBkdEV4dGVuZGVkRmlybXdhcmVQZXJm b3JtYW5jZUd1aWQgIyMNCj4gU09NRVRJTUVTX1BST0RVQ0VTICMjDQo+ID4gVU5ERUZJTkVEICMg U3RhdHVzQ29kZSBEYXRhDQo+ID4gICAgZ1plcm9HdWlkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyMNCj4gPiBTT01FVElNRVNfQ09OU1VNRVMgIyMgR1VJRA0KPiA+ICAgIGdFZGtp aVNtbVBlcmZvcm1hbmNlTWVhc3VyZW1lbnRQcm90b2NvbEd1aWQgICAgICAgICAgICAgIyMNCj4g PiBQUk9EVUNFUyAjIyBVTkRFRklORUQgIyBJbnN0YWxsIHByb3RvY29sDQo+ID4gKyAgZ0VmaUZp cm13YXJlUGVyZm9ybWFuY2VHdWlkICAgICAgICAgICAgICAgIyMNCj4gPiBTT01FVElNRVNfUFJP RFVDRVMgIyMgVU5ERUZJTkVEICMgU21pSGFuZGxlclJlZ2lzdGVyDQo+ID4NCj4gPiAgW1BjZF0N Cj4gPiAgICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGVyZm9ybWFuY2VMaWJyYXJ5UHJv cGVydHlNYXNrDQo+ID4gIyMgQ09OU1VNRVMNCj4gPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gPiBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjIGlu ZGV4IDEzM2UwNGVlODYuLjQ2M2U4ODllOWENCj4gMTAwNjQ0DQo+ID4gLS0tIGEvTWRlTW9kdWxl UGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiArKysgYi9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtn LmRlYw0KPiA+IEBAIC0xODc5LDkgKzE4NzksOSBAQCBbUGNkc0ZpeGVkQXRCdWlsZCwgUGNkc1Bh dGNoYWJsZUluTW9kdWxlLA0KPiA+IFBjZHNEeW5hbWljLCBQY2RzRHluYW1pY0V4XQ0KPiA+DQo+ ID4NCj4gZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtYmlvc0VudHJ5UG9pbnRQ cm92aWRlTWV0aG9kfDANCj4geDMNCj4gPiB8VUlOVDMyfDB4MDAwMTAwNjkNCj4gPg0KPiA+ICAg ICMjIFRoaXMgUENEIHNwZWNpZmllcyB0aGUgYWRkaXRpb25hbCBwYWQgc2l6ZSBpbiBGUERUIEJh c2ljIEJvb3QNCj4gPiBQZXJmb3JtYW5jZSBUYWJsZSBmb3INCj4gPiAtICAjICB0aGUgZXh0ZW5z aW9uIEZQRFQgYm9vdCByZWNvcmRzIHJlY2VpdmVkIGFmdGVyIFJlYWR5VG9Cb290IGFuZA0KPiA+ IGJlZm9yZSBFeGl0Qm9vdFNlcnZpY2UuDQo+ID4gKyAgIyAgdGhlIGV4dGVuc2lvbiBGUERUIGJv b3QgcmVjb3JkcyByZWNlaXZlZCBhZnRlciBFbmRPZkR4ZSBhbmQNCj4gPiArIGJlZm9yZQ0KPiA+ IEV4aXRCb290U2VydmljZS4NCj4gPiAgICAjIEBQcm9tcHQgUGFkIHNpemUgZm9yIGV4dGVuc2lv biBGUERUIGJvb3QgcmVjb3Jkcy4NCj4gPiAtDQo+ID4NCj4gZ0VmaU1kZU1vZHVsZVBrZ1Rva2Vu U3BhY2VHdWlkLlBjZEV4dEZwZHRCb290UmVjb3JkUGFkU2l6ZXwweDIwMDANCj4gMHwNCj4gPiBV SU5UMzJ8MHgwMDAxMDA1Rg0KPiA+ICsNCj4gPg0KPiBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkRXh0RnBkdEJvb3RSZWNvcmRQYWRTaXplfDB4MzAwMA0KPiAwfA0KPiA+IFVJTlQz MnwweDAwMDEwMDVGDQo+ID4NCj4gPiAgICAjIyBJbmRpY2F0ZXMgaWYgQ29uSW4gZGV2aWNlIGFy ZSBjb25uZWN0ZWQgb24gZGVtYW5kLjxCUj48QlI+DQo+ID4gICAgIyAgIFRSVUUgIC0gQ29uSW4g ZGV2aWNlIGFyZSBub3QgY29ubmVjdGVkIGR1cmluZyBCRFMgYW5kDQo+ID4gUmVhZEtleVN0cm9r ZS9SZWFkS2V5U3Ryb2tlRXggcHJvZHVjZWQgZGlmZiAtLWdpdA0KPiA+DQo+IGEvTWRlTW9kdWxl UGtnL1VuaXZlcnNhbC9BY3BpL0Zpcm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGVEeGUvRmlybQ0K PiA+IHdhcmVQZXJmb3JtYW5jZUR4ZS5jDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2Fs L0FjcGkvRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZUR4ZS9GaXJtDQo+ID4gd2FyZVBlcmZv cm1hbmNlRHhlLmMNCj4gPiBpbmRleCA2MWE3NzA0YjM3Li5hNmEwY2Q5ZTdkIDEwMDY0NA0KPiA+ IC0tLQ0KPiA+DQo+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3BpL0Zpcm13YXJlUGVyZm9y bWFuY2VEYXRhVGFibGVEeGUvRmlybQ0KPiA+IHdhcmVQZXJmb3JtYW5jZUR4ZS5jDQo+ID4gKysr DQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0FjcGkvRmlybXdhcmVQZXJmb3JtYW5j ZURhdGFUYWJsZUR4ZS9GaXJtDQo+ID4gd2FyZVBlcmZvcm1hbmNlRHhlLmMNCj4gPiBAQCAtNSw3 ICs1LDcgQEANCj4gPiAgICBmb3IgRmlybXdhcmUgQmFzaWMgQm9vdCBQZXJmb3JtYW5jZSBSZWNv cmQgYW5kIG90aGVyIGJvb3QNCj4gPiBwZXJmb3JtYW5jZSByZWNvcmRzLA0KPiA+ICAgIGFuZCBp bnN0YWxsIEZQRFQgdG8gQUNQSSB0YWJsZS4NCj4gPg0KPiA+IC0gIENvcHlyaWdodCAoYykgMjAx MSAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2ZWQuPEJS Pg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxMSAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzDQo+ID4gKyByZXNlcnZlZC48QlI+DQo+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+ICAqKi8NCj4gPiBAQCAtMTYsNiAr MTYsNyBAQA0KPiA+ICAjaW5jbHVkZSA8UHJvdG9jb2wvQWNwaVRhYmxlLmg+DQo+ID4gICNpbmNs dWRlIDxQcm90b2NvbC9Mb2NrQm94Lmg+DQo+ID4gICNpbmNsdWRlIDxQcm90b2NvbC9WYXJpYWJs ZS5oPg0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvVmFyaWFibGVQb2xpY3kuaD4NCj4gPg0KPiA+ ICAjaW5jbHVkZSA8R3VpZC9BY3BpLmg+DQo+ID4gICNpbmNsdWRlIDxHdWlkL0Zpcm13YXJlUGVy Zm9ybWFuY2UuaD4gQEAgLTMyLDYgKzMzLDggQEAgICNpbmNsdWRlDQo+ID4gPExpYnJhcnkvSG9i TGliLmg+ICAjaW5jbHVkZSA8TGlicmFyeS9Mb2NrQm94TGliLmg+ICAjaW5jbHVkZQ0KPiA+IDxM aWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVmFyaWFibGVQb2xpY3lI ZWxwZXJMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvUGVyZm9ybWFuY2VMaWIuaD4NCj4g Pg0KPiA+ICAjZGVmaW5lIFNNTV9CT09UX1JFQ09SRF9DT01NX1NJWkUgKE9GRlNFVF9PRg0KPiA+ IChFRklfU01NX0NPTU1VTklDQVRFX0hFQURFUiwgRGF0YSkgKw0KPiA+IHNpemVvZihTTU1fQk9P VF9SRUNPUkRfQ09NTVVOSUNBVEUpKQ0KPiA+DQo+ID4gQEAgLTI3OCwxMSArMjgxLDEyIEBAIElu c3RhbGxGaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlICgNCj4gPiAgICBWT0lEDQo+ID4gICAg KQ0KPiA+ICB7DQo+ID4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiA+IC0gIEVGSV9BQ1BJX1RBQkxFX1BST1RPQ09MICAgICAgICpBY3BpVGFibGVQcm90b2NvbDsN Cj4gPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBCb290UGVyZm9ybWFuY2VEYXRh U2l6ZTsNCj4gPiAtICBGSVJNV0FSRV9QRVJGT1JNQU5DRV9WQVJJQUJMRSBQZXJmb3JtYW5jZVZh cmlhYmxlOw0KPiA+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgIFNpemU7DQo+ID4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgRUZJX0FD UElfVEFCTEVfUFJPVE9DT0wgICAgICAgICAqQWNwaVRhYmxlUHJvdG9jb2w7DQo+ID4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICBCb290UGVyZm9ybWFuY2VEYXRhU2l6ZTsNCj4g PiArICBGSVJNV0FSRV9QRVJGT1JNQU5DRV9WQVJJQUJMRSAgIFBlcmZvcm1hbmNlVmFyaWFibGU7 DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplOw0KPiA+ICsgIEVE S0lJX1ZBUklBQkxFX1BPTElDWV9QUk9UT0NPTCAgKlZhcmlhYmxlUG9saWN5UHJvdG9jb2w7DQo+ ID4NCj4gPiAgICAvLw0KPiA+ICAgIC8vIEdldCBBY3BpVGFibGUgUHJvdG9jb2wuDQo+ID4gQEAg LTI5Miw2ICsyOTYsMTQgQEAgSW5zdGFsbEZpcm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGUgKA0K PiA+ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAgICB9DQo+ID4NCj4gPiArICAvLw0KPiA+ICsg IC8vIEdldCBWYXJpYWJsZVBvbGljeSBQcm90b2NvbC4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1 cyA9IGdCUy0+TG9jYXRlUHJvdG9jb2woJmdFZGtpaVZhcmlhYmxlUG9saWN5UHJvdG9jb2xHdWlk LA0KPiA+ICsgTlVMTCwNCj4gPiAoVk9JRCAqKikmVmFyaWFibGVQb2xpY3lQcm90b2NvbCk7DQo+ ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICAgIGlmIChtUmVjZWl2ZWRBY3BpQm9vdFBlcmZvcm1hbmNl VGFibGUgIT0gTlVMTCkgew0KPiA+ICAgICAgbUFjcGlCb290UGVyZm9ybWFuY2VUYWJsZSA9IG1S ZWNlaXZlZEFjcGlCb290UGVyZm9ybWFuY2VUYWJsZTsNCj4gPiAgICAgIG1BY3BpQm9vdFBlcmZv cm1hbmNlVGFibGUtPkJhc2ljQm9vdC5SZXNldEVuZCA9DQo+ID4gbUJvb3RQZXJmb3JtYW5jZVRh YmxlVGVtcGxhdGUuQmFzaWNCb290LlJlc2V0RW5kOw0KPiA+IEBAIC0zNjksNiArMzgxLDI0IEBA IEluc3RhbGxGaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlICgNCj4gPiAgICAgICAgICAmUGVy Zm9ybWFuY2VWYXJpYWJsZQ0KPiA+ICAgICAgICAgICk7DQo+ID4NCj4gPiArICAvLw0KPiA+ICsg IC8vIExvY2sgdGhlIHZhcmlhYmxlIHdoaWNoIHN0b3JlcyB0aGUgUGVyZm9ybWFuY2UgVGFibGUg cG9pbnRlcnMuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBSZWdpc3RlckJhc2ljVmFyaWFi bGVQb2xpY3kgKA0KPiA+ICsgICAgICAgICAgICAgVmFyaWFibGVQb2xpY3lQcm90b2NvbCwNCj4g PiArICAgICAgICAgICAgICZnRWZpRmlybXdhcmVQZXJmb3JtYW5jZUd1aWQsDQo+ID4gKyAgICAg ICAgICAgICBFRklfRklSTVdBUkVfUEVSRk9STUFOQ0VfVkFSSUFCTEVfTkFNRSwNCj4gPiArICAg ICAgICAgICAgIFZBUklBQkxFX1BPTElDWV9OT19NSU5fU0laRSwNCj4gPiArICAgICAgICAgICAg IFZBUklBQkxFX1BPTElDWV9OT19NQVhfU0laRSwNCj4gPiArICAgICAgICAgICAgIFZBUklBQkxF X1BPTElDWV9OT19NVVNUX0FUVFIsDQo+ID4gKyAgICAgICAgICAgICBWQVJJQUJMRV9QT0xJQ1lf Tk9fQ0FOVF9BVFRSLA0KPiA+ICsgICAgICAgICAgICAgVkFSSUFCTEVfUE9MSUNZX1RZUEVfTE9D S19OT1cNCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMp KSB7DQo+ID4gKyAgICBERUJVRygoRUZJX0RfRVJST1IsICJbRmlybXdhcmVQZXJmb3JtYW5jZUR4 ZV0gRXJyb3Igd2hlbiBsb2NrDQo+ID4gdmFyaWFibGUgJXMsIFN0YXR1cyA9ICVyXG4iLA0KPiA+ IEVGSV9GSVJNV0FSRV9QRVJGT1JNQU5DRV9WQVJJQUJMRV9OQU1FLCBTdGF0dXMpKTsNCj4gPiAr ICAgIEFTU0VSVF9FRklfRVJST1IoU3RhdHVzKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICAgIC8v DQo+ID4gICAgLy8gUHVibGlzaCBGaXJtd2FyZSBQZXJmb3JtYW5jZSBEYXRhIFRhYmxlLg0KPiA+ ICAgIC8vDQo+ID4gQEAgLTUwMSwxOCArNTMxLDEyIEBAIEZwZHRTdGF0dXNDb2RlTGlzdGVuZXJE eGUgKA0KPiA+ICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiRlBEVDogQm9vdCBQZXJmb3JtYW5j ZSAtDQo+ID4gT3NMb2FkZXJTdGFydEltYWdlU3RhcnQgPSAlbGRcbiIsDQo+ID4gbUFjcGlCb290 UGVyZm9ybWFuY2VUYWJsZS0+QmFzaWNCb290Lk9zTG9hZGVyU3RhcnRJbWFnZVN0YXJ0KSk7DQo+ ID4gICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJGUERUOiBCb290IFBlcmZvcm1hbmNlIC0NCj4g PiBFeGl0Qm9vdFNlcnZpY2VzRW50cnkgICA9IDBcbiIpKTsNCj4gPiAgICAgIERFQlVHICgoRUZJ X0RfSU5GTywgIkZQRFQ6IEJvb3QgUGVyZm9ybWFuY2UgLQ0KPiA+IEV4aXRCb290U2VydmljZXNF eGl0ID0gMFxuIikpOw0KPiA+IC0gIH0gZWxzZSBpZiAoVmFsdWUgPT0gKEVGSV9TT0ZUV0FSRV9E WEVfQlNfRFJJVkVSIHwNCj4gPiBFRklfU1dfRFhFX0JTX1BDX1JFQURZX1RPX0JPT1RfRVZFTlQp KSB7DQo+ID4gLSAgICBpZiAobUFjcGlCb290UGVyZm9ybWFuY2VUYWJsZSA9PSBOVUxMKSB7DQo+ ID4gLSAgICAgIC8vDQo+ID4gLSAgICAgIC8vIEFDUEkgRmlybXdhcmUgUGVyZm9ybWFuY2UgRGF0 YSBUYWJsZSBub3QgaW5zdGFsbGVkIHlldCwgaW5zdGFsbA0KPiBpdA0KPiA+IG5vdy4NCj4gPiAt ICAgICAgLy8NCj4gPiAtICAgICAgSW5zdGFsbEZpcm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGUg KCk7DQo+ID4gLSAgICB9DQo+ID4gICAgfSBlbHNlIGlmIChEYXRhICE9IE5VTEwgJiYgQ29tcGFy ZUd1aWQgKCZEYXRhLT5UeXBlLA0KPiA+ICZnRWRraWlGcGR0RXh0ZW5kZWRGaXJtd2FyZVBlcmZv cm1hbmNlR3VpZCkpIHsNCj4gPiAgICAgIC8vDQo+ID4gICAgICAvLyBHZXQgdGhlIEJvb3QgcGVy Zm9ybWFuY2UgdGFibGUgYW5kIHRoZW4gaW5zdGFsbCBpdCB0byBBQ1BJIHRhYmxlLg0KPiA+ICAg ICAgLy8NCj4gPiAgICAgIENvcHlNZW0gKCZtUmVjZWl2ZWRBY3BpQm9vdFBlcmZvcm1hbmNlVGFi bGUsIERhdGEgKyAxLA0KPiA+IERhdGEtPlNpemUpOw0KPiA+ICsgICAgSW5zdGFsbEZpcm13YXJl UGVyZm9ybWFuY2VEYXRhVGFibGUgKCk7DQo+ID4gICAgfSBlbHNlIGlmIChEYXRhICE9IE5VTEwg JiYgQ29tcGFyZUd1aWQgKCZEYXRhLT5UeXBlLA0KPiA+ICZnRWZpRmlybXdhcmVQZXJmb3JtYW5j ZUd1aWQpKSB7DQo+ID4gICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRnBkdFN0YXR1c0NvZGVM aXN0ZW5lckR4ZTogUGVyZm9ybWFuY2UNCj4gZGF0YQ0KPiA+IHJlcG9ydGVkIHRocm91Z2ggZ0Vm aUZpcm13YXJlUGVyZm9ybWFuY2VHdWlkIHdpbGwgbm90IGJlIGNvbGxlY3RlZCBieQ0KPiA+IEZp cm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGVEeGVcbiIpKTsNCj4gPiAgICAgIFN0YXR1cyA9IEVG SV9VTlNVUFBPUlRFRDsNCj4gPiBAQCAtNTI2LDYgKzU1MCwzMiBAQCBGcGR0U3RhdHVzQ29kZUxp c3RlbmVyRHhlICgNCj4gPiAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICB9DQo+ID4NCj4gPiArLyoq DQo+ID4gKyAgTm90aWZ5IGZ1bmN0aW9uIGZvciBldmVudCBFbmRPZkR4ZS4NCj4gPiArDQo+ID4g KyAgVGhpcyBpcyB1c2VkIHRvIGluc3RhbGwgQUNQSSBGaXJtd2FyZSBQZXJmb3JtYW5jZSBEYXRh IFRhYmxlIGZvcg0KPiA+ICsgYmFzaWMNCj4gPiBib290IHJlY29yZHMuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gIEV2ZW50ICAgVGhlIEV2ZW50IHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLg0K PiA+ICsgIEBwYXJhbVtpbl0gIENvbnRleHQgVGhlIEV2ZW50IENvbnRleHQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRnBkdEVuZE9mRHhlRXZlbnROb3Rp ZnkgKA0KPiA+ICsgIElOIEVGSV9FVkVOVCAgICAgICAgRXZlbnQsDQo+ID4gKyAgSU4gVk9JRCAg ICAgICAgICAgICAqQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gV2hlbiBwZXJmb3JtYW5jZSBpcyBlbmFibGVkLCB0aGUgRlBEVCB3aWxsIGJlIGluc3RhbGxl ZCB3aGVuDQo+ID4gRHhlQ29yZVBlcmZvcm1hbmNlTGliIHJlcG9ydCB0aGUgZGF0YSB0byBGaW13 YXJlUGVyZm9ybWFuY2VEeGUuDQo+ID4gKyAgLy8gVGhpcyBpcyB1c2VkIHRvIGluc3RhbGwgdGhl IEZQRFQgZm9yIHRoZSBiYXNpYyBib290IHJlY29kcyB3aGVuDQo+ID4gcGVyZm9ybWFuY2UgaW5m cmFzdHJ1Y3R1cmUgaXMgbm90IGVuYWJsZWQuDQo+ID4gKyAgLy8NCj4gPiArICBpZiAoKFBjZEdl dDgoUGNkUGVyZm9ybWFuY2VMaWJyYXJ5UHJvcGVydHlNYXNrKSAmDQo+ID4gUEVSRk9STUFOQ0Vf TElCUkFSWV9QUk9QRVJUWV9NRUFTVVJFTUVOVF9FTkFCTEVEKSAhPSAwKSB7DQo+ID4gKyAgICBy ZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsgIEFTU0VSVCAobVJlY2VpdmVkQWNwaUJvb3RQZXJmb3Jt YW5jZVRhYmxlID09IE5VTEwpOw0KPiA+ICsgIEluc3RhbGxGaXJtd2FyZVBlcmZvcm1hbmNlRGF0 YVRhYmxlICgpOyB9DQo+ID4NCj4gPiAgLyoqDQo+ID4gICAgTm90aWZ5IGZ1bmN0aW9uIGZvciBl dmVudCBFVlRfU0lHTkFMX0VYSVRfQk9PVF9TRVJWSUNFUy4gVGhpcyBpcw0KPiA+IHVzZWQgdG8g cmVjb3JkIEBAIC01OTYsNiArNjQ2LDcgQEAgRmlybXdhcmVQZXJmb3JtYW5jZUR4ZUVudHJ5UG9p bnQNCj4gKA0KPiA+ICAgIEZJUk1XQVJFX1NFQ19QRVJGT1JNQU5DRSAqUGVyZm9ybWFuY2U7DQo+ ID4gICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICpSZWdpc3RyYXRpb247DQo+ID4gICAgVUlO VDY0ICAgICAgICAgICAgICAgICAgIE9lbVRhYmxlSWQ7DQo+ID4gKyAgRUZJX0VWRU5UICAgICAg ICAgICAgICAgIEVuZE9mRHhlRXZlbnQ7DQo+ID4NCj4gPiAgICBDb3B5TWVtICgNCj4gPiAgICAg IG1GaXJtd2FyZVBlcmZvcm1hbmNlVGFibGVUZW1wbGF0ZS5IZWFkZXIuT2VtSWQsDQo+ID4gQEAg LTYyMCw2ICs2NzEsMTkgQEAgRmlybXdhcmVQZXJmb3JtYW5jZUR4ZUVudHJ5UG9pbnQgKA0KPiA+ ICAgIFN0YXR1cyA9IG1Sc2NIYW5kbGVyUHJvdG9jb2wtPlJlZ2lzdGVyIChGcGR0U3RhdHVzQ29k ZUxpc3RlbmVyRHhlLA0KPiA+IFRQTF9ISUdIX0xFVkVMKTsNCj4gPiAgICBBU1NFUlRfRUZJX0VS Uk9SIChTdGF0dXMpOw0KPiA+DQo+ID4gKyAgLy8NCj4gPiArICAvLyBSZWdpc3RlciB0aGUgbm90 aWZ5IGZ1bmN0aW9uIHRvIGluc3RhbGwgRlBEVCBhdCBFbmRPZkR4ZS4NCj4gPiArICAvLw0KPiA+ ICsgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnRFeCAoDQo+ID4gKyAgICAgICAgICAgICAgICAg IEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+ICsgICAgICAgICAgICAgICAgICBUUExfTk9USUZZLA0K PiA+ICsgICAgICAgICAgICAgICAgICBGcGR0RW5kT2ZEeGVFdmVudE5vdGlmeSwNCj4gPiArICAg ICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgJmdFZmlFbmRPZkR4 ZUV2ZW50R3JvdXBHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmRW5kT2ZEeGVFdmVudA0K PiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ID4gKw0KPiA+ICAgIC8vDQo+ID4gICAgLy8gUmVnaXN0ZXIgdGhlIG5vdGlmeSBmdW5j dGlvbiB0byB1cGRhdGUgRlBEVCBvbiBFeGl0Qm9vdFNlcnZpY2VzDQo+IEV2ZW50Lg0KPiA+ICAg IC8vDQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3Bp L0Zpcm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGVEeGUvRmlybQ0KPiA+IHdhcmVQZXJmb3JtYW5j ZUR4ZS5pbmYNCj4gPg0KPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9GaXJtd2FyZVBl cmZvcm1hbmNlRGF0YVRhYmxlRHhlL0Zpcm0NCj4gPiB3YXJlUGVyZm9ybWFuY2VEeGUuaW5mDQo+ ID4gaW5kZXggMWRlYmIwMTkzZS4uMDQxMWEyMmU2NiAxMDA2NDQNCj4gPiAtLS0NCj4gPg0KPiBh L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9GaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxl RHhlL0Zpcm0NCj4gPiB3YXJlUGVyZm9ybWFuY2VEeGUuaW5mDQo+ID4gKysrDQo+ID4NCj4gYi9N ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0FjcGkvRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZUR4 ZS9GaXJtDQo+ID4gd2FyZVBlcmZvcm1hbmNlRHhlLmluZg0KPiA+IEBAIC01LDcgKzUsNyBAQA0K PiA+ICAjICBmb3IgRmlybXdhcmUgQmFzaWMgQm9vdCBQZXJmb3JtYW5jZSBSZWNvcmQgYW5kIG90 aGVyIGJvb3QNCj4gPiBwZXJmb3JtYW5jZSByZWNvcmRzLCAgIyAgYW5kIGluc3RhbGwgRlBEVCB0 byBBQ1BJIHRhYmxlLg0KPiA+ICAjDQo+ID4gLSMgIENvcHlyaWdodCAoYykgMjAxMSAtIDIwMTgs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsj ICBDb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cw0KPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gICMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50ICAjICAjIyBAQCAtNDYsMTINCj4gPiArNDYsMTQgQEAgW0xpYnJh cnlDbGFzc2VzXQ0KPiA+ICAgIEhvYkxpYg0KPiA+ICAgIExvY2tCb3hMaWINCj4gPiAgICBVZWZp TGliDQo+ID4gKyAgVmFyaWFibGVQb2xpY3lIZWxwZXJMaWINCj4gPg0KPiA+ICBbUHJvdG9jb2xz XQ0KPiA+ICAgIGdFZmlBY3BpVGFibGVQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAj IyBDT05TVU1FUw0KPiA+ICAgIGdFZmlSc2NIYW5kbGVyUHJvdG9jb2xHdWlkICAgICAgICAgICAg ICAgICAgICAjIyBDT05TVU1FUw0KPiA+ICAgIGdFZmlWYXJpYWJsZUFyY2hQcm90b2NvbEd1aWQg ICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ICAgIGdFZmlMb2NrQm94UHJvdG9jb2xH dWlkICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ICsgIGdFZGtpaVZhcmlh YmxlUG9saWN5UHJvdG9jb2xHdWlkICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+DQo+ID4g IFtHdWlkc10NCj4gPiAgICBnRWZpRXZlbnRFeGl0Qm9vdFNlcnZpY2VzR3VpZCAgICAgICAgICAg ICAgICAgIyMgQ09OU1VNRVMNCj4gPiAjIyBFdmVudA0KPiA+IEBAIC02Myw2ICs2NSw3IEBAIFtH dWlkc10NCj4gPiAgICBnRWZpRmlybXdhcmVQZXJmb3JtYW5jZUd1aWQNCj4gPiAgICBnRWRraWlG cGR0RXh0ZW5kZWRGaXJtd2FyZVBlcmZvcm1hbmNlR3VpZCAgICAgIyMNCj4gPiBTT01FVElNRVNf Q09OU1VNRVMgIyMgVU5ERUZJTkVEICMgU3RhdHVzQ29kZSBEYXRhDQo+ID4gICAgZ0Zpcm13YXJl UGVyZm9ybWFuY2VTM1BvaW50ZXJHdWlkICAgICAgICAgICAgICMjIFBST0RVQ0VTICMjDQo+ID4g VU5ERUZJTkVEICMgU2F2ZUxvY2tCb3gNCj4gPiArICBnRWZpRW5kT2ZEeGVFdmVudEdyb3VwR3Vp ZCAgICAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMgIyMNCj4gPiBFdmVudA0KPiA+DQo+ID4g IFtQY2RdDQo+ID4gICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFByb2dyZXNz Q29kZU9zTG9hZGVyTG9hZA0KPiA+ICMjIENPTlNVTUVTDQo+ID4gQEAgLTcyLDYgKzc1LDcgQEAg W1BjZF0NCj4gPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWNwaURlZmF1 bHRPZW1SZXZpc2lvbg0KPiA+ICMjIENPTlNVTUVTDQo+ID4gICAgZ0VmaU1kZU1vZHVsZVBrZ1Rv a2VuU3BhY2VHdWlkLlBjZEFjcGlEZWZhdWx0Q3JlYXRvcklkICAgICAgICAjIw0KPiA+IENPTlNV TUVTDQo+ID4gICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEFjcGlEZWZhdWx0 Q3JlYXRvclJldmlzaW9uICAjIw0KPiA+IENPTlNVTUVTDQo+ID4gKyAgZ0VmaU1kZVBrZ1Rva2Vu U3BhY2VHdWlkLlBjZFBlcmZvcm1hbmNlTGlicmFyeVByb3BlcnR5TWFzayAgICAjIw0KPiA+IENP TlNVTUVTDQo+ID4NCj4gPiAgW0ZlYXR1cmVQY2RdDQo+ID4NCj4gPg0KPiBnRWZpTWRlTW9kdWxl UGtnVG9rZW5TcGFjZUd1aWQuUGNkRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZVMzUw0KPiB1 DQo+ID4gcHBvcnQgICAjIyBDT05TVU1FUw0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL01kZU1v ZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9GaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlU21tL0Zp cg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1hbmNlQ29tbW9uLmMNCj4gPg0KPiBiL01kZU1vZHVsZVBr Zy9Vbml2ZXJzYWwvQWNwaS9GaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlU21tL0Zpcg0KPiBt DQo+ID4gd2FyZVBlcmZvcm1hbmNlQ29tbW9uLmMNCj4gPiBpbmRleCBlY2FkZWY4NzExLi40N2Ri OWEyZmMwIDEwMDY0NA0KPiA+IC0tLQ0KPiA+DQo+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9B Y3BpL0Zpcm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJlUGVy Zm9ybWFuY2VDb21tb24uYw0KPiA+ICsrKw0KPiA+DQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9BY3BpL0Zpcm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJl UGVyZm9ybWFuY2VDb21tb24uYw0KPiA+IEBAIC0xMSw3ICsxMSw3IEBADQo+ID4NCj4gPiAgICBG cGR0U21pSGFuZGxlcigpIHdpbGwgcmVjZWl2ZSB1bnRydXN0ZWQgaW5wdXQgYW5kIGRvIGJhc2lj IHZhbGlkYXRpb24uDQo+ID4NCj4gPiAtICBDb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDE4LCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0 IChjKSAyMDExIC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4NCj4gPiAgKiovDQo+ID4gQEAgLTI5LDIwICsyOSwxMiBAQA0KPiA+ICAjaW5jbHVkZSA8 TGlicmFyeS9Mb2NrQm94TGliLmg+DQo+ID4gICNpbmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0K PiA+ICAjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gLSNpbmNsdWRlIDxM aWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiAtI2luY2x1ZGUgPExpYnJhcnkvU3lu Y2hyb25pemF0aW9uTGliLmg+DQo+ID4gICNpbmNsdWRlICJGaXJtd2FyZVBlcmZvcm1hbmNlQ29t bW9uLmgiDQo+ID4NCj4gPiAtU01NX0JPT1RfUEVSRk9STUFOQ0VfVEFCTEUgICAgKm1NbUJvb3RQ ZXJmb3JtYW5jZVRhYmxlID0NCj4gPiBOVUxMOw0KPiA+DQo+ID4gIEVGSV9NTV9SU0NfSEFORExF Ul9QUk9UT0NPTCAgICptUnNjSGFuZGxlclByb3RvY29sICAgID0gTlVMTDsNCj4gPiAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICAgICAgbVN1c3BlbmRTdGFydFRpbWUgICAgICAgPSAwOw0KPiA+ ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICBtUzNTdXNwZW5kTG9ja0JveFNhdmVkICA9 IEZBTFNFOw0KPiA+IC1VSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBtQm9vdFJlY29yZFNp emUgPSAwOw0KPiA+IC1VSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAqbUJvb3RSZWNvcmRC dWZmZXIgPSBOVUxMOw0KPiA+IC0NCj4gPiAtU1BJTl9MT0NLICAgICAgICAgICAgICAgICAgICAg bU1tRnBkdExvY2s7DQo+ID4gLUJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgIG1NbXJhbUlz T3V0T2ZSZXNvdXJjZSA9IEZBTFNFOw0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgIFJlcG9ydCBzdGF0 dXMgY29kZSBsaXN0ZW5lciBmb3IgTU0uIFRoaXMgaXMgdXNlZCB0byByZWNvcmQgdGhlDQo+IHBl cmZvcm1hbmNlDQo+ID4gQEAgLTg0LDIxICs3Niw2IEBAIEZwZHRTdGF0dXNDb2RlTGlzdGVuZXJN bSAoDQo+ID4gICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ICAgIH0NCj4gPg0KPiA+ IC0gIC8vDQo+ID4gLSAgLy8gQ29sbGVjdCBvbmUgb3IgbW9yZSBCb290IHJlY29yZHMgaW4gYm9v dCB0aW1lDQo+ID4gLSAgLy8NCj4gPiAtICBpZiAoRGF0YSAhPSBOVUxMICYmIENvbXBhcmVHdWlk ICgmRGF0YS0+VHlwZSwNCj4gPiAmZ0Vka2lpRnBkdEV4dGVuZGVkRmlybXdhcmVQZXJmb3JtYW5j ZUd1aWQpKSB7DQo+ID4gLSAgICBBY3F1aXJlU3BpbkxvY2sgKCZtTW1GcGR0TG9jayk7DQo+ID4g LSAgICAvLw0KPiA+IC0gICAgLy8gR2V0IHRoZSBib290IHBlcmZvcm1hbmNlIGRhdGEuDQo+ID4g LSAgICAvLw0KPiA+IC0gICAgQ29weU1lbSAoJm1NbUJvb3RQZXJmb3JtYW5jZVRhYmxlLCBEYXRh ICsgMSwgRGF0YS0+U2l6ZSk7DQo+ID4gLSAgICBtQm9vdFJlY29yZEJ1ZmZlciA9ICgoVUlOVDgg KikgKG1NbUJvb3RQZXJmb3JtYW5jZVRhYmxlKSkgKw0KPiBzaXplb2YNCj4gPiAoU01NX0JPT1Rf UEVSRk9STUFOQ0VfVEFCTEUpOw0KPiA+IC0NCj4gPiAtICAgIFJlbGVhc2VTcGluTG9jayAoJm1N bUZwZHRMb2NrKTsNCj4gPiAtICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAtICB9DQo+ID4g LQ0KPiA+ICAgIGlmIChEYXRhICE9IE5VTEwgJiYgQ29tcGFyZUd1aWQgKCZEYXRhLT5UeXBlLA0K PiA+ICZnRWZpRmlybXdhcmVQZXJmb3JtYW5jZUd1aWQpKSB7DQo+ID4gICAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiRnBkdFN0YXR1c0NvZGVMaXN0ZW5lck1tOiBQZXJmb3JtYW5jZQ0KPiA+IGRh dGEgcmVwb3J0ZWQgdGhyb3VnaCBnRWZpRmlybXdhcmVQZXJmb3JtYW5jZUd1aWQgd2lsbCBub3Qg YmUgY29sbGVjdGVkDQo+IGJ5DQo+ID4gRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZU1tXG4i KSk7DQo+ID4gICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+IEBAIC0xNTMsMTE4ICsx MzAsNiBAQCBGcGR0U3RhdHVzQ29kZUxpc3RlbmVyTW0gKA0KPiA+ICAgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gPiAgfQ0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gIENvbW11bmljYXRpb24gc2Vydmlj ZSBTTUkgSGFuZGxlciBlbnRyeS4NCj4gPiAtDQo+ID4gLSAgVGhpcyBTTUkgaGFuZGxlciBwcm92 aWRlcyBzZXJ2aWNlcyBmb3IgcmVwb3J0IE1NIGJvb3QgcmVjb3Jkcy4NCj4gPiAtDQo+ID4gLSAg Q2F1dGlvbjogVGhpcyBmdW5jdGlvbiBtYXkgcmVjZWl2ZSB1bnRydXN0ZWQgaW5wdXQuDQo+ID4g LSAgQ29tbXVuaWNhdGUgYnVmZmVyIGFuZCBidWZmZXIgc2l6ZSBhcmUgZXh0ZXJuYWwgaW5wdXQs IHNvIHRoaXMgZnVuY3Rpb24NCj4gd2lsbA0KPiA+IGRvIGJhc2ljIHZhbGlkYXRpb24uDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbVtpbl0gICAgIERpc3BhdGNoSGFuZGxlICBUaGUgdW5pcXVlIGhhbmRs ZSBhc3NpZ25lZCB0byB0aGlzDQo+ID4gaGFuZGxlciBieSBTbWlIYW5kbGVyUmVnaXN0ZXIoKS4N Cj4gPiAtICBAcGFyYW1baW5dICAgICBSZWdpc3RlckNvbnRleHQgUG9pbnRzIHRvIGFuIG9wdGlv bmFsIGhhbmRsZXIgY29udGV4dA0KPiA+IHdoaWNoIHdhcyBzcGVjaWZpZWQgd2hlbiB0aGUNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciB3YXMgcmVnaXN0ZXJl ZC4NCj4gPiAtICBAcGFyYW1baW4sIG91dF0gQ29tbUJ1ZmZlciAgICAgQSBwb2ludGVyIHRvIGEg Y29sbGVjdGlvbiBvZiBkYXRhIGluDQo+ID4gbWVtb3J5IHRoYXQgd2lsbA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBjb252ZXllZCBmcm9tIGEgbm9uLU1NDQo+ID4g ZW52aXJvbm1lbnQgaW50byBhbiBNTSBlbnZpcm9ubWVudC4NCj4gPiAtICBAcGFyYW1baW4sIG91 dF0gQ29tbUJ1ZmZlclNpemUgVGhlIHNpemUgb2YgdGhlIENvbW1CdWZmZXIuDQo+ID4gLQ0KPiA+ IC0gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGludGVy cnVwdCB3YXMNCj4gPiBoYW5kbGVkIGFuZCBxdWllc2NlZC4gTm8gb3RoZXIgaGFuZGxlcnMNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBz dGlsbCBiZQ0KPiA+IGNhbGxlZC4NCj4gPiAtICBAcmV0dmFsIEVGSV9XQVJOX0lOVEVSUlVQVF9T T1VSQ0VfUVVJRVNDRUQgIFRoZSBpbnRlcnJ1cHQgaGFzDQo+ID4gYmVlbiBxdWllc2NlZCBidXQg b3RoZXIgaGFuZGxlcnMgc2hvdWxkDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGlsbCBiZSBjYWxsZWQuDQo+ID4gLSAgQHJldHZhbCBFRklfV0FS Tl9JTlRFUlJVUFRfU09VUkNFX1BFTkRJTkcgICBUaGUgaW50ZXJydXB0IGlzDQo+ID4gc3RpbGwg cGVuZGluZyBhbmQgb3RoZXIgaGFuZGxlcnMgc2hvdWxkIHN0aWxsDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBjYWxsZWQuDQo+ID4gLSAgQHJl dHZhbCBFRklfSU5URVJSVVBUX1BFTkRJTkcgICAgICAgICAgICAgICBUaGUgaW50ZXJydXB0IGNv dWxkDQo+ID4gbm90IGJlIHF1aWVzY2VkLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLUVGSV9TVEFU VVMNCj4gPiAtRUZJQVBJDQo+ID4gLUZwZHRTbWlIYW5kbGVyICgNCj4gPiAtICBJTiAgICAgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICAgICBEaXNwYXRjaEhhbmRsZSwNCj4gPiAtICBJTiAgICAg Q09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAqUmVnaXN0ZXJDb250ZXh0LA0KPiA+IC0gIElO IE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpDb21tQnVmZmVyLA0KPiA+IC0gIElO IE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICpDb21tQnVmZmVyU2l6ZQ0KPiA+IC0g ICkNCj4gPiAtew0KPiA+IC0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiA+IC0gIFNNTV9CT09UX1JFQ09SRF9DT01NVU5JQ0FURSAgKlNtbUNvbW1EYXRhOw0KPiA+IC0g IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgQm9vdFJlY29yZE9mZnNldDsNCj4gPiAtICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgIEJvb3RSZWNvcmRTaXplOw0KPiA+IC0gIFZPSUQg ICAgICAgICAgICAgICAgICAgICAgICAgKkJvb3RSZWNvcmREYXRhOw0KPiA+IC0gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgVGVtcENvbW1CdWZmZXJTaXplOw0KPiA+IC0NCj4gPiAtICAv Lw0KPiA+IC0gIC8vIElmIGlucHV0IGlzIGludmFsaWQsIHN0b3AgcHJvY2Vzc2luZyB0aGlzIFNN SQ0KPiA+IC0gIC8vDQo+ID4gLSAgaWYgKENvbW1CdWZmZXIgPT0gTlVMTCB8fCBDb21tQnVmZmVy U2l6ZSA9PSBOVUxMKSB7DQo+ID4gLSAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gLSAgfQ0K PiA+IC0NCj4gPiAtICBUZW1wQ29tbUJ1ZmZlclNpemUgPSAqQ29tbUJ1ZmZlclNpemU7DQo+ID4g LQ0KPiA+IC0gIGlmKFRlbXBDb21tQnVmZmVyU2l6ZSA8IHNpemVvZg0KPiAoU01NX0JPT1RfUkVD T1JEX0NPTU1VTklDQVRFKSkNCj4gPiB7DQo+ID4gLSAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4gLSAgfQ0KPiA+IC0NCj4gPiAtICBpZiAoIUlzQnVmZmVyT3V0c2lkZU1tVmFsaWQgKChVSU5U TilDb21tQnVmZmVyLA0KPiBUZW1wQ29tbUJ1ZmZlclNpemUpKQ0KPiA+IHsNCj4gPiAtICAgIERF QlVHICgoREVCVUdfRVJST1IsICJGcGR0U21pSGFuZGxlcjogTU0gY29tbXVuaWNhdGlvbiBkYXRh DQo+ID4gYnVmZmVyIGluIE1NUkFNIG9yIG92ZXJmbG93IVxuIikpOw0KPiA+IC0gICAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gLSAgU21tQ29tbURhdGEgPQ0KPiAo U01NX0JPT1RfUkVDT1JEX0NPTU1VTklDQVRFKilDb21tQnVmZmVyOw0KPiA+IC0NCj4gPiAtICBT dGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiAtDQo+ID4gLSAgc3dpdGNoIChTbW1Db21tRGF0YS0+ RnVuY3Rpb24pIHsNCj4gPiAtICAgIGNhc2UgU01NX0ZQRFRfRlVOQ1RJT05fR0VUX0JPT1RfUkVD T1JEX1NJWkUgOg0KPiA+IC0gICAgICBpZiAobU1tQm9vdFBlcmZvcm1hbmNlVGFibGUgIT0gTlVM TCkgew0KPiA+IC0gICAgICAgIG1Cb290UmVjb3JkU2l6ZSA9IG1NbUJvb3RQZXJmb3JtYW5jZVRh YmxlLT5IZWFkZXIuTGVuZ3RoIC0NCj4gPiBzaXplb2YgKFNNTV9CT09UX1BFUkZPUk1BTkNFX1RB QkxFKTsNCj4gPiAtICAgICAgfQ0KPiA+IC0gICAgICBTbW1Db21tRGF0YS0+Qm9vdFJlY29yZFNp emUgPSBtQm9vdFJlY29yZFNpemU7DQo+ID4gLSAgICAgIGJyZWFrOw0KPiA+IC0NCj4gPiAtICAg IGNhc2UgU01NX0ZQRFRfRlVOQ1RJT05fR0VUX0JPT1RfUkVDT1JEX0RBVEEgOg0KPiA+IC0gICAg ICBTdGF0dXMgPSBFRklfVU5TVVBQT1JURUQ7DQo+ID4gLSAgICAgIGJyZWFrOw0KPiA+IC0NCj4g PiAtICAgIGNhc2UgU01NX0ZQRFRfRlVOQ1RJT05fR0VUX0JPT1RfUkVDT1JEX0RBVEFfQllfT0ZG U0VUIDoNCj4gPiAtICAgICAgQm9vdFJlY29yZE9mZnNldCA9IFNtbUNvbW1EYXRhLT5Cb290UmVj b3JkT2Zmc2V0Ow0KPiA+IC0gICAgICBCb290UmVjb3JkRGF0YSAgID0gU21tQ29tbURhdGEtPkJv b3RSZWNvcmREYXRhOw0KPiA+IC0gICAgICBCb290UmVjb3JkU2l6ZSAgID0gU21tQ29tbURhdGEt PkJvb3RSZWNvcmRTaXplOw0KPiA+IC0gICAgICBpZiAoQm9vdFJlY29yZERhdGEgPT0gTlVMTCB8 fCBCb290UmVjb3JkT2Zmc2V0ID49DQo+ID4gbUJvb3RSZWNvcmRTaXplKSB7DQo+ID4gLSAgICAg ICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+IC0gICAgICAgIGJyZWFrOw0K PiA+IC0gICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAvLw0KPiA+IC0gICAgICAvLyBTYW5pdHkg Y2hlY2sNCj4gPiAtICAgICAgLy8NCj4gPiAtICAgICAgaWYgKEJvb3RSZWNvcmRTaXplID4gbUJv b3RSZWNvcmRTaXplIC0gQm9vdFJlY29yZE9mZnNldCkgew0KPiA+IC0gICAgICAgIEJvb3RSZWNv cmRTaXplID0gbUJvb3RSZWNvcmRTaXplIC0gQm9vdFJlY29yZE9mZnNldDsNCj4gPiAtICAgICAg fQ0KPiA+IC0gICAgICBTbW1Db21tRGF0YS0+Qm9vdFJlY29yZFNpemUgPSBCb290UmVjb3JkU2l6 ZTsNCj4gPiAtICAgICAgaWYgKCFJc0J1ZmZlck91dHNpZGVNbVZhbGlkICgoVUlOVE4pQm9vdFJl Y29yZERhdGEsDQo+ID4gQm9vdFJlY29yZFNpemUpKSB7DQo+ID4gLSAgICAgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkZwZHRTbWlIYW5kbGVyOiBNTSBEYXRhIGJ1ZmZlciBpbg0KPiA+IE1NUkFN IG9yIG92ZXJmbG93IVxuIikpOw0KPiA+IC0gICAgICAgIFN0YXR1cyA9IEVGSV9BQ0NFU1NfREVO SUVEOw0KPiA+IC0gICAgICAgIGJyZWFrOw0KPiA+IC0gICAgICB9DQo+ID4gLQ0KPiA+IC0gICAg ICBDb3B5TWVtICgNCj4gPiAtICAgICAgIChVSU5UOCopQm9vdFJlY29yZERhdGEsDQo+ID4gLSAg ICAgICBtQm9vdFJlY29yZEJ1ZmZlciArIEJvb3RSZWNvcmRPZmZzZXQsDQo+ID4gLSAgICAgICBC b290UmVjb3JkU2l6ZQ0KPiA+IC0gICAgICAgKTsNCj4gPiAtICAgICAgYnJlYWs7DQo+ID4gLQ0K PiA+IC0gICAgZGVmYXVsdDoNCj4gPiAtICAgICAgU3RhdHVzID0gRUZJX1VOU1VQUE9SVEVEOw0K PiA+IC0gIH0NCj4gPiAtDQo+ID4gLSAgU21tQ29tbURhdGEtPlJldHVyblN0YXR1cyA9IFN0YXR1 czsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+IC19DQo+ID4gLQ0KPiA+ ICAvKioNCj4gPiAgICBUaGUgbW9kdWxlIEVudHJ5IFBvaW50IG9mIHRoZSBGaXJtd2FyZSBQZXJm b3JtYW5jZSBEYXRhIFRhYmxlIE1NDQo+ID4gZHJpdmVyLg0KPiA+DQo+ID4gQEAgLTI3OCwxMiAr MTQzLDYgQEAgRmlybXdhcmVQZXJmb3JtYW5jZUNvbW1vbkVudHJ5UG9pbnQgKA0KPiA+ICAgICkN Cj4gPiAgew0KPiA+ICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+IC0g IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSGFuZGxlOw0KPiA+IC0NCj4gPiAtICAvLw0KPiA+ IC0gIC8vIEluaXRpYWxpemUgc3BpbiBsb2NrDQo+ID4gLSAgLy8NCj4gPiAtICBJbml0aWFsaXpl U3BpbkxvY2sgKCZtTW1GcGR0TG9jayk7DQo+ID4NCj4gPiAgICAvLw0KPiA+ICAgIC8vIEdldCBN TSBSZXBvcnQgU3RhdHVzIENvZGUgSGFuZGxlciBQcm90b2NvbC4NCj4gPiBAQCAtMzAxLDEyICsx NjAsNSBAQCBGaXJtd2FyZVBlcmZvcm1hbmNlQ29tbW9uRW50cnlQb2ludCAoDQo+ID4gICAgU3Rh dHVzID0gbVJzY0hhbmRsZXJQcm90b2NvbC0+UmVnaXN0ZXIgKEZwZHRTdGF0dXNDb2RlTGlzdGVu ZXJNbSk7DQo+ID4gICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPg0KPiA+IC0gIC8v DQo+ID4gLSAgLy8gUmVnaXN0ZXIgU01JIGhhbmRsZXIuDQo+ID4gLSAgLy8NCj4gPiAtICBIYW5k bGUgPSBOVUxMOw0KPiA+IC0gIFN0YXR1cyA9IGdNbXN0LT5NbWlIYW5kbGVyUmVnaXN0ZXIgKEZw ZHRTbWlIYW5kbGVyLA0KPiA+ICZnRWZpRmlybXdhcmVQZXJmb3JtYW5jZUd1aWQsICZIYW5kbGUp Ow0KPiA+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gLQ0KPiA+ICAgIHJldHVy biBTdGF0dXM7DQo+ID4gIH0NCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0FjcGkvRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZVNtbS9GaXINCj4gbQ0K PiA+IHdhcmVQZXJmb3JtYW5jZUNvbW1vbi5oDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVy c2FsL0FjcGkvRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZVNtbS9GaXINCj4gbQ0KPiA+IHdh cmVQZXJmb3JtYW5jZUNvbW1vbi5oDQo+ID4gaW5kZXggMGZiZGFjMDJkZS4uMDY0MGM0OGRiNyAx MDA2NDQNCj4gPiAtLS0NCj4gPg0KPiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9GaXJt d2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlU21tL0Zpcg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1hbmNl Q29tbW9uLmgNCj4gPiArKysNCj4gPg0KPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9G aXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlU21tL0Zpcg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1h bmNlQ29tbW9uLmgNCj4gPiBAQCAtMTEsNyArMTEsNyBAQA0KPiA+DQo+ID4gICAgRnBkdFNtaUhh bmRsZXIoKSB3aWxsIHJlY2VpdmUgdW50cnVzdGVkIGlucHV0IGFuZCBkbyBiYXNpYyB2YWxpZGF0 aW9uLg0KPiA+DQo+ID4gLSAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxOCwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAx MSAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g PiAgICBDb3B5cmlnaHQgKGMpLCBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4gICAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+IEBAIC0yMCwy MSArMjAsNiBAQA0KPiA+ICAjaWZuZGVmIF9GV19QRVJGX0NPTU1PTl9IXw0KPiA+ICAjZGVmaW5l IF9GV19QRVJGX0NPTU1PTl9IXw0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gIFRoaXMgZnVuY3Rpb24g aXMgYW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIE1tDQo+ IGJ1ZmZlcg0KPiA+IHZhbGlkYXRpb24gcm91dGluZS4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtIEJ1 ZmZlciAgVGhlIGJ1ZmZlciBzdGFydCBhZGRyZXNzIHRvIGJlIGNoZWNrZWQuDQo+ID4gLSAgQHBh cmFtIExlbmd0aCAgVGhlIGJ1ZmZlciBsZW5ndGggdG8gYmUgY2hlY2tlZC4NCj4gPiAtDQo+ID4g LSAgQHJldHZhbCBUUlVFICBUaGlzIGJ1ZmZlciBpcyB2YWxpZCBwZXIgcHJvY2Vzc29yIGFyY2hp dGVjdHVyZSBhbmQgbm90DQo+ID4gb3ZlcmxhcCB3aXRoIFNNUkFNLg0KPiA+IC0gIEByZXR2YWwg RkFMU0UgVGhpcyBidWZmZXIgaXMgbm90IHZhbGlkIHBlciBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJl IG9yDQo+IG92ZXJsYXANCj4gPiB3aXRoIFNNUkFNLg0KPiA+IC0qKi8NCj4gPiAtQk9PTEVBTg0K PiA+IC1Jc0J1ZmZlck91dHNpZGVNbVZhbGlkICgNCj4gPiAtICBJTiBFRklfUEhZU0lDQUxfQURE UkVTUyAgQnVmZmVyLA0KPiA+IC0gIElOIFVJTlQ2NCAgICAgICAgICAgICAgICBMZW5ndGgNCj4g PiAtICApOw0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgVGhlIG1vZHVsZSBFbnRyeSBQb2ludCBv ZiB0aGUgRmlybXdhcmUgUGVyZm9ybWFuY2UgRGF0YSBUYWJsZSBNTQ0KPiA+IGRyaXZlci4NCj4g Pg0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9G aXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlU21tL0Zpcg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1h bmNlU21tLmluZg0KPiA+DQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3BpL0Zpcm13YXJl UGVyZm9ybWFuY2VEYXRhVGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJlUGVyZm9ybWFuY2VTbW0u aW5mDQo+ID4gaW5kZXggYjcxOTRiZDg5OS4uYTRkYTBiYThiMiAxMDA2NDQNCj4gPiAtLS0NCj4g Pg0KPiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9GaXJtd2FyZVBlcmZvcm1hbmNlRGF0 YVRhYmxlU21tL0Zpcg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1hbmNlU21tLmluZg0KPiA+ICsrKw0K PiA+DQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3BpL0Zpcm13YXJlUGVyZm9ybWFuY2VE YXRhVGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJlUGVyZm9ybWFuY2VTbW0uaW5mDQo+ID4gQEAg LTQsNyArNCw3IEBADQo+ID4gICMgIFRoaXMgbW9kdWxlIHJlZ2lzdGVycyByZXBvcnQgc3RhdHVz IGNvZGUgbGlzdGVuZXIgdG8gY29sbGVjdA0KPiBwZXJmb3JtYW5jZQ0KPiA+IGRhdGENCj4gPiAg IyAgZm9yIFNNTSBib290IHBlcmZvcm1hbmNlIHJlY29yZHMgYW5kIFMzIFN1c3BlbmQgUGVyZm9y bWFuY2UNCj4gUmVjb3JkLg0KPiA+ICAjDQo+ID4gLSMgIENvcHlyaWdodCAoYykgMjAxMSAtIDIw MTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIyAg Q29weXJpZ2h0IChjKSAyMDExIC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ICAjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ICAjDQo+ID4gICMjDQo+ID4gQEAgLTUyLDEwICs1Miw4IEBAIFtQcm90 b2NvbHNdDQo+ID4NCj4gPiAgW0d1aWRzXQ0KPiA+ICAgICMjIFNPTUVUSU1FU19QUk9EVUNFUyAg ICMjIFVOREVGSU5FRCAjIFNhdmVMb2NrQm94DQo+ID4gLSAgIyMgUFJPRFVDRVMgICAgICAgICAg ICAgIyMgVU5ERUZJTkVEICMgU21pSGFuZGxlclJlZ2lzdGVyDQo+ID4gICAgIyMgU09NRVRJTUVT X0NPTlNVTUVTICAgIyMgVU5ERUZJTkVEICMgU3RhdHVzQ29kZSBEYXRhDQo+ID4gICAgZ0VmaUZp cm13YXJlUGVyZm9ybWFuY2VHdWlkDQo+ID4gLSAgZ0Vka2lpRnBkdEV4dGVuZGVkRmlybXdhcmVQ ZXJmb3JtYW5jZUd1aWQgICMjDQo+ID4gU09NRVRJTUVTX1BST0RVQ0VTICMjIFVOREVGSU5FRCAj IFN0YXR1c0NvZGUgRGF0YQ0KPiA+DQo+ID4gIFtQY2RdDQo+ID4gICAgZ0VmaU1kZU1vZHVsZVBr Z1Rva2VuU3BhY2VHdWlkLlBjZFByb2dyZXNzQ29kZVMzU3VzcGVuZFN0YXJ0DQo+ICMjDQo+ID4g Q09OU1VNRVMNCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2Fs L0FjcGkvRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZVNtbS9GaXINCj4gbQ0KPiA+IHdhcmVQ ZXJmb3JtYW5jZVN0YW5kYWxvbmVNbS5jDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2Fs L0FjcGkvRmlybXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZVNtbS9GaXINCj4gbQ0KPiA+IHdhcmVQ ZXJmb3JtYW5jZVN0YW5kYWxvbmVNbS5jDQo+ID4gaW5kZXggZDdkYTYxYzk4Yy4uYmU1MmQ4Y2U5 MCAxMDA2NDQNCj4gPiAtLS0NCj4gPg0KPiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9G aXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlU21tL0Zpcg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1h bmNlU3RhbmRhbG9uZU1tLmMNCj4gPiArKysNCj4gPg0KPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJz YWwvQWNwaS9GaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxlU21tL0Zpcg0KPiBtDQo+ID4gd2Fy ZVBlcmZvcm1hbmNlU3RhbmRhbG9uZU1tLmMNCj4gPiBAQCAtMTEsNyArMTEsNyBAQA0KPiA+DQo+ ID4gICAgRnBkdFNtaUhhbmRsZXIoKSB3aWxsIHJlY2VpdmUgdW50cnVzdGVkIGlucHV0IGFuZCBk byBiYXNpYyB2YWxpZGF0aW9uLg0KPiA+DQo+ID4gLSAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAx OCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENv cHlyaWdodCAoYykgMjAxMSAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiAgICBDb3B5cmlnaHQgKGMpLCBNaWNyb3NvZnQgQ29ycG9yYXRpb24u DQo+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g Pg0KPiA+IEBAIC0xOSwyNyArMTksOCBAQA0KPiA+DQo+ID4gICNpbmNsdWRlIDxQaU1tLmg+DQo+ ID4NCj4gPiAtI2luY2x1ZGUgPExpYnJhcnkvU3RhbmRhbG9uZU1tTWVtTGliLmg+DQo+ID4gICNp bmNsdWRlICJGaXJtd2FyZVBlcmZvcm1hbmNlQ29tbW9uLmgiDQo+ID4NCj4gPiAtLyoqDQo+ID4g LSAgVGhpcyBmdW5jdGlvbiBpcyBhbiBhYnN0cmFjdGlvbiBsYXllciBmb3IgaW1wbGVtZW50YXRp b24gc3BlY2lmaWMgTW0NCj4gYnVmZmVyDQo+ID4gdmFsaWRhdGlvbiByb3V0aW5lLg0KPiA+IC0N Cj4gPiAtICBAcGFyYW0gQnVmZmVyICBUaGUgYnVmZmVyIHN0YXJ0IGFkZHJlc3MgdG8gYmUgY2hl Y2tlZC4NCj4gPiAtICBAcGFyYW0gTGVuZ3RoICBUaGUgYnVmZmVyIGxlbmd0aCB0byBiZSBjaGVj a2VkLg0KPiA+IC0NCj4gPiAtICBAcmV0dmFsIFRSVUUgIFRoaXMgYnVmZmVyIGlzIHZhbGlkIHBl ciBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIGFuZCBub3QNCj4gPiBvdmVybGFwIHdpdGggU01SQU0u DQo+ID4gLSAgQHJldHZhbCBGQUxTRSBUaGlzIGJ1ZmZlciBpcyBub3QgdmFsaWQgcGVyIHByb2Nl c3NvciBhcmNoaXRlY3R1cmUgb3INCj4gb3ZlcmxhcA0KPiA+IHdpdGggU01SQU0uDQo+ID4gLSoq Lw0KPiA+IC1CT09MRUFODQo+ID4gLUlzQnVmZmVyT3V0c2lkZU1tVmFsaWQgKA0KPiA+IC0gIElO IEVGSV9QSFlTSUNBTF9BRERSRVNTICBCdWZmZXIsDQo+ID4gLSAgSU4gVUlOVDY0ICAgICAgICAg ICAgICAgIExlbmd0aA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIHJldHVybiBNbUlzQnVmZmVy T3V0c2lkZU1tVmFsaWQgKEJ1ZmZlciwgTGVuZ3RoKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAgLyoq DQo+ID4gICAgVGhlIG1vZHVsZSBFbnRyeSBQb2ludCBvZiB0aGUgRmlybXdhcmUgUGVyZm9ybWFu Y2UgRGF0YSBUYWJsZSBNTQ0KPiA+IGRyaXZlci4NCj4gPg0KPiA+IGRpZmYgLS1naXQNCj4gPg0K PiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9GaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRh YmxlU21tL0Zpcg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1hbmNlU3RhbmRhbG9uZU1tLmluZg0KPiA+ DQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3BpL0Zpcm13YXJlUGVyZm9ybWFuY2VEYXRh VGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJlUGVyZm9ybWFuY2VTdGFuZGFsb25lTW0uaW5mDQo+ ID4gaW5kZXggZTZhYWQ4OGJlMC4uZmFiZTMwYjA3MSAxMDA2NDQNCj4gPiAtLS0NCj4gPg0KPiBh L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9GaXJtd2FyZVBlcmZvcm1hbmNlRGF0YVRhYmxl U21tL0Zpcg0KPiBtDQo+ID4gd2FyZVBlcmZvcm1hbmNlU3RhbmRhbG9uZU1tLmluZg0KPiA+ICsr Kw0KPiA+DQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3BpL0Zpcm13YXJlUGVyZm9ybWFu Y2VEYXRhVGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJlUGVyZm9ybWFuY2VTdGFuZGFsb25lTW0u aW5mDQo+ID4gQEAgLTQsNyArNCw3IEBADQo+ID4gICMgIFRoaXMgbW9kdWxlIHJlZ2lzdGVycyBy ZXBvcnQgc3RhdHVzIGNvZGUgbGlzdGVuZXIgdG8gY29sbGVjdA0KPiBwZXJmb3JtYW5jZQ0KPiA+ IGRhdGENCj4gPiAgIyAgZm9yIFNNTSBib290IHBlcmZvcm1hbmNlIHJlY29yZHMgYW5kIFMzIFN1 c3BlbmQgUGVyZm9ybWFuY2UNCj4gUmVjb3JkLg0KPiA+ICAjDQo+ID4gLSMgIENvcHlyaWdodCAo YykgMjAxMSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAjICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29m dCBDb3Jwb3JhdGlvbi4NCj4gPiAgIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiAgIw0KPiA+IEBAIC01MywxMCArNTMsOCBAQCBbUHJvdG9jb2xzXQ0K PiA+DQo+ID4gIFtHdWlkc10NCj4gPiAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICAjIyBVTkRF RklORUQgIyBTYXZlTG9ja0JveA0KPiA+IC0gICMjIFBST0RVQ0VTICAgICAgICAgICAgICMjIFVO REVGSU5FRCAjIFNtaUhhbmRsZXJSZWdpc3Rlcg0KPiA+ICAgICMjIFNPTUVUSU1FU19DT05TVU1F UyAgICMjIFVOREVGSU5FRCAjIFN0YXR1c0NvZGUgRGF0YQ0KPiA+ICAgIGdFZmlGaXJtd2FyZVBl cmZvcm1hbmNlR3VpZA0KPiA+IC0gIGdFZGtpaUZwZHRFeHRlbmRlZEZpcm13YXJlUGVyZm9ybWFu Y2VHdWlkICAjIw0KPiA+IFNPTUVUSU1FU19QUk9EVUNFUyAjIyBVTkRFRklORUQgIyBTdGF0dXND b2RlIERhdGENCj4gPg0KPiA+ICBbUGNkXQ0KPiA+ICAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNw YWNlR3VpZC5QY2RQcm9ncmVzc0NvZGVTM1N1c3BlbmRTdGFydA0KPiAjIw0KPiA+IENPTlNVTUVT DQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3BpL0Zp cm13YXJlUGVyZm9ybWFuY2VEYXRhVGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJlUGVyZm9ybWFu Y2VUcmFkaXRpb25hbC5jDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0FjcGkvRmly bXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZVNtbS9GaXINCj4gbQ0KPiA+IHdhcmVQZXJmb3JtYW5j ZVRyYWRpdGlvbmFsLmMNCj4gPiBpbmRleCA0M2MwNTBkNmI1Li41YmQzOGIwZWYzIDEwMDY0NA0K PiA+IC0tLQ0KPiA+DQo+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9BY3BpL0Zpcm13YXJlUGVy Zm9ybWFuY2VEYXRhVGFibGVTbW0vRmlyDQo+IG0NCj4gPiB3YXJlUGVyZm9ybWFuY2VUcmFkaXRp b25hbC5jDQo+ID4gKysrDQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0FjcGkvRmly bXdhcmVQZXJmb3JtYW5jZURhdGFUYWJsZVNtbS9GaXINCj4gbQ0KPiA+IHdhcmVQZXJmb3JtYW5j ZVRyYWRpdGlvbmFsLmMNCj4gPiBAQCAtMTEsNyArMTEsNyBAQA0KPiA+DQo+ID4gICAgRnBkdFNt aUhhbmRsZXIoKSB3aWxsIHJlY2VpdmUgdW50cnVzdGVkIGlucHV0IGFuZCBkbyBiYXNpYyB2YWxp ZGF0aW9uLg0KPiA+DQo+ID4gLSAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxOCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykg MjAxMSAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gPiAgICBDb3B5cmlnaHQgKGMpLCBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4gICAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+IEBAIC0x OSwyNyArMTksOCBAQA0KPiA+DQo+ID4gICNpbmNsdWRlIDxQaVNtbS5oPg0KPiA+DQo+ID4gLSNp bmNsdWRlIDxMaWJyYXJ5L1NtbU1lbUxpYi5oPg0KPiA+ICAjaW5jbHVkZSAiRmlybXdhcmVQZXJm b3JtYW5jZUNvbW1vbi5oIg0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gIFRoaXMgZnVuY3Rpb24gaXMg YW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIE1tDQo+IGJ1 ZmZlcg0KPiA+IHZhbGlkYXRpb24gcm91dGluZS4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtIEJ1ZmZl ciAgVGhlIGJ1ZmZlciBzdGFydCBhZGRyZXNzIHRvIGJlIGNoZWNrZWQuDQo+ID4gLSAgQHBhcmFt IExlbmd0aCAgVGhlIGJ1ZmZlciBsZW5ndGggdG8gYmUgY2hlY2tlZC4NCj4gPiAtDQo+ID4gLSAg QHJldHZhbCBUUlVFICBUaGlzIGJ1ZmZlciBpcyB2YWxpZCBwZXIgcHJvY2Vzc29yIGFyY2hpdGVj dHVyZSBhbmQgbm90DQo+ID4gb3ZlcmxhcCB3aXRoIFNNUkFNLg0KPiA+IC0gIEByZXR2YWwgRkFM U0UgVGhpcyBidWZmZXIgaXMgbm90IHZhbGlkIHBlciBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIG9y DQo+IG92ZXJsYXANCj4gPiB3aXRoIFNNUkFNLg0KPiA+IC0qKi8NCj4gPiAtQk9PTEVBTg0KPiA+ IC1Jc0J1ZmZlck91dHNpZGVNbVZhbGlkICgNCj4gPiAtICBJTiBFRklfUEhZU0lDQUxfQUREUkVT UyAgQnVmZmVyLA0KPiA+IC0gIElOIFVJTlQ2NCAgICAgICAgICAgICAgICBMZW5ndGgNCj4gPiAt ICApDQo+ID4gLXsNCj4gPiAtICByZXR1cm4gU21tSXNCdWZmZXJPdXRzaWRlU21tVmFsaWQgKEJ1 ZmZlciwgTGVuZ3RoKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgVGhlIG1vZHVs ZSBFbnRyeSBQb2ludCBvZiB0aGUgRmlybXdhcmUgUGVyZm9ybWFuY2UgRGF0YSBUYWJsZSBNTQ0K PiA+IGRyaXZlci4NCj4gPg0KPiA+IC0tDQo+ID4gMi4xOC4wLndpbmRvd3MuMQ0KPiA+DQo+ID4N Cj4gPg0KPiA+IA0KPiA+DQo+IA0KPiANCg0K