From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (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 96B1221A1099A for ; Sun, 26 Nov 2017 18:17:22 -0800 (PST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Nov 2017 18:21:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,462,1505804400"; d="scan'208,217";a="1248848165" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga002.fm.intel.com with ESMTP; 26 Nov 2017 18:21:42 -0800 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 26 Nov 2017 18:21:42 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 26 Nov 2017 18:21:39 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.152]) with mapi id 14.03.0319.002; Mon, 27 Nov 2017 10:21:37 +0800 From: "Wang, Jian J" To: Fan Jeff , "Yao, Jiewen" , "edk2-devel@lists.01.org" CC: "Kinney, Michael D" , "Dong, Eric" , "Zeng, Star" Thread-Topic: [PATCH v2 7/8] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support Thread-Index: AQHTZB7qyBf8NuYLfUCc/1egQ3q2GqMhdptQ//+AJACAAIc90IADFgyAgALwZXA= Date: Mon, 27 Nov 2017 02:21:37 +0000 Message-ID: References: <20171122084548.6564-1-jian.j.wang@intel.com> <20171122084548.6564-8-jian.j.wang@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AA292EF@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AA29365@shsmsx102.ccr.corp.intel.com>, In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOGQwMGI0OWQtZDQ3MS00Yjk2LTljZjgtM2Q3YmYyZmZlYjM1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJzWVQrYjlDWGtaRlRKVzVKUmRmK2tDeUQxNU1WcVZicGx6eUNaWEVpaVZNTlNTbGpUWFFlUTNZK3BhQ3FXOVVIIn0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [PATCH v2 7/8] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Nov 2017 02:17:23 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 R29vZCBjYXRjaC4gSaGvbGwgYWRkIHRoZW0uIFRoYW5rcy4NCg0KRnJvbTogRmFuIEplZmYgW21h aWx0bzp2YW5qZWZmXzkxOUBob3RtYWlsLmNvbV0NClNlbnQ6IFNhdHVyZGF5LCBOb3ZlbWJlciAy NSwgMjAxNyA5OjI4IFBNDQpUbzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+ OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZw0KQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47 IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdA aW50ZWwuY29tPg0KU3ViamVjdDogtPC4tDogW1BBVENIIHYyIDcvOF0gVWVmaUNwdVBrZy9DcHVF eGNlcHRpb25IYW5kbGVyTGliOiBBZGQgc3RhY2sgc3dpdGNoIHN1cHBvcnQNCg0KDQpIaSwNCg0K DQoNCkFib3V0IDEuMSksIEkgYWdyZWUgd2l0aCBKaWV3ZW6hr3Mgc3VnZ2VzdGlvbi4gQmVzaWRl cyBpdCwgd2UgYWxzbyBuZWVkIHRvIHByb3ZpZGUgZHVtbXkgZnVuY3Rpb24gb2YgSW5pdGlhbGl6 ZUNwdUV4Y2VwdGlvblN0YWNrU3dpdGNoSGFuZGxlcnMoKSBpbiBOVUxMIGluc3RhbmNlIGluIE1k ZU1vZHVsZVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWJOdWxsLg0KDQpCdXQgd2Ug bmVlZCB0byB0aGluayBhYm91dCB0aGUgcmV0dXJuIHN0YXR1cyBjYXJlZnVsbHkuIEZvciBleGFt cGxlLCBpZiByZXR1cm4gRUZJX1VOU1VQUE9SVEVEIGluIFBlaS9TTU0gaW5zdHJhbmNlLCB3ZSBu ZWVkIHRvIHVwZGF0ZSBwdWJsaWMgaGVhZGVyIGZpbGUgdG8gYWRkIHRoaXMgcmV0dXJuIHR5cGUu DQoNCg0KDQpKZWZmDQoNCg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KRnJv bTogZWRrMi1kZXZlbCA8ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRr Mi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZz4+IG9uIGJlaGFsZiBvZiBXYW5nLCBKaWFuIEog PGppYW4uai53YW5nQGludGVsLmNvbTxtYWlsdG86amlhbi5qLndhbmdAaW50ZWwuY29tPj4NClNl bnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAyMywgMjAxNyAyOjQzOjQ0IFBNDQpUbzogWWFvLCBKaWV3 ZW47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9y Zz4NCkNjOiBLaW5uZXksIE1pY2hhZWwgRDsgRG9uZywgRXJpYzsgWmVuZywgU3Rhcg0KU3ViamVj dDogUmU6IFtlZGsyXSBbUEFUQ0ggdjIgNy84XSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWI6IEFkZCBzdGFjayBzd2l0Y2ggc3VwcG9ydA0KDQoxLjEpIEdvdCB5b3VyIHBvaW50LiBJ J2xsIGFkZCBkdW1teSBmdW5jdGlvbiBpbiB0aGlzIHBhdGNoLg0KMS4yKSBZZXAsIHdlJ3JlIG9u IHRoZSBzYW1lIHBhZ2UuDQoxLjMpIEhlcmUncyBteSBvcGluaW9uOg0KDQpBY3R1YWxseSBhbG1v c3QgYWxsIE1QIGNvZGUgaGFzIHN1Y2ggYXNzdW1wdGlvbjogYW55IEFQIGNvbmZpZ3VyYXRpb24g d2lsbCBjb3B5DQogZnJvbSBCU1AuIElmIHdlIGFsbG93IEFQIHRvIGNhbGwgSW5pdGlhbGl6ZUNw dUV4Y2VwdGlvbkhhbmRsZXJzKCksIHdlIGhhdmUgdG8gZG8gYSBsb3QNCm9mIG90aGVyIGNoYW5n ZXMgdGhhbiBqdXN0IHVwZGF0aW5nIEluaXRpYWxpemVDcHVFeGNlcHRpb25IYW5kbGVycygpLiBJ ZiBzbywgaXQgbWF5DQpiZSBwcmVtYXR1cmUgdG8gZmlndXJlIG91dCBhIHNvbHV0aW9uIGF0IHRo aXMgcGF0Y2guDQoNCkluIGFkZGl0aW9uLCBDcHVEeGUgYWN0dWFsbHkgY2FsbHMgSW5pdGlhbGl6 ZUNwdUludGVycnVwdEhhbmRsZXJzKCkgd2hpY2ggY292ZXJzIHRoZQ0KZnVuY3Rpb25hbGl0aWVz IG9mIEluaXRpYWxpemVDcHVFeGNlcHRpb25IYW5kbGVycygpIChpdHMgc2V0dGluZ3Mgd2lsbCBi ZSBvdmVyd3JpdHRlbikuDQpJZiB3ZSB3YW50IEFQIHRvIGluaXRpYWxpemUgaW50ZXJydXB0IGFu ZCBleGNlcHRpb24gaW5kaXZpZHVhbGx5LCBtYXliZSB3ZSBzaG91bGQNCmxldCBBUCBjYWxsIElu aXRpYWxpemVDcHVJbnRlcnJ1cHRIYW5kbGVycygpIGluc3RlYWQuDQoNCj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFvLCBKaWV3ZW4NCj4gU2VudDogVGh1cnNkYXksIE5v dmVtYmVyIDIzLCAyMDE3IDI6MTYgUE0NCj4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdA aW50ZWwuY29tPG1haWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+PjsgZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0KPiBDYzogWmVuZywgU3Rh ciA8c3Rhci56ZW5nQGludGVsLmNvbTxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4+OyBEb25n LCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj47 DQo+IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Pg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHYyIDcv OF0gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliOiBBZGQgc3RhY2sNCj4gc3dpdGNo IHN1cHBvcnQNCj4NCj4gSGVyZSBpcyBteSB0aG91Z2h0IGZvciAxKQ0KPg0KPiAxLjEpIFdlIG11 c3QgcHJvdmlkZSB0aGUgSW5pdGlhbGl6ZUNwdUV4Y2VwdGlvblN0YWNrU3dpdGNoSGFuZGxlcnMo KQ0KPiBpbXBsZW1lbnRhdGlvbiBpbiBQZWkgaW5zdGFuY2UgYW5kIFNtbSBpbnN0YW5jZS4NCj4N Cj4gVGhlIGJhc2ljIHJlcXVpcmVtZW50IGlzIGEgbGlicmFyeSBpbnN0YW5jZSBtdXN0IHByb3Zp ZGUgc3ltYm9sIGZvciBmdW5jdGlvbnMNCj4gZGVjbGFyZWQgaW4gaGVhZGVyIGZpbGUuDQo+IEl0 IGlzIG9rIHRvIHJldHVybiB1bnN1cHBvcnRlZC4gQnV0IHdlIE1VU1QgcHJvdmlkZSB0aGUgc3lt Ym9sLg0KPg0KPiAxLjIpIEZvciBTTU0sIEkgdGhpbmsgb3VyIHVsdGltYXRlIGdvYWwgaXMgdG8g cmVtb3ZlIFNNTSBzcGVjaWZpYyBzdGFjayBndWFyZCwNCj4gYW5kIHVzZSB0aGUgY29tbW9uIG9u ZS4gRHVwbGljYXRpbmcgY29kZSBpcyBjb21wbGV0ZWx5IHVubmVjZXNzYXJ5LCBhbmQgaXQgaXMN Cj4gZWFzeSB0byBpbnRyb2R1Y2UgYnVnLiBBbmQgdW5mb3J0dW5hdGVseSwgd2UgYWxyZWFkeSBo YXZlIGJ1ZyBpbiBleGlzdGluZyBTTU0NCj4gZXhjZXB0aW9uIGhhbmRsZXIuIC0tIFRoYXQgaXMg YSBnb29kIHJlYXNvbiB0byByZW1vdmUgZHVwbGljYXRpb24uDQo+DQo+IEFnYWluLCBpdCBpcyBu b3QgbmVjZXNzYXJ5IHRvIGRvIGl0IGluIHRoaXMgcGF0Y2guIEkgYW0gdG90YWxseSBPSyB0byBk byBpdCBpbiBhbm90aGVyDQo+IHBhdGNoLg0KPg0KPiAxLjMpIEZvciBQRUksIEkgZG8gbm90IHRo aW5rIHdlIGNhbiB1c2UgY3VycmVudCB3YXkgdG8gYWxsb2NhdGUgc3RhY2sgaW4gZGF0YQ0KPiBz ZWN0aW9uLCBiZWNhdXNlIGl0IG1pZ2h0IGJlIHJlYWRvbmx5IGluIHByZS1tZW0gcGhhc2UuIFdl IG11c3QgdXNlIHNvbWUNCj4gb3RoZXIgd2F5Lg0KPg0KPiAxLjQpIEkgYmVsaWV2ZSB0aGlzIHBh dGNoIGhhcyBhIGhpZGRlbiBhc3N1bXB0aW9uIGlzIHRoYXQ6DQo+IEluaXRpYWxpemVDcHVFeGNl cHRpb25IYW5kbGVycygpIHdvbid0IGJlIGNhbGxlZCBieSBtdWx0aXBsZSBBUHMuDQo+IElmIDIg b3IgbW9yZSBBUHMgY2FsbCB0aGUgaXQgYXQgc2FtZSB0aW1lLCBpdCBtaWdodCBiZSBicm9rZW4g YmVjYXVzZSB5b3UgdXNlDQo+IG1OZXdTdGFjayBmb3IgYWxsIHRoZSBjYWxsZXJzLi4uLg0KPiBJ cyB0aGF0IHJpZ2h0Pw0KPg0KPg0KPiBUaGFuayB5b3UNCj4gWWFvIEppZXdlbg0KPg0KPg0KPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogV2FuZywgSmlhbiBKDQo+ID4g U2VudDogVGh1cnNkYXksIE5vdmVtYmVyIDIzLCAyMDE3IDI6MDYgUE0NCj4gPiBUbzogWWFvLCBK aWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+ OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+ DQo+ID4gQ2M6IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVu Z0BpbnRlbC5jb20+PjsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJp Yy5kb25nQGludGVsLmNvbT4+Ow0KPiBLaW5uZXksDQo+ID4gTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Pg0KPiA+ IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjIgNy84XSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWI6IEFkZCBzdGFjaw0KPiA+IHN3aXRjaCBzdXBwb3J0DQo+ID4NCj4gPg0KPiA+DQo+ID4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogWWFvLCBKaWV3ZW4NCj4g PiA+IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAyMywgMjAxNyAxOjUwIFBNDQo+ID4gPiBUbzog V2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGlu dGVsLmNvbT4+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmc+DQo+ID4gPiBDYzogWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbTxtYWls dG86c3Rhci56ZW5nQGludGVsLmNvbT4+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29t PG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj47DQo+ID4gPiBLaW5uZXksIE1pY2hhZWwgRCA8 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPj4NCj4gPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjIgNy84XSBVZWZpQ3B1UGtnL0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBzdGFjaw0KPiA+ID4gc3dpdGNoIHN1cHBvcnQNCj4gPiA+ DQo+ID4gPiBTb21lIHRob3VnaHQ6DQo+ID4gPg0KPiA+ID4gMSkgSSBmb3VuZCBJbml0aWFsaXpl Q3B1RXhjZXB0aW9uU3RhY2tTd2l0Y2hIYW5kbGVycygpIGlzIG9ubHkgaW1wbGVtZW50ZWQNCj4g aW4NCj4gPiA+IER4ZUV4Y2VwdGlvbi5jLg0KPiA+ID4gV2hhdCBhYm91dCBQZWkvU21tIGluc3Rh bmNlPw0KPiA+ID4NCj4gPiA+IEkgdGhpbmsgaXQgaXMgT0sgdG8gbm90IGltcGxlbWVudCBpdCBh dCB0aGlzIG1vbWVudC4gQnV0IHdlIG5lZWQgbWFrZSBzdXJlIG5vDQo+ID4gPiBhcmNoaXRlY3R1 cmUgaXNzdWUgaWYgd2Ugd2FudCB0byBlbmFibGUgaXQgc29tZSB0aW1lIGxhdGVyLg0KPiA+ID4N Cj4gPiBMaWtlIHdoYXQgd2UgZGlzY3Vzc2VkIGJlZm9yZSwgdGhpcyBzZXJpZXMgb2YgcGF0Y2gg aXMgZm9yIFN0YWNrIEd1YXJkIGZlYXR1cmUNCj4gPiB3aGljaA0KPiA+IGlzIG9ubHkgYXZhaWxh YmxlIGZvciBEWEUgKGJlY2F1c2UgU3RhY2sgR3VhcmQgbmVlZHMgcGFnaW5nIHRvIHdvcmspLiBT dGFjaw0KPiA+IHN3aXRjaA0KPiA+IGlzIGVuYWJsZWQgZm9yIHRoZSBzYWtlIG9mIFN0YWNrIEd1 YXJkIGZlYXR1cmUuIFNvIEkgdGhpbmsgaXQncyBlbm91Z2ggdG8NCj4gPiBpbXBsZW1lbnQNCj4g PiBpdCBpbiBEeGVFeGNlcHRpb24uYy4gSW4gYWRkaXRpb24sIFNNTSBoYXMgaXRzIG93biBpbXBs ZW1lbnRhdGlvbiBvZiBzdGFjaw0KPiBndWFyZA0KPiA+IGFuZCBzdGFjayBzd2l0Y2guIEl0J3Mg bm90IG5lY2Vzc2FyeSB0byBkbyBpdCBhZ2Fpbi4NCj4gPg0KPiA+IEkgYWdyZWUgd2l0aCB5b3Ug dGhhdCB3ZSBzaG91bGQgbWVyZ2UgdGhvc2UgY29tbW9uIGNvZGUgYnV0IEkgdGhpbmsgd2UNCj4g c2hvdWxkDQo+ID4gZG8NCj4gPiBpdCBpbiBhIHNlcGFyYXRlIHBhdGNoIHNlcmllcyBzaW5jZSBp dCdzIG5vdCBTdGFjayBHdWFyZCByZWxldmFudC4gQW5kIEkndmUNCj4gcmVtb3ZlZA0KPiA+IGFs bCBhcmNoaXRlY3R1cmUgaXNzdWVzIEkgY2FuIHRoaW5rIG9mLiBDdXJyZW50IHN0YWNrIHN3aXRj aCBpbml0aWFsaXphdGlvbiBzaG91bGQNCj4gd29yaw0KPiA+IGZvciBib3RoIFBFSSBhbmQgU01N IGFzIHdlbGwuDQo+ID4NCj4gPiA+IDIpICNkZWZpbmUgSUEzMl9HRFRfVFlQRV9UU1MgICAgICAg ICAgIDB4OQ0KPiA+ID4gVGhpcyBpcyBnZW5lcmljLCBjYW4gd2UgbW92ZSB0byBCYXNlTGliLmg/ DQo+ID4gPg0KPiA+ID4NCj4gPiA+IFRoYW5rIHlvdQ0KPiA+ID4gWWFvIEppZXdlbg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206 IFdhbmcsIEppYW4gSg0KPiA+ID4gPiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDIyLCAyMDE3 IDQ6NDYgUE0NCj4gPiA+ID4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsy LWRldmVsQGxpc3RzLjAxLm9yZz4NCj4gPiA+ID4gQ2M6IFplbmcsIFN0YXIgPHN0YXIuemVuZ0Bp bnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+PjsgRG9uZywgRXJpYyA8ZXJpYy5k b25nQGludGVsLmNvbTxtYWlsdG86ZXJpYy5kb25nQGludGVsLmNvbT4+Ow0KPiBZYW8sDQo+ID4g PiA+IEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwu Y29tPj47IEtpbm5leSwgTWljaGFlbCBEDQo+ID4gPiA+IDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Pg0KPiA+ID4gPiBTdWJqZWN0 OiBbUEFUQ0ggdjIgNy84XSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBz dGFjaw0KPiA+ID4gc3dpdGNoDQo+ID4gPiA+IHN1cHBvcnQNCj4gPiA+ID4NCj4gPiA+ID4gPiB2 MjoNCj4gPiA+ID4gPiAgICBhLiBNb3ZlIGNvbW1vbiBUU1Mgc3RydWN0dXJlIGFuZCBBUEkgZGVm aW5pdGlvbnMgdG8gQmFzZUxpYi5oDQo+ID4gPiA+ID4gICAgYi4gQWRkIEVYQ0VQVElPTl9TVEFD S19TV0lUQ0hfREFUQSB0byBjb252ZXJ5IGRhdGEgdXNlZCB0bw0KPiA+IHNldHVwDQo+ID4gPiA+ IHN0YWNrDQo+ID4gPiA+ID4gICAgICAgc3dpdGNoLiBUaGlzIGNhbiBhdm9pZCBhbGxvY2F0aW5n IG1lbW9yeSBmb3IgaXQgaW4gdGhpcyBsaWJyYXJ5Lg0KPiA+ID4gPiA+ICAgIGMuIEFkZCBnbG9i YWxzIHRvIHJlc2VydmUgbWVtb3J5IGZvciBzdGFjayBzd2l0Y2ggaW5pdGlhbGl6ZWQgaW4gZWFy bHkNCj4gPiA+ID4gPiAgICAgICBwaGFzZSBvZiBEWEUgY29yZS4NCj4gPiA+ID4gPiAgICBkLiBS ZW1vdmUgdGhlIGZpbHRlciBjb2RlIHVzZWQgdG8gZXhjbHVkZSBib290IG1vZGVzIHdoaWNoIGRv ZXNuJ3QNCj4gPiA+ID4gc3VwcG9ydA0KPiA+ID4gPiA+ICAgICAgIG1lbW9yeSBhbGxvY2F0aW9u IGJlY2F1c2UgdGhvc2UgbWVtb3J5IGNhbiBwYXNzZWQgaW4gYnkNCj4gPiBwYXJhbWV0ZXINCj4g PiA+ID4gbm93Lg0KPiA+ID4gPiA+ICAgIGUuIFJlbW92ZSB0aGUgbmFzbSBtYWNybyB0byBkZWZp bmUgZXhjZXB0aW9uIGhhbmRsZXIgb25lIGJ5IG9uZQ0KPiA+IGFuZA0KPiA+ID4gPiBhZGQgYQ0K PiA+ID4gPiA+ICAgICAgIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgc3RhcnQgYWRkcmVzcyBvZiBl YWNoIGhhbmRsZXIuDQo+ID4gPiA+DQo+ID4gPiA+IElmIFN0YWNrIEd1YXJkIGlzIGVuYWJsZWQg YW5kIHRoZXJlJ3MgcmVhbGx5IGEgc3RhY2sgb3ZlcmZsb3cgaGFwcGVuZWQNCj4gZHVyaW5nDQo+ ID4gPiA+IGJvb3QsIGEgUGFnZSBGYXVsdCBleGNlcHRpb24gd2lsbCBiZSB0cmlnZ2VyZWQuIEJl Y2F1c2UgdGhlIHN0YWNrIGlzIG91dCBvZg0KPiA+ID4gPiB1c2FnZSwgdGhlIGV4Y2VwdGlvbiBo YW5kbGVyLCB3aGljaCBzaGFyZXMgdGhlIHN0YWNrIHdpdGggbm9ybWFsIFVFRkkNCj4gZHJpdmVy LA0KPiA+ID4gPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYW5kIGNhbm5vdCBkdW1wIHRoZSBwcm9jZXNz b3IgaW5mb3JtYXRpb24uDQo+ID4gPiA+DQo+ID4gPiA+IFdpdGhvdXQgdGhvc2UgaW5mb3JtYXRp b24sIGl0J3MgdmVyeSBkaWZmaWN1bHQgZm9yIHRoZSBCSU9TIGRldmVsb3BlcnMgbG9jYXRlDQo+ ID4gPiA+IHRoZSByb290IGNhdXNlIG9mIHN0YWNrIG92ZXJmbG93LiBBbmQgd2l0aG91dCBhIHdv cmthYmxlIHN0YWNrLCB0aGUNCj4gPiBkZXZlbG9wZXINCj4gPiA+ID4gY2Fubm90IGV2ZW50IHVz ZSBzaW5nbGUgc3RlcCB0byBkZWJ1ZyB0aGUgVUVGSSBkcml2ZXIgd2l0aCBKVEFHIGRlYnVnZ2Vy Lg0KPiA+ID4gPg0KPiA+ID4gPiBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlIGV4Y2VwdGlvbiBo YW5kbGVyIHRvIGV4ZWN1dGUgbm9ybWFsbHkgYWZ0ZXINCj4gc3RhY2sNCj4gPiA+ID4gb3ZlcmZs b3cuIFdlIG5lZWQgc2VwYXJhdGUgc3RhY2tzIGZvciBleGNlcHRpb24gaGFuZGxlcnMgaW4gY2Fz ZSBvZg0KPiB1bnVzYWJsZQ0KPiA+ID4gPiBzdGFjay4NCj4gPiA+ID4NCj4gPiA+ID4gSUEgcHJv Y2Vzc29yIGFsbG93cyB0byBzd2l0Y2ggdG8gYSBuZXcgc3RhY2sgZHVyaW5nIGhhbmRsaW5nIGlu dGVycnVwdCBhbmQNCj4gPiA+ID4gZXhjZXB0aW9uLiBCdXQgWDY0IGFuZCBJQTMyIHByb3ZpZGVz IGRpZmZlcmVudCB3YXlzIHRvIG1ha2UgaXQuIFg2NA0KPiBwcm92aWRlcw0KPiA+ID4gPiBpbnRl cnJ1cHQgc3RhY2sgdGFibGUgKElTVCkgdG8gYWxsb3cgbWF4aW11bSA3IGRpZmZlcmVudCBleGNl cHRpb25zIHRvIGhhdmUNCj4gPiA+ID4gbmV3IHN0YWNrIGZvciBpdHMgaGFuZGxlci4gSUEzMiBk b2Vzbid0IGhhdmUgSVNUIG1lY2hhbmlzbSBhbmQgY2FuIG9ubHkNCj4gdXNlDQo+ID4gPiA+IHRh c2sgZ2F0ZSB0byBkbyBpdCBzaW5jZSB0YXNrIHN3aXRjaCBhbGxvd3MgdG8gbG9hZCBhIG5ldyBz dGFjayB0aHJvdWdoIGl0cw0KPiA+ID4gPiB0YXNrLXN0YXRlIHNlZ21lbnQgKFRTUykuDQo+ID4g PiA+DQo+ID4gPiA+IENjOiBTdGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb208bWFpbHRvOnN0 YXIuemVuZ0BpbnRlbC5jb20+Pg0KPiA+ID4gPiBDYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50 ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj4NCj4gPiA+ID4gQ2M6IEppZXdlbiBZ YW8gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+DQo+ ID4gPiA+IENjOiBNaWNoYWVsIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFp bHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4NCj4gPiA+ID4gU3VnZ2VzdGVkLWJ5OiBB eWVsbGV0IFdvbG1hbiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0Lndv bG1hbkBpbnRlbC5jb20+Pg0KPiA+ID4gPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENv bnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEppYW4gSiBX YW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVsLmNvbT4+ DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAgLi4uL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvQ3B1RXhj ZXB0aW9uQ29tbW9uLmggICAgfCAgNTAgKysrDQo+ID4gPiA+ICAuLi4vRHhlQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi5pbmYgICAgICAgICAgICAgICAgICB8ICAgNiArDQo+ID4gPiA+ICAuLi4vTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jICB8ICA1MyArKy0NCj4g PiA+ID4gIC4uLi9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMgICAgICAgICAgICAgICAgICAg IHwgMTY3ICsrKysrKysrKw0KPiA+ID4gPiAgLi4uL0lhMzIvQXJjaEludGVycnVwdERlZnMuaCAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDggKw0KPiA+ID4gPiAgLi4uL0lhMzIvRXhjZXB0aW9u VHNzRW50cnlBc20ubmFzbSAgICAgICAgICAgICAgICAgfCAzOTgNCj4gPiA+ID4gKysrKysrKysr KysrKysrKysrKysrDQo+ID4gPiA+ICAuLi4vUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYg ICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ID4gPiA+ICAuLi4vU2VjUGVpQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi5pbmYgICAgICAgICAgICAgICB8ICAgMSArDQo+ID4gPiA+ICAuLi4vU21tQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ID4gPiA+ ICAuLi4vWDY0L0FyY2hFeGNlcHRpb25IYW5kbGVyLmMgICAgICAgICAgICAgICAgICAgICB8IDEz MyArKysrKysrDQo+ID4gPiA+ICAuLi4vQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaElu dGVycnVwdERlZnMuaCB8ICAgMyArDQo+ID4gPiA+ICAxMSBmaWxlcyBjaGFuZ2VkLCA4MjAgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ ID4gPiA+DQo+ID4gPg0KPiA+DQo+IFVlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL0lhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzbQ0KPiA+ID4gPg0KPiA+ID4gPiBk aWZmIC0tZ2l0DQo+ID4gPiA+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmgNCj4gPiA+ID4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkv Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi9DcHVFeGNlcHRpb25Db21tb24uaA0KPiA+ID4gPiBpbmRl eCA3NDBhNTg4MjhiLi4zMDMzNDEwNWQyIDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gYS9VZWZpQ3B1 UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9DcHVFeGNlcHRpb25Db21tb24uaA0K PiA+ID4gPiArKysNCj4gPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+ID4gPiA+IEBAIC00OCw2ICs0OCwzMiBAQA0KPiA+ ID4gPiAgICAgIDB4YjIxZDkxNDgsIDB4OTIxMSwgMHg0ZDhmLCB7IDB4YWQsIDB4ZDMsIDB4NjYs IDB4YjEsIDB4ODksIDB4YzksIDB4MmMsDQo+ID4gPiAweDgzIH0NCj4gPiA+ID4gXA0KPiA+ID4g PiAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lIENQVV9TVEFDS19TV0lUQ0hfRVhDRVBU SU9OX05VTUJFUiBcDQo+ID4gPiA+ICsgIEZpeGVkUGNkR2V0U2l6ZSAoUGNkQ3B1U3RhY2tTd2l0 Y2hFeGNlcHRpb25MaXN0KQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIENQVV9TVEFDS19T V0lUQ0hfRVhDRVBUSU9OX0xJU1QgXA0KPiA+ID4gPiArICBGaXhlZFBjZEdldFB0ciAoUGNkQ3B1 U3RhY2tTd2l0Y2hFeGNlcHRpb25MaXN0KQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIENQ VV9LTk9XTl9HT09EX1NUQUNLX1NJWkUgXA0KPiA+ID4gPiArICBGaXhlZFBjZEdldDMyIChQY2RD cHVLbm93bkdvb2RTdGFja1NpemUpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgQ1BVX1RT U19HRFRfU0laRSAoU0laRV8yS0IgKyBDUFVfVFNTX0RFU0NfU0laRSArDQo+ID4gPiBDUFVfVFNT X1NJWkUpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgSUEzMl9HRFRfVFlQRV9UU1MgICAg ICAgICAgIDB4OQ0KPiA+ID4gPiArI2RlZmluZSBJQTMyX0dEVF9BTElHTk1FTlQgICAgICAgICAg OA0KPiA+ID4gPiArDQo+ID4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiA+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgU3RhY2tUb3A7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgU3RhY2tTaXplOw0KPiA+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICpFeGNlcHRpb25zOw0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEV4 Y2VwdGlvbk51bWJlcjsNCj4gPiA+ID4gKyAgSUEzMl9JRFRfR0FURV9ERVNDUklQVE9SICAqSWR0 VGFibGU7DQo+ID4gPiA+ICsgIElBMzJfU0VHTUVOVF9ERVNDUklQVE9SICAgKkdkdFRhYmxlOw0K PiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEdkdFNpemU7DQo+ID4gPiA+ICsg IElBMzJfVFNTX0RFU0NSSVBUT1IgICAgICAgKlRzc0Rlc2M7DQo+ID4gPiA+ICsgIElBMzJfVEFT S19TVEFURV9TRUdNRU5UICAgKlRzczsNCj4gPiA+ID4gK30gRVhDRVBUSU9OX1NUQUNLX1NXSVRD SF9EQVRBOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAvLw0KPiA+ID4gPiAgLy8gUmVjb3JkIGV4Y2Vw dGlvbiBoYW5kbGVyIGluZm9ybWF0aW9uDQo+ID4gPiA+ICAvLw0KPiA+ID4gPiBAQCAtMjg4LDUg KzMxNCwyOSBAQCBDb21tb25FeGNlcHRpb25IYW5kbGVyV29ya2VyICgNCj4gPiA+ID4gICAgSU4g RVhDRVBUSU9OX0hBTkRMRVJfREFUQSAgICAgICpFeGNlcHRpb25IYW5kbGVyRGF0YQ0KPiA+ID4g PiAgICApOw0KPiA+ID4gPg0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFNldHVwIHNlcGFyYXRl IHN0YWNrIGZvciBzcGVjaWZpYyBleGNlcHRpb25zLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gSWR0VGFibGUgICAgICAgIElEVCB0YWJsZSBiYXNlLg0KPiA+ID4gPiArKiovDQo+ ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0FyY2hTZXR1cEV4 Y3BldGlvblN0YWNrICgNCj4gPiA+ID4gKyAgSU4gRVhDRVBUSU9OX1NUQUNLX1NXSVRDSF9EQVRB ICAgICAgKlN0YWNrU3dpdGNoRGF0YQ0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKioNCj4gPiA+ID4gKyAgUmV0dXJuIGFkZHJlc3MgbWFwIG9mIGV4Y2VwdGlvbiBoYW5kbGVy IHRlbXBsYXRlIHNvIHRoYXQgQyBjb2RlIGNhbg0KPiA+ID4gPiBnZW5lcmF0ZQ0KPiA+ID4gPiAr ICBleGNlcHRpb24gdGFibGVzLiBUaGUgdGVtcGxhdGUgaXMgb25seSBmb3IgZXhjZXB0aW9ucyB1 c2luZyB0YXNrIGdhdGUNCj4gPiBpbnN0ZWFkDQo+ID4gPiA+ICsgIG9mIGludGVycnVwdCBnYXRl Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbSBBZGRyZXNzTWFwICBQb2ludGVyIHRvIGEg YnVmZmVyIHdoZXJlIHRoZSBhZGRyZXNzIG1hcCBpcw0KPiA+ID4gPiByZXR1cm5lZC4NCj4gPiA+ ID4gKyoqLw0KPiA+ID4gPiArVk9JRA0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtBc21HZXRU c3NUZW1wbGF0ZU1hcCAoDQo+ID4gPiA+ICsgIE9VVCBFWENFUFRJT05fSEFORExFUl9URU1QTEFU RV9NQVAgICpBZGRyZXNzTWFwDQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gICNl bmRpZg0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+DQo+ID4gPg0KPiA+DQo+ IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi5pbmYNCj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4gYi9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmlu Zg0KPiA+ID4gPiBpbmRleCBmNGE4ZDAxYzgwLi41OGU1NWE4YTJlIDEwMDY0NA0KPiA+ID4gPiAt LS0NCj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiA+ID4gPiArKysN Cj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiA+ID4gPiBAQCAtMzAs NiArMzAsNyBAQA0KPiA+ID4gPiAgW1NvdXJjZXMuSWEzMl0NCj4gPiA+ID4gICAgSWEzMi9FeGNl cHRpb25IYW5kbGVyQXNtLmFzbQ0KPiA+ID4gPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20u bmFzbQ0KPiA+ID4gPiArICBJYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20NCj4gPiA+ID4g ICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gPiA+ID4gICAgSWEzMi9BcmNoRXhjZXB0 aW9uSGFuZGxlci5jDQo+ID4gPiA+ICAgIElhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiA+ID4g PiBAQCAtNDcsNiArNDgsMTEgQEANCj4gPiA+ID4gICAgUGVpRHhlU21tQ3B1RXhjZXB0aW9uLmMN Cj4gPiA+ID4gICAgRHhlRXhjZXB0aW9uLmMNCj4gPiA+ID4NCj4gPiA+ID4gK1tQY2RdDQo+ID4g PiA+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RDcHVTdGFja0d1YXJkDQo+ ID4gPiA+ICsgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1U3RhY2tTd2l0Y2hFeGNl cHRpb25MaXN0DQo+ID4gPiA+ICsgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1S25v d25Hb29kU3RhY2tTaXplDQo+ID4gPiA+ICsNCj4gPiA+ID4gIFtQYWNrYWdlc10NCj4gPiA+ID4g ICAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ID4gICAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBr Zy5kZWMNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+ID4gPiA+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gPiA+ID4gaW5kZXggMzFm ZWJlYzk3Ni4uYzBiMmM2MTVhYSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvVWVmaUNwdVBrZy9MaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gPiA+ID4gKysrIGIv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMN Cj4gPiA+ID4gQEAgLTI1LDYgKzI1LDEwIEBAIFVJTlRODQo+ID4gbUVuYWJsZWRJbnRlcnJ1cHRO dW0gPQ0KPiA+ID4gPiAwOw0KPiA+ID4gPg0KPiA+ID4gPiAgRVhDRVBUSU9OX0hBTkRMRVJfREFU QSAgICAgIG1FeGNlcHRpb25IYW5kbGVyRGF0YTsNCj4gPiA+ID4NCj4gPiA+ID4gK1VJTlQ4DQo+ ID4gPiA+IG1OZXdTdGFja1tDUFVfU1RBQ0tfU1dJVENIX0VYQ0VQVElPTl9OVU1CRVIgKg0KPiA+ ID4gPiArDQo+ID4gQ1BVX0tOT1dOX0dPT0RfU1RBQ0tfU0laRV0NCj4gPiA+ID4gPSB7MH07DQo+ ID4gPiA+ICtVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgbU5ld0dkdFtDUFVfVFNTX0dEVF9T SVpFXSA9IHswfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+ICAgIENvbW1vbiBl eGNlcHRpb24gaGFuZGxlci4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTYzLDEwICs2NywzNCBAQCBJ bml0aWFsaXplQ3B1RXhjZXB0aW9uSGFuZGxlcnMgKA0KPiA+ID4gPiAgICBJTiBFRklfVkVDVE9S X0hBTkRPRkZfSU5GTyAgICAgICAqVmVjdG9ySW5mbyBPUFRJT05BTA0KPiA+ID4gPiAgICApDQo+ ID4gPiA+ICB7DQo+ID4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICBT dGF0dXM7DQo+ID4gPiA+ICsgIEVYQ0VQVElPTl9TVEFDS19TV0lUQ0hfREFUQSAgICAgICBTdGFj a1N3aXRjaERhdGE7DQo+ID4gPiA+ICsgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAg ICBJZHRyOw0KPiA+ID4gPiArICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgICAgR2R0 cjsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgICBtRXhjZXB0aW9uSGFuZGxlckRhdGEuUmVzZXJ2ZWRW ZWN0b3JzICAgICAgICAgID0NCj4gPiA+ID4gbVJlc2VydmVkVmVjdG9yc0RhdGE7DQo+ID4gPiA+ ICAgIG1FeGNlcHRpb25IYW5kbGVyRGF0YS5FeHRlcm5hbEludGVycnVwdEhhbmRsZXIgPQ0KPiA+ ID4gPiBtRXh0ZXJuYWxJbnRlcnJ1cHRIYW5kbGVyVGFibGU7DQo+ID4gPiA+ICAgIEluaXRpYWxp emVTcGluTG9jayAoJm1FeGNlcHRpb25IYW5kbGVyRGF0YS5EaXNwbGF5TWVzc2FnZVNwaW5Mb2Nr KTsNCj4gPiA+ID4gLSAgcmV0dXJuIEluaXRpYWxpemVDcHVFeGNlcHRpb25IYW5kbGVyc1dvcmtl ciAoVmVjdG9ySW5mbywNCj4gPiA+ID4gJm1FeGNlcHRpb25IYW5kbGVyRGF0YSk7DQo+ID4gPiA+ ICsgIFN0YXR1cyA9IEluaXRpYWxpemVDcHVFeGNlcHRpb25IYW5kbGVyc1dvcmtlciAoVmVjdG9y SW5mbywNCj4gPiA+ID4gJm1FeGNlcHRpb25IYW5kbGVyRGF0YSk7DQo+ID4gPiA+ICsgIGlmICgh RUZJX0VSUk9SIChTdGF0dXMpICYmIFBjZEdldEJvb2wgKFBjZENwdVN0YWNrR3VhcmQpKSB7DQo+ ID4gPiA+ICsgICAgQXNtUmVhZElkdHIgKCZJZHRyKTsNCj4gPiA+ID4gKyAgICBBc21SZWFkR2R0 ciAoJkdkdHIpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgU3RhY2tTd2l0Y2hEYXRhLlN0YWNr VG9wID0gKFVJTlROKW1OZXdTdGFjazsNCj4gPiA+ID4gKyAgICBTdGFja1N3aXRjaERhdGEuU3Rh Y2tTaXplID0gQ1BVX0tOT1dOX0dPT0RfU1RBQ0tfU0laRTsNCj4gPiA+ID4gKyAgICBTdGFja1N3 aXRjaERhdGEuRXhjZXB0aW9ucyA9IENQVV9TVEFDS19TV0lUQ0hfRVhDRVBUSU9OX0xJU1Q7DQo+ ID4gPiA+ICsgICAgU3RhY2tTd2l0Y2hEYXRhLkV4Y2VwdGlvbk51bWJlciA9DQo+ID4gPiA+IENQ VV9TVEFDS19TV0lUQ0hfRVhDRVBUSU9OX05VTUJFUjsNCj4gPiA+ID4gKyAgICBTdGFja1N3aXRj aERhdGEuSWR0VGFibGUgPSAoSUEzMl9JRFRfR0FURV9ERVNDUklQVE9SICopSWR0ci5CYXNlOw0K PiA+ID4gPiArICAgIFN0YWNrU3dpdGNoRGF0YS5HZHRUYWJsZSA9IChJQTMyX1NFR01FTlRfREVT Q1JJUFRPUg0KPiA+ICopbU5ld0dkdDsNCj4gPiA+ID4gKyAgICBTdGFja1N3aXRjaERhdGEuR2R0 U2l6ZSA9IHNpemVvZiAobU5ld0dkdCk7DQo+ID4gPiA+ICsgICAgU3RhY2tTd2l0Y2hEYXRhLlRz c0Rlc2MgPSAoSUEzMl9UU1NfREVTQ1JJUFRPUiAqKShtTmV3R2R0ICsNCj4gPiA+ID4gR2R0ci5M aW1pdCArIDEpOw0KPiA+ID4gPiArICAgIFN0YWNrU3dpdGNoRGF0YS5Uc3MgPSAoSUEzMl9UQVNL X1NUQVRFX1NFR01FTlQgKikobU5ld0dkdCArDQo+ID4gPiA+IEdkdHIuTGltaXQgKyAxICsNCj4g PiA+ID4gKw0KPiA+ID4gPiBDUFVfVFNTX0RFU0NfU0laRSk7DQo+ID4gPiA+ICsgICAgU3RhdHVz ID0gSW5pdGlhbGl6ZUNwdUV4Y2VwdGlvblN0YWNrU3dpdGNoSGFuZGxlcnMgKA0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgJlN0YWNrU3dpdGNoRGF0YQ0KPiA+ID4gPiArICAgICAgICAgICAgICAg KTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiAgfQ0K PiA+ID4gPg0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+IEBAIC0xOTcsMyArMjI1LDI2IEBAIFJlZ2lz dGVyQ3B1SW50ZXJydXB0SGFuZGxlciAoDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAgIHJldHVybiBS ZWdpc3RlckNwdUludGVycnVwdEhhbmRsZXJXb3JrZXIgKEludGVycnVwdFR5cGUsDQo+ID4gSW50 ZXJydXB0SGFuZGxlciwNCj4gPiA+ID4gJm1FeGNlcHRpb25IYW5kbGVyRGF0YSk7DQo+ID4gPiA+ ICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBTZXR1cCBzZXBhcmF0ZSBz dGFjayBmb3IgZ2l2ZW4gZXhjZXB0aW9ucy4gVGhpcyBpcyByZXF1aXJlZCBieQ0KPiA+ID4gPiAr ICBQY2RDcHVTdGFja0d1YXJkIGZlYXR1cmUuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgTm90ZTog Rm9yIElBMzIgcHJvY2Vzc29yLCBTdGFja1N3aXRjaERhdGEgaXMgYSByZXF1aXJlZCBwYXJhbWV0 ZXIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSBTdGFja1N3aXRjaERhdGEgICAg ICBQb2ludGVyIHRvIGRhdGEgcmVxdWlyZWQgZm9yIHNldHVwaW5nDQo+ID4gdXANCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayBzd2l0Y2guDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgZXhjZXB0 aW9ucyBoYXZlIGJlZW4NCj4gPiBzdWNjZXNzZnVsbHkNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgICBTdGFja1N3aXRjaERhdGEgY29udGFpbnMgaW52YWxpZA0KPiA+ ID4gPiBjb250ZW50Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArSW5pdGlhbGl6ZUNwdUV4Y2VwdGlvblN0YWNr U3dpdGNoSGFuZGxlcnMgKA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICpTdGFja1N3aXRjaERh dGEgT1BUSU9OQUwNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICByZXR1cm4g QXJjaFNldHVwRXhjcGV0aW9uU3RhY2sgKFN0YWNrU3dpdGNoRGF0YSk7DQo+ID4gPiA+ICt9DQo+ ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gPiA+ID4NCj4g Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hFeGNl cHRpb25IYW5kbGVyLmMNCj4gPiA+ID4gaW5kZXggZjJjMzllYjE5My4uMGFhZjc5NDc5NSAxMDA2 NDQNCj4gPiA+ID4gLS0tDQo+ID4gPg0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL0lhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiA+ID4gPiArKysNCj4g PiA+ID4NCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMy L0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gPiA+ID4gQEAgLTEwNyw2ICsxMDcsMTczIEBAIEFy Y2hSZXN0b3JlRXhjZXB0aW9uQ29udGV4dCAoDQo+ID4gPiA+ICAgIFN5c3RlbUNvbnRleHQuU3lz dGVtQ29udGV4dElhMzItPkV4Y2VwdGlvbkRhdGEgPQ0KPiA+ID4gPiBSZXNlcnZlZFZlY3RvcnNb RXhjZXB0aW9uVHlwZV0uRXhjZXB0aW9uRGF0YTsNCj4gPiA+ID4gIH0NCj4gPiA+ID4NCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICBTZXR1cCBzZXBhcmF0ZSBzdGFjayBmb3IgZ2l2ZW4gZXhjZXB0 aW9ucy4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dIFN0YWNrU3dpdGNoRGF0YSAg ICAgICAgUG9pbnRlciB0byBkYXRhIHJlcXVpcmVkIGZvcg0KPiA+IHNldHVwaW5nDQo+ID4gPiA+ IHVwDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayBz d2l0Y2guDQo+ID4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIGV4 Y2VwdGlvbnMgaGF2ZSBiZWVuDQo+ID4gc3VjY2Vzc2Z1bGx5DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSICAgU3RhY2tTd2l0Y2hEYXRhIGNvbnRhaW5zIGludmFsaWQN Cj4gPiA+ID4gY29udGVudC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtFRklf U1RBVFVTDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0FyY2hTZXR1cEV4Y3BldGlvblN0YWNr ICgNCj4gPiA+ID4gKyAgSU4gRVhDRVBUSU9OX1NUQUNLX1NXSVRDSF9EQVRBICAgKlN0YWNrU3dp dGNoRGF0YQ0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIElBMzJfREVTQ1JJ UFRPUiAgICAgICAgICAgICAgICAgICBHZHRyOw0KPiA+ID4gPiArICBJQTMyX0RFU0NSSVBUT1Ig ICAgICAgICAgICAgICAgICAgSWR0cjsNCj4gPiA+ID4gKyAgSUEzMl9JRFRfR0FURV9ERVNDUklQ VE9SICAgICAgICAgICpJZHRUYWJsZTsNCj4gPiA+ID4gKyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAg ICAgICAgICAgICAgICpUc3NEZXNjOw0KPiA+ID4gPiArICBJQTMyX1RBU0tfU1RBVEVfU0VHTUVO VCAgICAgICAgICAgKlRzczsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YWNrVG9wOw0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXg7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBWZWN0b3I7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU c3NCYXNlOw0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2R0 U2l6ZTsNCj4gPiA+ID4gKyAgRVhDRVBUSU9OX0hBTkRMRVJfVEVNUExBVEVfTUFQICAgIFRlbXBs YXRlTWFwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmIChTdGFja1N3aXRjaERhdGEgPT0gTlVM TCB8fA0KPiA+ID4gPiArICAgICAgU3RhY2tTd2l0Y2hEYXRhLT5TdGFja1RvcCA9PSAwIHx8DQo+ ID4gPiA+ICsgICAgICBTdGFja1N3aXRjaERhdGEtPlN0YWNrU2l6ZSA9PSAwIHx8DQo+ID4gPiA+ ICsgICAgICBTdGFja1N3aXRjaERhdGEtPkV4Y2VwdGlvbnMgPT0gTlVMTCB8fA0KPiA+ID4gPiAr ICAgICAgU3RhY2tTd2l0Y2hEYXRhLT5FeGNlcHRpb25OdW1iZXIgPT0gMCB8fA0KPiA+ID4gPiAr ICAgICAgU3RhY2tTd2l0Y2hEYXRhLT5HZHRUYWJsZSA9PSBOVUxMIHx8DQo+ID4gPiA+ICsgICAg ICBTdGFja1N3aXRjaERhdGEtPklkdFRhYmxlID09IE5VTEwgfHwNCj4gPiA+ID4gKyAgICAgIFN0 YWNrU3dpdGNoRGF0YS0+VHNzRGVzYyA9PSBOVUxMIHx8DQo+ID4gPiA+ICsgICAgICBTdGFja1N3 aXRjaERhdGEtPlRzcyA9PSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vDQo+ID4g PiA+ICsgIC8vIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHRoYXQgdGhlIEdEVCB0YWJs ZSwgbm8gbWF0dGVyIHRoZSBleGlzdGluZw0KPiA+ID4gPiArICAvLyBvbmUgb3IgbmV3bHkgYWxs b2NhdGVkLCBoYXMgZW5vdWdoIHNwYWNlIHRvIGhvbGQgZGVzY3JpcHRvcnMgZm9yDQo+ID4gPiBl eGNlcHRpb24NCj4gPiA+ID4gKyAgLy8gdGFzay1zdGF0ZSBzZWdtZW50cy4NCj4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4gKyAgaWYgKCgoVUlOVE4pU3RhY2tTd2l0Y2hEYXRhLT5HZHRUYWJsZSAmIChJ QTMyX0dEVF9BTElHTk1FTlQgLQ0KPiAxKSkgIT0NCj4gPiAwKQ0KPiA+ID4gew0KPiA+ID4gPiAr ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBpZiAoKFVJTlROKVN0YWNrU3dpdGNoRGF0YS0+VHNzRGVzYyA8IChVSU5U TikoU3RhY2tTd2l0Y2hEYXRhLQ0KPiA+ID4gPkdkdFRhYmxlKSkNCj4gPiA+ID4gew0KPiA+ID4g PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBpZiAoKFVJTlROKVN0YWNrU3dpdGNoRGF0YS0+VHNzRGVzYyA+PQ0K PiA+ID4gPiArICAgICAgICAgICgoVUlOVE4pKFN0YWNrU3dpdGNoRGF0YS0+R2R0VGFibGUpICsN Cj4gPiBTdGFja1N3aXRjaERhdGEtPkdkdFNpemUpKQ0KPiA+ID4gPiB7DQo+ID4gPiA+ICsgICAg cmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgIEdkdFNpemUgPSAoVUlOVE4pU3RhY2tTd2l0Y2hEYXRhLT5Uc3NEZXNjIC0NCj4g PiA+ID4gKyAgICAgICAgICAgIChVSU5UTikoU3RhY2tTd2l0Y2hEYXRhLT5HZHRUYWJsZSkgKw0K PiA+ID4gPiArICAgICAgICAgICAgc2l6ZW9mIChJQTMyX1RTU19ERVNDUklQVE9SKSAqDQo+ID4g PiA+ICsgICAgICAgICAgICAoU3RhY2tTd2l0Y2hEYXRhLT5FeGNlcHRpb25OdW1iZXIgKyAxKTsN Cj4gPiA+ID4gKyAgaWYgKEdkdFNpemUgPiBTdGFja1N3aXRjaERhdGEtPkdkdFNpemUpIHsNCj4g PiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gPiArICB9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgLy8gSW5pdGlhbGl6ZSBuZXcgR0RU IHRhYmxlIGFuZC9vciBJRFQgdGFibGUsIGlmIGFueQ0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiAr ICBBc21SZWFkSWR0ciAoJklkdHIpOw0KPiA+ID4gPiArICBBc21SZWFkR2R0ciAoJkdkdHIpOw0K PiA+ID4gPiArICBpZiAoKFVJTlROKVN0YWNrU3dpdGNoRGF0YS0+R2R0VGFibGUgIT0gR2R0ci5C YXNlKSB7DQo+ID4gPiA+ICsgICAgQ29weU1lbSAoU3RhY2tTd2l0Y2hEYXRhLT5HZHRUYWJsZSwg KFZPSUQgKilHZHRyLkJhc2UsIEdkdHIuTGltaXQgKw0KPiA+IDEpOw0KPiA+ID4gPiArICAgIEdk dHIuQmFzZSA9IChVSU5UTilTdGFja1N3aXRjaERhdGEtPkdkdFRhYmxlOw0KPiA+ID4gPiArICAg IEdkdHIuTGltaXQgPSAoVUlOVDE2KVN0YWNrU3dpdGNoRGF0YS0+R2R0U2l6ZSAtIDE7DQo+ID4g PiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAoKFVJTlROKVN0YWNrU3dpdGNoRGF0 YS0+SWR0VGFibGUgIT0gSWR0ci5CYXNlKSB7DQo+ID4gPiA+ICsgICAgSWR0ci5CYXNlID0gKFVJ TlROKVN0YWNrU3dpdGNoRGF0YS0+SWR0VGFibGU7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0K PiA+ID4gPiArICAvLw0KPiA+ID4gPiArICAvLyBGaXh1cCBjdXJyZW50IHRhc2sgZGVzY3JpcHRv ci4gVGFzay1zdGF0ZSBzZWdtZW50IGZvciBjdXJyZW50IHRhc2sgd2lsbA0KPiA+ID4gPiArICAv LyBiZSBmaWxsZWQgYnkgcHJvY2Vzc29yIGR1cmluZyB0YXNrIHN3aXRjaGluZy4NCj4gPiA+ID4g KyAgLy8NCj4gPiA+ID4gKyAgVHNzRGVzYyA9IFN0YWNrU3dpdGNoRGF0YS0+VHNzRGVzYzsNCj4g PiA+ID4gKyAgVHNzICAgICA9IFN0YWNrU3dpdGNoRGF0YS0+VHNzOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsgIFRzc0Jhc2UgPSAoVUlOVE4pVHNzOw0KPiA+ID4gPiArICBUc3NEZXNjLT5CaXRzLkxp bWl0TG93ICAgPSBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQpIC0gMTsNCj4gPiA+ID4g KyAgVHNzRGVzYy0+Qml0cy5CYXNlTG93ICAgID0gKFVJTlQxNilUc3NCYXNlOw0KPiA+ID4gPiAr ICBUc3NEZXNjLT5CaXRzLkJhc2VNaWQgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMTYpOw0KPiA+ ID4gPiArICBUc3NEZXNjLT5CaXRzLlR5cGUgICAgICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4g PiA+ID4gKyAgVHNzRGVzYy0+Qml0cy5QICAgICAgICAgID0gMTsNCj4gPiA+ID4gKyAgVHNzRGVz Yy0+Qml0cy5MaW1pdEhpZ2ggID0gMDsNCj4gPiA+ID4gKyAgVHNzRGVzYy0+Qml0cy5CYXNlSGln aCAgID0gKFVJTlQ4KShUc3NCYXNlID4+IDI0KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAvLw0K PiA+ID4gPiArICAvLyBGaXh1cCBleGNlcHRpb24gdGFzayBkZXNjcmlwdG9yIGFuZCB0YXNrLXN0 YXRlIHNlZ21lbnQNCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgQXNtR2V0VHNzVGVtcGxhdGVN YXAgKCZUZW1wbGF0ZU1hcCk7DQo+ID4gPiA+ICsgIFN0YWNrVG9wID0gU3RhY2tTd2l0Y2hEYXRh LT5TdGFja1RvcCAtIENQVV9TVEFDS19BTElHTk1FTlQ7DQo+ID4gPiA+ICsgIFN0YWNrVG9wID0g KFVJTlROKUFMSUdOX1BPSU5URVIgKFN0YWNrVG9wLA0KPiA+IENQVV9TVEFDS19BTElHTk1FTlQp Ow0KPiA+ID4gPiArICBJZHRUYWJsZSA9IFN0YWNrU3dpdGNoRGF0YS0+SWR0VGFibGU7DQo+ID4g PiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFN0YWNrU3dpdGNoRGF0YS0+RXhjZXB0aW9u TnVtYmVyOyArK0luZGV4KSB7DQo+ID4gPiA+ICsgICAgVHNzRGVzYyArPSAxOw0KPiA+ID4gPiAr ICAgIFRzcyAgICAgKz0gMTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ICsg ICAgLy8gRml4dXAgVFNTIGRlc2NyaXB0b3INCj4gPiA+ID4gKyAgICAvLw0KPiA+ID4gPiArICAg IFRzc0Jhc2UgPSAoVUlOVE4pVHNzOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgVHNzRGVzYy0+ Qml0cy5MaW1pdExvdyAgPSBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQpIC0gMTsNCj4g PiA+ID4gKyAgICBUc3NEZXNjLT5CaXRzLkJhc2VMb3cgICA9IChVSU5UMTYpVHNzQmFzZTsNCj4g PiA+ID4gKyAgICBUc3NEZXNjLT5CaXRzLkJhc2VNaWQgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAx Nik7DQo+ID4gPiA+ICsgICAgVHNzRGVzYy0+Qml0cy5UeXBlICAgICAgPSBJQTMyX0dEVF9UWVBF X1RTUzsNCj4gPiA+ID4gKyAgICBUc3NEZXNjLT5CaXRzLlAgICAgICAgICA9IDE7DQo+ID4gPiA+ ICsgICAgVHNzRGVzYy0+Qml0cy5MaW1pdEhpZ2ggPSAwOw0KPiA+ID4gPiArICAgIFRzc0Rlc2Mt PkJpdHMuQmFzZUhpZ2ggID0gKFVJTlQ4KShUc3NCYXNlID4+IDI0KTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAgIC8vDQo+ID4gPiA+ICsgICAgLy8gRml4dXAgVFNTDQo+ID4gPiA+ICsgICAgLy8N Cj4gPiA+ID4gKyAgICBWZWN0b3IgPSBTdGFja1N3aXRjaERhdGEtPkV4Y2VwdGlvbnNbSW5kZXhd Ow0KPiA+ID4gPiArICAgIFRzcy0+RUlQICAgID0gKFVJTlQzMikoVGVtcGxhdGVNYXAuRXhjZXB0 aW9uU3RhcnQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVmVjdG9yICoN Cj4gPiA+ID4gVGVtcGxhdGVNYXAuRXhjZXB0aW9uU3R1YkhlYWRlclNpemUpOw0KPiA+ID4gPiAr ICAgIFRzcy0+RUZMQUdTID0gMHgyOw0KPiA+ID4gPiArICAgIFRzcy0+RVNQICAgID0gU3RhY2tU b3A7DQo+ID4gPiA+ICsgICAgVHNzLT5DUjMgICAgPSBBc21SZWFkQ3IzICgpOw0KPiA+ID4gPiAr ICAgIFRzcy0+RVMgICAgID0gQXNtUmVhZEVzICgpOw0KPiA+ID4gPiArICAgIFRzcy0+Q1MgICAg ID0gQXNtUmVhZENzICgpOw0KPiA+ID4gPiArICAgIFRzcy0+U1MgICAgID0gQXNtUmVhZFNzICgp Ow0KPiA+ID4gPiArICAgIFRzcy0+RFMgICAgID0gQXNtUmVhZERzICgpOw0KPiA+ID4gPiArICAg IFRzcy0+RlMgICAgID0gQXNtUmVhZEZzICgpOw0KPiA+ID4gPiArICAgIFRzcy0+R1MgICAgID0g QXNtUmVhZEdzICgpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgU3RhY2tUb3AgICAtPSBTdGFj a1N3aXRjaERhdGEtPlN0YWNrU2l6ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIC8vDQo+ID4g PiA+ICsgICAgLy8gVXBkYXRlIElEVCB0byB1c2UgVGFzayBHYXRlIGZvciBnaXZlbiBleGNlcHRp b24NCj4gPiA+ID4gKyAgICAvLw0KPiA+ID4gPiArICAgIElkdFRhYmxlW1ZlY3Rvcl0uQml0cy5P ZmZzZXRMb3cgID0gMDsNCj4gPiA+ID4gKyAgICBJZHRUYWJsZVtWZWN0b3JdLkJpdHMuU2VsZWN0 b3IgICA9IChVSU5UMTYpKChVSU5UTilUc3NEZXNjIC0NCj4gPiBHZHRyLkJhc2UpOw0KPiA+ID4g PiArICAgIElkdFRhYmxlW1ZlY3Rvcl0uQml0cy5SZXNlcnZlZF8wID0gMDsNCj4gPiA+ID4gKyAg ICBJZHRUYWJsZVtWZWN0b3JdLkJpdHMuR2F0ZVR5cGUgICA9IElBMzJfSURUX0dBVEVfVFlQRV9U QVNLOw0KPiA+ID4gPiArICAgIElkdFRhYmxlW1ZlY3Rvcl0uQml0cy5PZmZzZXRIaWdoID0gMDsN Cj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIC8vIFB1 Ymxpc2ggR0RUDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIEFzbVdyaXRlR2R0ciAoJkdkdHIp Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIC8vIExvYWQgY3VycmVudCB0 YXNrDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIEFzbVdyaXRlVHIgKChVSU5UMTYpKChVSU5U TilTdGFja1N3aXRjaERhdGEtPlRzc0Rlc2MgLSBHZHRyLkJhc2UpKTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAvLw0KPiA+ID4gPiArICAvLyBQdWJsaXNoIElEVA0KPiA+ID4gPiArICAvLw0KPiA+ ID4gPiArICBBc21Xcml0ZUlkdHIgKCZJZHRyKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICByZXR1 cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gIC8qKg0KPiA+ ID4gPiAgICBEaXNwbGF5IHByb2Nlc3NvciBjb250ZXh0Lg0KPiA+ID4gPg0KPiA+ID4gPiBkaWZm IC0tZ2l0DQo+ID4gPiA+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+ID4gPiA+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+ID4gPiA+ IGluZGV4IGE4ZDM1NTZhODAuLmQ5ZGVkNTk3N2YgMTAwNjQ0DQo+ID4gPiA+IC0tLQ0KPiBhL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEludGVycnVw dERlZnMuaA0KPiA+ID4gPiArKysNCj4gPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL0lhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiA+ID4gPiBAQCAtNDEsNCAr NDEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4gPiAgICBVSU5UOCAgICAgICBIb29rQWZ0 ZXJTdHViSGVhZGVyQ29kZVtIT09LQUZURVJfU1RVQl9TSVpFXTsNCj4gPiA+ID4gIH0gUkVTRVJW RURfVkVDVE9SU19EQVRBOw0KPiA+ID4gPg0KPiA+ID4gPiArI2RlZmluZSBDUFVfVFNTX0RFU0Nf U0laRSBcDQo+ID4gPiA+ICsgIChzaXplb2YgKElBMzJfVFNTX0RFU0NSSVBUT1IpICogXA0KPiA+ ID4gPiArICAgKFBjZEdldFNpemUgKFBjZENwdVN0YWNrU3dpdGNoRXhjZXB0aW9uTGlzdCkgKyAx KSkNCj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBDUFVfVFNTX1NJWkUgXA0KPiA+ID4gPiAr ICAoc2l6ZW9mIChJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCkgKiBcDQo+ID4gPiA+ICsgICAoUGNk R2V0U2l6ZSAoUGNkQ3B1U3RhY2tTd2l0Y2hFeGNlcHRpb25MaXN0KSArIDEpKQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPg0KPiA+ID4NCj4g Pg0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvRXhj ZXB0aW9uVHNzRW50cnlBc20ubmFzDQo+ID4gPiA+IG0NCj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4g Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0V4Y2VwdGlv blRzc0VudHJ5QXNtLm5hcw0KPiA+ID4gPiBtDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLjYyYmNlZGVhMWENCj4gPiA+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ID4gPiArKysNCj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4gYi9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5h cw0KPiA+ID4gPiBtDQo+ID4gPiA+IEBAIC0wLDAgKzEsMzk4IEBADQo+ID4gPiA+ICs7LS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIDsNCj4gPiA+ID4gKzsgQ29weXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ICs7IFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiA+ID4gKzsgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlDQo+IEJTRA0KPiA+ID4gPiBMaWNlbnNlDQo+ID4gPiA+ICs7IHdoaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUN Cj4gPiA+IGZvdW5kDQo+ID4gPiA+IGF0DQo+ID4gPiA+ICs7IGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAuDQo+ID4gPiA+ICs7DQo+ID4gPiA+ICs7IFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+ID4gPiBCQVNJUywNCj4gPiA+ID4gKzsgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gPiBFWFBSRVNTDQo+ID4gPiA+IE9SIElN UExJRUQuDQo+ID4gPiA+ICs7DQo+ID4gPiA+ICs7IE1vZHVsZSBOYW1lOg0KPiA+ID4gPiArOw0K PiA+ID4gPiArOyAgIEV4Y2VwdGlvblRzc0VudHJ5QXNtLkFzbQ0KPiA+ID4gPiArOw0KPiA+ID4g PiArOyBBYnN0cmFjdDoNCj4gPiA+ID4gKzsNCj4gPiA+ID4gKzsgICBJQTMyIENQVSBFeGNlcHRp b24gSGFuZGxlciB3aXRoIFNlcGFyYXRlIFN0YWNrDQo+ID4gPiA+ICs7DQo+ID4gPiA+ICs7IE5v dGVzOg0KPiA+ID4gPiArOw0KPiA+ID4gPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4g PiArDQo+ID4gPiA+ICs7DQo+ID4gPiA+ICs7IElBMzIgVFNTIE1lbW9yeSBMYXlvdXQgRGVzY3Jp cHRpb24NCj4gPiA+ID4gKzsNCj4gPiA+ID4gK3N0cnVjIElBMzJfVFNTDQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICByZXN3 IDENCj4gPiA+ID4gKyAgLkVTUDA6ICAgIHJlc2QgMQ0KPiA+ID4gPiArICAuU1MwOiAgICAgcmVz dyAxDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiA+ID4gPiArICAuRVNQ MTogICAgcmVzZCAxDQo+ID4gPiA+ICsgIC5TUzE6ICAgICByZXN3IDENCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgcmVzdyAxDQo+ID4gPiA+ICsgIC5FU1AyOiAgICByZXNkIDENCj4gPiA+ ID4gKyAgLlNTMjogICAgIHJlc3cgMQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICByZXN3 IDENCj4gPiA+ID4gKyAgLl9DUjM6ICAgIHJlc2QgMQ0KPiA+ID4gPiArICAuRUlQOiAgICAgcmVz ZCAxDQo+ID4gPiA+ICsgIC5FRkxBR1M6ICByZXNkIDENCj4gPiA+ID4gKyAgLl9FQVg6ICAgIHJl c2QgMQ0KPiA+ID4gPiArICAuX0VDWDogICAgcmVzZCAxDQo+ID4gPiA+ICsgIC5fRURYOiAgICBy ZXNkIDENCj4gPiA+ID4gKyAgLl9FQlg6ICAgIHJlc2QgMQ0KPiA+ID4gPiArICAuX0VTUDogICAg cmVzZCAxDQo+ID4gPiA+ICsgIC5fRUJQOiAgICByZXNkIDENCj4gPiA+ID4gKyAgLl9FU0k6ICAg IHJlc2QgMQ0KPiA+ID4gPiArICAuX0VESTogICAgcmVzZCAxDQo+ID4gPiA+ICsgIC5fRVM6ICAg ICByZXN3IDENCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ID4gPiA+ICsg IC5fQ1M6ICAgICByZXN3IDENCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ ID4gPiA+ICsgIC5fU1M6ICAgICByZXN3IDENCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg cmVzdyAxDQo+ID4gPiA+ICsgIC5fRFM6ICAgICByZXN3IDENCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgcmVzdyAxDQo+ID4gPiA+ICsgIC5fRlM6ICAgICByZXN3IDENCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ID4gPiA+ICsgIC5fR1M6ICAgICByZXN3IDENCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ID4gPiA+ICsgIC5MRFQ6ICAgICBy ZXN3IDENCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICByZXN3 IDENCj4gPiA+ID4gK2VuZHN0cnVjDQo+ID4gPiA+ICsNCj4gPiA+ID4gKzsNCj4gPiA+ID4gKzsg Q29tbW9uRXhjZXB0aW9uSGFuZGxlcigpDQo+ID4gPiA+ICs7DQo+ID4gPiA+ICtleHRlcm4gQVNN X1BGWChDb21tb25FeGNlcHRpb25IYW5kbGVyKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtTRUNUSU9O IC5kYXRhDQo+ID4gPiA+ICsNCj4gPiA+ID4gK1NFQ1RJT04gLnRleHQNCj4gPiA+ID4gKw0KPiA+ ID4gPiArQUxJR04gICA4DQo+ID4gPiA+ICsNCj4gPiA+ID4gKzsNCj4gPiA+ID4gKzsgRXhjZXB0 aW9uIGhhbmRsZXIgc3R1YiB0YWJsZQ0KPiA+ID4gPiArOw0KPiA+ID4gPiArQXNtRXhjZXB0aW9u RW50cnlCZWdpbjoNCj4gPiA+ID4gKyVhc3NpZ24gVmVjdG9yIDANCj4gPiA+ID4gKyVyZXAgIDMy DQo+ID4gPiA+ICsNCj4gPiA+ID4gK0RvSXJldCVbVmVjdG9yXToNCj4gPiA+ID4gKyAgICBpcmV0 ZA0KPiA+ID4gPiArQVNNX1BGWChFeGNlcHRpb25UYXNrU3d0aWNoRW50cnklW1ZlY3Rvcl0pOg0K PiA+ID4gPiArICAgIGRiICAgICAgMHg2YSAgICAgICAgOyBwdXNoICAjVmVjdG9yTnVtDQo+ID4g PiA+ICsgICAgZGIgICAgICAlW1ZlY3Rvcl0NCj4gPiA+ID4gKyAgICBtb3YgICAgIGVheCwgQVNN X1BGWChDb21tb25UYXNrU3d0aWNoRW50cnlQb2ludCkNCj4gPiA+ID4gKyAgICBjYWxsICAgIGVh eA0KPiA+ID4gPiArICAgIG1vdiAgICAgZXNwLCBlYXggICAgOyBSZXN0b3JlIHN0YWNrIHRvcA0K PiA+ID4gPiArICAgIGptcCAgICAgRG9JcmV0JVtWZWN0b3JdDQo+ID4gPiA+ICsNCj4gPiA+ID4g KyVhc3NpZ24gVmVjdG9yIFZlY3RvcisxDQo+ID4gPiA+ICslZW5kcmVwDQo+ID4gPiA+ICtBc21F eGNlcHRpb25FbnRyeUVuZDoNCj4gPiA+ID4gKw0KPiA+ID4gPiArOw0KPiA+ID4gPiArOyBDb21t b24gcGFydCBvZiBleGNlcHRpb24gaGFuZGxlcg0KPiA+ID4gPiArOw0KPiA+ID4gPiArZ2xvYmFs IEFTTV9QRlgoQ29tbW9uVGFza1N3dGljaEVudHJ5UG9pbnQpDQo+ID4gPiA+ICtBU01fUEZYKENv bW1vblRhc2tTd3RpY2hFbnRyeVBvaW50KToNCj4gPiA+ID4gKyAgICA7DQo+ID4gPiA+ICsgICAg OyBTdGFjazoNCj4gPiA+ID4gKyAgICA7ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLSBFQlAg LSA4DQo+ID4gPiA+ICsgICAgOyArICAgICAgIFRTUyBCYXNlICAgICAgKw0KPiA+ID4gPiArICAg IDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCAtIDQNCj4gPiA+ID4gKyAgICA7ICsg ICAgICBDUFVJRC5FRFggICAgICArDQo+ID4gPiA+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0t LS0tKyA8LS0gRUJQDQo+ID4gPiA+ICsgICAgOyArICAgICAgICAgRUlQICAgICAgICAgKw0KPiA+ ID4gPiArICAgIDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCArIDQNCj4gPiA+ID4g KyAgICA7ICsgICAgVmVjdG9yIE51bWJlciAgICArDQo+ID4gPiA+ICsgICAgOyArLS0tLS0tLS0t LS0tLS0tLS0tLS0tKyA8LS0gRUJQICsgOA0KPiA+ID4gPiArICAgIDsgKyAgICBFcnJvciBDb2Rl ICAgICAgICsNCj4gPiA+ID4gKyAgICA7ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4gPiA+ ICsgICAgOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgbW92ICAgICBlYnAsIGVzcCAgICAgICAg ICAgICAgICAgICAgOyBTdGFjayBmcmFtZQ0KPiA+ID4gPiArDQo+ID4gPiA+ICs7IFVzZSBDUFVJ RCB0byBkZXRlcm1pbmUgaWYgRlhTQVZFL0ZYUkVTVE9SIGFuZCBERSBhcmUgc3VwcG9ydGVkDQo+ ID4gPiA+ICsgICAgbW92ICAgICBlYXgsIDENCj4gPiA+ID4gKyAgICBjcHVpZA0KPiA+ID4gPiAr ICAgIHB1c2ggICAgZWR4DQo+ID4gPiA+ICsNCj4gPiA+ID4gKzsgR2V0IFRTUyBiYXNlIG9mIGlu dGVycnVwdGVkIHRhc2sgdGhyb3VnaCBQcmV2aW91c1Rhc2tMaW5rIGZpZWxkIGluDQo+ID4gPiA+ ICs7IGN1cnJlbnQgVFNTIGJhc2UNCj4gPiA+ID4gKyAgICBzdWIgICAgIGVzcCwgOA0KPiA+ID4g PiArICAgIHNnZHQgICAgW2VzcCArIDJdDQo+ID4gPiA+ICsgICAgbW92ICAgICBlYXgsIFtlc3Ag KyA0XSAgICAgICAgICAgICAgOyBHRFQgYmFzZQ0KPiA+ID4gPiArICAgIGFkZCAgICAgZXNwLCA4 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICB4b3IgICAgIGVieCwgZWJ4DQo+ID4gPiA+ICsgICAg c3RyICAgICBieCAgICAgICAgICAgICAgICAgICAgICAgICAgOyBDdXJyZW50IFRSDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgICBtb3YgICAgIGVjeCwgW2VheCArIGVieCArIDJdDQo+ID4gPiA+ICsg ICAgc2hsICAgICBlY3gsIDgNCj4gPiA+ID4gKyAgICBtb3YgICAgIGNsLCBbZWF4ICsgZWJ4ICsg N10NCj4gPiA+ID4gKyAgICByb3IgICAgIGVjeCwgOCAgICAgICAgICAgICAgICAgICAgICA7IGVj eCA9IEN1cnJlbnQgVFNTIGJhc2UNCj4gPiA+ID4gKyAgICBwdXNoICAgIGVjeCAgICAgICAgICAg ICAgICAgICAgICAgICA7IGtlZXAgaXQgaW4gc3RhY2sgZm9yIGxhdGVyIHVzZQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgICAgbW92enggICBlYngsIHdvcmQgW2VjeF0gICAgICAgICAgICAgOyBQcmV2 aW91cyBUYXNrIExpbmsNCj4gPiA+ID4gKyAgICBtb3YgICAgIGVjeCwgW2VheCArIGVieCArIDJd DQo+ID4gPiA+ICsgICAgc2hsICAgICBlY3gsIDgNCj4gPiA+ID4gKyAgICBtb3YgICAgIGNsLCBb ZWF4ICsgZWJ4ICsgN10NCj4gPiA+ID4gKyAgICByb3IgICAgIGVjeCwgOCAgICAgICAgICAgICAg ICAgICAgICA7IGVjeCA9IFByZXZpb3VzIFRTUyBiYXNlDQo+ID4gPiA+ICsNCj4gPiA+ID4gKzsN Cj4gPiA+ID4gKzsgQWxpZ24gc3RhY2sgdG8gbWFrZSBzdXJlIHRoYXQgRUZJX0ZYX1NBVkVfU1RB VEVfSUEzMiBvZg0KPiA+ID4gPiBFRklfU1lTVEVNX0NPTlRFWFRfSUEzMg0KPiA+ID4gPiArOyBp cyAxNi1ieXRlIGFsaWduZWQNCj4gPiA+ID4gKzsNCj4gPiA+ID4gKyAgICBhbmQgICAgIGVzcCwg MHhmZmZmZmZmMA0KPiA+ID4gPiArICAgIHN1YiAgICAgZXNwLCAxMg0KPiA+ID4gPiArDQo+ID4g PiA+ICs7OyBVSU5UMzIgIEVkaSwgRXNpLCBFYnAsIEVzcCwgRWJ4LCBFZHgsIEVjeCwgRWF4Ow0K PiA+ID4gPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQVhdDQo+ID4gPiA+ ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VDWF0NCj4gPiA+ID4gKyAgICBw dXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRURYXQ0KPiA+ID4gPiArICAgIHB1c2ggICAg ZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQlhdDQo+ID4gPiA+ICsgICAgcHVzaCAgICBkd29yZCBb ZWN4ICsgSUEzMl9UU1MuX0VTUF0NCj4gPiA+ID4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJ QTMyX1RTUy5fRUJQXQ0KPiA+ID4gPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNT Ll9FU0ldDQo+ID4gPiA+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VESV0N Cj4gPiA+ID4gKw0KPiA+ID4gPiArOzsgVUlOVDMyICBHcywgRnMsIEVzLCBEcywgQ3MsIFNzOw0K PiA+ID4gPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fU1NdDQo+ID4g PiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4 ICsgSUEzMl9UU1MuX0NTXQ0KPiA+ID4gPiArICAgIHB1c2ggICAgZWF4DQo+ID4gPiA+ICsgICAg bW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9EU10NCj4gPiA+ID4gKyAgICBwdXNo ICAgIGVheA0KPiA+ID4gPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5f RVNdDQo+ID4gPiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Z6eCAgIGVheCwg d29yZCBbZWN4ICsgSUEzMl9UU1MuX0ZTXQ0KPiA+ID4gPiArICAgIHB1c2ggICAgZWF4DQo+ID4g PiA+ICsgICAgbW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9HU10NCj4gPiA+ID4g KyAgICBwdXNoICAgIGVheA0KPiA+ID4gPiArDQo+ID4gPiA+ICs7OyBVSU5UMzIgIEVpcDsNCj4g PiA+ID4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FSVBdDQo+ID4gPiA+ICsN Cj4gPiA+ID4gKzs7IFVJTlQzMiAgR2R0clsyXSwgSWR0clsyXTsNCj4gPiA+ID4gKyAgICBzdWIg ICAgIGVzcCwgOA0KPiA+ID4gPiArICAgIHNpZHQgICAgW2VzcF0NCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGVheCwgW2VzcCArIDJdDQo+ID4gPiA+ICsgICAgeGNoZyAgICBlYXgsIFtlc3BdDQo+ID4g PiA+ICsgICAgYW5kICAgICBlYXgsIDB4RkZGRg0KPiA+ID4gPiArICAgIG1vdiAgICAgW2VzcCs0 XSwgZWF4DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBzdWIgICAgIGVzcCwgOA0KPiA+ID4gPiAr ICAgIHNnZHQgICAgW2VzcF0NCj4gPiA+ID4gKyAgICBtb3YgICAgIGVheCwgW2VzcCArIDJdDQo+ ID4gPiA+ICsgICAgeGNoZyAgICBlYXgsIFtlc3BdDQo+ID4gPiA+ICsgICAgYW5kICAgICBlYXgs IDB4RkZGRg0KPiA+ID4gPiArICAgIG1vdiAgICAgW2VzcCs0XSwgZWF4DQo+ID4gPiA+ICsNCj4g PiA+ID4gKzs7IFVJTlQzMiAgTGR0ciwgVHI7DQo+ID4gPiA+ICsgICAgbW92ICAgICBlYXgsIGVi eCAgICA7IGVieCBzdGlsbCBrZWVwcyBzZWxlY3RvciBvZiBpbnRlcnJ1cHRlZCB0YXNrDQo+ID4g PiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4 ICsgSUEzMl9UU1MuTERUXQ0KPiA+ID4gPiArICAgIHB1c2ggICAgZWF4DQo+ID4gPiA+ICsNCj4g PiA+ID4gKzs7IFVJTlQzMiAgRUZsYWdzOw0KPiA+ID4gPiArICAgIHB1c2ggICAgZHdvcmQgW2Vj eCArIElBMzJfVFNTLkVGTEFHU10NCj4gPiA+ID4gKw0KPiA+ID4gPiArOzsgVUlOVDMyICBDcjAs IENyMSwgQ3IyLCBDcjMsIENyNDsNCj4gPiA+ID4gKyAgICBtb3YgICAgIGVheCwgY3I0DQo+ID4g PiA+ICsgICAgcHVzaCAgICBlYXggICAgICAgICAgICAgOyBwdXNoIGNyNCBmaXJzdGx5DQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgICBtb3YgICAgIGVkeCwgW2VicCAtIDRdICA7IGNwdWlkLmVkeA0K PiA+ID4gPiArICAgIHRlc3QgICAgZWR4LCBCSVQyNCAgICAgIDsgVGVzdCBmb3IgRlhTQVZFL0ZY UkVTVE9SIHN1cHBvcnQNCj4gPiA+ID4gKyAgICBqeiAgICAgIC4xDQo+ID4gPiA+ICsgICAgb3Ig ICAgICBlYXgsIEJJVDkgICAgICAgOyBTZXQgQ1I0Lk9TRlhTUg0KPiA+ID4gPiArLjE6DQo+ID4g PiA+ICsgICAgdGVzdCAgICBlZHgsIEJJVDIgICAgICAgOyBUZXN0IGZvciBEZWJ1Z2dpbmcgRXh0 ZW5zaW9ucyBzdXBwb3J0DQo+ID4gPiA+ICsgICAganogICAgICAuMg0KPiA+ID4gPiArICAgIG9y ICAgICAgZWF4LCBCSVQzICAgICAgIDsgU2V0IENSNC5ERQ0KPiA+ID4gPiArLjI6DQo+ID4gPiA+ ICsgICAgbW92ICAgICBjcjQsIGVheA0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgbW92ICAgICBl YXgsIGNyMw0KPiA+ID4gPiArICAgIHB1c2ggICAgZWF4DQo+ID4gPiA+ICsgICAgbW92ICAgICBl YXgsIGNyMg0KPiA+ID4gPiArICAgIHB1c2ggICAgZWF4DQo+ID4gPiA+ICsgICAgeG9yICAgICBl YXgsIGVheA0KPiA+ID4gPiArICAgIHB1c2ggICAgZWF4DQo+ID4gPiA+ICsgICAgbW92ICAgICBl YXgsIGNyMA0KPiA+ID4gPiArICAgIHB1c2ggICAgZWF4DQo+ID4gPiA+ICsNCj4gPiA+ID4gKzs7 IFVJTlQzMiAgRHIwLCBEcjEsIERyMiwgRHIzLCBEcjYsIERyNzsNCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGVheCwgZHI3DQo+ID4gPiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGVheCwgZHI2DQo+ID4gPiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGVheCwgZHIzDQo+ID4gPiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGVheCwgZHIyDQo+ID4gPiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGVheCwgZHIxDQo+ID4gPiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGVheCwgZHIwDQo+ID4gPiA+ICsgICAgcHVzaCAgICBlYXgNCj4gPiA+ID4gKw0KPiA+ID4g PiArOzsgRlhfU0FWRV9TVEFURV9JQTMyIEZ4U2F2ZVN0YXRlOw0KPiA+ID4gPiArOzsgQ2xlYXIg VFMgYml0IGluIENSMCB0byBhdm9pZCBEZXZpY2UgTm90IEF2YWlsYWJsZSBFeGNlcHRpb24gKCNO TSkNCj4gPiA+ID4gKzs7IHdoZW4gZXhlY3V0aW5nIGZ4c2F2ZS9meHJzdG9yIGluc3RydWN0aW9u DQo+ID4gPiA+ICsgICAgdGVzdCAgICBlZHgsIEJJVDI0ICA7IFRlc3QgZm9yIEZYU0FWRS9GWFJF U1RPUiBzdXBwb3J0Lg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgOyBlZHggc3Rp bGwgY29udGFpbnMgcmVzdWx0IGZyb20gQ1BVSUQgYWJvdmUNCj4gPiA+ID4gKyAgICBqeiAgICAg IC4zDQo+ID4gPiA+ICsgICAgY2x0cw0KPiA+ID4gPiArICAgIHN1YiAgICAgZXNwLCA1MTINCj4g PiA+ID4gKyAgICBtb3YgICAgIGVkaSwgZXNwDQo+ID4gPiA+ICsgICAgZGIgICAgICAweGYsIDB4 YWUsIDB4NyA7ZnhzYXZlIFtlZGldDQo+ID4gPiA+ICsuMzoNCj4gPiA+ID4gKw0KPiA+ID4gPiAr OzsgVUlOVDMyICBFeGNlcHRpb25EYXRhOw0KPiA+ID4gPiArICAgIHB1c2ggICAgZHdvcmQgW2Vi cCArIDhdDQo+ID4gPiA+ICsNCj4gPiA+ID4gKzs7IFVFRkkgY2FsbGluZyBjb252ZW50aW9uIGZv ciBJQTMyIHJlcXVpcmVzIHRoYXQgRGlyZWN0aW9uIGZsYWcgaW4gRUZMQUdzIGlzDQo+ID4gPiBj bGVhcg0KPiA+ID4gPiArICAgIGNsZA0KPiA+ID4gPiArDQo+ID4gPiA+ICs7OyBjYWxsIGludG8g ZXhjZXB0aW9uIGhhbmRsZXINCj4gPiA+ID4gKyAgICBtb3YgICAgIGVzaSwgZWN4ICAgICAgICAg ICAgOyBLZWVwIFRTUyBiYXNlIHRvIGF2b2lkIG92ZXJ3cml0ZQ0KPiA+ID4gPiArICAgIG1vdiAg ICAgZWF4LCBBU01fUEZYKENvbW1vbkV4Y2VwdGlvbkhhbmRsZXIpDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKzs7IFByZXBhcmUgcGFyYW1ldGVyIGFuZCBjYWxsDQo+ID4gPiA+ICsgICAgbW92ICAgICBl ZHgsIGVzcA0KPiA+ID4gPiArICAgIHB1c2ggICAgZWR4ICAgICAgICAgICAgICAgICA7IEVGSV9T WVNURU1fQ09OVEVYVA0KPiA+ID4gPiArICAgIHB1c2ggICAgZHdvcmQgW2VicCArIDRdICAgICA7 IEVGSV9FWENFUFRJT05fVFlQRSAodmVjdG9yIG51bWJlcikNCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICAgIDsNCj4gPiA+ID4gKyAgICA7IENhbGwgRXh0ZXJuYWwgRXhjZXB0aW9uIEhhbmRsZXINCj4g PiA+ID4gKyAgICA7DQo+ID4gPiA+ICsgICAgY2FsbCAgICBlYXgNCj4gPiA+ID4gKyAgICBhZGQg ICAgIGVzcCwgOCAgICAgICAgICAgICAgOyBSZXN0b3JlIHN0YWNrIGJlZm9yZSBjYWxsaW5nDQo+ ID4gPiA+ICsgICAgbW92ICAgICBlY3gsIGVzaSAgICAgICAgICAgIDsgUmVzdG9yZSBUU1MgYmFz ZQ0KPiA+ID4gPiArDQo+ID4gPiA+ICs7OyBVSU5UMzIgIEV4Y2VwdGlvbkRhdGE7DQo+ID4gPiA+ ICsgICAgYWRkICAgICBlc3AsIDQNCj4gPiA+ID4gKw0KPiA+ID4gPiArOzsgRlhfU0FWRV9TVEFU RV9JQTMyIEZ4U2F2ZVN0YXRlOw0KPiA+ID4gPiArICAgIG1vdiAgICAgZWR4LCBbZWJwIC0gNF0g IDsgY3B1aWQuZWR4DQo+ID4gPiA+ICsgICAgdGVzdCAgICBlZHgsIEJJVDI0ICAgICAgOyBUZXN0 IGZvciBGWFNBVkUvRlhSRVNUT1Igc3VwcG9ydA0KPiA+ID4gPiArICAgIGp6ICAgICAgLjQNCj4g PiA+ID4gKyAgICBtb3YgICAgIGVzaSwgZXNwDQo+ID4gPiA+ICsgICAgZGIgICAgICAweGYsIDB4 YWUsIDB4ZSAgOyBmeHJzdG9yIFtlc2ldDQo+ID4gPiA+ICsuNDoNCj4gPiA+ID4gKyAgICBhZGQg ICAgIGVzcCwgNTEyDQo+ID4gPiA+ICsNCj4gPiA+ID4gKzs7IFVJTlQzMiAgRHIwLCBEcjEsIERy MiwgRHIzLCBEcjYsIERyNzsNCj4gPiA+ID4gKzs7IFNraXAgcmVzdG9yYXRpb24gb2YgRFJ4IHJl Z2lzdGVycyB0byBzdXBwb3J0IGRlYnVnZ2Vycw0KPiA+ID4gPiArOzsgdGhhdCBzZXQgYnJlYWtw b2ludHMgaW4gaW50ZXJydXB0L2V4Y2VwdGlvbiBjb250ZXh0DQo+ID4gPiA+ICsgICAgYWRkICAg ICBlc3AsIDQgKiA2DQo+ID4gPiA+ICsNCj4gPiA+ID4gKzs7IFVJTlQzMiAgQ3IwLCBDcjEsIENy MiwgQ3IzLCBDcjQ7DQo+ID4gPiA+ICsgICAgcG9wICAgICBlYXgNCj4gPiA+ID4gKyAgICBtb3Yg ICAgIGNyMCwgZWF4DQo+ID4gPiA+ICsgICAgYWRkICAgICBlc3AsIDQgICAgOyBub3QgZm9yIENy MQ0KPiA+ID4gPiArICAgIHBvcCAgICAgZWF4DQo+ID4gPiA+ICsgICAgbW92ICAgICBjcjIsIGVh eA0KPiA+ID4gPiArICAgIHBvcCAgICAgZWF4DQo+ID4gPiA+ICsgICAgbW92ICAgICBkd29yZCBb ZWN4ICsgSUEzMl9UU1MuX0NSM10sIGVheA0KPiA+ID4gPiArICAgIHBvcCAgICAgZWF4DQo+ID4g PiA+ICsgICAgbW92ICAgICBjcjQsIGVheA0KPiA+ID4gPiArDQo+ID4gPiA+ICs7OyBVSU5UMzIg IEVGbGFnczsNCj4gPiA+ID4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FRkxB R1NdDQo+ID4gPiA+ICsgICAgbW92ICAgICBlYngsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FRkxB R1NdDQo+ID4gPiA+ICsgICAgYnRyICAgICBlYngsIDkgICAgICA7IERvICdjbGknDQo+ID4gPiA+ ICsgICAgbW92ICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdTXSwgZWJ4DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKzs7IFVJTlQzMiAgTGR0ciwgVHI7DQo+ID4gPiA+ICs7OyBVSU5UMzIgIEdk dHJbMl0sIElkdHJbMl07DQo+ID4gPiA+ICs7OyBCZXN0IG5vdCBsZXQgYW55b25lIG1lc3Mgd2l0 aCB0aGVzZSBwYXJ0aWN1bGFyIHJlZ2lzdGVycy4uLg0KPiA+ID4gPiArICAgIGFkZCAgICAgZXNw LCAyNA0KPiA+ID4gPiArDQo+ID4gPiA+ICs7OyBVSU5UMzIgIEVpcDsNCj4gPiA+ID4gKyAgICBw b3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FSVBdDQo+ID4gPiA+ICsNCj4gPiA+ID4gKzs7 IFVJTlQzMiAgR3MsIEZzLCBFcywgRHMsIENzLCBTczsNCj4gPiA+ID4gKzs7IE5PVEUgLSBtb2Rp ZmllZCBzZWdtZW50IHJlZ2lzdGVycyBjb3VsZCBoYW5nIHRoZSBkZWJ1Z2dlci4uLiAgV2UNCj4g PiA+ID4gKzs7ICAgICAgICBjb3VsZCBhdHRlbXB0IHRvIGluc3VsYXRlIG91cnNlbHZlcyBhZ2Fp bnN0IHRoaXMgcG9zc2liaWxpdHksDQo+ID4gPiA+ICs7OyAgICAgICAgYnV0IHRoYXQgcG9zZXMg cmlza3MgYXMgd2VsbC4NCj4gPiA+ID4gKzs7DQo+ID4gPiA+ICsgICAgcG9wICAgICBlYXgNCj4g PiA+ID4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fR1NdLCBheA0KPiA+ID4gPiArICAg IHBvcCAgICAgZWF4DQo+ID4gPiA+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0ZTXSwg YXgNCj4gPiA+ID4gKyAgICBwb3AgICAgIGVheA0KPiA+ID4gPiArbzE2IG1vdiAgICAgW2VjeCAr IElBMzJfVFNTLl9FU10sIGF4DQo+ID4gPiA+ICsgICAgcG9wICAgICBlYXgNCj4gPiA+ID4gK28x NiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fRFNdLCBheA0KPiA+ID4gPiArICAgIHBvcCAgICAg ZWF4DQo+ID4gPiA+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0NTXSwgYXgNCj4gPiA+ ID4gKyAgICBwb3AgICAgIGVheA0KPiA+ID4gPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNT Ll9TU10sIGF4DQo+ID4gPiA+ICsNCj4gPiA+ID4gKzs7IFVJTlQzMiAgRWRpLCBFc2ksIEVicCwg RXNwLCBFYngsIEVkeCwgRWN4LCBFYXg7DQo+ID4gPiA+ICsgICAgcG9wICAgICBkd29yZCBbZWN4 ICsgSUEzMl9UU1MuX0VESV0NCj4gPiA+ID4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMy X1RTUy5fRVNJXQ0KPiA+ID4gPiArICAgIGFkZCAgICAgZXNwLCA0ICAgOyBub3QgZm9yIGVicA0K PiA+ID4gPiArICAgIGFkZCAgICAgZXNwLCA0ICAgOyBub3QgZm9yIGVzcA0KPiA+ID4gPiArICAg IHBvcCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQlhdDQo+ID4gPiA+ICsgICAgcG9wICAg ICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VEWF0NCj4gPiA+ID4gKyAgICBwb3AgICAgIGR3b3Jk IFtlY3ggKyBJQTMyX1RTUy5fRUNYXQ0KPiA+ID4gPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCAr IElBMzJfVFNTLl9FQVhdDQo+ID4gPiA+ICsNCj4gPiA+ID4gKzsgU2V0IHNpbmdsZSBzdGVwIERC IyB0byBhbGxvdyBkZWJ1Z2dlciB0byBhYmxlIHRvIGdvIGJhY2sgdG8gdGhlIEVJUA0KPiA+ID4g PiArOyB3aGVyZSB0aGUgZXhjZXB0aW9uIGlzIHRyaWdnZXJlZC4NCj4gPiA+ID4gKw0KPiA+ID4g PiArOzsgQ3JlYXRlIHJldHVybiBjb250ZXh0IGZvciBpcmV0ZCBpbiBzdHViIGZ1bmN0aW9uDQo+ ID4gPiA+ICsgICAgbW92ICAgIGVheCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FU1BdICAgICAg OyBHZXQgb2xkIHN0YWNrDQo+ID4gcG9pbnRlcg0KPiA+ID4gPiArICAgIG1vdiAgICBlYngsIGR3 b3JkIFtlY3ggKyBJQTMyX1RTUy5FSVBdDQo+ID4gPiA+ICsgICAgbW92ICAgIFtlYXggLSAweGNd LCBlYnggICAgICAgICAgICAgICAgICAgICAgOyBjcmVhdGUgRUlQIGluIG9sZA0KPiA+IHN0YWNr DQo+ID4gPiA+ICsgICAgbW92enggIGVieCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0NTXQ0KPiA+ ID4gPiArICAgIG1vdiAgICBbZWF4IC0gMHg4XSwgZWJ4ICAgICAgICAgICAgICAgICAgICAgIDsg Y3JlYXRlIENTIGluIG9sZCBzdGFjaw0KPiA+ID4gPiArICAgIG1vdiAgICBlYngsIGR3b3JkIFtl Y3ggKyBJQTMyX1RTUy5FRkxBR1NdDQo+ID4gPiA+ICsgICAgYnRzICAgIGVieCwgOA0KPiA+ID4g PiArICAgIG1vdiAgICBbZWF4IC0gMHg0XSwgZWJ4ICAgICAgICAgICAgICAgICAgICAgIDsgY3Jl YXRlIGVmbGFncyBpbiBvbGQNCj4gPiBzdGFjaw0KPiA+ID4gPiArICAgIG1vdiAgICBkd29yZCBb ZWN4ICsgSUEzMl9UU1MuRUZMQUdTXSwgZWJ4ICAgIDsgdXBkYXRlIGVmbGFncyBpbiBvbGQNCj4g PiBUU1MNCj4gPiA+ID4gKyAgICBtb3YgICAgZWF4LCBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VT UF0gICAgICA7IEdldCBvbGQgc3RhY2sNCj4gPiBwb2ludGVyDQo+ID4gPiA+ICsgICAgc3ViICAg IGVheCwgMHhjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBtaW51cyAxMiBieXRlDQo+ ID4gPiA+ICsgICAgbW92ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSwgZWF4ICAgICAg OyBTZXQgbmV3IHN0YWNrDQo+ID4gcG9pbnRlcg0KPiA+ID4gPiArDQo+ID4gPiA+ICs7OyBSZXBs YWNlIHRoZSBFSVAgb2YgaW50ZXJydXB0ZWQgdGFzayB3aXRoIHN0dWIgZnVuY3Rpb24NCj4gPiA+ ID4gKyAgICBtb3YgICAgZWF4LCBBU01fUEZYKFNpbmdsZVN0ZXBTdHViRnVuY3Rpb24pDQo+ID4g PiA+ICsgICAgbW92ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FSVBdLCBlYXgNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICAgIG1vdiAgICAgZWN4LCBbZWJwIC0gOF0gICAgICAgICAgICAgICAgICAg ICAgIDsgR2V0IGN1cnJlbnQgVFNTIGJhc2UNCj4gPiA+ID4gKyAgICBtb3YgICAgIGVheCwgZHdv cmQgW2VjeCArIElBMzJfVFNTLl9FU1BdICAgICA7IFJldHVybiBjdXJyZW50IHN0YWNrDQo+ID4g dG9wDQo+ID4gPiA+ICsgICAgbW92ICAgICBlc3AsIGVicA0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICAgcmV0DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2dsb2JhbCBBU01fUEZYKFNpbmdsZVN0ZXBTdHVi RnVuY3Rpb24pDQo+ID4gPiA+ICtBU01fUEZYKFNpbmdsZVN0ZXBTdHViRnVuY3Rpb24pOg0KPiA+ ID4gPiArOw0KPiA+ID4gPiArOyB3ZSBuZWVkIGNsZWFuIFRTIGJpdCBpbiBDUjAgdG8gZXhlY3V0 ZQ0KPiA+ID4gPiArOyB4ODcgRlBVL01NWC9TU0UvU1NFMi9TU0UzL1NTU0UzL1NTRTQgaW5zdHJ1 Y3Rpb25zLg0KPiA+ID4gPiArOw0KPiA+ID4gPiArICAgIGNsdHMNCj4gPiA+ID4gKyAgICBpcmV0 ZA0KPiA+ID4gPiArDQo+ID4gPiA+ICtnbG9iYWwgQVNNX1BGWChBc21HZXRUc3NUZW1wbGF0ZU1h cCkNCj4gPiA+ID4gK0FTTV9QRlgoQXNtR2V0VHNzVGVtcGxhdGVNYXApOg0KPiA+ID4gPiArICAg IHB1c2ggICAgZWJwICAgICAgICAgICAgICAgICA7IEMgcHJvbG9nDQo+ID4gPiA+ICsgICAgbW92 ICAgICBlYnAsIGVzcA0KPiA+ID4gPiArICAgIHB1c2hhZA0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICAgbW92IGVieCwgZHdvcmQgW2VicCArIDB4OF0NCj4gPiA+ID4gKyAgICBtb3YgZHdvcmQgW2Vi eF0sICAgICAgIEFTTV9QRlgoRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MCkNCj4gPiA+ID4gKyAg ICBtb3YgZHdvcmQgW2VieCArIDB4NF0sIChBc21FeGNlcHRpb25FbnRyeUVuZCAtDQo+ID4gQXNt RXhjZXB0aW9uRW50cnlCZWdpbikNCj4gPiA+ID4gLyAzMg0KPiA+ID4gPiArICAgIG1vdiBkd29y ZCBbZWJ4ICsgMHg4XSwgMA0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgcG9wYWQNCj4gPiA+ID4g KyAgICBwb3AgICAgIGVicA0KPiA+ID4gPiArICAgIHJldA0KPiA+ID4gPiArDQo+ID4gPiA+IGRp ZmYgLS1naXQNCj4gPiA+ID4NCj4gPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+ID4gPiA+DQo+ID4gYi9V ZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25I YW5kbGVyTGliLmluZg0KPiA+ID4gPiBpbmRleCA3NTQ0MzI4OGE5Li40YzBkNDM1MTM2IDEwMDY0 NA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4NCj4gPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+ID4gPiA+ICsr Kw0KPiA+ID4gPg0KPiA+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYNCj4gPiA+ID4gQEAgLTMwLDYgKzMwLDcg QEANCj4gPiA+ID4gIFtTb3VyY2VzLklhMzJdDQo+ID4gPiA+ICAgIElhMzIvRXhjZXB0aW9uSGFu ZGxlckFzbS5hc20NCj4gPiA+ID4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLm5hc20NCj4g PiA+ID4gKyAgSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNtDQo+ID4gPiA+ICAgIElhMzIv RXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+ID4gPiA+ICAgIElhMzIvQXJjaEV4Y2VwdGlvbkhhbmRs ZXIuYw0KPiA+ID4gPiAgICBJYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gPiA+ID4gZGlmZiAt LWdpdA0KPiA+ID4gPg0KPiA+ID4NCj4gPg0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaQ0KPiA+ID4gPiBu Zg0KPiA+ID4gPg0KPiA+ID4NCj4gPg0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaQ0KPiA+ID4gPiBuZg0K PiA+ID4gPiBpbmRleCBkNzBhOTljMTAwLi5lNWMwM2MxNmM5IDEwMDY0NA0KPiA+ID4gPiAtLS0N Cj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9TZWNQZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmkNCj4gPiA+ID4gbmYNCj4g PiA+ID4gKysrDQo+ID4gPiA+DQo+ID4gPg0KPiA+DQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0Nw dUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pDQo+ID4g PiA+IG5mDQo+ID4gPiA+IEBAIC0zMCw2ICszMCw3IEBADQo+ID4gPiA+ICBbU291cmNlcy5JYTMy XQ0KPiA+ID4gPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+ID4gPiA+ICAgIElh MzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ID4gPiA+ICsgIElhMzIvRXhjZXB0aW9uVHNz RW50cnlBc20ubmFzbQ0KPiA+ID4gPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiA+ ID4gPiAgICBJYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gPiA+ID4gICAgSWEzMi9BcmNo SW50ZXJydXB0RGVmcy5oDQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4NCj4gPiA+DQo+ID4N Cj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9TbW1DcHVFeGNl cHRpb25IYW5kbGVyTGliLmluZg0KPiA+ID4gPg0KPiA+ID4NCj4gPg0KPiBiL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIu aW5mDQo+ID4gPiA+IGluZGV4IDYzNGZmY2IyMWQuLjU2Yjg3NWI3YzggMTAwNjQ0DQo+ID4gPiA+ IC0tLQ0KPiA+ID4gPg0KPiA+ID4NCj4gPg0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+ID4gPiA+ICsr Kw0KPiA+ID4gPg0KPiA+ID4NCj4gPg0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+ID4gPiA+IEBAIC0z MCw2ICszMCw3IEBADQo+ID4gPiA+ICBbU291cmNlcy5JYTMyXQ0KPiA+ID4gPiAgICBJYTMyL0V4 Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+ID4gPiA+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFz bS5uYXNtDQo+ID4gPiA+ICsgIElhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzbQ0KPiA+ID4g PiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiA+ID4gPiAgICBJYTMyL0FyY2hFeGNl cHRpb25IYW5kbGVyLmMNCj4gPiA+ID4gICAgSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+ID4g PiA+IGRpZmYgLS1naXQNCj4gPiA+ID4NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiA+ID4gPg0KPiBiL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9u SGFuZGxlci5jDQo+ID4gPiA+IGluZGV4IDY1ZjBjZmY2ODAuLjIxNGFhZmNjMTMgMTAwNjQ0DQo+ ID4gPiA+IC0tLQ0KPiA+ID4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiA+ID4gPiArKysNCj4gPiA+IGIvVWVm aUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hFeGNlcHRpb25I YW5kbGVyLmMNCj4gPiA+ID4gQEAgLTExMiw2ICsxMTIsMTM5IEBAIEFyY2hSZXN0b3JlRXhjZXB0 aW9uQ29udGV4dCAoDQo+ID4gPiA+ICAgIFN5c3RlbUNvbnRleHQuU3lzdGVtQ29udGV4dFg2NC0+ RXhjZXB0aW9uRGF0YSA9DQo+ID4gPiA+IFJlc2VydmVkVmVjdG9yc1tFeGNlcHRpb25UeXBlXS5F eGNlcHRpb25EYXRhOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ ICsgIFNldHVwIHNlcGFyYXRlIHN0YWNrIGZvciBnaXZlbiBleGNlcHRpb25zLg0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU3RhY2tTd2l0Y2hEYXRhICAgICAgUG9pbnRlciB0byBk YXRhIHJlcXVpcmVkIGZvciBzZXR1cGluZw0KPiA+IHVwDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RhY2sgc3dpdGNoLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIGV4Y2VwdGlvbnMgaGF2ZSBiZWVu DQo+ID4gc3VjY2Vzc2Z1bGx5DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICAgU3RhY2tTd2l0Y2hEYXRhIGNvbnRhaW5zIGludmFsaWQNCj4gPiA+ID4gY29udGVudC4N Cj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ICtF RklBUEkNCj4gPiA+ID4gK0FyY2hTZXR1cEV4Y3BldGlvblN0YWNrICgNCj4gPiA+ID4gKyAgSU4g RVhDRVBUSU9OX1NUQUNLX1NXSVRDSF9EQVRBICAgICAgICAqU3RhY2tTd2l0Y2hEYXRhDQo+ID4g PiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgSUEzMl9ERVNDUklQVE9SICAgICAgICAg ICAgICAgICAgIEdkdHI7DQo+ID4gPiA+ICsgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgICAg ICAgICBJZHRyOw0KPiA+ID4gPiArICBJQTMyX0lEVF9HQVRFX0RFU0NSSVBUT1IgICAgICAgICAg KklkdFRhYmxlOw0KPiA+ID4gPiArICBJQTMyX1RTU19ERVNDUklQVE9SICAgICAgICAgICAgICAg KlRzc0Rlc2M7DQo+ID4gPiA+ICsgIElBMzJfVEFTS19TVEFURV9TRUdNRU5UICAgICAgICAgICAq VHNzOw0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tU b3A7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsN Cj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRzc0Jhc2U7DQo+ ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZHRTaXplOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIGlmIChTdGFja1N3aXRjaERhdGEgPT0gTlVMTCB8fA0KPiA+ID4g PiArICAgICAgU3RhY2tTd2l0Y2hEYXRhLT5TdGFja1RvcCA9PSAwIHx8DQo+ID4gPiA+ICsgICAg ICBTdGFja1N3aXRjaERhdGEtPlN0YWNrU2l6ZSA9PSAwIHx8DQo+ID4gPiA+ICsgICAgICBTdGFj a1N3aXRjaERhdGEtPkV4Y2VwdGlvbnMgPT0gTlVMTCB8fA0KPiA+ID4gPiArICAgICAgU3RhY2tT d2l0Y2hEYXRhLT5FeGNlcHRpb25OdW1iZXIgPT0gMCB8fA0KPiA+ID4gPiArICAgICAgU3RhY2tT d2l0Y2hEYXRhLT5HZHRUYWJsZSA9PSBOVUxMIHx8DQo+ID4gPiA+ICsgICAgICBTdGFja1N3aXRj aERhdGEtPklkdFRhYmxlID09IE5VTEwgfHwNCj4gPiA+ID4gKyAgICAgIFN0YWNrU3dpdGNoRGF0 YS0+VHNzRGVzYyA9PSBOVUxMIHx8DQo+ID4gPiA+ICsgICAgICBTdGFja1N3aXRjaERhdGEtPlRz cyA9PSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN Cj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIC8vIFRo ZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHRoYXQgdGhlIEdEVCB0YWJsZSwgbm8gbWF0dGVy IHRoZSBleGlzdGluZw0KPiA+ID4gPiArICAvLyBvbmUgb3IgbmV3bHkgYWxsb2NhdGVkLCBoYXMg ZW5vdWdoIHNwYWNlIHRvIGhvbGQgZGVzY3JpcHRvcnMgZm9yDQo+ID4gPiBleGNlcHRpb24NCj4g PiA+ID4gKyAgLy8gdGFzay1zdGF0ZSBzZWdtZW50cy4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4g KyAgaWYgKCgoVUlOVE4pU3RhY2tTd2l0Y2hEYXRhLT5HZHRUYWJsZSAmIChJQTMyX0dEVF9BTElH Tk1FTlQgLQ0KPiAxKSkgIT0NCj4gPiAwKQ0KPiA+ID4gew0KPiA+ID4gPiArICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBpZiAoKFVJTlROKVN0YWNrU3dpdGNoRGF0YS0+VHNzRGVzYyA8IChVSU5UTikoU3RhY2tTd2l0 Y2hEYXRhLQ0KPiA+ID4gPkdkdFRhYmxlKSkNCj4gPiA+ID4gew0KPiA+ID4gPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4g PiArICBpZiAoKFVJTlROKVN0YWNrU3dpdGNoRGF0YS0+VHNzRGVzYyA+PQ0KPiA+ID4gPiArICAg ICAgICAgICgoVUlOVE4pKFN0YWNrU3dpdGNoRGF0YS0+R2R0VGFibGUpICsNCj4gPiBTdGFja1N3 aXRjaERhdGEtPkdkdFNpemUpKQ0KPiA+ID4gPiB7DQo+ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEdk dFNpemUgPSAoVUlOVE4pU3RhY2tTd2l0Y2hEYXRhLT5Uc3NEZXNjIC0NCj4gPiA+ID4gKyAgICAg ICAgICAgIChVSU5UTikoU3RhY2tTd2l0Y2hEYXRhLT5HZHRUYWJsZSkgKw0KPiA+ID4gPiArICAg ICAgICAgICAgc2l6ZW9mIChJQTMyX1RTU19ERVNDUklQVE9SKTsNCj4gPiA+ID4gKyAgaWYgKEdk dFNpemUgPiBTdGFja1N3aXRjaERhdGEtPkdkdFNpemUpIHsNCj4gPiA+ID4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgLy8NCj4gPiA+ID4gKyAgLy8gSW5pdGlhbGl6ZSBuZXcgR0RUIHRhYmxlIGFuZC9vciBJRFQg dGFibGUsIGlmIGFueQ0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiArICBBc21SZWFkSWR0ciAoJklk dHIpOw0KPiA+ID4gPiArICBBc21SZWFkR2R0ciAoJkdkdHIpOw0KPiA+ID4gPiArICBpZiAoKFVJ TlROKVN0YWNrU3dpdGNoRGF0YS0+R2R0VGFibGUgIT0gR2R0ci5CYXNlKSB7DQo+ID4gPiA+ICsg ICAgQ29weU1lbSAoU3RhY2tTd2l0Y2hEYXRhLT5HZHRUYWJsZSwgKFZPSUQgKilHZHRyLkJhc2Us IEdkdHIuTGltaXQgKw0KPiA+IDEpOw0KPiA+ID4gPiArICAgIEdkdHIuQmFzZSA9IChVSU5UTilT dGFja1N3aXRjaERhdGEtPkdkdFRhYmxlOw0KPiA+ID4gPiArICAgIEdkdHIuTGltaXQgPSAoVUlO VDE2KUdkdFNpemUgLSAxOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYg KChVSU5UTilTdGFja1N3aXRjaERhdGEtPklkdFRhYmxlICE9IElkdHIuQmFzZSkgew0KPiA+ID4g PiArICAgIElkdHIuQmFzZSA9IChVSU5UTilTdGFja1N3aXRjaERhdGEtPklkdFRhYmxlOw0KPiA+ ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgLy8gRml4dXAg Y3VycmVudCB0YXNrIGRlc2NyaXB0b3IuIFRhc2stc3RhdGUgc2VnbWVudCBmb3IgY3VycmVudCB0 YXNrIHdpbGwNCj4gPiA+ID4gKyAgLy8gYmUgZmlsbGVkIGJ5IHByb2Nlc3NvciBkdXJpbmcgdGFz ayBzd2l0Y2hpbmcuDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIFRzc0Rlc2MgPSBTdGFja1N3 aXRjaERhdGEtPlRzc0Rlc2M7DQo+ID4gPiA+ICsgIFRzcyAgICAgPSBTdGFja1N3aXRjaERhdGEt PlRzczsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBUc3NCYXNlID0gKFVJTlROKVRzczsNCj4gPiA+ ID4gKyAgVHNzRGVzYy0+Qml0cy5MaW1pdExvdyAgID0gc2l6ZW9mKElBMzJfVEFTS19TVEFURV9T RUdNRU5UKSAtIDE7DQo+ID4gPiA+ICsgIFRzc0Rlc2MtPkJpdHMuQmFzZUxvdyAgICA9IChVSU5U MTYpVHNzQmFzZTsNCj4gPiA+ID4gKyAgVHNzRGVzYy0+Qml0cy5CYXNlTWlkbCAgID0gKFVJTlQ4 KShUc3NCYXNlID4+IDE2KTsNCj4gPiA+ID4gKyAgVHNzRGVzYy0+Qml0cy5UeXBlICAgICAgID0g SUEzMl9HRFRfVFlQRV9UU1M7DQo+ID4gPiA+ICsgIFRzc0Rlc2MtPkJpdHMuUCAgICAgICAgICA9 IDE7DQo+ID4gPiA+ICsgIFRzc0Rlc2MtPkJpdHMuTGltaXRIaWdoICA9IDA7DQo+ID4gPiA+ICsg IFRzc0Rlc2MtPkJpdHMuQmFzZU1pZGggICA9IChVSU5UOCkoVHNzQmFzZSA+PiAyNCk7DQo+ID4g PiA+ICsgIFRzc0Rlc2MtPkJpdHMuQmFzZUhpZ2ggICA9IChVSU5UMzIpKFRzc0Jhc2UgPj4gMzIp Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ICsgIC8vIEZpeHVwIGV4Y2VwdGlv biB0YXNrIGRlc2NyaXB0b3IgYW5kIHRhc2stc3RhdGUgc2VnbWVudA0KPiA+ID4gPiArICAvLw0K PiA+ID4gPiArICBTdGFja1RvcCA9IFN0YWNrU3dpdGNoRGF0YS0+U3RhY2tUb3AgLSBDUFVfU1RB Q0tfQUxJR05NRU5UOw0KPiA+ID4gPiArICBTdGFja1RvcCA9IChVSU5UTilBTElHTl9QT0lOVEVS IChTdGFja1RvcCwNCj4gPiBDUFVfU1RBQ0tfQUxJR05NRU5UKTsNCj4gPiA+ID4gKyAgSWR0VGFi bGUgPSBTdGFja1N3aXRjaERhdGEtPklkdFRhYmxlOw0KPiA+ID4gPiArICBmb3IgKEluZGV4ID0g MDsgSW5kZXggPCBTdGFja1N3aXRjaERhdGEtPkV4Y2VwdGlvbk51bWJlcjsgKytJbmRleCkgew0K PiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ICsgICAgLy8gRml4dXAgSVNUDQo+ID4gPiA+ICsgICAg Ly8NCj4gPiA+ID4gKyAgICBUc3MtPklTVFtJbmRleF0gPSBTdGFja1RvcDsNCj4gPiA+ID4gKyAg ICBTdGFja1RvcCAtPSBTdGFja1N3aXRjaERhdGEtPlN0YWNrU2l6ZTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAgIC8vDQo+ID4gPiA+ICsgICAgLy8gU2V0IHRoZSBJU1QgZmllbGQgdG8gZW5hYmxl IGNvcnJlc3BvbmRpbmcgSVNUDQo+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4gKyAgICBJZHRUYWJs ZVtTdGFja1N3aXRjaERhdGEtPkV4Y2VwdGlvbnNbSW5kZXhdXS5CaXRzLlJlc2VydmVkXzAgPQ0K PiA+ID4gPiAoVUlOVDgpKEluZGV4ICsgMSk7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAvLw0KPiA+ID4gPiArICAvLyBQdWJsaXNoIEdEVA0KPiA+ID4gPiArICAvLw0KPiA+ ID4gPiArICBBc21Xcml0ZUdkdHIgKCZHZHRyKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAvLw0K PiA+ID4gPiArICAvLyBMb2FkIGN1cnJlbnQgdGFzaw0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiAr ICBBc21Xcml0ZVRyICgoVUlOVDE2KSgoVUlOVE4pU3RhY2tTd2l0Y2hEYXRhLT5Uc3NEZXNjIC0g R2R0ci5CYXNlKSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgLy8gUHVi bGlzaCBJRFQNCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAgQXNtV3JpdGVJZHRyICgmSWR0cik7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gPiArfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICAvKioNCj4gPiA+ID4gICAgRGlzcGxheSBDUFUgaW5mb3JtYXRp b24uDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEludGVycnVwdERlZnMuaA0KPiA+ ID4gPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNo SW50ZXJydXB0RGVmcy5oDQo+ID4gPiA+IGluZGV4IDkwNjQ4MDEzNGEuLmM4OGJlNDYyODYgMTAw NjQ0DQo+ID4gPiA+IC0tLQ0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+ID4gPiA+ICsrKw0KPiBiL1VlZmlDcHVQ a2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5o DQo+ID4gPiA+IEBAIC00Myw0ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4gICAg VUlOVDggICAgICAgSG9va0FmdGVyU3R1YkhlYWRlckNvZGVbSE9PS0FGVEVSX1NUVUJfU0laRV07 DQo+ID4gPiA+ICB9IFJFU0VSVkVEX1ZFQ1RPUlNfREFUQTsNCj4gPiA+ID4NCj4gPiA+ID4gKyNk ZWZpbmUgQ1BVX1RTU19ERVNDX1NJWkUgc2l6ZW9mIChJQTMyX1RTU19ERVNDUklQVE9SKQ0KPiA+ ID4gPiArI2RlZmluZSBDUFVfVFNTX1NJWkUgICAgICBzaXplb2YgKElBMzJfVEFTS19TVEFURV9T RUdNRU5UKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gLS0NCj4gPiA+ID4g Mi4xNC4xLndpbmRvd3MuMQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCmVkazItZGV2ZWxAbGlzdHMuMDEu b3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCmh0dHBzOi8vbGlzdHMuMDEub3Jn L21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0K