Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tieEH-000kZt-Gc for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Feb 2025 18:46:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tieEF-00CU3Q-Ip for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Feb 2025 18:46:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tieEE-00CU1y-Kv for pgsql-hackers@lists.postgresql.org; Thu, 13 Feb 2025 18:46:27 +0000 Received: from smtp-fw-2101.amazon.com ([72.21.196.25]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tieEC-000d8d-0m for pgsql-hackers@postgresql.org; Thu, 13 Feb 2025 18:46:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1739472384; x=1771008384; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=tFyHNUGdfssb3WIgXt5GuHhq6lptmaCUDg3KaLtBUdE=; b=ZMTmjZF7FmNFLcnQUxYjBwknc5tqky9y1EZm3ygFHOGew7GP9mRyF3oi oSkGZveg50/sS8MWCfs4F90w5K4M+nbyytPT8jTyinBOdMXKlMWboRGHE s74+0O/UaiVzhOLaBuIVezuEn+UvsBJWgvsE77T7vX5SksXnMTHJbTrxl U=; X-Amazon-filename: v5-0001-Expand-HOT-update-path-to-include-expression-and-.patch X-Secure-Attach-Ingestion: ProdSecureAttachHeaderAddedFromMessageFilter X-IronPort-AV: E=Sophos;i="6.13,282,1732579200"; d="scan'208,217,223";a="466638861" Subject: Re: Expanding HOT updates for expression and partial indexes Thread-Topic: Expanding HOT updates for expression and partial indexes Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.43.8.6]) by smtp-border-fw-2101.iad2.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 18:46:19 +0000 Received: from EX19MTAUEC002.ant.amazon.com [10.0.44.209:39514] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.40.185:2525] with esmtp (Farcaster) id d3bf57d4-2235-4503-b357-11c7224a6c6d; Thu, 13 Feb 2025 18:46:19 +0000 (UTC) X-Farcaster-Flow-ID: d3bf57d4-2235-4503-b357-11c7224a6c6d Received: from EX19D018UEC004.ant.amazon.com (10.252.135.223) by EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Thu, 13 Feb 2025 18:46:19 +0000 Received: from EX19D018UEC003.ant.amazon.com (10.252.135.218) by EX19D018UEC004.ant.amazon.com (10.252.135.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Thu, 13 Feb 2025 18:46:18 +0000 Received: from EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004]) by EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004%3]) with mapi id 15.02.1544.014; Thu, 13 Feb 2025 18:46:18 +0000 From: "Burd, Greg" To: Matthias van de Meent CC: "pgsql-hackers@postgresql.org" Thread-Index: AQHbeOXmdtbUqSdSp0SlUCqonUkHPbNAzZYAgAAfqwCAAbYDgIAC+gYA Date: Thu, 13 Feb 2025 18:46:18 +0000 Message-ID: References: <78574B24-BE0A-42C5-8075-3FA9FA63B8FC@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.106.178.14] Content-Type: multipart/mixed; boundary="_004_EA519A89282D453588C6C79588FF1DA8amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_EA519A89282D453588C6C79588FF1DA8amazoncom_ Content-Type: multipart/alternative; boundary="_000_EA519A89282D453588C6C79588FF1DA8amazoncom_" --_000_EA519A89282D453588C6C79588FF1DA8amazoncom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXR0YWNoZWQgZmluZCBhbiB1cGRhdGVkIHBhdGNoc2V0IHY1IHRoYXQgaXMgYW4gZXZvbHV0aW9u IG9mIHY0Lg0KDQpDaGFuZ2VzIHY0IHRvIHY1IGFyZToNCiogcmVwbGFjZWQgR1VDIHdpdGggdGFi bGUgcmVsb3B0aW9uIGNhbGxlZCAiZXhwcmVzc2lvbl9jaGVja3MiIChvcGVuIHRvIG90aGVyIG5h bWUgaWRlYXMpDQoqIG1pbmltYWwgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIHRvIFJFQURNRS5IT1Qg dG8gYWRkcmVzcyBjaGFuZ2VzDQoqIGF2b2lkLCB3aGVuIHBvc3NpYmxlLCB0aGUgZXhwZW5zaXZl IHBhdGggdGhhdCByZXF1aXJlcyBldmFsdWF0aW5nIGFuIGVzdGF0ZSB1c2luZyBiaXRtYXBzDQoq IGRldGVybWluZXMgdGhlIHNldCBvZiBzdW1tYXJpemVkIGluZGV4ZXMgcmVxdWlyaW5nIHVwZGF0 ZXMsIG9ubHkgdXBkYXRlcyB0aG9zZQ0KKiBtb3JlIHRlc3RzIGluIGhlYXBfaG90X3VwZGF0ZXMu c3FsIChwZXJoYXBzIHRvbyBtYW55Li4uKQ0KKiByZWJhc2VkIHRvIG1hc3RlciwgZm9ybWF0dGVk LCBhbmQgbWFrZSBjaGVjay13b3JsZCBwYXNzZXMNCg0KTW9yZSBjb21tZW50cyBpbiBjb250ZXh0 IGJlbG93Li4uDQoNCi1ncmVnDQoNCg0KDQo+IE9uIEZlYiAxMSwgMjAyNSwgYXQgNDoxOOKAr1BN LCBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0Z3Jlc0BnbWFpbC5jb20+IHdy b3RlOg0KPg0KPg0KPiBPbiBNb24sIDEwIEZlYiAyMDI1IGF0IDIwOjExLCBCdXJkLCBHcmVnIDxn cmVnYnVyZEBhbWF6b24uY29tPiB3cm90ZToNCj4+PiBPbiBGZWIgMTAsIDIwMjUsIGF0IDEyOjE3 4oCvUE0sIE1hdHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVzQGdtYWlsLmNv bT4gd3JvdGU6DQo+Pj4NCj4+Pj4NCj4+Pj4gSSBoYXZlIGEgZmV3IGNvbmNlcm5zIHdpdGggdGhl IHBhdGNoLCB0aGluZ3MgSeKAmWQgZ3JlYXRseSBhcHByZWNpYXRlIHlvdXIgdGhvdWdodHMgb246 DQo+Pj4+DQo+Pj4+IEZpcnN0LCBJIHBhc3MgYW4gRVN0YXRlIGFsb25nIHRoZSB1cGRhdGUgcGF0 aCB0byBlbmFibGUgcnVubmluZyB0aGUgY2hlY2tzIGluIGhlYXBhbSwgdGhpcyB3b3JrcyBidXQg bGVhdmVzIG1lIGZlZWxpbmcgYXMgaWYgSSB2aW9sYXRlZCBzZXBhcmF0aW9uIG9mIGNvbmNlcm5z LiBJZiB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBsZXQgbWUga25vdyBvciBpZiB5 b3UgdGhpbmsgdGhlIGNvc3Qgb2YgY3JlYXRpbmcgb25lIGluIHRoZSBleGVjSW5kZXhpbmcuYyBF eGVjSW5kZXhlc1JlcXVpcmluZ1VwZGF0ZXMoKSBpcyBva2F5IHRoYXTigJlzIGFub3RoZXIgcG9z c2liaWxpdHkuDQo+Pj4NCj4+PiBJIHRoaW5rIHRoYXQgZG9lc24ndCBoYXZlIHRvIGJlIGJhZC4N Cj4+DQo+PiBNZWFuaW5nIHRoYXQgdGhlIGFwcHJvYWNoIEnigJl2ZSB0YWtlbiBpcyBva2F5IHdp dGggeW91Pw0KPg0KPiBJZiB5b3UgbWVhbiAicGFzc2luZyBFU3RhdGUgZG93biB0aHJvdWdoIHRo ZSBBTSBzbyB3ZSBjYW4gY2hlY2sgaWYgd2UNCj4gcmVhbGx5IG5lZWQgSE9UIHVwZGF0ZXMiLCB0 aGVuIFllcywgdGhhdCdzIE9LLiBJIGRvbid0IHRoaW5rIHRoZSBiYXNpYw0KPiBpZGVhIChleGVj dXRpbmcgdGhlIHByb2plY3Rpb25zIHRvIGNoZWNrIGZvciBkaWZmZXJlbmNlcykgaXMgYmFkIHBl cg0KPiBzZSwgaG93ZXZlciBJIGRvIHRoaW5rIHdlIG1heSBuZWVkIG1vcmUgZGVzaWduIHdvcmsg b24gdGhlIGV4YWN0IHNoYXBlDQo+IG9mIGhvdyBFeGVjSW5kZXhlc1JlcXVpcmluZ1VwZGF0ZXMo KSByZWNlaXZlcyBpdHMgaW5mb3JtYXRpb24gKHdoaWNoDQo+IGluY2x1ZGVzIHRoZSBFU3RhdGUp Lg0KPg0KPiBFLmcuIHdlIGNvdWxkIHBhc3MgYW4gb3BhcXVlbHkgdHlwZWQgcG9pbnRlciB0aGF0 J3MgcGFzc2VkIGZyb20gdGhlDQo+IGV4ZWN1dG9yIHN0YXRlIHRocm91Z2ggdGhlIHRhYmxlX3Vw ZGF0ZSBtZXRob2QgaW50byB0aGlzDQo+IEV4ZWNJbmRleGVzUmVxdWlyaW5nVXBkYXRlcygpLiBU aGF0IG9wYXF1ZSBzdHJ1Y3Qgd291bGQgdGhlbiBjb250YWluDQo+IHRoZSBpbXBvcnRhbnQgaW5m b3JtYXRpb24gZm9yIGluZGV4IHVwZGF0ZSBzdGF0ZSBjaGVja2luZywgc28gdGhhdCB0aGUNCj4g QU0gY2FuJ3QgcmVhbGlzdGljYWxseSBicmVhayB0aGluZ3Mgd2l0aG91dCBieXBhc3NpbmcgdGhl IHNlcGFyYXRpb24NCj4gb2YgY29uY2VybnMsIGFuZCBkb2Vzbid0IGhhdmUgdG8ga25vdyBhYm91 dCBhbnkgZXhlY3V0b3Igbm9kZXMuDQoNCkknbSBvcGVuIHRvIHRoaXMgaWRlYSBhbmQgd2lsbCBh dHRlbXB0IGFuIGltcGxlbWVudGF0aW9uIGluIHY2LCBpZGVhcyB3ZWxjb21lLg0KDQo+Pj4+IFRo aXJkLCB0aGVyZSBpcyBvdmVyaGVhZCB0byB0aGlzIHBhdGNoLCBpdCBpcyBubyBsb25nZXIgYSBz aW5nbGUgc2ltcGxlIGJpdG1hcCB0ZXN0IHRvIGNob29zZSBIT1Qgb3Igbm90IGluIGhlYXBfdXBk YXRlKCkuDQo+Pj4NCj4+PiBXaHkgY2FuJ3QgaXQgbW9zdGx5IGJlIHRoYXQgc2ltcGxlIGluIHNp bXBsZSBjYXNlcz8NCj4+DQo+PiBJdCBjYW4gcmVtYWluIHRoYXQgc2ltcGxlIGluIHRoZSBjYXNl cyB5b3UgbWVudGlvbi4gIEluIHJlbGNhY2hlIHRoZSBob3QgYmxvY2tpbmcgYXR0cmlidXRlcyBh cmUgbmVhcmx5IHRoZSBzYW1lLCBvbmx5IHRoZSBzdW1tYXJpemluZyBhdHRyaWJ1dGVzIGFyZSBy ZW1vdmVkLiAgVGhlIGZpcnN0IHRlc3QgdGhlbiBpbiBoZWFwX3VwZGF0ZSgpIGlzIGZvciBvdmVy bGFwIHdpdGggdGhlIG1vZGlmaWVkIHNldC4gIFdoZW4gdGhlcmUgaXMgbm9uZSwgdGhlIHVwZGF0 ZSB3aWxsIHByb2NlZWQgb24gdGhlIEhPVCBwYXRoLg0KPj4NCj4+IFRoZSBwcmVzZW5jZSBvZiBh IHN1bW1hcml6aW5nIGluZGV4IGlzIGRldGVybWluZWQgaW4gRXhlY0luZGV4ZXNSZXF1aXJpbmdV cGRhdGVzKCkgaW4gZXhlY0luZGV4aW5nLmMsIHNvIGEgc2xpZ2h0bHkgbG9uZ2VyIGNvZGUgcGF0 aCBidXQgbm90IG11Y2ggbmV3IG92ZXJoZWFkLg0KPg0KPiBZZXMsIGJ1dCB0aGF0J3Mgb25seSBk ZXRlcm1pbmVkIGF0IGFuIGluZGV4LWJ5LWluZGV4IGxldmVsLCByYXRoZXINCj4gdGhhbiBkZXRl cm1pbmVkIGFsbCBhdCBvbmNlLCBhbmQgdGhhdCdzIHJlYWwgYmFkIHdoZW4geW91IGhhdmUNCj4g aHVuZHJlZHMgb2YgaW5kZXhlcyB0byBnbyB0aHJvdWdoIChob3dldmVyIHVubGlrZWx5IGl0IG1p Z2h0IGJlLCBJJ3ZlDQo+IGhlYXJkIG9mIGNhc2VzIHdoZXJlIHRoZXJlIGFyZSAxMDAwcyBvZiBp bmRleGVzIG9uIG9uZSB0YWJsZSkuIFNvLCBJDQo+IHByZWZlciBsaW1pdGluZyBhbnkgTyhuX2lu ZGV4ZXMpIG9wZXJhdGlvbnMgdG8gb25seSB0aGUgbW9zdCBjcml0aWNhbA0KPiBjYXNlcy4NCg0K VGhpcyBtYWtlcyBzZW5zZSwgYW5kIEkgYWdyZWUgdGhhdCBhdm9pZGluZyBPKG5faW5kZXhlcykg b3BlcmF0aW9ucyBpcyBhIGdvb2QgZ29hbCB3aGVuIHBvc3NpYmxlLg0KDQo+Pj4gSSBtZWFuLCBp dCdzIGNsZWFyIHRoYXQgInVwZGF0ZWQgaW5kZXhlZCBjb2x1bW4ncyB2YWx1ZSA9PSBub24tSE9U DQo+Pj4gdXBkYXRlIi4gQW5kIHRoYXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gdXBkYXRlZCAq cHJvamVjdGVkKiBjb2x1bW4ncw0KPj4+IHZhbHVlIChpLmUuLCBleHByZXNzaW9uIGluZGV4IGNv bHVtbidzIHZhbHVlKSB3YXMgYWN0dWFsbHkgdXBkYXRlZCB3ZQ0KPj4+IG5lZWQgdG8gY2FsY3Vs YXRlIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBpbmRleCB2YWx1ZSwgdGh1cyBleGVjdXRlDQo+ Pj4gdGhlIHByb2plY3Rpb24gdHdpY2UuIEJ1dCB3aHkgd291bGQgd2UgaGF2ZSBzaWduaWZpY2Fu dCBhZGRpdGlvbmFsDQo+Pj4gb3ZlcmhlYWQgaWYgdGhlcmUgYXJlIG5vIGV4cHJlc3Npb24gaW5k ZXhlcywgb3Igd2hlbiB3ZSBjYW4ga25vdyBieQ0KPj4+IGJpdG1hcCBvdmVybGFwIHRoYXQgdGhl IG9ubHkgaW50ZXJlc3RpbmcgY2FzZXMgYXJlIHN1bW1hcml6aW5nDQo+Pj4gaW5kZXhlcz8NCj4+ DQo+PiBZb3XigJlyZSByaWdodCwgdGhlcmXigJlzIG5vdCBhIGxvdCBvZiBuZXcgb3ZlcmhlYWQg aW4gdGhhdCBjYXNlIGV4Y2VwdCB3aGF0IGhhcHBlbnMgaW4gRXhlY0luZGV4ZXNSZXF1aXJpbmdV cGRhdGVzKCkgdG8gc2NhbiBvdmVyIHRoZSBsaXN0IG9mIEluZGV4SW5mby4gIEl0IGlzIHJlYWxs eSBvbmx5IHdoZW4gdGhlcmUgYXJlIG1hbnkgZXhwcmVzc2lvbnMvcHJlZGljYXRlcyByZXF1aXJp bmcgZXhhbWluYXRpb24gdGhhdCB0aGVyZSBpcyBhbnkgc2lnbmlmaWNhbnQgY29zdCB0byB0aGlz IGFwcHJvYWNoIEFGQUlDVCAoYnV0IGlmIHlvdSBzZWUgc29tZXRoaW5nIHBsZWFzZSBwb2ludCBp dCBvdXQpLg0KPg0KPiBTZWUgdGhlIGF0dGFjaGVkIGFwcHJvYWNoLiBFdmFsdWF0aW9uIG9mIHRo ZSBleHByZXNzaW9ucyBvbmx5IGhhcyB0bw0KPiBoYXBwZW4gaWYgdGhlcmUgYXJlIGFueSBIT1Qt YmxvY2tpbmcgYXR0cmlidXRlcyB3aGljaCBhcmUgZXhjbHVzaXZlbHkNCj4gaG90LWJsb2NraW5n bHkgaW5kZXhlZCB0aHJvdWdoIGV4cHJlc3Npb25zLCBzbyBpZiB0aGUgdXBkYXRlZA0KPiBhdHRy aWJ1dGUgbnVtYmVycyBhcmUgYSBzdWJzZXQgb2YgaG90YmxvY2tpbmdleHByYXR0cnMuIChzdWJz dGl0dXRlDQo+IGhvdGJsb2NraW5nIHdpdGggc3VtbWFyaXppbmcgZm9yIHRoZSBzdW1tYXJpemlu ZyBhcHByb2FjaCkNCg0KSSBiZWxpZXZlIEkndmUgaW5jb3Jwb3JhdGVkIHRoZSBnaXN0IG9mIHlv dXIgaWRlYSBpbiB0aGlzIHY1IHBhdGNoLCBsZXQgbWUga25vdyBpZiBJIG1pc3NlZCBzb21ldGhp bmcuDQoNCj4+PiBJIHdvdWxkJ3ZlIGltcGxlbWVudGVkIHRoaXMgd2l0aCAoMSkgdHdvIG5ldyBi aXRtYXBzLCBvbmUgZWFjaCBmb3INCj4+PiBub3JtYWwgYW5kIHN1bW1hcml6aW5nIGluZGV4ZXMs IGVhY2ggY29udGFpbmluZyB3aGljaCBjb2x1bW5zIGFyZQ0KPj4+IGV4Y2x1c2l2ZWx5IHVzZWQg aW4gZXhwcmVzc2lvbiBpbmRleGVzIChhbmQgd2hpY2ggc2hvdWxkIHRodXMgYmUgdXNlZA0KPj4+ IHRvIHRyaWdnZXIgdGhlIChjb21wYXJhdGl2ZWx5KSBleHBlbnNpdmUgcmVjYWxjdWxhdGlvbiku DQo+Pg0KPj4gVGhhdCB3YXMgb25lIHdoZXJlIEkgc3RhcnRlZCwgb3ZlciB0aW1lIHRoYXQgYmVj YW1lIGhhcmRlciB0byB3b3JrIGFzIHRoZSBiaXRtYXBzIGNvbnRhaW4gdGhlIHVuaW9uIG9mIGlu ZGV4IGF0dHJpYnV0ZXMgZm9yIHRoZSB0YWJsZSBub3QgcGVyLWNvbHVtbi4NCj4NCj4gSSB0aGlu ayBpdCdzIGZhaXJseSBlYXN5IHRvIGNyZWF0ZSwgdGhvdWdoLg0KPg0KPj4gTm93IHRoZXJlIGlz IG9uZSBiaXRtYXAgdG8gY292ZXIgdGhlIGJyb2FkZXN0IGNhc2UgYW5kIHRoZW4gYSBmdW5jdGlv biB0byBmaW5kIHRoZSBtb2RpZmllZCBzZXQgb2YgaW5kZXhlcyB3aGVyZSBlYWNoIGlzIGV4YW1p bmVkIGFnYWluc3QgYml0bWFwcyB0aGF0IGNvbnRhaW4gb25seSBhdHRyaWJ1dGVzIHNwZWNpZmlj IHRvIHRoZSBpbmRleCBpbiBxdWVzdGlvbi4gIFRoaXMgaGVscGVkIGluIGNhc2VzIHdoZXJlIHRo ZXJlIHdlcmUgYm90aCBleHByZXNzaW9uIGFuZCBub24tZXhwcmVzc2lvbiBpbmRleGVzIG9uIHRo ZSBzYW1lIGF0dHJpYnV0ZS4NCj4NCj4gRmFpciwgYnV0IGRvIHdlIGNhcmUgYWJvdXQgb25lIGV4 cHJlc3Npb24gaW5kZXggb24gKGF0dHIxLT4+J2RhdGEnKSdzDQo+IHZhbHVlICpub3QqIGNoYW5n aW5nIHdoZW4gYW4gaW5kZXggb24gKGF0dHIxKSBleGlzdHMgYW5kIGF0dHIxIGhhcw0KPiBjaGFu Z2VkPyBUaGF0IGluZGV4IG9uIGF0dDEgd291bGQgYmxvY2sgSE9UIHVwZGF0ZXMgcmVnYXJkbGVz cyBvZiB0aGUNCj4gKGxhY2sgb2YpIGNoYW5nZXMgdG8gdGhlIChhdHQxLT4+J2RhdGEnKSBpbmRl eCwgc28gZG9pbmcgdGhvc2UNCj4gZXhwZW5zaXZlIGNhbGN1bGF0aW9ucyBzZWVtcyBxdWl0ZSB3 YXN0ZWZ1bC4NCg0KQWdyZWVkLCB3aGVuIGJvdGggYSBub24tZXhwcmVzc2lvbiBhbmQgYW4gZXhw cmVzc2lvbiBpbmRleCBleGlzdCBvbiB0aGUgc2FtZSBhdHRyaWJ1dGUgdGhlbiB0aGUgZXhwcmVz c2lvbiBjaGVja3MgYXJlIHVubmVjZXNzYXJ5IGFuZCBzaG91bGQgYmUgYXZvaWRlZC4gIEluIHRo aXMgdjUgcGF0Y2hzZXQgdGhpcyBjYXNlIGJlY29tZXMgdHdvIGNoZWNrcyBvZiBiaXRtYXBzIChm aXJzdCBob3RfYXR0cnMsIHRoZW4gZXhjbHVzaXZlbHkgZXhwX2F0dHJzKSBiZWZvcmUgcHJvY2Vl ZGluZyB3aXRoIGEgbm9uLUhPVCB1cGRhdGUuDQoNCj4gU28sIGluIG15IG9waW5pb24sIHdlIHNo b3VsZCBhbHNvIGtlZXAgdHJhY2sgb2YgdGhvc2UgYXR0cmlidXRlcyBvbmx5DQo+IGluY2x1ZGVk IGluIGV4cHJlc3Npb25zIG9mIGluZGV4ZXMsIGFuZCB0aGF0J3MgZmFpcmx5IGVhc3k6IHNlZQ0K PiBhdHRhY2hlZCBwcm90b3R5cGUuZGlmZi50eHQgKG1pZ2h0IG5lZWQgc29tZSB3b3JrLCB0aGUg cGF0Y2ggd2FzDQo+IGRyYWZ0ZWQgb24gdjE2J3MgY29kZWJhc2UsIGJ1dCB0aGUgaWRlYSBpcyBj bGVhcikuDQoNClRoYW5rIHlvdSBmb3IgeW91ciBwYXRjaCwgSSd2ZSBpbmNsdWRlZCBhbmQgZXhw YW5kZWQgaXQuDQoNCj4gVGhlIHJlc3VsdGluZyAlZXhwcmF0dHJzIGJpdG1hcCBjb250YWlucyBh dHRyaWJ1dGVzIHRoYXQgYXJlIHVzZWQgb25seQ0KPiBpbiBleHByZXNzaW9ucyBvZiB0aG9zZSBp bmRleCB0eXBlcy4NCj4NCj4+PiBUaGUgIm5ldyIgb3V0cHV0IG9mIHRoZXNlIGV4cHJlc3Npb24N Cj4+PiBldmFsdWF0aW9ucyB3b3VsZCBiZSBzdG9yZWQgdG8gYmUgdXNlZCBsYXRlciBhcyBpbmRl eCBkYXR1bXMsIHJlZHVjaW5nDQo+Pj4gdGhlIG51bWJlciBvZiBwZXItZXhwcmVzc2lvbiBldmFs dWF0aW9ucyBkb3duIHRvIDIgYXQgbW9zdCwgcmF0aGVyDQo+Pj4gdGhhbiAyKzEgd2hlbiB0aGUg aW5kZXggbmVlZHMgYW4gaW5zZXJ0aW9uIGJ1dCB0aGUgZXhwcmVzc2lvbiBpdHNlbGYNCj4+PiB3 YXNuJ3QgdXBkYXRlZC4NCj4+DQo+PiBOb3QgcmVmb3JtaW5nIHRoZSBuZXcgaW5kZXggdHVwbGVz IGlzIGFsc28gYW4gaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9uLiAgSSB3b25kZXIgaG93IHRoYXQg Y2FuIGJlIHBhc3NlZCBmcm9tIHdpdGhpbiBoZWFwYW3igJlzIGNhbGwgaW50byBhIGZ1bmN0aW9u IGluIGV4ZWNJbmRleGluZyB1cCBpbnRvIG5vZGVNb2RpZml5VGFibGUgYW5kIGJhY2sgZG93biBp bnRvIGV4ZWNJbmRleGluZyBhbmQgb24gdG8gdGhlIGluZGV4IGFjY2VzcyBtZXRob2Q/ICBJ4oCZ bGwgaGF2ZSB0byB0aGluayBhYm91dCB0aGF0LCBpZGVhcyB3ZWxjb21lLg0KPg0KPiBOb3RlIHRo YXQgaW5kZXggdHVwbGUgZm9ybWluZyBoYXBwZW5zIG9ubHkgaW4gdGhlIGluZGV4IEFNLCBpdCdz IHRoZQ0KPiBEYXR1bSBjb25zdHJ1Y3Rpb24gKGkuZS4gcHJvamVjdGlvbiBmcm9tIGF0dHJpYnV0 ZXMvdHVwbGUgdG8gaW5kZXhlZA0KPiB2YWx1ZSkgdGhhdCBJJ2QgbGlrZSB0byBkZWR1cGxpY2F0 ZS4gVGhvdWdoIGxvb2tpbmcgYXQgdGhlIGN1cnJlbnQNCj4gY29kZSwgSSBkb24ndCB0aGluayBp dCdzIHJlYXNvbmFibGUgdG8gaGF2ZSB0aGF0IGFzIGEgcmVxdWlyZW1lbnQgZm9yDQo+IHRoaXMg d29yay4gSXQnZCBiZSBhIG5pY2UtdG8taGF2ZSBmb3Igc3VyZSwgYnV0IG5vdCBhcyByZXF1aXJl bWVudC4NCg0KQWdyZWVkIHRoYXQgaXQncyBhIG5pY2UtdG8taGF2ZSwgYnV0IG5vdCBhIHByaW9y aXR5Lg0KDQo+Pj4gRG8geW91IGhhdmUgYW55IGRvY3VtZW50YXRpb24gb24gdGhlIGFwcHJvYWNo ZXMgdXNlZCwgYW5kIHRoZSBzcGVjaWZpYw0KPj4+IGRpZmZlcmVuY2VzIGJldHdlZW4gdjMgYW5k IHY0PyBJIGRvbid0IHNlZSBtdWNoIG9mIHRoYXQgaW4geW91cg0KPj4+IGluaXRpYWwgbWFpbCwg YW5kIHRoZSBwYXRjaGVzIHRoZW1zZWx2ZXMgYWxzbyBkb24ndCBzaG93IG11Y2ggb2YgdGhhdA0K Pj4+IGluIHRoZWlyIGRldGFpbHMuIEknZCBsaWtlIGF0IGxlYXN0IHNvbWUgZG9jdW1lbnRhdGlv biBvZiB0aGUgbmV3DQo+Pj4gYmVoYXZpb3VyIGluIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QgYXQgc29tZSBwb2ludCBiZWZvcmUNCj4+PiB0aGlzIGdvdCBtYXJrZWQgYXMgUkZD IGluIHRoZSBjb21taXRmZXN0IGFwcCwgdGhvdWdoIHByZWZlcmFibHkgc29vbmVyDQo+Pj4gcmF0 aGVyIHRoYW4gbGF0ZXIuDQo+Pg0KPj4gR29vZCBwb2ludCwgSSBzaG91bGQgaGF2ZSB1cGRhdGVk IFJFQURNRS5IT1Qgd2l0aCB0aGUgaW5pdGlhbCBwYXRjaHNldC4gIEnigJlsbCBqdW1wIG9uIHRo YXQgYW5kIHVwZGF0ZSBBU0FQLg0KPg0KPiBUaGFua3MgaW4gYWR2YW5jZS4NCj4NCj4gS2luZCBy ZWdhcmRzLA0KPg0KPiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQNCj4gTmVvbiAoaHR0cHM6Ly9uZW9u LnRlY2gpDQo+IDxwcm90b3R5cGUuZGlmZi50eHQ+DQoNCg== --_000_EA519A89282D453588C6C79588FF1DA8amazoncom_ Content-Type: text/html; charset="utf-8" Content-ID: <944A0DA8493C3B4FA68156B048FAE2CB@amazon.com> Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5Pg0KPGRpdiBjbGFzcz0i Qm9keUZyYWdtZW50Ij48Zm9udCBzaXplPSIyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwcHQ7 Ij4NCjxkaXYgY2xhc3M9IlBsYWluVGV4dCI+QXR0YWNoZWQgZmluZCBhbiB1cGRhdGVkIHBhdGNo c2V0IHY1IHRoYXQgaXMgYW4gZXZvbHV0aW9uIG9mIHY0Ljxicj4NCjxicj4NCkNoYW5nZXMgdjQg dG8gdjUgYXJlOjxicj4NCiogcmVwbGFjZWQgR1VDIHdpdGggdGFibGUgcmVsb3B0aW9uIGNhbGxl ZCAmcXVvdDtleHByZXNzaW9uX2NoZWNrcyZxdW90OyAob3BlbiB0byBvdGhlciBuYW1lIGlkZWFz KTxicj4NCiogbWluaW1hbCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgdG8gUkVBRE1FLkhPVCB0byBh ZGRyZXNzIGNoYW5nZXM8YnI+DQoqIGF2b2lkLCB3aGVuIHBvc3NpYmxlLCB0aGUgZXhwZW5zaXZl IHBhdGggdGhhdCByZXF1aXJlcyBldmFsdWF0aW5nIGFuIGVzdGF0ZSB1c2luZyBiaXRtYXBzPGJy Pg0KKiBkZXRlcm1pbmVzIHRoZSBzZXQgb2Ygc3VtbWFyaXplZCBpbmRleGVzIHJlcXVpcmluZyB1 cGRhdGVzLCBvbmx5IHVwZGF0ZXMgdGhvc2U8YnI+DQoqIG1vcmUgdGVzdHMgaW4gaGVhcF9ob3Rf dXBkYXRlcy5zcWwgKHBlcmhhcHMgdG9vIG1hbnkuLi4pPGJyPg0KKiByZWJhc2VkIHRvIG1hc3Rl ciwgZm9ybWF0dGVkLCBhbmQgbWFrZSBjaGVjay13b3JsZCBwYXNzZXM8YnI+DQo8YnI+DQpNb3Jl IGNvbW1lbnRzIGluIGNvbnRleHQgYmVsb3cuLi48YnI+DQo8YnI+DQotZ3JlZzxicj4NCjxicj4N CjwvZGl2Pg0KPC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IkJvZHlGcmFnbWVudCI+ PGZvbnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMHB0OyI+DQo8ZGl2IGNsYXNz PSJQbGFpblRleHQiPjxicj4NCjxicj4NCiZndDsgT24gRmViIDExLCAyMDI1LCBhdCA0OjE44oCv UE0sIE1hdHRoaWFzIHZhbiBkZSBNZWVudCAmbHQ7Ym9la2V3dXJtJiM0Mztwb3N0Z3Jlc0BnbWFp bC5jb20mZ3Q7IHdyb3RlOjxicj4NCiZndDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IE9uIE1vbiwg MTAgRmViIDIwMjUgYXQgMjA6MTEsIEJ1cmQsIEdyZWcgJmx0O2dyZWdidXJkQGFtYXpvbi5jb20m Z3Q7IHdyb3RlOjxicj4NCiZndDsmZ3Q7Jmd0OyBPbiBGZWIgMTAsIDIwMjUsIGF0IDEyOjE34oCv UE0sIE1hdHRoaWFzIHZhbiBkZSBNZWVudCAmbHQ7Ym9la2V3dXJtJiM0Mztwb3N0Z3Jlc0BnbWFp bC5jb20mZ3Q7IHdyb3RlOjxicj4NCiZndDsmZ3Q7Jmd0OyA8YnI+DQomZ3Q7Jmd0OyZndDsmZ3Q7 IDxicj4NCiZndDsmZ3Q7Jmd0OyZndDsgSSBoYXZlIGEgZmV3IGNvbmNlcm5zIHdpdGggdGhlIHBh dGNoLCB0aGluZ3MgSeKAmWQgZ3JlYXRseSBhcHByZWNpYXRlIHlvdXIgdGhvdWdodHMgb246PGJy Pg0KJmd0OyZndDsmZ3Q7Jmd0OyA8YnI+DQomZ3Q7Jmd0OyZndDsmZ3Q7IEZpcnN0LCBJIHBhc3Mg YW4gRVN0YXRlIGFsb25nIHRoZSB1cGRhdGUgcGF0aCB0byBlbmFibGUgcnVubmluZyB0aGUgY2hl Y2tzIGluIGhlYXBhbSwgdGhpcyB3b3JrcyBidXQgbGVhdmVzIG1lIGZlZWxpbmcgYXMgaWYgSSB2 aW9sYXRlZCBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zLiBJZiB0aGVyZSBpcyBhIGJldHRlciB3YXkg dG8gZG8gdGhpcyBsZXQgbWUga25vdyBvciBpZiB5b3UgdGhpbmsgdGhlIGNvc3Qgb2YgY3JlYXRp bmcgb25lIGluDQogdGhlIGV4ZWNJbmRleGluZy5jIEV4ZWNJbmRleGVzUmVxdWlyaW5nVXBkYXRl cygpIGlzIG9rYXkgdGhhdOKAmXMgYW5vdGhlciBwb3NzaWJpbGl0eS48YnI+DQomZ3Q7Jmd0OyZn dDsgPGJyPg0KJmd0OyZndDsmZ3Q7IEkgdGhpbmsgdGhhdCBkb2Vzbid0IGhhdmUgdG8gYmUgYmFk Ljxicj4NCiZndDsmZ3Q7IDxicj4NCiZndDsmZ3Q7IE1lYW5pbmcgdGhhdCB0aGUgYXBwcm9hY2gg SeKAmXZlIHRha2VuIGlzIG9rYXkgd2l0aCB5b3U/PGJyPg0KJmd0OyA8YnI+DQomZ3Q7IElmIHlv dSBtZWFuICZxdW90O3Bhc3NpbmcgRVN0YXRlIGRvd24gdGhyb3VnaCB0aGUgQU0gc28gd2UgY2Fu IGNoZWNrIGlmIHdlPGJyPg0KJmd0OyByZWFsbHkgbmVlZCBIT1QgdXBkYXRlcyZxdW90OywgdGhl biBZZXMsIHRoYXQncyBPSy4gSSBkb24ndCB0aGluayB0aGUgYmFzaWM8YnI+DQomZ3Q7IGlkZWEg KGV4ZWN1dGluZyB0aGUgcHJvamVjdGlvbnMgdG8gY2hlY2sgZm9yIGRpZmZlcmVuY2VzKSBpcyBi YWQgcGVyPGJyPg0KJmd0OyBzZSwgaG93ZXZlciBJIGRvIHRoaW5rIHdlIG1heSBuZWVkIG1vcmUg ZGVzaWduIHdvcmsgb24gdGhlIGV4YWN0IHNoYXBlPGJyPg0KJmd0OyBvZiBob3cgRXhlY0luZGV4 ZXNSZXF1aXJpbmdVcGRhdGVzKCkgcmVjZWl2ZXMgaXRzIGluZm9ybWF0aW9uICh3aGljaDxicj4N CiZndDsgaW5jbHVkZXMgdGhlIEVTdGF0ZSkuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IEUuZy4gd2Ug Y291bGQgcGFzcyBhbiBvcGFxdWVseSB0eXBlZCBwb2ludGVyIHRoYXQncyBwYXNzZWQgZnJvbSB0 aGU8YnI+DQomZ3Q7IGV4ZWN1dG9yIHN0YXRlIHRocm91Z2ggdGhlIHRhYmxlX3VwZGF0ZSBtZXRo b2QgaW50byB0aGlzPGJyPg0KJmd0OyBFeGVjSW5kZXhlc1JlcXVpcmluZ1VwZGF0ZXMoKS4gVGhh dCBvcGFxdWUgc3RydWN0IHdvdWxkIHRoZW4gY29udGFpbjxicj4NCiZndDsgdGhlIGltcG9ydGFu dCBpbmZvcm1hdGlvbiBmb3IgaW5kZXggdXBkYXRlIHN0YXRlIGNoZWNraW5nLCBzbyB0aGF0IHRo ZTxicj4NCiZndDsgQU0gY2FuJ3QgcmVhbGlzdGljYWxseSBicmVhayB0aGluZ3Mgd2l0aG91dCBi eXBhc3NpbmcgdGhlIHNlcGFyYXRpb248YnI+DQomZ3Q7IG9mIGNvbmNlcm5zLCBhbmQgZG9lc24n dCBoYXZlIHRvIGtub3cgYWJvdXQgYW55IGV4ZWN1dG9yIG5vZGVzLjxicj4NCjxicj4NCkknbSBv cGVuIHRvIHRoaXMgaWRlYSBhbmQgd2lsbCBhdHRlbXB0IGFuIGltcGxlbWVudGF0aW9uIGluIHY2 LCBpZGVhcyB3ZWxjb21lLjxicj4NCjxicj4NCiZndDsmZ3Q7Jmd0OyZndDsgVGhpcmQsIHRoZXJl IGlzIG92ZXJoZWFkIHRvIHRoaXMgcGF0Y2gsIGl0IGlzIG5vIGxvbmdlciBhIHNpbmdsZSBzaW1w bGUgYml0bWFwIHRlc3QgdG8gY2hvb3NlIEhPVCBvciBub3QgaW4gaGVhcF91cGRhdGUoKS48YnI+ DQomZ3Q7Jmd0OyZndDsgPGJyPg0KJmd0OyZndDsmZ3Q7IFdoeSBjYW4ndCBpdCBtb3N0bHkgYmUg dGhhdCBzaW1wbGUgaW4gc2ltcGxlIGNhc2VzPzxicj4NCiZndDsmZ3Q7IDxicj4NCiZndDsmZ3Q7 IEl0IGNhbiByZW1haW4gdGhhdCBzaW1wbGUgaW4gdGhlIGNhc2VzIHlvdSBtZW50aW9uLiZuYnNw OyBJbiByZWxjYWNoZSB0aGUgaG90IGJsb2NraW5nIGF0dHJpYnV0ZXMgYXJlIG5lYXJseSB0aGUg c2FtZSwgb25seSB0aGUgc3VtbWFyaXppbmcgYXR0cmlidXRlcyBhcmUgcmVtb3ZlZC4mbmJzcDsg VGhlIGZpcnN0IHRlc3QgdGhlbiBpbiBoZWFwX3VwZGF0ZSgpIGlzIGZvciBvdmVybGFwIHdpdGgg dGhlIG1vZGlmaWVkIHNldC4mbmJzcDsgV2hlbiB0aGVyZSBpcyBub25lLA0KIHRoZSB1cGRhdGUg d2lsbCBwcm9jZWVkIG9uIHRoZSBIT1QgcGF0aC48YnI+DQomZ3Q7Jmd0OyA8YnI+DQomZ3Q7Jmd0 OyBUaGUgcHJlc2VuY2Ugb2YgYSBzdW1tYXJpemluZyBpbmRleCBpcyBkZXRlcm1pbmVkIGluIEV4 ZWNJbmRleGVzUmVxdWlyaW5nVXBkYXRlcygpIGluIGV4ZWNJbmRleGluZy5jLCBzbyBhIHNsaWdo dGx5IGxvbmdlciBjb2RlIHBhdGggYnV0IG5vdCBtdWNoIG5ldyBvdmVyaGVhZC48YnI+DQomZ3Q7 IDxicj4NCiZndDsgWWVzLCBidXQgdGhhdCdzIG9ubHkgZGV0ZXJtaW5lZCBhdCBhbiBpbmRleC1i eS1pbmRleCBsZXZlbCwgcmF0aGVyPGJyPg0KJmd0OyB0aGFuIGRldGVybWluZWQgYWxsIGF0IG9u Y2UsIGFuZCB0aGF0J3MgcmVhbCBiYWQgd2hlbiB5b3UgaGF2ZTxicj4NCiZndDsgaHVuZHJlZHMg b2YgaW5kZXhlcyB0byBnbyB0aHJvdWdoIChob3dldmVyIHVubGlrZWx5IGl0IG1pZ2h0IGJlLCBJ J3ZlPGJyPg0KJmd0OyBoZWFyZCBvZiBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgMTAwMHMgb2YgaW5k ZXhlcyBvbiBvbmUgdGFibGUpLiBTbywgSTxicj4NCiZndDsgcHJlZmVyIGxpbWl0aW5nIGFueSBP KG5faW5kZXhlcykgb3BlcmF0aW9ucyB0byBvbmx5IHRoZSBtb3N0IGNyaXRpY2FsPGJyPg0KJmd0 OyBjYXNlcy48YnI+DQo8YnI+DQpUaGlzIG1ha2VzIHNlbnNlLCBhbmQgSSBhZ3JlZSB0aGF0IGF2 b2lkaW5nIE8obl9pbmRleGVzKSBvcGVyYXRpb25zIGlzIGEgZ29vZCBnb2FsIHdoZW4gcG9zc2li bGUuPGJyPg0KPGJyPg0KJmd0OyZndDsmZ3Q7IEkgbWVhbiwgaXQncyBjbGVhciB0aGF0ICZxdW90 O3VwZGF0ZWQgaW5kZXhlZCBjb2x1bW4ncyB2YWx1ZSA9PSBub24tSE9UPGJyPg0KJmd0OyZndDsm Z3Q7IHVwZGF0ZSZxdW90Oy4gQW5kIHRoYXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gdXBkYXRl ZCAqcHJvamVjdGVkKiBjb2x1bW4nczxicj4NCiZndDsmZ3Q7Jmd0OyB2YWx1ZSAoaS5lLiwgZXhw cmVzc2lvbiBpbmRleCBjb2x1bW4ncyB2YWx1ZSkgd2FzIGFjdHVhbGx5IHVwZGF0ZWQgd2U8YnI+ DQomZ3Q7Jmd0OyZndDsgbmVlZCB0byBjYWxjdWxhdGUgdGhlIHByZXZpb3VzIGFuZCBjdXJyZW50 IGluZGV4IHZhbHVlLCB0aHVzIGV4ZWN1dGU8YnI+DQomZ3Q7Jmd0OyZndDsgdGhlIHByb2plY3Rp b24gdHdpY2UuIEJ1dCB3aHkgd291bGQgd2UgaGF2ZSBzaWduaWZpY2FudCBhZGRpdGlvbmFsPGJy Pg0KJmd0OyZndDsmZ3Q7IG92ZXJoZWFkIGlmIHRoZXJlIGFyZSBubyBleHByZXNzaW9uIGluZGV4 ZXMsIG9yIHdoZW4gd2UgY2FuIGtub3cgYnk8YnI+DQomZ3Q7Jmd0OyZndDsgYml0bWFwIG92ZXJs YXAgdGhhdCB0aGUgb25seSBpbnRlcmVzdGluZyBjYXNlcyBhcmUgc3VtbWFyaXppbmc8YnI+DQom Z3Q7Jmd0OyZndDsgaW5kZXhlcz88YnI+DQomZ3Q7Jmd0OyA8YnI+DQomZ3Q7Jmd0OyBZb3XigJly ZSByaWdodCwgdGhlcmXigJlzIG5vdCBhIGxvdCBvZiBuZXcgb3ZlcmhlYWQgaW4gdGhhdCBjYXNl IGV4Y2VwdCB3aGF0IGhhcHBlbnMgaW4gRXhlY0luZGV4ZXNSZXF1aXJpbmdVcGRhdGVzKCkgdG8g c2NhbiBvdmVyIHRoZSBsaXN0IG9mIEluZGV4SW5mby4mbmJzcDsgSXQgaXMgcmVhbGx5IG9ubHkg d2hlbiB0aGVyZSBhcmUgbWFueSBleHByZXNzaW9ucy9wcmVkaWNhdGVzIHJlcXVpcmluZyBleGFt aW5hdGlvbiB0aGF0IHRoZXJlIGlzIGFueSBzaWduaWZpY2FudA0KIGNvc3QgdG8gdGhpcyBhcHBy b2FjaCBBRkFJQ1QgKGJ1dCBpZiB5b3Ugc2VlIHNvbWV0aGluZyBwbGVhc2UgcG9pbnQgaXQgb3V0 KS48YnI+DQomZ3Q7IDxicj4NCiZndDsgU2VlIHRoZSBhdHRhY2hlZCBhcHByb2FjaC4gRXZhbHVh dGlvbiBvZiB0aGUgZXhwcmVzc2lvbnMgb25seSBoYXMgdG88YnI+DQomZ3Q7IGhhcHBlbiBpZiB0 aGVyZSBhcmUgYW55IEhPVC1ibG9ja2luZyBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBleGNsdXNpdmVs eTxicj4NCiZndDsgaG90LWJsb2NraW5nbHkgaW5kZXhlZCB0aHJvdWdoIGV4cHJlc3Npb25zLCBz byBpZiB0aGUgdXBkYXRlZDxicj4NCiZndDsgYXR0cmlidXRlIG51bWJlcnMgYXJlIGEgc3Vic2V0 IG9mIGhvdGJsb2NraW5nZXhwcmF0dHJzLiAoc3Vic3RpdHV0ZTxicj4NCiZndDsgaG90YmxvY2tp bmcgd2l0aCBzdW1tYXJpemluZyBmb3IgdGhlIHN1bW1hcml6aW5nIGFwcHJvYWNoKTxicj4NCjxi cj4NCkkgYmVsaWV2ZSBJJ3ZlIGluY29ycG9yYXRlZCB0aGUgZ2lzdCBvZiB5b3VyIGlkZWEgaW4g dGhpcyB2NSBwYXRjaCwgbGV0IG1lIGtub3cgaWYgSSBtaXNzZWQgc29tZXRoaW5nLjxicj4NCjxi cj4NCiZndDsmZ3Q7Jmd0OyBJIHdvdWxkJ3ZlIGltcGxlbWVudGVkIHRoaXMgd2l0aCAoMSkgdHdv IG5ldyBiaXRtYXBzLCBvbmUgZWFjaCBmb3I8YnI+DQomZ3Q7Jmd0OyZndDsgbm9ybWFsIGFuZCBz dW1tYXJpemluZyBpbmRleGVzLCBlYWNoIGNvbnRhaW5pbmcgd2hpY2ggY29sdW1ucyBhcmU8YnI+ DQomZ3Q7Jmd0OyZndDsgZXhjbHVzaXZlbHkgdXNlZCBpbiBleHByZXNzaW9uIGluZGV4ZXMgKGFu ZCB3aGljaCBzaG91bGQgdGh1cyBiZSB1c2VkPGJyPg0KJmd0OyZndDsmZ3Q7IHRvIHRyaWdnZXIg dGhlIChjb21wYXJhdGl2ZWx5KSBleHBlbnNpdmUgcmVjYWxjdWxhdGlvbikuPGJyPg0KJmd0OyZn dDsgPGJyPg0KJmd0OyZndDsgVGhhdCB3YXMgb25lIHdoZXJlIEkgc3RhcnRlZCwgb3ZlciB0aW1l IHRoYXQgYmVjYW1lIGhhcmRlciB0byB3b3JrIGFzIHRoZSBiaXRtYXBzIGNvbnRhaW4gdGhlIHVu aW9uIG9mIGluZGV4IGF0dHJpYnV0ZXMgZm9yIHRoZSB0YWJsZSBub3QgcGVyLWNvbHVtbi48YnI+ DQomZ3Q7IDxicj4NCiZndDsgSSB0aGluayBpdCdzIGZhaXJseSBlYXN5IHRvIGNyZWF0ZSwgdGhv dWdoLjxicj4NCiZndDsgPGJyPg0KJmd0OyZndDsgTm93IHRoZXJlIGlzIG9uZSBiaXRtYXAgdG8g Y292ZXIgdGhlIGJyb2FkZXN0IGNhc2UgYW5kIHRoZW4gYSBmdW5jdGlvbiB0byBmaW5kIHRoZSBt b2RpZmllZCBzZXQgb2YgaW5kZXhlcyB3aGVyZSBlYWNoIGlzIGV4YW1pbmVkIGFnYWluc3QgYml0 bWFwcyB0aGF0IGNvbnRhaW4gb25seSBhdHRyaWJ1dGVzIHNwZWNpZmljIHRvIHRoZSBpbmRleCBp biBxdWVzdGlvbi4mbmJzcDsgVGhpcyBoZWxwZWQgaW4gY2FzZXMgd2hlcmUgdGhlcmUgd2VyZSBi b3RoDQogZXhwcmVzc2lvbiBhbmQgbm9uLWV4cHJlc3Npb24gaW5kZXhlcyBvbiB0aGUgc2FtZSBh dHRyaWJ1dGUuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IEZhaXIsIGJ1dCBkbyB3ZSBjYXJlIGFib3V0 IG9uZSBleHByZXNzaW9uIGluZGV4IG9uIChhdHRyMS0mZ3Q7Jmd0OydkYXRhJyknczxicj4NCiZn dDsgdmFsdWUgKm5vdCogY2hhbmdpbmcgd2hlbiBhbiBpbmRleCBvbiAoYXR0cjEpIGV4aXN0cyBh bmQgYXR0cjEgaGFzPGJyPg0KJmd0OyBjaGFuZ2VkPyBUaGF0IGluZGV4IG9uIGF0dDEgd291bGQg YmxvY2sgSE9UIHVwZGF0ZXMgcmVnYXJkbGVzcyBvZiB0aGU8YnI+DQomZ3Q7IChsYWNrIG9mKSBj aGFuZ2VzIHRvIHRoZSAoYXR0MS0mZ3Q7Jmd0OydkYXRhJykgaW5kZXgsIHNvIGRvaW5nIHRob3Nl PGJyPg0KJmd0OyBleHBlbnNpdmUgY2FsY3VsYXRpb25zIHNlZW1zIHF1aXRlIHdhc3RlZnVsLjxi cj4NCjxicj4NCkFncmVlZCwgd2hlbiBib3RoIGEgbm9uLWV4cHJlc3Npb24gYW5kIGFuIGV4cHJl c3Npb24gaW5kZXggZXhpc3Qgb24gdGhlIHNhbWUgYXR0cmlidXRlIHRoZW4gdGhlIGV4cHJlc3Np b24gY2hlY2tzIGFyZSB1bm5lY2Vzc2FyeSBhbmQgc2hvdWxkIGJlIGF2b2lkZWQuJm5ic3A7IElu IHRoaXMgdjUgcGF0Y2hzZXQgdGhpcyBjYXNlIGJlY29tZXMgdHdvIGNoZWNrcyBvZiBiaXRtYXBz IChmaXJzdCBob3RfYXR0cnMsIHRoZW4gZXhjbHVzaXZlbHkgZXhwX2F0dHJzKQ0KIGJlZm9yZSBw cm9jZWVkaW5nIHdpdGggYSBub24tSE9UIHVwZGF0ZS48YnI+DQo8YnI+DQomZ3Q7IFNvLCBpbiBt eSBvcGluaW9uLCB3ZSBzaG91bGQgYWxzbyBrZWVwIHRyYWNrIG9mIHRob3NlIGF0dHJpYnV0ZXMg b25seTxicj4NCiZndDsgaW5jbHVkZWQgaW4gZXhwcmVzc2lvbnMgb2YgaW5kZXhlcywgYW5kIHRo YXQncyBmYWlybHkgZWFzeTogc2VlPGJyPg0KJmd0OyBhdHRhY2hlZCBwcm90b3R5cGUuZGlmZi50 eHQgKG1pZ2h0IG5lZWQgc29tZSB3b3JrLCB0aGUgcGF0Y2ggd2FzPGJyPg0KJmd0OyBkcmFmdGVk IG9uIHYxNidzIGNvZGViYXNlLCBidXQgdGhlIGlkZWEgaXMgY2xlYXIpLjxicj4NCjxicj4NClRo YW5rIHlvdSBmb3IgeW91ciBwYXRjaCwgSSd2ZSBpbmNsdWRlZCBhbmQgZXhwYW5kZWQgaXQuPGJy Pg0KPGJyPg0KJmd0OyBUaGUgcmVzdWx0aW5nICVleHByYXR0cnMgYml0bWFwIGNvbnRhaW5zIGF0 dHJpYnV0ZXMgdGhhdCBhcmUgdXNlZCBvbmx5PGJyPg0KJmd0OyBpbiBleHByZXNzaW9ucyBvZiB0 aG9zZSBpbmRleCB0eXBlcy48YnI+DQomZ3Q7IDxicj4NCiZndDsmZ3Q7Jmd0OyBUaGUgJnF1b3Q7 bmV3JnF1b3Q7IG91dHB1dCBvZiB0aGVzZSBleHByZXNzaW9uPGJyPg0KJmd0OyZndDsmZ3Q7IGV2 YWx1YXRpb25zIHdvdWxkIGJlIHN0b3JlZCB0byBiZSB1c2VkIGxhdGVyIGFzIGluZGV4IGRhdHVt cywgcmVkdWNpbmc8YnI+DQomZ3Q7Jmd0OyZndDsgdGhlIG51bWJlciBvZiBwZXItZXhwcmVzc2lv biBldmFsdWF0aW9ucyBkb3duIHRvIDIgYXQgbW9zdCwgcmF0aGVyPGJyPg0KJmd0OyZndDsmZ3Q7 IHRoYW4gMiYjNDM7MSB3aGVuIHRoZSBpbmRleCBuZWVkcyBhbiBpbnNlcnRpb24gYnV0IHRoZSBl eHByZXNzaW9uIGl0c2VsZjxicj4NCiZndDsmZ3Q7Jmd0OyB3YXNuJ3QgdXBkYXRlZC48YnI+DQom Z3Q7Jmd0OyA8YnI+DQomZ3Q7Jmd0OyBOb3QgcmVmb3JtaW5nIHRoZSBuZXcgaW5kZXggdHVwbGVz IGlzIGFsc28gYW4gaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9uLiZuYnNwOyBJIHdvbmRlciBob3cg dGhhdCBjYW4gYmUgcGFzc2VkIGZyb20gd2l0aGluIGhlYXBhbeKAmXMgY2FsbCBpbnRvIGEgZnVu Y3Rpb24gaW4gZXhlY0luZGV4aW5nIHVwIGludG8gbm9kZU1vZGlmaXlUYWJsZSBhbmQgYmFjayBk b3duIGludG8gZXhlY0luZGV4aW5nIGFuZCBvbiB0byB0aGUgaW5kZXggYWNjZXNzIG1ldGhvZD8m bmJzcDsNCiBJ4oCZbGwgaGF2ZSB0byB0aGluayBhYm91dCB0aGF0LCBpZGVhcyB3ZWxjb21lLjxi cj4NCiZndDsgPGJyPg0KJmd0OyBOb3RlIHRoYXQgaW5kZXggdHVwbGUgZm9ybWluZyBoYXBwZW5z IG9ubHkgaW4gdGhlIGluZGV4IEFNLCBpdCdzIHRoZTxicj4NCiZndDsgRGF0dW0gY29uc3RydWN0 aW9uIChpLmUuIHByb2plY3Rpb24gZnJvbSBhdHRyaWJ1dGVzL3R1cGxlIHRvIGluZGV4ZWQ8YnI+ DQomZ3Q7IHZhbHVlKSB0aGF0IEknZCBsaWtlIHRvIGRlZHVwbGljYXRlLiBUaG91Z2ggbG9va2lu ZyBhdCB0aGUgY3VycmVudDxicj4NCiZndDsgY29kZSwgSSBkb24ndCB0aGluayBpdCdzIHJlYXNv bmFibGUgdG8gaGF2ZSB0aGF0IGFzIGEgcmVxdWlyZW1lbnQgZm9yPGJyPg0KJmd0OyB0aGlzIHdv cmsuIEl0J2QgYmUgYSBuaWNlLXRvLWhhdmUgZm9yIHN1cmUsIGJ1dCBub3QgYXMgcmVxdWlyZW1l bnQuPGJyPg0KPGJyPg0KQWdyZWVkIHRoYXQgaXQncyBhIG5pY2UtdG8taGF2ZSwgYnV0IG5vdCBh IHByaW9yaXR5Ljxicj4NCjxicj4NCiZndDsmZ3Q7Jmd0OyBEbyB5b3UgaGF2ZSBhbnkgZG9jdW1l bnRhdGlvbiBvbiB0aGUgYXBwcm9hY2hlcyB1c2VkLCBhbmQgdGhlIHNwZWNpZmljPGJyPg0KJmd0 OyZndDsmZ3Q7IGRpZmZlcmVuY2VzIGJldHdlZW4gdjMgYW5kIHY0PyBJIGRvbid0IHNlZSBtdWNo IG9mIHRoYXQgaW4geW91cjxicj4NCiZndDsmZ3Q7Jmd0OyBpbml0aWFsIG1haWwsIGFuZCB0aGUg cGF0Y2hlcyB0aGVtc2VsdmVzIGFsc28gZG9uJ3Qgc2hvdyBtdWNoIG9mIHRoYXQ8YnI+DQomZ3Q7 Jmd0OyZndDsgaW4gdGhlaXIgZGV0YWlscy4gSSdkIGxpa2UgYXQgbGVhc3Qgc29tZSBkb2N1bWVu dGF0aW9uIG9mIHRoZSBuZXc8YnI+DQomZ3Q7Jmd0OyZndDsgYmVoYXZpb3VyIGluIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgYXQgc29tZSBwb2ludCBiZWZvcmU8YnI+DQomZ3Q7 Jmd0OyZndDsgdGhpcyBnb3QgbWFya2VkIGFzIFJGQyBpbiB0aGUgY29tbWl0ZmVzdCBhcHAsIHRo b3VnaCBwcmVmZXJhYmx5IHNvb25lcjxicj4NCiZndDsmZ3Q7Jmd0OyByYXRoZXIgdGhhbiBsYXRl ci48YnI+DQomZ3Q7Jmd0OyA8YnI+DQomZ3Q7Jmd0OyBHb29kIHBvaW50LCBJIHNob3VsZCBoYXZl IHVwZGF0ZWQgUkVBRE1FLkhPVCB3aXRoIHRoZSBpbml0aWFsIHBhdGNoc2V0LiZuYnNwOyBJ4oCZ bGwganVtcCBvbiB0aGF0IGFuZCB1cGRhdGUgQVNBUC48YnI+DQomZ3Q7IDxicj4NCiZndDsgVGhh bmtzIGluIGFkdmFuY2UuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IEtpbmQgcmVnYXJkcyw8YnI+DQom Z3Q7IDxicj4NCiZndDsgTWF0dGhpYXMgdmFuIGRlIE1lZW50PGJyPg0KJmd0OyBOZW9uICg8YSBo cmVmPSJodHRwczovL25lb24udGVjaCI+aHR0cHM6Ly9uZW9uLnRlY2g8L2E+KTxicj4NCiZndDsg Jmx0O3Byb3RvdHlwZS5kaWZmLnR4dCZndDs8YnI+DQo8YnI+DQo8L2Rpdj4NCjwvc3Bhbj48L2Zv bnQ+PC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_EA519A89282D453588C6C79588FF1DA8amazoncom_-- --_004_EA519A89282D453588C6C79588FF1DA8amazoncom_ Content-Type: application/octet-stream; name="v5-0001-Expand-HOT-update-path-to-include-expression-and-.patch" Content-Description: v5-0001-Expand-HOT-update-path-to-include-expression-and-.patch Content-Disposition: attachment; filename="v5-0001-Expand-HOT-update-path-to-include-expression-and-.patch"; size=99582; creation-date="Thu, 13 Feb 2025 18:46:18 GMT"; modification-date="Thu, 13 Feb 2025 18:46:18 GMT" Content-ID: <8C724492441D304DBFF6C5D171532EFA@amazon.com> Content-Transfer-Encoding: base64 RnJvbSAyNjNiZjExYWYxZmQ0ZDRjZDMwYjVhYTRhOWEwNjkyMTYyMTQxZWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnb3J5IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+CkRh dGU6IE1vbiwgMjcgSmFuIDIwMjUgMTM6Mjg6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHY1XSBF eHBhbmQgSE9UIHVwZGF0ZSBwYXRoIHRvIGluY2x1ZGUgZXhwcmVzc2lvbiBhbmQgcGFydGlhbAog aW5kZXhlcy4KClRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgY2FzZXMgd2hlcmUgSE9UIHVwZGF0ZXMg YXJlIHBvc3NpYmxlIGluIHRoZSBoZWFwYW0gYnkKZXhhbWluaW5nIGV4cHJlc3Npb24gaW5kZXhl cyBhbmQgZGV0ZXJtaW5pbmcgaWYgaW5kZXhlZCB2YWx1ZXMgd2hlcmUgbXV0YXRlZApvciBub3Qu ICBQcmV2aW91c2x5LCBhbnkgZXhwcmVzc2lvbiBpbmRleCBvbiBhIGNvbHVtbiB3b3VsZCBkaXNx dWFsaWZ5IGl0CmZyb20gdGhlIEhPVCB1cGRhdGUgcGF0aC4gQWxzbyBleGFtaW5lcyBwYXJ0aWFs IGluZGV4ZXMgdG8gc2VlIGlmIHRoZQp2YWx1ZXMgYXJlIHdpdGhpbiB0aGUgcHJlZGljYXRlIG9y IG5vdC4KClRoaXMgaXMgYSBtb2RpZmllZCBhcHBsaWNhdGlvbiBvZiBhIHBhdGNoIHByb3Bvc2Vk IG9uIHRoZSBwZ3NxbC1oYWNrZXJzIGxpc3Q6Cmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21l c3NhZ2UtaWQvZmxhdC80ZDk5MjhlZS1hOWU2LTE1ZjktOWM4Mi01OTgxZjEzZmZjYTYlNDBwb3N0 Z3Jlc3Byby5ydQphcHBsaWVkOiBodHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9 cG9zdGdyZXNxbC5naXQ7YT1jb21taXQ7aD1jMjAzZDZjZjgKcmV2ZXJ0ZWQ6IGh0dHBzOi8vZ2l0 LnBvc3RncmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3FsLmdpdDthPWNvbW1pdDtoPTA1Zjg0 NjA1ZGJlYjljZjgyNzlhMTU3MjM0YjI0YmJiNzA2YzUyNTYKClNpZ25lZC1vZmYtYnk6IEdyZWcg QnVyZCA8Z3JlZ2J1cmRAYW1hem9uLmNvbT4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sICAgICAgICAgICAgfCAgMTcgKwogZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCAg ICAgICAgICAgICAgICAgICAgIHwgIDIxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVs b3B0aW9ucy5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVCAgICAgICAgICAgIHwgIDQzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YyAgICAgICAgICAgICAgfCAxMTUgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYyAgICAgIHwgIDI3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVh bS5jICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAg ICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMgICAg ICAgICAgICAgICAgfCAgNTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5j ICAgICAgICAgICB8IDIzOCArKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGlj YXRpb24uYyAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YyAgICAgICAgICAgIHwgIDU4ICstCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAg ICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAg ICAgICAgICAgIHwgIDI4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAg ICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAg ICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCAgICAgICAgICAgICAg ICAgIHwgICAxICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMub3V0ICAg ICB8IDU4NiArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUgICAgICAgICAgICB8ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hvdF91 cGRhdGVzLnNxbCAgICAgfCA0NDAgKysrKysrKysrKysrKwogMjMgZmlsZXMgY2hhbmdlZCwgMTU1 MCBpbnNlcnRpb25zKCspLCAxNzIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMuc3FsCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggMGEzZTUyMGYyMTUuLmUyOWM5ZWE0NWE3IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTE5ODEsNiArMTk4MSwyMyBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0aW9uLWV4cHJlc3Npb24tY2hlY2tzIiB4cmVmbGFi ZWw9ImV4cHJlc3Npb25fY2hlY2tzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5leHByZXNzaW9uX2No ZWNrczwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgIDxpbmRleHRlcm0+Cisg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmV4cHJlc3Npb25fY2hlY2tzPC92YXJuYW1lPiBzdG9yYWdl IHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4KKyAgICA8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEVuYWJsZXMgb3IgZGlzYWJsZXMgZXZhdWxh dGlvbiBvZiBwcmVkaWNhdGUgZXhwcmVzc2lvbnMgb24gcGFydGlhbAorICAgICAgaW5kZXhlcyBv ciBleHByZXNzaW9ucyB1c2VkIHRvIGRlZmluZSBpbmRleGVzIGR1cmluZyB1cGRhdGVzLgorICAg ICAgSWYgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIHRoZW4gdGhlc2UgZXhwcmVzc2lvbnMgYXJl IGV2YWx1YXRlZCBkdXJpbmcKKyAgICAgIHVwZGF0ZXMgdG8gZGF0YSB3aXRoaW4gdGhlIGhlYXAg cmVsYXRpb24gYWdhaW5zdCB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzCisgICAgICBhbmQgdGhlbiBj b21wYXJlZCB0byBkZXRlcm1pbmUgaWYgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1cGRhdGVzIGFy ZQorICAgICAgYWxsb3dhYmxlIG9yIG5vdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorCiAgICA8L3Zh cmlhYmxlbGlzdD4KIAogICA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N0 b3JhZ2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwKaW5kZXggNjEyNTA3OTllYzAu LmY0MGFkYTljOTg5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3RvcmFnZS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwKQEAgLTExMzgsNiArMTEzOCwyNyBAQCBkYXRhLiBF bXB0eSBpbiBvcmRpbmFyeSB0YWJsZXMuPC9lbnRyeT4KICAgPC9pdGVtaXplZGxpc3Q+CiAgPC9w YXJhPgogCisgPHBhcmE+CisgIDxhY3JvbnltPkhPVDwvYWNyb255bT4gdXBkYXRlcyBjYW4gb2Nj dXIgd2hlbiB0aGUgZXhwcmVzc2lvbiB1c2VkIHRvIGRlZmluZQorICBhbmQgaW5kZXggc2hvd3Mg bm8gY2hhbmdlcyB0byB0aGUgaW5kZXhlZCB2YWx1ZS4gVG8gZGV0ZXJtaW5lIHRoaXMgcmVxdWly ZXMKKyAgdGhhdCB0aGUgZXhwcmVzc2lvbiBiZSBldmF1bGF0ZWQgZm9yIHRoZSBvbGQgYW5kIG5l dyB2YWx1ZXMgdG8gYmUgc3RvcmVkIGluCisgIHRoZSBpbmRleCBhbmQgdGhlbiBjb21wYXJlZC4g VGhpcyBhbGxvd3MgZm9yIDxhY3JvbnltPkhPVDwvYWNyb255bT4gdXBkYXRlcworICB3aGVuIGRh dGEgaW5kZXhlZCB3aXRoaW4gSlNPTkIgY29sdW1ucyBpcyB1bmNoYW5nZWQuIFRvIGRpc2FibGUg dGhpcworICBiZWhhdmlvciBhbmQgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGV2YWx1YXRpbmcgdGhl IGV4cHJlc3Npb24gZHVyaW5nIHVwZGF0ZXMKKyAgc2V0IHRoZSA8bGl0ZXJhbD5leHByZXNzaW9u X2NoZWNrczwvbGl0ZXJhbD4gb3B0aW9uIHRvIGZhbHNlIGZvciB0aGUgdGFibGUuCisgPC9wYXJh PgorCisgPHBhcmE+CisgIDxhY3JvbnltPkhPVDwvYWNyb255bT4gdXBkYXRlcyBjYW4gYWxzbyBv Y2N1ciB3aGVuIHVwZGF0ZWQgdmFsdWVzIGFyZSBub3QKKyAgd2l0aGluIHRoZSBwcmVkaWNhdGUg b2YgYSBwYXJ0aWFsIGluZGV4LiBIb3dldmVyLCA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+CisgIHVw ZGF0ZXMgYXJlIG5vdCBwb3NzaWJsZSB3aGVuIHRoZSB1cGRhdGVkIHZhbHVlIGFuZCB0aGUgY3Vy cmVudCB2YWx1ZSBkaWZmZXIKKyAgd2l0aCByZWdhcmRzIHRvIHRoZSBwcmVkaWNhdGUuIFRvIGRl dGVybWluIHRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgcHJlZGljYXRlCisgIGV4cHJlc3Npb24gYmUg ZXZhbHVhdGVkIGZvciB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbiB0aGUg aW5kZXgKKyAgYW5kIHRoZW4gY29tcGFyZWQuIFRvIGRpc2FibGUgdGhpcyBiZWhhdmlvciBhbmQg YXZvaWQgdGhlIG92ZXJoZWFkIG9mCisgIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gZHVyaW5n IHVwZGF0ZXMgc2V0CisgIHRoZSA8bGl0ZXJhbD5leHByZXNzaW9uX2NoZWNrczwvbGl0ZXJhbD4g b3B0aW9uIHRvIGZhbHNlIGZvciB0aGUgdGFibGUuCisgPC9wYXJhPgorCiAgPHBhcmE+CiAgIFlv dSBjYW4gaW5jcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2Ygc3VmZmljaWVudCBwYWdlIHNwYWNlIGZv cgogICA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+IHVwZGF0ZXMgYnkgZGVjcmVhc2luZyBhIHRhYmxl J3MgPGxpbmsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9u cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5kZXggNTlmYjUz ZTc3MDcuLmMwODE2MTE5MjZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMu YwpAQCAtMTY2LDYgKzE2NiwxNSBAQCBzdGF0aWMgcmVsb3B0X2Jvb2wgYm9vbFJlbE9wdHNbXSA9 CiAJCX0sCiAJCXRydWUKIAl9LAorCXsKKwkJeworCQkJImV4cHJlc3Npb25fY2hlY2tzIiwKKwkJ CSJXaGVuIGRpc2FibGVkIHByZXZlbnRzIGNoZWNraW5nIGV4cHJlc3Npb25zIG9uIGluZGV4ZXMg YW5kIHByZWRpY2F0ZXMgb24gcGFydGlhbCBpbmRleGVzIGZvciBjaGFuZ2VzIHRoYXQgbWlnaHQg aW5mbHVlbmNlIGhlYXAtb25seSB0dXBsZSAoSE9UKSB1cGRhdGVzLiIsCisJCQlSRUxPUFRfS0lO RF9IRUFQLAorCQkJU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrCisJCX0sCisJCXRydWUKKwl9LAog CS8qIGxpc3QgdGVybWluYXRvciAqLwogCXt7TlVMTH19CiB9OwpAQCAtMTkwMyw3ICsxOTEyLDgg QEAgZGVmYXVsdF9yZWxvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJl bG9wdF9raW5kIGtpbmQpCiAJCXsidmFjdXVtX3RydW5jYXRlIiwgUkVMT1BUX1RZUEVfQk9PTCwK IAkJb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCB2YWN1dW1fdHJ1bmNhdGUpfSwKIAkJeyJ2YWN1dW1f bWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUiLCBSRUxPUFRfVFlQRV9SRUFMLAotCQlvZmZz ZXRvZihTdGRSZE9wdGlvbnMsIHZhY3V1bV9tYXhfZWFnZXJfZnJlZXplX2ZhaWx1cmVfcmF0ZSl9 CisJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgdmFjdXVtX21heF9lYWdlcl9mcmVlemVfZmFpbHVy ZV9yYXRlKX0sCisJCXsiZXhwcmVzc2lvbl9jaGVja3MiLCBSRUxPUFRfVFlQRV9CT09MLCBvZmZz ZXRvZihTdGRSZE9wdGlvbnMsIGV4cHJlc3Npb25fY2hlY2tzKX0KIAl9OwogCiAJcmV0dXJuIChi eXRlYSAqKSBidWlsZF9yZWxvcHRpb25zKHJlbG9wdGlvbnMsIHZhbGlkYXRlLCBraW5kLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjQ4YWFiODFmZGYwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM2LDcgKzM2LDcgQEAgSE9UIHNvbHZl cyB0aGlzIHByb2JsZW0gZm9yIHR3byByZXN0cmljdGVkIGJ1dCB1c2VmdWwgc3BlY2lhbCBjYXNl czoKIEZpcnN0LCB3aGVyZSBhIHR1cGxlIGlzIHJlcGVhdGVkbHkgdXBkYXRlZCBpbiB3YXlzIHRo YXQgZG8gbm90IGNoYW5nZQogaXRzIGluZGV4ZWQgY29sdW1ucy4gIChIZXJlLCAiaW5kZXhlZCBj b2x1bW4iIG1lYW5zIGFueSBjb2x1bW4gcmVmZXJlbmNlZAogYXQgYWxsIGluIGFuIGluZGV4IGRl ZmluaXRpb24sIGluY2x1ZGluZyBmb3IgZXhhbXBsZSBjb2x1bW5zIHRoYXQgYXJlCi10ZXN0ZWQg aW4gYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSBidXQgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGlu ZGV4LikKK3Rlc3RlZCBpbiBhIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlLCB0aGF0IGhhcyBtYXRl cmlhbGx5IGNoYW5nZWQuKQogCiBTZWNvbmQsIHdoZXJlIHRoZSBtb2RpZmllZCBjb2x1bW5zIGFy ZSBvbmx5IHVzZWQgaW4gaW5kZXhlcyB0aGF0IGRvIG5vdAogY29udGFpbiB0dXBsZSBJRHMsIGJ1 dCBtYWludGFpbiBzdW1tYXJpZXMgb2YgdGhlIGluZGV4ZWQgZGF0YSBieSBibG9jay4KQEAgLTEz MywxOCArMTMzLDI2IEBAIE5vdGU6IHdlIGNhbiB1c2UgYSAiZGVhZCIgbGluZSBwb2ludGVyIGZv ciBhbnkgREVMRVRFZCB0dXBsZSwKIHdoZXRoZXIgaXQgd2FzIHBhcnQgb2YgYSBIT1QgY2hhaW4g b3Igbm90LiAgVGhpcyBhbGxvd3Mgc3BhY2UgcmVjbGFtYXRpb24KIGluIGFkdmFuY2Ugb2YgcnVu bmluZyBWQUNVVU0gZm9yIHBsYWluIERFTEVURXMgYXMgd2VsbCBhcyBIT1QgdXBkYXRlcy4KIAot VGhlIHJlcXVpcmVtZW50IGZvciBkb2luZyBhIEhPVCB1cGRhdGUgaXMgdGhhdCBpbmRleGVzIHdo aWNoIHBvaW50IHRvCi10aGUgcm9vdCBsaW5lIHBvaW50ZXIgKGFuZCB0aHVzIG5lZWQgdG8gYmUg Y2xlYW5lZCB1cCBieSBWQUNVVU0gd2hlbiB0aGUKLXR1cGxlIGlzIGRlYWQpIGRvIG5vdCByZWZl cmVuY2UgY29sdW1ucyB3aGljaCBhcmUgdXBkYXRlZCBpbiB0aGF0IEhPVAotY2hhaW4uICBTdW1t YXJpemluZyBpbmRleGVzIChzdWNoIGFzIEJSSU4pIGFyZSBhc3N1bWVkIHRvIGhhdmUgbm8KLXJl ZmVyZW5jZXMgdG8gaW5kaXZpZHVhbCB0dXBsZXMgYW5kIHRodXMgYXJlIGlnbm9yZWQgd2hlbiBj aGVja2luZyBIT1QKLWFwcGxpY2FiaWxpdHkuICBUaGUgdXBkYXRlZCBjb2x1bW5zIGFyZSBjaGVj a2VkIGF0IGV4ZWN1dGlvbiB0aW1lIGJ5Ci1jb21wYXJpbmcgdGhlIGJpbmFyeSByZXByZXNlbnRh dGlvbiBvZiB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzLiAgV2UgaW5zaXN0Ci1vbiBiaXR3aXNlIGVx dWFsaXR5IHJhdGhlciB0aGFuIHVzaW5nIGRhdGF0eXBlLXNwZWNpZmljIGVxdWFsaXR5IHJvdXRp bmVzLgotVGhlIG1haW4gcmVhc29uIHRvIGF2b2lkIHRoZSBsYXR0ZXIgaXMgdGhhdCB0aGVyZSBt aWdodCBiZSBtdWx0aXBsZQotbm90aW9ucyBvZiBlcXVhbGl0eSBmb3IgYSBkYXRhdHlwZSwgYW5k IHdlIGRvbid0IGtub3cgZXhhY3RseSB3aGljaCBvbmUKLWlzIHJlbGV2YW50IGZvciB0aGUgaW5k ZXhlcyBhdCBoYW5kLiAgV2UgYXNzdW1lIHRoYXQgYml0d2lzZSBlcXVhbGl0eQotZ3VhcmFudGVl cyBlcXVhbGl0eSBmb3IgYWxsIHB1cnBvc2VzLgorVGhlIHJlcXVpcmVtZW50IGZvciBkb2luZyBh IEhPVCB1cGRhdGUgaXMgdGhhdCBpbmRleGVzIHdoaWNoIHBvaW50IHRvIHRoZSByb290CitsaW5l IHBvaW50ZXIgKGFuZCB0aHVzIG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBieSBWQUNVVU0gd2hlbiB0 aGUgdHVwbGUgaXMgZGVhZCkKK2RvIG5vdCByZWZlcmVuY2UgY29sdW1ucyB3aGljaCBhcmUgdXBk YXRlZCBpbiB0aGF0IEhPVCBjaGFpbi4KKworU3VtbWFyaXppbmcgaW5kZXhlcyAoc3VjaCBhcyBC UklOKSBhcmUgYXNzdW1lZCB0byBoYXZlIG5vIHJlZmVyZW5jZXMgdG8KK2luZGl2aWR1YWwgdHVw bGVzIGFuZCB0aHVzIGFyZSBpZ25vcmVkIHdoZW4gY2hlY2tpbmcgSE9UIGFwcGxpY2FiaWxpdHku CisKK0V4cHJlc3Npb25zIG9uIGluZGV4ZXMgYXJlIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdHMg YXJlIHVzZWQgd2hlbiBjaGVjayBmb3IKK2NoYW5nZXMuICBUaGlzIGFsbG93cyBmb3IgdGhlIEpT T05CIGRhdGF0eXBlIHRvIGhhdmUgSE9UIHVwZGF0ZXMgd2hlbiB0aGUKK2luZGV4ZWQgcG9ydGlv biBvZiB0aGUgZG9jdW1lbnQgYXJlIG5vdCBtb2RpZmllZC4KKworUGFydGlhbCBpbmRleCBleHBy ZXNzaW9ucyBhcmUgZXZhbHVhdGVkLCBIT1QgdXBkYXRlcyBhcmUgYWxsb3dlZCB3aGVuIHRoZQor dXBkYXRlZCBpbmRleCB2YWx1ZXMgZG8gbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS4KKworVGhl IHVwZGF0ZWQgY29sdW1ucyBhcmUgY2hlY2tlZCBhdCBleGVjdXRpb24gdGltZSBieSBjb21wYXJp bmcgdGhlIGJpbmFyeQorcmVwcmVzZW50YXRpb24gb2YgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcy4g IFdlIGluc2lzdCBvbiBiaXR3aXNlIGVxdWFsaXR5IHJhdGhlcgordGhhbiB1c2luZyBkYXRhdHlw ZS1zcGVjaWZpYyBlcXVhbGl0eSByb3V0aW5lcy4gIFRoZSBtYWluIHJlYXNvbiB0byBhdm9pZCB0 aGUKK2xhdHRlciBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG5vdGlvbnMgb2YgZXF1 YWxpdHkgZm9yIGEgZGF0YXR5cGUsIGFuZAord2UgZG9uJ3Qga25vdyBleGFjdGx5IHdoaWNoIG9u ZSBpcyByZWxldmFudCBmb3IgdGhlIGluZGV4ZXMgYXQgaGFuZC4gIFdlIGFzc3VtZQordGhhdCBi aXR3aXNlIGVxdWFsaXR5IGd1YXJhbnRlZXMgZXF1YWxpdHkgZm9yIGFsbCBwdXJwb3Nlcy4KIAog SWYgYW55IGNvbHVtbnMgdGhhdCBhcmUgaW5jbHVkZWQgYnkgbm9uLXN1bW1hcml6aW5nIGluZGV4 ZXMgYXJlIHVwZGF0ZWQsCiB0aGUgSE9UIG9wdGltaXphdGlvbiBpcyBub3QgYXBwbGllZCwgYW5k IHRoZSBuZXcgdHVwbGUgaXMgaW5zZXJ0ZWQgaW50bwpAQCAtMTUyLDkgKzE2MCw3IEBAIGFsbCBp bmRleGVzIG9mIHRoZSB0YWJsZS4gIElmIG5vbmUgb2YgdGhlIHVwZGF0ZWQgY29sdW1ucyBhcmUg aW5jbHVkZWQgaW4KIHRoZSB0YWJsZSdzIGluZGV4ZXMsIHRoZSBIT1Qgb3B0aW1pemF0aW9uIGlz IGFwcGxpZWQgYW5kIG5vIGluZGV4ZXMgYXJlCiB1cGRhdGVkLiAgSWYgaW5zdGVhZCB0aGUgdXBk YXRlZCBjb2x1bW5zIGFyZSBvbmx5IGluZGV4ZWQgYnkgc3VtbWFyaXppbmcKIGluZGV4ZXMsIHRo ZSBIT1Qgb3B0aW1pemF0aW9uIGlzIGFwcGxpZWQsIGJ1dCB0aGUgdXBkYXRlIGlzIHByb3BhZ2F0 ZWQgdG8KLWFsbCBzdW1tYXJpemluZyBpbmRleGVzLiAgKFJlYWxpc3RpY2FsbHksIHdlIG9ubHkg bmVlZCB0byBwcm9wYWdhdGUgdGhlCi11cGRhdGUgdG8gdGhlIGluZGV4ZXMgdGhhdCBjb250YWlu IHRoZSB1cGRhdGVkIHZhbHVlcywgYnV0IHRoYXQgaXMgeWV0IHRvCi1iZSBpbXBsZW1lbnRlZC4p Cit0aGUgc3VtbWFyaXppbmcgaW5kZXhlcyB0aGF0IGhhdmUgdXBkYXRlZCB2YWx1ZXMuCiAKIEFi b3J0IENhc2VzCiAtLS0tLS0tLS0tLQpAQCAtNDc3LDggKzQ4Myw5IEBAIEhlYXAtb25seSB0dXBs ZQogSE9ULXNhZmUKIAogCUEgcHJvcG9zZWQgdHVwbGUgdXBkYXRlIGlzIHNhaWQgdG8gYmUgSE9U LXNhZmUgaWYgaXQgY2hhbmdlcwotCW5vbmUgb2YgdGhlIHR1cGxlJ3MgaW5kZXhlZCBjb2x1bW5z LiAgSXQgd2lsbCBvbmx5IGJlY29tZSBhbgotCWFjdHVhbCBIT1QgdXBkYXRlIGlmIHdlIGNhbiBm aW5kIHJvb20gb24gdGhlIHNhbWUgcGFnZSBmb3IKKwlub25lIG9mIHRoZSB0dXBsZSdzIGluZGV4 ZWQgY29sdW1ucyBvciBpZiB0aGUgY2hhbmdlcyByZW1haW4KKwlvdXRzaWRlIG9mIGEgcGFydGlh bCBpbmRleCdzIHByZWRpY2F0ZS4gIEl0IHdpbGwgb25seSBiZWNvbWUKKwlhbiBhY3R1YWwgSE9U IHVwZGF0ZSBpZiB3ZSBjYW4gZmluZCByb29tIG9uIHRoZSBzYW1lIHBhZ2UgZm9yCiAJdGhlIG5l dyB0dXBsZSB2ZXJzaW9uLgogCiBIT1QgdXBkYXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmlu ZGV4IGZhNzkzNWEwZWQzLi5hOGJiZmUxYjJiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMK QEAgLTMxNjQsMTIgKzMxNjQsMTMgQEAgVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJCUNvbW1hbmRJ ZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCVRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMgKnVw ZGF0ZV9pbmRleGVzKQorCQkJQml0bWFwc2V0ICoqbW9kaWZpZWRfaW5kZXhlcywgc3RydWN0IEVT dGF0ZSAqZXN0YXRlKQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVHJhbnNhY3Rpb25JZCB4aWQg PSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwogCUJpdG1hcHNldCAgKmhvdF9hdHRyczsKIAlC aXRtYXBzZXQgICpzdW1fYXR0cnM7CisJQml0bWFwc2V0ICAqZXhwX2F0dHJzOwogCUJpdG1hcHNl dCAgKmtleV9hdHRyczsKIAlCaXRtYXBzZXQgICppZF9hdHRyczsKIAlCaXRtYXBzZXQgICppbnRl cmVzdGluZ19hdHRyczsKQEAgLTMxOTIsNyArMzE5Myw2IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9u IHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCWJvb2wJCWhh dmVfdHVwbGVfbG9jayA9IGZhbHNlOwogCWJvb2wJCWlzY29tYm87CiAJYm9vbAkJdXNlX2hvdF91 cGRhdGUgPSBmYWxzZTsKLQlib29sCQlzdW1tYXJpemVkX3VwZGF0ZSA9IGZhbHNlOwogCWJvb2wJ CWtleV9pbnRhY3Q7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNlOwogCWJvb2wJ CWFsbF92aXNpYmxlX2NsZWFyZWRfbmV3ID0gZmFsc2U7CkBAIC0zMjQ2LDYgKzMyNDYsOCBAQCBo ZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxl IG5ld3R1cCwKIAkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwog CXN1bV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAogCQkJCQkJ CQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOworCWV4cF9hdHRycyA9IFJlbGF0 aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJf QklUTUFQX0VYUFJFU1NJT04pOwogCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwogCWlkX2F0dHJzID0gUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCiAJCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJ VE1BUF9JREVOVElUWV9LRVkpOwpAQCAtMzMwNywxMCArMzMwOSwxMCBAQCBoZWFwX3VwZGF0ZShS ZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJ dG1mZC0+Y3RpZCA9ICpvdGlkOwogCQl0bWZkLT54bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CiAJCXRtZmQtPmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBU VV9Ob25lOwogCiAJCWJtc19mcmVlKGhvdF9hdHRycyk7CiAJCWJtc19mcmVlKHN1bV9hdHRycyk7 CisJCWJtc19mcmVlKGV4cF9hdHRycyk7CiAJCWJtc19mcmVlKGtleV9hdHRycyk7CiAJCWJtc19m cmVlKGlkX2F0dHJzKTsKIAkJLyogbW9kaWZpZWRfYXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAq LwpAQCAtMzYwOCwxMCArMzYxMCwxMCBAQCBsMjoKIAkJCVVubG9ja1R1cGxlVHVwbG9jayhyZWxh dGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlKTsKIAkJaWYgKHZtYnVmZmVyICE9IElu dmFsaWRCdWZmZXIpCiAJCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfTm9uZTsKIAogCQlibXNfZnJlZShob3RfYXR0cnMpOwogCQlibXNfZnJlZShzdW1f YXR0cnMpOworCQlibXNfZnJlZShleHBfYXR0cnMpOwogCQlibXNfZnJlZShrZXlfYXR0cnMpOwog CQlibXNfZnJlZShpZF9hdHRycyk7CiAJCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsKQEAgLTM5 MjYsMzAgKzM5MjgsOTEgQEAgbDI6CiAJICogb25lIHBpbiBpcyBoZWxkLgogCSAqLwogCi0JaWYg KG5ld2J1ZiA9PSBidWZmZXIpCisJaWYgKG1vZGlmaWVkX2luZGV4ZXMgJiYgbmV3YnVmID09IGJ1 ZmZlcikKIAl7CisJCWJvb2wJCW9ubHlfc3VtbWFyaXppbmcgPSBmYWxzZTsKKwkJYm9vbAkJYWxy ZWFkeV9jaGVja2VkID0gZmFsc2U7CisJCWludAkJCW51bV9pbmRleGVzID0gbGlzdF9sZW5ndGgo cmVsYXRpb24tPnJkX2luZGV4aW5mb2xpc3QpOworCiAJCS8qCiAJCSAqIFNpbmNlIHRoZSBuZXcg dHVwbGUgaXMgZ29pbmcgaW50byB0aGUgc2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlCi0JCSAq IHRvIGRvIGEgSE9UIHVwZGF0ZS4gIENoZWNrIGlmIGFueSBvZiB0aGUgaW5kZXggY29sdW1ucyBo YXZlIGJlZW4KLQkJICogY2hhbmdlZC4KKwkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQXMgYSBy ZW1pbmRlciwgaG90X2F0dHJzIGluY2x1ZGVzIGF0dHJpYnV0ZXMKKwkJICogdXNlZCBpbiBleHBy ZXNzaW9ucywgYnV0IG5vdCBhdHRyaWJ1dGVzIHVzZWQgYnkgc3VtbWFyaXppbmcKKwkJICogaW5k ZXhlcy4KIAkJICovCiAJCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGhvdF9hdHRy cykpCiAJCXsKKwkJCSptb2RpZmllZF9pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIoKm1vZGlmaWVk X2luZGV4ZXMsIG51bV9pbmRleGVzKTsKIAkJCXVzZV9ob3RfdXBkYXRlID0gdHJ1ZTsKLQorCQl9 CisJCWVsc2UKKwkJewogCQkJLyoKLQkJCSAqIElmIG5vbmUgb2YgdGhlIGNvbHVtbnMgdGhhdCBh cmUgdXNlZCBpbiBob3QtYmxvY2tpbmcgaW5kZXhlcwotCQkJICogd2VyZSB1cGRhdGVkLCB3ZSBj YW4gYXBwbHkgSE9ULCBidXQgd2UgZG8gc3RpbGwgbmVlZCB0byBjaGVjawotCQkJICogaWYgd2Ug bmVlZCB0byB1cGRhdGUgdGhlIHN1bW1hcml6aW5nIGluZGV4ZXMsIGFuZCB1cGRhdGUgdGhvc2UK LQkJCSAqIGluZGV4ZXMgaWYgdGhlIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBvciB3ZSBtYXkgZmFp bCB0byBkZXRlY3QKLQkJCSAqIGUuZy4gdmFsdWUgYm91bmQgY2hhbmdlcyBpbiBCUklOIG1pbm1h eCBpbmRleGVzLgorCQkJICogV2UgbWF5IHN0aWxsIGJlIGFibGUgdG8gdXNlIHRoZSBIT1QgdXBk YXRlIHBhdGggaWYgdGhlIHJlYXNvbgorCQkJICogZm9yIHRoZSBvdmVybGFwIGlzIGFuIHVuY2hh bmdlZCBleHByZXNzaW9uLgogCQkJICovCi0JCQlpZiAoYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0 cnMsIHN1bV9hdHRycykpCi0JCQkJc3VtbWFyaXplZF91cGRhdGUgPSB0cnVlOworCQkJaWYgKGJt c19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBleHBfYXR0cnMpKQorCQkJeworCQkJCSptb2RpZmll ZF9pbmRleGVzID0KKwkJCQkJRXhlY0luZGV4ZXNSZXF1aXJpbmdVcGRhdGVzKHJlbGF0aW9uLCBt b2RpZmllZF9hdHRycywKKwkJCQkJCQkJCQkJCWVzdGF0ZSwgJm9sZHR1cCwgbmV3dHVwLAorCQkJ CQkJCQkJCQkJJm9ubHlfc3VtbWFyaXppbmcpOworCQkJCWFscmVhZHlfY2hlY2tlZCA9IHRydWU7 CisJCQkJaWYgKGJtc19pc19lbXB0eSgqbW9kaWZpZWRfaW5kZXhlcykgfHwgb25seV9zdW1tYXJp emluZykKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFdoZW4gbm8gaW5kZXhlcyB3ZXJlIHVwZGF0 ZWQsIG9yIHRoZSBvbmx5IGluZGV4ZXMKKwkJCQkJICogdXBkYXRlZCB3ZXJlIHN1bW1hcml6aW5n IGluZGV4ZXMsIHdlIGNhbiB1c2UgdGhlIEhPVAorCQkJCQkgKiBwYXRoLiAgV2UgZW5zdXJlIHRo YXQgdGhlIGJpdG1hcHNldCBpc24ndCBOVUxMIGJ5CisJCQkJCSAqIGFkZGluZyBpbiBhbiBpbmRl eCB0aGF0IGNhbid0IG1hdGNoIGxhdGVyIHdoZW4gd2UKKwkJCQkJICogZmlsdGVyIHRvIGRldGVy bWluZSB3aGljaCBpbmRleGVzIHRvIHVwZGF0ZSBhbmQgd2hpY2gKKwkJCQkJICogdG8gc2tpcCBp biBleGVjSW5kZXhpbmcuICBXZSBkbyB0aGF0IHNvIGFzIHRvIHNpZ25hbAorCQkJCQkgKiB0aGUg bmVlZCB0byBmaWx0ZXIgd2hpY2ggaW5kZXhlcyBhcmUgdXBkYXRlZC4KKwkJCQkJICovCisJCQkJ CSptb2RpZmllZF9pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIoKm1vZGlmaWVkX2luZGV4ZXMsIG51 bV9pbmRleGVzKTsKKwkJCQkJdXNlX2hvdF91cGRhdGUgPSB0cnVlOworCQkJCX0KKwkJCQllbHNl CisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBXaGVuIGFueSBpbmRleCByZXF1aXJlcyB1cGRhdGVz LCB0aGVuIGFsbCBpbmRleGVzIG11c3QKKwkJCQkJICogYmUgdXBkYXRlZCBhbmQgdGhpcyB1cGRh dGUgY2Fubm90IGJlIEhPVC4gIFdlIHNpZ25hbAorCQkJCQkgKiB0aGF0IGJ5IHNldHRpbmcgbW9k aWZpZWRfaW5kZXhlcyB0byBOVUxMIHdoaWNoCisJCQkJCSAqIGluZGljYXRlcyBvbiBuZWVkIHRv IGZpbHRlciBpbmRleGVzIG91dCBkdXJpbmcKKwkJCQkJICogZXhlY0luZGV4aW5nLgorCQkJCQkg Ki8KKwkJCQkJYm1zX2ZyZWUoKm1vZGlmaWVkX2luZGV4ZXMpOworCQkJCQkqbW9kaWZpZWRfaW5k ZXhlcyA9IE5VTEw7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLyoKKwkJICogU3VtbWFyaXppbmcg aW5kZXhlcyBuZWVkIG5vdCBwcmV2ZW50IGEgSE9UIHVwZGF0ZSB3aGVuIHRoZWlyCisJCSAqIGF0 dHJpYnV0ZXMgYXJlIG1vZGlmaWVkIGxpa2Ugb3RoZXIgaW5kZXggdHlwZXMsIGJ1dCB0aGVpciBp bmRleGVkCisJCSAqIHZhbHVlcyBkbyBuZWVkIHRvIGJlIHVwZGF0ZWQuIExldCdzIGZpbmQgb3V0 IHdoaWNoIGluZGV4ZXMgbmVlZCB0bworCQkgKiBiZSB1cGRhdGVkLgorCQkgKi8KKwkJaWYgKCFh bHJlYWR5X2NoZWNrZWQgJiYgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIHN1bV9hdHRycykp CisJCXsKKwkJCWJtc19mcmVlKCptb2RpZmllZF9pbmRleGVzKTsKKwkJCSptb2RpZmllZF9pbmRl eGVzID0KKwkJCQlFeGVjSW5kZXhlc1JlcXVpcmluZ1VwZGF0ZXMocmVsYXRpb24sIG1vZGlmaWVk X2F0dHJzLAorCQkJCQkJCQkJCQllc3RhdGUsICZvbGR0dXAsIG5ld3R1cCwKKwkJCQkJCQkJCQkJ Jm9ubHlfc3VtbWFyaXppbmcpOworCQkJaWYgKG9ubHlfc3VtbWFyaXppbmcpCisJCQkJdXNlX2hv dF91cGRhdGUgPSB0cnVlOwogCQl9CiAJfQogCWVsc2UKIAl7CisJCS8qCisJCSAqIFdlJ3JlIG5v dCBhYmxlIG9uIHRoZSBIT1QgdXBkYXRlIHBhdGguIFNldHRpbmcgbW9kaWZpZWRfaW5kZXhlcyB0 bworCQkgKiBOVUxMIGlzIHRoZSBzaWduYWwgdG8gdXBkYXRlIGFsbCBpbmRleGVzLgorCQkgKi8K KwkJaWYgKG1vZGlmaWVkX2luZGV4ZXMpCisJCQkqbW9kaWZpZWRfaW5kZXhlcyA9IE5VTEw7CisK IAkJLyogU2V0IGEgaGludCB0aGF0IHRoZSBvbGQgcGFnZSBjb3VsZCB1c2UgcHJ1bmUvZGVmcmFn ICovCiAJCVBhZ2VTZXRGdWxsKHBhZ2UpOwogCX0KQEAgLTQxMDYsMjcgKzQxNjksMTAgQEAgbDI6 CiAJCWhlYXBfZnJlZXR1cGxlKGhlYXB0dXApOwogCX0KIAotCS8qCi0JICogSWYgaXQgaXMgYSBI T1QgdXBkYXRlLCB0aGUgdXBkYXRlIG1heSBzdGlsbCBuZWVkIHRvIHVwZGF0ZSBzdW1tYXJpemVk Ci0JICogaW5kZXhlcywgbGVzdCB3ZSBmYWlsIHRvIHVwZGF0ZSB0aG9zZSBzdW1tYXJpZXMgYW5k IGdldCBpbmNvcnJlY3QKLQkgKiByZXN1bHRzIChmb3IgZXhhbXBsZSwgbWlubWF4IGJvdW5kcyBv ZiB0aGUgYmxvY2sgbWF5IGNoYW5nZSB3aXRoIHRoaXMKLQkgKiB1cGRhdGUpLgotCSAqLwotCWlm ICh1c2VfaG90X3VwZGF0ZSkKLQl7Ci0JCWlmIChzdW1tYXJpemVkX3VwZGF0ZSkKLQkJCSp1cGRh dGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOwotCQllbHNlCi0JCQkqdXBkYXRlX2luZGV4ZXMg PSBUVV9Ob25lOwotCX0KLQllbHNlCi0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKLQogCWlm IChvbGRfa2V5X3R1cGxlICE9IE5VTEwgJiYgb2xkX2tleV9jb3BpZWQpCiAJCWhlYXBfZnJlZXR1 cGxlKG9sZF9rZXlfdHVwbGUpOwogCiAJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQlibXNfZnJlZShz dW1fYXR0cnMpOwogCWJtc19mcmVlKGtleV9hdHRycyk7CiAJYm1zX2ZyZWUoaWRfYXR0cnMpOwog CWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsKQEAgLTQ0MDMsOCArNDQ0OSw3IEBAIEhlYXBEZXRl cm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxhdGlvbiwKICAqIHZpYSBlcmVwb3J0KCkuCiAg Ki8KIHZvaWQKLXNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50 ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVf aW5kZXhlcykKK3NpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50 ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1 cmVEYXRhIHRtZmQ7CkBAIC00NDEzLDcgKzQ0NTgsNyBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSB0dXAsCiAJcmVzdWx0 ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwKIAkJCQkJCSBHZXRDdXJyZW50Q29t bWFuZElkKHRydWUpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgdHJ1ZSAvKiB3YWl0IGZvciBj b21taXQgKi8gLAotCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJ CQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBOVUxMLCBOVUxMKTsKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7 CiAJCWNhc2UgVE1fU2VsZk1vZGlmaWVkOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggYzBiZWMwMTQxNTQuLjg0ZjcyYjZlZDMzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTMxMiw4ICszMTIsOCBAQCBoZWFwYW1fdHVw bGVfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciB0aWQsIENvbW1hbmRJZCBj aWQsCiBzdGF0aWMgVE1fUmVzdWx0CiBoZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0 aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJQ29tbWFu ZElkIGNpZCwgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJCWJv b2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2tt b2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJYm9vbCB3YWl0LCBU TV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCUJpdG1h cHNldCAqKm1vZGlmaWVkX2luZGV4ZXMsIEVTdGF0ZSAqZXN0YXRlKQogewogCWJvb2wJCXNob3Vs ZEZyZWUgPSB0cnVlOwogCUhlYXBUdXBsZQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUo c2xvdCwgdHJ1ZSwgJnNob3VsZEZyZWUpOwpAQCAtMzI0LDMwICszMjQsOSBAQCBoZWFwYW1fdHVw bGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCwKIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAog CXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBjcm9zc2No ZWNrLCB3YWl0LAotCQkJCQkJIHRtZmQsIGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJ CQkgdG1mZCwgbG9ja21vZGUsIG1vZGlmaWVkX2luZGV4ZXMsIGVzdGF0ZSk7CiAJSXRlbVBvaW50 ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKLQkvKgotCSAqIERlY2lk ZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQotCSAq Ci0JICogTm90ZTogaGVhcF91cGRhdGUgcmV0dXJucyB0aGUgdGlkIChsb2NhdGlvbikgb2YgdGhl IG5ldyB0dXBsZSBpbiB0aGUKLQkgKiB0X3NlbGYgZmllbGQuCi0JICoKLQkgKiBJZiB0aGUgdXBk YXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVzLiBJZiB0aGUgdXBkYXRl IGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0ZWQgc3VtbWFyaXplZCBjb2x1 bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1cGRhdGUgb25seSBzdW1tYXJpemVkIGluZGV4ZXMsIG9y IG5vbmUgYXQgYWxsLgotCSAqLwotCWlmIChyZXN1bHQgIT0gVE1fT2spCi0JewotCQlBc3NlcnQo KnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwotCX0KLQllbHNlIGlmICghSGVhcFR1cGxlSXNIZWFwT25seSh0dXBsZSkpCi0JCUFzc2VydCgq dXBkYXRlX2luZGV4ZXMgPT0gVFVfQWxsKTsKLQllbHNlCi0JCUFzc2VydCgoKnVwZGF0ZV9pbmRl eGVzID09IFRVX1N1bW1hcml6aW5nKSB8fAotCQkJICAgKCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9O b25lKSk7Ci0KIAlpZiAoc2hvdWxkRnJlZSkKIAkJcGZyZWUodHVwbGUpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYwppbmRleCBlMThhOGY4MjUwZi4uMmI1ZmUzM2U0M2IgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMzM0LDggKzMzNCw3IEBAIHNpbXBsZV90YWJsZV90 dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsIFNuYXBzaG90IHNuYXBz aG90KQogdm9pZAogc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Q b2ludGVyIG90aWQsCiAJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LAotCQkJCQkJICBTbmFw c2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMp CisJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1f RmFpbHVyZURhdGEgdG1mZDsKQEAgLTM0NSw3ICszNDQsNyBAQCBzaW1wbGVfdGFibGVfdHVwbGVf dXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJR2V0Q3VycmVu dENvbW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25hcHNob3QsIEludmFsaWRTbmFwc2hvdCwKIAkJ CQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJCQkmdG1mZCwgJmxvY2tt b2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsIE5VTEwsIE5V TEwpOwogCiAJc3dpdGNoIChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGNkYWJmNzgw MjQ0Li5iZjlkNTU4YThjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMjQ1NSw3ICsyNDU1LDIwIEBA IEJ1aWxkSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCiAJLyogZmlsbCBpbiBhdHRyaWJ1dGUg bnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCisJewogCQlpaS0+aWlf SW5kZXhBdHRyTnVtYmVyc1tpXSA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCQlp aS0+aWlfSW5kZXhBdHRycyA9CisJCQlibXNfYWRkX21lbWJlcihpaS0+aWlfSW5kZXhBdHRycywK KwkJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldIC0gRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCisJLyogY29sbGVjdCBhdHRyaWJ1dGVzIHVzZWQg aW4gdGhlIGV4cHJlc3Npb24sIGlmIG9uZSBpcyBwcmVzZW50ICovCisJaWYgKGlpLT5paV9FeHBy ZXNzaW9ucykKKwkJcHVsbF92YXJhdHRub3MoKE5vZGUgKikgaWktPmlpX0V4cHJlc3Npb25zLCAx LCAmaWktPmlpX0V4cHJlc3Npb25BdHRycyk7CisKKwkvKiBjb2xsZWN0IGF0dHJpYnV0ZXMgdXNl ZCBpbiB0aGUgcHJlZGljYXRlLCBpZiBvbmUgaXMgcHJlc2VudCAqLworCWlmIChpaS0+aWlfUHJl ZGljYXRlKQorCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpaS0+aWlfUHJlZGljYXRlLCAxLCAm aWktPmlpX1ByZWRpY2F0ZUF0dHJzKTsKIAogCS8qIGZldGNoIGV4Y2x1c2lvbiBjb25zdHJhaW50 IGluZm8gaWYgYW55ICovCiAJaWYgKGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKQEAgLTI0 NjYsNiArMjQ3OSw4IEBAIEJ1aWxkSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkJCQkg JmlpLT5paV9FeGNsdXNpb25TdHJhdHMpOwogCX0KIAorCWlpLT5paV9PcENsYXNzRGF0YVR5cGVz ID0gaW5kZXgtPnJkX29wY2ludHlwZTsKKwogCXJldHVybiBpaTsKIH0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eGluZy5jCmluZGV4IDI1YzRiNmJkYzg3Li4zZmRlYmJhM2YwNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhp bmcuYwpAQCAtNzIsOCArNzIsNyBAQCBDYXRhbG9nQ2xvc2VJbmRleGVzKENhdGFsb2dJbmRleFN0 YXRlIGluZHN0YXRlKQogICogVGhpcyBpcyBlZmZlY3RpdmVseSBhIGN1dC1kb3duIHZlcnNpb24g b2YgRXhlY0luc2VydEluZGV4VHVwbGVzLgogICovCiBzdGF0aWMgdm9pZAotQ2F0YWxvZ0luZGV4 SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAot CQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcykKK0NhdGFsb2dJbmRleEluc2Vy dChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSkKIHsKIAlp bnQJCQlpOwogCWludAkJCW51bUluZGV4ZXM7CkBAIC04MywyMCArODIsOSBAQCBDYXRhbG9nSW5k ZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUs CiAJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJyYXk7CiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhf S0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlib29sCQlvbmx5U3VtbWFy aXplZCA9ICh1cGRhdGVJbmRleGVzID09IFRVX1N1bW1hcml6aW5nKTsKIAotCS8qCi0JICogSE9U IHVwZGF0ZSBkb2VzIG5vdCByZXF1aXJlIGluZGV4IGluc2VydHMuIEJ1dCB3aXRoIGFzc2VydHMg ZW5hYmxlZCB3ZQotCSAqIHdhbnQgdG8gY2hlY2sgdGhhdCBpdCdkIGJlIGxlZ2FsIHRvIGN1cnJl bnRseSBpbnNlcnQgaW50byB0aGUKLQkgKiB0YWJsZS9pbmRleC4KLQkgKi8KLSNpZm5kZWYgVVNF X0FTU0VSVF9DSEVDS0lORwotCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkgJiYg IW9ubHlTdW1tYXJpemVkKQotCQlyZXR1cm47Ci0jZW5kaWYKLQotCS8qIFdoZW4gb25seSB1cGRh dGluZyBzdW1tYXJpemVkIGluZGV4ZXMsIHRoZSB0dXBsZSBoYXMgdG8gYmUgSE9ULiAqLwotCUFz c2VydCgoIW9ubHlTdW1tYXJpemVkKSB8fCBIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkp OworCS8qIFRoZSB0dXBsZSBuZXZlciBiZSBIT1QuICovCisJQXNzZXJ0KCFIZWFwVHVwbGVJc0hl YXBPbmx5KGhlYXBUdXBsZSkpOwogCiAJLyoKIAkgKiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUg c3RhdGUgc3RydWN0dXJlLiAgRmFsbCBvdXQgaWYgbm90aGluZyB0byBkby4KQEAgLTEzOCwyMiAr MTI2LDYgQEAgQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlLCBI ZWFwVHVwbGUgaGVhcFR1cGxlLAogCQlBc3NlcnQoaW5kZXgtPnJkX2luZGV4LT5pbmRpbW1lZGlh dGUpOwogCQlBc3NlcnQoaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzICE9IDApOwogCi0J CS8qIHNlZSBlYXJsaWVyIGNoZWNrIGFib3ZlICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RwotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpICYmICFvbmx5U3VtbWFyaXpl ZCkKLQkJewotCQkJQXNzZXJ0KCFSZWluZGV4SXNQcm9jZXNzaW5nSW5kZXgoUmVsYXRpb25HZXRS ZWxpZChpbmRleCkpKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0jZW5kaWYJCQkJCQkJLyogVVNFX0FT U0VSVF9DSEVDS0lORyAqLwotCi0JCS8qCi0JCSAqIFNraXAgaW5zZXJ0aW9ucyBpbnRvIG5vbi1z dW1tYXJpemluZyBpbmRleGVzIGlmIHdlIG9ubHkgbmVlZCB0bwotCQkgKiB1cGRhdGUgc3VtbWFy aXppbmcgaW5kZXhlcy4KLQkJICovCi0JCWlmIChvbmx5U3VtbWFyaXplZCAmJiAhaW5kZXhJbmZv LT5paV9TdW1tYXJpemluZykKLQkJCWNvbnRpbnVlOwotCiAJCS8qCiAJCSAqIEZvcm1JbmRleERh dHVtIGZpbGxzIGluIGl0cyB2YWx1ZXMgYW5kIGlzbnVsbCBwYXJhbWV0ZXJzIHdpdGggdGhlCiAJ CSAqIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgdGhlIGNvbHVtbihzKSBvZiB0aGUgaW5kZXguCkBA IC0yNDAsNyArMjEyLDcgQEAgQ2F0YWxvZ1R1cGxlSW5zZXJ0KFJlbGF0aW9uIGhlYXBSZWwsIEhl YXBUdXBsZSB0dXApCiAKIAlzaW1wbGVfaGVhcF9pbnNlcnQoaGVhcFJlbCwgdHVwKTsKIAotCUNh dGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCBUVV9BbGwpOworCUNhdGFsb2dJbmRleElu c2VydChpbmRzdGF0ZSwgdHVwKTsKIAlDYXRhbG9nQ2xvc2VJbmRleGVzKGluZHN0YXRlKTsKIH0K IApAQCAtMjYwLDcgKzIzMiw3IEBAIENhdGFsb2dUdXBsZUluc2VydFdpdGhJbmZvKFJlbGF0aW9u IGhlYXBSZWwsIEhlYXBUdXBsZSB0dXAsCiAKIAlzaW1wbGVfaGVhcF9pbnNlcnQoaGVhcFJlbCwg dHVwKTsKIAotCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCBUVV9BbGwpOworCUNh dGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwKTsKIH0KIAogLyoKQEAgLTI5MSw3ICsyNjMs NyBAQCBDYXRhbG9nVHVwbGVzTXVsdGlJbnNlcnRXaXRoSW5mbyhSZWxhdGlvbiBoZWFwUmVsLCBU dXBsZVRhYmxlU2xvdCAqKnNsb3QsCiAKIAkJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxl KHNsb3RbaV0sIHRydWUsICZzaG91bGRfZnJlZSk7CiAJCXR1cGxlLT50X3RhYmxlT2lkID0gc2xv dFtpXS0+dHRzX3RhYmxlT2lkOwotCQlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1cGxl LCBUVV9BbGwpOworCQlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1cGxlKTsKIAogCQlp ZiAoc2hvdWxkX2ZyZWUpCiAJCQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CkBAIC0zMTMsMTUgKzI4 NSwxNCBAQCB2b2lkCiBDYXRhbG9nVHVwbGVVcGRhdGUoUmVsYXRpb24gaGVhcFJlbCwgSXRlbVBv aW50ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCkKIHsKIAlDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0 ZTsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CiAKIAlDYXRhbG9n VHVwbGVDaGVja0NvbnN0cmFpbnRzKGhlYXBSZWwsIHR1cCk7CiAKIAlpbmRzdGF0ZSA9IENhdGFs b2dPcGVuSW5kZXhlcyhoZWFwUmVsKTsKIAotCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBv dGlkLCB0dXAsICZ1cGRhdGVJbmRleGVzKTsKKwlzaW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwg b3RpZCwgdHVwKTsKIAotCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVJ bmRleGVzKTsKKwlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1cCk7CiAJQ2F0YWxvZ0Ns b3NlSW5kZXhlcyhpbmRzdGF0ZSk7CiB9CiAKQEAgLTMzNywxMyArMzA4LDExIEBAIHZvaWQKIENh dGFsb2dUdXBsZVVwZGF0ZVdpdGhJbmZvKFJlbGF0aW9uIGhlYXBSZWwsIEl0ZW1Qb2ludGVyIG90 aWQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkgICBDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkK IHsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7Ci0KIAlDYXRhbG9n VHVwbGVDaGVja0NvbnN0cmFpbnRzKGhlYXBSZWwsIHR1cCk7CiAKLQlzaW1wbGVfaGVhcF91cGRh dGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAmdXBkYXRlSW5kZXhlcyk7CisJc2ltcGxlX2hlYXBfdXBk YXRlKGhlYXBSZWwsIG90aWQsIHR1cCk7CiAKLQlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUs IHR1cCwgdXBkYXRlSW5kZXhlcyk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA3Yzg3ZjAxMmMz MC4uMDk0YmY0OTkwMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRl eGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0xMTcs NiArMTE3LDggQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNsdWRl ICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1 ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIC8qIHdh aXRNb2RlIGFyZ3VtZW50IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCgp ICovCiB0eXBlZGVmIGVudW0KQEAgLTE2OCw2ICsxNzAsNyBAQCBFeGVjT3BlbkluZGljZXMoUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgYm9vbCBzcGVjdWxhdGl2ZSkKIAlJbmRleEluZm8g KippbmRleEluZm9BcnJheTsKIAogCXJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPSAwOwor CXJlc3VsdFJlbGF0aW9uLT5yZF9pbmRleGluZm9saXN0ID0gTklMOwogCiAJLyogZmFzdCBwYXRo IGlmIG5vIGluZGV4ZXMgKi8KIAlpZiAoIVJlbGF0aW9uR2V0Rm9ybShyZXN1bHRSZWxhdGlvbikt PnJlbGhhc2luZGV4KQpAQCAtMjEwLDYgKzIxMywxMCBAQCBFeGVjT3BlbkluZGljZXMoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgYm9vbCBzcGVjdWxhdGl2ZSkKIAkJLyogZXh0cmFjdCBp bmRleCBrZXkgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5kZXgncyBwZ19pbmRleCBpbmZvICovCiAJ CWlpID0gQnVpbGRJbmRleEluZm8oaW5kZXhEZXNjKTsKIAorCQkvKiB1c2VkIHdoZW4gZGV0ZXJt aW5pbmcgaWYgaW5kZXhlZCB2YWx1ZXMgY2hhbmdlZCBkdXJpbmcgdXBkYXRlICovCisJCXJlc3Vs dFJlbGF0aW9uLT5yZF9pbmRleGluZm9saXN0ID0KKwkJCWxhcHBlbmQocmVzdWx0UmVsYXRpb24t PnJkX2luZGV4aW5mb2xpc3QsIGlpKTsKKwogCQkvKgogCQkgKiBJZiB0aGUgaW5kZXhlcyBhcmUg dG8gYmUgdXNlZCBmb3Igc3BlY3VsYXRpdmUgaW5zZXJ0aW9uIG9yIGNvbmZsaWN0CiAJCSAqIGRl dGVjdGlvbiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uLCBhZGQgZXh0cmEgaW5mb3JtYXRpb24gcmVx dWlyZWQgYnkKQEAgLTMwNyw3ICszMTQsNyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJICBib29sIG5vRHVwRXJyLAogCQkJCQkgIGJv b2wgKnNwZWNDb25mbGljdCwKIAkJCQkJICBMaXN0ICphcmJpdGVySW5kZXhlcywKLQkJCQkJICBi b29sIG9ubHlTdW1tYXJpemluZykKKwkJCQkJICBCaXRtYXBzZXQgKm1vZGlmaWVkX2luZGV4ZXMp CiB7CiAJSXRlbVBvaW50ZXIgdHVwbGVpZCA9ICZzbG90LT50dHNfdGlkOwogCUxpc3QJICAgKnJl c3VsdCA9IE5JTDsKQEAgLTM2NCwxMCArMzcxLDEyIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICog U2tpcCBwcm9jZXNzaW5nIG9mIG5vbi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdlIG9ubHkgdXBk YXRlCi0JCSAqIHN1bW1hcml6aW5nIGluZGV4ZXMKKwkJICogSWYgbW9kaWZpZWRfaW5kZXhlcyBp cyBOVUxMLCB3ZSdyZSBub3QgaW4gYSBIT1QgdXBkYXRlLCBzbyB3ZQorCQkgKiBzaG91bGQgdXBk YXRlIGFsbCBpbmRleGVzLiAgSWYgaXQncyBub3QgTlVMTCwgd2Ugc2hvdWxkIG9ubHkgdXBkYXRl CisJCSAqIHRoZSBsaXN0ZWQgaW5kZXhlcy4gIFRoaXMgbGlzdCB3aWxsIGluY2x1ZGUgYW55IHN1 bW1hcml6aW5nIGluZGV4ZXMKKwkJICogdGhhdCByZXF1aXJlIHVwZGF0ZXMgb24gdGhlIEhPVCBw YXRoIGFzIHdlbGwuCiAJCSAqLwotCQlpZiAob25seVN1bW1hcml6aW5nICYmICFpbmRleEluZm8t PmlpX1N1bW1hcml6aW5nKQorCQlpZiAodXBkYXRlICYmIG1vZGlmaWVkX2luZGV4ZXMgJiYgIWJt c19pc19tZW1iZXIoaSwgbW9kaWZpZWRfaW5kZXhlcykpCiAJCQljb250aW51ZTsKIAogCQkvKiBD aGVjayBmb3IgcGFydGlhbCBpbmRleCAqLwpAQCAtMTA4OSw2ICsxMDk4LDkgQEAgaW5kZXhfdW5j aGFuZ2VkX2J5X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVz dGF0ZSwKIAogCWlmIChoYXNleHByZXNzaW9uKQogCXsKKwkJaWYgKGluZGV4SW5mby0+aWlfSW5k ZXhVbmNoYW5nZWQpCisJCQlyZXR1cm4gdHJ1ZTsKKwogCQlpbmRleEluZm8tPmlpX0luZGV4VW5j aGFuZ2VkID0gZmFsc2U7CiAJCXJldHVybiBmYWxzZTsKIAl9CkBAIC0xMTY2LDMgKzExNzgsMjIx IEBAIEV4ZWNXaXRob3V0T3ZlcmxhcHNOb3RFbXB0eShSZWxhdGlvbiByZWwsIE5hbWVEYXRhIGF0 dG5hbWUsIERhdHVtIGF0dHZhbCwgY2hhciB0CiAJCQkJIGVycm1zZygiZW1wdHkgV0lUSE9VVCBP VkVSTEFQUyB2YWx1ZSBmb3VuZCBpbiBjb2x1bW4gXCIlc1wiIGluIHJlbGF0aW9uIFwiJXNcIiIs CiAJCQkJCQlOYW1lU3RyKGF0dG5hbWUpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkp OwogfQorCisvKgorICogRGV0ZXJtaW5lIHdoaWNoIGluZGV4ZXMgbXVzdCBiZSBpbnZva2VkIGR1 cmluZyBFeGVjSW5kZXhJbnNlcnRUdXBsZSgpLgorICoKKyAqIFRoYXQgd2lsbCBpbmNsdWRlOiBh bnkgaW5kZXggb24gYSBjb2x1bW4gd2hlcmUgdGhlcmUgaXMgYW4gYXR0cmlidXRlIHRoYXQgd2Fz CisgKiBtb2RpZmllZCwgYW55IGV4cHJlc3Npb24gaW5kZXggd2hlcmUgdGhlIGV4cHJlc3Npb24n cyB2YWx1ZSB1cGRhdGVkLCBhbnkKKyAqIGluZGV4IHVzZWQgaW4gYSBjb25zdHJhaW50LCBhbmQg YW55IHN1bW1hcml6aW5nIGluZGV4LgorICovCitCaXRtYXBzZXQgKgorRXhlY0luZGV4ZXNSZXF1 aXJpbmdVcGRhdGVzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCUJpdG1hcHNldCAqbW9kaWZp ZWRfYXR0cnMsCisJCQkJCQkJRVN0YXRlICplc3RhdGUsCisJCQkJCQkJSGVhcFR1cGxlIG9sZF90 dXBsZSwKKwkJCQkJCQlIZWFwVHVwbGUgbmV3X3R1cGxlLAorCQkJCQkJCWJvb2wgKm9ubHlfc3Vt bWFyaXppbmcpCit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqaW5kZXhpbmZvbGlzdCA9 IHJlbGF0aW9uLT5yZF9pbmRleGluZm9saXN0OworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IE5V TEw7CisJaW50CQkJbnVtX3N1bW1hcml6aW5nID0gMDsKKwlUdXBsZURlc2MJdHVwbGVkZXNjOwor CVR1cGxlVGFibGVTbG90ICpvbGRfdHRzLAorCQkJICAgKm5ld190dHM7CisJYm9vbAkJZXhwcmVz c2lvbl9jaGVja3MgPSBSZWxhdGlvbkdldEV4cHJlc3Npb25DaGVja3MocmVsYXRpb24pOworCUJp dG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7CisKKwkvKgorCSAqIEV4YW1pbmUgZWFjaCBpbmRleCBv biB0aGlzIHJlbGF0aW9uIHJlbGF0aXZlIHRvIHRoZSBjaGFuZ2VzIGJldHdlZW4gb2xkCisJICog YW5kIG5ldyB0dXBsZXMuCisJICovCisJZm9yZWFjaChsYywgaW5kZXhpbmZvbGlzdCkKKwl7CisJ CUluZGV4SW5mbyAgKmluZGV4SW5mbyA9IChJbmRleEluZm8gKikgbGZpcnN0KGxjKTsKKworCQkv KgorCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvbid0IHByZXZlbnQgSE9UIHVwZGF0ZXMsIGJ1 dCBkbyByZXF1aXJlIHRoYXQKKwkJICogdGhleSBhcmUgdXBkYXRlZCB3aGVuIG5lY2Vzc2FyeSBz byB3ZSBpbmNsdWRlIGl0IGluIHRoZSBzZXQuCisJCSAqLworCQlpZiAoaW5kZXhJbmZvLT5paV9T dW1tYXJpemluZykKKwkJeworCQkJaWYgKGJtc19vdmVybGFwKGluZGV4SW5mby0+aWlfSW5kZXhB dHRycywgbW9kaWZpZWRfYXR0cnMpKQorCQkJeworCQkJCW51bV9zdW1tYXJpemluZysrOworCQkJ CXJlc3VsdCA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdCwgZm9yZWFjaF9jdXJyZW50X2luZGV4KGxj KSk7CisJCQl9CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIElmIHRoaXMgaXMgYSBw YXJ0aWFsIGluZGV4IGl0IGhhcyBhIHByZWRpY2F0ZSwgZXZhbHVhdGUgdGhlCisJCSAqIGV4cHJl c3Npb24gdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gaW5jbHVkZSBpdCBvciBub3QuCisJCSAq LworCQlpZiAoZXhwcmVzc2lvbl9jaGVja3MgJiYgZXN0YXRlICE9IE5VTEwgJiYKKwkJCWJtc19v dmVybGFwKGluZGV4SW5mby0+aWlfUHJlZGljYXRlQXR0cnMsIG1vZGlmaWVkX2F0dHJzKSkKKwkJ eworCQkJRXhwclN0YXRlICAqcHN0YXRlOworCQkJYm9vbAkJb2xkX3R1cGxlX3F1YWxpZmllcywK KwkJCQkJCW5ld190dXBsZV9xdWFsaWZpZXM7CisKKwkJCS8qIENyZWF0ZSB0aGVzZSBvbmNlLCBv bmx5IGlmIG5lY2Vzc2FyeSwgdGhlbiByZXVzZSB0aGVtLiAqLworCQkJaWYgKCFlY29udGV4dCkK KwkJCXsKKwkJCQllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKwkJ CQl0dXBsZWRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwkJCQlvbGRfdHRzID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHR1cGxlZGVzYywKKwkJCQkJCQkJCQkJCSAgICZUVFNP cHNIZWFwVHVwbGUpOworCQkJCW5ld190dHMgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QodHVw bGVkZXNjLAorCQkJCQkJCQkJCQkJICAgJlRUU09wc0hlYXBUdXBsZSk7CisKKwkJCQlFeGVjU3Rv cmVIZWFwVHVwbGUob2xkX3R1cGxlLCBvbGRfdHRzLCBJbnZhbGlkQnVmZmVyKTsKKwkJCQlFeGVj U3RvcmVIZWFwVHVwbGUobmV3X3R1cGxlLCBuZXdfdHRzLCBJbnZhbGlkQnVmZmVyKTsKKwkJCX0K KworCQkJcHN0YXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBl c3RhdGUpOworCisJCQkvKgorCQkJICogSGVyZSB0aGUgdGVybSAicXVhbGlmaWVzIiBtZWFucyAi c2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUKKwkJCSAqIGNvbmRpdGlvbiBvZiB0aGUgcGFydGlhbCBp bmRleCIuCisJCQkgKi8KKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG9sZF90dHM7CisJ CQlvbGRfdHVwbGVfcXVhbGlmaWVzID0gRXhlY1F1YWwocHN0YXRlLCBlY29udGV4dCk7CisKKwkJ CWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG5ld190dHM7CisJCQluZXdfdHVwbGVfcXVhbGlm aWVzID0gRXhlY1F1YWwocHN0YXRlLCBlY29udGV4dCk7CisKKwkJCS8qCisJCQkgKiBJZiBuZWl0 aGVyIHRoZSBvbGQgbm9yIHRoZSBuZXcgdHVwbGVzIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSB3ZQor CQkJICogY2FuIGJlIHN1cmUgdGhhdCB0aGlzIGluZGV4IGRvZXNuJ3QgbmVlZCB1cGRhdGluZywg Y29udGludWUgdG8KKwkJCSAqIHRoZSBuZXh0IGluZGV4LgorCQkJICovCisJCQlpZiAoKG5ld190 dXBsZV9xdWFsaWZpZXMgPT0gZmFsc2UpICYmIChvbGRfdHVwbGVfcXVhbGlmaWVzID09IGZhbHNl KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIElmIHRoZXJlIGlzIGEgdHJhbnNpdGlv biBiZXR3ZWVuIGluZGV4ZWQgYW5kIG5vdCBpbmRleGVkLAorCQkJICogdGhhdCdzIGVub3VnaCB0 byByZXF1aXJlIHRoYXQgdGhpcyBpbmRleCBpcyB1cGRhdGVkLgorCQkJICovCisJCQlpZiAobmV3 X3R1cGxlX3F1YWxpZmllcyAhPSBvbGRfdHVwbGVfcXVhbGlmaWVzKQorCQkJeworCQkJCXJlc3Vs dCA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdCwgZm9yZWFjaF9jdXJyZW50X2luZGV4KGxjKSk7CisJ CQkJY29udGludWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBPdGhlcndpc2UgdGhlIG9sZCBhbmQg bmV3IHZhbHVlcyBleGlzdCBpbiB0aGUgaW5kZXgsIGJ1dCBkaWQKKwkJCSAqIHRoZXkgZ2V0IHVw ZGF0ZWQ/ICBXZSBkb24ndCB5ZXQga25vdywgc28gcHJvY2VlZCB3aXRoIHRoZSBuZXh0CisJCQkg KiBzdGF0ZW1lbnQgaW4gdGhlIGxvb3AgdG8gZmluZCBvdXQuCisJCQkgKi8KKwkJfQorCisKKwkJ LyoKKwkJICogSW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIG1heSBvciBtYXkgbm90IGhhdmUgY2hh bmdlZCwgaXQgaXMKKwkJICogaW1wb3NzaWJsZSB0byBrbm93IHdpdGhvdXQgZXhlcmNpc2luZyB0 aGVpciBleHByZXNzaW9uIGFuZAorCQkgKiByZXZpZXdpbmcgaW5kZXggdHVwbGUgc3RhdGUgZm9y IGNoYW5nZXMuICBUaGlzIGlzIGEgbG90IG9mIHdvcmssCisJCSAqIGJ1dCBiZWNhdXNlIGFsbCBp bmRleGVzIG9uIEpTT05CIGNvbHVtbnMgZmFsbCBpbnRvIHRoaXMgY2F0ZWdvcnkgaXQKKwkJICog Y2FuIGJlIHdvcnRoIGl0IHRvIGF2b2lkIGluZGV4IHVwZGF0ZXMgYW5kIHJlbWFpbiBvbiB0aGUg SE9UIHVwZGF0ZQorCQkgKiBwYXRoIHdoZW4gcG9zc2libGUuCisJCSAqLworCQlpZiAoYm1zX292 ZXJsYXAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uQXR0cnMsIG1vZGlmaWVkX2F0dHJzKSkKKwkJ eworCQkJRGF0dW0JCW9sZF92YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCQkJYm9vbAkJb2xkX2lz bnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQlEYXR1bQkJbmV3X3ZhbHVlc1tJTkRFWF9NQVhfS0VZ U107CisJCQlib29sCQluZXdfaXNudWxsW0lOREVYX01BWF9LRVlTXTsKKwkJCWJvb2wJCWNoYW5n ZWQgPSBmYWxzZTsKKworCQkJLyoKKwkJCSAqIEFzc3VtZSB0aGUgaW5kZXggaXMgY2hhbmdlZCB3 aGVuIHdlIGRvbid0IGhhdmUgYW4gZXN0YXRlCisJCQkgKiBjb250ZXh0IHRvIHVzZSBvciB0aGUg cmVsb3B0aW9uIGlzIGRpc2FibGVkLgorCQkJICovCisJCQlpZiAoIWV4cHJlc3Npb25fY2hlY2tz IHx8IGVzdGF0ZSA9PSBOVUxMKQorCQkJeworCQkJCXJlc3VsdCA9IGJtc19hZGRfbWVtYmVyKHJl c3VsdCwgZm9yZWFjaF9jdXJyZW50X2luZGV4KGxjKSk7CisJCQkJY29udGludWU7CisJCQl9CisK KwkJCS8qIENyZWF0ZSB0aGVzZSBvbmNlLCBvbmx5IGlmIG5lY2Vzc2FyeSwgdGhlbiByZXVzZSB0 aGVtLiAqLworCQkJaWYgKCFlY29udGV4dCkKKwkJCXsKKwkJCQllY29udGV4dCA9IEdldFBlclR1 cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKwkJCQl0dXBsZWRlc2MgPSBSZWxhdGlvbkdldERlc2Ny KHJlbGF0aW9uKTsKKwkJCQlvbGRfdHRzID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHR1cGxl ZGVzYywKKwkJCQkJCQkJCQkJCSAgICZUVFNPcHNIZWFwVHVwbGUpOworCQkJCW5ld190dHMgPSBN YWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QodHVwbGVkZXNjLAorCQkJCQkJCQkJCQkJICAgJlRUU09w c0hlYXBUdXBsZSk7CisKKwkJCQlFeGVjU3RvcmVIZWFwVHVwbGUob2xkX3R1cGxlLCBvbGRfdHRz LCBJbnZhbGlkQnVmZmVyKTsKKwkJCQlFeGVjU3RvcmVIZWFwVHVwbGUobmV3X3R1cGxlLCBuZXdf dHRzLCBJbnZhbGlkQnVmZmVyKTsKKwkJCX0KKworCQkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u c1N0YXRlID0gTklMOworCisJCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBvbGRfdHRzOwor CQkJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAorCQkJCQkJICAgb2xkX3R0cywKKwkJCQkJCSAg IGVzdGF0ZSwKKwkJCQkJCSAgIG9sZF92YWx1ZXMsCisJCQkJCQkgICBvbGRfaXNudWxsKTsKKwor CQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gbmV3X3R0czsKKwkJCUZvcm1JbmRleERhdHVt KGluZGV4SW5mbywKKwkJCQkJCSAgIG5ld190dHMsCisJCQkJCQkgICBlc3RhdGUsCisJCQkJCQkg ICBuZXdfdmFsdWVzLAorCQkJCQkJICAgbmV3X2lzbnVsbCk7CisKKwkJCWZvciAoaW50IGkgPSAw OyBpIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzOyBpKyspCisJCQl7CisJCQkJaWYg KG9sZF9pc251bGxbaV0gIT0gbmV3X2lzbnVsbFtpXSkKKwkJCQl7CisJCQkJCWNoYW5nZWQgPSB0 cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIW9sZF9pc251bGxbaV0pCisJ CQkJeworCQkJCQlpbnQxNgkJZWxtbGVuOworCQkJCQlib29sCQllbG1ieXZhbDsKKwkJCQkJT2lk CQkJb3BjaW50eXAgPSBpbmRleEluZm8tPmlpX09wQ2xhc3NEYXRhVHlwZXNbaV07CisKKwkJCQkJ Z2V0X3R5cGxlbmJ5dmFsKG9wY2ludHlwLCAmZWxtbGVuLCAmZWxtYnl2YWwpOworCQkJCQlpZiAo IWRhdHVtX2ltYWdlX2VxKG9sZF92YWx1ZXNbaV0sIG5ld192YWx1ZXNbaV0sCisJCQkJCQkJCQkJ ZWxtYnl2YWwsIGVsbWxlbikpCisJCQkJCXsKKwkJCQkJCWNoYW5nZWQgPSB0cnVlOworCQkJCQkJ YnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWlmIChjaGFuZ2VkKQorCQkJCXJlc3Vs dCA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdCwgZm9yZWFjaF9jdXJyZW50X2luZGV4KGxjKSk7CisK KwkJCS8qIFNob3J0Y3V0IGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoKSwgd2Uga25vdyB0aGUg YW5zd2VyLiAqLworCQkJaW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2VkID0gdHJ1ZTsKKwkJ CWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSAhY2hhbmdlZDsKKwkJCWNvbnRpbnVlOwor CQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGluZGV4IHJlZmVyZW5jZXMgbW9kaWZpZWQgYXR0cmli dXRlcyB0aGVuIGl0IG5lZWRzIHRvIGJlCisJCSAqIHVwZGF0ZWQuCisJCSAqLworCQlpZiAoYm1z X292ZXJsYXAoaW5kZXhJbmZvLT5paV9JbmRleEF0dHJzLCBtb2RpZmllZF9hdHRycykpCisJCQly ZXN1bHQgPSBibXNfYWRkX21lbWJlcihyZXN1bHQsIGZvcmVhY2hfY3VycmVudF9pbmRleChsYykp OworCX0KKworCWlmIChlY29udGV4dCkKKwl7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3Qob2xkX3R0cyk7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QobmV3X3R0cyk7CisJ fQorCisJKm9ubHlfc3VtbWFyaXppbmcgPSAobGlzdF9sZW5ndGgoaW5kZXhpbmZvbGlzdCkgPiAw ICYmCisJCQkJCQkgbnVtX3N1bW1hcml6aW5nID09IGJtc19udW1fbWVtYmVycyhyZXN1bHQpKTsK KworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j CmluZGV4IDVmNzYxM2NjODMxLi5kZDUxMDhkYzhmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JlcGxpY2F0aW9uLmMKQEAgLTYzOSw5ICs2MzksOSBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRh dGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlpZiAoIXNraXBfdHVwbGUpCiAJewog CQlMaXN0CSAgICpyZWNoZWNrSW5kZXhlcyA9IE5JTDsKLQkJVFVfVXBkYXRlSW5kZXhlcyB1cGRh dGVfaW5kZXhlczsKIAkJTGlzdAkgICAqY29uZmxpY3RpbmRleGVzOwogCQlib29sCQljb25mbGlj dCA9IGZhbHNlOworCQlCaXRtYXBzZXQgICptb2RpZmllZF9pbmRleGVzID0gTlVMTDsKIAogCQkv KiBDb21wdXRlIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyAqLwogCQlpZiAocmVsLT5yZF9hdHQt PmNvbnN0ciAmJgpAQCAtNjU1LDE3ICs2NTUsMTYgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRl KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNw YXJ0aXRpb24pCiAJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0 YXRlLCB0cnVlKTsKIAotCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90 LCBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJCXNp bXBsZV90YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3QsIGVzdGF0ZS0+ZXNfc25hcHNo b3QpOwogCiAJCWNvbmZsaWN0aW5kZXhlcyA9IHJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RB cmJpdGVySW5kZXhlczsKIAotCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAg JiYgKHVwZGF0ZV9pbmRleGVzICE9IFRVX05vbmUpKQorCQlpZiAocmVzdWx0UmVsSW5mby0+cmlf TnVtSW5kaWNlcyA+IDApCiAJCQlyZWNoZWNrSW5kZXhlcyA9IEV4ZWNJbnNlcnRJbmRleFR1cGxl cyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkJICAgc2xvdCwgZXN0YXRlLCB0cnVlLAogCQkJ CQkJCQkJCQkJICAgY29uZmxpY3RpbmRleGVzID8gdHJ1ZSA6IGZhbHNlLAogCQkJCQkJCQkJCQkJ ICAgJmNvbmZsaWN0LCBjb25mbGljdGluZGV4ZXMsCi0JCQkJCQkJCQkJCQkgICAodXBkYXRlX2lu ZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpKTsKKwkJCQkJCQkJCQkJCSAgIG1vZGlmaWVkX2luZGV4 ZXMpOwogCiAJCS8qCiAJCSAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhYm92ZSB0aGUgY2FsbCB0 byBDaGVja0FuZFJlcG9ydENvbmZsaWN0KCkgaW4KQEAgLTY4Myw2ICs2ODIsNyBAQCBFeGVjU2lt cGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkg cmVjaGVja0luZGV4ZXMsIE5VTEwsIGZhbHNlKTsKIAogCQlsaXN0X2ZyZWUocmVjaGVja0luZGV4 ZXMpOworCQlibXNfZnJlZShtb2RpZmllZF9pbmRleGVzKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggYTE1ZTc4NjNiMGQuLjk4YWU3NzFjOGY3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTIwLDggKzEyMCwxMiBA QCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZUNvbnRleHQKICAqLwogdHlwZWRlZiBzdHJ1Y3Qg VXBkYXRlQ29udGV4dAogeworCUJpdG1hcHNldCAgKm1vZGlmaWVkSW5kZXhlczsJLyogRWl0aGVy IE5VTEwgaW5kaWNhdGluZyB0aGF0IGFsbCBpbmRleGVzCisJCQkJCQkJCQkgKiBzaG91bGQgYmUg dXBkYXRlZCBvciBhIGJpdG1hcCBvZgorCQkJCQkJCQkJICogSW5kZXhJbmZvIGFycmF5IHBvc2l0 aW9ucyBmb3IgdGhlCisJCQkJCQkJCQkgKiBzdWJzZXQgb2YgbW9kaWZpZWQgaW5kZXhlcyByZXF1 aXJpbmcKKwkJCQkJCQkJCSAqIHVwZGF0ZXMuICovCiAJYm9vbAkJY3Jvc3NQYXJ0VXBkYXRlOwkv KiB3YXMgaXQgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlPyAqLwotCVRVX1VwZGF0ZUluZGV4ZXMg dXBkYXRlSW5kZXhlczsgLyogV2hpY2ggaW5kZXggdXBkYXRlcyBhcmUgcmVxdWlyZWQ/ICovCiAK IAkvKgogCSAqIExvY2sgbW9kZSB0byBhY3F1aXJlIG9uIHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lv biBiZWZvcmUgcGVyZm9ybWluZwpAQCAtMjI4Myw3ICsyMjg3LDggQEAgbHJlcGxhY2U6CiAJCQkJ CQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0 IGZvciBjb21taXQgKi8gLAogCQkJCQkJCQkmY29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9j a21vZGUsCi0JCQkJCQkJCSZ1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMpOworCQkJCQkJCQkmdXBk YXRlQ3h0LT5tb2RpZmllZEluZGV4ZXMsCisJCQkJCQkJCWVzdGF0ZSk7CiAKIAlyZXR1cm4gcmVz dWx0OwogfQpAQCAtMjMwMywxMiArMjMwOCwxMiBAQCBFeGVjVXBkYXRlRXBpbG9ndWUoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQsCiAJTGlzdAkg ICAqcmVjaGVja0luZGV4ZXMgPSBOSUw7CiAKIAkvKiBpbnNlcnQgaW5kZXggZW50cmllcyBmb3Ig dHVwbGUgaWYgbmVjZXNzYXJ5ICovCi0JaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMg PiAwICYmICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgIT0gVFVfTm9uZSkpCisJaWYgKHJlc3Vs dFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwKQogCQlyZWNoZWNrSW5kZXhlcyA9IEV4ZWNJbnNl cnRJbmRleFR1cGxlcyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkgICBzbG90LCBjb250ZXh0 LT5lc3RhdGUsCiAJCQkJCQkJCQkJCSAgIHRydWUsIGZhbHNlLAogCQkJCQkJCQkJCQkgICBOVUxM LCBOSUwsCi0JCQkJCQkJCQkJCSAgICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3Vt bWFyaXppbmcpKTsKKwkJCQkJCQkJCQkJICAgdXBkYXRlQ3h0LT5tb2RpZmllZEluZGV4ZXMpOwog CiAJLyogQUZURVIgUk9XIFVQREFURSBUcmlnZ2VycyAqLwogCUV4ZWNBUlVwZGF0ZVRyaWdnZXJz KGNvbnRleHQtPmVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jCmluZGV4IDM5ODExNDM3M2U5Li5mMWRkZjFlYTUwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCkBAIC01MjI5LDcgKzUyMjksMTEgQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRt YXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0 bWFwc2V0ICAqcGtpbmRleGF0dHJzOwkvKiBjb2x1bW5zIGluIHRoZSBwcmltYXJ5IGluZGV4ICov CiAJQml0bWFwc2V0ICAqaWRpbmRleGF0dHJzOwkvKiBjb2x1bW5zIGluIHRoZSByZXBsaWNhIGlk ZW50aXR5ICovCiAJQml0bWFwc2V0ICAqaG90YmxvY2tpbmdhdHRyczsJLyogY29sdW1ucyB3aXRo IEhPVCBibG9ja2luZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqaG90YmxvY2tpbmdleHByYXR0 cnM7CS8qIGFzIGFib3ZlLCBidXQgb25seSB0aG9zZSBpbgorCQkJCQkJCQkJCSAqIGV4cHJlc3Np b25zICovCiAJQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIHdpdGggc3Vt bWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKnN1bW1hcml6ZWRleHByYXR0cnM7CS8q IGFzIGFib3ZlLCBidXQgb25seSB0aG9zZSBpbgorCQkJCQkJCQkJCSAqIGV4cHJlc3Npb25zICov CiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0OwogCUxpc3QJICAgKm5ld2luZGV4b2lkbGlzdDsKIAlP aWQJCQlyZWxwa2luZGV4OwpAQCAtNTI1Miw2ICs1MjU2LDggQEAgUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQp CiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIpOwogCQkJ Y2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJCXJldHVybiBibXNfY29weShy ZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9F WFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfZXhwcmVzc2lvbmF0 dHIpOwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5rbm93biBhdHRyS2luZCAldSIs IGF0dHJLaW5kKTsKIAkJfQpAQCAtNTI5NSw3ICs1MzAxLDkgQEAgcmVzdGFydDoKIAlwa2luZGV4 YXR0cnMgPSBOVUxMOwogCWlkaW5kZXhhdHRycyA9IE5VTEw7CiAJaG90YmxvY2tpbmdhdHRycyA9 IE5VTEw7CisJaG90YmxvY2tpbmdleHByYXR0cnMgPSBOVUxMOwogCXN1bW1hcml6ZWRhdHRycyA9 IE5VTEw7CisJc3VtbWFyaXplZGV4cHJhdHRycyA9IE5VTEw7CiAJZm9yZWFjaChsLCBpbmRleG9p ZGxpc3QpCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC01MzA5LDYg KzUzMTcsNyBAQCByZXN0YXJ0OgogCQlib29sCQlpc1BLOwkJLyogcHJpbWFyeSBrZXkgKi8KIAkJ Ym9vbAkJaXNJREtleTsJLyogcmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwogCQlCaXRtYXBzZXQg KiphdHRyczsKKwkJQml0bWFwc2V0ICoqZXhwcmF0dHJzOwogCiAJCWluZGV4RGVzYyA9IGluZGV4 X29wZW4oaW5kZXhPaWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKQEAgLTUzNTIsMTQgKzUzNjEsMjAg QEAgcmVzdGFydDoKIAkJICogZGVjaWRlIHdoaWNoIGJpdG1hcCB3ZSdsbCB1cGRhdGUgaW4gdGhl IGZvbGxvd2luZyBsb29wLgogCQkgKi8KIAkJaWYgKGluZGV4RGVzYy0+cmRfaW5kYW0tPmFtc3Vt bWFyaXppbmcpCisJCXsKIAkJCWF0dHJzID0gJnN1bW1hcml6ZWRhdHRyczsKKwkJCWV4cHJhdHRy cyA9ICZzdW1tYXJpemVkZXhwcmF0dHJzOworCQl9CiAJCWVsc2UKKwkJewogCQkJYXR0cnMgPSAm aG90YmxvY2tpbmdhdHRyczsKKwkJCWV4cHJhdHRycyA9ICZob3RibG9ja2luZ2V4cHJhdHRyczsK KwkJfQogCiAJCS8qIENvbGxlY3Qgc2ltcGxlIGF0dHJpYnV0ZSByZWZlcmVuY2VzICovCiAJCWZv ciAoaSA9IDA7IGkgPCBpbmRleERlc2MtPnJkX2luZGV4LT5pbmRuYXR0czsgaSsrKQogCQl7Ci0J CQlpbnQJCQlhdHRybnVtID0gaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsK KwkJCWludAkJCWF0dHJpZHggPSBpbmRleERlc2MtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ld OwogCiAJCQkvKgogCQkJICogU2luY2Ugd2UgaGF2ZSBjb3ZlcmluZyBpbmRleGVzIHdpdGggbm9u LWtleSBjb2x1bW5zLCB3ZSBtdXN0CkBAIC01Mzc1LDMwICs1MzkwLDI4IEBAIHJlc3RhcnQ6CiAJ CQkgKiBrZXkgb3IgaWRlbnRpdHkga2V5LiBIZW5jZSB3ZSBkbyBub3QgaW5jbHVkZSB0aGVtIGlu dG8KIAkJCSAqIHVpbmRleGF0dHJzLCBwa2luZGV4YXR0cnMgYW5kIGlkaW5kZXhhdHRycyBiaXRt YXBzLgogCQkJICovCi0JCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJaWYgKGF0dHJpZHggIT0gMCkK IAkJCXsKLQkJCQkqYXR0cnMgPSBibXNfYWRkX21lbWJlcigqYXR0cnMsCi0JCQkJCQkJCQkJYXR0 cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCUF0dHJOdW1i ZXIJYXR0cm51bSA9IGF0dHJpZHggLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVy OworCisJCQkJKmF0dHJzID0gYm1zX2FkZF9tZW1iZXIoKmF0dHJzLCBhdHRybnVtKTsKIAogCQkJ CWlmIChpc0tleSAmJiBpIDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCi0JCQkJ CXVpbmRleGF0dHJzID0gYm1zX2FkZF9tZW1iZXIodWluZGV4YXR0cnMsCi0JCQkJCQkJCQkJCQkg YXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQl1aW5k ZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKHVpbmRleGF0dHJzLCBhdHRybnVtKTsKIAogCQkJCWlm IChpc1BLICYmIGkgPCBpbmRleERlc2MtPnJkX2luZGV4LT5pbmRua2V5YXR0cykKLQkJCQkJcGtp bmRleGF0dHJzID0gYm1zX2FkZF9tZW1iZXIocGtpbmRleGF0dHJzLAotCQkJCQkJCQkJCQkJICBh dHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQkJCXBraW5k ZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKHBraW5kZXhhdHRycywgYXR0cm51bSk7CiAKIAkJCQlp ZiAoaXNJREtleSAmJiBpIDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCi0JCQkJ CWlkaW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKGlkaW5kZXhhdHRycywKLQkJCQkJCQkJCQkJ CSAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQlp ZGluZGV4YXR0cnMgPSBibXNfYWRkX21lbWJlcihpZGluZGV4YXR0cnMsIGF0dHJudW0pOwogCQkJ fQogCQl9CiAKIAkJLyogQ29sbGVjdCBhbGwgYXR0cmlidXRlcyB1c2VkIGluIGV4cHJlc3Npb25z LCB0b28gKi8KLQkJcHVsbF92YXJhdHRub3MoaW5kZXhFeHByZXNzaW9ucywgMSwgYXR0cnMpOwor CQlwdWxsX3ZhcmF0dG5vcyhpbmRleEV4cHJlc3Npb25zLCAxLCBleHByYXR0cnMpOwogCiAJCS8q IENvbGxlY3QgYWxsIGF0dHJpYnV0ZXMgaW4gdGhlIGluZGV4IHByZWRpY2F0ZSwgdG9vICovCi0J CXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRlLCAxLCBhdHRycyk7CisJCXB1bGxfdmFyYXR0 bm9zKGluZGV4UHJlZGljYXRlLCAxLCBleHByYXR0cnMpOwogCiAJCWluZGV4X2Nsb3NlKGluZGV4 RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9CkBAIC01NDI3LDExICs1NDQwLDI3IEBAIHJlc3Rh cnQ6CiAJCWJtc19mcmVlKHBraW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7 CiAJCWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMpOworCQlibXNfZnJlZShob3RibG9ja2luZ2V4 cHJhdHRycyk7CiAJCWJtc19mcmVlKHN1bW1hcml6ZWRhdHRycyk7CisJCWJtc19mcmVlKHN1bW1h cml6ZWRleHByYXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKKwkvKiB7ZXhwcmVzc2lv bi1vbmx5IGNvbHVtbnN9ID0ge2V4cHJlc3Npb24gY29sdW1uc30gLSB7ZGlyZWN0IGNvbHVtbnN9 ICovCisJaG90YmxvY2tpbmdleHByYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoaG90YmxvY2tpbmdl eHByYXR0cnMsCisJCQkJCQkJCQkJICAgaG90YmxvY2tpbmdhdHRycyk7CisJLyoge2hvdC1ibG9j a2luZyBjb2x1bW5zfSA9IHtkaXJlY3QgY29sdW1uc30gKyB7ZXhwcmVzc2lvbi1vbmx5IGNvbHVt bnN9ICovCisJaG90YmxvY2tpbmdhdHRycyA9IGJtc19hZGRfbWVtYmVycyhob3RibG9ja2luZ2F0 dHJzLAorCQkJCQkJCQkJICAgaG90YmxvY2tpbmdleHByYXR0cnMpOworCisJLyoge3N1bW1hcml6 ZWQtb25seSBjb2x1bW5zfSA9IHtzdW1tYXJpemVkIGNvbHVtbnN9IC0ge2RpcmVjdCBjb2x1bW5z fSAqLworCXN1bW1hcml6ZWRleHByYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoc3VtbWFyaXplZGV4 cHJhdHRycywKKwkJCQkJCQkJCQkgIHN1bW1hcml6ZWRhdHRycyk7CisJLyoge3N1bW1hcml6ZWQg Y29sdW1uc30gPSB7ZGlyZWN0IGNvbHVtbnN9ICsge3N1bW1hcml6ZWQtb25seSBjb2x1bW5zfSAq LworCXN1bW1hcml6ZWRhdHRycyA9IGJtc19hZGRfbWVtYmVycyhzdW1tYXJpemVkYXR0cnMsCisJ CQkJCQkJCQkgIHN1bW1hcml6ZWRleHByYXR0cnMpOworCiAJLyogRG9uJ3QgbGVhayB0aGUgb2xk IHZhbHVlcyBvZiB0aGVzZSBiaXRtYXBzLCBpZiBhbnkgKi8KIAlyZWxhdGlvbi0+cmRfYXR0cnN2 YWxpZCA9IGZhbHNlOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9rZXlhdHRyKTsKQEAgLTU0NDQs NiArNTQ3Myw4IEBAIHJlc3RhcnQ6CiAJcmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0ciA9IE5V TEw7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKIAlyZWxhdGlvbi0+ cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9leHByZXNz aW9uYXR0cik7CisJcmVsYXRpb24tPnJkX2V4cHJlc3Npb25hdHRyID0gTlVMTDsKIAogCS8qCiAJ ICogTm93IHNhdmUgY29waWVzIG9mIHRoZSBiaXRtYXBzIGluIHRoZSByZWxjYWNoZSBlbnRyeS4g IFdlIGludGVudGlvbmFsbHkKQEAgLTU0NTgsNiArNTQ4OSw3IEBAIHJlc3RhcnQ6CiAJcmVsYXRp b24tPnJkX2lkYXR0ciA9IGJtc19jb3B5KGlkaW5kZXhhdHRycyk7CiAJcmVsYXRpb24tPnJkX2hv dGJsb2NraW5nYXR0ciA9IGJtc19jb3B5KGhvdGJsb2NraW5nYXR0cnMpOwogCXJlbGF0aW9uLT5y ZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CisJcmVsYXRpb24t PnJkX2V4cHJlc3Npb25hdHRyID0gYm1zX2NvcHkoaG90YmxvY2tpbmdleHByYXR0cnMpOwogCXJl bGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gdHJ1ZTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKIApAQCAtNTQ3NCw2ICs1NTA2LDggQEAgcmVzdGFydDoKIAkJCXJldHVybiBob3RibG9j a2luZ2F0dHJzOwogCQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQlyZXR1 cm4gc3VtbWFyaXplZGF0dHJzOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046 CisJCQlyZXR1cm4gaG90YmxvY2tpbmdleHByYXR0cnM7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVS Uk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGE5YTgxYWIzYzE0Li4xYzRjZWU3NTE1NyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwpAQCAtMjk2Nyw3ICsyOTY3LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29y ZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIigiKTsKIAkvKiBBTFRFUiBUQUJM RVNQQUNFIDxmb28+IFNFVHxSRVNFVCAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi VEFCTEVTUEFDRSIsIE1hdGNoQW55LCAiU0VUfFJFU0VUIiwgIigiKSkKLQkJQ09NUExFVEVfV0lU SCgic2VxX3BhZ2VfY29zdCIsICJyYW5kb21fcGFnZV9jb3N0IiwKKwkJQ09NUExFVEVfV0lUSCgi c2VxX3BhZ2VfY29zdCIsICJyYW5kb21fcGFnZV9jb3N0IiwgImV4cHJlc3Npb25fY2hlY2tzIiwK IAkJCQkJICAiZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5IiwgIm1haW50ZW5hbmNlX2lvX2NvbmN1 cnJlbmN5Iik7CiAKIAkvKiBBTFRFUiBURVhUIFNFQVJDSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4 IDE2NDBkOWMzMmY3Li5lMTIxNzNlYmE0MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjEsNiArMjEs NyBAQAogI2luY2x1ZGUgImFjY2Vzcy9za2V5LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgi CQkvKiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqLwogI2luY2x1ZGUgImFjY2Vzcy90YWJs ZWFtLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9s b2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvYnVmcGFnZS5oIgpAQCAtMzM5LDcgKzM0MCw3IEBAIGV4dGVybiBUTV9SZXN1bHQgaGVh cF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJIEhl YXBUdXBsZSBuZXd0dXAsCiAJCQkJCQkJIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hl Y2ssIGJvb2wgd2FpdCwKIAkJCQkJCQkgc3RydWN0IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2lu ZGV4ZXMpOworCQkJCQkJCSBCaXRtYXBzZXQgKiptb2RpZmllZF9pbmRleGVzLCBzdHJ1Y3QgRVN0 YXRlICplc3RhdGUpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwKIAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tU dXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29s IGZvbGxvd191cGRhdGVzLApAQCAtMzc0LDcgKzM3NSw3IEBAIGV4dGVybiBib29sIGhlYXBfdHVw bGVfbmVlZHNfZXZlbnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSk7CiBleHRlcm4g dm9pZCBzaW1wbGVfaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAp OwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVt UG9pbnRlciB0aWQpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLAotCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkgICBIZWFwVHVwbGUgdHVwKTsK IAogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9u IHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaAppbmRleCAxMzFjMDUwYzE1Zi4uMzAwMjI2ZDQ0ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aApAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3QgSW5kZXhJbmZvOwogc3RydWN0IFNhbXBsZVNjYW5T dGF0ZTsKIHN0cnVjdCBWYWN1dW1QYXJhbXM7CiBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlOwor c3RydWN0IEVTdGF0ZTsKIAogLyoKICAqIEJpdG1hc2sgdmFsdWVzIGZvciB0aGUgZmxhZ3MgYXJn dW1lbnQgdG8gdGhlIHNjYW5fYmVnaW4gY2FsbGJhY2suCkBAIC0xMDksMjEgKzExMCw2IEBAIHR5 cGVkZWYgZW51bSBUTV9SZXN1bHQKIAlUTV9Xb3VsZEJsb2NrLAogfSBUTV9SZXN1bHQ7CiAKLS8q Ci0gKiBSZXN1bHQgY29kZXMgZm9yIHRhYmxlX3VwZGF0ZSguLi4sIHVwZGF0ZV9pbmRleGVzKi4u KS4KLSAqIFVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIGluZGV4ZXMgdG8gdXBkYXRlLgotICovCi10 eXBlZGVmIGVudW0gVFVfVXBkYXRlSW5kZXhlcwotewotCS8qIE5vIGluZGV4ZWQgY29sdW1ucyB3 ZXJlIHVwZGF0ZWQgKGluY2wuIFRJRCBhZGRyZXNzaW5nIG9mIHR1cGxlKSAqLwotCVRVX05vbmUs Ci0KLQkvKiBBIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGNvbHVtbiB3YXMgdXBkYXRlZCwgb3Ig dGhlIFRJRCBoYXMgY2hhbmdlZCAqLwotCVRVX0FsbCwKLQotCS8qIE9ubHkgc3VtbWFyaXplZCBj b2x1bW5zIHdlcmUgdXBkYXRlZCwgVElEIGlzIHVuY2hhbmdlZCAqLwotCVRVX1N1bW1hcml6aW5n LAotfSBUVV9VcGRhdGVJbmRleGVzOwogCiAvKgogICogV2hlbiB0YWJsZV90dXBsZV91cGRhdGUs IHRhYmxlX3R1cGxlX2RlbGV0ZSwgb3IgdGFibGVfdHVwbGVfbG9jayBmYWlsCkBAIC01NTAsNyAr NTM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJIGJvb2wgd2Fp dCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCi0JCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7 CisJCQkJCQkJCSBCaXRtYXBzZXQgKiptb2RpZmllZF9pbmRleGVzLAorCQkJCQkJCQkgc3RydWN0 IEVTdGF0ZSAqZXN0YXRlKTsKIAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVy ZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCiAJVE1fUmVzdWx0CSgqdHVwbGVfbG9jaykgKFJlbGF0 aW9uIHJlbCwKQEAgLTE1NDEsMTIgKzE1MjgsMTIgQEAgc3RhdGljIGlubGluZSBUTV9SZXN1bHQK IHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxl VGFibGVTbG90ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IHNuYXBzaG90 LCBTbmFwc2hvdCBjcm9zc2NoZWNrLAogCQkJCSAgIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEg KnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQorCQkJCSAgIEJpdG1hcHNldCAqKm1vZGlmaWVkX2luZGV4ZXMsIHN0 cnVjdCBFU3RhdGUgKmVzdGF0ZSkKIHsKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT50dXBsZV91 cGRhdGUocmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJCSBjaWQsIHNuYXBzaG90LCBjcm9zc2No ZWNrLAotCQkJCQkJCQkJCSB3YWl0LCB0bWZkLAotCQkJCQkJCQkJCSBsb2NrbW9kZSwgdXBkYXRl X2luZGV4ZXMpOworCQkJCQkJCQkJCSB3YWl0LCB0bWZkLCBsb2NrbW9kZSwKKwkJCQkJCQkJCQkg bW9kaWZpZWRfaW5kZXhlcywgZXN0YXRlKTsKIH0KIAogLyoKQEAgLTIwNzUsOCArMjA2Miw3IEBA IGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV9pbnNlcnQoUmVsYXRpb24gcmVsLCBUdXBs ZVRhYmxlU2xvdCAqc2xvdCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVfZGVsZXRl KFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJl bCwgSXRlbVBvaW50ZXIgb3RpZCwKLQkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFNu YXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5k ZXhlcyk7CisJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hvdCBzbmFwc2hv dCk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5k ZXggMzBlMmE4MjM0NmYuLjEwMThiYjJhZmE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAg LTY1MCw3ICs2NTAsNyBAQCBleHRlcm4gTGlzdCAqRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSAgIGJvb2wgdXBkYXRlLAogCQkJCQkJ CQkgICBib29sIG5vRHVwRXJyLAogCQkJCQkJCQkgICBib29sICpzcGVjQ29uZmxpY3QsIExpc3Qg KmFyYml0ZXJJbmRleGVzLAotCQkJCQkJCQkgICBib29sIG9ubHlTdW1tYXJpemluZyk7CisJCQkJ CQkJCSAgIEJpdG1hcHNldCAqbW9kaWZpZWRfaW5kZXhlcyk7CiBleHRlcm4gYm9vbCBFeGVjQ2hl Y2tJbmRleENvbnN0cmFpbnRzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJ CQkgIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwgSXRl bVBvaW50ZXIgY29uZmxpY3RUaWQsCkBAIC02NjEsNiArNjYxLDEyIEBAIGV4dGVybiB2b2lkIGNo ZWNrX2V4Y2x1c2lvbl9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CQkJCQkJCQkJICAgSXRlbVBvaW50ZXIgdHVwbGVpZCwKIAkJCQkJCQkJCSAgIGNvbnN0IERhdHVt ICp2YWx1ZXMsIGNvbnN0IGJvb2wgKmlzbnVsbCwKIAkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRl LCBib29sIG5ld0luZGV4KTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNJbmRleGVzUmVxdWlyaW5n VXBkYXRlcyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJICBCaXRtYXBzZXQgKm1vZGlm aWVkX2F0dHJzLAorCQkJCQkJCQkJCQkgIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJCQkgIEhl YXBUdXBsZSBvbGRfdHVwbGUsCisJCQkJCQkJCQkJCSAgSGVhcFR1cGxlIG5ld190dXBsZSwKKwkJ CQkJCQkJCQkJICBib29sICpvbmx5X3N1bW1hcml6aW5nKTsKIAogLyoKICAqIHByb3RvdHlwZXMg ZnJvbSBmdW5jdGlvbnMgaW4gZXhlY1JlcGxpY2F0aW9uLmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggZTJkMWRjMWUwNjcuLjU0MDM1YWViOWY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU5 LDEyICsxNTksMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgogICoJCU51bUluZGV4 QXR0cnMJCXRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHRoaXMgaW5kZXgKICAqCQlOdW1JbmRl eEtleUF0dHJzCW51bWJlciBvZiBrZXkgY29sdW1ucyBpbiBpbmRleAorICoJCUluZGV4QXR0cnMJ CQliaXRtYXAgb2YgaW5kZXggYXR0cmlidXRlcwogICoJCUluZGV4QXR0ck51bWJlcnMJdW5kZXJs eWluZy1yZWwgYXR0cmlidXRlIG51bWJlcnMgdXNlZCBhcyBrZXlzCiAgKgkJCQkJCQkoemVyb2Vz IGluZGljYXRlIGV4cHJlc3Npb25zKS4gSXQgYWxzbyBjb250YWlucwogICogCQkJCQkJCWluZm8g YWJvdXQgaW5jbHVkZWQgY29sdW1ucy4KICAqCQlFeHByZXNzaW9ucwkJCWV4cHIgdHJlZXMgZm9y IGV4cHJlc3Npb24gZW50cmllcywgb3IgTklMIGlmIG5vbmUKKyAqCQlFeHByZXNzaW9uQXR0cnMJ CWJpdG1hcCBvZiBhdHRyaWJ1dGVzIHVzZWQgd2l0aGluIHRoZSBleHByZXNzaW9uCiAgKgkJRXhw cmVzc2lvbnNTdGF0ZQlleGVjIHN0YXRlIGZvciBleHByZXNzaW9ucywgb3IgTklMIGlmIG5vbmUK ICAqCQlQcmVkaWNhdGUJCQlwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUK KyAqCQlQcmVkaWNhdGVBdHRycwkJYml0bWFwIG9mIGF0dHJpYnV0ZXMgdXNlZCB3aXRoaW4gdGhl IHByZWRpY2F0ZQogICoJCVByZWRpY2F0ZVN0YXRlCQlleGVjIHN0YXRlIGZvciBwcmVkaWNhdGUs IG9yIE5JTCBpZiBub25lCiAgKgkJRXhjbHVzaW9uT3BzCQlQZXItY29sdW1uIGV4Y2x1c2lvbiBv cGVyYXRvcnMsIG9yIE5VTEwgaWYgbm9uZQogICoJCUV4Y2x1c2lvblByb2NzCQlVbmRlcmx5aW5n IGZ1bmN0aW9uIE9JRHMgZm9yIEV4Y2x1c2lvbk9wcwpAQCAtMTgzLDYgKzE4Niw3IEBAIHR5cGVk ZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCVBhcmFsbGVsV29ya2VycwkJIyBvZiB3b3JrZXJzIHJl cXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQogICoJCUFtCQkJCQlPaWQgb2YgaW5kZXggQU0KICAq CQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0KKyAqCQlPcENsYXNz RGF0YVR5cGVzCW9wZXJhdG9yIGNsYXNzIGRhdGEgdHlwZXMKICAqCQlDb250ZXh0CQkJCW1lbW9y eSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCiAgKiBpaV9Db25jdXJyZW50LCBp aV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUgdXNlZCBvbmx5CkBA IC0xOTQsMTAgKzE5OCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlOb2RlVGFnCQl0 eXBlOwogCWludAkJCWlpX051bUluZGV4QXR0cnM7CS8qIHRvdGFsIG51bWJlciBvZiBjb2x1bW5z IGluIGluZGV4ICovCiAJaW50CQkJaWlfTnVtSW5kZXhLZXlBdHRyczsJLyogbnVtYmVyIG9mIGtl eSBjb2x1bW5zIGluIGluZGV4ICovCisJQml0bWFwc2V0ICAqaWlfSW5kZXhBdHRyczsKIAlBdHRy TnVtYmVyCWlpX0luZGV4QXR0ck51bWJlcnNbSU5ERVhfTUFYX0tFWVNdOwogCUxpc3QJICAgKmlp X0V4cHJlc3Npb25zOyAvKiBsaXN0IG9mIEV4cHIgKi8KKwlCaXRtYXBzZXQgICppaV9FeHByZXNz aW9uQXR0cnM7CiAJTGlzdAkgICAqaWlfRXhwcmVzc2lvbnNTdGF0ZTsJLyogbGlzdCBvZiBFeHBy U3RhdGUgKi8KIAlMaXN0CSAgICppaV9QcmVkaWNhdGU7CS8qIGxpc3Qgb2YgRXhwciAqLworCUJp dG1hcHNldCAgKmlpX1ByZWRpY2F0ZUF0dHJzOwogCUV4cHJTdGF0ZSAgKmlpX1ByZWRpY2F0ZVN0 YXRlOwogCU9pZAkJICAgKmlpX0V4Y2x1c2lvbk9wczsJLyogYXJyYXkgd2l0aCBvbmUgZW50cnkg cGVyIGNvbHVtbiAqLwogCU9pZAkJICAgKmlpX0V4Y2x1c2lvblByb2NzOwkvKiBhcnJheSB3aXRo IG9uZSBlbnRyeSBwZXIgY29sdW1uICovCkBAIC0yMTcsNiArMjI0LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgSW5kZXhJbmZvCiAJaW50CQkJaWlfUGFyYWxsZWxXb3JrZXJzOwogCU9pZAkJCWlpX0FtOwog CXZvaWQJICAgKmlpX0FtQ2FjaGU7CisJT2lkCQkgICAqaWlfT3BDbGFzc0RhdGFUeXBlczsKIAlN ZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CiB9IEluZGV4SW5mbzsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBkYjNl NTA0YzNkMi4uMzA2NzM3OWIwMzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNTQsNiArMTU0LDEwIEBAIHR5cGVk ZWYgc3RydWN0IFJlbGF0aW9uRGF0YQogCWJvb2wJCXJkX2lzcGtkZWZlcnJhYmxlOwkvKiBpcyBy ZF9wa2luZGV4IGEgZGVmZXJyYWJsZSBQSz8gKi8KIAlPaWQJCQlyZF9yZXBsaWRpbmRleDsgLyog T0lEIG9mIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXgsIGlmIGFueSAqLwogCisJLyogbGlzdCBvZiBJ bmRleEluZm8gZm9yIHRoaXMgcmVsYXRpb24gKi8KKwlMaXN0CSAgICpyZF9pbmRleGluZm9saXN0 OwkvKiBhbiBvcmRlcmVkIGxpc3Qgb2YgSW5kZXhJbmZvIGZvcgorCQkJCQkJCQkJICogaW5kZXhl cyBvbiByZWxhdGlvbiAqLworCiAJLyogZGF0YSBtYW5hZ2VkIGJ5IFJlbGF0aW9uR2V0U3RhdEV4 dExpc3Q6ICovCiAJTGlzdAkgICAqcmRfc3RhdGxpc3Q7CS8qIGxpc3Qgb2YgT0lEcyBvZiBleHRl bmRlZCBzdGF0cyAqLwogCkBAIC0xNjQsNiArMTY4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRp b25EYXRhCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVkZWQgaW4gcmVwbGljYSBp ZGVudGl0eSBpbmRleCAqLwogCUJpdG1hcHNldCAgKnJkX2hvdGJsb2NraW5nYXR0cjsgLyogY29s cyBibG9ja2luZyBIT1QgdXBkYXRlICovCiAJQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0dHI7 CS8qIGNvbHMgaW5kZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAq cmRfZXhwcmVzc2lvbmF0dHI7CS8qIGluZGV4ZWQgY29scyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Np b25zICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRl c2NyaXB0b3IsIG9yIE5VTEwgKi8KIApAQCAtMzQ0LDYgKzM0OSw3IEBAIHR5cGVkZWYgc3RydWN0 IFN0ZFJkT3B0aW9ucwogCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CS8qIG1heCBudW1iZXIgb2Yg cGFyYWxsZWwgd29ya2VycyAqLwogCVN0ZFJkT3B0SW5kZXhDbGVhbnVwIHZhY3V1bV9pbmRleF9j bGVhbnVwOwkvKiBjb250cm9scyBpbmRleCB2YWN1dW1pbmcgKi8KIAlib29sCQl2YWN1dW1fdHJ1 bmNhdGU7CS8qIGVuYWJsZXMgdmFjdXVtIHRvIHRydW5jYXRlIGEgcmVsYXRpb24gKi8KKwlib29s CQlleHByZXNzaW9uX2NoZWNrczsJLyogdXNlIGV4cHJlc3Npb24gdG8gY2hlY2tzIGZvciBjaGFu Z2VzICovCiAKIAkvKgogCSAqIEZyYWN0aW9uIG9mIHBhZ2VzIGluIGEgcmVsYXRpb24gdGhhdCB2 YWN1dW0gY2FuIGVhZ2VybHkgc2NhbiBhbmQgZmFpbApAQCAtNDA1LDYgKzQxMSwxNCBAQCB0eXBl ZGVmIHN0cnVjdCBTdGRSZE9wdGlvbnMKIAkoKHJlbGF0aW9uKS0+cmRfb3B0aW9ucyA/IFwKIAkg KChTdGRSZE9wdGlvbnMgKikgKHJlbGF0aW9uKS0+cmRfb3B0aW9ucyktPnBhcmFsbGVsX3dvcmtl cnMgOiAoZGVmYXVsdHB3KSkKIAorLyoKKyAqIFJlbGF0aW9uR2V0RXhwcmVzc2lvbkNoZWNrcwor ICoJCVJldHVybnMgdGhlIHJlbGF0aW9uJ3MgZXhwcmVzc2lvbl9jaGVja3MgcmVsb3B0aW9uIHNl dHRpbmcuCisgKi8KKyNkZWZpbmUgUmVsYXRpb25HZXRFeHByZXNzaW9uQ2hlY2tzKHJlbGF0aW9u KSBcCisJKChyZWxhdGlvbiktPnJkX29wdGlvbnMgPyBcCisJICgoU3RkUmRPcHRpb25zICopIChy ZWxhdGlvbiktPnJkX29wdGlvbnMpLT5leHByZXNzaW9uX2NoZWNrcyA6IHRydWUpCisKIC8qIFZp ZXdPcHRpb25zLT5jaGVja19vcHRpb24gdmFsdWVzICovCiB0eXBlZGVmIGVudW0gVmlld09wdENo ZWNrT3B0aW9uCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAppbmRleCBhN2M1NWRiMzM5ZS4uMGNjMjhjYjk3 ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsY2FjaGUuaApAQCAtNjMsNiArNjMsNyBAQCB0eXBlZGVmIGVudW0gSW5k ZXhBdHRyQml0bWFwS2luZAogCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSwKIAlJTkRF WF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcsCiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpF RCwKKwlJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OLAogfSBJbmRleEF0dHJCaXRtYXBLaW5k OwogCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlv biByZWxhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9o b3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0 ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYWQ2ZTU0MThl OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3Rf dXBkYXRlcy5vdXQKQEAgLTAsMCArMSw1ODYgQEAKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBU aGlzIHRhYmxlIHdpbGwgaGF2ZSB0d28gY29sdW1ucyBhbmQgdHdvIGluZGV4ZXMsIG9uZSBvbiB0 aGUgcHJpbWFyeSBrZXkKKy0tIGlkIGFuZCBvbmUgb24gdGhlIGV4cHJlc3Npb24gKGluZm8tPj4n bmFtZScpLiAgVGhhdCBtZWFucyB0aGF0IHRoZSBpbmRleGVkCistLSBhdHRyaWJ1dGVzIGFyZSAn aWQnIGFuZCAnaW5mbycuCitjcmVhdGUgdGFibGUga2V5dmFsdWUoaWQgaW50ZWdlciBwcmltYXJ5 IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWluZGV4IG9uIGtleXZhbHVlKChp bmZvLT4+J25hbWUnKSk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2YWx1ZXMgKDEsICd7Im5hbWUi OiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CistLSBEaXNhYmxlIGV4cHJlc3Npb24g Y2hlY2tzLgorQUxURVIgVEFCTEUga2V5dmFsdWUgU0VUIChleHByZXNzaW9uX2NoZWNrcyA9IGZh bHNlKTsKK1NFTEVDVCByZWxvcHRpb25zIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdr ZXl2YWx1ZSc7CisgICAgICAgIHJlbG9wdGlvbnMgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHtleHByZXNzaW9uX2NoZWNrcz1mYWxzZX0KKygxIHJvdykKKworLS0gV2hp bGUgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiBpcyB1bmNoYW5nZWQgd2UndmUgZGlzYWJs ZWQgZXhwcmVzc2lvbgorLS0gY2hlY2tzIHNvIHRoaXMgdXBkYXRlIHNob3VsZCBub3QgZ28gSE9U IGFzIHRoZSBzeXN0ZW0gY2FuJ3QgZGV0ZXJtaW5lIGlmCistLSB0aGUgaW5kZXhlZCBhdHRyaWJ1 dGUgaGFzIGNoYW5nZWQgd2l0aG91dCBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uLgordXBkYXRl IGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWV0aGluZyBl bHNlIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgcm93CisgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykK KworLS0gUmUtZW5hYmxlIGV4cHJlc3Npb24gY2hlY2tzLgorQUxURVIgVEFCTEUga2V5dmFsdWUg U0VUIChleHByZXNzaW9uX2NoZWNrcyA9IHRydWUpOworU0VMRUNUIHJlbG9wdGlvbnMgRlJPTSBw Z19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2tleXZhbHVlJzsKKyAgICAgICAgcmVsb3B0aW9ucyAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtleHByZXNzaW9uX2NoZWNrcz10 cnVlfQorKDEgcm93KQorCistLSBUaGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIHdpdGggdmFs dWUgImpvaG4iIGlzIHVuY2hhbmdlZCwgZXhwZWN0IGEgSE9UIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2 YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIG90aGVyIGRhdGEi fScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3cKKyBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCist LSBUaGUgZm9sbG93aW5nIHVwZGF0ZSBjaGFuZ2VzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFt ZSIsIHRoaXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0 IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVy ZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2 YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSBy b3cpCisKKy0tIE5vdywgdGhpcyB1cGRhdGUgZG9lcyBub3QgY2hhbmdlIHRoZSBpbmRleGVkIGF0 dHJpYnV0ZSAibmFtZSIgZnJvbSAic21pdGgiLCB0aGlzIHNob3VsZCBiZSBIT1QuCit1cGRhdGUg a2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRhIjogInNvbWUgbW9yZSBk YXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDIgcm93cyBub3cKKyBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgorKDEg cm93KQorCitkcm9wIHRhYmxlIGtleXZhbHVlOworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRo aXMgdGFibGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIG9uZSBidXQgaXQgaGFzIGEgdGhp cmQgaW5kZXguICBUaGUKKy0tIGluZGV4ICdjb2xpbmRleCcgaXNuJ3QgYW4gZXhwcmVzc2lvbiBp bmRleCwgaXQgaW5kZXhlcyB0aGUgZW50aXJlIHZhbHVlCistLSBpbiB0aGUgaW5mbyBjb2x1bW4u ICBUaGVyZSBhcmUgc3RpbGwgb25seSB0d28gaW5kZXhlZCBhdHRyaWJ1dGVzIGZvciB0aGlzCist LSByZWxhdGlvbiwgdGhlIHNhbWUgdHdvIGFzIGJlZm9yZS4gIFRoZSBwcmVzZW5jZSBvZiBhbiBp bmRleCBvbiB0aGUgZW50aXJlCistLSB2YWx1ZSBvZiB0aGUgaW5mbyBjb2x1bW4gc2hvdWxkIHBy ZXZlbnQgSE9UIHVwZGF0ZXMgZm9yIGFueSB1cGRhdGVzIHRvIGFueQorLS0gcG9ydGlvbiBvZiBK U09OQiBjb250ZW50IGluIHRoYXQgY29sdW1uLgorY3JlYXRlIHRhYmxlIGtleXZhbHVlKGlkIGlu dGVnZXIgcHJpbWFyeSBrZXksIGluZm8ganNvbmIpOworY3JlYXRlIGluZGV4IG5hbWVpbmRleCBv biBrZXl2YWx1ZSgoaW5mby0+PiduYW1lJykpOworY3JlYXRlIGluZGV4IGNvbGluZGV4IG9uIGtl eXZhbHVlKGluZm8pOworaW5zZXJ0IGludG8ga2V5dmFsdWUgdmFsdWVzICgxLCAneyJuYW1lIjog ImpvaG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOworLS0gVGhpcyB1cGRhdGUgZG9lc24ndCBj aGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGluZGV4LCBidXQgaXQgZG9lcworLS0g Y2hhbmdlIHRoZSBjb250ZW50IG9mIHRoZSBpbmZvIGNvbHVtbiBhbmQgc28gc2hvdWxkIG5vdCBi ZSBIT1QgYmVjYXVzZSB0aGUKKy0tIGluZGV4ZWQgdmFsdWUgY2hhbmdlZCBhcyBhIHJlc3VsdCBv ZiB0aGUgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAiam9obiIs ICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhw ZWN0OiAwIHJvd3MKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMAorKDEgcm93KQorCitkcm9wIHRhYmxlIGtleXZhbHVlOworLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0KKy0tIFRoZSB0YWJsZSBoYXMgb25lIGNvbHVtbiBkb2NzIGFuZCB0d28gaW5k ZXhlcy4gIFRoZXkgYXJlIGJvdGggZXhwcmVzc2lvbgorLS0gaW5kZXhlcyByZWZlcmVuY2luZyB0 aGUgc2FtZSBjb2x1bW4gYXR0cmlidXRlIChkb2NzKSBidXQgb25lIGlzIGEgcGFydGlhbAorLS0g aW5kZXguCitDUkVBVEUgVEFCTEUgZXggKGRvY3MgSlNPTkIpIFdJVEggKGZpbGxmYWN0b3IgPSA2 MCk7CitJTlNFUlQgSU5UTyBleCAoZG9jcykgVkFMVUVTICgneyJhIjogMCwgImIiOiAwfScpOwor SU5TRVJUIElOVE8gZXggKGRvY3MpIFNFTEVDVCBqc29uYl9idWlsZF9vYmplY3QoJ2InLCBuKSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAsIDEwMDAwKSBhcyBuOworQ1JFQVRFIElOREVYIGlkeF9l eF9hIE9OIGV4ICgoZG9jcy0+PidhJykpOworQ1JFQVRFIElOREVYIGlkeF9leF9iIE9OIGV4ICgo ZG9jcy0+PidiJykpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDk7CistLSBXZSdyZSB1 c2luZyBCVFJFRSBpbmRleGVzIGFuZCBmb3IgdGhpcyB0ZXN0IHdlIHdhbnQgdG8gbWFrZSBzdXJl IHRoYXQgdGhleSByZW1haW4KKy0tIGluIHN5bmMgd2l0aCBjaGFuZ2VzIHRvIG91ciByZWxhdGlv bi4gIEZvcmNlIHRoZSBjaG9pY2Ugb2YgaW5kZXggc2NhbnMgYmVsb3cgc28KKy0tIHRoYXQgd2Ug a25vdyB3ZSdyZSBjaGVja2luZyB0aGUgaW5kZXgncyB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdmFs dWVzIHNob3VsZCBiZQorLS0gaW4gdGhlIGluZGV4IG9yIG5vdC4KK1NFVCBTRVNTSU9OIGVuYWJs ZV9zZXFzY2FuID0gT0ZGOworU0VUIFNFU1NJT04gZW5hYmxlX2JpdG1hcHNjYW4gPSBPRkY7Cist LSBMZWF2ZSAnYScgdW5jaGFuZ2VkIGJ1dCBtb2RpZnkgJ2InIHRvIGEgdmFsdWUgb3V0c2lkZSBv ZiB0aGUgaW5kZXggcHJlZGljYXRlLgorLS0gVGhpcyBzaG91bGQgYmUgYSBIT1QgdXBkYXRlIGJl Y2F1c2UgbmVpdGhlciBpbmRleCBpcyBjaGFuZ2VkLgorVVBEQVRFIGV4IFNFVCBkb2NzID0ganNv bmJfYnVpbGRfb2JqZWN0KCdhJywgMCwgJ2InLCAxKSBXSEVSRSAoZG9jcy0+PidhJyk6Om51bWVy aWMgPSAwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6 OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdzIGNoZWNr IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUgZm9y ICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+ J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4X2Igb24gZXgKKyAgIEZpbHRlcjogKCgo ZG9jcyAtPj4gJ2InOjp0ZXh0KSk6Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQg KGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworIGRvY3MgCistLS0tLS0KKygwIHJvd3MpCisK Ky0tIExlYXZlICdhJyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSB3aXRoaW4g dGhlIGluZGV4IHByZWRpY2F0ZS4KKy0tIFRoaXMgcmVwcmVzZW50cyBhIGNoYW5nZSBmb3IgZmll bGQgJ2InIGZyb20gdW5pbmRleGVkIHRvIGluZGV4ZWQgYW5kIHNvCistLSB0aGlzIHNob3VsZCBu b3QgdGFrZSB0aGUgSE9UIHBhdGguCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9v YmplY3QoJ2EnLCAwLCAnYicsIDEwKSBXSEVSRSAoZG9jcy0+PidhJyk6Om51bWVyaWMgPSAwOwor U0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdz IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVl IG9mICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2Nz LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4X2Igb24gZXgKKyAgIEZpbHRlcjog KCgoZG9jcyAtPj4gJ2InOjp0ZXh0KSk6Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBB TkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAgIGRvY3MgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6IDAsICJiIjogMTB9CisoMSByb3cpCisKKy0tIFRoaXMg dXBkYXRlIG1vZGlmaWVzIHRoZSB2YWx1ZSBvZiAnYScsIGFuIGluZGV4ZWQgZmllbGQsIHNvIGl0 IGFsc28gY2Fubm90CistLSBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3MgPSBq c29uYl9idWlsZF9vYmplY3QoJ2EnLCAxLCAnYicsIDEwKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51 bWVyaWMgPSAxMDsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn ZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93 KQorCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzIGJvdGggJ2EnIGFuZCAnYicgdG8gbmV3IHZhbHVl cyB0aGF0IHJlcXVpcmUgaW5kZXggdXBkYXRlcywKKy0tIHRoaXMgY2Fubm90IHVzZSB0aGUgSE9U IHBhdGguCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAyLCAn YicsIDEyKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPSAxMDsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDog MSBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBMZXQncyBjaGVjayB0byBtYWtl IHN1cmUgdGhhdCB0aGUgaW5kZXggY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiAnYicKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVy aWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJ bmRleCBTY2FuIHVzaW5nIGlkeF9leF9iIG9uIGV4CisgICBGaWx0ZXI6ICgoKGRvY3MgLT4+ICdi Jzo6dGV4dCkpOjpudW1lcmljIDwgJzEwMCc6Om51bWVyaWMpCisoMiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2In KTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICBkb2NzICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyB7ImEiOiAyLCAiYiI6IDEyfQorKDEgcm93KQorCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2Vz ICdiJyB0byBhIHZhbHVlIG91dHNpZGUgaXRzIHByZWRpY2F0ZSByZXF1aXJpbmcgdGhhdAorLS0g d2UgcmVtb3ZlIGl0IGZyb20gdGhlIGluZGV4LiAgVGhhdCdzIGEgdHJhbnNpdGlvbiB0aGF0IGNh bid0IGJlIGRvbmUKKy0tIGR1cmluZyBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3Mg PSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2InKTo6 bnVtZXJpYyA9IDEyOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSBy b3cpCisKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBubyBsb25n ZXIgY29udGFpbnMgdGhlIHZhbHVlIG9mICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2In KTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4 X2Igb24gZXgKKyAgIEZpbHRlcjogKCgoZG9jcyAtPj4gJ2InOjp0ZXh0KSk6Om51bWVyaWMgPCAn MTAwJzo6bnVtZXJpYykKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3Mt Pj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworIGRv Y3MgCistLS0tLS0KKygwIHJvd3MpCisKKy0tIERpc2FibGUgZXhwcmVzc2lvbiBjaGVja3MuCitB TFRFUiBUQUJMRSBleCBTRVQgKGV4cHJlc3Npb25fY2hlY2tzID0gZmFsc2UpOworU0VMRUNUIHJl bG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2V4JzsKKyAgICAgICAgICAg ICAgIHJlbG9wdGlvbnMgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHtmaWxsZmFjdG9yPTYwLGV4cHJlc3Npb25fY2hlY2tzPWZhbHNl fQorKDEgcm93KQorCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzICdiJyB0byBhIHZhbHVlIHdpdGhp biBpdHMgcHJlZGljYXRlIGp1c3QgbGlrZSBpdAorLS0gcHJldmlvdXMgdmFsdWUsIHdoaWNoIHdv dWxkIGFsbG93IGZvciBhIEhPVCB1cGRhdGUgYnV0IHdpdGggZXhwcmVzc2lvbgorLS0gY2hlY2tz IGRpc2FibGVkIHdlIGNhbid0IGRldGVybWluZSB0aGF0IHNvIHRoaXMgc2hvdWxkIG5vdCBiZSBh IEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9vYmplY3QoJ2En LCAyLCAnYicsIDIpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDE7CitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gTGV0J3MgbWFrZSBzdXJl IHdlJ3JlIHJlY29yZGluZyBIT1QgdXBkYXRlcyBmb3Igb3VyICdleCcgcmVsYXRpb24gcHJvcGVy bHkgaW4gdGhlIHN5c3RlbQorLS0gdGFibGUgcGdfc3RhdF91c2VyX3RhYmxlcy4gIE5vdGUgdGhh dCBzdGF0aXN0aWNzIGFyZSBzdG9yZWQgd2l0aGluIGEgdHJhbnNhY3Rpb24gY29udGV4dAorLS0g Zmlyc3QgKHhhY3QpIGFuZCB0aGVuIGxhdGVyIGludG8gdGhlIGdsb2JhbCBzdGF0aXN0aWNzIGZv ciBhIHJlbGF0aW9uLCBzbyBmaXJzdCB3ZSBuZWVkCistLSB0byBlbnN1cmUgcGVuZGluZyBzdGF0 cyBhcmUgZmx1c2hlZC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgCisgICAgYy5yZWxuYW1lIEFTIHRhYmxlX25hbWUsCisgICAgLS0gVHJh bnNhY3Rpb24gc3RhdGlzdGljcworICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQo Yy5vaWQpIEFTIHhhY3RfdXBkYXRlcywKKyAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZChjLm9pZCkgQVMgeGFjdF9ob3RfdXBkYXRlcywKKyAgICBST1VORCgoCisgICAgICAg IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKGMub2lkKTo6ZmxvYXQgLyAKKyAg ICAgICAgTlVMTElGKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpLCAwKSAq IDEwMAorICAgICk6Om51bWVyaWMsIDIpIEFTIHhhY3RfaG90X3VwZGF0ZV9wZXJjZW50YWdlLAor ICAgIC0tIEN1bXVsYXRpdmUgc3RhdGlzdGljcworICAgIHMubl90dXBfdXBkIEFTIHRvdGFsX3Vw ZGF0ZXMsCisgICAgcy5uX3R1cF9ob3RfdXBkIEFTIGhvdF91cGRhdGVzLAorICAgIFJPVU5EKCgK KyAgICAgICAgcy5uX3R1cF9ob3RfdXBkOjpmbG9hdCAvIAorICAgICAgICBOVUxMSUYocy5uX3R1 cF91cGQsIDApICogMTAwCisgICAgKTo6bnVtZXJpYywgMikgQVMgdG90YWxfaG90X3VwZGF0ZV9w ZXJjZW50YWdlCitGUk9NIHBnX2NsYXNzIGMKK0xFRlQgSk9JTiBwZ19zdGF0X3VzZXJfdGFibGVz IHMgT04gYy5yZWxuYW1lID0gcy5yZWxuYW1lCitXSEVSRSBjLnJlbG5hbWUgPSAnZXgnIAorQU5E IGMucmVsbmFtZXNwYWNlID0gJ3B1YmxpYyc6OnJlZ25hbWVzcGFjZTsKKyB0YWJsZV9uYW1lIHwg eGFjdF91cGRhdGVzIHwgeGFjdF9ob3RfdXBkYXRlcyB8IHhhY3RfaG90X3VwZGF0ZV9wZXJjZW50 YWdlIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgdG90YWxfaG90X3VwZGF0ZV9wZXJj ZW50YWdlIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZXggICAgICAgICB8ICAgICAgICAgICAg MCB8ICAgICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgIDYgfCAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgICAgICAgICAxNi42NworKDEg cm93KQorCistLSBleHBlY3Q6IDUgeGFjdCB1cGRhdGVzIHdpdGggMSB4YWN0IGhvdCB1cGRhdGUg YW5kIG5vIGN1bXVsYXRpdmUgdXBkYXRlcyBhcyB5ZXQKK1NFVCBTRVNTSU9OIGVuYWJsZV9zZXFz Y2FuID0gT047CitTRVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9OOworRFJPUCBUQUJM RSBleDsKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBUaGlzIHRhYmxlIGhhcyBhIHNpbmdsZSBj b2x1bW4gJ2VtYWlsJyBhbmQgYSB1bmlxdWUgY29uc3RyYWludCBvbiBpdCB0aGF0CistLSBzaG91 bGQgcHJlY2x1ZGUgSE9UIHVwZGF0ZXMuCitDUkVBVEUgVEFCTEUgdXNlcnMgKAorICAgIHVzZXJf aWQgc2VyaWFsIHByaW1hcnkga2V5LAorICAgIG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAor ICAgIGVtYWlsIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBFWENMVURFIFVTSU5HIGJ0cmVl IChsb3dlcihlbWFpbCkgV0lUSCA9KQorKTsKKy0tIEFkZCBzb21lIGRhdGEgdG8gdGhlIHRhYmxl IGFuZCB0aGVuIHVwZGF0ZSBpdCBpbiB3YXlzIHRoYXQgc2hvdWxkIGFuZCBzaG91bGQKKy0tIG5v dCBiZSBIT1QgdXBkYXRlcy4KK0lOU0VSVCBJTlRPIHVzZXJzIChuYW1lLCBlbWFpbCkgVkFMVUVT CisoJ3VzZXIxJywgJ3VzZXIxQGV4YW1wbGUuY29tJyksCisoJ3VzZXIyJywgJ3VzZXIyQGV4YW1w bGUuY29tJyksCisoJ3Rha2VuJywgJ3Rha2VuQEVYQU1QTEUuY29tJyksCisoJ3lvdScsICd5b3VA ZG9tYWluLmNvbScpLAorKCd0YWtlbicsICd0YWtlbkBkb21haW4uY29tJyk7CistLSBTaG91bGQg ZmFpbCBiZWNhdXNlIG9mIHRoZSB1bmlxdWUgY29uc3RyYWludCBvbiB0aGUgZW1haWwgY29sdW1u LgorVVBEQVRFIHVzZXJzIFNFVCBlbWFpbCA9ICd1c2VyMUBleGFtcGxlLmNvbScgV0hFUkUgZW1h aWwgPSAndXNlcjJAZXhhbXBsZS5jb20nOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUg dmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInVzZXJzX2xvd2VyX2V4Y2wiCitERVRBSUw6 ICBLZXkgKGxvd2VyKGVtYWlsOjp0ZXh0KSk9KHVzZXIxQGV4YW1wbGUuY29tKSBjb25mbGljdHMg d2l0aCBleGlzdGluZyBrZXkgKGxvd2VyKGVtYWlsOjp0ZXh0KSk9KHVzZXIxQGV4YW1wbGUuY29t KS4KK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpy ZWdjbGFzcyk7IC0tIGV4cGVjdDogMCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCist LSBTaG91bGQgc3VjY2VlZCBiZWNhdXNlIHRoZSBlbWFpbCBjb2x1bW4gaXMgbm90IGJlaW5nIHVw ZGF0ZWQgYW5kIHNob3VsZCBnbyBIT1QuCitVUERBVEUgdXNlcnMgU0VUIG5hbWUgPSAnZm9vJyBX SEVSRSBlbWFpbCA9ICd1c2VyMUBleGFtcGxlLmNvbSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgYSBz aW5nbGUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBDcmVhdGUgYSBwYXJ0aWFsIGlu ZGV4IG9uIHRoZSBlbWFpbCBjb2x1bW4sIHVwZGF0ZXMgCitDUkVBVEUgSU5ERVggaWR4X3VzZXJz X2VtYWlsX25vX2V4YW1wbGUgT04gdXNlcnMgKGxvd2VyKGVtYWlsKSkgV0hFUkUgbG93ZXIoZW1h aWwpIExJS0UgJyVAZXhhbXBsZS5jb20lJzsKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgdGhl IGVtYWlsIGNvbHVtbiBidXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZhbGxz IG91dHNpZGUgdGhlIGNvbnN0cmFpbnQuCistLSBTaG91bGRuJ3QgYmUgYSBIT1QgdXBkYXRlIGJl Y2F1c2Ugb2YgdGhlIGV4Y2x1c2lvbiBjb25zdHJhaW50LgorVVBEQVRFIHVzZXJzIFNFVCBlbWFp bCA9ICd5b3UrMkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gQW4gdXBkYXRlIHRoYXQg Y2hhbmdlcyB0aGUgZW1haWwgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQgcG9ydGlvbiBvZiBp dCBhbmQgZmFsbHMgd2l0aGluIHRoZSBjb25zdHJhaW50LgorLS0gQWdhaW4sIHNob3VsZCBmYWls IGNvbnN0cmFpbnQgYW5kIGZhaWwgdG8gYmUgYSBIT1QgdXBkYXRlLgorVVBEQVRFIHVzZXJzIFNF VCBlbWFpbCA9ICd0YWtlbkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitFUlJPUjog IGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidXNl cnNfbG93ZXJfZXhjbCIKK0RFVEFJTDogIEtleSAobG93ZXIoZW1haWw6OnRleHQpKT0odGFrZW5A ZG9tYWluLmNvbSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChsb3dlcihlbWFpbDo6dGV4 dCkpPSh0YWtlbkBkb21haW4uY29tKS4KK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19o b3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVw ZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIHVzZXJzOworLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0KKy0tIEFub3RoZXIgdGVzdCBvZiBjb25zdHJhaW50cyBzcG9pbGluZyBIT1QgdXBkYXRlcywg dGhpcyB0aW1lIHdpdGggYSByYW5nZS4KK0NSRUFURSBUQUJMRSBldmVudHMgKAorICAgIGlkIHNl cmlhbCBwcmltYXJ5IGtleSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBl dmVudF90aW1lIHRzdHpyYW5nZSwKKyAgICBjb25zdHJhaW50IG5vX3NjcmVlbmluZ190aW1lX292 ZXJsYXAgZXhjbHVkZSB1c2luZyBnaXN0ICgKKyAgICAgICAgZXZlbnRfdGltZSBXSVRIICYmCisg ICAgKQorKTsKKy0tIEFkZCB0d28gbm9uLW92ZXJsYXBwaW5nIGV2ZW50cy4KK0lOU0VSVCBJTlRP IGV2ZW50cyAoaWQsIGV2ZW50X3RpbWUsIG5hbWUpCitWQUxVRVMKKyAgICAoMSwgJ1siMjAyMy0w MS0wMSAxOTowMDowMCIsICIyMDIzLTAxLTAxIDIwOjQ1OjAwIl0nLCAnZXZlbnQxJyksCisgICAg KDIsICdbIjIwMjMtMDEtMDEgMjE6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMTo0NTowMCJdJywgJ2V2 ZW50MicpOworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0byBvdmVybGFwIHdpdGggdGhlIHNl Y29uZCwgc2hvdWxkIGZhaWwgdGhlIGNvbnN0cmFpbnQgYW5kIG5vdCBiZSBIT1QuCitVUERBVEUg ZXZlbnRzIFNFVCBldmVudF90aW1lID0gJ1siMjAyMy0wMS0wMSAyMDowMDowMCIsICIyMDIzLTAx LTAxIDIxOjQ1OjAwIl0nIFdIRVJFIGlkID0gMTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZh bHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJub19zY3JlZW5pbmdfdGltZV9vdmVy bGFwIgorREVUQUlMOiAgS2V5IChldmVudF90aW1lKT0oWyJTdW4gSmFuIDAxIDIwOjAwOjAwIDIw MjMgUFNUIiwiU3VuIEphbiAwMSAyMTo0NTowMCAyMDIzIFBTVCJdKSBjb25mbGljdHMgd2l0aCBl eGlzdGluZyBrZXkgKGV2ZW50X3RpbWUpPShbIlN1biBKYW4gMDEgMjE6MDA6MDAgMjAyMyBQU1Qi LCJTdW4gSmFuIDAxIDIxOjQ1OjAwIDIwMjMgUFNUIl0pLgorU0VMRUNUIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCBu byBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50 IHRvIG5vdCBvdmVybGFwIHdpdGggdGhlIHNlY29uZCwgYWdhaW4gbm90IEhPVCBkdWUgdG8gdGhl IGNvbnN0cmFpbnQuCitVUERBVEUgZXZlbnRzIFNFVCBldmVudF90aW1lID0gJ1siMjAyMy0wMS0w MSAyMjowMDowMCIsICIyMDIzLTAxLTAxIDIyOjQ1OjAwIl0nIFdIRVJFIGlkID0gMTsKK1NFTEVD VCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3Mp OyAtLSBleHBlY3Q6IDAgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gVXBkYXRl IHRoZSBmaXJzdCBldmVudCB0byBub3Qgb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIHRoaXMgdGlt ZSB3ZSdyZSBIT1QgYmVjYXVzZSB3ZSBkb24ndCBvdmVybGFwIHdpdGggdGhlIGNvbnN0cmFpbnQu CitVUERBVEUgZXZlbnRzIFNFVCBuYW1lID0gJ25ldyBuYW1lIGhlcmUnIFdIRVJFIGlkID0gMTsK K1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgb25lIG5ldyBIT1QgdXBkYXRlCisgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworRFJP UCBUQUJMRSBldmVudHM7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gQSB0ZXN0IHRvIGVuc3Vy ZSB0aGF0IHN1bW1hcml6aW5nIGluZGV4ZXMgYXJlIG5vdCB1cGRhdGVkIHdoZW4gdGhleSBkb24n dAorLS0gY2hhbmdlLCBidXQgYXJlIHVwZGF0ZWQgd2hlbiB0aGV5IGRvIHdoaWxlIG5vdCBwcmVm ZW50IEhPVCB1cGRhdGVzLgorQ1JFQVRFIFRBQkxFIGV4IChhdHQxIEpTT05CLCBhdHQyIHRleHQp IFdJVEggKGZpbGxmYWN0b3IgPSA2MCk7CitDUkVBVEUgSU5ERVggZXhwcmVzc2lvbiBPTiBleCBV U0lORyBidHJlZSgoYXR0MS0+J2RhdGEnKSk7CitDUkVBVEUgSU5ERVggc3VtbWFyaXppbmcgT04g ZXggVVNJTkcgQlJJTihhdHQyKTsKK0lOU0VSVCBJTlRPIGV4IFZBTFVFUyAoJ3siZGF0YSI6IFtd fScsICdub3RoaW5nIHNwZWNpYWwnKTsKKy0tIFVwZGF0ZSB0aGUgdW5pbmRleGVkIHZhbHVlIG9m IGF0dDEsIHRoaXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0ZSBhbmQgbm90CistLSB1cGRhdGUgdGhl IHN1bW1hcml6aW5nIGluZGV4LgorVVBEQVRFIGV4IFNFVCBhdHQxID0gYXR0MSB8fCAneyJzdGF0 dXMiOiAiY2hlY2ttYXRlIn0nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG9uZSBuZXcgSE9UIHVwZGF0ZQor IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx CisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGUgaW5kZXhlZCB2YWx1ZSBvZiBhdHQyLCBhIHN1bW1h cml6ZWQgdmFsdWUsIHRoaXMgaXMgYSBzdW1tYXJpemVkCistLSBvbmx5IHVwZGF0ZSBhbmQgc2hv dWxkIHVzZSB0aGUgSE9UIHBhdGggd2hpbGUgc3RpbGwgdHJpZ2dlcmluZyBhbiB1cGRhdGUgdG8K Ky0tIHRoZSBzdW1tYXJpemluZyBCUklOIGluZGV4LgorVVBEQVRFIGV4IFNFVCBhdHQyID0gJ3Nw ZWNpYWwgaW5kZWVkJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMiBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgorKDEg cm93KQorCistLSBVcGRhdGUgdG8gYXR0MSBkb2Vzbid0IGNoYW5nZSB0aGUgaW5kZXhlZCB2YWx1 ZSB3aGlsZSB0aGUgdXBkYXRlIHRvIGF0dDIgZG9lcywKKy0tIHRoaXMgYWdhaW4gaXMgYSBzdW1t YXJpemVkIG9ubHkgdXBkYXRlIGFuZCBzaG91bGQgdXNlIHRoZSBIT1QgcGF0aCBhcyB3ZWxsIGFz CistLSB0cmlnZ2VyIGFuIHVwZGF0ZSB0byB0aGUgQlJJTiBpbmRleC4KK1VQREFURSBleCBTRVQg YXR0MSA9IGF0dDEgfHwgJ3sic3RhdHVzIjogImNoZWNrbWF0ZSEifScsIGF0dDIgPSAnc3BlY2lh bCwgc28gc3BlY2lhbCc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDMgb25lIG5ldyBIT1QgdXBkYXRlCisgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKKygx IHJvdykKKworLS0gVGhpcyB1cGRhdGVzIGJvdGggaW5kZXhlcywgdGhlIGV4cHJlc3Npb24gaW5k ZXggb24gYXR0MSBhbmQgdGhlIHN1bW1hcml6aW5nCistLSBpbmRleCBvbiBhdHQyLiAgVGhpcyBz aG91bGQgbm90IGJlIGEgSE9UIHVwZGF0ZSBiZWNhdXNlIHRoZXJlIGFyZSBtb2RpZmllZAorLS0g aW5kZXhlcyBhbmQgb25seSBzb21lIGFyZSBzdW1tYXJpemVkLCBub3QgYWxsLiAgVGhpcyBzaG91 bGQgZm9yY2UgYWxsCistLSBpbmRleGVzIHRvIGJlIHVwZGF0ZWQuCitVUERBVEUgZXggU0VUIGF0 dDEgPSBhdHQxIHx8ICd7ImRhdGEiOiBbMSwyLDNdfScsIGF0dDIgPSAnZG8geW91IHdhbnQgdG8g cGxheSBhIGdhbWU/JzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMyBib3RoIGluZGV4ZXMgdXBkYXRlZAorIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCiso MSByb3cpCisKK0RST1AgVEFCTEUgZXg7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0 ZXN0IGlzIGZvciBhIHRhYmxlIHdpdGggYSBjdXN0b20gdHlwZSBhbmQgYSBjdXN0b20gb3BlcmF0 b3JzIG9uCistLSB0aGUgQlRSRUUgaW5kZXguICBUaGUgcXVlc3Rpb24gaXMsIHdoZW4gY29tcGFy aW5nIHZhbHVlcyBmb3IgZXF1YWxpdHkKKy0tIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgY2hh bmdlcyBvbiB0aGUgaW5kZXggb3Igbm90Li4uIHNob3VsZG4ndCB3ZQorLS0gYmUgdXNpbmcgdGhl IGN1c3RvbSBvcGVyYXRvcnM/CistLSBDcmVhdGUgYSB0eXBlCitDUkVBVEUgVFlQRSBteV9jdXN0 b21fdHlwZSBBUyAodmFsIGludCk7CistLSBDb21wYXJpc29uIGZ1bmN0aW9ucyAocmV0dXJucyBi b29sZWFuKQorQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9sdChhIG15X2N1c3RvbV90eXBlLCBi IG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJO IGEudmFsIDwgYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJ Q1Q7CitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2xlKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlf Y3VzdG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52 YWwgPD0gYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7 CitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2VxKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3Vz dG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwg PSBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKK0NS RUFURSBGVU5DVElPTiBteV9jdXN0b21fZ2UoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21f dHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA+PSBi LnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKK0NSRUFU RSBGVU5DVElPTiBteV9jdXN0b21fZ3QoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlw ZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA+IGIudmFs OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworQ1JFQVRFIEZV TkNUSU9OIG15X2N1c3RvbV9uZShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBlKSBS RVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsICE9IGIudmFsOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworLS0gQ29tcGFyaXNv biBmdW5jdGlvbiAocmV0dXJucyAtMSwgMCwgMSkKK0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21f Y21wKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgaW50IEFTICQk CitCRUdJTgorICAgIElGIGEudmFsIDwgYi52YWwgVEhFTgorICAgICAgICBSRVRVUk4gLTE7Cisg ICAgRUxTSUYgYS52YWwgPiBiLnZhbCBUSEVOCisgICAgICAgIFJFVFVSTiAxOworICAgIEVMU0UK KyAgICAgICAgUkVUVVJOIDA7CisgICAgRU5EIElGOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3Nx bCBJTU1VVEFCTEUgU1RSSUNUOworLS0gQ3JlYXRlIHRoZSBvcGVyYXRvcnMKK0NSRUFURSBPUEVS QVRPUiA8ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBt eV9jdXN0b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbHQsCisgICAgQ09NTVVU QVRPUiA9ID4sCisgICAgTkVHQVRPUiA9ID49CispOworQ1JFQVRFIE9QRVJBVE9SIDw9ICgKKyAg ICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0b21fdHlw ZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbGUsCisgICAgQ09NTVVUQVRPUiA9ID49LAor ICAgIE5FR0FUT1IgPSA+CispOworQ1JFQVRFIE9QRVJBVE9SID0gKAorICAgIExFRlRBUkcgPSBt eV9jdXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NF RFVSRSA9IG15X2N1c3RvbV9lcSwKKyAgICBDT01NVVRBVE9SID0gPSwKKyAgICBORUdBVE9SID0g PD4KKyk7CitDUkVBVEUgT1BFUkFUT1IgPj0gKAorICAgIExFRlRBUkcgPSBteV9jdXN0b21fdHlw ZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVSRSA9IG15X2N1 c3RvbV9nZSwKKyAgICBDT01NVVRBVE9SID0gPD0sCisgICAgTkVHQVRPUiA9IDwKKyk7CitDUkVB VEUgT1BFUkFUT1IgPiAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hU QVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2d0LAorICAg IENPTU1VVEFUT1IgPSA8LAorICAgIE5FR0FUT1IgPSA8PQorKTsKK0NSRUFURSBPUEVSQVRPUiA8 PiAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3Vz dG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX25lLAorICAgIENPTU1VVEFUT1Ig PSA8PiwKKyAgICBORUdBVE9SID0gPQorKTsKKy0tIENyZWF0ZSB0aGUgb3BlcmF0b3IgY2xhc3Mg KGluY2x1ZGluZyB0aGUgc3VwcG9ydCBmdW5jdGlvbikKK0NSRUFURSBPUEVSQVRPUiBDTEFTUyBt eV9jdXN0b21fb3BzCisgICAgREVGQVVMVCBGT1IgVFlQRSBteV9jdXN0b21fdHlwZSBVU0lORyBi dHJlZSBBUworICAgIE9QRVJBVE9SIDEgPCwKKyAgICBPUEVSQVRPUiAyIDw9LAorICAgIE9QRVJB VE9SIDMgPSwKKyAgICBPUEVSQVRPUiA0ID49LAorICAgIE9QRVJBVE9SIDUgPiwKKyAgICBGVU5D VElPTiAxIG15X2N1c3RvbV9jbXAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKKy0t IENyZWF0ZSB0aGUgdGFibGUKK0NSRUFURSBUQUJMRSBteV90YWJsZSAoCisgICAgaWQgaW50LAor ICAgIGN1c3RvbV92YWwgbXlfY3VzdG9tX3R5cGUKKyk7CistLSBJbnNlcnQgc29tZSBkYXRhCitJ TlNFUlQgSU5UTyBteV90YWJsZSAoaWQsIGN1c3RvbV92YWwpIFZBTFVFUworKDEsIFJPVygzKTo6 bXlfY3VzdG9tX3R5cGUpLAorKDIsIFJPVygxKTo6bXlfY3VzdG9tX3R5cGUpLAorKDMsIFJPVyg0 KTo6bXlfY3VzdG9tX3R5cGUpLAorKDQsIFJPVygyKTo6bXlfY3VzdG9tX3R5cGUpOworLS0gQ3Jl YXRlIGEgZnVuY3Rpb24gdG8gdXNlIHdoZW4gaW5kZXhpbmcKK0NSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OIGFic192YWwodmFsIG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGludCBBUyAkJAorQkVH SU4KKyAgUkVUVVJOIGFicyh2YWwudmFsKTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1N VVRBQkxFIFNUUklDVDsKKy0tIENyZWF0ZSB0aGUgaW5kZXgKK0NSRUFURSBJTkRFWCBpZHhfY3Vz dG9tX3ZhbF9hYnMgT04gbXlfdGFibGUgKGFic192YWwoY3VzdG9tX3ZhbCkpOworLS0gVXBkYXRl IDEKK1VQREFURSBteV90YWJsZSBTRVQgY3VzdG9tX3ZhbCA9IFJPVyg1KTo6bXlfY3VzdG9tX3R5 cGUgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkKCdteV90YWJsZSc6OnJlZ2NsYXNzKTsKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgMgorVVBE QVRFIG15X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDApOjpteV9jdXN0b21fdHlwZSBXSEVS RSBjdXN0b21fdmFsIDwgUk9XKDMpOjpteV9jdXN0b21fdHlwZTsKK1NFTEVDVCBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnbXlfdGFibGUnOjpyZWdjbGFzcyk7CisgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJv dykKKworLS0gVXBkYXRlIDMKK1VQREFURSBteV90YWJsZSBTRVQgY3VzdG9tX3ZhbCA9IFJPVyg2 KTo6bXlfY3VzdG9tX3R5cGUgV0hFUkUgaWQgPSAzOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2NsYXNzKTsKKyBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCist LSBVcGRhdGUgNAorVVBEQVRFIG15X3RhYmxlIFNFVCBpZCA9IDUgV0hFUkUgaWQgPSAxOworU0VM RUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2Ns YXNzKTsKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMQorKDEgcm93KQorCistLSBRdWVyeSB1c2luZyB0aGUgaW5kZXgKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBteV90YWJsZSBXSEVSRSBhYnNfdmFsKGN1c3RvbV92YWwp ID0gNjsKKyAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBteV90YWJsZQorICAgRmls dGVyOiAoYWJzX3ZhbChjdXN0b21fdmFsKSA9IDYpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IG15X3RhYmxlIFdIRVJFIGFic192YWwoY3VzdG9tX3ZhbCkgPSA2OworIGlkIHwgY3VzdG9tX3Zh bCAKKy0tLS0rLS0tLS0tLS0tLS0tCisgIDMgfCAoNikKKygxIHJvdykKKworLS0gQ2xlYW4gdXAK K0RST1AgVEFCTEUgbXlfdGFibGUgQ0FTQ0FERTsKK0RST1AgT1BFUkFUT1IgQ0xBU1MgbXlfY3Vz dG9tX29wcyBVU0lORyBidHJlZSBDQVNDQURFOworRFJPUCBPUEVSQVRPUiA8IChteV9jdXN0b21f dHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA8PSAobXlfY3VzdG9tX3R5cGUs IG15X2N1c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPSAobXlfY3VzdG9tX3R5cGUsIG15X2N1 c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPj0gKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21f dHlwZSk7CitEUk9QIE9QRVJBVE9SID4gKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7 CitEUk9QIE9QRVJBVE9SIDw+IChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJP UCBGVU5DVElPTiBteV9jdXN0b21fbHQobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsK K0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2xlKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlw ZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9lcShteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9t X3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fZ2UobXlfY3VzdG9tX3R5cGUsIG15X2N1 c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2d0KG15X2N1c3RvbV90eXBlLCBt eV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9uZShteV9jdXN0b21fdHlw ZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fY21wKG15X2N1c3Rv bV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIGFic192YWwobXlfY3VzdG9t X3R5cGUpOworRFJPUCBUWVBFIG15X2N1c3RvbV90eXBlIENBU0NBREU7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQppbmRleCBlNjNlZTJjZjJiYi4uZjlkZWYzZDkzYWEgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtNjgsNiArNjgsMTEgQEAgdGVzdDogc2VsZWN0X2ludG8g c2VsZWN0X2Rpc3RpbmN0IHNlbGVjdF9kaXN0aW5jdF9vbiBzZWxlY3RfaW1wbGljaXQgc2VsZWN0 X2hhdmkKICMgLS0tLS0tLS0tLQogdGVzdDogYnJpbiBnaW4gZ2lzdCBzcGdpc3QgcHJpdmlsZWdl cyBpbml0X3ByaXZzIHNlY3VyaXR5X2xhYmVsIGNvbGxhdGUgbWF0dmlldyBsb2NrIHJlcGxpY2Ff aWRlbnRpdHkgcm93c2VjdXJpdHkgb2JqZWN0X2FkZHJlc3MgdGFibGVzYW1wbGUgZ3JvdXBpbmdz ZXRzIGRyb3Bfb3BlcmF0b3IgcGFzc3dvcmQgaWRlbnRpdHkgZ2VuZXJhdGVkX3N0b3JlZCBqb2lu X2hhc2gKIAorIyAtLS0tLS0tLS0tCisjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMK KyMgLS0tLS0tLS0tLQordGVzdDogaGVhcF9ob3RfdXBkYXRlcworCiAjIC0tLS0tLS0tLS0KICMg QWRkaXRpb25hbCBCUklOIHRlc3RzCiAjIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv aGVhcF9ob3RfdXBkYXRlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjc3MjgwNzVhN2FlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv aGVhcF9ob3RfdXBkYXRlcy5zcWwKQEAgLTAsMCArMSw0NDAgQEAKKy0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tCistLSBUaGlzIHRhYmxlIHdpbGwgaGF2ZSB0d28gY29sdW1ucyBhbmQgdHdvIGluZGV4ZXMs IG9uZSBvbiB0aGUgcHJpbWFyeSBrZXkKKy0tIGlkIGFuZCBvbmUgb24gdGhlIGV4cHJlc3Npb24g KGluZm8tPj4nbmFtZScpLiAgVGhhdCBtZWFucyB0aGF0IHRoZSBpbmRleGVkCistLSBhdHRyaWJ1 dGVzIGFyZSAnaWQnIGFuZCAnaW5mbycuCitjcmVhdGUgdGFibGUga2V5dmFsdWUoaWQgaW50ZWdl ciBwcmltYXJ5IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWluZGV4IG9uIGtl eXZhbHVlKChpbmZvLT4+J25hbWUnKSk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2YWx1ZXMgKDEs ICd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CisKKy0tIERpc2FibGUg ZXhwcmVzc2lvbiBjaGVja3MuCitBTFRFUiBUQUJMRSBrZXl2YWx1ZSBTRVQgKGV4cHJlc3Npb25f Y2hlY2tzID0gZmFsc2UpOworU0VMRUNUIHJlbG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSBy ZWxuYW1lID0gJ2tleXZhbHVlJzsKKworLS0gV2hpbGUgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJu YW1lIiBpcyB1bmNoYW5nZWQgd2UndmUgZGlzYWJsZWQgZXhwcmVzc2lvbgorLS0gY2hlY2tzIHNv IHRoaXMgdXBkYXRlIHNob3VsZCBub3QgZ28gSE9UIGFzIHRoZSBzeXN0ZW0gY2FuJ3QgZGV0ZXJt aW5lIGlmCistLSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgaGFzIGNoYW5nZWQgd2l0aG91dCBldmFs dWF0aW5nIHRoZSBleHByZXNzaW9uLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUi OiAiam9obiIsICJkYXRhIjogInNvbWV0aGluZyBlbHNlIn0nIHdoZXJlIGlkPTE7CitzZWxlY3Qg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3Mp OyAtLSBleHBlY3Q6IDAgcm93CisKKy0tIFJlLWVuYWJsZSBleHByZXNzaW9uIGNoZWNrcy4KK0FM VEVSIFRBQkxFIGtleXZhbHVlIFNFVCAoZXhwcmVzc2lvbl9jaGVja3MgPSB0cnVlKTsKK1NFTEVD VCByZWxvcHRpb25zIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdrZXl2YWx1ZSc7CisK Ky0tIFRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIgd2l0aCB2YWx1ZSAiam9obiIgaXMgdW5j aGFuZ2VkLCBleHBlY3QgYSBIT1QgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7 Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOwor c2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJl Z2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdworCistLSBUaGUgZm9sbG93aW5nIHVwZGF0ZSBjaGFu Z2VzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIsIHRoaXMgc2hvdWxkIG5vdCBiZSBhIEhP VCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJk YXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworCistLSBOb3csIHRoaXMgdXBkYXRlIGRvZXMgbm90IGNo YW5nZSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIGZyb20gInNtaXRoIiwgdGhpcyBzaG91 bGQgYmUgSE9ULgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAic21pdGgiLCAi ZGF0YSI6ICJzb21lIG1vcmUgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAyIHJvd3Mgbm93Citkcm9wIHRhYmxlIGtleXZhbHVlOworCisKKy0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tCistLSBUaGlzIHRhYmxlIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBvbmUgYnV0IGl0 IGhhcyBhIHRoaXJkIGluZGV4LiAgVGhlCistLSBpbmRleCAnY29saW5kZXgnIGlzbid0IGFuIGV4 cHJlc3Npb24gaW5kZXgsIGl0IGluZGV4ZXMgdGhlIGVudGlyZSB2YWx1ZQorLS0gaW4gdGhlIGlu Zm8gY29sdW1uLiAgVGhlcmUgYXJlIHN0aWxsIG9ubHkgdHdvIGluZGV4ZWQgYXR0cmlidXRlcyBm b3IgdGhpcworLS0gcmVsYXRpb24sIHRoZSBzYW1lIHR3byBhcyBiZWZvcmUuICBUaGUgcHJlc2Vu Y2Ugb2YgYW4gaW5kZXggb24gdGhlIGVudGlyZQorLS0gdmFsdWUgb2YgdGhlIGluZm8gY29sdW1u IHNob3VsZCBwcmV2ZW50IEhPVCB1cGRhdGVzIGZvciBhbnkgdXBkYXRlcyB0byBhbnkKKy0tIHBv cnRpb24gb2YgSlNPTkIgY29udGVudCBpbiB0aGF0IGNvbHVtbi4KK2NyZWF0ZSB0YWJsZSBrZXl2 YWx1ZShpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBpbmZvIGpzb25iKTsKK2NyZWF0ZSBpbmRleCBu YW1laW5kZXggb24ga2V5dmFsdWUoKGluZm8tPj4nbmFtZScpKTsKK2NyZWF0ZSBpbmRleCBjb2xp bmRleCBvbiBrZXl2YWx1ZShpbmZvKTsKK2luc2VydCBpbnRvIGtleXZhbHVlIHZhbHVlcyAoMSwg J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBkYXRhIn0nKTsKKworLS0gVGhpcyB1cGRh dGUgZG9lc24ndCBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGluZGV4LCBidXQg aXQgZG9lcworLS0gY2hhbmdlIHRoZSBjb250ZW50IG9mIHRoZSBpbmZvIGNvbHVtbiBhbmQgc28g c2hvdWxkIG5vdCBiZSBIT1QgYmVjYXVzZSB0aGUKKy0tIGluZGV4ZWQgdmFsdWUgY2hhbmdlZCBh cyBhIHJlc3VsdCBvZiB0aGUgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5h bWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2Vs ZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2Ns YXNzKTsgLS0gZXhwZWN0OiAwIHJvd3MKK2Ryb3AgdGFibGUga2V5dmFsdWU7CisKKy0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tCistLSBUaGUgdGFibGUgaGFzIG9uZSBjb2x1bW4gZG9jcyBhbmQgdHdvIGlu ZGV4ZXMuICBUaGV5IGFyZSBib3RoIGV4cHJlc3Npb24KKy0tIGluZGV4ZXMgcmVmZXJlbmNpbmcg dGhlIHNhbWUgY29sdW1uIGF0dHJpYnV0ZSAoZG9jcykgYnV0IG9uZSBpcyBhIHBhcnRpYWwKKy0t IGluZGV4LgorQ1JFQVRFIFRBQkxFIGV4IChkb2NzIEpTT05CKSBXSVRIIChmaWxsZmFjdG9yID0g NjApOworSU5TRVJUIElOVE8gZXggKGRvY3MpIFZBTFVFUyAoJ3siYSI6IDAsICJiIjogMH0nKTsK K0lOU0VSVCBJTlRPIGV4IChkb2NzKSBTRUxFQ1QganNvbmJfYnVpbGRfb2JqZWN0KCdiJywgbikg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwLCAxMDAwMCkgYXMgbjsKK0NSRUFURSBJTkRFWCBpZHhf ZXhfYSBPTiBleCAoKGRvY3MtPj4nYScpKTsKK0NSRUFURSBJTkRFWCBpZHhfZXhfYiBPTiBleCAo KGRvY3MtPj4nYicpKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5OworCistLSBXZSdy ZSB1c2luZyBCVFJFRSBpbmRleGVzIGFuZCBmb3IgdGhpcyB0ZXN0IHdlIHdhbnQgdG8gbWFrZSBz dXJlIHRoYXQgdGhleSByZW1haW4KKy0tIGluIHN5bmMgd2l0aCBjaGFuZ2VzIHRvIG91ciByZWxh dGlvbi4gIEZvcmNlIHRoZSBjaG9pY2Ugb2YgaW5kZXggc2NhbnMgYmVsb3cgc28KKy0tIHRoYXQg d2Uga25vdyB3ZSdyZSBjaGVja2luZyB0aGUgaW5kZXgncyB1bmRlcnN0YW5kaW5nIG9mIHdoYXQg dmFsdWVzIHNob3VsZCBiZQorLS0gaW4gdGhlIGluZGV4IG9yIG5vdC4KK1NFVCBTRVNTSU9OIGVu YWJsZV9zZXFzY2FuID0gT0ZGOworU0VUIFNFU1NJT04gZW5hYmxlX2JpdG1hcHNjYW4gPSBPRkY7 CisKKy0tIExlYXZlICdhJyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSBvdXRz aWRlIG9mIHRoZSBpbmRleCBwcmVkaWNhdGUuCistLSBUaGlzIHNob3VsZCBiZSBhIEhPVCB1cGRh dGUgYmVjYXVzZSBuZWl0aGVyIGluZGV4IGlzIGNoYW5nZWQuCitVUERBVEUgZXggU0VUIGRvY3Mg PSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAwLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2EnKTo6 bnVtZXJpYyA9IDA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93CistLSBMZXQncyBjaGVjayB0byBtYWtl IHN1cmUgdGhhdCB0aGUgaW5kZXggZG9lcyBub3QgY29udGFpbiBhIHZhbHVlIGZvciAnYicKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51 bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitTRUxFQ1QgKiBGUk9N IGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVt ZXJpYyA8IDEwMDsKKworLS0gTGVhdmUgJ2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBh IHZhbHVlIHdpdGhpbiB0aGUgaW5kZXggcHJlZGljYXRlLgorLS0gVGhpcyByZXByZXNlbnRzIGEg Y2hhbmdlIGZvciBmaWVsZCAnYicgZnJvbSB1bmluZGV4ZWQgdG8gaW5kZXhlZCBhbmQgc28KKy0t IHRoaXMgc2hvdWxkIG5vdCB0YWtlIHRoZSBIT1QgcGF0aC4KK1VQREFURSBleCBTRVQgZG9jcyA9 IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDAsICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2EnKTo6 bnVtZXJpYyA9IDA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCistLSBMZXQn cyBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggY29udGFpbnMgdGhlIG5ldyB2YWx1 ZSBvZiAnYicKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9j cy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitT RUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2Nz LT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKworLS0gVGhpcyB1cGRhdGUgbW9kaWZpZXMgdGhlIHZh bHVlIG9mICdhJywgYW4gaW5kZXhlZCBmaWVsZCwgc28gaXQgYWxzbyBjYW5ub3QKKy0tIGJlIGEg SE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScs IDEsICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEwOworU0VMRUNUIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhw ZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzIGJvdGgg J2EnIGFuZCAnYicgdG8gbmV3IHZhbHVlcyB0aGF0IHJlcXVpcmUgaW5kZXggdXBkYXRlcywKKy0t IHRoaXMgY2Fubm90IHVzZSB0aGUgSE9UIHBhdGguCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29u Yl9idWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDEyKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVy aWMgPSAxMDsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgn OjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKy0tIExldCdzIGNo ZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9m ICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+ J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NFTEVD VCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4n YicpOjpudW1lcmljIDwgMTAwOworCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzICdiJyB0byBhIHZh bHVlIG91dHNpZGUgaXRzIHByZWRpY2F0ZSByZXF1aXJpbmcgdGhhdAorLS0gd2UgcmVtb3ZlIGl0 IGZyb20gdGhlIGluZGV4LiAgVGhhdCdzIGEgdHJhbnNpdGlvbiB0aGF0IGNhbid0IGJlIGRvbmUK Ky0tIGR1cmluZyBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWls ZF9vYmplY3QoJ2EnLCAyLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEy OworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2Ns YXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworLS0gTGV0J3MgY2hlY2sgdG8g bWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IG5vIGxvbmdlciBjb250YWlucyB0aGUgdmFsdWUgb2Yg J2InCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4n YicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworU0VMRUNU ICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+Pidi Jyk6Om51bWVyaWMgPCAxMDA7CisKKy0tIERpc2FibGUgZXhwcmVzc2lvbiBjaGVja3MuCitBTFRF UiBUQUJMRSBleCBTRVQgKGV4cHJlc3Npb25fY2hlY2tzID0gZmFsc2UpOworU0VMRUNUIHJlbG9w dGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2V4JzsKKworLS0gVGhpcyB1cGRh dGUgY2hhbmdlcyAnYicgdG8gYSB2YWx1ZSB3aXRoaW4gaXRzIHByZWRpY2F0ZSBqdXN0IGxpa2Ug aXQKKy0tIHByZXZpb3VzIHZhbHVlLCB3aGljaCB3b3VsZCBhbGxvdyBmb3IgYSBIT1QgdXBkYXRl IGJ1dCB3aXRoIGV4cHJlc3Npb24KKy0tIGNoZWNrcyBkaXNhYmxlZCB3ZSBjYW4ndCBkZXRlcm1p bmUgdGhhdCBzbyB0aGlzIHNob3VsZCBub3QgYmUgYSBIT1QgdXBkYXRlLgorVVBEQVRFIGV4IFNF VCBkb2NzID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMiwgJ2InLCAyKSBXSEVSRSAoZG9jcy0+ PidiJyk6Om51bWVyaWMgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcwor CisKKy0tIExldCdzIG1ha2Ugc3VyZSB3ZSdyZSByZWNvcmRpbmcgSE9UIHVwZGF0ZXMgZm9yIG91 ciAnZXgnIHJlbGF0aW9uIHByb3Blcmx5IGluIHRoZSBzeXN0ZW0KKy0tIHRhYmxlIHBnX3N0YXRf dXNlcl90YWJsZXMuICBOb3RlIHRoYXQgc3RhdGlzdGljcyBhcmUgc3RvcmVkIHdpdGhpbiBhIHRy YW5zYWN0aW9uIGNvbnRleHQKKy0tIGZpcnN0ICh4YWN0KSBhbmQgdGhlbiBsYXRlciBpbnRvIHRo ZSBnbG9iYWwgc3RhdGlzdGljcyBmb3IgYSByZWxhdGlvbiwgc28gZmlyc3Qgd2UgbmVlZAorLS0g dG8gZW5zdXJlIHBlbmRpbmcgc3RhdHMgYXJlIGZsdXNoZWQuCitTRUxFQ1QgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgCisgICAgYy5yZWxuYW1lIEFTIHRhYmxlX25hbWUsCisg ICAgLS0gVHJhbnNhY3Rpb24gc3RhdGlzdGljcworICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X3VwZGF0ZWQoYy5vaWQpIEFTIHhhY3RfdXBkYXRlcywKKyAgICBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZChjLm9pZCkgQVMgeGFjdF9ob3RfdXBkYXRlcywKKyAgICBST1VORCgo CisgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKGMub2lkKTo6Zmxv YXQgLyAKKyAgICAgICAgTlVMTElGKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5v aWQpLCAwKSAqIDEwMAorICAgICk6Om51bWVyaWMsIDIpIEFTIHhhY3RfaG90X3VwZGF0ZV9wZXJj ZW50YWdlLAorICAgIC0tIEN1bXVsYXRpdmUgc3RhdGlzdGljcworICAgIHMubl90dXBfdXBkIEFT IHRvdGFsX3VwZGF0ZXMsCisgICAgcy5uX3R1cF9ob3RfdXBkIEFTIGhvdF91cGRhdGVzLAorICAg IFJPVU5EKCgKKyAgICAgICAgcy5uX3R1cF9ob3RfdXBkOjpmbG9hdCAvIAorICAgICAgICBOVUxM SUYocy5uX3R1cF91cGQsIDApICogMTAwCisgICAgKTo6bnVtZXJpYywgMikgQVMgdG90YWxfaG90 X3VwZGF0ZV9wZXJjZW50YWdlCitGUk9NIHBnX2NsYXNzIGMKK0xFRlQgSk9JTiBwZ19zdGF0X3Vz ZXJfdGFibGVzIHMgT04gYy5yZWxuYW1lID0gcy5yZWxuYW1lCitXSEVSRSBjLnJlbG5hbWUgPSAn ZXgnIAorQU5EIGMucmVsbmFtZXNwYWNlID0gJ3B1YmxpYyc6OnJlZ25hbWVzcGFjZTsKKy0tIGV4 cGVjdDogNSB4YWN0IHVwZGF0ZXMgd2l0aCAxIHhhY3QgaG90IHVwZGF0ZSBhbmQgbm8gY3VtdWxh dGl2ZSB1cGRhdGVzIGFzIHlldAorCitTRVQgU0VTU0lPTiBlbmFibGVfc2Vxc2NhbiA9IE9OOwor U0VUIFNFU1NJT04gZW5hYmxlX2JpdG1hcHNjYW4gPSBPTjsKKworRFJPUCBUQUJMRSBleDsKKwor LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMgdGFibGUgaGFzIGEgc2luZ2xlIGNvbHVtbiAn ZW1haWwnIGFuZCBhIHVuaXF1ZSBjb25zdHJhaW50IG9uIGl0IHRoYXQKKy0tIHNob3VsZCBwcmVj bHVkZSBIT1QgdXBkYXRlcy4KK0NSRUFURSBUQUJMRSB1c2VycyAoCisgICAgdXNlcl9pZCBzZXJp YWwgcHJpbWFyeSBrZXksCisgICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisgICAgZW1h aWwgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAgIEVYQ0xVREUgVVNJTkcgYnRyZWUgKGxvd2Vy KGVtYWlsKSBXSVRIID0pCispOworCistLSBBZGQgc29tZSBkYXRhIHRvIHRoZSB0YWJsZSBhbmQg dGhlbiB1cGRhdGUgaXQgaW4gd2F5cyB0aGF0IHNob3VsZCBhbmQgc2hvdWxkCistLSBub3QgYmUg SE9UIHVwZGF0ZXMuCitJTlNFUlQgSU5UTyB1c2VycyAobmFtZSwgZW1haWwpIFZBTFVFUworKCd1 c2VyMScsICd1c2VyMUBleGFtcGxlLmNvbScpLAorKCd1c2VyMicsICd1c2VyMkBleGFtcGxlLmNv bScpLAorKCd0YWtlbicsICd0YWtlbkBFWEFNUExFLmNvbScpLAorKCd5b3UnLCAneW91QGRvbWFp bi5jb20nKSwKKygndGFrZW4nLCAndGFrZW5AZG9tYWluLmNvbScpOworCistLSBTaG91bGQgZmFp bCBiZWNhdXNlIG9mIHRoZSB1bmlxdWUgY29uc3RyYWludCBvbiB0aGUgZW1haWwgY29sdW1uLgor VVBEQVRFIHVzZXJzIFNFVCBlbWFpbCA9ICd1c2VyMUBleGFtcGxlLmNvbScgV0hFUkUgZW1haWwg PSAndXNlcjJAZXhhbXBsZS5jb20nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAwIG5vIG5ldyBIT1QgdXBk YXRlcworCistLSBTaG91bGQgc3VjY2VlZCBiZWNhdXNlIHRoZSBlbWFpbCBjb2x1bW4gaXMgbm90 IGJlaW5nIHVwZGF0ZWQgYW5kIHNob3VsZCBnbyBIT1QuCitVUERBVEUgdXNlcnMgU0VUIG5hbWUg PSAnZm9vJyBXSEVSRSBlbWFpbCA9ICd1c2VyMUBleGFtcGxlLmNvbSc7CitTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgYSBzaW5nbGUgbmV3IEhPVCB1cGRhdGUKKworLS0gQ3JlYXRlIGEgcGFydGlhbCBpbmRl eCBvbiB0aGUgZW1haWwgY29sdW1uLCB1cGRhdGVzIAorQ1JFQVRFIElOREVYIGlkeF91c2Vyc19l bWFpbF9ub19leGFtcGxlIE9OIHVzZXJzIChsb3dlcihlbWFpbCkpIFdIRVJFIGxvd2VyKGVtYWls KSBMSUtFICclQGV4YW1wbGUuY29tJSc7CisKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgdGhl IGVtYWlsIGNvbHVtbiBidXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZhbGxz IG91dHNpZGUgdGhlIGNvbnN0cmFpbnQuCistLSBTaG91bGRuJ3QgYmUgYSBIT1QgdXBkYXRlIGJl Y2F1c2Ugb2YgdGhlIGV4Y2x1c2lvbiBjb25zdHJhaW50LgorVVBEQVRFIHVzZXJzIFNFVCBlbWFp bCA9ICd5b3UrMkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgdGhl IGVtYWlsIGNvbHVtbiBidXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZhbGxz IHdpdGhpbiB0aGUgY29uc3RyYWludC4KKy0tIEFnYWluLCBzaG91bGQgZmFpbCBjb25zdHJhaW50 IGFuZCBmYWlsIHRvIGJlIGEgSE9UIHVwZGF0ZS4KK1VQREFURSB1c2VycyBTRVQgZW1haWwgPSAn dGFrZW5AZG9tYWluLmNvbScgV0hFUkUgbmFtZSA9ICd5b3UnOworU0VMRUNUIHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAx IG5vIG5ldyBIT1QgdXBkYXRlcworCitEUk9QIFRBQkxFIHVzZXJzOworCistLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLQorLS0gQW5vdGhlciB0ZXN0IG9mIGNvbnN0cmFpbnRzIHNwb2lsaW5nIEhPVCB1cGRh dGVzLCB0aGlzIHRpbWUgd2l0aCBhIHJhbmdlLgorQ1JFQVRFIFRBQkxFIGV2ZW50cyAoCisgICAg aWQgc2VyaWFsIHByaW1hcnkga2V5LAorICAgIG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAor ICAgIGV2ZW50X3RpbWUgdHN0enJhbmdlLAorICAgIGNvbnN0cmFpbnQgbm9fc2NyZWVuaW5nX3Rp bWVfb3ZlcmxhcCBleGNsdWRlIHVzaW5nIGdpc3QgKAorICAgICAgICBldmVudF90aW1lIFdJVEgg JiYKKyAgICApCispOworCistLSBBZGQgdHdvIG5vbi1vdmVybGFwcGluZyBldmVudHMuCitJTlNF UlQgSU5UTyBldmVudHMgKGlkLCBldmVudF90aW1lLCBuYW1lKQorVkFMVUVTCisgICAgKDEsICdb IjIwMjMtMDEtMDEgMTk6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMDo0NTowMCJdJywgJ2V2ZW50MScp LAorICAgICgyLCAnWyIyMDIzLTAxLTAxIDIxOjAwOjAwIiwgIjIwMjMtMDEtMDEgMjE6NDU6MDAi XScsICdldmVudDInKTsKKworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0byBvdmVybGFwIHdp dGggdGhlIHNlY29uZCwgc2hvdWxkIGZhaWwgdGhlIGNvbnN0cmFpbnQgYW5kIG5vdCBiZSBIT1Qu CitVUERBVEUgZXZlbnRzIFNFVCBldmVudF90aW1lID0gJ1siMjAyMy0wMS0wMSAyMDowMDowMCIs ICIyMDIzLTAxLTAxIDIxOjQ1OjAwIl0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6 IDAgbm8gbmV3IEhPVCB1cGRhdGVzCisKKy0tIFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQgdG8gbm90 IG92ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLCBhZ2FpbiBub3QgSE9UIGR1ZSB0byB0aGUgY29uc3Ry YWludC4KK1VQREFURSBldmVudHMgU0VUIGV2ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAxIDIyOjAw OjAwIiwgIjIwMjMtMDEtMDEgMjI6NDU6MDAiXScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4 cGVjdDogMCBubyBuZXcgSE9UIHVwZGF0ZXMKKworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0 byBub3Qgb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIHRoaXMgdGltZSB3ZSdyZSBIT1QgYmVjYXVz ZSB3ZSBkb24ndCBvdmVybGFwIHdpdGggdGhlIGNvbnN0cmFpbnQuCitVUERBVEUgZXZlbnRzIFNF VCBuYW1lID0gJ25ldyBuYW1lIGhlcmUnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6 IDEgb25lIG5ldyBIT1QgdXBkYXRlCisKK0RST1AgVEFCTEUgZXZlbnRzOworCistLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLQorLS0gQSB0ZXN0IHRvIGVuc3VyZSB0aGF0IHN1bW1hcml6aW5nIGluZGV4ZXMg YXJlIG5vdCB1cGRhdGVkIHdoZW4gdGhleSBkb24ndAorLS0gY2hhbmdlLCBidXQgYXJlIHVwZGF0 ZWQgd2hlbiB0aGV5IGRvIHdoaWxlIG5vdCBwcmVmZW50IEhPVCB1cGRhdGVzLgorQ1JFQVRFIFRB QkxFIGV4IChhdHQxIEpTT05CLCBhdHQyIHRleHQpIFdJVEggKGZpbGxmYWN0b3IgPSA2MCk7CitD UkVBVEUgSU5ERVggZXhwcmVzc2lvbiBPTiBleCBVU0lORyBidHJlZSgoYXR0MS0+J2RhdGEnKSk7 CitDUkVBVEUgSU5ERVggc3VtbWFyaXppbmcgT04gZXggVVNJTkcgQlJJTihhdHQyKTsKK0lOU0VS VCBJTlRPIGV4IFZBTFVFUyAoJ3siZGF0YSI6IFtdfScsICdub3RoaW5nIHNwZWNpYWwnKTsKKwor LS0gVXBkYXRlIHRoZSB1bmluZGV4ZWQgdmFsdWUgb2YgYXR0MSwgdGhpcyBzaG91bGQgYmUgYSBI T1QgdXBkYXRlIGFuZCBub3QKKy0tIHVwZGF0ZSB0aGUgc3VtbWFyaXppbmcgaW5kZXguCitVUERB VEUgZXggU0VUIGF0dDEgPSBhdHQxIHx8ICd7InN0YXR1cyI6ICJjaGVja21hdGUifSc7CitTRUxF Q1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAt LSBleHBlY3Q6IDEgb25lIG5ldyBIT1QgdXBkYXRlCisKKy0tIFVwZGF0ZSB0aGUgaW5kZXhlZCB2 YWx1ZSBvZiBhdHQyLCBhIHN1bW1hcml6ZWQgdmFsdWUsIHRoaXMgaXMgYSBzdW1tYXJpemVkCist LSBvbmx5IHVwZGF0ZSBhbmQgc2hvdWxkIHVzZSB0aGUgSE9UIHBhdGggd2hpbGUgc3RpbGwgdHJp Z2dlcmluZyBhbiB1cGRhdGUgdG8KKy0tIHRoZSBzdW1tYXJpemluZyBCUklOIGluZGV4LgorVVBE QVRFIGV4IFNFVCBhdHQyID0gJ3NwZWNpYWwgaW5kZWVkJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMiBvbmUg bmV3IEhPVCB1cGRhdGUKKworLS0gVXBkYXRlIHRvIGF0dDEgZG9lc24ndCBjaGFuZ2UgdGhlIGlu ZGV4ZWQgdmFsdWUgd2hpbGUgdGhlIHVwZGF0ZSB0byBhdHQyIGRvZXMsCistLSB0aGlzIGFnYWlu IGlzIGEgc3VtbWFyaXplZCBvbmx5IHVwZGF0ZSBhbmQgc2hvdWxkIHVzZSB0aGUgSE9UIHBhdGgg YXMgd2VsbCBhcworLS0gdHJpZ2dlciBhbiB1cGRhdGUgdG8gdGhlIEJSSU4gaW5kZXguCitVUERB VEUgZXggU0VUIGF0dDEgPSBhdHQxIHx8ICd7InN0YXR1cyI6ICJjaGVja21hdGUhIn0nLCBhdHQy ID0gJ3NwZWNpYWwsIHNvIHNwZWNpYWwnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAzIG9uZSBuZXcgSE9UIHVw ZGF0ZQorCistLSBUaGlzIHVwZGF0ZXMgYm90aCBpbmRleGVzLCB0aGUgZXhwcmVzc2lvbiBpbmRl eCBvbiBhdHQxIGFuZCB0aGUgc3VtbWFyaXppbmcKKy0tIGluZGV4IG9uIGF0dDIuICBUaGlzIHNo b3VsZCBub3QgYmUgYSBIT1QgdXBkYXRlIGJlY2F1c2UgdGhlcmUgYXJlIG1vZGlmaWVkCistLSBp bmRleGVzIGFuZCBvbmx5IHNvbWUgYXJlIHN1bW1hcml6ZWQsIG5vdCBhbGwuICBUaGlzIHNob3Vs ZCBmb3JjZSBhbGwKKy0tIGluZGV4ZXMgdG8gYmUgdXBkYXRlZC4KK1VQREFURSBleCBTRVQgYXR0 MSA9IGF0dDEgfHwgJ3siZGF0YSI6IFsxLDIsM119JywgYXR0MiA9ICdkbyB5b3Ugd2FudCB0byBw bGF5IGEgZ2FtZT8nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAzIGJvdGggaW5kZXhlcyB1cGRhdGVkCisKK0RS T1AgVEFCTEUgZXg7CisKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBUaGlzIHRlc3QgaXMgZm9y IGEgdGFibGUgd2l0aCBhIGN1c3RvbSB0eXBlIGFuZCBhIGN1c3RvbSBvcGVyYXRvcnMgb24KKy0t IHRoZSBCVFJFRSBpbmRleC4gIFRoZSBxdWVzdGlvbiBpcywgd2hlbiBjb21wYXJpbmcgdmFsdWVz IGZvciBlcXVhbGl0eQorLS0gdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBjaGFuZ2VzIG9uIHRo ZSBpbmRleCBvciBub3QuLi4gc2hvdWxkbid0IHdlCistLSBiZSB1c2luZyB0aGUgY3VzdG9tIG9w ZXJhdG9ycz8KKworLS0gQ3JlYXRlIGEgdHlwZQorQ1JFQVRFIFRZUEUgbXlfY3VzdG9tX3R5cGUg QVMgKHZhbCBpbnQpOworCistLSBDb21wYXJpc29uIGZ1bmN0aW9ucyAocmV0dXJucyBib29sZWFu KQorQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9sdChhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1 c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFs IDwgYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CisK K0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fbGUoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0 b21fdHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA8 PSBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKKwor Q1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9lcShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3Rv bV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsID0g Yi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NS RUFURSBGVU5DVElPTiBteV9jdXN0b21fZ2UoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21f dHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA+PSBi LnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JF QVRFIEZVTkNUSU9OIG15X2N1c3RvbV9ndChhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90 eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsID4gYi52 YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFU RSBGVU5DVElPTiBteV9jdXN0b21fbmUoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlw ZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCAhPSBiLnZh bDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKKworLS0gQ29t cGFyaXNvbiBmdW5jdGlvbiAocmV0dXJucyAtMSwgMCwgMSkKK0NSRUFURSBGVU5DVElPTiBteV9j dXN0b21fY21wKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgaW50 IEFTICQkCitCRUdJTgorICAgIElGIGEudmFsIDwgYi52YWwgVEhFTgorICAgICAgICBSRVRVUk4g LTE7CisgICAgRUxTSUYgYS52YWwgPiBiLnZhbCBUSEVOCisgICAgICAgIFJFVFVSTiAxOworICAg IEVMU0UKKyAgICAgICAgUkVUVVJOIDA7CisgICAgRU5EIElGOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworCistLSBDcmVhdGUgdGhlIG9wZXJhdG9ycworQ1JF QVRFIE9QRVJBVE9SIDwgKAorICAgIExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBSSUdI VEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVSRSA9IG15X2N1c3RvbV9sdCwKKyAg ICBDT01NVVRBVE9SID0gPiwKKyAgICBORUdBVE9SID0gPj0KKyk7CisKK0NSRUFURSBPUEVSQVRP UiA8PSAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlf Y3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2xlLAorICAgIENPTU1VVEFU T1IgPSA+PSwKKyAgICBORUdBVE9SID0gPgorKTsKKworQ1JFQVRFIE9QRVJBVE9SID0gKAorICAg IExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFBST0NFRFVSRSA9IG15X2N1c3RvbV9lcSwKKyAgICBDT01NVVRBVE9SID0gPSwKKyAg ICBORUdBVE9SID0gPD4KKyk7CisKK0NSRUFURSBPUEVSQVRPUiA+PSAoCisgICAgTEVGVEFSRyA9 IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJP Q0VEVVJFID0gbXlfY3VzdG9tX2dlLAorICAgIENPTU1VVEFUT1IgPSA8PSwKKyAgICBORUdBVE9S ID0gPAorKTsKKworQ1JFQVRFIE9QRVJBVE9SID4gKAorICAgIExFRlRBUkcgPSBteV9jdXN0b21f dHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVSRSA9IG15 X2N1c3RvbV9ndCwKKyAgICBDT01NVVRBVE9SID0gPCwKKyAgICBORUdBVE9SID0gPD0KKyk7CisK K0NSRUFURSBPUEVSQVRPUiA8PiAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAg IFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX25l LAorICAgIENPTU1VVEFUT1IgPSA8PiwKKyAgICBORUdBVE9SID0gPQorKTsKKworLS0gQ3JlYXRl IHRoZSBvcGVyYXRvciBjbGFzcyAoaW5jbHVkaW5nIHRoZSBzdXBwb3J0IGZ1bmN0aW9uKQorQ1JF QVRFIE9QRVJBVE9SIENMQVNTIG15X2N1c3RvbV9vcHMKKyAgICBERUZBVUxUIEZPUiBUWVBFIG15 X2N1c3RvbV90eXBlIFVTSU5HIGJ0cmVlIEFTCisgICAgT1BFUkFUT1IgMSA8LAorICAgIE9QRVJB VE9SIDIgPD0sCisgICAgT1BFUkFUT1IgMyA9LAorICAgIE9QRVJBVE9SIDQgPj0sCisgICAgT1BF UkFUT1IgNSA+LAorICAgIEZVTkNUSU9OIDEgbXlfY3VzdG9tX2NtcChteV9jdXN0b21fdHlwZSwg bXlfY3VzdG9tX3R5cGUpOworCistLSBDcmVhdGUgdGhlIHRhYmxlCitDUkVBVEUgVEFCTEUgbXlf dGFibGUgKAorICAgIGlkIGludCwKKyAgICBjdXN0b21fdmFsIG15X2N1c3RvbV90eXBlCispOwor CistLSBJbnNlcnQgc29tZSBkYXRhCitJTlNFUlQgSU5UTyBteV90YWJsZSAoaWQsIGN1c3RvbV92 YWwpIFZBTFVFUworKDEsIFJPVygzKTo6bXlfY3VzdG9tX3R5cGUpLAorKDIsIFJPVygxKTo6bXlf Y3VzdG9tX3R5cGUpLAorKDMsIFJPVyg0KTo6bXlfY3VzdG9tX3R5cGUpLAorKDQsIFJPVygyKTo6 bXlfY3VzdG9tX3R5cGUpOworCistLSBDcmVhdGUgYSBmdW5jdGlvbiB0byB1c2Ugd2hlbiBpbmRl eGluZworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWJzX3ZhbCh2YWwgbXlfY3VzdG9tX3R5 cGUpIFJFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBSRVRVUk4gYWJzKHZhbC52YWwpOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworCistLSBDcmVhdGUgdGhl IGluZGV4CitDUkVBVEUgSU5ERVggaWR4X2N1c3RvbV92YWxfYWJzIE9OIG15X3RhYmxlIChhYnNf dmFsKGN1c3RvbV92YWwpKTsKKworLS0gVXBkYXRlIDEKK1VQREFURSBteV90YWJsZSBTRVQgY3Vz dG9tX3ZhbCA9IFJPVyg1KTo6bXlfY3VzdG9tX3R5cGUgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2NsYXNzKTsK KworLS0gVXBkYXRlIDIKK1VQREFURSBteV90YWJsZSBTRVQgY3VzdG9tX3ZhbCA9IFJPVygwKTo6 bXlfY3VzdG9tX3R5cGUgV0hFUkUgY3VzdG9tX3ZhbCA8IFJPVygzKTo6bXlfY3VzdG9tX3R5cGU7 CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6 cmVnY2xhc3MpOworCistLSBVcGRhdGUgMworVVBEQVRFIG15X3RhYmxlIFNFVCBjdXN0b21fdmFs ID0gUk9XKDYpOjpteV9jdXN0b21fdHlwZSBXSEVSRSBpZCA9IDM7CitTRUxFQ1QgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3MpOworCistLSBV cGRhdGUgNAorVVBEQVRFIG15X3RhYmxlIFNFVCBpZCA9IDUgV0hFUkUgaWQgPSAxOworU0VMRUNU IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2NsYXNz KTsKKworLS0gUXVlcnkgdXNpbmcgdGhlIGluZGV4CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAqIEZST00gbXlfdGFibGUgV0hFUkUgYWJzX3ZhbChjdXN0b21fdmFsKSA9IDY7CitTRUxFQ1Qg KiBGUk9NIG15X3RhYmxlIFdIRVJFIGFic192YWwoY3VzdG9tX3ZhbCkgPSA2OworCistLSBDbGVh biB1cAorRFJPUCBUQUJMRSBteV90YWJsZSBDQVNDQURFOworRFJPUCBPUEVSQVRPUiBDTEFTUyBt eV9jdXN0b21fb3BzIFVTSU5HIGJ0cmVlIENBU0NBREU7CitEUk9QIE9QRVJBVE9SIDwgKG15X2N1 c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIE9QRVJBVE9SIDw9IChteV9jdXN0b21f dHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA9IChteV9jdXN0b21fdHlwZSwg bXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA+PSAobXlfY3VzdG9tX3R5cGUsIG15X2N1 c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPiAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90 eXBlKTsKK0RST1AgT1BFUkFUT1IgPD4gKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7 CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9sdChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5 cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fbGUobXlfY3VzdG9tX3R5cGUsIG15X2N1c3Rv bV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2VxKG15X2N1c3RvbV90eXBlLCBteV9j dXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9nZShteV9jdXN0b21fdHlwZSwg bXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fZ3QobXlfY3VzdG9tX3R5 cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX25lKG15X2N1c3Rv bV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9jbXAobXlf Y3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gYWJzX3ZhbChteV9j dXN0b21fdHlwZSk7CitEUk9QIFRZUEUgbXlfY3VzdG9tX3R5cGUgQ0FTQ0FERTsKLS0gCjIuNDIu MAoK --_004_EA519A89282D453588C6C79588FF1DA8amazoncom_--