From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0852A1A1E10 for ; Mon, 17 Oct 2016 02:06:03 -0700 (PDT) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga105.fm.intel.com with ESMTP; 17 Oct 2016 02:06:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,357,1473145200"; d="scan'208";a="890713109" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga003.jf.intel.com with ESMTP; 17 Oct 2016 02:06:02 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 17 Oct 2016 02:05:42 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 17 Oct 2016 02:05:42 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.206]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.96]) with mapi id 14.03.0248.002; Mon, 17 Oct 2016 17:04:49 +0800 From: "Fu, Siyuan" To: "Zhang, Lubo" , "edk2-devel@lists.01.org" CC: "Ye, Ting" , "Wu, Jiaxin" Thread-Topic: [patch] NetworkPkg: Add dns support for pxe boot based on IPv6. Thread-Index: AQHSJeycZVHXPihSj0+k2FKuTDw4paCsXyNg Date: Mon, 17 Oct 2016 09:04:48 +0000 Message-ID: References: <1476430089-19556-1-git-send-email-lubo.zhang@intel.com> In-Reply-To: <1476430089-19556-1-git-send-email-lubo.zhang@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_IC x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMjg1NmNlOGItOTY0ZC00OTYzLTllODEtYzEwNDczNmIyZDA1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6ImwyM3lYdVdURFN2XC9BQ2FvNDIzekFVWXlpVlVnOVkxV0M3a3JxNWl5UjBFPSJ9 x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [patch] NetworkPkg: Add dns support for pxe boot based on IPv6. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Oct 2016 09:06:03 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IEZ1IFNpeXVhbiA8c2l5dWFuLmZ1QGludGVsLmNvbT4NCg0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFpoYW5nLCBMdWJvDQo+IFNlbnQ6IEZyaWRh eSwgT2N0b2JlciAxNCwgMjAxNiAzOjI4IFBNDQo+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9y Zw0KPiBDYzogWWUsIFRpbmcgPHRpbmcueWVAaW50ZWwuY29tPjsgRnUsIFNpeXVhbiA8c2l5dWFu LmZ1QGludGVsLmNvbT47IFd1LA0KPiBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+DQo+IFN1 YmplY3Q6IFtwYXRjaF0gTmV0d29ya1BrZzogQWRkIGRucyBzdXBwb3J0IGZvciBweGUgYm9vdCBi YXNlZCBvbiBJUHY2Lg0KPiANCj4gVGhlIEJvb3RGaWxlVVJMIG9wdGlvbiAoNTkpIGluIGRoY3B2 NiBpcyB1c2VkIHRvIGRlbGl2ZXINCj4gdGhlIG5leHQgc2VydmVyIGFkZHJlc3Mgd2l0aCBib290 ZmlsZSBuYW1lLCBhcyBhbiBleGFtcGxlDQo+ICJ0ZnRwOi8vW0ZFREM6QkE5ODo3NjU0OjMyMTA6 RkVEQzpCQTk4Ojc2NTQ6MzIxMF0vQk9PVEZJTEVfTkFNRTsNCj4gbW9kZT1vY3RldCIsIGl0IGNh biBhbHNvIGJlIOKAnHRmdHA6Ly9kb21haW5fbmFtZS9CT09URklMRV9OQU1FOw0KPiBtb2RlPW9j dGV04oCdLCB0aGlzIHBhdGNoIGlzIHRvIHN1cHBvcnQgdGhpcyBjYXNlLg0KPiANCj4gQ29udHJp YnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMA0KPiBTaWdu ZWQtb2ZmLWJ5OiBaaGFuZyBMdWJvIDxsdWJvLnpoYW5nQGludGVsLmNvbT4NCj4gQ2M6IFllIFRp bmcgPHRpbmcueWVAaW50ZWwuY29tPg0KPiBDYzogRnUgU2l5dWFuIDxzaXl1YW4uZnVAaW50ZWwu Y29tPg0KPiBDYzogV3UgSmlheGluIDxqaWF4aW4ud3VAaW50ZWwuY29tPg0KPiAtLS0NCj4gIE5l dHdvcmtQa2cvVWVmaVB4ZUJjRHhlL1B4ZUJjQm9vdC5jICAgICAgfCAgMTggKystDQo+ICBOZXR3 b3JrUGtnL1VlZmlQeGVCY0R4ZS9QeGVCY0RoY3A2LmMgICAgIHwgMjY5DQo+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0NCj4gIE5ldHdvcmtQa2cvVWVmaVB4ZUJjRHhlL1B4ZUJjRGhj cDYuaCAgICAgfCAgIDUgKy0NCj4gIE5ldHdvcmtQa2cvVWVmaVB4ZUJjRHhlL1B4ZUJjSW1wbC5o ICAgICAgfCAgIDMgKw0KPiAgTmV0d29ya1BrZy9VZWZpUHhlQmNEeGUvVWVmaVB4ZUJjRHhlLmlu ZiB8ICAgNCArLQ0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMzggZGVs ZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9VZWZpUHhlQmNEeGUvUHhl QmNCb290LmMNCj4gYi9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZS9QeGVCY0Jvb3QuYw0KPiBpbmRl eCA4ZWZmMTNjLi5mYzUwYTgyIDEwMDY0NA0KPiAtLS0gYS9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4 ZS9QeGVCY0Jvb3QuYw0KPiArKysgYi9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZS9QeGVCY0Jvb3Qu Yw0KPiBAQCAtNjE5LDMxICs2MTksMzMgQEAgUHhlQmNEaGNwNkJvb3RJbmZvICgNCj4gICAgfQ0K PiANCj4gICAgQVNTRVJUIChDYWNoZTYtPk9wdExpc3RbUFhFQkNfREhDUDZfSURYX0JPT1RfRklM RV9VUkxdICE9IE5VTEwpOw0KPiANCj4gICAgLy8NCj4gKyAgLy8gU2V0IHRoZSBzdGF0aW9uIGFk ZHJlc3MgdG8gSVAgbGF5ZXIuDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IFB4ZUJjU2V0SXA2QWRk cmVzcyAoUHJpdmF0ZSk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKw0KPiArICAvLw0KPiAgICAvLyBQYXJzZSAo bSl0ZnRwIHNlcnZlciBpcCBhZGRyZXNzIGFuZCBib290ZmlsZSBuYW1lLg0KPiAgICAvLw0KPiAg ICBTdGF0dXMgPSBQeGVCY0V4dHJhY3RCb290RmlsZVVybCAoDQo+ICsgICAgICAgICAgICAgUHJp dmF0ZSwNCj4gICAgICAgICAgICAgICAmUHJpdmF0ZS0+Qm9vdEZpbGVOYW1lLA0KPiAgICAgICAg ICAgICAgICZQcml2YXRlLT5TZXJ2ZXJJcC52NiwNCj4gICAgICAgICAgICAgICAoQ0hBUjggKikg KENhY2hlNi0+T3B0TGlzdFtQWEVCQ19ESENQNl9JRFhfQk9PVF9GSUxFX1VSTF0tDQo+ID5EYXRh KSwNCj4gICAgICAgICAgICAgICBOVE9IUyAoQ2FjaGU2LT5PcHRMaXN0W1BYRUJDX0RIQ1A2X0lE WF9CT09UX0ZJTEVfVVJMXS0+T3BMZW4pDQo+ICAgICAgICAgICAgICAgKTsNCj4gICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiAgICAgIHJldHVybiBTdGF0dXM7DQo+ICAgIH0NCj4gDQo+ ICAgIC8vDQo+IC0gIC8vIFNldCB0aGUgc3RhdGlvbiBhZGRyZXNzIHRvIElQIGxheWVyLg0KPiAt ICAvLw0KPiAtICBTdGF0dXMgPSBQeGVCY1NldElwNkFkZHJlc3MgKFByaXZhdGUpOw0KPiAtICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IC0gICAgcmV0dXJuIFN0YXR1czsNCj4gLSAgfQ0K PiAtDQo+IC0gIC8vDQo+ICAgIC8vIFBhcnNlIHRoZSB2YWx1ZSBvZiBib290IGZpbGUgc2l6ZS4N Cj4gICAgLy8NCj4gICAgaWYgKENhY2hlNi0+T3B0TGlzdFtQWEVCQ19ESENQNl9JRFhfQk9PVF9G SUxFX1BBUkFNXSAhPSBOVUxMKSB7DQo+ICAgICAgLy8NCj4gICAgICAvLyBQYXJzZSBpdCBvdXQg aWYgaGF2ZSB0aGUgYm9vdCBmaWxlIHBhcmFtZXRlciBvcHRpb24uDQo+IGRpZmYgLS1naXQgYS9O ZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZS9QeGVCY0RoY3A2LmMNCj4gYi9OZXR3b3JrUGtnL1VlZmlQ eGVCY0R4ZS9QeGVCY0RoY3A2LmMNCj4gaW5kZXggNDFkM2QzMC4uNDUzNzdlMyAxMDA2NDQNCj4g LS0tIGEvTmV0d29ya1BrZy9VZWZpUHhlQmNEeGUvUHhlQmNEaGNwNi5jDQo+ICsrKyBiL05ldHdv cmtQa2cvVWVmaVB4ZUJjRHhlL1B4ZUJjRGhjcDYuYw0KPiBAQCAtOTEsMTQgKzkxLDE1IEBAIFB4 ZUJjQnVpbGREaGNwNk9wdGlvbnMgKA0KPiANCj4gICAgLy8NCj4gICAgLy8gQXBwZW5kIGNsaWVu dCBvcHRpb24gcmVxdWVzdCBvcHRpb24NCj4gICAgLy8NCj4gICAgT3B0TGlzdFtJbmRleF0tPk9w Q29kZSAgICAgPSBIVE9OUyAoREhDUDZfT1BUX09STyk7DQo+IC0gIE9wdExpc3RbSW5kZXhdLT5P cExlbiAgICAgID0gSFRPTlMgKDQpOw0KPiArICBPcHRMaXN0W0luZGV4XS0+T3BMZW4gICAgICA9 IEhUT05TICg2KTsNCj4gICAgT3B0RW50Lk9ybyAgICAgICAgICAgICAgICAgPSAoUFhFQkNfREhD UDZfT1BUSU9OX09STyAqKSBPcHRMaXN0W0luZGV4XS0NCj4gPkRhdGE7DQo+ICAgIE9wdEVudC5P cm8tPk9wQ29kZVswXSAgICAgID0gSFRPTlMoREhDUDZfT1BUX0JPT1RfRklMRV9VUkwpOw0KPiAg ICBPcHRFbnQuT3JvLT5PcENvZGVbMV0gICAgICA9IEhUT05TKERIQ1A2X09QVF9CT09UX0ZJTEVf UEFSQU0pOw0KPiArICBPcHRFbnQuT3JvLT5PcENvZGVbMl0gICAgICA9IEhUT05TKERIQ1A2X09Q VF9ETlNfU0VSVkVSUyk7DQo+ICAgIEluZGV4Kys7DQo+ICAgIE9wdExpc3RbSW5kZXhdICAgICAg ICAgICAgID0gR0VUX05FWFRfREhDUDZfT1BUSU9OIChPcHRMaXN0W0luZGV4IC0gMV0pOw0KPiAN Cj4gICAgLy8NCj4gICAgLy8gQXBwZW5kIGNsaWVudCBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2Ug b3B0aW9uDQo+IEBAIC0yMTQsMTQgKzIxNSwxNzcgQEAgUHhlQmNGcmVlQm9vdEZpbGVPcHRpb24g KA0KPiAgICAgIFJlbW92ZUVudHJ5TGlzdCAoRW50cnkpOw0KPiAgICAgIEZyZWVQb29sIChOb2Rl KTsNCj4gICAgfQ0KPiAgfQ0KPiANCj4gKy8qKg0KPiArICBSZXRyaWV2ZSB0aGUgYm9vdCBzZXJ2 ZXIgYWRkcmVzcyB1c2luZyB0aGUgRUZJX0ROUzZfUFJPVE9DT0wuDQo+ICsNCj4gKyAgQHBhcmFt W2luXSAgUHJpdmF0ZSAgICAgICAgICAgICBQb2ludGVyIHRvIFB4ZUJjIHByaXZhdGUgZGF0YS4N Cj4gKyAgQHBhcmFtW2luXSAgSG9zdE5hbWUgICAgICAgICAgICBQb2ludGVyIHRvIGJ1ZmZlciBj b250YWluaW5nIGhvc3RuYW1lLg0KPiArICBAcGFyYW1bb3V0XSBJcEFkZHJlc3MgICAgICAgICAg IE9uIG91dHB1dCwgcG9pbnRlciB0byBidWZmZXIgY29udGFpbmluZw0KPiBJUHY2IGFkZHJlc3Mu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBPcGVyYXRpb24gc3Vj Y2VlZGVkLg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgIEZhaWxlZCB0byBh bGxvY2F0ZSBuZWVkZWQgcmVzb3VyY2VzLg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1Ig ICAgICAgIEFuIHVuZXhwZWN0ZWQgbmV0d29yayBlcnJvciBvY2N1cnJlZC4NCj4gKyAgQHJldHZh bCBPdGhlcnMgICAgICAgICAgICAgICAgICBPdGhlciBlcnJvcnMgYXMgaW5kaWNhdGVkLg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK1B4ZUJjRG5zNiAoDQo+ICsgIElOIFBYRUJDX1BS SVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ICsgIElOICAgICBDSEFSMTYgICAgICAg ICAgICAgICAgICAgKkhvc3ROYW1lLA0KPiArICAgICBPVVQgRUZJX0lQdjZfQUREUkVTUyAgICAg ICAgICpJcEFkZHJlc3MNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX0ROUzZfUFJPVE9DT0wgICAgICAgICAgICAgICAq RG5zNjsNCj4gKyAgRUZJX0ROUzZfQ09ORklHX0RBVEEgICAgICAgICAgICBEbnM2Q29uZmlnRGF0 YTsNCj4gKyAgRUZJX0ROUzZfQ09NUExFVElPTl9UT0tFTiAgICAgICBUb2tlbjsNCj4gKyAgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBEbnM2SGFuZGxlOw0KPiArICBFRklfSVB2Nl9B RERSRVNTICAgICAgICAgICAgICAgICpEbnNTZXJ2ZXJMaXN0Ow0KPiArICBCT09MRUFOICAgICAg ICAgICAgICAgICAgICAgICAgIElzRG9uZTsNCj4gKw0KPiArICBEbnM2ICAgICAgICAgICAgICAg ID0gTlVMTDsNCj4gKyAgRG5zNkhhbmRsZSAgICAgICAgICA9IE5VTEw7DQo+ICsgIERuc1NlcnZl ckxpc3QgICAgICAgPSBQcml2YXRlLT5EbnNTZXJ2ZXI7DQo+ICsgIFplcm9NZW0gKCZUb2tlbiwg c2l6ZW9mIChFRklfRE5TNl9DT01QTEVUSU9OX1RPS0VOKSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gQ3JlYXRlIGEgRE5TdjYgY2hpbGQgaW5zdGFuY2UgYW5kIGdldCB0aGUgcHJvdG9jb2wuDQo+ ICsgIC8vDQo+ICsgIFN0YXR1cyA9IE5ldExpYkNyZWF0ZVNlcnZpY2VDaGlsZCAoDQo+ICsgICAg ICAgICAgICAgUHJpdmF0ZS0+Q29udHJvbGxlciwNCj4gKyAgICAgICAgICAgICBQcml2YXRlLT5J bWFnZSwNCj4gKyAgICAgICAgICAgICAmZ0VmaURuczZTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3Vp ZCwNCj4gKyAgICAgICAgICAgICAmRG5zNkhhbmRsZQ0KPiArICAgICAgICAgICAgICk7DQo+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBnb3RvIEV4aXQ7DQo+ICsgIH0NCj4g Kw0KPiArICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ICsgICAgICAgICAgICAgICAg ICBEbnM2SGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgJmdFZmlEbnM2UHJvdG9jb2xHdWlk LA0KPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZEbnM2LA0KPiArICAgICAgICAgICAg ICAgICAgUHJpdmF0ZS0+SW1hZ2UsDQo+ICsgICAgICAgICAgICAgICAgICBQcml2YXRlLT5Db250 cm9sbGVyLA0KPiArICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfQllfRFJJVkVS DQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ICsgICAgZ290byBFeGl0Ow0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ29uZmln dXJlIEROUzYgaW5zdGFuY2UgZm9yIHRoZSBETlMgc2VydmVyIGFkZHJlc3MgYW5kIHByb3RvY29s Lg0KPiArICAvLw0KPiArICBaZXJvTWVtICgmRG5zNkNvbmZpZ0RhdGEsIHNpemVvZiAoRUZJX0RO UzZfQ09ORklHX0RBVEEpKTsNCj4gKyAgRG5zNkNvbmZpZ0RhdGEuRG5zU2VydmVyQ291bnQgPSAx Ow0KPiArICBEbnM2Q29uZmlnRGF0YS5EbnNTZXJ2ZXJMaXN0ICA9IERuc1NlcnZlckxpc3Q7DQo+ ICsgIERuczZDb25maWdEYXRhLkVuYWJsZURuc0NhY2hlID0gVFJVRTsNCj4gKyAgRG5zNkNvbmZp Z0RhdGEuUHJvdG9jb2wgICAgICAgPSBFRklfSVBfUFJPVE9fVURQOw0KPiArICBJUDZfQ09QWV9B RERSRVNTICgmRG5zNkNvbmZpZ0RhdGEuU3RhdGlvbklwLCAmUHJpdmF0ZS0+VG1wU3RhdGlvbklw LnY2KTsNCj4gKyAgU3RhdHVzID0gRG5zNi0+Q29uZmlndXJlICgNCj4gKyAgICAgICAgICAgICAg ICAgICBEbnM2LA0KPiArICAgICAgICAgICAgICAgICAgICZEbnM2Q29uZmlnRGF0YQ0KPiArICAg ICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAg ICBnb3RvIEV4aXQ7DQo+ICsgIH0NCj4gKw0KPiArICBUb2tlbi5TdGF0dXMgPSBFRklfTk9UX1JF QURZOw0KPiArICBJc0RvbmUgICAgICAgPSBGQUxTRTsNCj4gKyAgLy8NCj4gKyAgLy8gQ3JlYXRl IGV2ZW50IHRvIHNldCB0aGUgIElzRG9uZSBmbGFnIHdoZW4gbmFtZSByZXNvbHV0aW9uIGlzDQo+ IGZpbmlzaGVkLg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBnQlMtPkNyZWF0ZUV2ZW50ICgNCj4g KyAgICAgICAgICAgICAgICAgIEVWVF9OT1RJRllfU0lHTkFMLA0KPiArICAgICAgICAgICAgICAg ICAgVFBMX05PVElGWSwNCj4gKyAgICAgICAgICAgICAgICAgIFB4ZUJjQ29tbW9uTm90aWZ5LA0K PiArICAgICAgICAgICAgICAgICAgJklzRG9uZSwNCj4gKyAgICAgICAgICAgICAgICAgICZUb2tl bi5FdmVudA0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiArICAgIGdvdG8gRXhpdDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8v IFN0YXJ0IGFzeW5jaHJvbm91cyBuYW1lIHJlc29sdXRpb24uDQo+ICsgIC8vDQo+ICsgIFN0YXR1 cyA9IERuczYtPkhvc3ROYW1lVG9JcCAoRG5zNiwgSG9zdE5hbWUsICZUb2tlbik7DQo+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBnb3RvIEV4aXQ7DQo+ICsgIH0NCj4gKw0K PiArICB3aGlsZSAoIUlzRG9uZSkgew0KPiArICAgIERuczYtPlBvbGwgKERuczYpOw0KPiArICB9 DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTmFtZSByZXNvbHV0aW9uIGlzIGRvbmUsIGNoZWNrIHJl c3VsdC4NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gVG9rZW4uU3RhdHVzOw0KPiArICBpZiAoIUVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIGlmIChUb2tlbi5Sc3BEYXRhLkgyQURhdGEgPT0g TlVMTCkgew0KPiArICAgICAgU3RhdHVzID0gRUZJX0RFVklDRV9FUlJPUjsNCj4gKyAgICAgIGdv dG8gRXhpdDsNCj4gKyAgICB9DQo+ICsgICAgaWYgKFRva2VuLlJzcERhdGEuSDJBRGF0YS0+SXBD b3VudCA9PSAwIHx8IFRva2VuLlJzcERhdGEuSDJBRGF0YS0NCj4gPklwTGlzdCA9PSBOVUxMKSB7 DQo+ICsgICAgICBTdGF0dXMgPSBFRklfREVWSUNFX0VSUk9SOw0KPiArICAgICAgZ290byBFeGl0 Ow0KPiArICAgIH0NCj4gKyAgICAvLw0KPiArICAgIC8vIFdlIGp1c3QgcmV0dXJuIHRoZSBmaXJz dCBJUHY2IGFkZHJlc3MgZnJvbSBETlMgcHJvdG9jb2wuDQo+ICsgICAgLy8NCj4gKyAgICBJUDZf Q09QWV9BRERSRVNTIChJcEFkZHJlc3MsIFRva2VuLlJzcERhdGEuSDJBRGF0YS0+SXBMaXN0KTsN Cj4gKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gKyAgfQ0KPiArDQo+ICtFeGl0Og0KPiAr ICBGcmVlUG9vbCAoSG9zdE5hbWUpOw0KPiArDQo+ICsgIGlmIChUb2tlbi5FdmVudCAhPSBOVUxM KSB7DQo+ICsgICAgZ0JTLT5DbG9zZUV2ZW50IChUb2tlbi5FdmVudCk7DQo+ICsgIH0NCj4gKyAg aWYgKFRva2VuLlJzcERhdGEuSDJBRGF0YSAhPSBOVUxMKSB7DQo+ICsgICAgaWYgKFRva2VuLlJz cERhdGEuSDJBRGF0YS0+SXBMaXN0ICE9IE5VTEwpIHsNCj4gKyAgICAgIEZyZWVQb29sIChUb2tl bi5Sc3BEYXRhLkgyQURhdGEtPklwTGlzdCk7DQo+ICsgICAgfQ0KPiArICAgIEZyZWVQb29sIChU b2tlbi5Sc3BEYXRhLkgyQURhdGEpOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKERuczYgIT0gTlVM TCkgew0KPiArICAgIERuczYtPkNvbmZpZ3VyZSAoRG5zNiwgTlVMTCk7DQo+ICsNCj4gKyAgICBn QlMtPkNsb3NlUHJvdG9jb2wgKA0KPiArICAgICAgICAgICBEbnM2SGFuZGxlLA0KPiArICAgICAg ICAgICAmZ0VmaURuczZQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgIFByaXZhdGUtPkltYWdl LA0KPiArICAgICAgICAgICBQcml2YXRlLT5Db250cm9sbGVyDQo+ICsgICAgICAgICAgICk7DQo+ ICsgIH0NCj4gKw0KPiArICBpZiAoRG5zNkhhbmRsZSAhPSBOVUxMKSB7DQo+ICsgICAgTmV0TGli RGVzdHJveVNlcnZpY2VDaGlsZCAoDQo+ICsgICAgICBQcml2YXRlLT5Db250cm9sbGVyLA0KPiAr ICAgICAgUHJpdmF0ZS0+SW1hZ2UsDQo+ICsgICAgICAmZ0VmaURuczZTZXJ2aWNlQmluZGluZ1By b3RvY29sR3VpZCwNCj4gKyAgICAgIERuczZIYW5kbGUNCj4gKyAgICAgICk7DQo+ICsgIH0NCj4g Kw0KPiArICBpZiAoRG5zU2VydmVyTGlzdCAhPSBOVUxMKSB7DQo+ICsgICAgRnJlZVBvb2wgKERu c1NlcnZlckxpc3QpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4g DQo+ICAvKioNCj4gICAgUGFyc2UgdGhlIEJvb3QgRmlsZSBVUkwgb3B0aW9uLg0KPiANCj4gKyAg QHBhcmFtW2luXSAgICAgIFByaXZhdGUgICAgICBQb2ludGVyIHRvIFB4ZUJjIHByaXZhdGUgZGF0 YS4NCj4gICAgQHBhcmFtW291dF0gICAgIEZpbGVOYW1lICAgICBUaGUgcG9pbnRlciB0byB0aGUg Ym9vdCBmaWxlIG5hbWUuDQo+ICAgIEBwYXJhbVtpbiwgb3V0XSBTcnZBZGRyICAgICAgVGhlIHBv aW50ZXIgdG8gdGhlIGJvb3Qgc2VydmVyIGFkZHJlc3MuDQo+ICAgIEBwYXJhbVtpbl0gICAgICBC b290RmlsZSAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGJvb3QgZmlsZSBVUkwgb3B0aW9uDQo+IGRh dGEuDQo+ICAgIEBwYXJhbVtpbl0gICAgICBMZW5ndGggICAgICAgVGhlIGxlbmd0aCBvZiB0aGUg Ym9vdCBmaWxlIFVSTCBvcHRpb24NCj4gZGF0YS4NCj4gDQo+IEBAIC0yMzAsMTAgKzM5NCwxMSBA QCBQeGVCY0ZyZWVCb290RmlsZU9wdGlvbiAoDQo+ICAgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAg IFJlYWQgdGhlIGlucHV0IGtleSBmcm9tIHRoZSBrZXlicm9hZCBoYXMgbm90DQo+IGZpbmlzaC4N Cj4gDQo+ICAqKi8NCj4gIEVGSV9TVEFUVVMNCj4gIFB4ZUJjRXh0cmFjdEJvb3RGaWxlVXJsICgN Cj4gKyAgSU4gUFhFQkNfUFJJVkFURV9EQVRBICAgICAgKlByaXZhdGUsDQo+ICAgICAgIE9VVCBV SU5UOCAgICAgICAgICAgICAgICoqRmlsZU5hbWUsDQo+ICAgIElOIE9VVCBFRklfSVB2Nl9BRERS RVNTICAgICpTcnZBZGRyLA0KPiAgICBJTiAgICAgQ0hBUjggICAgICAgICAgICAgICAqQm9vdEZp bGUsDQo+ICAgIElOICAgICBVSU5UMTYgICAgICAgICAgICAgIExlbmd0aA0KPiAgICApDQo+IEBA IC0yNDUsMTIgKzQxMCwxNiBAQCBQeGVCY0V4dHJhY3RCb290RmlsZVVybCAoDQo+ICAgIENIQVI4 ICAgICAgICAgICAgICAgICAgICAgICpUbXBTdHI7DQo+ICAgIENIQVI4ICAgICAgICAgICAgICAg ICAgICAgIFRtcENoYXI7DQo+ICAgIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICpTZXJ2ZXJB ZGRyZXNzT3B0aW9uOw0KPiAgICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAqU2VydmVyQWRk cmVzczsNCj4gICAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgKk1vZGVTdHI7DQo+ICsgIENI QVIxNiAgICAgICAgICAgICAgICAgICAgICpIb3N0TmFtZTsNCj4gKyAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgSXBFeHByZXNzZWRVcmw7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgIExlbjsNCj4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiANCj4g KyAgSXBFeHByZXNzZWRVcmwgPSBUUlVFOw0KPiAgICAvLw0KPiAgICAvLyBUaGUgZm9ybWF0IG9m IHRoZSBCb290IEZpbGUgVVJMIG9wdGlvbiBpczoNCj4gICAgLy8NCj4gICAgLy8gIDAgICAgICAg ICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgIDMNCj4g ICAgLy8gIDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQg NSA2IDcgOCA5IDAgMQ0KPiBAQCAtMjYyLDEyICs0MzEsMTIgQEAgUHhlQmNFeHRyYWN0Qm9vdEZp bGVVcmwgKA0KPiAgICAvLyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiAgICAvLyArLSstKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKw0KPiAgICAvLw0KPiAN Cj4gICAgLy8NCj4gLSAgLy8gQmFzZWQgdXBvbiBSRkMgNTk3MCBhbmQgVUVGSSAyLjMgRXJyYXRh IEQgc3BlY2lmaWNhdGlvbiwgYm9vdGZpbGUtDQo+IHVybCBmb3JtYXQNCj4gLSAgLy8gaXMgdGZ0 cDovL1tTRVJWRVJfQUREUkVTU10vQk9PVEZJTEVfTkFNRQ0KPiArICAvLyBCYXNlZCB1cG9uIFJG QyA1OTcwIGFuZCBVRUZJIDIuNiwgYm9vdGZpbGUtdXJsIGZvcm1hdCBjYW4gYmUNCj4gKyAgLy8g dGZ0cDovL1tTRVJWRVJfQUREUkVTU10vQk9PVEZJTEVfTkFNRSBvcg0KPiB0ZnRwOi8vZG9tYWlu X25hbWUvQk9PVEZJTEVfTkFNRQ0KPiAgICAvLyBBcyBhbiBleGFtcGxlIHdoZXJlIHRoZSBCT09U RklMRV9OQU1FIGlzIHRoZSBFRkkgbG9hZGVyIGFuZA0KPiAgICAvLyBTRVJWRVJfQUREUkVTUyBp cyB0aGUgQVNDSUkgZW5jb2Rpbmcgb2YgYW4gSVBWNiBhZGRyZXNzLg0KPiAgICAvLw0KPiAgICBQ cmVmaXhMZW4gPSAoVUlOVDE2KSBBc2NpaVN0ckxlbiAoUFhFQkNfREhDUDZfQk9PVF9GSUxFX1VS TF9QUkVGSVgpOw0KPiANCj4gQEAgLTI4OSw0NyArNDU4LDgwIEBAIFB4ZUJjRXh0cmFjdEJvb3RG aWxlVXJsICgNCj4gDQo+ICAgIC8vDQo+ICAgIC8vIEdldCB0aGUgcGFydCBvZiBTRVJWRVJfQURE UkVTUyBzdHJpbmcuDQo+ICAgIC8vDQo+ICAgIFNlcnZlckFkZHJlc3NPcHRpb24gPSBUbXBTdHI7 DQo+IC0gIGlmICgqU2VydmVyQWRkcmVzc09wdGlvbiAhPSBQWEVCQ19BRERSX1NUQVJUX0RFTElN SVRFUikgew0KPiAtICAgIEZyZWVQb29sIChUbXBTdHIpOw0KPiAtICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQo+IC0gIH0NCj4gKyAgaWYgKCpTZXJ2ZXJBZGRyZXNzT3B0aW9uID09 IFBYRUJDX0FERFJfU1RBUlRfREVMSU1JVEVSKSB7DQo+ICsgICAgU2VydmVyQWRkcmVzc09wdGlv biArKzsNCj4gKyAgICBTZXJ2ZXJBZGRyZXNzID0gU2VydmVyQWRkcmVzc09wdGlvbjsNCj4gKyAg ICB3aGlsZSAoKlNlcnZlckFkZHJlc3MgIT0gJ1wwJyAmJiAqU2VydmVyQWRkcmVzcyAhPQ0KPiBQ WEVCQ19BRERSX0VORF9ERUxJTUlURVIpIHsNCj4gKyAgICAgIFNlcnZlckFkZHJlc3MrKzsNCj4g KyAgICB9DQo+ICsNCj4gKyAgICBpZiAoKlNlcnZlckFkZHJlc3MgIT0gUFhFQkNfQUREUl9FTkRf REVMSU1JVEVSKSB7DQo+ICsgICAgICBGcmVlUG9vbCAoVG1wU3RyKTsNCj4gKyAgICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgKlNlcnZlckFk ZHJlc3MgPSAnXDAnOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBDb252ZXJ0IHRoZSBzdHJp bmcgb2Ygc2VydmVyIGFkZHJlc3MgdG8gSXB2NiBhZGRyZXNzIGZvcm1hdCBhbmQNCj4gc3RvcmUg aXQuDQo+ICsgICAgLy8NCj4gKyAgICBTdGF0dXMgPSBOZXRMaWJBc2NpaVN0clRvSXA2IChTZXJ2 ZXJBZGRyZXNzT3B0aW9uLCBTcnZBZGRyKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgICBGcmVlUG9vbCAoVG1wU3RyKTsNCj4gKyAgICAgIHJldHVybiBTdGF0dXM7 DQo+ICsgICAgfQ0KPiANCj4gLSAgU2VydmVyQWRkcmVzc09wdGlvbiArKzsNCj4gLSAgU2VydmVy QWRkcmVzcyA9IFNlcnZlckFkZHJlc3NPcHRpb247DQo+IC0gIHdoaWxlICgqU2VydmVyQWRkcmVz cyAhPSAnXDAnICYmICpTZXJ2ZXJBZGRyZXNzICE9DQo+IFBYRUJDX0FERFJfRU5EX0RFTElNSVRF Uikgew0KPiAtICAgIFNlcnZlckFkZHJlc3MrKzsNCj4gLSAgfQ0KPiArICB9IGVsc2Ugew0KPiAr ICAgIElwRXhwcmVzc2VkVXJsID0gRkFMU0U7DQo+ICsgICAgU2VydmVyQWRkcmVzcyA9IFNlcnZl ckFkZHJlc3NPcHRpb247DQo+ICsgICAgd2hpbGUgKCpTZXJ2ZXJBZGRyZXNzICE9ICdcMCcgJiYg KlNlcnZlckFkZHJlc3MgIT0NCj4gUFhFQkNfVEZUUF9VUkxfU0VQQVJBVE9SKSB7DQo+ICsgICAg ICBTZXJ2ZXJBZGRyZXNzKys7DQo+ICsgICAgfQ0KPiANCj4gLSAgaWYgKCpTZXJ2ZXJBZGRyZXNz ICE9IFBYRUJDX0FERFJfRU5EX0RFTElNSVRFUikgew0KPiAtICAgIEZyZWVQb29sIChUbXBTdHIp Ow0KPiAtICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+IC0gIH0NCj4gKyAgICBp ZiAoKlNlcnZlckFkZHJlc3MgIT0gUFhFQkNfVEZUUF9VUkxfU0VQQVJBVE9SKSB7DQo+ICsgICAg ICBGcmVlUG9vbCAoVG1wU3RyKTsNCj4gKyAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ICsgICAgfQ0KPiArICAgICpTZXJ2ZXJBZGRyZXNzID0gJ1wwJzsNCj4gDQo+IC0gICpT ZXJ2ZXJBZGRyZXNzID0gJ1wwJzsNCj4gKyAgICBMZW4gPSBBc2NpaVN0clNpemUgKFNlcnZlckFk ZHJlc3NPcHRpb24pOw0KPiArICAgIEhvc3ROYW1lID0gQWxsb2NhdGVaZXJvUG9vbCAoTGVuICog c2l6ZW9mIChDSEFSMTYpKTsNCj4gKyAgICBpZiAoSG9zdE5hbWUgPT0gTlVMTCkgew0KPiArICAg ICAgRnJlZVBvb2wgKFRtcFN0cik7DQo+ICsgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQo+ICsgICAgfQ0KPiArICAgIEFzY2lpU3RyVG9Vbmljb2RlU3RyUyAoDQo+ICsgICAgICBT ZXJ2ZXJBZGRyZXNzT3B0aW9uLA0KPiArICAgICAgSG9zdE5hbWUsDQo+ICsgICAgICBMZW4NCj4g KyAgICAgICk7DQo+IA0KPiAtICAvLw0KPiAtICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgb2Ygc2Vy dmVyIGFkZHJlc3MgdG8gSXB2NiBhZGRyZXNzIGZvcm1hdCBhbmQNCj4gc3RvcmUgaXQuDQo+IC0g IC8vDQo+IC0gIFN0YXR1cyA9IE5ldExpYkFzY2lpU3RyVG9JcDYgKFNlcnZlckFkZHJlc3NPcHRp b24sIFNydkFkZHIpOw0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IC0gICAgRnJl ZVBvb2wgKFRtcFN0cik7DQo+IC0gICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgICAvLw0KPiArICAg IC8vIFBlcmZvcm0gRE5TIHJlc29sdXRpb24uDQo+ICsgICAgLy8NCj4gKyAgICBTdGF0dXMgPSBQ eGVCY0RuczYgKFByaXZhdGUsSG9zdE5hbWUsIFNydkFkZHIpOw0KPiArICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIEZyZWVQb29sIChUbXBTdHIpOw0KPiArICAgICAgcmV0 dXJuIFN0YXR1czsNCj4gKyAgICB9DQo+ICAgIH0NCj4gDQo+ICAgIC8vDQo+ICAgIC8vIEdldCB0 aGUgcGFydCBvZiBCT09URklMRV9OQU1FIHN0cmluZy4NCj4gICAgLy8NCj4gICAgQm9vdEZpbGVO YW1lUHRyID0gKENIQVI4KikoKFVJTlROKVNlcnZlckFkZHJlc3MgKyAxKTsNCj4gLSAgaWYgKCpC b290RmlsZU5hbWVQdHIgIT0gUFhFQkNfVEZUUF9VUkxfU0VQQVJBVE9SKSB7DQo+IC0gICAgRnJl ZVBvb2wgKFRtcFN0cik7DQo+IC0gICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g KyAgaWYgKElwRXhwcmVzc2VkVXJsKSB7DQo+ICsgICAgaWYgKCpCb290RmlsZU5hbWVQdHIgIT0g UFhFQkNfVEZUUF9VUkxfU0VQQVJBVE9SKSB7DQo+ICsgICAgICBGcmVlUG9vbCAoVG1wU3RyKTsN Cj4gKyAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgfQ0KPiArICAg ICsrQm9vdEZpbGVOYW1lUHRyOw0KPiAgICB9DQo+IA0KPiAtICArK0Jvb3RGaWxlTmFtZVB0cjsN Cj4gICAgQm9vdEZpbGVOYW1lTGVuID0gKFVJTlQxNikoTGVuZ3RoIC0gKFVJTlQxNikgKChVSU5U TilCb290RmlsZU5hbWVQdHIgLQ0KPiAoVUlOVE4pVG1wU3RyKSArIDEpOw0KPiAgICBpZiAoQm9v dEZpbGVOYW1lTGVuICE9IDAgfHwgRmlsZU5hbWUgIT0gTlVMTCkgew0KPiAgICAgIC8vDQo+ICAg ICAgLy8gUmVtb3ZlIHRyYWlsaW5nIG1vZGU9b2N0ZXQgaWYgcHJlc2VudCBhbmQgaWdub3JlLiAg QWxsIG90aGVyIG1vZGVzDQo+IGFyZQ0KPiAgICAgIC8vIGludmFsaWQgZm9yIG5ldGJvb3Q2LCBz byByZWplY3QgdGhlbS4NCj4gQEAgLTQ4MCwxMCArNjgyLDEyIEBAIFB4ZUJjUGFyc2VEaGNwNlBh Y2tldCAoDQo+ICAgICAgICBPcHRpb25zW1BYRUJDX0RIQ1A2X0lEWF9CT09UX0ZJTEVfVVJMXSA9 IE9wdGlvbjsNCj4gICAgICB9IGVsc2UgaWYgKE5UT0hTIChPcHRpb24tPk9wQ29kZSkgPT0gREhD UDZfT1BUX0JPT1RfRklMRV9QQVJBTSkgew0KPiAgICAgICAgT3B0aW9uc1tQWEVCQ19ESENQNl9J RFhfQk9PVF9GSUxFX1BBUkFNXSA9IE9wdGlvbjsNCj4gICAgICB9IGVsc2UgaWYgKE5UT0hTIChP cHRpb24tPk9wQ29kZSkgPT0gREhDUDZfT1BUX1ZFTkRPUl9DTEFTUykgew0KPiAgICAgICAgT3B0 aW9uc1tQWEVCQ19ESENQNl9JRFhfVkVORE9SX0NMQVNTXSA9IE9wdGlvbjsNCj4gKyAgICB9IGVs c2UgaWYgKE5UT0hTIChPcHRpb24tPk9wQ29kZSkgPT0gREhDUDZfT1BUX0ROU19TRVJWRVJTKSB7 DQo+ICsgICAgICBPcHRpb25zW1BYRUJDX0RIQ1A2X0lEWF9ETlNfU0VSVkVSXSA9IE9wdGlvbjsN Cj4gICAgICB9DQo+IA0KPiAgICAgIE9mZnNldCArPSAoTlRPSFMgKE9wdGlvbi0+T3BMZW4pICsg NCk7DQo+ICAgICAgT3B0aW9uICA9IChFRklfREhDUDZfUEFDS0VUX09QVElPTiAqKSAoT2ZmZXIt PkRoY3A2Lk9wdGlvbiArIE9mZnNldCk7DQo+ICAgIH0NCj4gQEAgLTg2MiwxMCArMTA2NiwxMSBA QCBQeGVCY1JldHJ5RGhjcDZCaW5sICgNCj4gICAgICBBU1NFUlQgKE9mZmVyLT5PcHRMaXN0W1BY RUJDX0RIQ1A2X0lEWF9CT09UX0ZJTEVfVVJMXSAhPSBOVUxMKTsNCj4gICAgICAvLw0KPiAgICAg IC8vIFBhcnNlIG91dCB0aGUgbmV4dCBzZXJ2ZXIgYWRkcmVzcyBmcm9tIHRoZSBsYXN0IG9mZmVy LCBhbmQgc3RvcmUNCj4gaXQNCj4gICAgICAvLw0KPiAgICAgIFN0YXR1cyA9IFB4ZUJjRXh0cmFj dEJvb3RGaWxlVXJsICgNCj4gKyAgICAgICAgICAgICAgIFByaXZhdGUsDQo+ICAgICAgICAgICAg ICAgICAmUHJpdmF0ZS0+Qm9vdEZpbGVOYW1lLA0KPiAgICAgICAgICAgICAgICAgJlByaXZhdGUt PlNlcnZlcklwLnY2LA0KPiAgICAgICAgICAgICAgICAgKENIQVI4ICopIChPZmZlci0+T3B0TGlz dFtQWEVCQ19ESENQNl9JRFhfQk9PVF9GSUxFX1VSTF0tDQo+ID5EYXRhKSwNCj4gICAgICAgICAg ICAgICAgIE5UT0hTIChPZmZlci0+T3B0TGlzdFtQWEVCQ19ESENQNl9JRFhfQk9PVF9GSUxFX1VS TF0tDQo+ID5PcExlbikNCj4gICAgICAgICAgICAgICAgICk7DQo+IEBAIC0xMTEzLDEwICsxMzE4 LDE4IEBAIFB4ZUJjSGFuZGxlRGhjcDZPZmZlciAoDQo+ICAgIFNlbGVjdEluZGV4ID0gKFVJTlQz MikgKFByaXZhdGUtPlNlbGVjdEluZGV4IC0gMSk7DQo+ICAgIEFTU0VSVCAoU2VsZWN0SW5kZXgg PCBQWEVCQ19PRkZFUl9NQVhfTlVNKTsNCj4gICAgQ2FjaGU2ICAgICAgPSAmUHJpdmF0ZS0+T2Zm ZXJCdWZmZXJbU2VsZWN0SW5kZXhdLkRoY3A2Ow0KPiAgICBTdGF0dXMgICAgICA9IEVGSV9TVUND RVNTOw0KPiANCj4gKyAgLy8NCj4gKyAgLy8gRmlyc3QgdHJ5IHRvIGNhY2hlIEROUyBzZXJ2ZXIg YWRkcmVzcyBpZiBESENQNiBvZmZlciBwcm92aWRlcy4NCj4gKyAgLy8NCj4gKyAgaWYgKENhY2hl Ni0+T3B0TGlzdFtQWEVCQ19ESENQNl9JRFhfRE5TX1NFUlZFUl0gIT0gTlVMTCkgew0KPiArICAg IFByaXZhdGUtPkRuc1NlcnZlciA9IEFsbG9jYXRlWmVyb1Bvb2wgKE5UT0hTIChDYWNoZTYtDQo+ ID5PcHRMaXN0W1BYRUJDX0RIQ1A2X0lEWF9ETlNfU0VSVkVSXS0+T3BMZW4pKTsNCj4gKyAgICBD b3B5TWVtIChQcml2YXRlLT5EbnNTZXJ2ZXIsIENhY2hlNi0NCj4gPk9wdExpc3RbUFhFQkNfREhD UDZfSURYX0ROU19TRVJWRVJdLT5EYXRhLCBzaXplb2YgKEVGSV9JUHY2X0FERFJFU1MpKTsNCj4g KyAgfQ0KPiArDQo+ICAgIGlmIChDYWNoZTYtPk9mZmVyVHlwZSA9PSBQeGVPZmZlclR5cGVEaGNw QmlubCkgew0KPiAgICAgIC8vDQo+ICAgICAgLy8gRGhjcEJpbmwgb2ZmZXIgaXMgc2VsZWN0ZWQs IHNvIG5lZWQgdHJ5IHRvIHJlcXVlc3QgYm9vdGZpbGVuYW1lIGJ5DQo+IHRoaXMgb2ZmZXIuDQo+ ICAgICAgLy8NCj4gICAgICBpZiAoRUZJX0VSUk9SIChQeGVCY1JldHJ5RGhjcDZCaW5sIChQcml2 YXRlLCBTZWxlY3RJbmRleCkpKSB7DQo+IGRpZmYgLS1naXQgYS9OZXR3b3JrUGtnL1VlZmlQeGVC Y0R4ZS9QeGVCY0RoY3A2LmgNCj4gYi9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZS9QeGVCY0RoY3A2 LmgNCj4gaW5kZXggYTZkNTJmOS4uOTQ5M2IxNiAxMDA2NDQNCj4gLS0tIGEvTmV0d29ya1BrZy9V ZWZpUHhlQmNEeGUvUHhlQmNEaGNwNi5oDQo+ICsrKyBiL05ldHdvcmtQa2cvVWVmaVB4ZUJjRHhl L1B4ZUJjRGhjcDYuaA0KPiBAQCAtMzEsMTEgKzMxLDEyIEBADQo+IA0KPiAgI2RlZmluZSBQWEVC Q19ESENQNl9JRFhfSUFfTkEgICAgICAgICAgICAgMA0KPiAgI2RlZmluZSBQWEVCQ19ESENQNl9J RFhfQk9PVF9GSUxFX1VSTCAgICAgMQ0KPiAgI2RlZmluZSBQWEVCQ19ESENQNl9JRFhfQk9PVF9G SUxFX1BBUkFNICAgMg0KPiAgI2RlZmluZSBQWEVCQ19ESENQNl9JRFhfVkVORE9SX0NMQVNTICAg ICAgMw0KPiAtI2RlZmluZSBQWEVCQ19ESENQNl9JRFhfTUFYICAgICAgICAgICAgICAgNA0KPiAr I2RlZmluZSBQWEVCQ19ESENQNl9JRFhfRE5TX1NFUlZFUiAgICAgICAgNA0KPiArI2RlZmluZSBQ WEVCQ19ESENQNl9JRFhfTUFYICAgICAgICAgICAgICAgNQ0KPiANCj4gICNkZWZpbmUgUFhFQkNf REhDUDZfQk9PVF9GSUxFX1VSTF9QUkVGSVggICJ0ZnRwOi8vIg0KPiAgI2RlZmluZSBQWEVCQ19U RlRQX1VSTF9TRVBBUkFUT1IgICAgICAgICAgJy8nDQo+ICAjZGVmaW5lIFBYRUJDX0FERFJfU1RB UlRfREVMSU1JVEVSICAgICAgICAnWycNCj4gICNkZWZpbmUgUFhFQkNfQUREUl9FTkRfREVMSU1J VEVSICAgICAgICAgICddJw0KPiBAQCAtMTI2LDEwICsxMjcsMTEgQEAgUHhlQmNGcmVlQm9vdEZp bGVPcHRpb24gKA0KPiANCj4gDQo+ICAvKioNCj4gICAgUGFyc2UgdGhlIEJvb3QgRmlsZSBVUkwg b3B0aW9uLg0KPiANCj4gKyAgQHBhcmFtW2luXSAgICAgIFByaXZhdGUgICAgICAgICAgICAgUG9p bnRlciB0byBQeGVCYyBwcml2YXRlIGRhdGEuDQo+ICAgIEBwYXJhbVtvdXRdICAgICBGaWxlTmFt ZSAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGJvb3QgZmlsZSBuYW1lLg0KPiAgICBAcGFyYW1baW4s IG91dF0gU3J2QWRkciAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBib290IHNlcnZlciBhZGRyZXNz Lg0KPiAgICBAcGFyYW1baW5dICAgICAgQm9vdEZpbGUgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBi b290IGZpbGUgVVJMIG9wdGlvbg0KPiBkYXRhLg0KPiAgICBAcGFyYW1baW5dICAgICAgTGVuZ3Ro ICAgICAgIExlbmd0aCBvZiB0aGUgYm9vdCBmaWxlIFVSTCBvcHRpb24gZGF0YS4NCj4gDQo+IEBA IC0xMzgsMTAgKzE0MCwxMSBAQCBQeGVCY0ZyZWVCb290RmlsZU9wdGlvbiAoDQo+ICAgIEByZXR2 YWwgRUZJX05PVF9SRUFEWSAgIFJlYWQgdGhlIGlucHV0IGtleSBmcm9tIHRoZSBrZXlicm9hZCBo YXMgbm90DQo+IGZpbmlzaC4NCj4gDQo+ICAqKi8NCj4gIEVGSV9TVEFUVVMNCj4gIFB4ZUJjRXh0 cmFjdEJvb3RGaWxlVXJsICgNCj4gKyAgSU4gUFhFQkNfUFJJVkFURV9EQVRBICAgICAgKlByaXZh dGUsDQo+ICAgICAgIE9VVCBVSU5UOCAgICAgICAgICAgICAgICoqRmlsZU5hbWUsDQo+ICAgIElO IE9VVCBFRklfSVB2Nl9BRERSRVNTICAgICpTcnZBZGRyLA0KPiAgICBJTiAgICAgQ0hBUjggICAg ICAgICAgICAgICAqQm9vdEZpbGUsDQo+ICAgIElOICAgICBVSU5UMTYgICAgICAgICAgICAgIExl bmd0aA0KPiAgICApOw0KPiBkaWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9VZWZpUHhlQmNEeGUvUHhl QmNJbXBsLmgNCj4gYi9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZS9QeGVCY0ltcGwuaA0KPiBpbmRl eCBkMGY1ZTViLi4yY2RjOGJmIDEwMDY0NA0KPiAtLS0gYS9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4 ZS9QeGVCY0ltcGwuaA0KPiArKysgYi9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZS9QeGVCY0ltcGwu aA0KPiBAQCAtMzAsMTAgKzMwLDExIEBADQo+ICAjaW5jbHVkZSA8UHJvdG9jb2wvSXA2Q29uZmln Lmg+DQo+ICAjaW5jbHVkZSA8UHJvdG9jb2wvVWRwNC5oPg0KPiAgI2luY2x1ZGUgPFByb3RvY29s L1VkcDYuaD4NCj4gICNpbmNsdWRlIDxQcm90b2NvbC9EaGNwNC5oPg0KPiAgI2luY2x1ZGUgPFBy b3RvY29sL0RoY3A2Lmg+DQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvRG5zNi5oPg0KPiAgI2luY2x1 ZGUgPFByb3RvY29sL010ZnRwNC5oPg0KPiAgI2luY2x1ZGUgPFByb3RvY29sL010ZnRwNi5oPg0K PiAgI2luY2x1ZGUgPFByb3RvY29sL1B4ZUJhc2VDb2RlLmg+DQo+ICAjaW5jbHVkZSA8UHJvdG9j b2wvTG9hZEZpbGUuaD4NCj4gICNpbmNsdWRlIDxQcm90b2NvbC9QeGVCYXNlQ29kZUNhbGxCYWNr Lmg+DQo+IEBAIC0xMzQsMTAgKzEzNSwxMSBAQCBzdHJ1Y3QgX1BYRUJDX1BSSVZBVEVfREFUQSB7 DQo+ICAgIEVGSV9JUDZfQ09ORklHX1BST1RPQ09MICAgICAgICAgICAgICAgICAgICpJcDZDZmc7 DQo+ICAgIEVGSV9ESENQNl9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgICAgICpEaGNwNjsN Cj4gICAgRUZJX01URlRQNl9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgICAgKk10ZnRwNjsN Cj4gICAgRUZJX1VEUDZfUFJPVE9DT0wgICAgICAgICAgICAgICAgICAgICAgICAgKlVkcDZSZWFk Ow0KPiAgICBFRklfVURQNl9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgICAgICAqVWRwNldy aXRlOw0KPiArICBFRklfRE5TNl9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgICAgICAqRG5z NjsNCj4gDQo+ICAgIEVGSV9ORVRXT1JLX0lOVEVSRkFDRV9JREVOVElGSUVSX1BST1RPQ09MICpO aWk7DQo+ICAgIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICAgICAgICAgICAgICAgIFB4ZUJj Ow0KPiAgICBFRklfUFhFX0JBU0VfQ09ERV9DQUxMQkFDS19QUk9UT0NPTCAgICAgICBMb2FkRmls ZUNhbGxiYWNrOw0KPiAgICBFRklfUFhFX0JBU0VfQ09ERV9DQUxMQkFDS19QUk9UT0NPTCAgICAg ICAqUHhlQmNDYWxsYmFjazsNCj4gQEAgLTE2NywxMCArMTY5LDExIEBAIHN0cnVjdCBfUFhFQkNf UFJJVkFURV9EQVRBIHsNCj4gICAgRUZJX0lQX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVG1wU3RhdGlvbklwOw0KPiAgICBFRklfSVBfQUREUkVTUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTdGF0aW9uSXA7DQo+ICAgIEVGSV9JUF9BRERSRVNTICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFN1Ym5ldE1hc2s7DQo+ICAgIEVGSV9JUF9BRERSRVNTICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdhdGV3YXlJcDsNCj4gICAgRUZJX0lQX0FERFJFU1MgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU2VydmVySXA7DQo+ICsgIEVGSV9JUHY2X0FERFJFU1MgICAgICAg ICAgICAgICAgICAgICAgICAgICpEbnNTZXJ2ZXI7DQo+ICAgIFVJTlQxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEN1clNyY1BvcnQ7DQo+ICAgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElhSWQ7DQo+IA0KPiAgICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJcDRNYXhQYWNrZXRTaXplOw0KPiAgICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJcDZNYXhQYWNrZXRTaXplOw0KPiBk aWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9VZWZpUHhlQmNEeGUvVWVmaVB4ZUJjRHhlLmluZg0KPiBi L05ldHdvcmtQa2cvVWVmaVB4ZUJjRHhlL1VlZmlQeGVCY0R4ZS5pbmYNCj4gaW5kZXggYzNjYTIx OC4uNmQxMTAyYiAxMDA2NDQNCj4gLS0tIGEvTmV0d29ya1BrZy9VZWZpUHhlQmNEeGUvVWVmaVB4 ZUJjRHhlLmluZg0KPiArKysgYi9OZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZS9VZWZpUHhlQmNEeGUu aW5mDQo+IEBAIC00LDExICs0LDExIEBADQo+ICAjICBUaGlzIGRyaXZlciBwcm92aWRlcyBQWEUg QmFzZSBDb2RlIFByb3RvY29sIHdoaWNoIGlzIHVzZWQgdG8gYWNjZXNzaW5nDQo+ICAjICBQWEUt Y29tcGF0aWJsZSBkZXZpY2UgZm9yIG5ldHdvcmsgYWNjZXNzIG9yIGJvb3RpbmcuIEl0IGNvdWxk IHdvcmsNCj4gdG9nZXRoZXINCj4gICMgIHdpdGggYW4gSVB2NCBzdGFjaywgYW4gSVB2NiBzdGFj ayBvciBib3RoLg0KPiAgIw0KPiAgIw0KPiAtIyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxNSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIyAgQ29weXJp Z2h0IChjKSAyMDA3IC0gMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiAgIw0KPiAgIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiAgIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICAjICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5z ZSBtYXkNCj4gYmUgZm91bmQgYXQNCj4gICMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHAuDQo+IEBAIC05MywxMCArOTMsMTIgQEANCj4gICAgZ0VmaVVkcDZQ cm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBUT19TVEFSVA0K PiAgICBnRWZpTXRmdHA2U2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAg ICMjIFRPX1NUQVJUDQo+ICAgIGdFZmlNdGZ0cDZQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyMgVE9fU1RBUlQNCj4gICAgZ0VmaURoY3A2U2VydmljZUJpbmRpbmdQ cm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAjIyBUT19TVEFSVA0KPiAgICBnRWZpRGhjcDZQ cm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIFRPX1NUQVJUDQo+ ICsgIGdFZmlEbnM2U2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAg IyMNCj4gU09NRVRJTUVTX0NPTlNVTUVTDQo+ICsgIGdFZmlEbnM2UHJvdG9jb2xHdWlkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMNCj4gU09NRVRJTUVTX0NPTlNVTUVTDQo+ICAg IGdFZmlQeGVCYXNlQ29kZUNhbGxiYWNrUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgIyMN Cj4gU09NRVRJTUVTX1BST0RVQ0VTDQo+ICAgIGdFZmlQeGVCYXNlQ29kZVByb3RvY29sR3VpZCAg ICAgICAgICAgICAgICAgICAgICAgICAgIyMgQllfU1RBUlQNCj4gICAgZ0VmaUxvYWRGaWxlUHJv dG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBCWV9TVEFSVA0KPiAgICBn RWZpQWRhcHRlckluZm9ybWF0aW9uUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICMjDQo+ IFNPTUVUSU1FU19DT05TVU1FUw0KPiANCj4gLS0NCj4gMS45LjUubXN5c2dpdC4xDQoNCg==