From mboxrd@z Thu Jan 1 00:00:00 1970 From: Appana Durga Kedareswara Rao Subject: RE: [PATCH v4] can: Convert to runtime_pm Date: Mon, 12 Jan 2015 15:04:08 +0000 Message-ID: References: <58f37b6fd9104ce185c413c473fe047b@BY2FFO11FD050.protection.gbl> <54AD267C.4060004@pengutronix.de> <12e7202e137e4d5680185748ebf0cf2d@BY2FFO11FD060.protection.gbl> <54B299A0.1000504@pengutronix.de> <54B3CB51.3060207@pengutronix.de> <4a61c12b2e1d4103a41a3faf1d58837a@BN1BFFO11FD030.protection.gbl> <54B3D1C0.200@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "linux-can@vger.kernel.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Soren Brinkmann" , "grant.likely@linaro.org" , "wg@grandegger.com" , "Michal Simek" To: Marc Kleine-Budde Return-path: In-Reply-To: <54B3D1C0.200@pengutronix.de> Content-Language: en-US Sender: linux-can-owner@vger.kernel.org List-Id: netdev.vger.kernel.org SGkgTWFyYywNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXJjIEts ZWluZS1CdWRkZSBbbWFpbHRvOm1rbEBwZW5ndXRyb25peC5kZV0NCj4gU2VudDogTW9uZGF5LCBK YW51YXJ5IDEyLCAyMDE1IDc6MjMgUE0NCj4gVG86IEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSBS YW8NCj4gQ2M6IGxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmc7IG5ldGRldkB2Z2VyLmtlcm5lbC5v cmc7IGxpbnV4LQ0KPiBrZXJuZWxAdmdlci5rZXJuZWwub3JnOyBTb3JlbiBCcmlua21hbm47IGdy YW50Lmxpa2VseUBsaW5hcm8ub3JnOw0KPiB3Z0BncmFuZGVnZ2VyLmNvbTsgTWljaGFsIFNpbWVr DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjRdIGNhbjogQ29udmVydCB0byBydW50aW1lX3BtDQo+ DQo+IE9uIDAxLzEyLzIwMTUgMDI6NDkgUE0sIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSBSYW8g d3JvdGU6DQo+ID4gSGkgTWFyYywNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+PiBGcm9tOiBNYXJjIEtsZWluZS1CdWRkZSBbbWFpbHRvOm1rbEBwZW5ndXRyb25peC5k ZV0NCj4gPj4gU2VudDogTW9uZGF5LCBKYW51YXJ5IDEyLCAyMDE1IDY6NTYgUE0NCj4gPj4gVG86 IEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSBSYW8NCj4gPj4gQ2M6IGxpbnV4LWNhbkB2Z2VyLmtl cm5lbC5vcmc7IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LQ0KPiA+PiBrZXJuZWxAdmdl ci5rZXJuZWwub3JnOyBTb3JlbiBCcmlua21hbm47IGdyYW50Lmxpa2VseUBsaW5hcm8ub3JnOw0K PiA+PiB3Z0BncmFuZGVnZ2VyLmNvbTsgTWljaGFsIFNpbWVrDQo+ID4+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggdjRdIGNhbjogQ29udmVydCB0byBydW50aW1lX3BtDQo+ID4+DQo+ID4+IE9uIDAxLzEy LzIwMTUgMDc6NTkgQU0sIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSBSYW8gd3JvdGU6DQo+ID4+ PiBIaSBNYXJjLA0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ Pj4+IEZyb206IE1hcmMgS2xlaW5lLUJ1ZGRlIFttYWlsdG86bWtsQHBlbmd1dHJvbml4LmRlXQ0K PiA+Pj4+IFNlbnQ6IFN1bmRheSwgSmFudWFyeSAxMSwgMjAxNSA5OjExIFBNDQo+ID4+Pj4gVG86 IEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSBSYW8NCj4gPj4+PiBDYzogbGludXgtY2FuQHZnZXIu a2VybmVsLm9yZzsgbmV0ZGV2QHZnZXIua2VybmVsLm9yZzsgbGludXgtDQo+ID4+Pj4ga2VybmVs QHZnZXIua2VybmVsLm9yZzsgU29yZW4gQnJpbmttYW5uOyBncmFudC5saWtlbHlAbGluYXJvLm9y ZzsNCj4gPj4+PiB3Z0BncmFuZGVnZ2VyLmNvbQ0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg djRdIGNhbjogQ29udmVydCB0byBydW50aW1lX3BtDQo+ID4+Pj4NCj4gPj4+PiBPbiAwMS8xMS8y MDE1IDA2OjM0IEFNLCBBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgUmFvIHdyb3RlOg0KPiA+Pj4+ IFsuLi5dDQo+ID4+Pj4+Pj4gICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPj4+Pj4+PiAgICAg fQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gICAgIHByaXYtPndyaXRlX3JlZyhwcml2LCBYQ0FOX01T Ul9PRkZTRVQsIDApOw0KPiA+Pj4+Pj4+ICAgICBwcml2LT53cml0ZV9yZWcocHJpdiwgWENBTl9T UlJfT0ZGU0VULCBYQ0FOX1NSUl9DRU5fTUFTSyk7DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAg aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHsNCj4gPj4+Pj4+PiAgICAgICAgICAgICBwcml2LT5j YW4uc3RhdGUgPSBDQU5fU1RBVEVfRVJST1JfQUNUSVZFOw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFdo YXQgaGFwcGVucyBpZiB0aGUgZGV2aWNlIHdhcyBub3QgaW4gQUNUSVZFIHN0YXRlIHByaW9yIHRv IHRoZQ0KPiA+Pj4+Pj4gcnVudGltZV9zdXNwZW5kPw0KPiA+Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+ Pj4gSSBhbSBub3Qgc3VyZSBhYm91dCB0aGUgc3RhdGUgb2YgQ0FOIGF0IHRoaXMgcG9pbnQgb2Yg dGltZS4NCj4gPj4+Pj4gSSBqdXN0IGZvbGxvd2VkIHdoYXQgb3RoZXIgZHJpdmVycyBhcmUgZm9s bG93aW5nIGZvciBydW4gdGltZSAgc3VzcGVuZA0KPiA6KS4NCj4gPj4+Pg0KPiA+Pj4+IFBsZWFz ZSBjaGVjayB0aGUgc3RhdGUgb2YgdGhlIGhhcmR3YXJlIGlmIHlvdSBnbyB3aXRoIGJ1cyBvZmYg aW50bw0KPiA+Pj4+IHN1c3BlbmQgYW5kIHRoZW4gcmVzdW1lLg0KPiA+Pj4+DQo+ID4+Pg0KPiA+ Pj4gICAgICAgICBpZiAobmV0aWZfcnVubmluZyhuZGV2KSkgew0KPiA+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGlzciAmIFhDQU5fSVhSX0JTT0ZGX01BU0spIHsNCj4gPj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y2FuLnN0YXRlID0gQ0FOX1NUQVRFX0JV U19PRkY7DQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT53cml0ZV9yZWco cHJpdiwgWENBTl9TUlJfT0ZGU0VULA0KPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFhDQU5fU1JSX1JFU0VUX01BU0spOw0KPiA+Pj4gICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAoKHN0YXR1cyAmIFhDQU5fU1JfRVNUQVRfTUFTSykgPT0NCj4gPj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0FOX1NSX0VTVEFUX01BU0spIHsN Cj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNhbi5zdGF0ZSA9IENBTl9TVEFU RV9FUlJPUl9QQVNTSVZFOw0KPiA+Pj4gICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVz ICYgWENBTl9TUl9FUlJXUk5fTUFTSykgew0KPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg cHJpdi0+Y2FuLnN0YXRlID0gQ0FOX1NUQVRFX0VSUk9SX1dBUk5JTkc7DQo+ID4+PiAgICAgICAg ICAgICAgICAgfSBlbHNlIHsNCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNh bi5zdGF0ZSA9IENBTl9TVEFURV9FUlJPUl9BQ1RJVkU7DQo+ID4+PiAgICAgICAgICAgICAgICAg fQ0KPiA+Pj4gICAgICAgICB9DQo+ID4+Pg0KPiA+Pj4gSXMgdGhlIGFib3ZlIGNvZGUgc25pcHBl dCBvayBmb3IgeW91Pw0KPiA+Pg0KPiA+PiBZZXMsIGJ1dCB3aGF0J3MgdGhlIHN0YXRlIG9mIHRo ZSBoYXJkd2FyZSB3aGVuIGl0IHdha2VzIHVwIGFnYWluPw0KPiA+DQo+ID4gSXQgZGVwZW5kcyBv biB0aGUgcHJldmlvdXMgc3RhdGUgb2YgdGhlIENBTi4NCj4gPiBJIG1lYW4gSW4gU3VzcGVuZCB3 ZSBhcmUgcHV0dGluZyB0aGUgZGV2aWNlIGluIHNsZWVwIG1vZGUgYW5kIGluDQo+ID4gcmVzdW1l IHdlIGFyZSB3YWtpbmcgdXAgYnkgcHV0dGluZyB0aGUgZGV2aWNlIGludG8gdGhlIENvbmZpZ3Vy YXRpb24NCj4gPiBtb2RlLiBXZSBhcmUgbm90IGRvaW5nIGFueSByZXNldCBvZiB0aGUgY29yZSBp biB0aGUgc3VzcGVuZC9yZXN1bWUgc28gaXQNCj4gZGVwZW5kcyBvbiB0aGUgcHJldmlvdXMgc3Rh dGUgb2YgdGhlIENBTiB3aGVuIGl0IHdha2VzIHVwIHRoYXQncyB3aHkNCj4gY2hlY2tpbmcgZm9y IHRoZSBzdGF0dXMgb2YgdGhlIENBTiBpbiB0aGUgc3RhdHVzIHJlZ2lzdGVyIGhlcmUgdG8gcHV0 IHRoZQ0KPiBkZXZpY2UgaW4gYXBwcm9wcmlhdGUgbW9kZS4NCj4NCj4gSSB1bmRlcnN0YW5kIHRo ZSBzb2Z0d2FyZSBzaWRlLCBidXQgSSBkb24ndCBrbm93IGhvdyB5b3VyIGhhcmR3YXJlDQo+IGJl aGF2ZXMuIFRoaXMgaXMgd2h5IEknbSBhc2tpbmcuDQoNCkFzIGZhciBhcyBJIGtub3cgdGhlIGFi b3ZlIGlzICB0aGUgb3VyIGNhbiBjb250cm9sbGVyIGJlaGF2aW9yLiBBbnl3YXkgSSB3aWxsIGNo ZWNrIHdpdGggIHRoZSBoL3cgdGVhbQ0KQW5kIHdpbGwgZ2V0IGJhY2sgdG8geW91IHJlZ2FyZGlu ZyB0aGlzLiBNZWFud2hpbGUgSSBhbSBzZW5kaW5nIHRoZSBuZXh0IHZlcnNpb24gb2YgdGhlIHBh dGNoDQpQbGVhc2UgcmV2aWV3IGl0Lg0KDQpSZWdhcmRzLA0KS2VkYXIuDQo+DQo+ID4NCj4gPj4N Cj4gPj4+DQo+ID4+Pj4+Pj4gICAgICAgICAgICAgbmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTsN Cj4gPj4+Pj4+PiAgICAgICAgICAgICBuZXRpZl9zdGFydF9xdWV1ZShuZGV2KTsNCj4gPj4+Pj4+ PiAgICAgfQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gICAgIHJldHVybiAwOw0KPiA+Pj4+Pj4+IH0N Cj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gQEAgLTEwMjAsOSArMTAz NSw5IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQNCj4gPj4geGNhbl9yZXN1bWUoc3RydWN0 DQo+ID4+Pj4+Pj4gZGV2aWNlICpkZXYpDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAgcHJpdi0+ d3JpdGVfcmVnKHByaXYsIFhDQU5fTVNSX09GRlNFVCwgMCk7DQo+ID4+Pj4+Pj4gICAgIHByaXYt PndyaXRlX3JlZyhwcml2LCBYQ0FOX1NSUl9PRkZTRVQsIFhDQU5fU1JSX0NFTl9NQVNLKTsNCj4g Pj4+Pj4+PiAtICAgcHJpdi0+Y2FuLnN0YXRlID0gQ0FOX1NUQVRFX0VSUk9SX0FDVElWRTsNCj4g Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ICAgICBpZiAobmV0aWZfcnVubmluZyhuZGV2KSkgew0KPiA+Pj4+ Pj4+ICsgICAgICAgICAgIHByaXYtPmNhbi5zdGF0ZSA9IENBTl9TVEFURV9FUlJPUl9BQ1RJVkU7 DQo+ID4+Pj4+Pj4gICAgICAgICAgICAgbmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTsNCj4gPj4+ Pj4+PiAgICAgICAgICAgICBuZXRpZl9zdGFydF9xdWV1ZShuZGV2KTsNCj4gPj4+Pj4+PiAgICAg fQ0KPiA+Pj4+Pj4+IEBAIC0xMDMwLDcgKzEwNDUsMTAgQEAgc3RhdGljIGludCBfX21heWJlX3Vu dXNlZA0KPiA+Pj4+IHhjYW5fcmVzdW1lKHN0cnVjdA0KPiA+Pj4+Pj4gZGV2aWNlICpkZXYpDQo+ ID4+Pj4+Pj4gICAgIHJldHVybiAwOw0KPiA+Pj4+Pj4+ICB9DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+ PiAtc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKHhjYW5fZGV2X3BtX29wcywgeGNhbl9zdXNwZW5k LA0KPiA+Pj4+Pj4geGNhbl9yZXN1bWUpOw0KPiA+Pj4+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRldl9wbV9vcHMgeGNhbl9kZXZfcG1fb3BzID0gew0KPiA+Pj4+Pj4+ICsgICBTRVRfU1lTVEVN X1NMRUVQX1BNX09QUyh4Y2FuX3N1c3BlbmQsIHhjYW5fcmVzdW1lKQ0KPiA+Pj4+Pj4+ICsgICBT RVRfUE1fUlVOVElNRV9QTV9PUFMoeGNhbl9ydW50aW1lX3N1c3BlbmQsDQo+ID4+Pj4+PiB4Y2Fu X3J1bnRpbWVfcmVzdW1lLA0KPiA+Pj4+Pj4+ICtOVUxMKSB9Ow0KPiA+Pj4+Pj4+DQo+ID4+Pj4+ Pj4gIC8qKg0KPiA+Pj4+Pj4+ICAgKiB4Y2FuX3Byb2JlIC0gUGxhdGZvcm0gcmVnaXN0cmF0aW9u IGNhbGwgQEAgLTEwNzEsNyArMTA4OSw3DQo+ID4+Pj4+Pj4gQEAgc3RhdGljIGludCB4Y2FuX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4+Pj4+Pj4gICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAgcHJpdiA9IG5ldGRldl9w cml2KG5kZXYpOw0KPiA+Pj4+Pj4+IC0gICBwcml2LT5kZXYgPSBuZGV2Ow0KPiA+Pj4+Pj4+ICsg ICBwcml2LT5kZXYgPSAmcGRldi0+ZGV2Ow0KPiA+Pj4+Pj4+ICAgICBwcml2LT5jYW4uYml0dGlt aW5nX2NvbnN0ID0gJnhjYW5fYml0dGltaW5nX2NvbnN0Ow0KPiA+Pj4+Pj4+ICAgICBwcml2LT5j YW4uZG9fc2V0X21vZGUgPSB4Y2FuX2RvX3NldF9tb2RlOw0KPiA+Pj4+Pj4+ICAgICBwcml2LT5j YW4uZG9fZ2V0X2JlcnJfY291bnRlciA9IHhjYW5fZ2V0X2JlcnJfY291bnRlcjsgQEAgLQ0KPiA+ Pj4+Pj4gMTEzNywxNQ0KPiA+Pj4+Pj4+ICsxMTU1LDIyIEBAIHN0YXRpYyBpbnQgeGNhbl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gICAg IG5ldGlmX25hcGlfYWRkKG5kZXYsICZwcml2LT5uYXBpLCB4Y2FuX3J4X3BvbGwsIHJ4X21heCk7 DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiArICAgcG1fcnVudGltZV9zZXRfYWN0aXZlKCZwZGV2LT5k ZXYpOw0KPiA+Pj4+Pj4+ICsgICBwbV9ydW50aW1lX2lycV9zYWZlKCZwZGV2LT5kZXYpOw0KPiA+ Pj4+Pj4+ICsgICBwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsNCj4gPj4+Pj4+PiArICAg cG1fcnVudGltZV9nZXRfc3luYygmcGRldi0+ZGV2KTsNCj4gPj4+Pj4+IENoZWNrIGVycm9yIHZh bHVlcz8NCj4gPj4+Pj4NCj4gPj4+Pj4gT2sNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gICAgIHJl dCA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTsNCj4gPj4+Pj4+PiAgICAgaWYgKHJldCkgew0KPiA+ Pj4+Pj4+ICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgImZhaWwgdG8gcmVnaXN0ZXIg ZmFpbGVkDQo+ID4+Pj4+Pj4gKGVycj0lZClcbiIsDQo+ID4+Pj4+PiByZXQpOw0KPiA+Pj4+Pj4+ ICsgICAgICAgICAgIHBtX3J1bnRpbWVfcHV0KHByaXYtPmRldik7DQo+ID4+Pj4+Pg0KPiA+Pj4+ Pj4gUGxlYXNlIG1vdmUgdGhlIHBtX3J1bnRpbWVfcHV0IGludG8gdGhlIGNvbW1vbiBlcnJvciBl eGl0IHBhdGguDQo+ID4+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBPaw0KPiA+Pj4+Pg0KPiA+Pj4+ Pj4+ICAgICAgICAgICAgIGdvdG8gZXJyX3VucHJlcGFyZV9kaXNhYmxlX2J1c2NsazsNCj4gPj4+ Pj4+PiAgICAgfQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gICAgIGRldm1fY2FuX2xlZF9pbml0KG5k ZXYpOw0KPiA+Pj4+Pj4+IC0gICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+YnVzX2Nsayk7 DQo+ID4+Pj4+Pj4gLSAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5jYW5fY2xrKTsNCj4g Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgIHBtX3J1bnRpbWVfcHV0KCZwZGV2LT5kZXYpOw0KPiA+ Pj4+Pj4+ICsNCj4gPj4+Pj4+PiAgICAgbmV0ZGV2X2RiZyhuZGV2LCAicmVnX2Jhc2U9MHglcCBp cnE9JWQgY2xvY2s9JWQsIHR4IGZpZm8NCj4gPj4+Pj4+IGRlcHRoOiVkXG4iLA0KPiA+Pj4+Pj4+ ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+cmVnX2Jhc2UsIG5kZXYtPmlycSwgcHJpdi0+Y2Fu LmNsb2NrLmZyZXEsDQo+ID4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICBwcml2LT50eF9tYXgp Ow0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSSB0aGluayB5b3UgaGF2ZSB0byBjb252 ZXJ0IHRoZSBfcmVtb3ZlKCkgZnVuY3Rpb24sIHRvby4gSGF2ZSBhDQo+ID4+Pj4+PiBsb29rIGF0 IHRoZSBncGlvLXp5bnEuYyBkcml2ZXI6DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IHN0YXRpYyBpbnQg enlucV9ncGlvX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4+Pj4+ Pj4gICAgIHN0cnVjdCB6eW5xX2dwaW8gKmdwaW8gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2 KTsNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ICAgICBwbV9ydW50aW1lX2dldF9zeW5jKCZwZGV2LT5k ZXYpOw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEhvd2V2ZXIgSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB0 aGUgZ2V0X3N5bmMoKSBpcyBoZXJlLiBNYXliZQ0KPiA+Pj4+Pj4gU8O2cmVuIGNhbiBoZWxwPw0K PiA+Pj4+Pg0KPiA+Pj4+PiBJIGNvbnZlcnRlZCB0aGUgcmVtb3ZlIGZ1bmN0aW9uIHRvIHVzZSB0 aGUgcnVuLXRpbWUgUE0gYW5kIC4NCj4gPj4+Pj4gQmVsb3cgaXMgdGhlIHJlbW92ZSBjb2RlIHNu aXBwZXQuDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAgICByZXQgPSBwbV9ydW50aW1lX2dldF9zeW5j KCZwZGV2LT5kZXYpOw0KPiA+Pj4+PiAgICAgICAgIGlmIChyZXQgPCAwKSB7DQo+ID4+Pj4+ICAg ICAgICAgICAgICAgICBuZXRkZXZfZXJyKG5kZXYsICIlczogcG1fcnVudGltZV9nZXQgZmFpbGVk KCVkKVxuIiwNCj4gPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNf XywgcmV0KTsNCj4gPj4+Pj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4+Pj4+ICAg ICAgICAgfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgICAgIGlmIChzZXRfcmVzZXRfbW9kZShuZGV2 KSA8IDApDQo+ID4+Pj4+ICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKG5kZXYsICJtb2RlIHJl c2V0dGluZyBmYWlsZWQhXG4iKTsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgICAgICB1bnJlZ2lzdGVy X2NhbmRldihuZGV2KTsNCj4gPj4+Pj4gICAgICAgICBuZXRpZl9uYXBpX2RlbCgmcHJpdi0+bmFw aSk7DQo+ID4+Pj4+ICAgICAgICAgZnJlZV9jYW5kZXYobmRldik7DQo+ID4+Pj4NCj4gPj4+Pj4g ICAgICAgICBwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7DQo+ID4+Pj4NCj4gPj4+PiBD YW4gdGhpcyBtYWtlIGEgY2FsbCB0byB4Y2FuX3J1bnRpbWVfKigpPyBJJ20gYXNraW5nIHNpbmNl IHRoZSBuZGV2DQo+ID4+Pj4gaGFzIGJlZW4gdW5yZWdpc3RlcmVkIGFuZCBhbHJlYWR5IGZyZWUo KWVkLiBCZXR0ZXIgbW92ZSB0aGlzDQo+ID4+Pj4gZGlyZWN0bHkgYWZ0ZXIgdGhlIHNldF9yZXNl dF9tb2RlKCkuIFRoaXMgd2F5IHlvdSBhcmUgc3ltbWV0cmljIHRvDQo+ID4+Pj4gdGhlIHByb2Jl KCkNCj4gPj4gZnVuY3Rpb24uDQo+ID4+Pg0KPiA+Pj4gSWYgSSBtb3ZlIHRoZSAgcG1fcnVudGlt ZV9kaXNhYmxlIGFmdGVyIHRoZSBzZXRfcmVzZXRfbW9kZSBJIGFtDQo+ID4+PiBnZXR0aW5nIHRo ZSBiZWxvdyBlcnJvci4NCj4gPj4+IEVSUk9SOg0KPiA+Pj4geGlsaW54X2NhbiBlMDAwODAwMC5j YW4gY2FuMCAodW5yZWdpc3RlcmluZyk6IHhjYW5fZ2V0X2JlcnJfY291bnRlcjoNCj4gPj4+IHBt X3J1bnRpbWVfZ2V0IGZhaWwNCj4gPj4+DQo+ID4+PiBJZiBJIG1vdmUgdGhlIHBtX3J1bnRpbWVf ZGlzYWJsZSBhZnRlciB1bnJlZ2lzdGVyX2NhbmRldiBldmVyeXRoaW5nDQo+ID4+PiBpcw0KPiA+ PiB3b3JraW5nIGZpbmUuDQo+ID4+DQo+ID4+IEZpbmUgLSBidXQgd2hvIGNhbGxzIHhjYW5fZ2V0 X2JlcnJfY291bnRlciBoZXJlPyBDYW4geW91IGFkZCBhDQo+ID4+IGR1bXBfc3RhY2soKSBoZXJl Pw0KPiA+Pg0KPiA+DQo+ID4gSSB0aGluayBpdCBpcyBnZXR0aW5nIGNhbGxlZCBmcm9tIHRoZSBh dG9taWMgY29udGV4dC4NCj4gPiBXaGVuIEkgIGFtIHRyeWluZyB0byBkbyBhIHJtbW9kIEkgYW0g Z2V0dGluZyB0aGUgYWJvdmUgZXJyb3IuDQo+ID4gRVJST1I6DQo+ID4geGlsaW54X2NhbiBlMDAw ODAwMC5jYW4gY2FuMCAodW5yZWdpc3RlcmluZyk6IHhjYW5fZ2V0X2JlcnJfY291bnRlcjoNCj4g PiAgcG1fcnVudGltZV9nZXQgZmFpbC4NCj4gPg0KPiA+IEkgYW0gZ2V0dGluZyBvbmx5IHRoZSBh Ym92ZSBlcnJvciBpbiB0aGUgY29uc29sZSB3aGVuIEkgZG8gcm1tb2QuDQo+DQo+IFB1dCBhIGR1 bXBfc3RhY2sgaW50byB4Y2FuX2dldF9iZXJyX2NvdW50ZXIoKSwgdGhlbiB5b3UnbGwgc2VlIHdo ZXJlIGl0J3MNCj4gY2FsbGVkIGZyb20uIEhvd2V2ZXIgY2FsbGluZyBmcm9tIGF0b21pYyBjb250 ZXh0IHNob3VsZCBiZSBmaW5lLg0KPg0KPiBNYXJjDQo+DQo+IC0tDQo+IFBlbmd1dHJvbml4IGUu Sy4gICAgICAgICAgICAgICAgICB8IE1hcmMgS2xlaW5lLUJ1ZGRlICAgICAgICAgICB8DQo+IElu ZHVzdHJpYWwgTGludXggU29sdXRpb25zICAgICAgICB8IFBob25lOiArNDktMjMxLTI4MjYtOTI0 ICAgICB8DQo+IFZlcnRyZXR1bmcgV2VzdC9Eb3J0bXVuZCAgICAgICAgICB8IEZheDogICArNDkt NTEyMS0yMDY5MTctNTU1NSB8DQo+IEFtdHNnZXJpY2h0IEhpbGRlc2hlaW0sIEhSQSAyNjg2ICB8 IGh0dHA6Ly93d3cucGVuZ3V0cm9uaXguZGUgICB8DQoNCg0KDQpUaGlzIGVtYWlsIGFuZCBhbnkg YXR0YWNobWVudHMgYXJlIGludGVuZGVkIGZvciB0aGUgc29sZSB1c2Ugb2YgdGhlIG5hbWVkIHJl Y2lwaWVudChzKSBhbmQgY29udGFpbihzKSBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gdGhhdCBt YXkgYmUgcHJvcHJpZXRhcnksIHByaXZpbGVnZWQgb3IgY29weXJpZ2h0ZWQgdW5kZXIgYXBwbGlj YWJsZSBsYXcuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIGRvIG5vdCBy ZWFkLCBjb3B5LCBvciBmb3J3YXJkIHRoaXMgZW1haWwgbWVzc2FnZSBvciBhbnkgYXR0YWNobWVu dHMuIERlbGV0ZSB0aGlzIGVtYWlsIG1lc3NhZ2UgYW5kIGFueSBhdHRhY2htZW50cyBpbW1lZGlh dGVseS4NCg0K