ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3VzYi1zZXJpYWwudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvdXNiLXNlcmlhbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwMWNkOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdXNiL3VzYi1zZXJpYWwudHh0CkBAIC0wLDAgKzEsNDcwIEBACitJTlRST0RVQ1RJT04KKworICBUaGUgVVNCIHNlcmlhbCBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBVU0IgdG8KKyAgc2VyaWFsIGNvbnZlcnRlciBwcm9kdWN0cywgYXMgd2VsbCBhcyBzb21lIGRldmljZXMgdGhhdCB1c2UgYSBzZXJpYWwKKyAgaW50ZXJmYWNlIGZyb20gdXNlcnNwYWNlIHRvIHRhbGsgdG8gdGhlIGRldmljZS4KKworICBTZWUgdGhlIGluZGl2aWR1YWwgcHJvZHVjdCBzZWN0aW9uIGJlbG93IGZvciBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dAorICB0aGUgZGlmZmVyZW50IGRldmljZXMuCisKKworQ09ORklHVVJBVElPTgorCisgIEN1cnJlbnRseSB0aGUgZHJpdmVyIGNhbiBoYW5kbGUgdXAgdG8gMjU2IGRpZmZlcmVudCBzZXJpYWwgaW50ZXJmYWNlcyBhdAorICBvbmUgdGltZS4gCisKKyAgSWYgeW91IGFyZSBub3QgdXNpbmcgZGV2ZnM6CisgICAgVGhlIG1ham9yIG51bWJlciB0aGF0IHRoZSBkcml2ZXIgdXNlcyBpcyAxODggc28gdG8gdXNlIHRoZSBkcml2ZXIsCisgICAgY3JlYXRlIHRoZSBmb2xsb3dpbmcgbm9kZXM6CisJbWtub2QgL2Rldi90dHlVU0IwIGMgMTg4IDAKKwlta25vZCAvZGV2L3R0eVVTQjEgYyAxODggMQorCW1rbm9kIC9kZXYvdHR5VVNCMiBjIDE4OCAyCisJbWtub2QgL2Rldi90dHlVU0IzIGMgMTg4IDMKKwkJLgorCQkuCisJCS4KKwlta25vZCAvZGV2L3R0eVVTQjI1NCBjIDE4OCAyNTQKKwlta25vZCAvZGV2L3R0eVVTQjI1NSBjIDE4OCAyNTUKKworICBJZiB5b3UgYXJlIHVzaW5nIGRldmZzOgorICAgIFRoZSBkZXZpY2VzIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlciB3aWxsIHNob3cgdXAgYXMKKyAgICAvZGV2L3VzYi90dHMvezAsMSwuLi59CisKKyAgV2hlbiB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCBhbmQgcmVjb2duaXplZCBieSB0aGUgZHJpdmVyLCB0aGUgZHJpdmVyCisgIHdpbGwgcHJpbnQgdG8gdGhlIHN5c3RlbSBsb2csIHdoaWNoIG5vZGUocykgdGhlIGRldmljZSBoYXMgYmVlbiBib3VuZAorICB0by4KKyAgCisKK1NQRUNJRklDIERFVklDRVMgU1VQUE9SVEVECisKKworQ29ubmVjdFRlY2ggV2hpdGVIRUFUIDQgcG9ydCBjb252ZXJ0ZXIKKworICBDb25uZWN0VGVjaCBoYXMgYmVlbiB2ZXJ5IGZvcnRoY29taW5nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIKKyAgZGV2aWNlLCBpbmNsdWRpbmcgcHJvdmlkaW5nIGEgdW5pdCB0byB0ZXN0IHdpdGguCisKKyAgVGhlIGRyaXZlciBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBDb25uZWN0IFRlY2ggSW5jLgorICBodHRwOi8vd3d3LmNvbm5lY3R0ZWNoLmNvbQorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0CisgIFN0dWFydCBNYWNEb25hbGQgYXQgc3R1YXJ0bUBjb25uZWN0dGVjaC5jb20KKworCitIYW5kU3ByaW5nIFZpc29yLCBQYWxtIFVTQiwgYW5kIENsaekgVVNCIGRyaXZlcgorCisgIFRoaXMgZHJpdmVyIHdvcmtzIHdpdGggYWxsIEhhbmRTcHJpbmcgVVNCLCBQYWxtIFVTQiwgYW5kIFNvbnkgQ2xp6SBVU0IKKyAgZGV2aWNlcy4KKworICBPbmx5IHdoZW4gdGhlIGRldmljZSB0cmllcyB0byBjb25uZWN0IHRvIHRoZSBob3N0LCB3aWxsIHRoZSBkZXZpY2Ugc2hvdworICB1cCB0byB0aGUgaG9zdCBhcyBhIHZhbGlkIFVTQiBkZXZpY2UuIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgZGV2aWNlIGlzCisgIHByb3Blcmx5IGVudW1lcmF0ZWQsIGFzc2lnbmVkIGEgcG9ydCwgYW5kIHRoZW4gY29tbXVuaWNhdGlvbiBfc2hvdWxkXyBiZQorICBwb3NzaWJsZS4gVGhlIGRyaXZlciBjbGVhbnMgdXAgcHJvcGVybHkgd2hlbiB0aGUgZGV2aWNlIGlzIHJlbW92ZWQsIG9yCisgIHRoZSBjb25uZWN0aW9uIGlzIGNhbmNlbGVkIG9uIHRoZSBkZXZpY2UuCisKKyAgTk9URToKKyAgICBUaGlzIG1lYW5zIHRoYXQgaW4gb3JkZXIgdG8gdGFsayB0byB0aGUgZGV2aWNlLCB0aGUgc3luYyBidXR0b24gbXVzdCBiZQorICAgIHByZXNzZWQgQkVGT1JFIHRyeWluZyB0byBnZXQgYW55IHByb2dyYW0gdG8gY29tbXVuaWNhdGUgdG8gdGhlIGRldmljZS4KKyAgICBUaGlzIGdvZXMgYWdhaW5zdCB0aGUgY3VycmVudCBkb2N1bWVudGF0aW9uIGZvciBwaWxvdC14ZmVyIGFuZCBvdGhlcgorICAgIHBhY2thZ2VzLCBidXQgaXMgdGhlIG9ubHkgd2F5IHRoYXQgaXQgd2lsbCB3b3JrIGR1ZSB0byB0aGUgaGFyZHdhcmUKKyAgICBpbiB0aGUgZGV2aWNlLgorICAKKyAgV2hlbiB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCwgdHJ5IHRhbGtpbmcgdG8gaXQgb24gdGhlIHNlY29uZCBwb3J0CisgICh0aGlzIGlzIHVzdWFsbHkgL2Rldi90dHlVU0IxIGlmIHlvdSBkbyBub3QgaGF2ZSBhbnkgb3RoZXIgdXNiLXNlcmlhbAorICBkZXZpY2VzIGluIHRoZSBzeXN0ZW0uKSBUaGUgc3lzdGVtIGxvZyBzaG91bGQgdGVsbCB5b3Ugd2hpY2ggcG9ydCBpcworICB0aGUgcG9ydCB0byB1c2UgZm9yIHRoZSBIb3RTeW5jIHRyYW5zZmVyLiBUaGUgIkdlbmVyaWMiIHBvcnQgY2FuIGJlIHVzZWQKKyAgZm9yIG90aGVyIGRldmljZSBjb21tdW5pY2F0aW9uLCBzdWNoIGFzIGEgUFBQIGxpbmsuCisKKyAgRm9yIHNvbWUgU29ueSBDbGnpIGRldmljZXMsIC9kZXYvdHR5VVNCMCBtdXN0IGJlIHVzZWQgdG8gdGFsayB0byB0aGUKKyAgZGV2aWNlLiAgVGhpcyBpcyB0cnVlIGZvciBhbGwgT1MgdmVyc2lvbiAzLjUgZGV2aWNlcywgYW5kIG1vc3QgZGV2aWNlcworICB0aGF0IGhhdmUgaGFkIGEgZmxhc2ggdXBncmFkZSB0byBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIE9TLiAgU2VlIHRoZQorICBrZXJuZWwgc3lzdGVtIGxvZyBmb3IgaW5mb3JtYXRpb24gb24gd2hpY2ggaXMgdGhlIGNvcnJlY3QgcG9ydCB0byB1c2UuCisKKyAgSWYgYWZ0ZXIgcHJlc3NpbmcgdGhlIHN5bmMgYnV0dG9uLCBub3RoaW5nIHNob3dzIHVwIGluIHRoZSBzeXN0ZW0gbG9nLAorICB0cnkgcmVzZXR0aW5nIHRoZSBkZXZpY2UsIGZpcnN0IGEgaG90IHJlc2V0LCBhbmQgdGhlbiBhIGNvbGQgcmVzZXQgaWYKKyAgbmVjZXNzYXJ5LiAgU29tZSBkZXZpY2VzIG5lZWQgdGhpcyBiZWZvcmUgdGhleSBjYW4gdGFsayB0byB0aGUgVVNCIHBvcnQKKyAgcHJvcGVybHkuCisgIAorICBEZXZpY2VzIHRoYXQgYXJlIG5vdCBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgY2FuIGJlIHNwZWNpZmllZCB3aXRoIG1vZHVsZQorICBwYXJhbWV0ZXJzLiAgZS5nLiBtb2Rwcm9iZSB2aXNvciB2ZW5kb3I9MHg1NGMgcHJvZHVjdD0weDY2CisgIAorICBUaGVyZSBpcyBhIHdlYnBhZ2UgYW5kIG1haWxpbmcgbGlzdHMgZm9yIHRoaXMgcG9ydGlvbiBvZiB0aGUgZHJpdmVyIGF0OgorICBodHRwOi8vdXNidmlzb3Iuc291cmNlZm9yZ2UubmV0LworCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0IEdyZWcKKyAgS3JvYWgtSGFydG1hbiBhdCBncmVnQGtyb2FoLmNvbQorCisKK1BvY2tldFBDIFBEQSBEcml2ZXIKKworICBUaGlzIGRyaXZlciBjYW4gYmUgdXNlZCB0byBjb25uZWN0IHRvIENvbXBhcSBpUEFRLCBIUCBKb3JuYWRhLCBDYXNpbyBFTTUwMAorICBhbmQgb3RoZXIgUERBcyBydW5uaW5nIFdpbmRvd3MgQ0UgMy4wIG9yIFBvY2tldFBDIDIwMDIgdXNpbmcgYSBVU0IKKyAgY2FibGUvY3JhZGxlLgorICBNb3N0IGRldmljZXMgc3VwcG9ydGVkIGJ5IEFjdGl2ZVN5bmMgYXJlIHN1cHBvcnRlZCBvdXQgb2YgdGhlIGJveC4KKyAgRm9yIG90aGVycywgcGxlYXNlIHVzZSBtb2R1bGUgcGFyYW1ldGVycyB0byBzcGVjaWZ5IHRoZSBwcm9kdWN0IGFuZCB2ZW5kb3IKKyAgaWQuIGUuZy4gbW9kcHJvYmUgaXBhcSB2ZW5kb3I9MHgzZjAgcHJvZHVjdD0weDExMjUKKworICBUaGUgZHJpdmVyIHByZXNlbnRzIGEgc2VyaWFsIGludGVyZmFjZSAodXN1YWxseSBvbiAvZGV2L3R0eVVTQjApIG92ZXIKKyAgd2hpY2ggb25lIG1heSBydW4gcHBwIGFuZCBlc3RhYmxpc2ggYSBUQ1AvSVAgbGluayB0byB0aGUgUERBLiBPbmNlIHRoaXMKKyAgaXMgZG9uZSwgeW91IGNhbiB0cmFuc2ZlciBmaWxlcywgYmFja3VwLCBkb3dubG9hZCBlbWFpbCBldGMuIFRoZSBtb3N0CisgIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB1c2luZyBVU0IgaXMgc3BlZWQgLSBJIGNhbiBnZXQgNzMgdG8gMTEzCisgIGtieXRlcy9zZWMgZm9yIGRvd25sb2FkL3VwbG9hZCB0byBteSBpUEFRLgorCisgIFRoaXMgZHJpdmVyIGlzIG9ubHkgb25lIG9mIGEgc2V0IG9mIGNvbXBvbmVudHMgcmVxdWlyZWQgdG8gdXRpbGl6ZQorICB0aGUgVVNCIGNvbm5lY3Rpb24uIFBsZWFzZSB2aXNpdCBodHRwOi8vc3luY2Uuc291cmNlZm9yZ2UubmV0IHdoaWNoCisgIGNvbnRhaW5zIHRoZSBuZWNlc3NhcnkgcGFja2FnZXMgYW5kIGEgc2ltcGxlIHN0ZXAtYnktc3RlcCBob3d0by4KKworICBPbmNlIGNvbm5lY3RlZCwgeW91IGNhbiB1c2UgV2luIENFIHByb2dyYW1zIGxpa2UgZnRwVmlldywgUG9ja2V0IE91dGxvb2sKKyAgZnJvbSB0aGUgUERBIGFuZCB4Y2VyZGlzcCwgc3luY2UgdXRpbGl0aWVzIGZyb20gdGhlIExpbnV4IHNpZGUuCisKKyAgVG8gdXNlIFBvY2tldCBJRSwgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZ2l2ZW4gYXQKKyAgaHR0cDovL3d3dy50ZWtndXJ1LmNvLnVrL0VNNTAwL3VzYnRvbmV0Lmh0bSB0byBhY2hpZXZlIHRoZSBzYW1lIHRoaW5nCisgIG9uIFdpbjk4LiBPbWl0IHRoZSBwcm94eSBzZXJ2ZXIgcGFydDsgTGludXggaXMgcXVpdGUgY2FwYWJsZSBvZiBmb3J3YXJkaW5nCisgIHBhY2tldHMgdW5saWtlIFdpbjk4LiBBbm90aGVyIG1vZGlmaWNhdGlvbiBpcyByZXF1aXJlZCBhdCBsZWFzdCBmb3IgdGhlCisgIGlQQVEgLSBkaXNhYmxlIGF1dG9zeW5jIGJ5IGdvaW5nIHRvIHRoZSBTdGFydC9TZXR0aW5ncy9Db25uZWN0aW9ucyBtZW51CisgIGFuZCB1bmNoZWNraW5nIHRoZSAiQXV0b21hdGljYWxseSBzeW5jaHJvbml6ZSAuLi4iIGJveC4gR28gdG8KKyAgU3RhcnQvUHJvZ3JhbXMvQ29ubmVjdGlvbnMsIGNvbm5lY3QgdGhlIGNhYmxlIGFuZCBzZWxlY3QgInVzYmRpYWwiIChvcgorICB3aGF0ZXZlciB5b3UgbmFtZWQgeW91ciBuZXcgVVNCIGNvbm5lY3Rpb24pLiBZb3Ugc2hvdWxkIGZpbmFsbHkgd2luZAorICB1cCB3aXRoIGEgIkNvbm5lY3RlZCB0byB1c2JkaWFsIiB3aW5kb3cgd2l0aCBzdGF0dXMgc2hvd24gYXMgY29ubmVjdGVkLgorICBOb3cgc3RhcnQgdXAgUElFIGFuZCBicm93c2UgYXdheS4KKworICBJZiBpdCBkb2Vzbid0IHdvcmsgZm9yIHNvbWUgcmVhc29uLCBsb2FkIGJvdGggdGhlIHVzYnNlcmlhbCBhbmQgaXBhcSBtb2R1bGUKKyAgd2l0aCB0aGUgbW9kdWxlIHBhcmFtZXRlciAiZGVidWciIHNldCB0byAxIGFuZCBleGFtaW5lIHRoZSBzeXN0ZW0gbG9nLgorICBZb3UgY2FuIGFsc28gdHJ5IHNvZnQtcmVzZXR0aW5nIHlvdXIgUERBIGJlZm9yZSBhdHRlbXB0aW5nIGEgY29ubmVjdGlvbi4KKworICBPdGhlciBmdW5jdGlvbmFsaXR5IG1heSBiZSBwb3NzaWJsZSBkZXBlbmRpbmcgb24geW91ciBQREEuIEFjY29yZGluZyB0bworICBXZXMgQ2lsbGRoYWlyZSA8YmlsbHlib2Jqb2VoZW5yeWJvYkBob3RtYWlsLmNvbT4sIHdpdGggdGhlIFRvc2hpYmEgRTU3MCwKKyAgLi4uaWYgeW91IGJvb3QgaW50byB0aGUgYm9vdGxvYWRlciAoaG9sZCBkb3duIHRoZSBwb3dlciB3aGVuIGhpdHRpbmcgdGhlCisgIHJlc2V0IGJ1dHRvbiwgY29udGludWluZyB0byBob2xkIG9udG8gdGhlIHBvd2VyIHVudGlsIHRoZSBib290bG9hZGVyIHNjcmVlbgorICBpcyBkaXNwbGF5ZWQpLCB0aGVuIHB1dCBpdCBpbiB0aGUgY3JhZGxlIHdpdGggdGhlIGlwYXEgZHJpdmVyIGxvYWRlZCwgb3BlbgorICBhIHRlcm1pbmFsIG9uIC9kZXYvdHR5VVNCMCwgaXQgZ2l2ZXMgeW91IGEgIlVTQiBSZWZsYXNoIiB0ZXJtaW5hbCwgd2hpY2ggY2FuCisgIGJlIHVzZWQgdG8gZmxhc2ggdGhlIFJPTSwgYXMgd2VsbCBhcyB0aGUgbWljcm9QIGNvZGUuLiAgc28gbXVjaCBmb3IgbmVlZGluZworICBUb3NoaWJhJ3MgJDM1MCBzZXJpYWwgY2FibGUgZm9yIGZsYXNoaW5nISEgOkQKKyAgTk9URTogVGhpcyBoYXMgTk9UIGJlZW4gdGVzdGVkLiBVc2UgYXQgeW91ciBvd24gcmlzay4KKyAKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGUgZHJpdmVyLCBwbGVhc2UgY29udGFjdCBHYW5lc2gKKyAgVmFyYWRhcmFqYW4gPGdhbmVzaEB2ZXJpdGFzLmNvbT4KKworCitLZXlzcGFuIFBEQSBTZXJpYWwgQWRhcHRlcgorCisgIFNpbmdsZSBwb3J0IERCLTkgc2VyaWFsIGFkYXB0ZXIsIHB1c2hlZCBhcyBhIFBEQSBhZGFwdGVyIGZvciBpTWFjcyAobW9zdGx5CisgIHNvbGQgaW4gTWFjaW50b3NoIGNhdGFsb2dzLCBjb21lcyBpbiBhIHRyYW5zbHVjZW50IHdoaXRlL2dyZWVuIGRvbmdsZSkuCisgIEZhaXJseSBzaW1wbGUgZGV2aWNlLiBGaXJtd2FyZSBpcyBob21lYnJldy4KKyAgVGhpcyBkcml2ZXIgYWxzbyB3b3JrcyBmb3IgdGhlIFhpcmNvbS9FbnRyZ3JhIHNpbmdsZSBwb3J0IHNlcmlhbCBhZGFwdGVyLgorCisgIEN1cnJlbnQgc3RhdHVzOgorICAgVGhpbmdzIHRoYXQgd29yazoKKyAgICAgYmFzaWMgaW5wdXQvb3V0cHV0ICh0ZXN0ZWQgd2l0aCAnY3UnKQorICAgICBibG9ja2luZyB3cml0ZSB3aGVuIHNlcmlhbCBsaW5lIGNhbid0IGtlZXAgdXAKKyAgICAgY2hhbmdpbmcgYmF1ZCByYXRlcyAodXAgdG8gMTE1MjAwKQorICAgICBnZXR0aW5nL3NldHRpbmcgbW9kZW0gY29udHJvbCBwaW5zIChUSU9DTXtHRVQsU0VULEJJUyxCSUN9KQorICAgICBzZW5kaW5nIGJyZWFrIChhbHRob3VnaCBkdXJhdGlvbiBsb29rcyBzdXNwZWN0KQorICAgVGhpbmdzIHRoYXQgZG9uJ3Q6CisgICAgIGRldmljZSBzdHJpbmdzIChhcyBsb2dnZWQgYnkga2VybmVsKSBoYXZlIHRyYWlsaW5nIGJpbmFyeSBnYXJiYWdlCisgICAgIGRldmljZSBJRCBpc24ndCByaWdodCwgbWlnaHQgY29sbGlkZSB3aXRoIG90aGVyIEtleXNwYW4gcHJvZHVjdHMKKyAgICAgY2hhbmdpbmcgYmF1ZCByYXRlcyBvdWdodCB0byBmbHVzaCB0eC9yeCB0byBhdm9pZCBtYW5nbGVkIGhhbGYgY2hhcmFjdGVycworICAgQmlnIFRoaW5ncyBvbiB0aGUgdG9kbyBsaXN0OgorICAgICBwYXJpdHksIDcgdnMgOCBiaXRzIHBlciBjaGFyLCAxIG9yIDIgc3RvcCBiaXRzCisgICAgIEhXIGZsb3cgY29udHJvbAorICAgICBub3QgYWxsIG9mIHRoZSBzdGFuZGFyZCBVU0IgZGVzY3JpcHRvcnMgYXJlIGhhbmRsZWQ6IEdldF9TdGF0dXMsIFNldF9GZWF0dXJlCisgICAgIE9fTk9OQkxPQ0ssIHNlbGVjdCgpCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgQnJpYW4KKyAgV2FybmVyIGF0IHdhcm5lckBsb3RoYXIuY29tIAorCisKK0tleXNwYW4gVVNBLXNlcmllcyBTZXJpYWwgQWRhcHRlcnMKKworICBTaW5nbGUsIER1YWwgYW5kIFF1YWQgcG9ydCBhZGFwdGVycyAtIGRyaXZlciB1c2VzIEtleXNwYW4gc3VwcGxpZWQgCisgIGZpcm13YXJlIGFuZCBpcyBiZWluZyBkZXZlbG9wZWQgd2l0aCB0aGVpciBzdXBwb3J0LgorICAKKyAgQ3VycmVudCBzdGF0dXM6CisgICAgVGhlIFVTQS0xOFgsIFVTQS0yOFgsIFVTQS0xOSwgVVNBLTE5VyBhbmQgVVNBLTQ5VyBhcmUgc3VwcG9ydGVkIGFuZAorICAgIGhhdmUgYmVlbiBwcmV0dHkgdGhyb3VnaGx5IHRlc3RlZCBhdCB2YXJpb3VzIGJhdWQgcmF0ZXMgd2l0aCA4LU4tMQorICAgIGNoYXJhY3RlciBzZXR0aW5ncy4gIE90aGVyIGNoYXJhY3RlciBsZW5ndGhzIGFuZCBwYXJpdHkgc2V0dXBzIGFyZQorICAgIHByZXNlbnRseSB1bnRlc3RlZC4KKworICAgIFRoZSBVU0EtMjggaXNuJ3QgeWV0IHN1cHBvcnRlZCB0aG91Z2ggZG9pbmcgc28gc2hvdWxkIGJlIHByZXR0eQorICAgIHN0cmFpZ2h0Zm9yd2FyZC4gIENvbnRhY3QgdGhlIG1haW50YWluZXIgaWYgeW91IHJlcXVpcmUgdGhpcworICAgIGZ1bmN0aW9uYWxpdHkuCisgIAorICBNb3JlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBhdDoKKyAgICAgICAgaHR0cDovL21pc2MubnUvaHVnaC9rZXlzcGFuLmh0bWwKKyAgIAorICBGb3IgYW55IHF1ZXN0aW9ucyBvciBwcm9ibGVtcyB3aXRoIHRoaXMgZHJpdmVyLCBwbGVhc2UgY29udGFjdCBIdWdoCisgIEJsZW1pbmdzIGF0IGh1Z2hAbWlzYy5udQorCisKK0ZUREkgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlcgorCisgIFRoaXMgaXMgYSBzaW5nbGUgcG9ydCBEQi0yNSBzZXJpYWwgYWRhcHRlci4gTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzCisgIGRldmljZSBhbmQgdGhlIExpbnV4IGRyaXZlciBjYW4gYmUgZm91bmQgYXQ6CisJaHR0cDovL3JlYWxpdHkuc2dpLmNvbS9icnlkZXJfd2VsbGluZ3Rvbi9mdGRpX3Npby8KKworICBGb3IgYW55IHF1ZXN0aW9ucyBvciBwcm9ibGVtcyB3aXRoIHRoaXMgZHJpdmVyLCBwbGVhc2UgY29udGFjdCBCaWxsIFJ5ZGVyCisgIGF0IGJyeWRlckBzZ2kuY29tCisKKworWnlYRUwgb21uaS5uZXQgbGNkIHBsdXMgSVNETiBUQQorCisgIFRoaXMgaXMgYW4gSVNETiBUQS4gUGxlYXNlIHJlcG9ydCBib3RoIHN1Y2Nlc3NlcyBhbmQgdHJvdWJsZXMgdG8KKyAgYXp1bW1vQHRvd2VydGVjaC5pdAorCisKK0N5cHJlc3MgTTggQ1k0NjAxIEZhbWlseSBTZXJpYWwgRHJpdmVyCisKKyAgVGhpcyBkcml2ZXIgd2FzIGluIG1vc3QgcGFydCBkZXZlbG9wZWQgYnkgTmVpbCAia295YW1hIiBXaGVsY2hlbC4gIEl0CisgIGhhcyBiZWVuIGltcHJvdmVkIHNpbmNlIHRoYXQgcHJldmlvdXMgZm9ybSB0byBzdXBwb3J0IGR5bmFtaWMgc2VyaWFsCisgIGxpbmUgc2V0dGluZ3MgYW5kIGltcHJvdmVkIGxpbmUgaGFuZGxpbmcuICBUaGUgZHJpdmVyIGlzIGZvciB0aGUgbW9zdAorICBwYXJ0IHN0YWJsZSBhbmQgaGFzIGJlZW4gdGVzdGVkIG9uIGFuIHNtcCBtYWNoaW5lLiAoZHVhbCBwMikKKworICAgIENoaXBzZXRzIHN1cHBvcnRlZCB1bmRlciBDWTQ2MDEgZmFtaWx5OgorCQorCQlDWTdDNjM3MjMsIENZN0M2Mzc0MiwgQ1k3QzYzNzQzLCBDWTdDNjQwMTMKKworICAgIERldmljZXMgc3VwcG9ydGVkOgorCisJCS1EZUxvcm1lJ3MgVVNCIEVhcnRobWF0ZSAoU2lSRiBTdGFyIElJIGxwIGFyY2gpCisJCS1DeXByZXNzIEhJRC0+Q09NIFJTMjMyIGFkYXB0ZXIKKwkKKwkJTm90ZTogQ3lwcmVzcyBTZW1pY29uZHVjdG9yIGNsYWltcyBubyBhZmZpbGlhdGlvbiB3aXRoIHRoZQorCQkJdGhlIGhpZC0+Y29tIGRldmljZS4KKworCU1vc3QgZGV2aWNlcyB1c2luZyBjaGlwc2V0cyB1bmRlciB0aGUgQ1k0NjAxIGZhbWlseSBzaG91bGQKKyAgICAgd29yayB3aXRoIHRoZSBkcml2ZXIuICBBcyBsb25nIGFzIHRoZXkgc3RheSB0cnVlIHRvIHRoZSBDWTQ2MDEKKyAgICAgdXNic2VyaWFsIHNwZWNpZmljYXRpb24uCisKKyAgICBUZWNobmljYWwgbm90ZXM6CisKKyAgICAgICAgVGhlIEVhcnRobWF0ZSBzdGFydHMgb3V0IGF0IDQ4MDAgOE4xIGJ5IGRlZmF1bHQuLi4gdGhlIGRyaXZlciB3aWxsCisJdXBvbiBzdGFydCBpbml0IHRvIHRoaXMgc2V0dGluZy4gIHVzYnNlcmlhbCBjb3JlIHByb3ZpZGVzIHRoZSByZXN0CisJb2YgdGhlIHRlcm1pb3Mgc2V0dGluZ3MsIGFsb25nIHdpdGggc29tZSBjdXN0b20gdGVybWlvcyBzbyB0aGF0IHRoZQorCW91dHB1dCBpcyBpbiBwcm9wZXIgZm9ybWF0IGFuZCBwYXJzYWJsZS4KKwkKKwlUaGUgZGV2aWNlIGNhbiBiZSBwdXQgaW50byBzaXJmIG1vZGUgYnkgaXNzdWluZyBOTUVBIGNvbW1hbmQ6CisJCSRQU1JGMTAwLDxwcm90b2NvbD4sPGJhdWQ+LDxkYXRhYml0cz4sPHN0b3BiaXRzPiw8cGFyaXR5PipDSEVDS1NVTQorCQkkUFNSRjEwMCwwLDk2MDAsOCwxLDAqMEMKKworCQlJdCBzaG91bGQgdGhlbiBiZSBzdWZmaWNpZW50IHRvIGNoYW5nZSB0aGUgcG9ydCB0ZXJtaW9zIHRvIG1hdGNoIHRoaXMKKwkJdG8gYmVnaW4gY29tbXVuaWNhdGluZy4KKworCUFzIGZhciBhcyBJIGNhbiB0ZWxsIGl0IHN1cHBvcnRzIHByZXR0eSBtdWNoIGV2ZXJ5IHNpcmYgY29tbWFuZCBhcworCWRvY3VtZW50ZWQgb25saW5lIGF2YWlsYWJsZSB3aXRoIGZpcm13YXJlIDIuMzEsIHdpdGggc29tZSB1bmtub3duCisJbWVzc2FnZSBpZHMuCisKKwlUaGUgaGlkLT5jb20gYWRhcHRlciBjYW4gcnVuIGF0IGEgbWF4aW11bSBiYXVkIG9mIDExNTIwMGJwcy4gIFBsZWFzZSBub3RlCisJdGhhdCB0aGUgZGV2aWNlIGhhcyB0cm91YmxlIG9yIGlzIGluY2FwYWJsZSBvZiByYWlzaW5nIGxpbmUgdm9sdGFnZSBwcm9wZXJseS4KKwlJdCB3aWxsIGJlIGZpbmUgd2l0aCBudWxsIG1vZGVtIGxpbmtzLCBhcyBsb25nIGFzIHlvdSBkbyBub3QgdHJ5IHRvIGxpbmsgdHdvCisJdG9nZXRoZXIgd2l0aG91dCBoYWNraW5nIHRoZSBhZGFwdGVyIHRvIHNldCB0aGUgbGluZSBoaWdoLgorCisJVGhlIGRyaXZlciBpcyBzbXAgc2FmZS4gIFBlcmZvcm1hbmNlIHdpdGggdGhlIGRyaXZlciBpcyByYXRoZXIgbG93IHdoZW4gdXNpbmcKKwlpdCBmb3IgdHJhbnNmZXJpbmcgZmlsZXMuICBUaGlzIGlzIGJlaW5nIHdvcmtlZCBvbiwgYnV0IEkgd291bGQgYmUgd2lsbGluZyB0bworCWFjY2VwdCBwYXRjaGVzLiAgQW4gdXJiIHF1ZXVlIG9yIHBhY2tldCBidWZmZXIgd291bGQgbGlrZWx5IGZpdCB0aGUgYmlsbCBoZXJlLgorCisJSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgcHJvYmxlbXMsIHBhdGNoZXMsIGZlYXR1cmUgcmVxdWVzdHMsIGV0Yy4geW91IGNhbgorCWNvbnRhY3QgbWUgaGVyZSB2aWEgZW1haWw6CisJCQkJCWRpZ25vbWVAZ21haWwuY29tCisJCSh5b3VyIHByb2JsZW1zL3BhdGNoZXMgY2FuIGFsdGVybmF0ZWx5IGJlIHN1Ym1pdHRlZCB0byB1c2ItZGV2ZWwpCisKKworRGlnaSBBY2NlbGVQb3J0IERyaXZlcgorCisgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBEaWdpIEFjY2VsZVBvcnQgVVNCIDIgYW5kIDQgZGV2aWNlcywgMiBwb3J0CisgIChwbHVzIGEgcGFyYWxsZWwgcG9ydCkgYW5kIDQgcG9ydCBVU0Igc2VyaWFsIGNvbnZlcnRlcnMuICBUaGUgZHJpdmVyCisgIGRvZXMgTk9UIHlldCBzdXBwb3J0IHRoZSBEaWdpIEFjY2VsZVBvcnQgVVNCIDguCisKKyAgVGhpcyBkcml2ZXIgd29ya3MgdW5kZXIgU01QIHdpdGggdGhlIHVzYi11aGNpIGRyaXZlci4gIEl0IGRvZXMgbm90CisgIHdvcmsgdW5kZXIgU01QIHdpdGggdGhlIHVoY2kgZHJpdmVyLgorCisgIFRoZSBkcml2ZXIgaXMgZ2VuZXJhbGx5IHdvcmtpbmcsIHRob3VnaCB3ZSBzdGlsbCBoYXZlIGEgZmV3IG1vcmUgaW9jdGxzCisgIHRvIGltcGxlbWVudCBhbmQgZmluYWwgdGVzdGluZyBhbmQgZGVidWdnaW5nIHRvIGRvLiAgVGhlIHBhcmFsbGVkIHBvcnQKKyAgb24gdGhlIFVTQiAyIGlzIHN1cHBvcnRlZCBhcyBhIHNlcmlhbCB0byBwYXJhbGxlbCBjb252ZXJ0ZXI7IGluIG90aGVyCisgIHdvcmRzLCBpdCBhcHBlYXJzIGFzIGFub3RoZXIgVVNCIHNlcmlhbCBwb3J0IG9uIExpbnV4LCBldmVuIHRob3VnaAorICBwaHlzaWNhbGx5IGl0IGlzIHJlYWxseSBhIHBhcmFsbGVsIHBvcnQuICBUaGUgRGlnaSBBY2NlbGVwb3J0IFVTQiA4CisgIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorCisgIFBsZWFzZSBjb250YWN0IFBldGVyIEJlcmdlciAocGJlcmdlckBicmltc29uLmNvbSkgb3IgQWwgQm9yY2hlcnMKKyAgKGFsYm9yY2hlcnNAc3RlaW5lcnBvaW50LmNvbSkgZm9yIHF1ZXN0aW9ucyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgZHJpdmVyLgorCisKK0JlbGtpbiBVU0IgU2VyaWFsIEFkYXB0ZXIgRjVVMTAzCisKKyAgU2luZ2xlIHBvcnQgREItOS9QUy0yIHNlcmlhbCBhZGFwdGVyIGZyb20gQmVsa2luIHdpdGggZmlybXdhcmUgYnkgZVRFSyBMYWJzLgorICBUaGUgUGVyYWNvbSBzaW5nbGUgcG9ydCBzZXJpYWwgYWRhcHRlciBhbHNvIHdvcmtzIHdpdGggdGhpcyBkcml2ZXIsIGFzCisgIHdlbGwgYXMgdGhlIEdvSHVicyBhZGFwdGVyLgorCisgIEN1cnJlbnQgc3RhdHVzOgorICAgIFRoZSBmb2xsb3dpbmcgaGF2ZSBiZWVuIHRlc3RlZCBhbmQgd29yazoKKyAgICAgIEJhdWQgcmF0ZSAgICAzMDAtMjMwNDAwICAgICAgICAgICAgICAgCisgICAgICBEYXRhIGJpdHMgICAgNS04CisgICAgICBTdG9wIGJpdHMgICAgMS0yCisgICAgICBQYXJpdHkgICAgICAgTixFLE8sTSxTCisgICAgICBIYW5kc2hha2UgICAgTm9uZSwgU29mdHdhcmUgKFhPTi9YT0ZGKSwgSGFyZHdhcmUgKENUU1JUUyxDVFNEVFIpKgorICAgICAgQnJlYWsgICAgICAgIFNldCBhbmQgY2xlYXIKKyAgICAgIExpbmUgY29udHJsICBJbnB1dC9PdXRwdXQgcXVlcnkgYW5kIGNvbnRyb2wgKioKKworICAgICAgKiAgSGFyZHdhcmUgaW5wdXQgZmxvdyBjb250cm9sIGlzIG9ubHkgZW5hYmxlZCBmb3IgZmlybXdhcmUKKyAgICAgICAgIGxldmVscyBhYm92ZSAyLjA2LiAgUmVhZCBzb3VyY2UgY29kZSBjb21tZW50cyBkZXNjcmliaW5nIEJlbGtpbgorICAgICAgICAgZmlybXdhcmUgZXJyYXRhLiAgSGFyZHdhcmUgb3V0cHV0IGZsb3cgY29udHJvbCBpcyB3b3JraW5nIGZvciBhbGwKKyAgICAgICAgIGZpcm13YXJlIHZlcnNpb25zLgorICAgICAgKiogUXVlcmllcyBvZiBpbnB1dHMgKENUUyxEU1IsQ0QsUkkpIHNob3cgdGhlIGxhc3QKKyAgICAgICAgIHJlcG9ydGVkIHN0YXRlLiAgUXVlcmllcyBvZiBvdXRwdXRzIChEVFIsUlRTKSBzaG93IHRoZSBsYXN0CisgICAgICAgICByZXF1ZXN0ZWQgc3RhdGUgYW5kIG1heSBub3QgcmVmbGVjdCBjdXJyZW50IHN0YXRlIGFzIHNldCBieQorICAgICAgICAgYXV0b21hdGljIGhhcmR3YXJlIGZsb3cgY29udHJvbC4KKworICBUTyBETyBMaXN0OgorICAgIC0tIEFkZCB0cnVlIG1vZGVtIGNvbnRvbCBsaW5lIHF1ZXJ5IGNhcGFiaWxpdHkuICBDdXJyZW50bHkgdHJhY2tzIHRoZQorICAgICAgIHN0YXRlcyByZXBvcnRlZCBieSB0aGUgaW50ZXJydXB0IGFuZCB0aGUgc3RhdGVzIHJlcXVlc3RlZC4KKyAgICAtLSBBZGQgZXJyb3IgcmVwb3J0aW5nIGJhY2sgdG8gYXBwbGljYXRpb24gZm9yIFVBUlQgZXJyb3IgY29uZGl0aW9ucy4KKyAgICAtLSBBZGQgc3VwcG9ydCBmb3IgZmx1c2ggaW9jdGxzLgorICAgIC0tIEFkZCBldmVyeXRoaW5nIGVsc2UgdGhhdCBpcyBtaXNzaW5nIDopCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgV2lsbGlhbQorICBHcmVhdGhvdXNlIGF0IHdncmVhdGhvdXNlQHNtdmEuY29tCisKKworRW1wZWcgZW1wZWctY2FyIE1hcmsgSS9JSSBEcml2ZXIKKworICBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBkcml2ZXIgdG8gcHJvdmlkZSBjb25uZWN0aXZpdHkgc3VwcG9ydCBmb3IgdGhlCisgIGNsaWVudCBzeW5jaHJvbml6YXRpb24gdG9vbHMgZm9yIGFuIEVtcGVnIGVtcGVnLWNhciBtcDMgcGxheWVyLgorCisgIFRpcHM6CisgICAgKiBEb24ndCBmb3JnZXQgdG8gY3JlYXRlIHRoZSBkZXZpY2Ugbm9kZXMgZm9yIHR0eVVTQnswLDEsMiwuLi59CisgICAgKiBtb2Rwcm9iZSBlbXBlZyAobW9kcHJvYmUgaXMgeW91ciBmcmllbmQpCisgICAgKiBlbXB0b29sIC0tdXNiIC9kZXYvdHR5VVNCMCAob3Igd2hhdGV2ZXIgeW91IG5hbWVkIHlvdXIgZGV2aWNlIG5vZGUpCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgR2FyeQorICBCcnViYWtlciBhdCB4YXZ5ZXJAaXgubmV0Y29tLmNvbQorCisKK01DVCBVU0IgU2luZ2xlIFBvcnQgU2VyaWFsIEFkYXB0ZXIgVTIzMgorCisgIFRoaXMgZHJpdmVyIGlzIGZvciB0aGUgTUNUIFVTQi1SUzIzMiBDb252ZXJ0ZXIgKDI1IHBpbiwgTW9kZWwgTm8uCisgIFUyMzItUDI1KSBmcm9tIE1hZ2ljIENvbnRyb2wgVGVjaG5vbG9neSBDb3JwLiAodGhlcmUgaXMgYWxzbyBhIDkgcGluCisgIE1vZGVsIE5vLiBVMjMyLVA5KS4gTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGRldmljZSBjYW4gYmUgZm91bmQgYXQKKyAgdGhlIG1hbnVmYWN0dXJlJ3Mgd2ViLXNpdGU6IGh0dHA6Ly93d3cubWN0LmNvbS50dy4KKworICBUaGUgZHJpdmVyIGlzIGdlbmVyYWxseSB3b3JraW5nLCB0aG91Z2ggaXQgc3RpbGwgbmVlZHMgc29tZSBtb3JlIHRlc3RpbmcuCisgIEl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgQmVsa2luIFVTQiBTZXJpYWwgQWRhcHRlciBGNVUxMDMgZHJpdmVyIGFuZCBpdHMKKyAgVE9ETyBsaXN0IGlzIHZhbGlkIGZvciB0aGlzIGRyaXZlciBhcyB3ZWxsLgorCisgIFRoaXMgZHJpdmVyIGhhcyBhbHNvIGJlZW4gZm91bmQgdG8gd29yayBmb3Igb3RoZXIgcHJvZHVjdHMsIHdoaWNoIGhhdmUKKyAgdGhlIHNhbWUgVmVuZG9yIElEIGJ1dCBkaWZmZXJlbnQgUHJvZHVjdCBJRHMuIFNpdGVjb20ncyBVMjMyLVAyNSBzZXJpYWwKKyAgY29udmVydGVyIHVzZXMgUHJvZHVjdCBJRCAweDIzMCBhbmQgVmVuZG9yIElEIDB4NzExIGFuZCB3b3JrcyB3aXRoIHRoaXMKKyAgZHJpdmVyLiBBbHNvLCBELUxpbmsncyBEVS1IM1NQIFVTQiBCQVkgYWxzbyB3b3JrcyB3aXRoIHRoaXMgZHJpdmVyLgorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0IFdvbGZnYW5nCisgIEdyYW5kZWdnZXIgYXQgd29sZmdhbmdAY2VzLmNoCisKKworSW5zaWRlIE91dCBOZXR3b3JrcyBFZGdlcG9ydCBEcml2ZXIKKworICBUaGlzIGRyaXZlciBzdXBwb3J0cyBhbGwgZGV2aWNlcyBtYWRlIGJ5IEluc2lkZSBPdXQgTmV0d29ya3MsIHNwZWNpZmljYWxseQorICB0aGUgZm9sbG93aW5nIG1vZGVsczoKKyAgICAgICBFZGdlcG9ydC80CisgICAgICAgUmFwaWRwb3J0LzQKKyAgICAgICBFZGdlcG9ydC80dAorICAgICAgIEVkZ2Vwb3J0LzIKKyAgICAgICBFZGdlcG9ydC80aQorICAgICAgIEVkZ2Vwb3J0LzJpCisgICAgICAgRWRnZXBvcnQvNDIxCisgICAgICAgRWRnZXBvcnQvMjEKKyAgICAgICBFZGdlcG9ydC84CisgICAgICAgRWRnZXBvcnQvOCBEdWFsCisgICAgICAgRWRnZXBvcnQvMkQ4CisgICAgICAgRWRnZXBvcnQvNEQ4CisgICAgICAgRWRnZXBvcnQvOGkKKyAgICAgICBFZGdlcG9ydC8yIERJTgorICAgICAgIEVkZ2Vwb3J0LzQgRElOCisgICAgICAgRWRnZXBvcnQvMTYgRHVhbAorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0IEdyZWcKKyAgS3JvYWgtSGFydG1hbiBhdCBncmVnQGtyb2FoLmNvbQorCisKK1JFSU5FUiBTQ1QgY3liZXJKYWNrIHBpbnBhZC9lLWNvbSBVU0IgY2hpcGNhcmQgcmVhZGVyCisgICAKKyAgSW50ZXJmYWNlIHRvIElTTyA3ODE2IGNvbXBhdGlibGUgY29udGFjdGJhc2VkIGNoaXBjYXJkcywgZS5nLiBHU00gU0lNcy4KKyAgCisgIEN1cnJlbnQgc3RhdHVzOgorICAgIFRoaXMgaXMgdGhlIGtlcm5lbCBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIHRoaXMgVVNCIGNhcmQgcmVhZGVyLgorICAgIFRoZXJlIGlzIGFsc28gYSB1c2VyIHBhcnQgZm9yIGEgQ1QtQVBJIGRyaXZlciBhdmFpbGFibGUuIEEgc2l0ZQorICAgIGZvciBkb3dubG9hZGluZyBpcyBUQkEuIEZvciBub3csIHlvdSBjYW4gcmVxdWVzdCBpdCBmcm9tIHRoZQorICAgIG1haW50YWluZXIgKGxpbnV4LXVzYkBzaWkubGkpLgorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0CisgIGxpbnV4LXVzYkBzaWkubGkKKworCitQcm9saWZpYyBQTDIzMDMgRHJpdmVyCisKKyAgVGhpcyBkcml2ZXIgc3VwcG9ydCBhbnkgZGV2aWNlIHRoYXQgaGFzIHRoZSBQTDIzMDMgY2hpcCBmcm9tIFByb2xpZmljCisgIGluIGl0LiAgVGhpcyBpbmNsdWRlcyBhIG51bWJlciBvZiBzaW5nbGUgcG9ydCBVU0IgdG8gc2VyaWFsCisgIGNvbnZlcnRlcnMgYW5kIFVTQiBHUFMgZGV2aWNlcy4gIERldmljZXMgZnJvbSBBdGVuICh0aGUgVUMtMjMyKSBhbmQKKyAgSU8tRGF0YSB3b3JrIHdpdGggdGhpcyBkcml2ZXIuCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgR3JlZworICBLcm9haC1IYXJ0bWFuIGF0IGdyZWdAa3JvYWguY29tCisgIAorCitLTDVLVVNCMTA1IGNoaXBzZXQgLyBQYWxtQ29ubmVjdCBVU0Igc2luZ2xlLXBvcnQgYWRhcHRlcgorICAKK0N1cnJlbnQgc3RhdHVzOgorICBUaGUgZHJpdmVyIHdhcyBwdXQgdG9nZXRoZXIgYnkgbG9va2luZyBhdCB0aGUgdXNiIGJ1cyB0cmFuc2FjdGlvbnMKKyAgZG9uZSBieSBQYWxtJ3MgZHJpdmVyIHVuZGVyIFdpbmRvd3MsIHNvIGEgbG90IG9mIGZ1bmN0aW9uYWxpdHkgaXMKKyAgc3RpbGwgbWlzc2luZy4gIE5vdGFibHksIHNlcmlhbCBpb2N0bHMgYXJlIHNvbWV0aW1lcyBmYWtlZCBvciBub3QgeWV0CisgIGltcGxlbWVudGVkLiAgU3VwcG9ydCBmb3IgZmluZGluZyBvdXQgYWJvdXQgRFNSIGFuZCBDVFMgbGluZSBzdGF0dXMgaXMKKyAgaG93ZXZlciBpbXBsZW1lbnRlZCAodGhvdWdoIG5vdCBuaWNlbHkpLCBzbyB5b3VyIGZhdm9yaXRlIGF1dG9waWxvdCgxKQorICBhbmQgcGlsb3QtbWFuYWdlciAtZGFlbW9uIGNhbGxzIHdpbGwgd29yay4gIEJhdWQgcmF0ZXMgdXAgdG8gMTE1MjAwCisgIGFyZSBzdXBwb3J0ZWQsIGJ1dCBoYW5kc2hha2luZyAoc29mdHdhcmUgb3IgaGFyZHdhcmUpIGlzIG5vdCwgd2hpY2ggaXMKKyAgd2h5IGl0IGlzIHdpc2UgdG8gY3V0IGRvd24gb24gdGhlIHJhdGUgdXNlZCBpcyB3aXNlIGZvciBsYXJnZQorICB0cmFuc2ZlcnMgdW50aWwgdGhpcyBpcyBzZXR0bGVkLgorICAKK09wdGlvbnMgc3VwcG9ydGVkOgorICBJZiB0aGlzIGRyaXZlciBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSB5b3UgY2FuIHBhc3MgdGhlIGZvbGxvd2luZworICBvcHRpb25zIHRvIGl0OgorICBkZWJ1ZwkJCS0gZXh0cmEgdmVyYm9zZSBkZWJ1Z2dpbmcgaW5mbworICAJCQkgIChkZWZhdWx0OiAwOyBub256ZXJvIGVuYWJsZXMpCisgIHVzZV9sb3dsYXRlbmN5CS0gdXNlIGxvd19sYXRlbmN5IGZsYWcgdG8gc3BlZWQgdXAgdHR5IGxheWVyCisJCQkgIHdoZW4gcmVhZGluZyBmcm9tIGZyb20gdGhlIGRldmljZS4KKwkJCSAgKGRlZmF1bHQ6IDA7IG5vbnplcm8gZW5hYmxlcykKKworICBTZWUgaHR0cDovL3d3dy51dWhhdXMuZGUvbGludXgvcGFsbWNvbm5lY3QuaHRtbCBmb3IgdXAtdG8tZGF0ZQorICBpbmZvcm1hdGlvbiBvbiB0aGlzIGRyaXZlci4KKworCitHZW5lcmljIFNlcmlhbCBkcml2ZXIKKworICBJZiB5b3VyIGRldmljZSBpcyBub3Qgb25lIG9mIHRoZSBhYm92ZSBsaXN0ZWQgZGV2aWNlcywgY29tcGF0aWJsZSB3aXRoCisgIHRoZSBhYm92ZSBtb2RlbHMsIHlvdSBjYW4gdHJ5IG91dCB0aGUgImdlbmVyaWMiIGludGVyZmFjZS4gVGhpcworICBpbnRlcmZhY2UgZG9lcyBub3QgcHJvdmlkZSBhbnkgdHlwZSBvZiBjb250cm9sIG1lc3NhZ2VzIHNlbnQgdG8gdGhlCisgIGRldmljZSwgYW5kIGRvZXMgbm90IHN1cHBvcnQgYW55IGtpbmQgb2YgZGV2aWNlIGZsb3cgY29udHJvbC4gQWxsIHRoYXQKKyAgaXMgcmVxdWlyZWQgb2YgeW91ciBkZXZpY2UgaXMgdGhhdCBpdCBoYXMgYXQgbGVhc3Qgb25lIGJ1bGsgaW4gZW5kcG9pbnQsCisgIG9yIG9uZSBidWxrIG91dCBlbmRwb2ludC4gCisgIAorICBUbyBlbmFibGUgdGhlIGdlbmVyaWMgZHJpdmVyIHRvIHJlY29nbml6ZSB5b3VyIGRldmljZSwgYnVpbGQgdGhlIGRyaXZlcgorICBhcyBhIG1vZHVsZSBhbmQgbG9hZCBpdCBieSB0aGUgZm9sbG93aW5nIGludm9jYXRpb246CisJaW5zbW9kIHVzYnNlcmlhbCB2ZW5kb3I9MHgjIyMjIHByb2R1Y3Q9MHgjIyMjCisgIHdoZXJlIHRoZSAjIyMjIGlzIHJlcGxhY2VkIHdpdGggdGhlIGhleCByZXByZXNlbnRhdGlvbiBvZiB5b3VyIGRldmljZSdzCisgIHZlbmRvciBpZCBhbmQgcHJvZHVjdCBpZC4KKworICBUaGlzIGRyaXZlciBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBOZXRDaGlwIFVTQgorICBkZXZlbG9wbWVudCBib2FyZCwgcHJvdmlkaW5nIGEgd2F5IHRvIGRldmVsb3AgVVNCIGZpcm13YXJlIHdpdGhvdXQKKyAgaGF2aW5nIHRvIHdyaXRlIGEgY3VzdG9tIGRyaXZlci4KKworICBGb3IgYW55IHF1ZXN0aW9ucyBvciBwcm9ibGVtcyB3aXRoIHRoaXMgZHJpdmVyLCBwbGVhc2UgY29udGFjdCBHcmVnCisgIEtyb2FoLUhhcnRtYW4gYXQgZ3JlZ0Brcm9haC5jb20KKworCitDT05UQUNUOgorCisgIElmIGFueW9uZSBoYXMgYW55IHByb2JsZW1zIHVzaW5nIHRoZXNlIGRyaXZlcnMsIHdpdGggYW55IG9mIHRoZSBhYm92ZQorICBzcGVjaWZpZWQgcHJvZHVjdHMsIHBsZWFzZSBjb250YWN0IHRoZSBzcGVjaWZpYyBkcml2ZXIncyBhdXRob3IgbGlzdGVkCisgIGFib3ZlLCBvciBqb2luIHRoZSBMaW51eC1VU0IgbWFpbGluZyBsaXN0IChpbmZvcm1hdGlvbiBvbiBqb2luaW5nIHRoZQorICBtYWlsaW5nIGxpc3QsIGFzIHdlbGwgYXMgYSBsaW5rIHRvIGl0cyBzZWFyY2hhYmxlIGFyY2hpdmUgaXMgYXQKKyAgaHR0cDovL3d3dy5saW51eC11c2Iub3JnLyApCisKKworR3JlZyBLcm9haC1IYXJ0bWFuCitncmVnQGtyb2FoLmNvbQo=