From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 07/13] drm/i915/cnl: DVFS for PLL enabling Date: Tue, 17 Oct 2017 23:36:14 +0300 Message-ID: <20171017203614.GG10981@intel.com> References: <20171003070614.18396-1-rodrigo.vivi@intel.com> <20171003070614.18396-8-rodrigo.vivi@intel.com> <20171017154421.GX10981@intel.com> <20171017164705.jyltjdk52oyoquo6@intel.com> <20171017172320.GB10981@intel.com> <20171017174522.y3xomf52bb6wgfpz@intel.com> <20171017180205.GC10981@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id DF74F6E2D5 for ; Tue, 17 Oct 2017 20:36:17 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20171017180205.GC10981@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org, "Runyan, Arthur J" , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMTcsIDIwMTcgYXQgMDk6MDI6MDVQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDEwOjQ1OjIyQU0gLTA3MDAsIFJvZHJp Z28gVml2aSB3cm90ZToKPiA+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDA1OjIzOjIwUE0gKzAw MDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gT24gVHVlLCBPY3QgMTcsIDIwMTcgYXQg MDk6NDc6MDVBTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdyb3RlOgo+ID4gPiA+IE9uIFR1ZSwgT2N0 IDE3LCAyMDE3IGF0IDAzOjQ0OjIxUE0gKzAwMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ ID4gPiA+IE9uIFR1ZSwgT2N0IDAzLCAyMDE3IGF0IDEyOjA2OjA4QU0gLTA3MDAsIFJvZHJpZ28g Vml2aSB3cm90ZToKPiA+ID4gPiA+ID4gRnJvbTogIkthaG9sYSwgTWlrYSIgPG1pa2Eua2Fob2xh QGludGVsLmNvbT4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IERpc3BsYXkgVm9sdGFnZSBhbmQg RnJlcXVlbmN5IFN3aXRjaGluZyAoRFZGUykgaXMgdXNlZCB0byBhZGp1c3QgdGhlCj4gPiA+ID4g PiA+IGRpc3BsYXkgdm9sdGFnZSB0byBtYXRjaCB0aGUgZGlzcGxheSBjbG9jayBmcmVxdWVuY2ll cy4gSWYgdm9sdGFnZSBpcwo+ID4gPiA+ID4gPiBzZXQgdG9vIGxvdywgaXQgd2lsbCBicmVhayBm dW5jdGlvbmFsaXR5LiBJZiB2b2x0YWdlIGlzIHNldCB0b28gaGlnaCwKPiA+ID4gPiA+ID4gaXQg d2lsbCB3YXN0ZSBwb3dlci4gVm9sdGFnZSBsZXZlbCBpcyBzZWxlY3RlZCBiYXNlZCBvbiBDRCBj bG9jayBhbmQKPiA+ID4gPiA+ID4gRERJIGNsb2NrLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g VGhlIHNlcXVlbmNlIGJlZm9yZSBmcmVxdWVuY3kgY2hhbmdlIGlzIHRoZSBmb2xsb3dpbmcgYW5k IGl0IHJlcXVlc3RzCj4gPiA+ID4gPiA+IHRoZSBwb3dlciBjb250cm9sbGVyIHRvIHJhaXNlIHZv bHRhZ2UgdG8gbWF4aW11bQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gLSBFbnN1cmUgYW55IHBy ZXZpb3VzIEdUIERyaXZlciBNYWlsYm94IHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlLgo+ID4gPiA+ ID4gPiAtIFdyaXRlIEdUIERyaXZlciBNYWlsYm94IERhdGEgTG93ID0gMHgzLgo+ID4gPiA+ID4g PiAtIFdyaXRlIEdUIERyaXZlciBNYWlsYm94IERhdGEgSGlnaCA9IDB4MC4KPiA+ID4gPiA+ID4g LSBXcml0ZSBHVCBEcml2ZXIgTWFpbGJveCBJbnRlcmZhY2UgPSAweDgwMDAwMDA3Lgo+ID4gPiA+ ID4gPiAtIFBvbGwgR1QgRHJpdmVyIE1haWxib3ggSW50ZXJmYWNlIGZvciBSdW4vQnVzeSBpbmRp Y2F0aW9uIGNsZWFyZWQgKGJpdCAzMSA9IDApLgo+ID4gPiA+ID4gPiAtIFJlYWQgR1QgRHJpdmVy IE1haWxib3ggRGF0YSBMb3csIGlmIGJpdCAwIGlzIDB4MSwgY29udGludWUsIGVsc2UgcmVzdGFy dCB0aGUgc2VxdWVuY2UuCj4gPiA+ID4gPiA+ICAgVGltZW91dCBhZnRlciAzbXMKPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+IFRoZSBzZXF1ZW5jZSBhZnRlciBmcmVxdWVuY3kgY2hhbmdlIGlzIHRo ZSBmb2xsb3dpbmcgYW5kIGl0IHJlcXVlc3RzCj4gPiA+ID4gPiA+IHRoZSBwb3J0IGNvbnRyb2xs ZXIgdG8gcmFpc2Ugdm9sdGFnZSB0byB0aGUgcmVxdWVzdGVkIGxldmVsLgo+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gLSBXcml0ZSBHVCBEcml2ZXIgTWFpbGJveCBEYXRhIExvdwo+ID4gPiA+ID4g PiAgKiBGb3IgbGV2ZWwgMCwgd3JpdGUgMHgwCj4gPiA+ID4gPiA+ICAqIEZvciBsZXZlbCAxLCB3 cml0ZSAweDEKPiA+ID4gPiA+ID4gICogRm9yIGxldmVsIDIsIHdyaXRlIDB4Mgo+ID4gPiA+ID4g PiAgKiBGb3IgbGV2ZWwgMywgd3JpdGUgMHgzCj4gPiA+ID4gPiA+ICAgIC0gV3JpdGUgR1QgRHJp dmVyIE1haWxib3ggRGF0YSBIaWdoID0gMHgwLgo+ID4gPiA+ID4gPiAgICAtIFdyaXRlIEdUIERy aXZlciBNYWlsYm94IEludGVyZmFjZSA9IDB4ODAwMDAwMDcuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiBGb3IgQ2Fubm9ubGFrZSwgdGhlIGxldmVsIDMgaXMgbm90IHVzZWQgYW5kIGl0IGFsaWFz ZXMgdG8gbGV2ZWwgMi4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IHYyOiByZXVzZSBQYXVsbydz IHdvcmsgb24gY2RjbGsuIFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBQYXVsbydzIHBhdGNoCj4gPiA+ ID4gPiA+ICAgICBbUEFUQ0ggMDIvMTJdIGRybS9pOTE1L2NubDogZXh0cmFjdCBjbmxfZHZmc197 cHJlLHBvc3R9X2NoYW5nZQo+ID4gPiA+ID4gPiB2MzogKEJ5IFJvZHJpZ28pOiBSZW1vdmUgZHVw bGljYXRlZCBjb21tZW5kIGFuZCBmaXggdHlwbyBvbiBQYXVsbydzIG5hbWUuCj4gPiA+ID4gPiA+ IHY0OiAoQnkgUm9kcmlnbyk6IFJlYmFzZSBvbiB0b3AgIlVuaWZ5IGFuZCBleHBvcnQgZ2VuOSsg cG9ydF9jbG9jayBjYWxjdWxhdGlvbiIKPiA+ID4gPiA+ID4gICAgIFRoZSBwb3J0IGNsb2NrIGNh bGN1bGF0aW9uIGhlcmUgd2FzIG9ubHkgYWRkcmVzc2luZyBEUCwgc28gbGV0J3MgcmV1c2UKPiA+ ID4gPiA+ID4gICAgIHRoZSBjdXJyZW50IHBvcnQgY2FsY3VsYXRpb24gdGhhdCBpcyBhbHJlYWR5 IGluIHBsYWNlIHdpdGhvdXQgYW55IGR1cGxpY2F0aW9uLgo+ID4gPiA+ID4gPiAgICAgQWxvcyBm aXggcG9ydGNsayA8PSA1OTQwMDAgaW5zdGVhZCBvZiBwb3J0Y2xrIDwgNTk0MDAwLgo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwu Y29tPgo+ID4gPiA+ID4gPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogS2Fob2xhLCBNaWthIDxtaWth LmthaG9sYUBpbnRlbC5jb20+Cj4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2 aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIHwgMzAgKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCj4gPiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gPiA+ID4gPiBpbmRleCBhMmEzZDkzZDY3YmQuLjYw MzBmYmFmYTU4MCAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBsbF9tZ3IuYwo+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcGxsX21nci5jCj4gPiA+ID4gPiA+IEBAIC0xOTY2LDEwICsxOTY2LDIzIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaW50ZWxfZHBsbF9tZ3IgYnh0X3BsbF9tZ3IgPSB7Cj4gPiA+ID4gPiA+ ICAJLmR1bXBfaHdfc3RhdGUgPSBieHRfZHVtcF9od19zdGF0ZSwKPiA+ID4gPiA+ID4gIH07Cj4g PiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgY25sX2dldF9kdmZzX2xldmVsKGlu dCBjZGNsaywgaW50IHBvcnRjbGspCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJaWYgKGNk Y2xrID09IDE2ODAwMCAmJiBwb3J0Y2xrIDw9IDU5NDAwMCkKPiA+ID4gPiA+ID4gKwkJcmV0dXJu IDA7Cj4gPiA+ID4gPiA+ICsJZWxzZSBpZiAoY2RjbGsgPT0gMzM2MDAwICYmIHBvcnRjbGsgPD0g NTk0MDAwKQo+ID4gPiA+ID4gPiArCQlyZXR1cm4gMTsKPiA+ID4gPiA+ID4gKwllbHNlCj4gPiA+ ID4gPiA+ICsJCXJldHVybiAyOwo+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ICBzdGF0aWMgdm9pZCBjbmxfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gPiA+ID4gPiAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqcGxsKQo+ID4gPiA+ID4gPiAgewo+ID4gPiA+ID4gPiAgCXVpbnQzMl90IHZhbDsKPiA+ ID4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ID4gPiArCWludCBsZXZlbDsKPiA+ID4gPiA+ID4g KwlpbnQgY2RjbGssIHBvcnRjbGs7Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gIAkvKiAxLiBF bmFibGUgRFBMTCBwb3dlciBpbiBEUExMX0VOQUJMRS4gKi8KPiA+ID4gPiA+ID4gIAl2YWwgPSBJ OTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKHBsbC0+aWQpKTsKPiA+ID4gPiA+ID4gQEAgLTIwMDYs MTEgKzIwMTksOSBAQCBzdGF0aWMgdm9pZCBjbmxfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ID4gPiAgCS8qCj4gPiA+ID4gPiA+ICAJICog NS4gSWYgdGhlIGZyZXF1ZW5jeSB3aWxsIHJlc3VsdCBpbiBhIGNoYW5nZSB0byB0aGUgdm9sdGFn ZQo+ID4gPiA+ID4gPiAgCSAqIHJlcXVpcmVtZW50LCBmb2xsb3cgdGhlIERpc3BsYXkgVm9sdGFn ZSBGcmVxdWVuY3kgU3dpdGNoaW5nCj4gPiA+ID4gPiA+IC0JICogU2VxdWVuY2UgQmVmb3JlIEZy ZXF1ZW5jeSBDaGFuZ2UKPiA+ID4gPiA+ID4gLQkgKgo+ID4gPiA+ID4gPiAtCSAqIEZJWE1FOiAo RFZGUykgaXMgdXNlZCB0byBhZGp1c3QgdGhlIGRpc3BsYXkgdm9sdGFnZSB0byBtYXRjaCB0aGUK PiA+ID4gPiA+ID4gLQkgKiBkaXNwbGF5IGNsb2NrIGZyZXF1ZW5jaWVzCj4gPiA+ID4gPiA+ICsJ ICogKERWRlMpIFNlcXVlbmNlIEJlZm9yZSBGcmVxdWVuY3kgQ2hhbmdlCj4gPiA+ID4gPiA+ICAJ ICovCj4gPiA+ID4gPiA+ICsJcmV0ID0gY25sX2R2ZnNfcHJlX2NoYW5nZShkZXZfcHJpdik7Cj4g PiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gIAkvKiA2LiBFbmFibGUgRFBMTCBpbiBEUExMX0VOQUJM RS4gKi8KPiA+ID4gPiA+ID4gIAl2YWwgPSBJOTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKHBsbC0+ aWQpKTsKPiA+ID4gPiA+ID4gQEAgLTIwMjgsMTEgKzIwMzksMTQgQEAgc3RhdGljIHZvaWQgY25s X2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4g PiA+ID4gIAkvKgo+ID4gPiA+ID4gPiAgCSAqIDguIElmIHRoZSBmcmVxdWVuY3kgd2lsbCByZXN1 bHQgaW4gYSBjaGFuZ2UgdG8gdGhlIHZvbHRhZ2UKPiA+ID4gPiA+ID4gIAkgKiByZXF1aXJlbWVu dCwgZm9sbG93IHRoZSBEaXNwbGF5IFZvbHRhZ2UgRnJlcXVlbmN5IFN3aXRjaGluZwo+ID4gPiA+ ID4gPiAtCSAqIFNlcXVlbmNlIEFmdGVyIEZyZXF1ZW5jeSBDaGFuZ2UKPiA+ID4gPiA+ID4gLQkg Kgo+ID4gPiA+ID4gPiAtCSAqIEZJWE1FOiAoRFZGUykgaXMgdXNlZCB0byBhZGp1c3QgdGhlIGRp c3BsYXkgdm9sdGFnZSB0byBtYXRjaCB0aGUKPiA+ID4gPiA+ID4gLQkgKiBkaXNwbGF5IGNsb2Nr IGZyZXF1ZW5jaWVzCj4gPiA+ID4gPiA+ICsJICogKERWRlMpIFNlcXVlbmNlIEFmdGVyIEZyZXF1 ZW5jeSBDaGFuZ2UKPiA+ID4gPiA+ID4gIAkgKi8KPiA+ID4gPiA+ID4gKwlpZiAocmV0ID09IDAp IHsKPiA+ID4gPiA+ID4gKwkJY2RjbGsgPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGs7Cj4gPiA+ ID4gPiA+ICsJCXBvcnRjbGsgPSBpbnRlbF9kZGlfcG9ydF9jbG9jayhkZXZfcHJpdiwgcGxsLT5p ZCk7Cj4gPiA+ID4gPiA+ICsJCWxldmVsID0gY25sX2dldF9kdmZzX2xldmVsKGNkY2xrLCBwb3J0 Y2xrKTsKPiA+ID4gPiA+ID4gKwkJY25sX2R2ZnNfcG9zdF9jaGFuZ2UoZGV2X3ByaXYsIGxldmVs KTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhpcyBpc24ndCBob3cgSSBpbWFnaW5lZCB3ZSdkIGhh bmRsZSB0aGlzLiBXaGF0IEkgd2FzIGFmdGVyIGlzCj4gPiA+ID4gPiBwcmUtY29tcHV0aW5nIHRo ZSBjb3JyZWN0ICJkZnZmcyBsZXZlbCIgKG9yIHdoYXQgSSdkIHByb2JhYmx5IGp1c3QgY2FsbAo+ ID4gPiA+ID4gInZvbHRhZ2UiIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLCBhbmQgdGhlbiB3ZSdk IGp1c3QgbGV0IHRoZSBub3JtYWwKPiA+ID4gPiA+IGNkY2xrIHByb2dyYW1taW5nIHNlcXVlbmNl IGRvIGl0cyB0aGluZy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gSXMgaXQgZXZlbiBzYWZlIHRvIGRv IHRoaXMgd2l0aCBvdGhlciBwaXBlcy9wb3J0cyBlbmFibGVkPyBJIHdvdWxkCj4gPiA+ID4gPiBo YXZlIGFzc3VtZWQgbm8sIGJ1dCBtYXliZSBJJ20gbWlzdGFrZW4/Cj4gPiA+ID4gCj4gPiA+ID4g V2VsbCwgdGhpcyBpcyBob3cgdGhlIHNwZWMgaXMgd3JpdHRlbi4gU28gSSBhc3N1bWUgaXQgaXMg c2FmZSB0byBjaGFuZ2UKPiA+ID4gPiB0aGF0IGF0IHRoYXQgcG9pbnQuCj4gPiA+ID4gCj4gPiA+ ID4gQWxzbyB3ZSBlbmFibGUgQ0RDTEsgZHVyaW5nIGJvb3Qgd2hpbGUgd2UgaGF2ZSBubyB3YXkg dG8gY29tcHV0ZSB0aGUKPiA+ID4gPiBsaW5rIHJhdGUuIFNvIEkgZG9uJ3Qgc2VlIGEgYmV0dGVy IHdheSBvZiBoYWRsaW5nIHRoYXQuCj4gPiA+IAo+ID4gPiBXZSBkbyBhIGZ1bGwgc3RhdGUgcmVh ZG91dCwgd2hpY2ggc2hvdWxkIHRlbGwgdXMgd2hhdCB2b2x0YWdlIHdlIG5lZWQuCj4gPiA+IEFu ZCBpZiB0aGUgY2RjbGsgaXNuJ3QgZXZlbiBlbmFibGVkLCB0aGVuIG9idmlvdXNseSB3ZSBjYW4n dCBoYXZlIGFueQo+ID4gPiBwaXBlcyBydW5uaW5nIGVpdGhlciwgc28gd2UgY2FuIHNhZmVseSBl bmFibGUgaXQgd2l0aCBhbnkgZnJlcXVlbmN5Cj4gPiA+IGV2ZW4gYmVmb3JlIHRoZSBmdWxsIHN0 YXRlIHJlYWRvdXQuCj4gPiA+IAo+ID4gPiA+IFNvLCBBcnQgaXMgaXQgb2sgaW4gdGhlIHdheSB0 aGF0IEknbSBwcm9wb3NpbmcgaGVyZToKPiA+ID4gPiAKPiA+ID4gPiBvbiBjb3JlIGRpc3BsYXkg aW5pdDoKPiA+ID4gPiAKPiA+ID4gPiAtIGR2ZnMtcHJlOwo+ID4gPiA+IC0gZW5hYmxlIGNkY2xr Owo+ID4gPiA+IC0gZHZmcy1wb3N0IGNvbnNpZGVyaW5nIGNkY2xrIG9ubHkgYW5kIGxpbmsgcmF0 ZSAwOyAKPiA+ID4gPiAKPiA+ID4gPiBvbiBwbGwgaW5pdDoKPiA+ID4gPiAKPiA+ID4gPiAtIGNv bnNpZGVyIGNkY2xrIGFuZCBsaW5rIHJhdGUgYW5kIGlmIGRlc2lyZWQgbGV2ZWwgaXMgZGlmZmVy ZW50IGZyb20gd2hhdCBpcyBjdXJyZW50bHkgc2V0OiBkdmZzLXByZQo+ID4gPiA+IC0gZW5hYmxl IHBsbAo+ID4gPiA+IC0gY29uc2lkZXIgY2RjbGsgYW5kIGxpbmsgcmF0ZSBhbmQgaWYgZGVzaXJl ZCBsZXZlbCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGlzIGN1cnJlbnRseSBzZXQ6IGR2ZnMtcG9z dCB3aXRoIG5ldyBsZXZlbC4KPiA+ID4gPiAKPiA+ID4gPiBUaGlzIGlzIGhvdyBJIHJlYWQgdGhl IHNwZWMsIGJ1dCBwbGVhc2UgbGV0IG1lIGtub3cgd2hhdCBJJ20gbWlzc2luZy4KPiA+ID4gCj4g PiA+IEhtbS4gT0ssIHNvIG1heWJlIHdlIGNhbiBjaGFuZ2UgdGhlIHZvbHRhZ2Ugd2hpbGUgdGhp bmdzIGFyZSB1cCBhbmQKPiA+ID4gcnVubmluZy4KPiA+ID4gCj4gPiA+IFRoYXQgc2FpZCwgdGhl IHZvbHRhZ2UgbGV2ZWwgaXMgYSBnbG9iYWwgdGhpbmcsIHNvIHdoZW5ldmVyIHdlIGNoYW5nZSBp dAo+ID4gPiB3ZSBtdXN0IGNvbnNpZGVyIHRoZSBzdGF0ZSBvZiBhbGwgcG9ydHMsIGFuZCB0aGUg Y2RjbGsuIFRoaXMgbG9va3MgbGlrZQo+ID4gPiBpdCBvbmx5IGNvbnNpZGVycyB0aGUgY3VycmVu dCBwb3J0LiBUaHVzIGlmIHdlIGZpcnN0IGVuYWJsZSBhIHBvcnQgdGhhdAo+ID4gPiBuZWVkcyBo aWdoIHZvbHRhZ2UsIGFuZCBsYXRlciBhIHBvcnQgdGhhdCBjYW4gbWFrZSBkdWUgd2l0aCBhIGxv d2VyCj4gPiA+IHZvbHRhZ2Ugd2UnbGwgZW5kIHVwIHdpdGggc29tZXRoaW5nIG5vdCB3b3JraW5n Lgo+ID4gCj4gPiBvdWNoISB0aGlzIGlzIHRydWUhIFNvLCB3aGF0IGxpbmsgcmF0ZSBzaG91bGQg d2UgY29uc2lkZXIgb24gdGhhdCBkdmZzIHNwZWM/Cj4gPiBzbywgYWx3YXlzIHRoZSBoaWdoZXN0 IGF2YWlibGFibGUgYXQgdGhhdCB0aW1lPwo+IAo+IFllcy4KPiAKPiA+IAo+ID4gU28gd2UgY2Fj aGUgc29tZXdoZXJlIHRoZSBoaWdoZXN0IG9uIGF0b21pYyBjaGVjaz8gYW5kIHRoZW4gZHVyaW5n Cj4gPiB0aGVzZSBkdmZzIHNlcXVlbmNlcyB3ZSBqdXN0IGNoZWNrIGZvciB0aGUgaGlnaGVzdD8K PiAKPiBJSVJDIEkgcGFzdGViaW5uZWQgYSBza2V0Y2ggZm9yIHRoaXMgYXQgc29tZSBwb2ludC4g SG1tLiBGb3VuZCBpdCwgYW5kCj4gcHVzaGVkIGl0IGhlcmU6Cj4gZ2l0Oi8vZ2l0aHViLmNvbS92 c3lyamFsYS9saW51eC5naXQgZHZmc192b2x0YWdlXzIKPiAKPiBJIHRyaWVkIHRvIGFsc28gcGlt cCBpdCBhIGxpdHRsZSBiaXQgdG8gbm90IGZvcmNlIGEgbW9kZXNldCBvbiBhbGwKPiBwaXBlcyBp ZiBqdXN0IHRoZSB2b2x0YWdlIGNoYW5nZXMuCj4gCj4gSSAqdGhpbmsqIHRoaXMgc2hvdWxkIHdv cmssIGFmdGVyIHNvbWVvbmUgZmlsbHMgb3V0IHRoZSBjb2RlIGZvcgo+IERESSAuY29tcHV0ZV9j b25maWcoKSBhbmQgLmdldF9jb25maWcoKS4gQnV0IHRvdGFsbHkgdW50ZXN0ZWQgb2YgY291cnNl Cj4gc28gWU1NVi4KCkV4Y2VwdCBJIGZvcmdvdCBhYm91dCB0aGUgbGFjayBvZiBhIHBjb2RlIGNv bW1hbmQgdG8gcmVhZCBvdXQgdGhlIGN1cnJlbnQKdm9sdGFnZSBzZXR0aW5nIDooIFNvIEkgaGFk IHRvIGFkZCBzb21lIGV4dHJhIGtsdWRnZXMgdG8gdGhlIHN0YXRlIHJlYWRvdXQgCm9uIHRvcC4g QnJhbmNoIHVwZGF0ZWQuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK