SGksDQoNCkkgc2VudCB0aGUgbWFpbCBiZWxvdyBvbmUgbW9udGggYWdvLCBidXQgaGF2ZSBzdGls
bCBub3QgcmVjZWl2ZWQgYW55IGFuc3dlcnMgb3IgZnVydGhlciBjb21tZW50cy4NCkhhcyBhbnlv
bmUgb2YgeW91IHdobyBtYWRlIGNvbW1lbnRzIG9uIHRoZSBDRzI5MDAgcGF0Y2hlcyBlYXJsaWVy
LCBhbnkgbW9yZSBjb21tZW50cyBvciBxdWVzdGlvbnM/DQoNCkl0IGlzIHVuY2xlYXIgdG8gbWUg
d2hlcmUgd2Ugc3RhbmQgd2l0aCB0aGUgQ0cyOTAwIHBhdGNoZXMuIEkgYW0gbXlzZWxmIGhhcHB5
IHdpdGggdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlLCBidXQgSSB1bmRlcnN0YW5kIHRoZXJlIGFy
ZSBkaWZmZXJpbmcgb3BpbmlvbnMuDQpJIHdvdWxkIGxpa2UgdG8ga25vdyB3aGF0IHdlIG5lZWQg
dG8gZG8gaW4gb3JkZXIgdG8gZ2V0IHRoaXMgZHJpdmVyIGludG8gdGhlIExpbnV4IEtlcm5lbCB0
cmVlLg0KDQovUC1HDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGFy
LUd1bm5hciBISkFMTURBSEwNCj4gU2VudDogZGVuIDE3IGphbnVhcmkgMjAxMSAxNjozMw0KPiBU
bzogJ0FybmQgQmVyZ21hbm4nOyBQYXZhbiBTYXZveQ0KPiBDYzogVml0YWx5IFdvb2w7IExpbnVz
IFdhbGxlaWo7IEFsYW4gQ294OyBTYW11ZWwgT3J0aXo7IE1hcmNlbA0KPiBIb2x0bWFubjsgbGlu
dXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtDQo+IGJsdWV0b290aEB2Z2VyLmtlcm5l
bC5vcmc7IEx1a2FzeiBSeW1hbm93c2tpOyBQYXItR3VubmFyIEhqYWxtZGFobA0KPiBTdWJqZWN0
OiBSRTogW1BBVENIIDAwLzExXSBtZmQgYW5kIGJsdWV0b290aDogQWRkIENHMjkwMCBzdXBwb3IN
Cj4gDQo+IEhpLA0KPiANCj4gU29ycnkgZm9yIG5vdCBhbnN3ZXJpbmcgZWFybGllci4gSSd2ZSBi
ZWVuIG92ZXJsb2FkZWQgd2l0aCB0aGluZ3MgdG8gZG8NCj4gbm93IGFmdGVyIE5ldyBZZWFyLiBT
ZWUgYmVsb3cuDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog
QXJuZCBCZXJnbWFubiBbbWFpbHRvOmFybmRAYXJuZGIuZGVdDQo+ID4gU2VudDogZGVuIDkgamFu
dWFyaSAyMDExIDE5OjU1DQo+ID4gVG86IFBhdmFuIFNhdm95DQo+ID4gQ2M6IFBhci1HdW5uYXIg
SEpBTE1EQUhMOyBWaXRhbHkgV29vbDsgTGludXMgV2FsbGVpajsgQWxhbiBDb3g7DQo+IFNhbXVl
bA0KPiA+IE9ydGl6OyBNYXJjZWwgSG9sdG1hbm47IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v
cmc7IGxpbnV4LQ0KPiA+IGJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmc7IEx1a2FzeiBSeW1hbm93
c2tpOyBQYXItR3VubmFyIEhqYWxtZGFobA0KPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMDAvMTFd
IG1mZCBhbmQgYmx1ZXRvb3RoOiBBZGQgQ0cyOTAwIHN1cHBvcg0KPiA+DQo+ID4gT24gU3VuZGF5
IDA5IEphbnVhcnkgMjAxMSwgUGF2YW4gU2F2b3kgd3JvdGU6DQo+ID4gPiBPbiBGcmksIEphbiA3
LCAyMDExIGF0IDEyOjE2IEFNLCBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPg0KPiB3cm90
ZToNCj4gPiA+ID4gT24gV2VkbmVzZGF5IDA1IEphbnVhcnkgMjAxMSwgUGFyLUd1bm5hciBISkFM
TURBSEwgd3JvdGU6DQo+ID4gPiA+DQo+ID4gPiA+PiBTb3JyeSBmb3Igbm90IGFuc3dlcmluZyBz
b29uZXIuIEkndmUgYmVlbiBvbiBDaHJpc3RtYXMgYW5kIE5ldw0KPiA+IFllYXIgdmFjYXRpb24u
DQo+ID4gPiA+DQo+ID4gPiA+IEknbSBhbHNvIHN0aWxsIGNhdGNoaW5nIHVwIHdpdGggZW1haWwg
dGhhdCBoYXMgYWNjdW11bGF0ZWQgb3Zlcg0KPiBteQ0KPiA+ID4gPiB2YWNhdGlvbiwgaW5jbHVk
aW5nIHlvdXIgcHJldmlvdXMgcmVzcG9uc2UuDQo+ID4gPiA+DQo+ID4gPiA+IFRoaXMgc291bmRz
IHdyb25nIGZvciBib3RoIFRJIGFuZCBTVC1FOiBBRkFJQ1QgdGhleSBhcmUgYWN0dWFsbHkNCj4g
PiBidWlsdA0KPiA+ID4gPiBhcm91bmQgYW4gSENJIGludGVyZmFjZS4gSXQncyB1bmZvcnR1bmF0
ZSB0aGF0IHRoZSBUSSBjb2RlDQo+IGFjdHVhbGx5DQo+ID4gZ290DQo+ID4gPiA+IG1lcmdlZCBp
bnRvIHRoZSBrZXJuZWwgbGlrZSB0aGlzLg0KPiA+ID4NCj4gPiA+IEkgYW0gbm90IHN1cmUgd2hh
dCBkb2VzIGJ1aWx0IGFyb3VuZCBIQ0kgSW50ZXJmYWNlIG1lYW4/IEFsc28geWVzLA0KPiBpbg0K
PiA+IFRJLSBjb2RlDQo+ID4gPiB3ZSBkbyByZWZlciB0byBCbHVldG9vdGggaGVhZGVycy4NCj4g
PiA+IEhvd2V2ZXIgdGhlIGZhY3QgdGhhdCBJIHdhbnRlZCB0byBwb2ludCBvdXQgdG8gUGFyLUd1
bm5hciB3YXMsIHRoYXQNCj4gPiB3ZQ0KPiA+ID4gZG9uJ3Qgd2FudCB0byB1c2UNCj4gPiA+IGhj
aWF0dGFjaCBhbmQgZW5hYmxlIEhDSS1VQVJUICsgSENJLUg0IGZvciBlbmFibGluZyBvdXIgZHJp
dmVyIG9yDQo+IG91cg0KPiA+ID4gZHJpdmVyIHNob3VsZCBub3QNCj4gPiA+IGRlcGVuZCBvbiB0
aG9zZSBtb2R1bGVzIGFzIHN1Y2guLi4NCj4gPg0KPiA+IEdvb2QgcG9pbnQgYWJvdXQgaGNpYXR0
YWNoLCB5b3UgY2VydGFpbmx5IHNob3VsZG4ndCBuZWVkIHRvIHVzZSB0aGF0DQo+IGlmDQo+ID4g
dGhlIGtlcm5lbCBhbHJlYWR5IGtub3dzIHRoYXQgYSB0dHkgaXMgY29ubmVjdGVkIHRvIGFuIEhD
SSBhbmQgd2hhdA0KPiB0aGUNCj4gPiBwYXJhbWV0ZXJzIGFyZS4gRXZlbiBtb3JlIHNvIGlmIHRo
ZSBIQ0kgaXMgbm90IGFjdHVhbGx5IG9uIGEgcnMyMzINCj4gbGluZQ0KPiA+IGJ1dCBzb21ldGhp
bmcgbGlrZSBpMmMgb3Igc3BpLiBBdXRvbWF0aWNhbGx5IGJpbmRpbmcgdG8gdGhlIHJpZ2h0DQo+
IGxpbmUNCj4gPiBkaXNjaXBsaW5lIHNob3VsZCBiZSBlYXNpbHkgZG9hYmxlIGluIHRoZSBkcml2
ZXJzIHRob3VnaC4NCj4gPg0KPiANCj4gV2hlbiBoYXZpbmcgVUFSVCBhcyB0cmFuc3BvcnQgeW91
IG5lZWQgc29tZXRoaW5nIHRvIG9wZW4gdGhlIFVBUlQgYW5kDQo+IHNldCB0aGUgbGluZSBkaXNj
aXBsaW5lLiBJZiB0aGlzIGlzIGhjaWF0dGFjaCBvciBzb21ldGhpbmcgZWxzZSBpcyB1cA0KPiB0
byBlYWNoIGRldmVsb3BlciB0byBzdWl0IHdoYXQgdGhleSBhcmUgZG9pbmcuIEkgZG9uJ3Qgc2Vl
IGEgcHJvYmxlbQ0KPiB3aXRoIHVzaW5nIGhjaWF0dGFjaCBldmVuIGlmIHlvdSBkb24ndCB1c2Ug
dGhlIEJsdWV0b290aCBwYXJ0IChpZiB0aGUNCj4gZXhlIGlzIHBhcnQgb2YgdGhlIHN5c3RlbSBh
bnl3YXkpLCBidXQgaWYgYSBjb21wYW55L2RldmVsb3BlciB3YW50IHRvDQo+IHVzZSBzb21ldGhp
bmcgZWxzZSB0aGV5IGNhbiBkbyB0aGF0LiBJdCdzIGEgdXNhZ2Ugb2Ygc3RhbmRhcmQNCj4gaW50
ZXJmYWNlcyB1c2luZyBvcGVuKCkgYW5kIGlvY3RsKCkuDQo+IEkgc3RpbGwgZG9uJ3QgdGhpbmsg
dGhhdCB5b3Ugc2hvdWxkIGhhdmUgYSBsaW5lIGRpc2NpcGxpbmUgZm9yIG90aGVyDQo+IHRyYW5z
cG9ydHMgdGhhbiBVQVJULiBJZiBJIHdvdWxkIGxvb2sgYXQgaG93IEkgd291bGQgaW1wbGVtZW50
IGFuIFNQSQ0KPiBkcml2ZXIgZm9yIENHMjkwMCwgdGhlcmUgd291bGQgYWxtb3N0IGJlIG5vIGNv
ZGUgdGhhdCBjb3VsZCBiZSB1c2VkIGluDQo+IGNvbW1vbiBiZXR3ZWVuIGNnMjkwMF91YXJ0IGFu
ZCBjZzI5MDBfc3BpLiBTUEkgZG9lc24ndCBjaGFuZ2UgYmF1ZA0KPiByYXRlLCBTUEkgdXNlcyBj
b21tYW5kcyBmb3Igc2xlZXAvd2FrZSBpbnN0ZWFkIG9mIEJyZWFrLCBTUEkgcGFja2V0cw0KPiBk
b2Vzbid0IG5lZWQgZXh0cmEgcGFja2V0aXppbmcsIGV0Yy4NCj4gDQo+ID4gSSBkb24ndCB1bmRl
cnN0YW5kIHRoZSBwcm9ibGVtIHdpdGggcmVseWluZyBvbiB0aGUgaGNpLXVhcnQgb3IgaGNpLWg0
DQo+ID4gbW9kdWxlcy4gSWYgdGhlIGhhcmR3YXJlIHVzZXMgdGhlIEg0IHByb3RvY29sLCB3ZSBj
ZXJ0YWlubHkgc2hvdWxkDQo+IHVzZQ0KPiA+IHRoZSBrZXJuZWwgbW9kdWxlIHRoYXQga25vd3Mg
aG93IHRvIGRlYWwgd2l0aCBINCwgYW5kIHdlIGRvbid0IHdhbnQNCj4gPiB0byBoYXZlIHR3byBt
b2R1bGVzIGltcGxlbWVudGluZyB0aGUgc2FtZSBwcm90b2NvbC4NCj4gPg0KPiANCj4gSSBtdXN0
IHNheSBJIGRvbid0IHVuZGVyc3RhbmQgdGhpcyBwcm9ibGVtIGVpdGhlci4gVW5sZXNzIHRoZSBw
cm90b2NvbA0KPiBkcml2ZXIgaXMgYWN0aXZhdGVkIHRocm91Z2ggaW9jdGwgU0VUX1BST1RPQ09M
LCB0aGUgY29kZSB3aWxsIG5vdCBiZQ0KPiBleGVjdXRlZCwgYW5kIHRoZSBhbW91bnQgb2YgUk9N
IG5lZWRlZCBpcyBuZWdsaWdpYmxlLg0KPiBJZiB5b3UgbG9vayBhdCBvdXIgc3VibWlzc2lvbiwg
dGhlIGhjaS1oNCBjb3VsZCBwb3NzaWJseSBiZSByZXVzZWQgdG8NCj4gc29tZSBleHRlbnQuIEJh
c2ljYWxseSB0aGUgcGFja2V0aXppbmcgdG8gdGhlIEJsdWV0b290aCBINCBjaGFubmVscyAxLTQN
Cj4gY291bGQgYmUgcmUtdXNlZC4gSW4gb3JkZXIgdG8gYWxsb3cgZm9yIHZlbmRvciBzcGVjaWZp
YyBjaGFubmVscyB0byBiZQ0KPiBoYW5kbGVkIHNvbWUgbmV3IHJlZ2lzdHJhdGlvbiBzeXN0ZW0g
b24gdG9wIG9mIGhjaS1oNCBwbHVzIGEgY2FsbGJhY2sNCj4gc3lzdGVtIGZvciBkYXRhIHJlY2Vw
dGlvbiB3b3VsZCBoYXZlIHRvIGJlIGFkZGVkIChpbiBvcmRlciB0bw0KPiBmYWNpbGl0YXRlIHN5
c3RlbXMgdGhhdCBkbyBub3Qgd2FudCBhbGwgZGF0YSB0byBiZSBzZW50IGRpcmVjdGx5IHRvIHRo
ZQ0KPiBCbHVldG9vdGggc3RhY2sgc3VjaCBhcyB0aGUgQ0cyOTAwIGRyaXZlcikuIEknbSBhZnJh
aWQgdGhhdCB3ZSB3b3VsZA0KPiBoYXZlIGEgc2lnbmlmaWNhbnRseSBtb3JlIGNvbXBsZXggc3lz
dGVtIGFuZCBsYXJnZXIgYW1vdW50IG9mIGNvZGUgaWYNCj4gd2Ugd291bGQgdHJ5IHRvIGdlbmVy
YWxpemUgdGhlIGhjaS1oNCBtb2R1bGUuIEkgZGVmaW5pdGVseSBwcmVmZXIgdGhlDQo+IGN1cnJl
bnQgbW9kZWwgd2hlcmUgYSB2ZW5kb3Igc3BlY2lmaWMgZHJpdmVyIHJlcGxhY2VzIHRoZSBoY2kt
aDQNCj4gcHJvdG9jb2wgZHJpdmVyLg0KPiANCj4gPiA+ID4+ID4gaW5zdGVhZCBvZiBjb21tb24t
aGNpLW1vZHVsZSwgd2h5IG5vdCBjcmVhdGUgYSBhbGdvLWRyaXZlcg0KPiBsYXllcg0KPiA+ICdh
bGENCj4gPiA+ID4+ID4gaTJjID8gd2hlcmUgaW5kaXZpZHVhbCBkcml2ZXJzIGNhbiByZWdpc3Rl
ciB0aGVpciByZWNlaXZlDQo+ID4gaGFuZGxlcnMgZm9yDQo+ID4gPiA+PiA+IGRhdGEgaW50ZXJw
cmV0YXRpb24gPw0KPiA+ID4gPg0KPiA+ID4gPiBUaGF0IHdvdWxkIGJlIHdoYXQgSSBzdWdnZXN0
ZWQgOy0pDQo+ID4gPg0KPiA+ID4gQnV0IGV2ZW4gaGVyZSB0b28sIHRoZSBhbGdvcyBsYXllciBp
ZiB5b3UgaW1hZ2luZSB3aGljaCBjYW4gYmUgdGhlDQo+ID4gPiBzb3J0IG9mIHRoZSBmaXJzdA0K
PiA+ID4gcmVjZWl2ZXIgb2YgZGF0YSBmcm9tIHRoZSB0cmFuc3BvcnQgd291bGQgcmVmZXIgdG8g
QlQgaGVhZGVycyB0bw0KPiA+ID4gaW50ZXJwcmV0IHRoZSBkYXRhIChub3QganVzdCBCVCwgYnV0
IEZNL0dQUykNCj4gPiA+IGFuZCBwYXNzIGl0IG9udG8gb3RoZXIgcHJvdG9jb2wvY2xpZW50IGRy
aXZlcnMsDQo+ID4NCj4gPiBSaWdodCwgdGhhdCBpcyB0aGUgZW50aXJlIGlkZWEsIGFuZCBJIGRv
bid0IHNlZSBhIHByb2JsZW0gaGVyZS4NCj4gPiBJZiB5b3UgZG8gdGhpcywgeW91IHVzZSB0aGUg
aGVhZGVycyBvZiB0aGUgdHdvIHN1YnN5c3RlbXMgeW91DQo+ID4gaW50ZXJmYWNlIHdpdGguIFdo
YXQgeW91IHNob3VsZCAvbm90LyBpbnN0ZWFkIGlzIHVzZSBoZWFkZXINCj4gPiBmaWxlcyBvZiBh
IHN1YnN5c3RlbSB5b3UgZG9uJ3QgaW50ZXJmYWNlIHdpdGggYW5kIHJlaW50ZXJwcmV0ZQ0KPiA+
IHRoZSBkZWZpbml0aW9ucyBpbiBjcmVhdGl2ZSB3YXlzLCB3aGljaCBpcyB3aGF0IEkgdW5kZXJz
dG9vZA0KPiA+IHdhcyBiZWluZyBkaXNjdXNzZWQgZWFybGllci4NCj4gPg0KPiA+ID4gPj4gSW4g
c29tZSB3YXkgeW91IHRoZW4gcnVuIGludG8gdGhlIHNhbWUgcHJvYmxlbSBoYXMgSSBoYWQgaW4N
Cj4gPiBwcmV2aW91cyBwYXRjaA0KPiA+ID4gPj4gc2V0cy4gVGhlIGZ1bmN0aW9uYWxpdGllcyBz
dXBwb3J0ZWQgaXMgcmVhbGx5IGRldGVybWluZWQgYnkgZWFjaA0KPiA+IGNoaXAuDQo+ID4gPiA+
PiBZb3UgbWlnaHQgb3IgbWlnaHQgbm90IGhhdmUgZm9yIGV4YW1wbGUgR1BTIGluIGEgY2VydGFp
biBjaGlwLg0KPiBTbw0KPiA+IHlvdSBkbyBub3QNCj4gPiA+ID4+IHdhbnQgYSBjZW50cmFsIG1v
ZHVsZSB0byBleHBvc2UgYWxsIHBvc3NpYmxlIGNoYW5uZWxzIHRvIHRoZQ0KPiA+IHN0YWNrcyBv
biB0b3AuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gWW91IG9ubHkgd2FudCB0aGUgYWN0dWFsbHkgc3Vw
cG9ydGVkIGZlYXR1cmVzIHRvIGJlIGV4cG9zZWQgdG8NCj4gPiB1cHBlciBsYXllcnMuDQo+ID4g
PiA+PiBUaGVuIHRoZSBNRkQgc3lzdGVtIGlzIHByZXR0eSBuaWNlLiBJdCdzIGVhc3kgYW5kIG1v
ZHVsYXJpemVkIHRvDQo+ID4gZXhwb3NlIHRoZQ0KPiA+ID4gPj4gZGlmZmVyZW50IGNoYW5uZWxz
IGFzIE1GRCBjZWxscy4NCj4gPiA+ID4NCj4gPiA+ID4gQnV0IGFzIHNvb24gYXMgeW91IGhhdmUg
dGhlIGNvbmNlcHQgb2YgY2hhbm5lbHMgd2l0aCBhIGNsZWFybHkNCj4gPiBkZWZpbmVkDQo+ID4g
PiA+IGludGVyZmFjZSwgeW91IGhhdmUgYWxtb3N0IGFic3RyYWN0ZWQgaXQgZW5vdWdoIHRvIGdv
IGFsbCB0aGUNCj4gd2F5Lg0KPiA+ID4NCj4gPiA+IFNvbWV0aGluZyBsaWtlIHRoaXMgaXMgd2hh
dCB0aGUgcmVjZW50IFJGQyBwb3N0ZWQgdG8NCj4gPiA+IGxrbWwvbGludXgtYmx1ZXRvb3RoDQo+
ID4gPiBodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWJsdWV0b290aC9tc2cwOTk5
MC5odG1sLA0KPiA+ID4gaXQga2luZGEgbG9va3MgY2x1bXN5DQo+ID4gPiBidXQgd2hhdCBJIGZl
ZWwgaXMgd2Ugc2hvdWxkbid0IHNoeSBhd2F5IGZyb20gbm90IHJlZmVyZW5jaW5nDQo+ID4gPiBC
bHVldG9vdGgsIChvciBtYXkgYmUgdG9tb3Jyb3cgR1BTDQo+ID4gPiB3aXRoIE5NRUEgaGVhZGVy
cykuLi4uDQo+ID4NCj4gPiBUaGUgb25lIGltcG9ydGFudCBnb2FsIGhlcmUgc2hvdWxkIGJlIHRv
IGF2b2lkIGNvZGUgZHVwbGljYXRpb24uDQo+ID4gVXNpbmcgdGhlIGhlYWRlciB0byBnZXQgdGhl
IGRhdGEgc3RydWN0dXJlcyBmcm9tIHNlcGFyYXRlIGNvZGUNCj4gPiBtZWFucyB5b3UgbmVlZCB0
byBoYXZlIHNpbWlsYXIgcGFyc2luZyBmdW5jdGlvbnMgaW4gZWFjaCBvZiB0aGUNCj4gbW9kdWxl
cw0KPiA+IHVzaW5nIGl0LiBOb3Qgc2hhcmluZyB0aGUgaGVhZGVyIHdvdWxkbid0IGhlbHAsIGJl
Y2F1c2UgdGhlbiB5b3UgZW5kDQo+ID4gdXAgZHVwbGljYXRpbmcgZXZlbiBtb3JlLiBUaGUgcmVh
bCBzb2x1dGlvbiwgc3BlYWtpbmcgdmVyeSBicm9hZGx5LA0KPiA+IG11c3QgYmUgdG8gaGF2ZSBh
IGdlbmVyYWwgbW9kdWxlIHRoYXQgZGVhbHMgd2l0aCB3aGF0ZXZlciB0aGUgbW9yZQ0KPiA+IHNw
ZWNpZmljIG1vZHVsZXMgaGF2ZSBpbiBjb21tb24sIGFuZCBoYXZlIGEgaGVhZGVyIGZpbGUgdGhh
dCBkZWZpbmVzDQo+ID4gdGhlIGludGVyZmFjZSB0byBpdC4NCj4gPg0KPiANCj4gSW4gZ2VuZXJh
bCBJIGFncmVlIHdpdGggeW91LCBidXQgdGhlcmUgYXJlIHNvbWUgcHJvYmxlbXMgaGVyZS4NCj4g
VGhlIG1vc3QgdXNlZCBCVCBIQ0kgZXZlbnRzIGFyZSBDb21tYW5kIFN0YXR1cyBhbmQgQ29tbWFu
ZCBDb21wbGV0ZS4NCj4gQ29tbWFuZCBTdGF0dXMgY291bGQgYmUgcGFyc2VkIGNvbXBsZXRlbHkg
aW4gYSBnb29kIHdheSAocmV0cmlldmluZyBvcA0KPiBjb2RlLCBuYnIgb2YgY29tbWFuZHMgYWxs
b3dlZCwgYW5kIHN0YXR1cyBvZiBjb21tYW5kIHNlbnQpLg0KPiBDb21tYW5kIENvbXBsZXRlIGlz
IGhvd2V2ZXIgcXVpdGUgY29tcGxleCBzaW5jZSB0aGUgcmV0dXJuZWQgZGF0YSB3aWxsDQo+IGRp
ZmZlciBkZXBlbmRpbmcgb24gY29tbWFuZCBzZW50LiBPcCBjb2RlIGFuZCBuYnIgb2YgY29tbWFu
ZHMgYWxsb3dlZA0KPiBjYW4gYmUgcmV0cmlldmVkIGJ1dCBldmVyeXRoaW5nIGVsc2UgaGF2ZSB0
byBiZSBleHRyYWN0ZWQgZGlmZmVyZW50bHkNCj4gZGVwZW5kaW5nIG9uIGNvbW1hbmQuIFRoaXMg
bWVhbnMgdGhhdCB0aGVyZSBpcyBub3QgbXVjaCB0aGF0IHdpbGwgYmUNCj4gc2F2ZWQgaGVyZS4g
QnV0IG1heWJlIHdlIGNvdWxkIGV4dHJhY3Qgc29tZSBwYXJzaW5nIGludG8gY29tbW9uDQo+IGZ1
bmN0aW9ucywgYnV0IEkgZG9uJ3QgdGhpbmsgeW91IHdvdWxkIGdhaW4gdGhhdCBtdWNoLg0KPiBN
b3Jlb3ZlciwgdGhpcyB3b3VsZCBsZWFkIHRvIGEgbWFqb3IgcmVpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgaGNpX2NvcmUuYw0KPiBhbmQgcmVsYXRlZCBmaWxlcywgc2luY2UgdGhleSBkbyBub3QgdXNl
IGFueSBleHBvcnRlZCBjb21tb24gZnVuY3Rpb25zDQo+IGFzIGl0IGlzIHRvZGF5LiBJIGRvIG5v
dCBrbm93IGlmIHRoZXkgKEJsdWVaIGNvbW11bml0eSkgd291bGQgd2FudCB0aGlzDQo+IGFuZCBJ
IGRvIG5vdCB0aGluayB0aGF0IHRoYXQgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIENHMjkwMCBkcml2
ZXIgdG8gZG8uDQo+IEl0IHNob3VsZCBpbiB0aGF0IGNhc2UgYmUgZG9uZSBzZXBhcmF0ZWx5Lg0K
PiANCj4gPiA+ID4+IEFsc28gbm90ZSB0aGF0IHRoZSBjb21tb24taGNpLW1vZHVsZSBpcyBvbmx5
IHJlYWxseSB1c2VkIHVudGlsDQo+IHRoZQ0KPiA+IGNvbm5lY3RlZA0KPiA+ID4gPj4gY2hpcCBo
YXMgYmVlbiBkZXRlY3RlZC4gVGhlIGNoaXAgaGFuZGxlciB3aWxsIHRoZW4gc2V0IHRoZQ0KPiA+
IGNhbGxiYWNrIGZ1bmN0aW9ucw0KPiA+ID4gPj4gc28gYWN0dWFsIGRhdGEgdHJhbnNtaXNzaW9u
cyBuZXZlciBwYXNzIHRoZSBjb21tb24taGNpLW1vZHVsZS4NCj4gPiBUaGV5IGdvIGRpcmVjdGx5
DQo+ID4gPiA+PiBmcm9tIHRyYW5zcG9ydCB0byBjaGlwIGhhbmRsZXIuIFRoYXQgaXMgbm90IHJl
YWxseSBzaG93biBpbiB0aGUNCj4gPiBwaWN0dXJlIGFib3ZlLg0KPiA+ID4gPj4gSnVzdCBpbWFn
aW5lIHRoYXQgY29tbW9uLWhjaS1tb2R1bGUgaXMgcmVtb3ZlZCBhZnRlciBhIGNoaXAgaGFzDQo+
ID4gYmVlbiBjb25uZWN0ZWQNCj4gPiA+ID4+IGFuZCBhIGNoaXAgaGFuZGxlciBoYXMgYmVlbiBk
ZXRlcm1pbmVkLg0KPiA+ID4gPj4NCj4gPiA+ID4+IEkgaG9wZSBJIGhhdmVuJ3QgbWlzdW5kZXJz
dG9vZCB5b3VyIHF1ZXN0aW9uLiBJIGRvIG5vdCBrbm93IG11Y2gNCj4gPiBhYm91dCB0aGUgSTJD
DQo+ID4gPiA+PiBzeXN0ZW0sIGJ1dCBJIHRyaWVkIHRvIHVuZGVyc3RhbmQgeW91ciBxdWVzdGlv
biBhcyBiZXN0IGFzIEkNCj4gPiBjb3VsZC4NCj4gPiA+ID4NCj4gPiA+ID4gSSB0aGluayB0aGVy
ZSBpcyBhIGRpc2Nvbm5lY3Qgd2hlbiB0YWxraW5nIGFib3V0IGhpZXJhcmNoaWVzLCBhcw0KPiBp
dA0KPiA+IGNhbiBiZSBhcHBsaWVkDQo+ID4gPiA+IHRvIGRpZmZlcmVudCBhcmVhczoNCj4gPiA+
ID4NCj4gPiA+ID4gKiBtb2R1bGUgZGVwZW5kZW5jaWVzDQo+ID4gPiA+ICogZGV2aWNlIGRldGVj
dGlvbg0KPiA+ID4gPiAqIHN5c2ZzIG9iamVjdCBoaWVyYXJjaHkNCj4gPiA+ID4gKiBkYXRhIGZs
b3cNCj4gPiA+DQo+ID4gPiBtb2R1bGUgZGVwZW5kZWN5LXdpc2UgSSBhZ3JlZSwNCj4gPiA+IEkg
d291bGQgd2FudCBGTS1WNEwyIHdpdGhvdXQgQlQgb3IgSSBtaWdodCB3YW50IEdQUyBzaW1wbGlz
dGljIGNoYXINCj4gPiA+IGRyaXZlciB3aXRob3V0IEJUIG9yIEZNIFY0TDIuDQo+ID4NCj4gPiBC
dXQgeW91J2Qgc3RpbGwgbmVlZCB0byBoYXZlIGFuIEhDSSBtb2R1bGUuIEkgYmVsaWV2ZSByaWdo
dCBub3csIHRoZQ0KPiA+IGhjaSBtb2R1bGUgZGVwZW5kcyBvbiB0aGUgYmx1ZXRvb3RoIG1vZHVs
ZSwgYW5kIHlvdSBhcmUgcmlnaHQgdGhhdA0KPiB0aGlzDQo+ID4gaXMgYW4gdW5kZXNpcmFibGUg
ZGVwZW5kZW5jeSB0byBoYXZlIGZvciBhIEdQUyBtb2R1bGUuIEhvd2V2ZXIsIHRoZQ0KPiA+IHNv
bHV0aW9uDQo+ID4gdG8gdGhpcyBzaG91bGQgbm90IGJlIHRvIG1ha2UgR1BTIGluZGVwZW5kZW50
IG9mIEhDSSwgYnV0IHRvIG1ha2UNCj4gcGFydHMNCj4gPiBvZiBIQ0kgaW5kZXBlbmRlbnQgb2Yg
Ymx1ZXRvb3RoLg0KPiA+DQo+IA0KPiBGb3IgdGhlIENHMjkwMCB0aGF0IGlzIG5vdCBwb3NzaWJs
ZS4gRXZlbiBpZiB5b3UgYXJlIHJ1bm5pbmcganVzdCBHUFMNCj4geW91IHN0aWxsIG11c3QgZG93
bmxvYWQgcGF0Y2hlcyBhbmQgc2V0dGluZ3MgYW5kIHRoYXQgaXMgZG9uZSB0aHJvdWdoDQo+IEhD
SSBjb21tYW5kcyBvdmVyIHRoZSBCbHVldG9vdGggY29tbWFuZCBpbnRlcmZhY2UuIFdlIGFsc28g
dXNlDQo+IEJsdWV0b290aCBjb21tYW5kcyB0byBpZGVudGlmeSB0aGUgY29udHJvbGxlci4NCj4g
DQo+ID4gPiBkZXZpY2UgZGV0ZWN0aW9uIHdpc2UsIEl0IGlzIGEgcHJvYmxlbSwgdGhlcmUgaXMg
bm90ICJfcHJvYmUiDQo+ID4gPiBtZWNoYW5pc20gZm9yIFVBUlQgYmFzZWQgdHJhbnNwb3J0IGFz
IGl0IGlzDQo+ID4gPiB1bmRlcnN0YW5kYWJsZSwgYW5kIHByZXR0eSBtdWNoIHRoZSBkcml2ZXIg
d291bGQgZW5kIHVwIGJlaW5nDQo+ID4gcGxhdGZvcm0NCj4gPiA+IGRldmljZSBkcml2ZXIgLi4u
DQo+ID4NCj4gPiBUaGUgcGxhdGZvcm0gZGV2aWNlIGlzIGp1c3QgdGhlIGxvd2VzdCBsZXZlbCBp
biB0aGUgZGV2aWNlIGhpZXJhcmNoeS4NCj4gPg0KPiA+IElmIGVhY2ggSENJIGNoYW5uZWwgaXMg
YSBkZXZpY2UsIHlvdSBjYW4gc3RhY2sgYnQsIGdwcywgYXVkaW8sIC4uLg0KPiA+IGRldmljZXMg
YWxsIG9uIHRvcCBvZiB0aGUgSENJIGRldmljZSwgd2hpY2ggaXMgZWl0aGVyIHN0YWNrZWQgb24g
dG9wDQo+ID4gb2YgYSBzZXJpYWwgcG9ydCBvciBpbiBzb21lIG90aGVyIHdheSBjb25uZWN0ZWQg
dG8gdGhlIHVuZGVyeWluZw0KPiA+IHRyYW5zcG9ydC4NCj4gPg0KPiA+IEluIHRoaXMgY2FzZSwg
dGhlIGNoYW5uZWxzIHRoZW1zZWx2ZXMgYXJlIG5vdCBwbGF0Zm9ybSBkZXZpY2VzLCBidXQNCj4g
PiB3b3VsZCBnZXQgYSBuZXcgYnVzIGZvciB0aGVtLiBUaGF0IGJ1cyBpcyBwb3B1bGF0ZWQgYnkg
YSBkcml2ZXIgdGhhdA0KPiA+IG93bnMgdGhlIEhDSSBhbmQgdGhhdCBrbm93cyAoZS5nLiBmcm9t
IGl0cyBwbGF0Zm9ybSBkYXRhLCBoYXJkd2FyZQ0KPiA+IHJlZ2lzdGVycywgdXNlciBjb25maWcg
b3IgZGV2aWNlIHRyZWUpIHdoYXQgY2hhbm5lbHMgYXJlIHByZXNlbnQuDQo+ID4NCj4gPiA+IGRh
dGEgZmxvdyBpcyB3aGVyZSBJIGd1ZXNzIHRoZSBhYnN0cmFjdGlvbiBoYXMgdG8gbGllIGluLCBm
b3INCj4gPiA+IGRpZmZlcmVudCB2ZW5kb3JzLi4uDQo+ID4NCj4gPiBJIGRvbid0IGtub3cgd2hh
dCB5b3UgbWVhbiB3aXRoIHRoYXQuIE15IHBvaW50IHdhcyB0aGF0IHdlIG5lZWQgdG8NCj4gPiBj
b25zaWRlciBhbGwgdGhlIGhpZXJhcmNoaWVzLCBhbmQgdGhhdCB0aGV5IG1pZ2h0IGJlIGRpZmZl
cmVudC4NCj4gPg0KPiA+IAlBcm5kDQo+IA0KPiAvUC1HDQoNCg==
On Fri, Feb 25, 2011 at 6:55 PM, Vitaly Wool <[email protected]> wrote:
> Making hardware work is, if course, a valid point, but porting a windows
> driver would do that as well, and it's not the reason to pull windows
> drivers' ports into mainline.
Yeah hm, that sounds like it has "drivers/staging" printed all over it then,
so either we solve these issues or we need to put it into staging so we
can get help from others in fixing it up (we have a similar situation with
the U8500 graphics stuff).
P-G do you think it would be proper to take this into staging for the
moment, or do you prefer to drive it outside the mainline kernel tree until
it lands in the proper place(s)?
Yours,
Linus Walleij
Hi,
Sorry to say, but I have to disagree. This patchset represents
overcomplicated and unclear model, which may be misleading for developers
implementing similar solution for another platform.
Making hardware work is, if course, a valid point, but porting a windows
driver would do that as well, and it's not the reason to pull windows
drivers' ports into mainline.
Thanks,
Vitaly
Den 25 feb 2011 18:08 skrev "Linus Walleij" <[email protected]>:
> 2011/2/24 Par-Gunnar HJALMDAHL <[email protected]>:
>
>> I sent the mail below one month ago, but have still not received any
answers or further comments.
>> Has anyone of you who made comments on the CG2900 patches earlier, any
more comments or questions?
>
> I think I have provided
> Acked-by: Linus Walleij <[email protected]>
> (or the earlier ST-Ericsson address, which is equal) for these patches.
> Else I do so now.
>
> FWIW: I think those who want another architectural solution
> can propose a refactoring patch any day they like, and if it's
> recieved like "ah, that's better" ACK from P?r-Gunnar et al, then
> it's no big deal.
>
> This makes the hardware work with 2.6.39 which is really most
> important IMO, Sam can you merge this as it stands?
>
> Yours,
> Linus Walleij
2011/2/24 Par-Gunnar HJALMDAHL <[email protected]>:
> I sent the mail below one month ago, but have still not received any answ=
ers or further comments.
> Has anyone of you who made comments on the CG2900 patches earlier, any mo=
re comments or questions?
I think I have provided
Acked-by: Linus Walleij <[email protected]>
(or the earlier ST-Ericsson address, which is equal) for these patches.
Else I do so now.
FWIW: I think those who want another architectural solution
can propose a refactoring patch any day they like, and if it's
recieved like "ah, that's better" ACK from P=E4r-Gunnar et al, then
it's no big deal.
This makes the hardware work with 2.6.39 which is really most
important IMO, Sam can you merge this as it stands?
Yours,
Linus Walleij
On Tuesday 01 March 2011, Par-Gunnar HJALMDAHL wrote:
> As you say, I think it could be good to put it into staging so we have
> a driver in place and then we can continue discussing the architecture from there.
Yes, makes sense.
Arnd
As you say, I think it could be good to put it into staging so we have a dr=
iver in place and then we can continue discussing the architecture from the=
re.
/P-G
> -----Original Message-----
> From: Linus Walleij [mailto:[email protected]]
> Sent: den 28 februari 2011 23:44
> To: Vitaly Wool; Par-Gunnar Hjalmdahl
> Cc: Par-Gunnar HJALMDAHL; Samuel Ortiz; Marcel Holtmann; Lee Jones;
> Alan Cox; Arnd Bergmann; [email protected]; linux-
> [email protected]; Lukasz Rymanowski; Pavan Savoy
> Subject: Re: [PATCH 00/11] mfd and bluetooth: Add CG2900 suppor
>=20
> On Fri, Feb 25, 2011 at 6:55 PM, Vitaly Wool <[email protected]>
> wrote:
>=20
> > Making hardware work is, if course, a valid point, but porting a
> windows
> > driver would do that as well, and it's not the reason to pull windows
> > drivers' ports into mainline.
>=20
> Yeah hm, that sounds like it has "drivers/staging" printed all over it
> then,
> so either we solve these issues or we need to put it into staging so we
> can get help from others in fixing it up (we have a similar situation
> with
> the U8500 graphics stuff).
>=20
> P-G do you think it would be proper to take this into staging for the
> moment, or do you prefer to drive it outside the mainline kernel tree
> until
> it lands in the proper place(s)?
>=20
> Yours,
> Linus Walleij