From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E68C10E1BD for ; Fri, 10 Nov 2023 07:49:08 +0000 (UTC) From: "Hogander, Jouni" To: "Joshi, Kunal1" , "igt-dev@lists.freedesktop.org" Date: Fri, 10 Nov 2023 07:49:04 +0000 Message-ID: References: <20231110071624.1365998-1-kunal1.joshi@intel.com> <20231110071624.1365998-7-kunal1.joshi@intel.com> In-Reply-To: <20231110071624.1365998-7-kunal1.joshi@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 6/7] tests/intel/kms_psr: made test compaitable with pr List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Murthy, Arun R" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T24gRnJpLCAyMDIzLTExLTEwIGF0IDEyOjQ2ICswNTMwLCBLdW5hbCBKb3NoaSB3cm90ZToKPiBN b2RpZmllZCBrbXNfcHNyIHRvIGhhdmUgc3VwcG9ydCBmb3IgUFIuCj4gCj4gdjI6IHJlbW92ZSBz ZXRfb3V0cHV0IGFuZCBoYXZlIG91dHB1dHMgKEpvdW5pKQo+IHYzOiBsb29wIG92ZXIgY29ubmVj dGVkIG91dHB1dHMgKEpvdW5pKQo+IAo+IENjOiBKb3VuaSBIw7ZnYW5kZXIgPGpvdW5pLmhvZ2Fu ZGVyQGludGVsLmNvbT4KPiBDYzogQW5pbWVzaCBNYW5uYSA8YW5pbWVzaC5tYW5uYUBpbnRlbC5j b20+Cj4gQ2M6IEFydW4gUiBNdXJ0aHkgPGFydW4uci5tdXJ0aHlAaW50ZWwuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IEt1bmFsIEpvc2hpIDxrdW5hbDEuam9zaGlAaW50ZWwuY29tPgo+IC0tLQo+IMKg dGVzdHMvaW50ZWwva21zX3Bzci5jIHwgMzg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0KPiAtLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDI5MCBpbnNlcnRpb25zKCspLCA5 NyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwva21zX3Bzci5jIGIv dGVzdHMvaW50ZWwva21zX3Bzci5jCj4gaW5kZXggODQ4NWU5ODk0Li40YTdjNTE0ZTggMTAwNjQ0 Cj4gLS0tIGEvdGVzdHMvaW50ZWwva21zX3Bzci5jCj4gKysrIGIvdGVzdHMvaW50ZWwva21zX3Bz ci5jCj4gQEAgLTI1LDcgKzI1LDcgQEAKPiDCoC8qKgo+IMKgICogVEVTVDoga21zIHBzcgo+IMKg ICogQ2F0ZWdvcnk6IERpc3BsYXkKPiAtICogRGVzY3JpcHRpb246IFRlc3RzIGJlaGF2aW91ciBv ZiBQU1IgJiBQU1IyCj4gKyAqIERlc2NyaXB0aW9uOiBUZXN0cyBiZWhhdmlvdXIgb2YgUFNSICYg UFNSMiAmIFBSCj4gwqAgKi8KPiDCoAo+IMKgI2luY2x1ZGUgImlndC5oIgo+IEBAIC0zOSwxNCAr MzksMTQgQEAKPiDCoCNpbmNsdWRlICJ4ZS94ZV9xdWVyeS5oIgo+IMKgCj4gwqAvKioKPiAtICog U1VCVEVTVDogYmFzaWMKPiArICogU1VCVEVTVDogcHNyX2Jhc2ljCj4gwqAgKiBEZXNjcmlwdGlv bjogQmFzaWMgY2hlY2sgZm9yIHBzciBpZiBpdCBpcyBkZXRlY3RpbmcgY2hhbmdlcyBtYWRlCj4g aW4gcGxhbmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gwqAgKiBGdW5j dGlvbmFsaXR5OiBwc3IKPiDCoCAqIE1lZ2EgZmVhdHVyZTogUFNSCj4gwqAgKiBUZXN0IGNhdGVn b3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiDCoCAqCj4gLSAqIFNVQlRFU1Q6ICVzXyVzCj4gKyAq IFNVQlRFU1Q6IHBzcl8lc18lcwo+IMKgICogRGVzY3JpcHRpb246IENoZWNrIGlmIHBzciBpcyBk ZXRlY3RpbmcgbWVtb3J5IG1hcHBpbmcsIHJlbmRlcmluZwo+IGFuZCBwbGFuZQo+IMKgICrCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiAlYXJnWzFdCj4g wqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUKPiBAQCAtNjcsNyArNjcsNyBAQAo+IMKgICov Cj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBzcHJpdGVfcGxhbmVfbW92ZQo+ICsgKiBTVUJU RVNUOiBwc3Jfc3ByaXRlX3BsYW5lX21vdmUKPiDCoCAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBw c3IgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxhbmUKPiDC oCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24gc3By aXRlIHBsYW5lcwo+IMKgICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1LCB4ZQo+IEBAIC03NSw3 ICs3NSw3IEBACj4gwqAgKiBNZWdhIGZlYXR1cmU6IFBTUgo+IMKgICogVGVzdCBjYXRlZ29yeTog ZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gwqAgKgo+IC0gKiBTVUJURVNUOiAlc18lcwo+ICsgKiBTVUJU RVNUOiBwc3JfJXNfJXMKPiDCoCAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwc3IgaXMgZGV0ZWN0 aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxhbmUKPiDCoCAqwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24gJWFyZ1sxXSBwbGFuZXMK PiDCoCAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtOTYsNyArOTYsNyBAQAo+ IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBwcmltYXJ5XyVzCj4gKyAqIFNVQlRF U1Q6IHBzcl9wcmltYXJ5XyVzCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRl dGVjdGluZyBtZW1vcnkgbWFwcGluZywgcmVuZGVyaW5nCj4gYW5kIHBsYW5lCj4gwqAgKsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uICVhcmdbMV0gcGxh bmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gQEAgLTExMSw3ICsxMTEs NyBAQAo+IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBkcG1zCj4gKyAqIFNVQlRF U1Q6IHBzcl9kcG1zCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRldGVjdGlu ZyBjaGFuZ2VzIHdoZW4gcmVuZGVyaW5nCj4gb3BlcmF0aW9uIGlzCj4gwqAgKsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHBlcmZvcm1lZMKgIHdpdGggZHBtcyBlbmFibGVkIG9yIGRpc2FibGVk Cj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gQEAgLTExOSwxNCArMTE5LDE0 IEBACj4gwqAgKiBNZWdhIGZlYXR1cmU6IFBTUgo+IMKgICogVGVzdCBjYXRlZ29yeTogZnVuY3Rp b25hbGl0eSB0ZXN0Cj4gwqAgKgo+IC0gKiBTVUJURVNUOiBub19kcnJzCj4gKyAqIFNVQlRFU1Q6 IHBzcl9ub19kcnJzCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRldGVjdGlu ZyBjaGFuZ2VzIHdoZW4gZHJycyBpcwo+IGRpc2FibGVkCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1l bnQ6IGk5MTUsIHhlCj4gwqAgKiBGdW5jdGlvbmFsaXR5OiBkcnJzLCBwc3IKPiDCoCAqIE1lZ2Eg ZmVhdHVyZTogUFNSCj4gwqAgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiDC oCAqCj4gLSAqIFNVQlRFU1Q6IHN1c3BlbmQKPiArICogU1VCVEVTVDogcHNyX3N1c3BlbmQKPiDC oCAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5nIGNoYW5nZXMgd2hlbiBw bGFuZQo+IG9wZXJhdGlvbgo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpcyBwZXJm b3JtZWQgd2l0aCBzdXNwZW5kIHJlc3VtZSBjeWNsZXMKPiDCoCAqIERyaXZlciByZXF1aXJlbWVu dDogaTkxNSwgeGUKPiBAQCAtMjI5LDYgKzIyOSwxMTIgQEAKPiDCoCAqIEBwbGFuZV9tb3ZlOsKg wqDCoMKgwqDCoMKgwqAgTW92ZSBwbGFuZSBwb3NpdGlvbgo+IMKgICovCj4gwqAKPiArLyoqCj4g KyAqIFNVQlRFU1Q6IHByX2RwbXMKPiArICogRGVzY3JpcHRpb246IENoZWNrIGlmIHByIGlzIGRl dGVjdGluZyBjaGFuZ2VzIHdoZW4gcmVuZGVyaW5nCj4gb3BlcmF0aW9uCj4gKyAqwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaXMgcGVyZm9ybWVkIHdpdGggZHBtcyBlbmFibGVkIG9yIGRpc2Fi bGVkCj4gKyAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiArICogRnVuY3Rpb25hbGl0 eTogZHBtcywgcHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBsYXkKPiArICogVGVzdCBj YXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIFNVQlRF U1Q6IHByX25vX2RycnMKPiArICogRGVzY3JpcHRpb246IENoZWNrIGlmIHByIGlzIGRldGVjdGlu ZyBjaGFuZ2VzIHdoZW4gZHJycyBpcwo+IGRpc2FibGVkCj4gKyAqIERyaXZlciByZXF1aXJlbWVu dDogaTkxNSwgeGUKPiArICogRnVuY3Rpb25hbGl0eTogZHJycywgcHIKPiArICogTWVnYSBmZWF0 dXJlOiBQYW5lbCBSZXBsYXkKPiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0 Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIFNVQlRFU1Q6IHByX3N1c3BlbmQKPiArICogRGVzY3Jp cHRpb246IENoZWNrIGlmIHByIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4gcGxhbmUKPiBvcGVy YXRpb24gaXMKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwZXJmb3JtZWQgd2l0aCBz dXNwZW5kIHJlc3VtZSBjeWNsZXMKPiArICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1LCB4ZQo+ ICsgKiBGdW5jdGlvbmFsaXR5OiBwciwgc3VzcGVuZAo+ICsgKiBNZWdhIGZlYXR1cmU6IFBhbmVs IFJlcGxheQo+ICsgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiArICovCj4g Kwo+ICsvKioKPiArICogU1VCVEVTVDogcHJfYmFzaWMKPiArICogRGVzY3JpcHRpb246IEJhc2lj IGNoZWNrIGZvciBwciBpZiBpdCBpcyBkZXRlY3RpbmcgY2hhbmdlcyBtYWRlCj4gaW4gcGxhbmVz Cj4gKyAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiArICogRnVuY3Rpb25hbGl0eTog cHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBsYXkKPiArICogVGVzdCBjYXRlZ29yeTog ZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIFNVQlRFU1Q6IHByXyVz XyVzCj4gKyAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwciBpcyBkZXRlY3RpbmcgbWVtb3J5IG1h cHBpbmcsIHJlbmRlcmluZwo+IGFuZCBwbGFuZQo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uICVhcmdbMV0gcGxhbmVzCj4gKyAqIERyaXZlciBy ZXF1aXJlbWVudDogaTkxNQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBrbXNfY29yZSwgcGxhbmUsIHBy Cj4gKyAqIE1lZ2EgZmVhdHVyZTogUGFuZWwgUmVwbGF5Cj4gKyAqIFRlc3QgY2F0ZWdvcnk6IGZ1 bmN0aW9uYWxpdHkgdGVzdAo+ICsgKgo+ICsgKiBhcmdbMV06Cj4gKyAqCj4gKyAqIEBjdXJzb3I6 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEN1cnNvciBwbGFuZQo+ICsgKiBAcHJpbWFyeTrCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFByaW1hcnkgcGxhbmUKPiArICogQHNwcml0ZTrCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgU3ByaXRlIHBsYW5lCj4gKyAqCj4gKyAqIGFyZ1syXToKPiArICoKPiAr ICogQG1tYXBfY3B1OsKgwqDCoMKgwqDCoMKgwqDCoMKgIE1NQVAgQ1BVCj4gKyAqIEBtbWFwX2d0 dDrCoMKgwqDCoMKgwqDCoMKgwqDCoCBNTUFQIEdUVAo+ICsgKi8KPiArCj4gKy8qKgo+ICsgKiBT VUJURVNUOiBwcl9wcmltYXJ5X3BhZ2VfZmxpcAo+ICsgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYg cHIgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxhbmUKPiAr ICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiBwcmlt YXJ5IHBsYW5lcwo+ICsgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gKyAqIEZ1bmN0 aW9uYWxpdHk6IHBsYW5lLCBwcgo+ICsgKiBNZWdhIGZlYXR1cmU6IFBhbmVsIFJlcGxheQo+ICsg KiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiArICovCj4gKwo+ICsvKioKPiAr ICogU1VCVEVTVDogcHJfcHJpbWFyeV8lcwo+ICsgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHIg aXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxhbmUKPiArICrC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiBwcmltYXJ5 IHBsYW5lcwo+ICsgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gKyAqIEZ1bmN0aW9u YWxpdHk6IGttc19jb3JlLCBwbGFuZSwgcHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBs YXkKPiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqCj4gKyAqIGFy Z1sxXToKPiArICoKPiArICogQGJsdDrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmxp dHRlcgo+ICsgKiBAcmVuZGVyOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSZW5kZXIKPiArICov Cj4gKwo+ICsvKioKPiArICogU1VCVEVTVDogcHJfJXNfJXMKPiArICogRGVzY3JpcHRpb246IENo ZWNrIGlmIHByIGlzIGRldGVjdGluZyBtZW1vcnkgbWFwcGluZywgcmVuZGVyaW5nCj4gYW5kIHBs YW5lCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBwZXJmb3JtZWQg b24gJWFyZ1sxXSBwbGFuZXMKPiArICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1LCB4ZQo+ICsg KiBGdW5jdGlvbmFsaXR5OiBrbXNfY29yZSwgcGxhbmUsIHByCj4gKyAqIE1lZ2EgZmVhdHVyZTog UGFuZWwgUmVwbGF5Cj4gKyAqIFRlc3QgY2F0ZWdvcnk6IGZ1bmN0aW9uYWxpdHkgdGVzdAo+ICsg Kgo+ICsgKiBhcmdbMV06Cj4gKyAqCj4gKyAqIEBjdXJzb3I6wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEN1cnNvciBwbGFuZQo+ICsgKiBAc3ByaXRlOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBT cHJpdGUgcGxhbmUKPiArICoKPiArICogYXJnWzJdOgo+ICsgKgo+ICsgKiBAYmx0OsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCbGl0dGVyCj4gKyAqIEByZW5kZXI6wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFJlbmRlcgo+ICsgKiBAcGxhbmVfb25vZmY6wqDCoMKgwqDCoMKgwqAgUGxh bmUgT24gb2ZmCj4gKyAqIEBwbGFuZV9tb3ZlOsKgwqDCoMKgwqDCoMKgwqAgTW92ZSBwbGFuZSBw b3NpdGlvbgo+ICsgKi8KPiArCj4gwqBlbnVtIG9wZXJhdGlvbnMgewo+IMKgwqDCoMKgwqDCoMKg wqBQQUdFX0ZMSVAsCj4gwqDCoMKgwqDCoMKgwqDCoE1NQVBfR1RULAo+IEBAIC0yNzEsNyArMzc3 LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+IMKgwqDCoMKgwqDCoMKgwqBkcm1Nb2RlTW9kZUluZm8g Km1vZGU7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+IMKgwqDCoMKg wqDCoMKgwqBib29sIHdpdGhfcHNyX2Rpc2FibGVkOwo+ICvCoMKgwqDCoMKgwqDCoGJvb2wgc3Vw cG9ydHNfcHNyOwo+IMKgwqDCoMKgwqDCoMKgwqBib29sIHN1cHBvcnRzX3BzcjI7Cj4gK8KgwqDC oMKgwqDCoMKgYm9vbCBzdXBwb3J0c19wcjsKCkkgdGhpbmsgeW91IGRvbid0IG5lZWQgdGhlc2Ug YW55bW9yZS4KCj4gwqB9IGRhdGFfdDsKPiDCoAo+IMKgc3RhdGljIHZvaWQgY3JlYXRlX2N1cnNv cl9mYihkYXRhX3QgKmRhdGEpCj4gQEAgLTI4OSwzNCArMzk3LDM4IEBAIHN0YXRpYyB2b2lkIGNy ZWF0ZV9jdXJzb3JfZmIoZGF0YV90ICpkYXRhKQo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfcHV0X2Nh aXJvX2N0eChjcik7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgc2V0dXBfb3V0cHV0KGRhdGFf dCAqZGF0YSkKPiArc3RhdGljIGJvb2wgb3V0cHV0X3N1cHBvcnRzX3BzcihkYXRhX3QgKmRhdGEp Cj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5k aXNwbGF5Owo+IMKgwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiAtwqDCoMKg wqDCoMKgwqBlbnVtIHBpcGUgcGlwZTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfcGlw ZV93aXRoX3ZhbGlkX291dHB1dChkaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtTW9kZUNvbm5lY3RvclB0ciBjID0gb3V0cHV0LT5jb25m aWcuY29ubmVjdG9yOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMt PmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3Jlc2V0KGRpc3BsYXkpOwo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwg cGlwZSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghaTkxNV9waXBlX291 dHB1dF9jb21ib192YWxpZChkaXNwbGF5KSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGF0YS0+Y3J0Y19pZCA9IG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQ7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEtPm91dHB1dCA9IG91dHB1dDsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiArwqDCoMKgwqDCoMKg wqBib29sIHN1cHBvcnRzX3BzcjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgc3VwcG9ydHNfcHNyID0g ZmFsc2U7Cj4gK8KgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dCgmZGF0YS0+ ZGlzcGxheSwgb3V0cHV0KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZihw c3Jfc2lua19zdXBwb3J0KGRhdGEtPmRybV9mZCwgZGF0YS0+ZGVidWdmc19mZCwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBQU1JfTU9ERV8yLCBvdXRwdXQpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3VwcG9ydHNfcHNyID0gdHJ1ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBkYXRhLT5zdXBwb3J0c19wc3IyID0gdHJ1ZTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGVidWcoIlBTUl8yIHN1cHBv cnRlZCBvbiAlc1xuIiwgb3V0cHV0LQo+ID5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZSBpZihwc3Jf c2lua19zdXBwb3J0KGRhdGEtPmRybV9mZCwgZGF0YS0KPiA+ZGVidWdmc19mZCwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgUFNSX01PREVfMSwgb3V0cHV0KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Vw cG9ydHNfcHNyID0gdHJ1ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRhdGEtPnN1cHBvcnRzX3BzciA9IHRydWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVidWcoIlBTUl8xIHN1cHBvcnRlZCBv biAlc1xuIiwgb3V0cHV0LQo+ID5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlIGlmKHBzcl9zaW5rX3N1 cHBvcnQoZGF0YS0+ZHJtX2ZkLCBkYXRhLQo+ID5kZWJ1Z2ZzX2ZkLAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFBSX01PREUsIG91dHB1dCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdXBwb3J0c19w c3IgPSB0cnVlOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRhdGEtPnN1cHBvcnRzX3ByID0gdHJ1ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kZWJ1ZygiUFIgc3VwcG9ydGVkIG9uICVzXG4iLCBv dXRwdXQtCj4gPm5hbWUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVidWcoIlBTUi9QU1IyL1BSIG5vdCBzdXBw b3J0ZWQgb24KPiAlc1xuIiwgb3V0cHV0LT5uYW1lKTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IC19 CgoKWW91IGNhbiBicmVhay9yZXR1cm4gb24gZmlyc3QgcHNyIGNhcGFibGUgb3V0cHV0LiBTaG9y dGVyIHZlcnNpb246CgpzdGF0aWMgYm9vbCBvdXRwdXRfc3VwcG9ydHNfcHNyKGRhdGFfdCAqZGF0 YSkKewoJaWd0X291dHB1dF90ICpvdXRwdXQ7CgoJZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dCgm ZGF0YS0+ZGlzcGxheSwgb3V0cHV0KSB7CiAgICAgICAgICAgICAgICBpZihwc3Jfc2lua19zdXBw b3J0KGRhdGEtPmRybV9mZCwgZGF0YS0+ZGVidWdmc19mZCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUFNSX01PREVfMiwgb3V0cHV0KSB8fAoJCSAgIHBzcl9zaW5rX3N1cHBv cnQoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5kZWJ1Z2ZzX2ZkLAoJCQkJICAgIFBTUl9NT0RFXzEsIG91 dHB1dCkgfHwKCQkgICBwc3Jfc2lua19zdXBwb3J0KGRhdGEtPmRybV9mZCwgZGF0YS0+ZGVidWdm c19mZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJfTU9ERSwgb3V0cHV0 KSkKCQkJcmV0dXJuIHRydWU7Cgl9CglyZXR1cm4gZmFsc2U7CiB9CgpCUiwKCkpvdW5pIEjDtmdh bmRlcgoKPiAtCj4gLXN0YXRpYyB2b2lkIGRpc3BsYXlfaW5pdChkYXRhX3QgKmRhdGEpCj4gLXsK PiAtwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLT5kaXNwbGF5LCBkYXRh LT5kcm1fZmQpOwo+IC3CoMKgwqDCoMKgwqDCoHNldHVwX291dHB1dChkYXRhKTsKPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gc3VwcG9ydHNfcHNyOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCBk aXNwbGF5X2ZpbmkoZGF0YV90ICpkYXRhKQo+IEBAIC01MDIsNyArNjE0LDcgQEAgc3RhdGljIHZv aWQgZmJfZGlydHlfZmJfaW9jdGwoZGF0YV90ICpkYXRhLAo+IHN0cnVjdCBpZ3RfZmIgKmZiKQo+ IMKgfQo+IMKgCj4gwqAvKioKPiAtICogU1VCVEVTVDogY3Vyc29yX3BsYW5lX21vdmUKPiArICog U1VCVEVTVDogcHNyX2N1cnNvcl9wbGFuZV9tb3ZlCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sg aWYgcHNyIGlzIGRldGVjdGluZyB0aGUgcGxhbmUgb3BlcmF0aW9ucwo+IHBlcmZvcm1lZCBvbgo+ IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGN1cnNvciBwbGFuZXMKPiDCoCAqIERyaXZl ciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtNTEwLDcgKzYyMiw3IEBAIHN0YXRpYyB2b2lk IGZiX2RpcnR5X2ZiX2lvY3RsKGRhdGFfdCAqZGF0YSwKPiBzdHJ1Y3QgaWd0X2ZiICpmYikKPiDC oCAqIEZ1bmN0aW9uYWxpdHk6IHBzcgo+IMKgICogTWVnYSBmZWF0dXJlOiBQU1IKPiDCoCAqCj4g LSAqIFNVQlRFU1Q6IHByaW1hcnlfcGFnZV9mbGlwCj4gKyAqIFNVQlRFU1Q6IHBzcl9wcmltYXJ5 X3BhZ2VfZmxpcAo+IMKgICogRGVzY3JpcHRpb246IENoZWNrIGlmIHBzciBpcyBkZXRlY3Rpbmcg cGFnZS1mbGlwcGluZyBvcGVyYXRpb25zCj4gcGVyZm9ybWVkCj4gwqAgKsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgb24gcHJpbWFyeSBwbGFuZXMKPiDCoCAqIERyaXZlciByZXF1aXJlbWVudDog aTkxNSwgeGUKPiBAQCAtNTE4LDcgKzYzMCw3IEBAIHN0YXRpYyB2b2lkIGZiX2RpcnR5X2ZiX2lv Y3RsKGRhdGFfdCAqZGF0YSwKPiBzdHJ1Y3QgaWd0X2ZiICpmYikKPiDCoCAqIEZ1bmN0aW9uYWxp dHk6IHBzcgo+IMKgICogTWVnYSBmZWF0dXJlOiBQU1IKPiDCoCAqCj4gLSAqIFNVQlRFU1Q6IHNw cml0ZV9wbGFuZV9vbm9mZgo+ICsgKiBTVUJURVNUOiBwc3Jfc3ByaXRlX3BsYW5lX29ub2ZmCj4g wqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRldGVjdGluZyB0aGUgcGxhbmUgb3Bl cmF0aW9ucwo+IHBlcmZvcm1lZCBvbgo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNw cml0ZSBwbGFuZXMKPiDCoCAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtNjgz LDE0ICs3OTUsMzUgQEAgc3RhdGljIHZvaWQgc2V0dXBfdGVzdF9wbGFuZShkYXRhX3QgKmRhdGEs IGludAo+IHRlc3RfcGxhbmUpCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X2NvbW1pdCgm ZGF0YS0+ZGlzcGxheSk7Cj4gwqB9Cj4gwqAKPiArc3RhdGljIGVudW0gcGlwZSBnZXRfcGlwZV9m b3Jfb3V0cHV0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X291 dHB1dF90ICpvdXRwdXQpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqAgZW51bSBwaXBlIHBpcGU7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoCBmb3JfZWFjaF9waXBlKGRpc3BsYXksIHBpcGUpIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQo cGlwZSwgb3V0cHV0KSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBwaXBlOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fQo+ICvCoMKgwqDCoMKgwqDCoCB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0X2Yo ZmFsc2UsICJObyBwaXBlIGZvdW5kIGZvciBvdXRwdXQgJXNcbiIsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X291dHB1dF9uYW1lKG91dHB1dCkpOwo+ICt9 Cj4gKwo+IMKgc3RhdGljIHZvaWQgdGVzdF9zZXR1cChkYXRhX3QgKmRhdGEpCj4gwqB7Cj4gK8Kg wqDCoMKgwqDCoMKgZW51bSBwaXBlIHBpcGU7Cj4gwqDCoMKgwqDCoMKgwqDCoGRybU1vZGVDb25u ZWN0b3JQdHIgY29ubmVjdG9yOwo+IMKgwqDCoMKgwqDCoMKgwqBib29sIHBzcl9lbnRlcmVkID0g ZmFsc2U7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmVfZihkYXRhLT5vdXRwdXQs Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJObyBhdmFpbGFi bGUgb3V0cHV0IGZvdW5kXG4iKTsKPiDCoAo+ICvCoMKgwqDCoMKgwqDCoCBwaXBlID0gZ2V0X3Bp cGVfZm9yX291dHB1dCgmZGF0YS0+ZGlzcGxheSwgZGF0YS0+b3V0cHV0KTsKPiArwqDCoMKgwqDC oMKgwqAgaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIHBpcGUpOwo+ICvCoMKgwqDC oMKgwqDCoCBpZ3RfcmVxdWlyZV9mKGk5MTVfcGlwZV9vdXRwdXRfY29tYm9fdmFsaWQoJmRhdGEt PmRpc3BsYXkpLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Im91dHB1dCBwaXBlIGNvbWJvIG5vdCB2YWxpZFxuIik7Cj4gK8KgwqDCoMKgwqDCoMKgZGF0YS0+ Y3J0Y19pZCA9IGRhdGEtPm91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQ7Cj4gwqDCoMKgwqDC oMKgwqDCoGNvbm5lY3RvciA9IGRhdGEtPm91dHB1dC0+Y29uZmlnLmNvbm5lY3RvcjsKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGludCBpID0gMDsgaSA8IGNvbm5lY3Rvci0+Y291bnRfbW9k ZXM7IGkrKykgewo+IEBAIC03NDcsMTE1ICs4ODAsMTc1IEBAIGRhdGFfdCBkYXRhID0ge307Cj4g wqAKPiDCoGlndF9tYWluX2FyZ3MoIiIsIGxvbmdfb3B0aW9ucywgaGVscF9zdHIsIG9wdF9oYW5k bGVyLCAmZGF0YSkKPiDCoHsKPiArwqDCoMKgwqDCoMKgwqBpbnQgejsKPiDCoMKgwqDCoMKgwqDC oMKgZW51bSBvcGVyYXRpb25zIG9wOwo+IC3CoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKmFwcGVu ZF9zdWJ0ZXN0X25hbWVbMl0gPSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCIi LAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAicHNyMl8iCj4gK8KgwqDCoMKgwqDC oMKgY29uc3QgY2hhciAqYXBwZW5kX3N1YnRlc3RfbmFtZVszXSA9IHsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgInBzcl8iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAicHNyMl8iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAicHJfIgo+IMKgwqDC oMKgwqDCoMKgwqB9Owo+ICvCoMKgwqDCoMKgwqDCoGludCBtb2Rlc1tdID0ge1BTUl9NT0RFXzEs IFBTUl9NT0RFXzIsIFBSX01PREV9Owo+ICvCoMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0 cHV0Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9maXh0dXJlIHsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihE UklWRVJfSU5URUwgfAo+IERSSVZFUl9YRSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkYXRhLmRlYnVnZnNfZmQgPSBpZ3RfZGVidWdmc19kaXIoZGF0YS5kcm1fZmQpOwo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKga21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9k ZSgpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5kZXZpZCA9IGludGVs X2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWd0X3JlcXVpcmVfZihzaW5rX3N1cHBvcnQoJmRhdGEsIFBTUl9NT0RFXzEpLAo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiU2luayBkb2VzIG5vdCBzdXBwb3J0IFBTUlxuIik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkYXRhLnN1cHBvcnRzX3BzcjIgPSBzaW5rX3N1cHBvcnQoJmRhdGEsIFBT Ul9NT0RFXzIpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5ib3BzID0g YnVmX29wc19jcmVhdGUoZGF0YS5kcm1fZmQpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkaXNwbGF5X2luaXQoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5zdXBwb3J0c19wc3IyID0gZGF0YS5zdXBw b3J0c19wc3IyIHwKPiBzaW5rX3N1cHBvcnQoJmRhdGEsIFBTUl9NT0RFXzIpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3JlcXVpcmVfZihvdXRwdXRfc3VwcG9ydHNfcHNy KCZkYXRhKSwgIlNpbmsgZG9lcwo+IG5vdCBzdXBwb3J0IFBTUi9QU1IyL1BSXG4iKTsKPiDCoMKg wqDCoMKgwqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgZm9yIChkYXRhLm9wX3Bzcl9tb2Rl ID0gUFNSX01PREVfMTsgZGF0YS5vcF9wc3JfbW9kZSA8PQo+IFBTUl9NT0RFXzI7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGF0YS5vcF9wc3JfbW9kZSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKg Zm9yICh6ID0gMDsgeiA8IEFSUkFZX1NJWkUobW9kZXMpOyB6KyspIHsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcF9wc3JfbW9kZSA9IG1vZGVzW3pdOwo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVzY3JpYmUoIkJhc2ljIGNoZWNrIGZv ciBwc3IgaWYgaXQgaXMgZGV0ZWN0aW5nCj4gY2hhbmdlcyBtYWRlIGluIHBsYW5lcyIpOwo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF9mKCIlc2Jhc2ljIiwKPiBh cHBlbmRfc3VidGVzdF9uYW1lW2RhdGEub3BfcHNyX21vZGVdKSB7Cj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnRlc3RfcGxhbmVfaWQgPSBEUk1f UExBTkVfVFlQRV9QUklNQVJZOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXNiYXNpYyIs Cj4gYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dCgmZGF0YS5kaXNw bGF5LAo+IG91dHB1dCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghcHNyX3Npbmtfc3VwcG9ydChkYXRhLmRybV9m ZCwKPiBkYXRhLmRlYnVnZnNfZmQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgCj4gZGF0YS5vcF9wc3JfbW9kZSwgb3V0cHV0KSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlz cGxheSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGF0YS5vdXRwdXQgPSBvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2R5bmFtaWNf ZigiJXMiLCBkYXRhLm91dHB1dC0KPiA+bmFtZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YXRhLnRlc3RfcGxhbmVfaWQgPQo+IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0 ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rlc2NyaWJlKCJD aGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5nIGNoYW5nZXMgd2hlbgo+IGRycnMgaXMgZGlzYWJsZWQi KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3RfZigiJXNub19k cnJzIiwKPiBhcHBlbmRfc3VidGVzdF9uYW1lW2RhdGEub3BfcHNyX21vZGVdKSB7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnRlc3RfcGxhbmVf aWQgPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGRycnNfZGlzYWJsZWQo JmRhdGEpKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCIlc25vX2RycnMiLAo+IGFwcGVuZF9zdWJ0ZXN0X25h bWVbel0pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoJmRhdGEuZGlzcGxheSwKPiBvdXRwdXQpIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIXBzcl9zaW5rX3N1cHBvcnQoZGF0YS5kcm1fZmQsCj4gZGF0YS5kZWJ1Z2ZzX2Zk LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IGRh dGEub3BfcHNyX21vZGUsIG91dHB1dCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVl Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS5kaXNwbGF5KTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0 YS5vdXRwdXQgPSBvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9keW5hbWljX2YoIiVzIiwgZGF0YS5vdXRw dXQtCj4gPm5hbWUpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lk ID0KPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0 X3NldHVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydChkcnJzX2Rp c2FibGVkKCZkYXQKPiBhKSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgm ZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKG9wID0gUEFHRV9GTElQOyBvcCA8PSBS RU5ERVI7IG9wKyspIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZ3RfZGVzY3JpYmUoIkNoZWNrIGlmIHBzciBpcyBkZXRlY3RpbmcgcGFnZS0KPiBm bGlwcGluZyxtZW1vcnkgbWFwcGluZyBhbmQgIgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInJl bmRlcmluZyBvcGVyYXRpb25zCj4gcGVyZm9ybWVkIG9uIHByaW1hcnkgcGxhbmVzIik7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF9m KCIlc3ByaW1hcnlfJXMiLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBhcHBlbmRfc3VidGVzdF9uYW1l W2RhdGEub3BfcHNyX21vZGVdLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljX2YoIiVzcHJpbWFyeV8lcyIsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhcHBlbmRfc3VidGVzdF9uYW1lW3pdLAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG9wX3N0cihvcCkpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBfb24oaXNfeGVfZGV2aWNlKGRhdGEu ZHJtX2ZkKQo+ICYmCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG9wID09IE1NQVBf Q1BVIHx8IG9wID09Cj4gTU1BUF9HVFQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IG9wOwo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWTsKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0ZXN0X3NldHVwKCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fdGVzdCgmZGF0YSk7Cj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVz dF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRh LmRpc3BsCj4gYXksIG91dHB1dCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZgo+ICghcHNy X3Npbmtfc3VwcG9ydChkYXRhLmRybV9mZCwgZGF0YS5kZWJ1Z2ZzX2ZkLAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBk YXRhLm9wX3Bzcl9tb2RlLCBvdXRwdXQpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3Jl c2V0KCZkYXRhLmRpc3BsCj4gYXkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm91dHB1 dCA9IG91dHB1dDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2R5bmFtaWNfZigiJXMiLAo+ IGRhdGEub3V0cHV0LT5uYW1lKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkYXRhLm9wID0gb3A7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkYXRhLnRlc3RfcGxhbmVfaWQgPQo+IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ1bl90ZXN0KCZkYXRhKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKG9wID0g TU1BUF9HVFQ7IG9wIDw9IFBMQU5FX09OT0ZGOyBvcCsrKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rlc2NyaWJlKCJDaGVjayBpZiBwc3Ig aXMgZGV0ZWN0aW5nCj4gbWVtb3J5IG1hcHBpbmcscmVuZGVyaW5nICIKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCJhbmQgcGxhbmUgb3BlcmF0aW9ucwo+IHBlcmZvcm1lZCBvbiBzcHJpdGUgcGxh bmVzIik7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3Rfc3VidGVzdF9mKCIlc3Nwcml0ZV8lcyIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IGFwcGVuZF9z dWJ0ZXN0X25hbWVbZGF0YS5vcF9wc3JfbW9kZV0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXNzcHJp dGVfJXMiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSwKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBvcF9zdHIob3ApKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9za2lwX29uKGlzX3hlX2Rl dmljZShkYXRhLmRybV9mZCkKPiAmJgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChv cCA9PSBNTUFQX0NQVSB8fCBvcCA9PQo+IE1NQVBfR1RUKSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEub3Ag PSBvcDsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkYXRhLnRlc3RfcGxhbmVfaWQgPQo+IERSTV9QTEFORV9UWVBFX09WRVJM QVk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVjdGVkX291 dHB1dCgmZGF0YS5kaXNwbAo+IGF5LCBvdXRwdXQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYKPiAoIXBzcl9zaW5rX3N1cHBvcnQoZGF0YS5kcm1fZmQsIGRhdGEuZGVidWdmc19mZCwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgCj4gZGF0YS5vcF9wc3JfbW9kZSwgb3V0cHV0KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rf ZGlzcGxheV9yZXNldCgmZGF0YS5kaXNwbAo+IGF5KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGF0YS5vdXRwdXQgPSBvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9keW5hbWlj X2YoIiVzIiwKPiBkYXRhLm91dHB1dC0+bmFtZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IG9wOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0KPiBEUk1fUExBTkVfVFlQRV9PVkVSTEFZ Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0 YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fdGVzdCgmZGF0 YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAo JmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kZXNjcmliZSgiQ2hlY2sg aWYgcHNyIGlzIGRldGVjdGluZwo+IG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcgIgo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgImFuZCBwbGFuZSBvcGVyYXRpb25zCj4gcGVyZm9ybWVkIG9uIGN1 cnNvciBwbGFuZXMiKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlndF9zdWJ0ZXN0X2YoIiVzY3Vyc29yXyVzIiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4g YXBwZW5kX3N1YnRlc3RfbmFtZVtkYXRhLm9wX3Bzcl9tb2RlXSwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19m KCIlc2N1cnNvcl8lcyIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhcHBlbmRfc3VidGVzdF9uYW1lW3pd LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wX3N0cihvcCkpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBfb24o aXNfeGVfZGV2aWNlKGRhdGEuZHJtX2ZkKQo+ICYmCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKG9wID09IE1NQVBfQ1BVIHx8IG9wID09Cj4gTU1BUF9HVFQpKTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGF0YS5vcCA9IG9wOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZ UEVfQ1VSU09SOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ1bl90ZXN0KCZk YXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvcl9lYWNoX2Nvbm5l Y3RlZF9vdXRwdXQoJmRhdGEuZGlzcGwKPiBheSwgb3V0cHV0KSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmCj4gKCFwc3Jfc2lua19zdXBwb3J0KGRhdGEuZHJtX2ZkLCBkYXRhLmRlYnVnZnNf ZmQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+IGRhdGEub3BfcHNyX21vZGUsIG91dHB1dCkpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlzcGwKPiBheSk7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRhdGEub3V0cHV0ID0gb3V0cHV0Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rf ZHluYW1pY19mKCIlcyIsCj4gZGF0YS5vdXRwdXQtPm5hbWUpIHsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZ UEVfQ1VSU09SOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9z ZXR1cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5f dGVzdCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0 X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWd0X2Rlc2NyaWJlKCJDaGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5nIGNoYW5nZXMg d2hlbgo+IHJlbmRlcmluZyBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIgo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiwqAgd2l0 aCBkcG1zIGVuYWJsZWQgb3IgZGlzYWJsZWQiKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWd0X3N1YnRlc3RfZigiJXNkcG1zIiwKPiBhcHBlbmRfc3VidGVzdF9uYW1lW2RhdGEu b3BfcHNyX21vZGVdKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkYXRhLm9wID0gUkVOREVSOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0gRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRl c3Rfc2V0dXAoJmRhdGEpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZHBtc19vZmZfb24oJmRhdGEpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljX2YoIiVz ZHBtcyIsCj4gYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dCgmZGF0 YS5kaXNwbGF5LAo+IG91dHB1dCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghcHNyX3Npbmtfc3VwcG9ydChkYXRh LmRybV9mZCwKPiBkYXRhLmRlYnVnZnNfZmQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gZGF0YS5vcF9wc3JfbW9kZSwgb3V0cHV0KSkKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9kaXNwbGF5X3Jlc2V0KCZk YXRhLmRpc3BsYXkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhLm91dHB1dCA9IG91dHB1dDsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0 X2R5bmFtaWNfZigiJXMiLCBkYXRhLm91dHB1dC0KPiA+bmFtZSkgewo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkYXRhLm9wID0gUkVOREVSOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnRl c3RfcGxhbmVfaWQgPQo+IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcG1zX29m Zl9vbigmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ1bl90ZXN0KCZkYXRhKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlndF9kZXNjcmliZSgiQ2hlY2sgaWYgcHNyIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdo ZW4KPiBwbGFuZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICIKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIndpdGggc3VzcGVu ZCByZXN1bWUgY3ljbGVzIik7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9z dWJ0ZXN0X2YoIiVzc3VzcGVuZCIsCj4gYXBwZW5kX3N1YnRlc3RfbmFtZVtkYXRhLm9wX3Bzcl9t b2RlXSkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGF0YS5vcCA9IFBMQU5FX09OT0ZGOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0gRFJNX1BMQU5FX1RZUEVfQ1VSU09S Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9z ZXR1cCgmZGF0YSk7Cj4gLQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3VtZShTVVNQRU5EX1NUQVRFX01FTQo+ ICwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBT VVNQRU5EX1RFU1RfTk9ORSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KHBzcl93YWl0X2VudHJ5X2lmX2VuYWJsZWQoJmRhdGEpKTsK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ1bl90ZXN0 KCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCIlc3N1c3BlbmQiLAo+IGFwcGVuZF9zdWJ0ZXN0X25h bWVbel0pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoJmRhdGEuZGlzcGxheSwKPiBvdXRwdXQpIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIXBzcl9zaW5rX3N1cHBvcnQoZGF0YS5kcm1fZmQsCj4gZGF0YS5kZWJ1Z2ZzX2Zk LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IGRh dGEub3BfcHNyX21vZGUsIG91dHB1dCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVl Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS5kaXNwbGF5KTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0 YS5vdXRwdXQgPSBvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9keW5hbWljX2YoIiVzIiwgZGF0YS5vdXRw dXQtCj4gPm5hbWUpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IFBMQU5FX09O T0ZGOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnRlc3RfcGxhbmVfaWQgPQo+IERSTV9Q TEFORV9UWVBFX0NVUlNPUjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0 YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zeXN0ZW1fc3VzcGVuZF9hdXRvcmVzdW1l Cj4gKFNVU1BFTkRfU1RBVEVfTUVNLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gU1VTUEVO RF9URVNUX05PTkUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KHBzcl93YWl0 X2VudHJ5X2lmXwo+IGVuYWJsZWQoJmRhdGEpKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVu X3Rlc3QoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDC oMKgfQo+IMKgCgo=