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=liming.gao@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 CC47B21103961 for ; Fri, 8 Jun 2018 09:38:53 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Jun 2018 09:38:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,490,1520924400"; d="scan'208";a="206453604" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga004.jf.intel.com with ESMTP; 08 Jun 2018 09:38:52 -0700 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Jun 2018 09:38:52 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx116.amr.corp.intel.com (10.18.116.20) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Jun 2018 09:38:51 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.87]) by shsmsx102.ccr.corp.intel.com ([169.254.2.223]) with mapi id 14.03.0319.002; Sat, 9 Jun 2018 00:38:49 +0800 From: "Gao, Liming" To: Laszlo Ersek , Ard Biesheuvel , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "leif.lindholm@linaro.org" Thread-Topic: [PATCH] MdePkg/BaseIoLibIntrinsic: make BaseIoLibIntrinsic safe for ArmVirt/KVM Thread-Index: AQHT/kza7JEWA5/Tr0msG9/qtPTIAKRU5bIg//96rICAAB3PAIACDzmw Date: Fri, 8 Jun 2018 16:38:48 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E294E1F@SHSMSX104.ccr.corp.intel.com> References: <20180607104645.22278-1-ard.biesheuvel@linaro.org> <4A89E2EF3DFEDB4C8BFDE51014F606A14E294430@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiM2QwOGY0YTAtNDQ0ZC00M2QwLWFlZjMtZDFlOGUyMjBiOTEzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVXFuVHN1OG56azR1UVkwSlpiMXNBZmpMNmZhMWVHXC9UbCt5b1lRU2daNnRaWlY0Qk1VXC8rcGpnZmVIUnJVZSs1In0= dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] MdePkg/BaseIoLibIntrinsic: make BaseIoLibIntrinsic safe for ArmVirt/KVM X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jun 2018 16:38:54 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvOg0KICBJIGdldCB5b3VyIHBvaW50LiBJIGFtIE9LIHRvIGFkZCB0aGlzIGxpYnJhcnkg aW5zdGFuY2UgaW4gTWRlUGtnIGZvciBjb2RlIHNoYXJpbmcuIA0KDQpBcmQ6DQogIEhhdmUgeW91 IHBsYW4gdG8gbWFrZSB0aGlzIGxpYnJhcnkgaW5zdGFuY2UgcGFzcyBWUzIwMTcgdG9vbCBjaGFp bj8gDQoNClRoYW5rcw0KTGltaW5nDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZy b206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBTZW50OiBGcmlk YXksIEp1bmUgOCwgMjAxOCAxMjo1NiBBTQ0KPiBUbzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVz aGV1dmVsQGxpbmFyby5vcmc+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgbGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnOyBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6 IFJlOiBbUEFUQ0hdIE1kZVBrZy9CYXNlSW9MaWJJbnRyaW5zaWM6IG1ha2UgQmFzZUlvTGliSW50 cmluc2ljIHNhZmUgZm9yIEFybVZpcnQvS1ZNDQo+IA0KPiBPbiAwNi8wNy8xOCAxNzowOSwgQXJk IEJpZXNoZXV2ZWwgd3JvdGU6DQo+ID4gT24gNyBKdW5lIDIwMTggYXQgMTc6MDgsIEdhbywgTGlt aW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4gd3JvdGU6DQo+ID4+IEFyZDoNCj4gPj4gICBJZiB0 aGlzIGxpYnJhcnkgaW5zdGFuY2UgaXMgc3BlY2lmaWMgdG8gQVJNIGVtdWxhdG9yIHdpdGggS1ZN LCBob3cgYWJvdXQgYWRkIGl0IGludG8gQXJtVmlydFBrZz8NCj4gPj4NCj4gPg0KPiA+IExhc3ps bywgZG8geW91IHdhbnQgdG8gdGFrZSB0aGlzIHF1ZXN0aW9uPw0KPiANCj4gQ2VydGFpbmx5Lg0K PiANCj4gTGltaW5nLCBpbiBjb21taXQgYjZkMTFkN2M0Njc4LCB3ZSBhZGRlZCAiQmFzZUlvTGli SW50cmluc2ljU2V2LmluZiIgdG8NCj4gIk1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNp YyIsIHdpdGggc29tZSBjdXN0b20gSWEzMiBhbmQgWDY0IE5BU00NCj4gZmlsZXMsIGJ1dCBtb3N0 bHkgcmV1c2luZyB0aGUgbGFyZ2UgZXhpc3RlbnQgZmlsZXMgKCJJb0xpYk1taW9CdWZmZXIuYyIs DQo+ICJJb0hpZ2hMZXZlbC5jIiBldGMpLg0KPiANCj4gVGhhdCBsaWJyYXJ5IGluc3RhbmNlIChh bmQgdGhlIE5BU00gY3VzdG9taXphdGlvbnMpIHRhcmdldCBBTUQgU0VWOyB0aGF0DQo+IGlzLCB3 aGVuIHRoZSBjb2RlIHJ1bnMgaW4gYSB2aXJ0dWFsIG1hY2hpbmUgZm9yIHdoaWNoIEFNRCBTZWN1 cmUNCj4gRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIGlzIGVuYWJsZWQuIFRoZSBOQVNNIGNvZGUg dXNlcyBDUFVJRCB0bw0KPiBkeW5hbWljYWxseSBkZXRlcm1pbmUgd2hldGhlciBpdCBydW5zIGlu IGEgU0VWIGd1ZXN0LCBvciBpbiBhIG5vcm1hbA0KPiBndWVzdCwgYW5kIGluIHRoZSBmb3JtZXIg Y2FzZSwgaXQgYXZvaWRzIHVzaW5nIHRoZSBSRVAgcHJlZml4IGluIHRoZQ0KPiBJb0ZpZm8gcm91 dGluZXMgKGl0IHVzZXMgb3Blbi1jb2RlZCBMT09QcykuDQo+IA0KPiBUaGUgIkJhc2VJb0xpYklu dHJpbnNpY1Nldi5pbmYiIGluc3RhbmNlIGlzIG9ubHkgZXZlciB1c2VkIGluIE92bWZQa2cNCj4g KGl0IG9ubHkgbWFrZXMgc2Vuc2UgaW4gdmlydHVhbCBtYWNoaW5lcyksIGJ1dCB0aGUgY29uc2Vu c3VzIGJhY2sgdGhlbg0KPiB3YXMgdG8gYWRkIHRoZSBsaWIgaW5zdGFuY2UgdG8gTWRlUGtnLg0K PiANCj4gDQo+IFRoaXMgdGltZSwgQXJkIGhhcyBhbHJlYWR5IGltcGxlbWVudGVkIChhbmQgcG9z dGVkKSB0aGUgSW9MaWIgaW5zdGFuY2UNCj4gdGhhdCB3ZSBuZWVkIGZvciBBUk0gS1ZNIHN1Y2gg dGhhdCBpdCBsYW5kcyB1bmRlciBBcm1WaXJ0UGtnIC0tIGhvd2V2ZXIsDQo+IHRoYXQgbGlicmFy eSBpbnN0YW5jZSBkdXBsaWNhdGVzIGEgaHVnZSBhbW91bnQgb2YgY29kZSwgdW4tY2hhbmdlZCwg ZnJvbQ0KPiAiQmFzZUlvTGliSW50cmluc2ljIiAoc3VjaCBhcyAiSW9MaWJNbWlvQnVmZmVyLmMi LCAiSW9IaWdoTGV2ZWwuYyIpLiBJDQo+IHN1Z2dlc3RlZCB0aGF0IEFyZCBpbnN0ZWFkIHBvc3Qg dGhlIG5ldyBsaWJyYXJ5IGluc3RhbmNlIGFzIGEgbmV3IElORg0KPiBmaWxlIChwbHVzIHNvbWUg YXNzZW1ibHkgZmlsZXMpIGZvciBCYXNlSW9MaWJJbnRyaW5zaWMgaXRzZWxmLCBiZWNhdXNlOg0K PiAoYSkgdGhpcyB3YXkgd2UgYXZvaWQgY29kZSBkdXBsaWNhdGlvbiwgYW5kIChiKSB0aGF0J3Mg ZXhhY3RseSB3aGF0IHdlDQo+IGRpZCAtLSBmb3IgYW5vdGhlciB2aXJ0dWFsaXphdGlvbi1vbmx5 IHVzZSBjYXNlIC0tIGluIGNvbW1pdA0KPiBiNmQxMWQ3YzQ2NzggZWFybGllci4NCj4gDQo+IElm IHlvdSdkIGxpa2UgdXMgdG8gYWRkIHRoZSBjb2RlIHRvIEFybVZpcnRQa2csIEkgZG9uJ3QgdGhp bmsgdGhhdCdzIHRoZQ0KPiByaWdodCBvciBjb25zZXF1ZW50IGFjdGlvbiwgYnV0IHRlY2huaWNh bGx5LCB3ZSBjYW4gc2ltcGx5IGZhbGwgYmFjayB0bw0KPiB0aGUgQXJtVmlydFBrZyBwYXRjaGVz IHRoYXQgQXJkIGFscmVhZHkgd3JvdGUgYW5kIHBvc3RlZC4NCj4gDQo+IFRoYW5rcywNCj4gTGFz emxvDQo+IA0KPiA+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+IEZyb206IEFy ZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gPj4+IFNl bnQ6IFRodXJzZGF5LCBKdW5lIDcsIDIwMTggNjo0NyBQTQ0KPiA+Pj4gVG86IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnDQo+ID4+PiBDYzogbGVyc2VrQHJlZGhhdC5jb207IGxlaWYubGluZGhvbG1A bGluYXJvLm9yZzsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgS2lubmV5LCBN aWNoYWVsIEQNCj4gPj4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEFyZCBCaWVzaGV1 dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+Pj4gU3ViamVjdDogW1BBVENIXSBN ZGVQa2cvQmFzZUlvTGliSW50cmluc2ljOiBtYWtlIEJhc2VJb0xpYkludHJpbnNpYyBzYWZlIGZv ciBBcm1WaXJ0L0tWTQ0KPiA+Pj4NCj4gPj4+IEtWTSBvbiBBUk0gcmVmdXNlcyB0byBkZWNvZGUg bG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgdXNlZCB0byBwZXJmb3JtDQo+ID4+PiBJL08gdG8gZW11 bGF0ZWQgZGV2aWNlcywgYW5kIGluc3RlYWQgcmVsaWVzIG9uIHRoZSBleGNlcHRpb24gc3luZHJv bWUNCj4gPj4+IGluZm9ybWF0aW9uIHRvIGRlc2NyaWJlIHRoZSBvcGVyYW5kIHJlZ2lzdGVyLCBh Y2Nlc3Mgc2l6ZSwgZXRjLg0KPiA+Pj4gVGhpcyBpcyBvbmx5IHBvc3NpYmxlIGZvciBpbnN0cnVj dGlvbnMgdGhhdCBoYXZlIGEgc2luZ2xlIGlucHV0L291dHB1dA0KPiA+Pj4gcmVnaXN0ZXIgKGFz IG9wcG9zZWQgdG8gb25lcyB0aGF0IGluY3JlbWVudCB0aGUgb2Zmc2V0IHJlZ2lzdGVyLCBvcg0K PiA+Pj4gbG9hZC9zdG9yZSBwYWlyIGluc3RydWN0aW9ucywgZXRjKS4gT3RoZXJ3aXNlLCBRRU1V IGNyYXNoZXMgd2l0aCB0aGUNCj4gPj4+IGZvbGxvd2luZyBlcnJvcg0KPiA+Pj4NCj4gPj4+ICAg ZXJyb3I6IGt2bSBydW4gZmFpbGVkIEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZA0KPiA+Pj4gICBS MDA9MDEwMTAxMDEgUjAxPTAwMDAwMDA4IFIwMj0wMDAwMDA0OCBSMDM9MDgwMDA4MjANCj4gPj4+ ICAgUjA0PTAwMDAwMTIwIFIwNT03ZmFhYTBlMCBSMDY9N2ZhYWEwZGMgUjA3PTdmYWFhMGU4DQo+ ID4+PiAgIFIwOD03ZmFhYTBlYyBSMDk9N2ZhYWEwODggUjEwPTAwMDAwMGZmIFIxMT0wMDAwMDA4 MA0KPiA+Pj4gICBSMTI9ZmYwMDAwMDAgUjEzPTdmY2NmZTA4IFIxND03ZmFhODM1ZiBSMTU9N2Zh YTg4N2MNCj4gPj4+ICAgUFNSPTgwMDAwMWYzIE4tLS0gVCBzdmMzMg0KPiA+Pj4gICBRRU1VOiBU ZXJtaW5hdGVkDQo+ID4+Pg0KPiA+Pj4gYW5kIEtWTSBwcm9kdWNlcyBhIHdhcm5pbmcgc3VjaCBh cyB0aGUgZm9sbG93aW5nIGluIHRoZSBrZXJuZWwgbG9nDQo+ID4+Pg0KPiA+Pj4gICBrdm0gWzE3 NjQ2XTogbG9hZC9zdG9yZSBpbnN0cnVjdGlvbiBkZWNvZGluZyBub3QgaW1wbGVtZW50ZWQNCj4g Pj4+DQo+ID4+PiBUaGUgSW9MaWIgaW1wbGVtZW50YXRpb24gcHJvdmlkZWQgYnkgTWRlUGtnL0xp YnJhcnkvQmFzZUlvTGliSW50cmluc2ljDQo+ID4+PiBpcyBiYXNlZCBvbiBDIGNvZGUsIGFuZCB3 aGVuIExUTyBpcyBpbiBlZmZlY3QsIHRoZSBNTUlPIGFjY2Vzc2VzIGNvdWxkDQo+ID4+PiBiZSBt ZXJnZWQgd2l0aCwgZS5nLiwgbWFuaXB1bGF0aW9ucyBvZiB0aGUgbG9vcCBjb3VudGVyLCBwcm9k dWNpbmcNCj4gPj4+IG9wY29kZXMgdGhhdCBLVk0gZG9lcyBub3Qgc3VwcG9ydCBmb3IgZW11bGF0 ZWQgTU1JTy4NCj4gPj4+DQo+ID4+PiBTbyBsZXQncyBhZGQgYSBzcGVjaWFsIEFybVZpcnQgZmxh dm9yIG9mIHRoaXMgbGlicmFyeSB0aGF0IGltcGxlbWVudHMNCj4gPj4+IHRoYXQgYWN0dWFsIGxv YWQvc3RvcmUgb3BlcmF0aW9ucyBpbiBhc3NlbWJsZXIsIGVuc3VyaW5nIHRoYXQgdGhlDQo+ID4+ PiBpbnN0cnVjdGlvbnMgaW52b2x2ZWQgY2FuIGJlIGVtdWxhdGVkIGJ5IEtWTS4NCj4gPj4+DQo+ ID4+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQg MS4xDQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxA bGluYXJvLm9yZz4NCj4gPj4+IC0tLQ0KPiA+Pj4gIEFybVZpcnRQa2cvQXJtVmlydC5kc2MuaW5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQ0KPiA+Pj4gIE1k ZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9BQXJjaDY0L0FybVZpcnRNbWlvLlMgICAg ICAgICB8IDE2NCArKysrKw0KPiA+Pj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNp Yy9Bcm0vQXJtVmlydE1taW8uUyAgICAgICAgICAgICB8IDE2MSArKysrKw0KPiA+Pj4gIE1kZVBr Zy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9Bcm0vQXJtVmlydE1taW8uYXNtICAgICAgICAg ICB8IDE2NSArKysrKw0KPiA+Pj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9C YXNlSW9MaWJJbnRyaW5zaWNBcm1WaXJ0LmluZiB8ICA1MCArKw0KPiA+Pj4gIE1kZVBrZy9MaWJy YXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9Jb0xpYkFybVZpcnQuYyAgICAgICAgICAgICAgICB8IDY0 MSArKysrKysrKysrKysrKysrKysrKw0KPiA+Pj4gIDYgZmlsZXMgY2hhbmdlZCwgMTE4MiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL0FybVZp cnRQa2cvQXJtVmlydC5kc2MuaW5jIGIvQXJtVmlydFBrZy9Bcm1WaXJ0LmRzYy5pbmMNCj4gPj4+ IGluZGV4IDc2NmU0ZjU5OGEwNy4uNzQ2NGFjNzBlZDFiIDEwMDY0NA0KPiA+Pj4gLS0tIGEvQXJt VmlydFBrZy9Bcm1WaXJ0LmRzYy5pbmMNCj4gPj4+ICsrKyBiL0FybVZpcnRQa2cvQXJtVmlydC5k c2MuaW5jDQo+ID4+PiBAQCAtNDEsNyArNDEsNyBAQCBbTGlicmFyeUNsYXNzZXMuY29tbW9uXQ0K PiA+Pj4gICAgUHJpbnRMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVByaW50TGliL0Jhc2VQcmludExp Yi5pbmYNCj4gPj4+ICAgIFBlQ29mZkdldEVudHJ5UG9pbnRMaWJ8TWRlUGtnL0xpYnJhcnkvQmFz ZVBlQ29mZkdldEVudHJ5UG9pbnRMaWIvQmFzZVBlQ29mZkdldEVudHJ5UG9pbnRMaWIuaW5mDQo+ ID4+PiAgICBQZUNvZmZMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBlQ29mZkxpYi9CYXNlUGVDb2Zm TGliLmluZg0KPiA+Pj4gLSAgSW9MaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2lj L0Jhc2VJb0xpYkludHJpbnNpYy5pbmYNCj4gPj4+ICsgIElvTGlifE1kZVBrZy9MaWJyYXJ5L0Jh c2VJb0xpYkludHJpbnNpYy9CYXNlSW9MaWJJbnRyaW5zaWNBcm1WaXJ0LmluZg0KPiA+Pj4gICAg VWVmaURlY29tcHJlc3NMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVVlZmlEZWNvbXByZXNzTGliL0Jh c2VVZWZpRGVjb21wcmVzc0xpYi5pbmYNCj4gPj4+ICAgIENwdUxpYnxNZGVQa2cvTGlicmFyeS9C YXNlQ3B1TGliL0Jhc2VDcHVMaWIuaW5mDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL01kZVBr Zy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9BQXJjaDY0L0FybVZpcnRNbWlvLlMNCj4gYi9N ZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvQUFyY2g2NC9Bcm1WaXJ0TW1pby5TDQo+ ID4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi40N2Jl NjhhM2U3ODMNCj4gPj4+IC0tLSAvZGV2L251bGwNCj4gPj4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5 L0Jhc2VJb0xpYkludHJpbnNpYy9BQXJjaDY0L0FybVZpcnRNbWlvLlMNCj4gPj4+IEBAIC0wLDAg KzEsMTY0IEBADQo+ID4+PiArIw0KPiA+Pj4gKyMgIENvcHlyaWdodCAoYykgMjAxNC0yMDE4LCBM aW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4+ICsjDQo+ID4+PiArIyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlDQo+ID4+PiArIyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQo+ID4+PiArIyAg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQg YXQNCj4gPj4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ID4+PiArIw0KPiA+Pj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiA+Pj4gKyMgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4+PiArIw0KPiA+Pj4gKyMNCj4gPj4+ICsNCj4gPj4+ICsudGV4dA0K PiA+Pj4gKy5hbGlnbiAzDQo+ID4+PiArDQo+ID4+PiArR0NDX0FTTV9FWFBPUlQoTW1pb1JlYWQ4 SW50ZXJuYWwpDQo+ID4+PiArR0NDX0FTTV9FWFBPUlQoTW1pb1dyaXRlOEludGVybmFsKQ0KPiA+ Pj4gK0dDQ19BU01fRVhQT1JUKE1taW9SZWFkMTZJbnRlcm5hbCkNCj4gPj4+ICtHQ0NfQVNNX0VY UE9SVChNbWlvV3JpdGUxNkludGVybmFsKQ0KPiA+Pj4gK0dDQ19BU01fRVhQT1JUKE1taW9SZWFk MzJJbnRlcm5hbCkNCj4gPj4+ICtHQ0NfQVNNX0VYUE9SVChNbWlvV3JpdGUzMkludGVybmFsKQ0K PiA+Pj4gK0dDQ19BU01fRVhQT1JUKE1taW9SZWFkNjRJbnRlcm5hbCkNCj4gPj4+ICtHQ0NfQVNN X0VYUE9SVChNbWlvV3JpdGU2NEludGVybmFsKQ0KPiA+Pj4gKw0KPiA+Pj4gKy8vDQo+ID4+PiAr Ly8gIFJlYWRzIGFuIDgtYml0IE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAg UmVhZHMgdGhlIDgtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuIFRoZSA4 LWJpdCByZWFkIHZhbHVlIGlzDQo+ID4+PiArLy8gIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9uIG11 c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQgd3JpdGUNCj4gPj4+ICsvLyAgb3Bl cmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBJZiA4LWJpdCBN TUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCku DQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVy IHRvIHJlYWQuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgQHJldHVybiBUaGUgdmFsdWUgcmVhZC4N Cj4gPj4+ICsvLw0KPiA+Pj4gK0FTTV9QRlgoTW1pb1JlYWQ4SW50ZXJuYWwpOg0KPiA+Pj4gKyAg bGRyYiAgICB3MCwgW3gwXQ0KPiA+Pj4gKyAgZG1iICAgICBsZA0KPiA+Pj4gKyAgcmV0DQo+ID4+ PiArDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIGFuIDgtYml0IE1NSU8gcmVnaXN0ZXIu DQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIHRoZSA4LWJpdCBNTUlPIHJlZ2lzdGVyIHNw ZWNpZmllZCBieSBBZGRyZXNzIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZA0KPiA+Pj4gKy8vICBi eSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0 aGF0IGFsbCBNTUlPIHJlYWQNCj4gPj4+ICsvLyAgYW5kIHdyaXRlIG9wZXJhdGlvbnMgYXJlIHNl cmlhbGl6ZWQuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgSWYgOC1iaXQgTU1JTyByZWdpc3RlciBv cGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKy8vDQo+ ID4+PiArLy8gIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4g Pj4+ICsvLyAgQHBhcmFtICBWYWx1ZSAgIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgTU1JTyBy ZWdpc3Rlci4NCj4gPj4+ICsvLw0KPiA+Pj4gK0FTTV9QRlgoTW1pb1dyaXRlOEludGVybmFsKToN Cj4gPj4+ICsgIGRtYiAgICAgc3QNCj4gPj4+ICsgIHN0cmIgICAgdzEsIFt4MF0NCj4gPj4+ICsg IHJldA0KPiA+Pj4gKw0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIFJlYWRzIGEgMTYtYml0IE1NSU8g cmVnaXN0ZXIuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgUmVhZHMgdGhlIDE2LWJpdCBNTUlPIHJl Z2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUgMTYtYml0IHJlYWQgdmFsdWUgaXMNCj4g Pj4+ICsvLyAgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwg TU1JTyByZWFkIGFuZCB3cml0ZQ0KPiA+Pj4gKy8vICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVk Lg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIElmIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlv bnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArLy8NCj4gPj4+ICsv LyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHJlYWQuDQo+ID4+PiArLy8N Cj4gPj4+ICsvLyAgQHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gPj4+ICsvLw0KPiA+Pj4gK0FT TV9QRlgoTW1pb1JlYWQxNkludGVybmFsKToNCj4gPj4+ICsgIGxkcmggICAgdzAsIFt4MF0NCj4g Pj4+ICsgIGRtYiAgICAgbGQNCj4gPj4+ICsgIHJldA0KPiA+Pj4gKw0KPiA+Pj4gKy8vDQo+ID4+ PiArLy8gIFdyaXRlcyBhIDE2LWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKy8vDQo+ID4+PiAr Ly8gIFdyaXRlcyB0aGUgMTYtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mg d2l0aCB0aGUgdmFsdWUgc3BlY2lmaWVkDQo+ID4+PiArLy8gIGJ5IFZhbHVlIGFuZCByZXR1cm5z IFZhbHVlLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZA0K PiA+Pj4gKy8vICBhbmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsv Lw0KPiA+Pj4gKy8vICBJZiAxNi1iaXQgTU1JTyByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBub3Qg c3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIEBwYXJhbSAg QWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gPj4+ICsvLyAgQHBhcmFtICBW YWx1ZSAgIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsv Lw0KPiA+Pj4gK0FTTV9QRlgoTW1pb1dyaXRlMTZJbnRlcm5hbCk6DQo+ID4+PiArICBkbWIgICAg IHN0DQo+ID4+PiArICBzdHJoICAgIHcxLCBbeDBdDQo+ID4+PiArICByZXQNCj4gPj4+ICsNCj4g Pj4+ICsvLw0KPiA+Pj4gKy8vICBSZWFkcyBhIDMyLWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4g Ky8vDQo+ID4+PiArLy8gIFJlYWRzIHRoZSAzMi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQg YnkgQWRkcmVzcy4gVGhlIDMyLWJpdCByZWFkIHZhbHVlIGlzDQo+ID4+PiArLy8gIHJldHVybmVk LiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQgd3Jp dGUNCj4gPj4+ICsvLyAgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsvLw0KPiA+ Pj4gKy8vICBJZiAzMi1iaXQgTU1JTyByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9y dGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIEBwYXJhbSAgQWRkcmVz cyBUaGUgTU1JTyByZWdpc3RlciB0byByZWFkLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIEByZXR1 cm4gVGhlIHZhbHVlIHJlYWQuDQo+ID4+PiArLy8NCj4gPj4+ICtBU01fUEZYKE1taW9SZWFkMzJJ bnRlcm5hbCk6DQo+ID4+PiArICBsZHIgICAgIHcwLCBbeDBdDQo+ID4+PiArICBkbWIgICAgIGxk DQo+ID4+PiArICByZXQNCj4gPj4+ICsNCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBXcml0ZXMgYSAz Mi1iaXQgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBXcml0ZXMgdGhlIDMy LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzIHdpdGggdGhlIHZhbHVlIHNw ZWNpZmllZA0KPiA+Pj4gKy8vICBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhpcyBmdW5j dGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQNCj4gPj4+ICsvLyAgYW5kIHdy aXRlIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgSWYg MzItYml0IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBB U1NFUlQoKS4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBAcGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8g cmVnaXN0ZXIgdG8gd3JpdGUuDQo+ID4+PiArLy8gIEBwYXJhbSAgVmFsdWUgICBUaGUgdmFsdWUg dG8gd3JpdGUgdG8gdGhlIE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArLy8NCj4gPj4+ICtBU01fUEZY KE1taW9Xcml0ZTMySW50ZXJuYWwpOg0KPiA+Pj4gKyAgZG1iICAgICBzdA0KPiA+Pj4gKyAgc3Ry ICAgICB3MSwgW3gwXQ0KPiA+Pj4gKyAgcmV0DQo+ID4+PiArDQo+ID4+PiArLy8NCj4gPj4+ICsv LyAgUmVhZHMgYSA2NC1iaXQgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBS ZWFkcyB0aGUgNjQtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuIFRoZSA2 NC1iaXQgcmVhZCB2YWx1ZSBpcw0KPiA+Pj4gKy8vICByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiBt dXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlDQo+ID4+PiArLy8gIG9w ZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgSWYgNjQtYml0 IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQo KS4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBAcGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0 ZXIgdG8gcmVhZC4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFk Lg0KPiA+Pj4gKy8vDQo+ID4+PiArQVNNX1BGWChNbWlvUmVhZDY0SW50ZXJuYWwpOg0KPiA+Pj4g KyAgbGRyICAgICB4MCwgW3gwXQ0KPiA+Pj4gKyAgZG1iICAgICBsZA0KPiA+Pj4gKyAgcmV0DQo+ ID4+PiArDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIGEgNjQtYml0IE1NSU8gcmVnaXN0 ZXIuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIHRoZSA2NC1iaXQgTU1JTyByZWdpc3Rl ciBzcGVjaWZpZWQgYnkgQWRkcmVzcyB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZpZWQNCj4gPj4+ICsv LyAgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50 ZWUgdGhhdCBhbGwgTU1JTyByZWFkDQo+ID4+PiArLy8gIGFuZCB3cml0ZSBvcGVyYXRpb25zIGFy ZSBzZXJpYWxpemVkLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIElmIDY0LWJpdCBNTUlPIHJlZ2lz dGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiAr Ly8NCj4gPj4+ICsvLyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRl Lg0KPiA+Pj4gKy8vICBAcGFyYW0gIFZhbHVlICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBN TUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKy8vDQo+ID4+PiArQVNNX1BGWChNbWlvV3JpdGU2NEludGVy bmFsKToNCj4gPj4+ICsgIGRtYiAgICAgc3QNCj4gPj4+ICsgIHN0ciAgICAgeDEsIFt4MF0NCj4g Pj4+ICsgIHJldA0KPiA+Pj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYklu dHJpbnNpYy9Bcm0vQXJtVmlydE1taW8uUyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJp bnNpYy9Bcm0vQXJtVmlydE1taW8uUw0KPiA+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNDM4ODA1Y2E3YzI0DQo+ID4+PiAtLS0gL2Rldi9udWxsDQo+ ID4+PiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvQXJtL0FybVZpcnRN bWlvLlMNCj4gPj4+IEBAIC0wLDAgKzEsMTYxIEBADQo+ID4+PiArIw0KPiA+Pj4gKyMgIENvcHly aWdodCAoYykgMjAxNC0yMDE4LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gPj4+ICsjDQo+ID4+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlDQo+ID4+PiArIyAgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBh bmllcyB0aGlzDQo+ID4+PiArIyAgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gPj4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+PiArIw0KPiA+Pj4gKyMgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lT LA0KPiA+Pj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5Z IEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+PiArIw0KPiA+Pj4gKyMNCj4g Pj4+ICsNCj4gPj4+ICtHQ0NfQVNNX0VYUE9SVChNbWlvUmVhZDhJbnRlcm5hbCkNCj4gPj4+ICtH Q0NfQVNNX0VYUE9SVChNbWlvV3JpdGU4SW50ZXJuYWwpDQo+ID4+PiArR0NDX0FTTV9FWFBPUlQo TW1pb1JlYWQxNkludGVybmFsKQ0KPiA+Pj4gK0dDQ19BU01fRVhQT1JUKE1taW9Xcml0ZTE2SW50 ZXJuYWwpDQo+ID4+PiArR0NDX0FTTV9FWFBPUlQoTW1pb1JlYWQzMkludGVybmFsKQ0KPiA+Pj4g K0dDQ19BU01fRVhQT1JUKE1taW9Xcml0ZTMySW50ZXJuYWwpDQo+ID4+PiArR0NDX0FTTV9FWFBP UlQoTW1pb1JlYWQ2NEludGVybmFsKQ0KPiA+Pj4gK0dDQ19BU01fRVhQT1JUKE1taW9Xcml0ZTY0 SW50ZXJuYWwpDQo+ID4+PiArDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgUmVhZHMgYW4gOC1iaXQg TU1JTyByZWdpc3Rlci4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBSZWFkcyB0aGUgOC1iaXQgTU1J TyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcy4gVGhlIDgtYml0IHJlYWQgdmFsdWUgaXMN Cj4gPj4+ICsvLyAgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBh bGwgTU1JTyByZWFkIGFuZCB3cml0ZQ0KPiA+Pj4gKy8vICBvcGVyYXRpb25zIGFyZSBzZXJpYWxp emVkLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIElmIDgtYml0IE1NSU8gcmVnaXN0ZXIgb3BlcmF0 aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4+ICsvLw0KPiA+Pj4g Ky8vICBAcGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gcmVhZC4NCj4gPj4+ICsv Lw0KPiA+Pj4gKy8vICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0KPiA+Pj4gKy8vDQo+ID4+PiAr QVNNX1BGWChNbWlvUmVhZDhJbnRlcm5hbCk6DQo+ID4+PiArICBsZHJiICAgIHIwLCBbcjBdDQo+ ID4+PiArICBkbWINCj4gPj4+ICsgIGJ4ICAgICAgbHINCj4gPj4+ICsNCj4gPj4+ICsvLw0KPiA+ Pj4gKy8vICBXcml0ZXMgYW4gOC1iaXQgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsvLw0KPiA+Pj4g Ky8vICBXcml0ZXMgdGhlIDgtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mg d2l0aCB0aGUgdmFsdWUgc3BlY2lmaWVkDQo+ID4+PiArLy8gIGJ5IFZhbHVlIGFuZCByZXR1cm5z IFZhbHVlLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZA0K PiA+Pj4gKy8vICBhbmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsv Lw0KPiA+Pj4gKy8vICBJZiA4LWJpdCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBz dXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgQHBhcmFtICBB ZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiA+Pj4gKy8vICBAcGFyYW0gIFZh bHVlICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKy8v DQo+ID4+PiArQVNNX1BGWChNbWlvV3JpdGU4SW50ZXJuYWwpOg0KPiA+Pj4gKyAgZG1iICAgICBz dA0KPiA+Pj4gKyAgc3RyYiAgICByMSwgW3IwXQ0KPiA+Pj4gKyAgYnggICAgICBscg0KPiA+Pj4g Kw0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIFJlYWRzIGEgMTYtYml0IE1NSU8gcmVnaXN0ZXIuDQo+ ID4+PiArLy8NCj4gPj4+ICsvLyAgUmVhZHMgdGhlIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNp ZmllZCBieSBBZGRyZXNzLiBUaGUgMTYtYml0IHJlYWQgdmFsdWUgaXMNCj4gPj4+ICsvLyAgcmV0 dXJuZWQuIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFu ZCB3cml0ZQ0KPiA+Pj4gKy8vICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiA+Pj4gKy8v DQo+ID4+PiArLy8gIElmIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBz dXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgQHBhcmFtICBB ZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHJlYWQuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAg QHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gPj4+ICsvLw0KPiA+Pj4gK0FTTV9QRlgoTW1pb1Jl YWQxNkludGVybmFsKToNCj4gPj4+ICsgIGxkcmggICAgcjAsIFtyMF0NCj4gPj4+ICsgIGRtYg0K PiA+Pj4gKyAgYnggICAgICBscg0KPiA+Pj4gKw0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIFdyaXRl cyBhIDE2LWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIFdyaXRlcyB0 aGUgMTYtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mgd2l0aCB0aGUgdmFs dWUgc3BlY2lmaWVkDQo+ID4+PiArLy8gIGJ5IFZhbHVlIGFuZCByZXR1cm5zIFZhbHVlLiBUaGlz IGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZA0KPiA+Pj4gKy8vICBh bmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8v ICBJZiAxNi1iaXQgTU1JTyByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0 aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIEBwYXJhbSAgQWRkcmVzcyBUaGUg TU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gPj4+ICsvLyAgQHBhcmFtICBWYWx1ZSAgIFRoZSB2 YWx1ZSB0byB3cml0ZSB0byB0aGUgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsvLw0KPiA+Pj4gK0FT TV9QRlgoTW1pb1dyaXRlMTZJbnRlcm5hbCk6DQo+ID4+PiArICBkbWIgICAgIHN0DQo+ID4+PiAr ICBzdHJoICAgIHIxLCBbcjBdDQo+ID4+PiArICBieCAgICAgIGxyDQo+ID4+PiArDQo+ID4+PiAr Ly8NCj4gPj4+ICsvLyAgUmVhZHMgYSAzMi1iaXQgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsvLw0K PiA+Pj4gKy8vICBSZWFkcyB0aGUgMzItYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFk ZHJlc3MuIFRoZSAzMi1iaXQgcmVhZCB2YWx1ZSBpcw0KPiA+Pj4gKy8vICByZXR1cm5lZC4gVGhp cyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlDQo+ ID4+PiArLy8gIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArLy8NCj4gPj4+ICsv LyAgSWYgMzItYml0IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwg dGhlbiBBU1NFUlQoKS4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBAcGFyYW0gIEFkZHJlc3MgVGhl IE1NSU8gcmVnaXN0ZXIgdG8gcmVhZC4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBAcmV0dXJuIFRo ZSB2YWx1ZSByZWFkLg0KPiA+Pj4gKy8vDQo+ID4+PiArQVNNX1BGWChNbWlvUmVhZDMySW50ZXJu YWwpOg0KPiA+Pj4gKyAgbGRyICAgICByMCwgW3IwXQ0KPiA+Pj4gKyAgZG1iDQo+ID4+PiArICBi eCAgICAgIGxyDQo+ID4+PiArDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIGEgMzItYml0 IE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIHRoZSAzMi1iaXQg TU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcyB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZp ZWQNCj4gPj4+ICsvLyAgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMgZnVuY3Rpb24g bXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkDQo+ID4+PiArLy8gIGFuZCB3cml0ZSBv cGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIElmIDMyLWJp dCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJU KCkuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lz dGVyIHRvIHdyaXRlLg0KPiA+Pj4gKy8vICBAcGFyYW0gIFZhbHVlICAgVGhlIHZhbHVlIHRvIHdy aXRlIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKy8vDQo+ID4+PiArQVNNX1BGWChNbWlv V3JpdGUzMkludGVybmFsKToNCj4gPj4+ICsgIGRtYiAgICAgc3QNCj4gPj4+ICsgIHN0ciAgICAg cjEsIFtyMF0NCj4gPj4+ICsgIGJ4ICAgICAgbHINCj4gPj4+ICsNCj4gPj4+ICsvLw0KPiA+Pj4g Ky8vICBSZWFkcyBhIDY0LWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8g IFJlYWRzIHRoZSA2NC1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcy4gVGhl IDY0LWJpdCByZWFkIHZhbHVlIGlzDQo+ID4+PiArLy8gIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9u IG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQgd3JpdGUNCj4gPj4+ICsvLyAg b3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsvLw0KPiA+Pj4gKy8vICBJZiA2NC1i aXQgTU1JTyByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VS VCgpLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdp c3RlciB0byByZWFkLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIEByZXR1cm4gVGhlIHZhbHVlIHJl YWQuDQo+ID4+PiArLy8NCj4gPj4+ICtBU01fUEZYKE1taW9SZWFkNjRJbnRlcm5hbCk6DQo+ID4+ PiArICBsZHJkICAgIHIwLCByMSwgW3IwXQ0KPiA+Pj4gKyAgZG1iDQo+ID4+PiArICBieCAgICAg IGxyDQo+ID4+PiArDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIGEgNjQtYml0IE1NSU8g cmVnaXN0ZXIuDQo+ID4+PiArLy8NCj4gPj4+ICsvLyAgV3JpdGVzIHRoZSA2NC1iaXQgTU1JTyBy ZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcyB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZpZWQNCj4g Pj4+ICsvLyAgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMgZnVuY3Rpb24gbXVzdCBn dWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkDQo+ID4+PiArLy8gIGFuZCB3cml0ZSBvcGVyYXRp b25zIGFyZSBzZXJpYWxpemVkLg0KPiA+Pj4gKy8vDQo+ID4+PiArLy8gIElmIDY0LWJpdCBNTUlP IHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ ID4+PiArLy8NCj4gPj4+ICsvLyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRv IHdyaXRlLg0KPiA+Pj4gKy8vICBAcGFyYW0gIFZhbHVlICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRv IHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKy8vDQo+ID4+PiArQVNNX1BGWChNbWlvV3JpdGU2 NEludGVybmFsKToNCj4gPj4+ICsgIGRtYiAgICAgc3QNCj4gPj4+ICsgIHN0cmQgICAgcjIsIHIz LCBbcjBdDQo+ID4+PiArICBieCAgICAgIGxyDQo+ID4+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xp YnJhcnkvQmFzZUlvTGliSW50cmluc2ljL0FybS9Bcm1WaXJ0TW1pby5hc20NCj4gYi9NZGVQa2cv TGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvQXJtL0FybVZpcnRNbWlvLmFzbQ0KPiA+Pj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uODJhZGQ4MmY4MDBh DQo+ID4+PiAtLS0gL2Rldi9udWxsDQo+ID4+PiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlSW9M aWJJbnRyaW5zaWMvQXJtL0FybVZpcnRNbWlvLmFzbQ0KPiA+Pj4gQEAgLTAsMCArMSwxNjUgQEAN Cj4gPj4+ICs7DQo+ID4+PiArOyAgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTgsIExpbmFybyBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+Pj4gKzsNCj4gPj4+ICs7ICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBh dmFpbGFibGUNCj4gPj4+ICs7ICB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMNCj4gPj4+ICs7ICBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+Pj4g KzsgIGh0dHA6O29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+Pj4g KzsNCj4gPj4+ICs7ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gPj4+ICs7ICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiA+Pj4gKzsNCj4gPj4+ICsNCj4gPj4+ICsNCj4gPj4+ICtBUkVBIElvTGliTW1pbywgQ09E RSwgUkVBRE9OTFkNCj4gPj4+ICsNCj4gPj4+ICtFWFBPUlQgTW1pb1JlYWQ4SW50ZXJuYWwNCj4g Pj4+ICtFWFBPUlQgTW1pb1dyaXRlOEludGVybmFsDQo+ID4+PiArRVhQT1JUIE1taW9SZWFkMTZJ bnRlcm5hbA0KPiA+Pj4gK0VYUE9SVCBNbWlvV3JpdGUxNkludGVybmFsDQo+ID4+PiArRVhQT1JU IE1taW9SZWFkMzJJbnRlcm5hbA0KPiA+Pj4gK0VYUE9SVCBNbWlvV3JpdGUzMkludGVybmFsDQo+ ID4+PiArRVhQT1JUIE1taW9SZWFkNjRJbnRlcm5hbA0KPiA+Pj4gK0VYUE9SVCBNbWlvV3JpdGU2 NEludGVybmFsDQo+ID4+PiArDQo+ID4+PiArOw0KPiA+Pj4gKzsgIFJlYWRzIGFuIDgtYml0IE1N SU8gcmVnaXN0ZXIuDQo+ID4+PiArOw0KPiA+Pj4gKzsgIFJlYWRzIHRoZSA4LWJpdCBNTUlPIHJl Z2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUgOC1iaXQgcmVhZCB2YWx1ZSBpcw0KPiA+ Pj4gKzsgIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1N SU8gcmVhZCBhbmQgd3JpdGUNCj4gPj4+ICs7ICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0K PiA+Pj4gKzsNCj4gPj4+ICs7ICBJZiA4LWJpdCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJl IG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArOw0KPiA+Pj4gKzsgIEBwYXJh bSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byByZWFkLg0KPiA+Pj4gKzsNCj4gPj4+ICs7 ICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0KPiA+Pj4gKzsNCj4gPj4+ICtNbWlvUmVhZDhJbnRl cm5hbA0KPiA+Pj4gKyAgbGRyYiAgICByMCwgW3IwXQ0KPiA+Pj4gKyAgZG1iDQo+ID4+PiArICBi eCAgICAgIGxyDQo+ID4+PiArDQo+ID4+PiArOw0KPiA+Pj4gKzsgIFdyaXRlcyBhbiA4LWJpdCBN TUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKzsNCj4gPj4+ICs7ICBXcml0ZXMgdGhlIDgtYml0IE1NSU8g cmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mgd2l0aCB0aGUgdmFsdWUgc3BlY2lmaWVkDQo+ ID4+PiArOyAgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMgZnVuY3Rpb24gbXVzdCBn dWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkDQo+ID4+PiArOyAgYW5kIHdyaXRlIG9wZXJhdGlv bnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArOw0KPiA+Pj4gKzsgIElmIDgtYml0IE1NSU8gcmVn aXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4+ ICs7DQo+ID4+PiArOyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRl Lg0KPiA+Pj4gKzsgIEBwYXJhbSAgVmFsdWUgICBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIE1N SU8gcmVnaXN0ZXIuDQo+ID4+PiArOw0KPiA+Pj4gK01taW9Xcml0ZThJbnRlcm5hbA0KPiA+Pj4g KyAgZG1iICAgICBzdA0KPiA+Pj4gKyAgc3RyYiAgICByMSwgW3IwXQ0KPiA+Pj4gKyAgYnggICAg ICBscg0KPiA+Pj4gKw0KPiA+Pj4gKzsNCj4gPj4+ICs7ICBSZWFkcyBhIDE2LWJpdCBNTUlPIHJl Z2lzdGVyLg0KPiA+Pj4gKzsNCj4gPj4+ICs7ICBSZWFkcyB0aGUgMTYtYml0IE1NSU8gcmVnaXN0 ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuIFRoZSAxNi1iaXQgcmVhZCB2YWx1ZSBpcw0KPiA+Pj4g KzsgIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8g cmVhZCBhbmQgd3JpdGUNCj4gPj4+ICs7ICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiA+ Pj4gKzsNCj4gPj4+ICs7ICBJZiAxNi1iaXQgTU1JTyByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBu b3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKzsNCj4gPj4+ICs7ICBAcGFyYW0g IEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gcmVhZC4NCj4gPj4+ICs7DQo+ID4+PiArOyAg QHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gPj4+ICs7DQo+ID4+PiArTW1pb1JlYWQxNkludGVy bmFsDQo+ID4+PiArICBsZHJoICAgIHIwLCBbcjBdDQo+ID4+PiArICBkbWINCj4gPj4+ICsgIGJ4 ICAgICAgbHINCj4gPj4+ICsNCj4gPj4+ICs7DQo+ID4+PiArOyAgV3JpdGVzIGEgMTYtYml0IE1N SU8gcmVnaXN0ZXIuDQo+ID4+PiArOw0KPiA+Pj4gKzsgIFdyaXRlcyB0aGUgMTYtYml0IE1NSU8g cmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mgd2l0aCB0aGUgdmFsdWUgc3BlY2lmaWVkDQo+ ID4+PiArOyAgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMgZnVuY3Rpb24gbXVzdCBn dWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkDQo+ID4+PiArOyAgYW5kIHdyaXRlIG9wZXJhdGlv bnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArOw0KPiA+Pj4gKzsgIElmIDE2LWJpdCBNTUlPIHJl Z2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+ PiArOw0KPiA+Pj4gKzsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0 ZS4NCj4gPj4+ICs7ICBAcGFyYW0gIFZhbHVlICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBN TUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKzsNCj4gPj4+ICtNbWlvV3JpdGUxNkludGVybmFsDQo+ID4+ PiArICBkbWIgICAgIHN0DQo+ID4+PiArICBzdHJoICAgIHIxLCBbcjBdDQo+ID4+PiArICBieCAg ICAgIGxyDQo+ID4+PiArDQo+ID4+PiArOw0KPiA+Pj4gKzsgIFJlYWRzIGEgMzItYml0IE1NSU8g cmVnaXN0ZXIuDQo+ID4+PiArOw0KPiA+Pj4gKzsgIFJlYWRzIHRoZSAzMi1iaXQgTU1JTyByZWdp c3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcy4gVGhlIDMyLWJpdCByZWFkIHZhbHVlIGlzDQo+ID4+ PiArOyAgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1J TyByZWFkIGFuZCB3cml0ZQ0KPiA+Pj4gKzsgIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ ID4+PiArOw0KPiA+Pj4gKzsgIElmIDMyLWJpdCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJl IG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArOw0KPiA+Pj4gKzsgIEBwYXJh bSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byByZWFkLg0KPiA+Pj4gKzsNCj4gPj4+ICs7 ICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0KPiA+Pj4gKzsNCj4gPj4+ICtNbWlvUmVhZDMySW50 ZXJuYWwNCj4gPj4+ICsgIGxkciAgICAgcjAsIFtyMF0NCj4gPj4+ICsgIGRtYg0KPiA+Pj4gKyAg YnggICAgICBscg0KPiA+Pj4gKw0KPiA+Pj4gKzsNCj4gPj4+ICs7ICBXcml0ZXMgYSAzMi1iaXQg TU1JTyByZWdpc3Rlci4NCj4gPj4+ICs7DQo+ID4+PiArOyAgV3JpdGVzIHRoZSAzMi1iaXQgTU1J TyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcyB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZpZWQN Cj4gPj4+ICs7ICBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhpcyBmdW5jdGlvbiBtdXN0 IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQNCj4gPj4+ICs7ICBhbmQgd3JpdGUgb3BlcmF0 aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICs7DQo+ID4+PiArOyAgSWYgMzItYml0IE1NSU8g cmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQoKS4NCj4g Pj4+ICs7DQo+ID4+PiArOyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdy aXRlLg0KPiA+Pj4gKzsgIEBwYXJhbSAgVmFsdWUgICBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gdGhl IE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArOw0KPiA+Pj4gK01taW9Xcml0ZTMySW50ZXJuYWwNCj4g Pj4+ICsgIGRtYiAgICAgc3QNCj4gPj4+ICsgIHN0ciAgICAgcjEsIFtyMF0NCj4gPj4+ICsgIGJ4 ICAgICAgbHINCj4gPj4+ICsNCj4gPj4+ICs7DQo+ID4+PiArOyAgUmVhZHMgYSA2NC1iaXQgTU1J TyByZWdpc3Rlci4NCj4gPj4+ICs7DQo+ID4+PiArOyAgUmVhZHMgdGhlIDY0LWJpdCBNTUlPIHJl Z2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUgNjQtYml0IHJlYWQgdmFsdWUgaXMNCj4g Pj4+ICs7ICByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBN TUlPIHJlYWQgYW5kIHdyaXRlDQo+ID4+PiArOyAgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4N Cj4gPj4+ICs7DQo+ID4+PiArOyAgSWYgNjQtYml0IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBh cmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4+ICs7DQo+ID4+PiArOyAgQHBh cmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHJlYWQuDQo+ID4+PiArOw0KPiA+Pj4g KzsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ID4+PiArOw0KPiA+Pj4gK01taW9SZWFkNjRJ bnRlcm5hbA0KPiA+Pj4gKyAgbGRyZCAgICByMCwgcjEsIFtyMF0NCj4gPj4+ICsgIGRtYg0KPiA+ Pj4gKyAgYnggICAgICBscg0KPiA+Pj4gKw0KPiA+Pj4gKzsNCj4gPj4+ICs7ICBXcml0ZXMgYSA2 NC1iaXQgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICs7DQo+ID4+PiArOyAgV3JpdGVzIHRoZSA2NC1i aXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcyB3aXRoIHRoZSB2YWx1ZSBzcGVj aWZpZWQNCj4gPj4+ICs7ICBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhpcyBmdW5jdGlv biBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQNCj4gPj4+ICs7ICBhbmQgd3JpdGUg b3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICs7DQo+ID4+PiArOyAgSWYgNjQtYml0 IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQo KS4NCj4gPj4+ICs7DQo+ID4+PiArOyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVy IHRvIHdyaXRlLg0KPiA+Pj4gKzsgIEBwYXJhbSAgVmFsdWUgICBUaGUgdmFsdWUgdG8gd3JpdGUg dG8gdGhlIE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArOw0KPiA+Pj4gK01taW9Xcml0ZTY0SW50ZXJu YWwNCj4gPj4+ICsgIGRtYiAgICAgc3QNCj4gPj4+ICsgIHN0cmQgICAgcjIsIHIzLCBbcjBdDQo+ ID4+PiArICBieCAgICAgIGxyDQo+ID4+PiArDQo+ID4+PiArICBFTkQNCj4gPj4+IGRpZmYgLS1n aXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvQmFzZUlvTGliSW50cmluc2lj QXJtVmlydC5pbmYNCj4gPj4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2ljL0Jh c2VJb0xpYkludHJpbnNpY0FybVZpcnQuaW5mDQo+ID4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi41YTFkYzg3ZWQyYmQNCj4gPj4+IC0tLSAvZGV2L251 bGwNCj4gPj4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9CYXNlSW9M aWJJbnRyaW5zaWNBcm1WaXJ0LmluZg0KPiA+Pj4gQEAgLTAsMCArMSw1MCBAQA0KPiA+Pj4gKyMj IEBmaWxlDQo+ID4+PiArIyAgSW5zdGFuY2Ugb2YgSS9PIExpYnJhcnkgdXNpbmcgS1ZNL0FSTSBz YWZlIGFzc2VtYmxlciByb3V0aW5lcw0KPiA+Pj4gKyMNCj4gPj4+ICsjICBDb3B5cmlnaHQgKGMp IDIwMDcgLSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4+PiArIyAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5j LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcs IEFNRCBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4gKyMgIENv cHlyaWdodCAoYykgMjAxOCwgTGluYXJvLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+Pj4gKyMNCj4gPj4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUNCj4gPj4+ICsjICB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMNCj4gPj4+ICsjICBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4+PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocC4NCj4gPj4+ICsjDQo+ID4+PiArIyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ID4+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4+ICsjDQo+ID4+PiArIyMNCj4g Pj4+ICsNCj4gPj4+ICtbRGVmaW5lc10NCj4gPj4+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAg ICAgICAgICA9IDB4MDAwMTAwMUENCj4gPj4+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAg ICAgICA9IEJhc2VJb0xpYkludHJpbnNpY0FybVZpcnQNCj4gPj4+ICsgIEZJTEVfR1VJRCAgICAg ICAgICAgICAgICAgICAgICA9IDIxNzEwMmI0LWI0NjUtNGExZC1hMmRlLTkzZGQzODVlYzQ4MA0K PiA+Pj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiA+Pj4gKyAg VkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4+PiArICBMSUJSQVJZX0NM QVNTICAgICAgICAgICAgICAgICAgPSBJb0xpYg0KPiA+Pj4gKw0KPiA+Pj4gKyMNCj4gPj4+ICsj ICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IEFSTSBBQVJDSDY0DQo+ID4+PiArIw0K PiA+Pj4gKw0KPiA+Pj4gK1tTb3VyY2VzXQ0KPiA+Pj4gKyAgSW9MaWJNbWlvQnVmZmVyLmMNCj4g Pj4+ICsgIEJhc2VJb0xpYkludHJpbnNpY0ludGVybmFsLmgNCj4gPj4+ICsgIElvSGlnaExldmVs LmMNCj4gPj4+ICsNCj4gPj4+ICtbU291cmNlcy5BUk1dDQo+ID4+PiArICBJb0xpYkFybVZpcnQu Yw0KPiA+Pj4gKyAgQXJtL0FybVZpcnRNbWlvLlMgICB8IEdDQw0KPiA+Pj4gKyAgQXJtL0FybVZp cnRNbWlvLmFzbSB8IFJWQ1QNCj4gPj4+ICsNCj4gPj4+ICtbU291cmNlcy5BQVJDSDY0XQ0KPiA+ Pj4gKyAgSW9MaWJBcm1WaXJ0LmMNCj4gPj4+ICsgIEFBcmNoNjQvQXJtVmlydE1taW8uUw0KPiA+ Pj4gKw0KPiA+Pj4gK1tQYWNrYWdlc10NCj4gPj4+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4+ PiArDQo+ID4+PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+Pj4gKyAgRGVidWdMaWINCj4gPj4+ICsg IEJhc2VMaWINCj4gPj4+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRy aW5zaWMvSW9MaWJBcm1WaXJ0LmMgYi9NZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMv SW9MaWJBcm1WaXJ0LmMNCj4gPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+PiBpbmRleCAw MDAwMDAwMDAwMDAuLjE1NGQ1ODMyNDZhYw0KPiA+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4gKysr IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2ljL0lvTGliQXJtVmlydC5jDQo+ID4+ PiBAQCAtMCwwICsxLDY0MSBAQA0KPiA+Pj4gKy8qKiBAZmlsZQ0KPiA+Pj4gKyAgSS9PIExpYnJh cnkgZm9yIEFSTS4NCj4gPj4+ICsNCj4gPj4+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMDks IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4+ICsgIFBv cnRpb25zIGNvcHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4+PiArICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFNRCBJbmNvcnBvcmF0 ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4gKyAgQ29weXJpZ2h0IChjKSAyMDE4 LCBMaW5hcm8sIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4+PiArDQo+ID4+PiAr ICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUNCj4gPj4+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcw0KPiA+Pj4gKyAg ZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KPiA+Pj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cC4NCj4gPj4+ICsNCj4gPj4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiA+Pj4gKyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICsNCj4gPj4+ICsjaW5jbHVkZSAi QmFzZUlvTGliSW50cmluc2ljSW50ZXJuYWwuaCINCj4gPj4+ICsNCj4gPj4+ICtVSU5UOA0KPiA+ Pj4gK0VGSUFQSQ0KPiA+Pj4gK01taW9SZWFkOEludGVybmFsICgNCj4gPj4+ICsgIElOICAgICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzDQo+ID4+PiArICApOw0KPiA+Pj4gKw0K PiA+Pj4gK1ZPSUQNCj4gPj4+ICtFRklBUEkNCj4gPj4+ICtNbWlvV3JpdGU4SW50ZXJuYWwgKA0K PiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ID4+ PiArICBJTiAgICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPj4+ICsgICk7 DQo+ID4+PiArDQo+ID4+PiArVUlOVDE2DQo+ID4+PiArRUZJQVBJDQo+ID4+PiArTW1pb1JlYWQx NkludGVybmFsICgNCj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBB ZGRyZXNzDQo+ID4+PiArICApOw0KPiA+Pj4gKw0KPiA+Pj4gK1ZPSUQNCj4gPj4+ICtFRklBUEkN Cj4gPj4+ICtNbWlvV3JpdGUxNkludGVybmFsICgNCj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBBZGRyZXNzLA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UMTYgICAgICAg ICAgICAgICAgICAgIFZhbHVlDQo+ID4+PiArICApOw0KPiA+Pj4gKw0KPiA+Pj4gK1VJTlQzMg0K PiA+Pj4gK0VGSUFQSQ0KPiA+Pj4gK01taW9SZWFkMzJJbnRlcm5hbCAoDQo+ID4+PiArICBJTiAg ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcw0KPiA+Pj4gKyAgKTsNCj4gPj4+ ICsNCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArTW1pb1dyaXRlMzJJbnRlcm5h bCAoDQo+ID4+PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywN Cj4gPj4+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+Pj4g KyAgKTsNCj4gPj4+ICsNCj4gPj4+ICtVSU5UNjQNCj4gPj4+ICtFRklBUEkNCj4gPj4+ICtNbWlv UmVhZDY0SW50ZXJuYWwgKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgIEFkZHJlc3MNCj4gPj4+ICsgICk7DQo+ID4+PiArDQo+ID4+PiArVk9JRA0KPiA+Pj4gK0VG SUFQSQ0KPiA+Pj4gK01taW9Xcml0ZTY0SW50ZXJuYWwgKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ID4+PiArICBJTiAgICAgIFVJTlQ2NCAg ICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPj4+ICsgICk7DQo+ID4+PiArDQo+ID4+PiArLyoq DQo+ID4+PiArICBSZWFkcyBhbiA4LWJpdCBJL08gcG9ydC4NCj4gPj4+ICsNCj4gPj4+ICsgIFJl YWRzIHRoZSA4LWJpdCBJL08gcG9ydCBzcGVjaWZpZWQgYnkgUG9ydC4gVGhlIDgtYml0IHJlYWQg dmFsdWUgaXMgcmV0dXJuZWQuDQo+ID4+PiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVl IHRoYXQgYWxsIEkvTyByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zIGFyZQ0KPiA+Pj4gKyAgc2Vy aWFsaXplZC4NCj4gPj4+ICsNCj4gPj4+ICsgIElmIDgtYml0IEkvTyBwb3J0IG9wZXJhdGlvbnMg YXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArDQo+ID4+PiArICBAcGFy YW0gIFBvcnQgIFRoZSBJL08gcG9ydCB0byByZWFkLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHJldHVy biBUaGUgdmFsdWUgcmVhZC4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICtVSU5UOA0KPiA+ Pj4gK0VGSUFQSQ0KPiA+Pj4gK0lvUmVhZDggKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgIFBvcnQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBBU1NF UlQgKEZBTFNFKTsNCj4gPj4+ICsgIHJldHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ ICsvKioNCj4gPj4+ICsgIFdyaXRlcyBhbiA4LWJpdCBJL08gcG9ydC4NCj4gPj4+ICsNCj4gPj4+ ICsgIFdyaXRlcyB0aGUgOC1iaXQgSS9PIHBvcnQgc3BlY2lmaWVkIGJ5IFBvcnQgd2l0aCB0aGUg dmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlDQo+ID4+PiArICBhbmQgcmV0dXJucyBWYWx1ZS4gVGhp cyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBJL08gcmVhZCBhbmQgd3JpdGUNCj4g Pj4+ICsgIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArDQo+ID4+PiArICBJZiA4 LWJpdCBJL08gcG9ydCBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgp Lg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtICBQb3J0ICBUaGUgSS9PIHBvcnQgdG8gd3JpdGUu DQo+ID4+PiArICBAcGFyYW0gIFZhbHVlIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgSS9PIHBv cnQuDQo+ID4+PiArDQo+ID4+PiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRoZSBJL08g cG9ydC4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICtVSU5UOA0KPiA+Pj4gK0VGSUFQSQ0K PiA+Pj4gK0lvV3JpdGU4ICgNCj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBQb3J0LA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFZh bHVlDQo+ID4+PiArICApDQo+ID4+PiArew0KPiA+Pj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4+ PiArICByZXR1cm4gVmFsdWU7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4g KyAgUmVhZHMgYSAxNi1iaXQgSS9PIHBvcnQuDQo+ID4+PiArDQo+ID4+PiArICBSZWFkcyB0aGUg MTYtYml0IEkvTyBwb3J0IHNwZWNpZmllZCBieSBQb3J0LiBUaGUgMTYtYml0IHJlYWQgdmFsdWUg aXMgcmV0dXJuZWQuDQo+ID4+PiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQg YWxsIEkvTyByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zIGFyZQ0KPiA+Pj4gKyAgc2VyaWFsaXpl ZC4NCj4gPj4+ICsNCj4gPj4+ICsgIElmIDE2LWJpdCBJL08gcG9ydCBvcGVyYXRpb25zIGFyZSBu b3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtICBQ b3J0ICBUaGUgSS9PIHBvcnQgdG8gcmVhZC4NCj4gPj4+ICsNCj4gPj4+ICsgIEByZXR1cm4gVGhl IHZhbHVlIHJlYWQuDQo+ID4+PiArDQo+ID4+PiArKiovDQo+ID4+PiArVUlOVDE2DQo+ID4+PiAr RUZJQVBJDQo+ID4+PiArSW9SZWFkMTYgKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgIFBvcnQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBBU1NFUlQg KEZBTFNFKTsNCj4gPj4+ICsgIHJldHVybiAwOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsv KioNCj4gPj4+ICsgIFdyaXRlcyBhIDE2LWJpdCBJL08gcG9ydC4NCj4gPj4+ICsNCj4gPj4+ICsg IFdyaXRlcyB0aGUgMTYtYml0IEkvTyBwb3J0IHNwZWNpZmllZCBieSBQb3J0IHdpdGggdGhlIHZh bHVlIHNwZWNpZmllZCBieSBWYWx1ZQ0KPiA+Pj4gKyAgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMg ZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgSS9PIHJlYWQgYW5kIHdyaXRlDQo+ID4+ PiArICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgSWYgMTYt Yml0IEkvTyBwb3J0IG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCku DQo+ID4+PiArDQo+ID4+PiArICBAcGFyYW0gIFBvcnQgIFRoZSBJL08gcG9ydCB0byB3cml0ZS4N Cj4gPj4+ICsgIEBwYXJhbSAgVmFsdWUgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBJL08gcG9y dC4NCj4gPj4+ICsNCj4gPj4+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdGhlIEkvTyBw b3J0Lg0KPiA+Pj4gKw0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1VJTlQxNg0KPiA+Pj4gK0VGSUFQSQ0K PiA+Pj4gK0lvV3JpdGUxNiAoDQo+ID4+PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgUG9ydCwNCj4gPj4+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBW YWx1ZQ0KPiA+Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ Pj4gKyAgcmV0dXJuIFZhbHVlOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ ICsgIFJlYWRzIGEgMzItYml0IEkvTyBwb3J0Lg0KPiA+Pj4gKw0KPiA+Pj4gKyAgUmVhZHMgdGhl IDMyLWJpdCBJL08gcG9ydCBzcGVjaWZpZWQgYnkgUG9ydC4gVGhlIDMyLWJpdCByZWFkIHZhbHVl IGlzIHJldHVybmVkLg0KPiA+Pj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0 IGFsbCBJL08gcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUNCj4gPj4+ICsgIHNlcmlhbGl6 ZWQuDQo+ID4+PiArDQo+ID4+PiArICBJZiAzMi1iaXQgSS9PIHBvcnQgb3BlcmF0aW9ucyBhcmUg bm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSAg UG9ydCAgVGhlIEkvTyBwb3J0IHRvIHJlYWQuDQo+ID4+PiArDQo+ID4+PiArICBAcmV0dXJuIFRo ZSB2YWx1ZSByZWFkLg0KPiA+Pj4gKw0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1VJTlQzMg0KPiA+Pj4g K0VGSUFQSQ0KPiA+Pj4gK0lvUmVhZDMyICgNCj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICBQb3J0DQo+ID4+PiArICApDQo+ID4+PiArew0KPiA+Pj4gKyAgQVNTRVJU IChGQUxTRSk7DQo+ID4+PiArICByZXR1cm4gMDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAr LyoqDQo+ID4+PiArICBXcml0ZXMgYSAzMi1iaXQgSS9PIHBvcnQuDQo+ID4+PiArDQo+ID4+PiAr ICBXcml0ZXMgdGhlIDMyLWJpdCBJL08gcG9ydCBzcGVjaWZpZWQgYnkgUG9ydCB3aXRoIHRoZSB2 YWx1ZSBzcGVjaWZpZWQgYnkgVmFsdWUNCj4gPj4+ICsgIGFuZCByZXR1cm5zIFZhbHVlLiBUaGlz IGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIEkvTyByZWFkIGFuZCB3cml0ZQ0KPiA+ Pj4gKyAgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsNCj4gPj4+ICsgIElmIDMy LWJpdCBJL08gcG9ydCBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgp Lg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtICBQb3J0ICBUaGUgSS9PIHBvcnQgdG8gd3JpdGUu DQo+ID4+PiArICBAcGFyYW0gIFZhbHVlIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgSS9PIHBv cnQuDQo+ID4+PiArDQo+ID4+PiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRoZSBJL08g cG9ydC4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICtVSU5UMzINCj4gPj4+ICtFRklBUEkN Cj4gPj4+ICtJb1dyaXRlMzIgKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgIFBvcnQsDQo+ID4+PiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg VmFsdWUNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4g Pj4+ICsgIHJldHVybiBWYWx1ZTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+ PiArICBSZWFkcyBhIDY0LWJpdCBJL08gcG9ydC4NCj4gPj4+ICsNCj4gPj4+ICsgIFJlYWRzIHRo ZSA2NC1iaXQgSS9PIHBvcnQgc3BlY2lmaWVkIGJ5IFBvcnQuIFRoZSA2NC1iaXQgcmVhZCB2YWx1 ZSBpcyByZXR1cm5lZC4NCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhh dCBhbGwgSS9PIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgYXJlDQo+ID4+PiArICBzZXJpYWxp emVkLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgSWYgNjQtYml0IEkvTyBwb3J0IG9wZXJhdGlvbnMgYXJl IG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArICBJZiBQb3J0IGlzIG5vdCBh bGlnbmVkIG9uIGEgNjQtYml0IGJvdW5kYXJ5LCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKw0KPiA+ Pj4gKyAgQHBhcmFtICBQb3J0ICBUaGUgSS9PIHBvcnQgdG8gcmVhZC4NCj4gPj4+ICsNCj4gPj4+ ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ID4+PiArDQo+ID4+PiArKiovDQo+ID4+PiAr VUlOVDY0DQo+ID4+PiArRUZJQVBJDQo+ID4+PiArSW9SZWFkNjQgKA0KPiA+Pj4gKyAgSU4gICAg ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFBvcnQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ ID4+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+ICsgIHJldHVybiAwOw0KPiA+Pj4gK30NCj4g Pj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIFdyaXRlcyBhIDY0LWJpdCBJL08gcG9ydC4NCj4g Pj4+ICsNCj4gPj4+ICsgIFdyaXRlcyB0aGUgNjQtYml0IEkvTyBwb3J0IHNwZWNpZmllZCBieSBQ b3J0IHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZQ0KPiA+Pj4gKyAgYW5kIHJldHVy bnMgVmFsdWUuIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgSS9PIHJlYWQg YW5kIHdyaXRlDQo+ID4+PiArICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiA+Pj4gKw0K PiA+Pj4gKyAgSWYgNjQtYml0IEkvTyBwb3J0IG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQs IHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArICBJZiBQb3J0IGlzIG5vdCBhbGlnbmVkIG9uIGEgNjQt Yml0IGJvdW5kYXJ5LCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtICBQ b3J0ICBUaGUgSS9PIHBvcnQgdG8gd3JpdGUuDQo+ID4+PiArICBAcGFyYW0gIFZhbHVlIFRoZSB2 YWx1ZSB0byB3cml0ZSB0byB0aGUgSS9PIHBvcnQuDQo+ID4+PiArDQo+ID4+PiArICBAcmV0dXJu IFRoZSB2YWx1ZSB3cml0dGVuIHRvIHRoZSBJL08gcG9ydC4NCj4gPj4+ICsNCj4gPj4+ICsqKi8N Cj4gPj4+ICtVSU5UNjQNCj4gPj4+ICtFRklBUEkNCj4gPj4+ICtJb1dyaXRlNjQgKA0KPiA+Pj4g KyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFBvcnQsDQo+ID4+PiArICBJTiAg ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPj4+ICsgICkNCj4gPj4+ICt7 DQo+ID4+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+ICsgIHJldHVybiAwOw0KPiA+Pj4gK30N Cj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIFJlYWRzIGFuIDgtYml0IEkvTyBwb3J0IGZp Zm8gaW50byBhIGJsb2NrIG9mIG1lbW9yeS4NCj4gPj4+ICsNCj4gPj4+ICsgIFJlYWRzIHRoZSA4 LWJpdCBJL08gZmlmbyBwb3J0IHNwZWNpZmllZCBieSBQb3J0Lg0KPiA+Pj4gKyAgVGhlIHBvcnQg aXMgcmVhZCBDb3VudCB0aW1lcywgYW5kIHRoZSByZWFkIGRhdGEgaXMNCj4gPj4+ICsgIHN0b3Jl ZCBpbiB0aGUgcHJvdmlkZWQgQnVmZmVyLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgVGhpcyBmdW5jdGlv biBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBJL08gcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyBh cmUNCj4gPj4+ICsgIHNlcmlhbGl6ZWQuDQo+ID4+PiArDQo+ID4+PiArICBJZiA4LWJpdCBJL08g cG9ydCBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4g Kw0KPiA+Pj4gKyAgQHBhcmFtICBQb3J0ICAgIFRoZSBJL08gcG9ydCB0byByZWFkLg0KPiA+Pj4g KyAgQHBhcmFtICBDb3VudCAgIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVhZCBJL08gcG9ydC4N Cj4gPj4+ICsgIEBwYXJhbSAgQnVmZmVyICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSByZWFkIGRh dGEgaW50by4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJ DQo+ID4+PiArSW9SZWFkRmlmbzggKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgIFBvcnQsDQo+ID4+PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgQ291bnQsDQo+ID4+PiArICBPVVQgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkJ1 ZmZlcg0KPiA+Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIFdyaXRlcyBhIGJsb2NrIG9mIG1l bW9yeSBpbnRvIGFuIDgtYml0IEkvTyBwb3J0IGZpZm8uDQo+ID4+PiArDQo+ID4+PiArICBXcml0 ZXMgdGhlIDgtYml0IEkvTyBmaWZvIHBvcnQgc3BlY2lmaWVkIGJ5IFBvcnQuDQo+ID4+PiArICBU aGUgcG9ydCBpcyB3cml0dGVuIENvdW50IHRpbWVzLCBhbmQgdGhlIHdyaXRlIGRhdGEgaXMNCj4g Pj4+ICsgIHJldHJpZXZlZCBmcm9tIHRoZSBwcm92aWRlZCBCdWZmZXIuDQo+ID4+PiArDQo+ID4+ PiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIEkvTyB3cml0ZSBhbmQg d3JpdGUgb3BlcmF0aW9ucyBhcmUNCj4gPj4+ICsgIHNlcmlhbGl6ZWQuDQo+ID4+PiArDQo+ID4+ PiArICBJZiA4LWJpdCBJL08gcG9ydCBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVu IEFTU0VSVCgpLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtICBQb3J0ICAgIFRoZSBJL08gcG9y dCB0byB3cml0ZS4NCj4gPj4+ICsgIEBwYXJhbSAgQ291bnQgICBUaGUgbnVtYmVyIG9mIHRpbWVz IHRvIHdyaXRlIEkvTyBwb3J0Lg0KPiA+Pj4gKyAgQHBhcmFtICBCdWZmZXIgIFRoZSBidWZmZXIg dG8gcmV0cmlldmUgdGhlIHdyaXRlIGRhdGEgZnJvbS4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4g Pj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArSW9Xcml0ZUZpZm84ICgNCj4gPj4+ICsg IElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBQb3J0LA0KPiA+Pj4gKyAgSU4gICAg ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIENvdW50LA0KPiA+Pj4gKyAgSU4gICAgICBWT0lE ICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXINCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+ PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+ PiArICBSZWFkcyBhIDE2LWJpdCBJL08gcG9ydCBmaWZvIGludG8gYSBibG9jayBvZiBtZW1vcnku DQo+ID4+PiArDQo+ID4+PiArICBSZWFkcyB0aGUgMTYtYml0IEkvTyBmaWZvIHBvcnQgc3BlY2lm aWVkIGJ5IFBvcnQuDQo+ID4+PiArICBUaGUgcG9ydCBpcyByZWFkIENvdW50IHRpbWVzLCBhbmQg dGhlIHJlYWQgZGF0YSBpcw0KPiA+Pj4gKyAgc3RvcmVkIGluIHRoZSBwcm92aWRlZCBCdWZmZXIu DQo+ID4+PiArDQo+ID4+PiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxs IEkvTyByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zIGFyZQ0KPiA+Pj4gKyAgc2VyaWFsaXplZC4N Cj4gPj4+ICsNCj4gPj4+ICsgIElmIDE2LWJpdCBJL08gcG9ydCBvcGVyYXRpb25zIGFyZSBub3Qg c3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtICBQb3J0 ICAgIFRoZSBJL08gcG9ydCB0byByZWFkLg0KPiA+Pj4gKyAgQHBhcmFtICBDb3VudCAgIFRoZSBu dW1iZXIgb2YgdGltZXMgdG8gcmVhZCBJL08gcG9ydC4NCj4gPj4+ICsgIEBwYXJhbSAgQnVmZmVy ICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSByZWFkIGRhdGEgaW50by4NCj4gPj4+ICsNCj4gPj4+ ICsqKi8NCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArSW9SZWFkRmlmbzE2ICgN Cj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBQb3J0LA0KPiA+Pj4g KyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIENvdW50LA0KPiA+Pj4gKyAgT1VU ICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXINCj4gPj4+ICsgICkNCj4gPj4+ ICt7DQo+ID4+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAr LyoqDQo+ID4+PiArICBXcml0ZXMgYSBibG9jayBvZiBtZW1vcnkgaW50byBhIDE2LWJpdCBJL08g cG9ydCBmaWZvLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgV3JpdGVzIHRoZSAxNi1iaXQgSS9PIGZpZm8g cG9ydCBzcGVjaWZpZWQgYnkgUG9ydC4NCj4gPj4+ICsgIFRoZSBwb3J0IGlzIHdyaXR0ZW4gQ291 bnQgdGltZXMsIGFuZCB0aGUgd3JpdGUgZGF0YSBpcw0KPiA+Pj4gKyAgcmV0cmlldmVkIGZyb20g dGhlIHByb3ZpZGVkIEJ1ZmZlci4NCj4gPj4+ICsNCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gbXVz dCBndWFyYW50ZWUgdGhhdCBhbGwgSS9PIHdyaXRlIGFuZCB3cml0ZSBvcGVyYXRpb25zIGFyZQ0K PiA+Pj4gKyAgc2VyaWFsaXplZC4NCj4gPj4+ICsNCj4gPj4+ICsgIElmIDE2LWJpdCBJL08gcG9y dCBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKw0K PiA+Pj4gKyAgQHBhcmFtICBQb3J0ICAgIFRoZSBJL08gcG9ydCB0byB3cml0ZS4NCj4gPj4+ICsg IEBwYXJhbSAgQ291bnQgICBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHdyaXRlIEkvTyBwb3J0Lg0K PiA+Pj4gKyAgQHBhcmFtICBCdWZmZXIgIFRoZSBidWZmZXIgdG8gcmV0cmlldmUgdGhlIHdyaXRl IGRhdGEgZnJvbS4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJ QVBJDQo+ID4+PiArSW9Xcml0ZUZpZm8xNiAoDQo+ID4+PiArICBJTiAgICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgUG9ydCwNCj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICBDb3VudCwNCj4gPj4+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAqQnVmZmVyDQo+ID4+PiArICApDQo+ID4+PiArew0KPiA+Pj4gKyAgQVNTRVJUIChGQUxTRSk7 DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgUmVhZHMgYSAzMi1iaXQg SS9PIHBvcnQgZmlmbyBpbnRvIGEgYmxvY2sgb2YgbWVtb3J5Lg0KPiA+Pj4gKw0KPiA+Pj4gKyAg UmVhZHMgdGhlIDMyLWJpdCBJL08gZmlmbyBwb3J0IHNwZWNpZmllZCBieSBQb3J0Lg0KPiA+Pj4g KyAgVGhlIHBvcnQgaXMgcmVhZCBDb3VudCB0aW1lcywgYW5kIHRoZSByZWFkIGRhdGEgaXMNCj4g Pj4+ICsgIHN0b3JlZCBpbiB0aGUgcHJvdmlkZWQgQnVmZmVyLg0KPiA+Pj4gKw0KPiA+Pj4gKyAg VGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBJL08gcmVhZCBhbmQgd3JpdGUg b3BlcmF0aW9ucyBhcmUNCj4gPj4+ICsgIHNlcmlhbGl6ZWQuDQo+ID4+PiArDQo+ID4+PiArICBJ ZiAzMi1iaXQgSS9PIHBvcnQgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NF UlQoKS4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSAgUG9ydCAgICBUaGUgSS9PIHBvcnQgdG8g cmVhZC4NCj4gPj4+ICsgIEBwYXJhbSAgQ291bnQgICBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJl YWQgSS9PIHBvcnQuDQo+ID4+PiArICBAcGFyYW0gIEJ1ZmZlciAgVGhlIGJ1ZmZlciB0byBzdG9y ZSB0aGUgcmVhZCBkYXRhIGludG8uDQo+ID4+PiArDQo+ID4+PiArKiovDQo+ID4+PiArVk9JRA0K PiA+Pj4gK0VGSUFQSQ0KPiA+Pj4gK0lvUmVhZEZpZm8zMiAoDQo+ID4+PiArICBJTiAgICAgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgUG9ydCwNCj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPj4+ICsgIE9VVCAgICAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAqQnVmZmVyDQo+ID4+PiArICApDQo+ID4+PiArew0KPiA+Pj4gKyAgQVNTRVJU IChGQUxTRSk7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgV3JpdGVz IGEgYmxvY2sgb2YgbWVtb3J5IGludG8gYSAzMi1iaXQgSS9PIHBvcnQgZmlmby4NCj4gPj4+ICsN Cj4gPj4+ICsgIFdyaXRlcyB0aGUgMzItYml0IEkvTyBmaWZvIHBvcnQgc3BlY2lmaWVkIGJ5IFBv cnQuDQo+ID4+PiArICBUaGUgcG9ydCBpcyB3cml0dGVuIENvdW50IHRpbWVzLCBhbmQgdGhlIHdy aXRlIGRhdGEgaXMNCj4gPj4+ICsgIHJldHJpZXZlZCBmcm9tIHRoZSBwcm92aWRlZCBCdWZmZXIu DQo+ID4+PiArDQo+ID4+PiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxs IEkvTyB3cml0ZSBhbmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUNCj4gPj4+ICsgIHNlcmlhbGl6ZWQu DQo+ID4+PiArDQo+ID4+PiArICBJZiAzMi1iaXQgSS9PIHBvcnQgb3BlcmF0aW9ucyBhcmUgbm90 IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSAgUG9y dCAgICBUaGUgSS9PIHBvcnQgdG8gd3JpdGUuDQo+ID4+PiArICBAcGFyYW0gIENvdW50ICAgVGhl IG51bWJlciBvZiB0aW1lcyB0byB3cml0ZSBJL08gcG9ydC4NCj4gPj4+ICsgIEBwYXJhbSAgQnVm ZmVyICBUaGUgYnVmZmVyIHRvIHJldHJpZXZlIHRoZSB3cml0ZSBkYXRhIGZyb20uDQo+ID4+PiAr DQo+ID4+PiArKiovDQo+ID4+PiArVk9JRA0KPiA+Pj4gK0VGSUFQSQ0KPiA+Pj4gK0lvV3JpdGVG aWZvMzIgKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFBvcnQs DQo+ID4+PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQ291bnQsDQo+ID4+ PiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcg0KPiA+Pj4gKyAg KQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+Pj4gK30NCj4gPj4+ICsN Cj4gPj4+ICsvKioNCj4gPj4+ICsgIFJlYWRzIGFuIDgtYml0IE1NSU8gcmVnaXN0ZXIuDQo+ID4+ PiArDQo+ID4+PiArICBSZWFkcyB0aGUgOC1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkg QWRkcmVzcy4gVGhlIDgtYml0IHJlYWQgdmFsdWUgaXMNCj4gPj4+ICsgIHJldHVybmVkLiBUaGlz IGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQgd3JpdGUNCj4g Pj4+ICsgIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArDQo+ID4+PiArICBJZiA4 LWJpdCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNT RVJUKCkuDQo+ID4+PiArDQo+ID4+PiArICBAcGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0 ZXIgdG8gcmVhZC4NCj4gPj4+ICsNCj4gPj4+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ ID4+PiArDQo+ID4+PiArKiovDQo+ID4+PiArVUlOVDgNCj4gPj4+ICtFRklBUEkNCj4gPj4+ICtN bWlvUmVhZDggKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFk ZHJlc3MNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICByZXR1cm4gTW1pb1JlYWQ4SW50 ZXJuYWwgKEFkZHJlc3MpOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsg IFdyaXRlcyBhbiA4LWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgV3JpdGVz IHRoZSA4LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzIHdpdGggdGhlIHZh bHVlIHNwZWNpZmllZA0KPiA+Pj4gKyAgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuIFRoaXMg ZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkDQo+ID4+PiArICBhbmQg d3JpdGUgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsNCj4gPj4+ICsgIElmIDgt Yml0IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NF UlQoKS4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3Rl ciB0byB3cml0ZS4NCj4gPj4+ICsgIEBwYXJhbSAgVmFsdWUgICBUaGUgdmFsdWUgdG8gd3JpdGUg dG8gdGhlIE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArDQo+ID4+PiArKiovDQo+ID4+PiArVUlOVDgN Cj4gPj4+ICtFRklBUEkNCj4gPj4+ICtNbWlvV3JpdGU4ICgNCj4gPj4+ICsgIElOICAgICAgVUlO VE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4+PiArICApDQo+ID4+PiArew0KPiA+Pj4gKyAg TW1pb1dyaXRlOEludGVybmFsIChBZGRyZXNzLCBWYWx1ZSk7DQo+ID4+PiArICByZXR1cm4gVmFs dWU7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgUmVhZHMgYSAxNi1i aXQgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsNCj4gPj4+ICsgIFJlYWRzIHRoZSAxNi1iaXQgTU1J TyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcy4gVGhlIDE2LWJpdCByZWFkIHZhbHVlIGlz DQo+ID4+PiArICByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFs bCBNTUlPIHJlYWQgYW5kIHdyaXRlDQo+ID4+PiArICBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVk Lg0KPiA+Pj4gKw0KPiA+Pj4gKyAgSWYgMTYtYml0IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBh cmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJh bSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byByZWFkLg0KPiA+Pj4gKw0KPiA+Pj4gKyAg QHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICtVSU5U MTYNCj4gPj4+ICtFRklBUEkNCj4gPj4+ICtNbWlvUmVhZDE2ICgNCj4gPj4+ICsgIElOICAgICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzDQo+ID4+PiArICApDQo+ID4+PiArew0K PiA+Pj4gKyAgQVNTRVJUICgoQWRkcmVzcyAmIDEpID09IDApOw0KPiA+Pj4gKw0KPiA+Pj4gKyAg cmV0dXJuIE1taW9SZWFkMTZJbnRlcm5hbCAoQWRkcmVzcyk7DQo+ID4+PiArfQ0KPiA+Pj4gKw0K PiA+Pj4gKy8qKg0KPiA+Pj4gKyAgV3JpdGVzIGEgMTYtYml0IE1NSU8gcmVnaXN0ZXIuDQo+ID4+ PiArDQo+ID4+PiArICBXcml0ZXMgdGhlIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBi eSBBZGRyZXNzIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZA0KPiA+Pj4gKyAgYnkgVmFsdWUgYW5k IHJldHVybnMgVmFsdWUuIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1J TyByZWFkDQo+ID4+PiArICBhbmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4g Pj4+ICsNCj4gPj4+ICsgIElmIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5v dCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiArDQo+ID4+PiArICBAcGFyYW0gIEFk ZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gd3JpdGUuDQo+ID4+PiArICBAcGFyYW0gIFZhbHVl ICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4gKw0KPiA+ Pj4gKyoqLw0KPiA+Pj4gK1VJTlQxNg0KPiA+Pj4gK0VGSUFQSQ0KPiA+Pj4gK01taW9Xcml0ZTE2 ICgNCj4gPj4+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLA0K PiA+Pj4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4+PiAr ICApDQo+ID4+PiArew0KPiA+Pj4gKyAgQVNTRVJUICgoQWRkcmVzcyAmIDEpID09IDApOw0KPiA+ Pj4gKw0KPiA+Pj4gKyAgTW1pb1dyaXRlMTZJbnRlcm5hbCAoQWRkcmVzcywgVmFsdWUpOw0KPiA+ Pj4gKyAgcmV0dXJuIFZhbHVlOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ ICsgIFJlYWRzIGEgMzItYml0IE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArDQo+ID4+PiArICBSZWFk cyB0aGUgMzItYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuIFRoZSAzMi1i aXQgcmVhZCB2YWx1ZSBpcw0KPiA+Pj4gKyAgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gbXVzdCBn dWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZQ0KPiA+Pj4gKyAgb3BlcmF0aW9u cyBhcmUgc2VyaWFsaXplZC4NCj4gPj4+ICsNCj4gPj4+ICsgIElmIDMyLWJpdCBNTUlPIHJlZ2lz dGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRoZW4gQVNTRVJUKCkuDQo+ID4+PiAr DQo+ID4+PiArICBAcGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gcmVhZC4NCj4g Pj4+ICsNCj4gPj4+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ID4+PiArDQo+ID4+PiAr KiovDQo+ID4+PiArVUlOVDMyDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArTW1pb1JlYWQzMiAoDQo+ ID4+PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcw0KPiA+Pj4g KyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEFTU0VSVCAoKEFkZHJlc3MgJiAzKSA9PSAwKTsNCj4g Pj4+ICsNCj4gPj4+ICsgIHJldHVybiBNbWlvUmVhZDMySW50ZXJuYWwgKEFkZHJlc3MpOw0KPiA+ Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIFdyaXRlcyBhIDMyLWJpdCBNTUlP IHJlZ2lzdGVyLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgV3JpdGVzIHRoZSAzMi1iaXQgTU1JTyByZWdp c3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcyB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZpZWQNCj4gPj4+ ICsgIGJ5IFZhbHVlIGFuZCByZXR1cm5zIFZhbHVlLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFu dGVlIHRoYXQgYWxsIE1NSU8gcmVhZA0KPiA+Pj4gKyAgYW5kIHdyaXRlIG9wZXJhdGlvbnMgYXJl IHNlcmlhbGl6ZWQuDQo+ID4+PiArDQo+ID4+PiArICBJZiAzMi1iaXQgTU1JTyByZWdpc3RlciBv cGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pj4gKw0KPiA+ Pj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiA+Pj4g KyAgQHBhcmFtICBWYWx1ZSAgIFRoZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgTU1JTyByZWdpc3Rl ci4NCj4gPj4+ICsNCj4gPj4+ICsqKi8NCj4gPj4+ICtVSU5UMzINCj4gPj4+ICtFRklBUEkNCj4g Pj4+ICtNbWlvV3JpdGUzMiAoDQo+ID4+PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgQWRkcmVzcywNCj4gPj4+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBWYWx1ZQ0KPiA+Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEFTU0VSVCAoKEFkZHJlc3Mg JiAzKSA9PSAwKTsNCj4gPj4+ICsNCj4gPj4+ICsgIE1taW9Xcml0ZTMySW50ZXJuYWwgKEFkZHJl c3MsIFZhbHVlKTsNCj4gPj4+ICsgIHJldHVybiBWYWx1ZTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ ID4+PiArLyoqDQo+ID4+PiArICBSZWFkcyBhIDY0LWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiA+Pj4g Kw0KPiA+Pj4gKyAgUmVhZHMgdGhlIDY0LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBB ZGRyZXNzLiBUaGUgNjQtYml0IHJlYWQgdmFsdWUgaXMNCj4gPj4+ICsgIHJldHVybmVkLiBUaGlz IGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQgd3JpdGUNCj4g Pj4+ICsgIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ID4+PiArDQo+ID4+PiArICBJZiA2 NC1iaXQgTU1JTyByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0aGVuIEFT U0VSVCgpLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lz dGVyIHRvIHJlYWQuDQo+ID4+PiArDQo+ID4+PiArICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0K PiA+Pj4gKw0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1VJTlQ2NA0KPiA+Pj4gK0VGSUFQSQ0KPiA+Pj4g K01taW9SZWFkNjQgKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IEFkZHJlc3MNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBBU1NFUlQgKChBZGRyZXNz ICYgNykgPT0gMCk7DQo+ID4+PiArDQo+ID4+PiArICByZXR1cm4gTW1pb1JlYWQ2NEludGVybmFs IChBZGRyZXNzKTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICBXcml0 ZXMgYSA2NC1iaXQgTU1JTyByZWdpc3Rlci4NCj4gPj4+ICsNCj4gPj4+ICsgIFdyaXRlcyB0aGUg NjQtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mgd2l0aCB0aGUgdmFsdWUg c3BlY2lmaWVkDQo+ID4+PiArICBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhpcyBmdW5j dGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQNCj4gPj4+ICsgIGFuZCB3cml0 ZSBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgSWYgNjQtYml0 IE1NSU8gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdGhlbiBBU1NFUlQo KS4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0 byB3cml0ZS4NCj4gPj4+ICsgIEBwYXJhbSAgVmFsdWUgICBUaGUgdmFsdWUgdG8gd3JpdGUgdG8g dGhlIE1NSU8gcmVnaXN0ZXIuDQo+ID4+PiArDQo+ID4+PiArKiovDQo+ID4+PiArVUlOVDY0DQo+ ID4+PiArRUZJQVBJDQo+ID4+PiArTW1pb1dyaXRlNjQgKA0KPiA+Pj4gKyAgSU4gICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ID4+PiArICBJTiAgICAgIFVJTlQ2NCAg ICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBB U1NFUlQgKChBZGRyZXNzICYgNykgPT0gMCk7DQo+ID4+PiArDQo+ID4+PiArICBNbWlvV3JpdGU2 NEludGVybmFsIChBZGRyZXNzLCBWYWx1ZSk7DQo+ID4+PiArICByZXR1cm4gVmFsdWU7DQo+ID4+ PiArfQ0KPiA+Pj4gLS0NCj4gPj4+IDIuMTcuMA0KPiA+Pg0KDQo=