RG9jdW1lbnRhdGlvbiBmb3IgZGliMzAwMCogZnJvbnRlbmQgZHJpdmVycyBhbmQgZGlidXNiIGRldmljZSBkcml2ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkNvcHlyaWdodCAoQykgMjAwNC01IFBhdHJpY2sgQm9ldHRjaGVyIChwYXRyaWNrLmJvZXR0Y2hlckBkZXN5LmRlKSwKCmRpYnVzYiBhbmQgZGliMzAwMG1iL21jIGRyaXZlcnMgYmFzZWQgb24gR1BMIGNvZGUsIHdoaWNoIGhhcwoKQ29weXJpZ2h0IChDKSAyMDA0IEFtYXVyeSBEZW1vbCBmb3IgRGlCY29tIChhZGVtb2xAZGliY29tLmZyKQoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgptb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwpwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdmVyc2lvbiAyLgoKClN1cHBvcnRlZCBkZXZpY2VzIFVTQjEuMQo9PT09PT09PT09PT09PT09PT09PT09PT0KClByb2R1Y2VkIGFuZCByZXNlbGxlZCBieSBUd2luaGFuOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBUd2luaGFuRFRWIFVTQi1UZXIgRFZCLVQgRGV2aWNlIChWUDcwNDEpCglodHRwOi8vd3d3LnR3aW5oYW4uY29tL3Byb2R1Y3RfdGVycmVzdHJpYWxfMy5hc3AKCi0gVHdpbmhhbkRUViBNYWdpYyBCb3ggKFZQNzA0MWUpCglodHRwOi8vd3d3LnR3aW5oYW4uY29tL3Byb2R1Y3RfdGVycmVzdHJpYWxfNC5hc3AKCi0gSEFNQSBEVkItVCBVU0IgZGV2aWNlCglodHRwOi8vd3d3LmhhbWEuZGUvcG9ydGFsL2FydGljbGVJZCoxMTA2MjAvYWN0aW9uKjI1OTgKCi0gQ1RTIFBvcnRhYmxlIChDaGluZXNlIFRlbGV2aXNpb24gU3lzdGVtKSAoMikKCWh0dHA6Ly93d3cuMmN0cy50di9jdHNwb3J0YWJsZS8KCi0gVW5rbm93biBVU0IgRFZCLVQgZGV2aWNlIHdpdGggdmVuZG9yIElEIEh5cGVyLVBhbHRlawoKClByb2R1Y2VkIGFuZCByZXNlbGxlZCBieSBLV29ybGQ6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gS1dvcmxkIFYtU3RyZWFtIFhQRVJUIERUViBEVkItVCBVU0IKCWh0dHA6Ly93d3cua3dvcmxkLmNvbS50dy9lbi9wcm9kdWN0L0RWQlQtVVNCL0RWQlQtVVNCLmh0bWwKCi0gSmV0V2F5IERUViBEVkItVCBVU0IKCWh0dHA6Ly93d3cuamV0d2F5LmNvbS50dy9ldmlzbi9wcm9kdWN0L2xjZC10di9EVlQtVVNCL2R0di11c2IuaHRtCgotIEFEU1RlY2ggSW5zdGFudCBUViBEVkItVCBVU0IKCWh0dHA6Ly93d3cuYWRzdGVjaC5jb20vcHJvZHVjdHMvUFRWLTMzMy9pbnRyby9QVFYtMzMzX2ludHJvLmFzcD9waWQ9UFRWLTMzMwoKCk90aGVyczoKLS0tLS0tLQotIFVsdGltYSBFbGVjdHJvbmljL0FydGVjIFQxIFVTQiBUVkJPWCAoQU4yMTM1LCBBTjIyMzUsIEFOMjIzNSB3aXRoIFBhbmFzb25pYyBUdW5lcikKCWh0dHA6Ly84Mi4xNjEuMjQ2LjI0OS9wcm9kdWN0cy10dmJveC5odG1sCgotIENvbXBybyBWaWRlb21hdGUgRFZCLVUyMDAwIC0gRFZCLVQgVVNCICgyKQoJaHR0cDovL3d3dy5jb21wcm91c2EuY29tL3Byb2R1Y3RzL3ZtdTIwMDAuaHRtCgotIEdyYW5kdGVjIFVTQiBEVkItVAoJaHR0cDovL3d3dy5ncmFuZC5jb20udHcvCgotIEF2ZXJtZWRpYSBBdmVyVFYgRFZCVCBVU0IgKDIpCglodHRwOi8vd3d3LmF2ZXJtZWRpYS5jb20vCgotIERpQmNvbSBVU0IgRFZCLVQgcmVmZXJlbmNlIGRldmljZSAobm9uLXB1YmxpYykKCgpTdXBwb3J0ZWQgZGV2aWNlcyBVU0IyLjAKPT09PT09PT09PT09PT09PT09PT09PT09Ci0gVHdpbmhhbiBNYWdpY0JveCBJSSAoMikKCWh0dHA6Ly93d3cudHdpbmhhbi5jb20vcHJvZHVjdF90ZXJyZXN0cmlhbF83LmFzcAoKLSBIYW5mdGVrIFVNVC0wMTAgKDEpCglodHRwOi8vd3d3Lmdsb2JhbHNvdXJjZXMuY29tL3NpLzYwMDg4MTk3NTcwODIvUHJvZHVjdERldGFpbC9EaWdpdGFsLVRWL3Byb2R1Y3RfaWQtMTAwMDQ2NTI5CgotIFR5cGhvb24vWWFrdW1vL0hBTUEgRFZCLVQgbW9iaWxlIFVTQjIuMCAoMSkKCWh0dHA6Ly93d3cueWFrdW1vLmRlL3Byb2R1a3RlL2luZGV4LnBocD9waWQ9MSZhZz1EVkItVAoKLSBBcnRlYyBUMSBVU0IgVFZCT1ggKEZYMikgKDIpCgotIEhhdXBwYXVnZSBXaW5UViBOT1ZBLVQgVVNCMgoJaHR0cDovL3d3dy5oYXVwcGF1Z2UuY29tLwoKLSBLV29ybGQvQURTVGVjaCBJbnN0YW50IERWQi1UIFVTQjIuMCAoRGlCMzAwME0tQikKCi0gRGlCY29tIFVTQjIuMCBEVkItVCByZWZlcmVuY2UgZGV2aWNlIChub24tcHVibGljKQoKMSkgSXQgaXMgd29ya2luZyBhbG1vc3QuCjIpIE5vIHRlc3QgcmVwb3J0cyByZWNlaXZlZCB5ZXQuCgoKMC4gTkVXUzoKICAyMDA1LTAyLTExIC0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIEtXb3JsZC9BRFNUZWNoIEluc3RhbnQgRFZCLVQgVVNCMi4wLiBUaGFua3MgYSBsb3QgdG8gSm9hY2hpbSB2b24gQ2Fyb24KICAyMDA1LTAyLTAyIC0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIEhhdXBwYXVnZSBXaW4tVFYgTm92YS1UIFVTQjIKICAyMDA1LTAxLTMxIC0gZGlzdG9ydGVkIHN0cmVhbWluZyBpcyBmaW5hbGx5IGdvbmUgZm9yIFVTQjEuMSBkZXZpY2VzCiAgMjAwNS0wMS0xMyAtIG1vdmVkIHRoZSBtaXJyb3JlZCBwaWRfZmlsdGVyX3RhYmxlIGJhY2sgdG8gZHZiLWRpYnVzYgogICAgICAgICAgICAgLSBmaXJzdCBhbG1vc3Qgd29ya2luZyB2ZXJzaW9uIGZvciBIYW5mVGVrIFVNVC0wMTAKICAgICAgICAgICAgIC0gZm91bmQgb3V0LCB0aGF0IFlha3Vtby9IQU1BL1R5cGhvb24gYXJlIHByZWRlc3NvcnMgb2YgdGhlIEhhbmZUZWsgVU1ULTAxMAogIDIwMDUtMDEtMTAgLSByZWZhY3RvcmluZyBjb21wbGV0ZWQsIG5vdyBldmVyeXRoaW5nIGlzIHZlcnkgZGVsaWdodGZ1bAogICAgICAgICAgICAgLSB0dW5lciBxdWlya3MgZm9yIHNvbWUgd2VpcmQgZGV2aWNlcyAoQXJ0ZWMgVDEgQU4yMjM1IGRldmljZSBoYXMgc29tZXRpbWVzIGEKICAgICAgICAgICAgICAgUGFuYXNvbmljIFR1bmVyIGFzc2VtYmxlZCkuIFR1bmVycHJvYmluZyBpbXBsZW1lbnRlZC4gVGhhbmtzIGEgbG90IHRvIEd1bm5hciBXaXR0aWNoLgogIDIwMDQtMTItMjkgLSBhZnRlciBzZXZlcmFsIGRheXMgb2Ygc3RydWdnbGluZyBhcm91bmQgYnVnIG9mIG5vIHJldHVybmluZyBVUkJzIGZpeGVkLgogIDIwMDQtMTItMjYgLSByZWZhY3RvcmVkIHRoZSBkaWJ1c2ItZHJpdmVyLCBzcGxpdHRlZCBpbnRvIHNlcGFyYXRlIGZpbGVzCiAgICAgICAgICAgICAtIGkyYy1wcm9iaW5nIGVuYWJsZWQKICAyMDA0LTEyLTA2IC0gcG9zc2liaWxpdHkgZm9yIGRlbW9kIGkyYy1hZGRyZXNzIHByb2JpbmcKICAgICAgICAgICAgIC0gbmV3IHVzYiBJRHMgKENvbXBybyxBcnRlYykKICAyMDA0LTExLTIzIC0gbWVyZ2VkIGNoYW5nZXMgZnJvbSBEaUIzMDAwTUNfdmVyMi4xCiAgICAgICAgICAgICAtIHJldmlzZWQgdGhlIGRlYnVnZ2luZwogICAgICAgICAgICAgLSBwb3NzaWJpbGl0eSB0byBkZWxpdmVyIHRoZSBjb21wbGV0ZSBUUyBmb3IgVVNCMi4wCiAgMjAwNC0xMS0yMSAtIGZpcnN0IHdvcmtpbmcgdmVyc2lvbiBvZiB0aGUgZGliMzAwMG1jL3AgZnJvbnRlbmQgZHJpdmVyLgogIDIwMDQtMTEtMTIgLSBhZGRlZCBhZGRpdGlvbmFsIHJlbW90ZSBjb250cm9sIGtleXMuIFRoYW5rcyB0byBVd2UgSGFua2UuCiAgMjAwNC0xMS0wNyAtIGFkZGVkIHJlbW90ZSBjb250cm9sIHN1cHBvcnQuIFRoYW5rcyB0byBEYXZpZCBNYXR0aGV3cy4KICAyMDA0LTExLTA1IC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlcyAoR3JhbmR0ZWMvQXZlcm1lZGlhL0FydGVjKQogICAgICAgICAgICAgLSBtZXJnZWQgbXkgY2hhbmdlcyAoZm9yIGRpYjMwMDBtYi9kaWJ1c2IpIHRvIHRoZSBGRV9SRUZBQ1RPUklORywgYmVjYXVzZSBpdCBiZWNhbWUgSEVBRAogICAgICAgICAgICAgLSBtb3ZlZCB0cmFuc2ZlciBjb250cm9sIChwaWQgZmlsdGVyLCBmaWZvIGNvbnRyb2wpIGZyb20gdXNiIGRyaXZlciB0byBmcm9udGVuZCwgaXQgc2VlbXMKICAgICAgICAgICAgICAgYmV0dGVyIHNldHRsZWQgdGhlcmUgKGFkZGVkIHhmZXJfb3BzLXN0cnVjdCkKICAgICAgICAgICAgIC0gY3JlYXRlZCBhIGNvbW1vbiBmaWxlcyBmb3IgZnJvbnRlbmRzIChtYy9wL21iKQogIDIwMDQtMDktMjggLSBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyBkZXZpY2UgKFVua293biwgdmVuZG9yIElEIGlzIEh5cGVyLVBhbHRlaykKICAyMDA0LTA5LTIwIC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlIChDb21wcm8gRFZCLVUyMDAwKSwgdGhhbmtzCiAgICAgICAgICAgICAgIHRvIEFtYXVyeSBEZW1vbCBmb3IgcmVwb3J0aW5nCiAgICAgICAgICAgICAtIGNoYW5nZWQgdXNiIFRTIHRyYW5zZmVyIG1ldGhvZCAoc2V2ZXJhbCB1cmJzLCBzdG9wcGluZyB0cmFuc2ZlcgogICAgICAgICAgICAgICBiZWZvcmUgc2V0dGluZyBhIG5ldyBwaWQpCiAgMjAwNC0wOS0xMyAtIGFkZGVkIHN1cHBvcnQgZm9yIGEgbmV3IGRldmljZSAoQXJ0ZWMgVDEgVVNCIFRWQk9YKSwgdGhhbmtzCiAgICAgICAgICAgICAgIHRvIENocmlzdGlhbiBNb3RzY2hrZSBmb3IgcmVwb3J0aW5nCiAgMjAwNC0wOS0wNSAtIHJlbGVhc2VkIHRoZSBkaWJ1c2IgZGV2aWNlIGFuZCBkaWIzMDAwbWItZnJvbnRlbmQgZHJpdmVyCgogIChvbGQgbmV3cyBmb3IgdnA3MDQxLmMpCiAgMjAwNC0wNy0xNSAtIGZvdW5kIG91dCwgYnkgYWNjaWRlbnQsIHRoYXQgdGhlIGRldmljZSBoYXMgYSBUVUE2MDEwWFMgZm9yCiAgICAgICAgICAgICAgIFBMTAogIDIwMDQtMDctMTIgLSBmaWd1cmVkIG91dCwgdGhhdCB0aGUgZHJpdmVyIHNob3VsZCBhbHNvIHdvcmsgd2l0aCB0aGUKICAgICAgICAgICAgICAgQ1RTIFBvcnRhYmxlIChDaGluZXNlIFRlbGV2aXNpb24gU3lzdGVtKQogIDIwMDQtMDctMDggLSBmaXJtd2FyZS1leHRyYWN0aW9uLTIuNDIyLXByb2JsZW0gc29sdmVkLCBkcml2ZXIgaXMgbm93IHdvcmtpbmcKICAgICAgICAgICAgICAgcHJvcGVybHkgd2l0aCBmaXJtd2FyZSBleHRyYWN0ZWQgZnJvbSAyLjQyMgoJCQkgLSAjaWYgZm9yIDIuNi40IChkdmIpLCBjb21waWxlIGlzc3VlCgkJCSAtIGNoYW5nZWQgZmlybXdhcmUgaGFuZGxpbmcsIHNlZSB2cDcwNDEudHh0IHNlYyAxLjEKICAyMDA0LTA3LTAyIC0gc29tZSB0dW5lciBtb2RpZmljYXRpb25zLCB2MC4xLCBjbGVhbnVwcywgZmlyc3QgcHVibGljCiAgMjAwNC0wNi0yOCAtIG5vdyB1c2luZyB0aGUgZHZiX2RteF9zd2ZpbHRlcl9wYWNrZXRzLCBldmVyeXRoaW5nCiAgICAgICAgICAgICAgIHJ1bnMgZmluZSBub3cKICAyMDA0LTA2LTI3IC0gYWJsZSB0byB3YXRjaCBhbmQgc3dpdGNoaW5nIGNoYW5uZWxzIChwcmUtYWxwaGEpCiAgICAgICAgICAgICAtIG5vIHNlY3Rpb24gZmlsdGVyaW5nIHlldAogIDIwMDQtMDYtMDYgLSBmaXJzdCBUUyByZWNlaXZlZCwgYnV0IGtlcm5lbCBvb3BzIDovCiAgMjAwNC0wNS0xNCAtIGZpcm13YXJlIGxvYWRlciBpcyB3b3JraW5nCiAgMjAwNC0wNS0xMSAtIHN0YXJ0IHdyaXRpbmcgdGhlIGRyaXZlcgoKMS4gSG93IHRvIHVzZT8KTk9URTogVGhpcyBkcml2ZXIgd2FzIGRldmVsb3BlZCB1c2luZyBMaW51eCAyLjYuNi4sCml0IGlzIHdvcmtpbmcgd2l0aCAyLjYuNyBhbmQgYWJvdmUuCgpMaW51eCAyLjQueCBzdXBwb3J0IGlzIG5vdCBwbGFubmVkLCBidXQgcGF0Y2hlcyBhcmUgdmVyeSB3ZWxjb21lLgoKTk9URTogSSdtIHVzaW5nIERlYmlhbiB0ZXN0aW5nLCBzbyB0aGUgZm9sbG93aW5nIGV4cGxhaW5hdGlvbiAoZXNwZWNpYWxseQp0aGUgaG90cGx1Zy1wYXRoKSBuZWVkbid0IG1hdGNoIHlvdXIgc3lzdGVtLCBidXQgcHJvYmFibHkgaXQgd2lsbCA6KS4KClRoZSBkcml2ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBzaW5jZSBMaW51eCAyLjYuMTAuCgoxLjEuIEZpcm13YXJlCgpUaGUgVVNCIGRyaXZlciBuZWVkcyB0byBkb3dubG9hZCBhIGZpcm13YXJlIHRvIHN0YXJ0IHdvcmtpbmcuCgpZb3UgY2FuIGVpdGhlciB1c2UgImdldF9kdmJfZmlybXdhcmUgZGlidXNiIiB0byBkb3dubG9hZCB0aGUgZmlybXdhcmUgb3IgeW91CmNhbiBnZXQgaXQgZGlyZWN0bHkgdmlhCgpmb3IgVVNCMS4xIChBTjIxMzUpCmh0dHA6Ly93d3cubGludXh0di5vcmcvZG93bmxvYWRzL2Zpcm13YXJlL2R2Yi1kaWJ1c2ItNS4wLjAuMTEuZncKCmZvciBVU0IxLjEgKEFOMjIzNSkgKGEgZmV3IEFydGVjIFQxIGRldmljZXMpCmh0dHA6Ly93d3cubGludXh0di5vcmcvZG93bmxvYWRzL2Zpcm13YXJlL2R2Yi1kaWJ1c2ItYW4yMjM1LTEuZncKCmZvciBVU0IyLjAgKEZYMikgSGF1cHBhdWdlLCBEaUJjb20KaHR0cDovL3d3dy5saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvZHZiLWRpYnVzYi02LjAuMC41LmZ3Cgpmb3IgVVNCMi4wIEFEU1RlY2gvS3dvcmxkIFVTQjIuMApodHRwOi8vd3d3LmxpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS9kdmItZGlidXNiLWFkc3RlY2gtdXNiMi0xLmZ3Cgpmb3IgVVNCMi4wIEhhbmZUZWsKaHR0cDovL3d3dy5saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvZHZiLWRpYnVzYi1hbjIyMzUtMS5mdwoKCjEuMi4gQ29tcGlsaW5nCgpTaW5jZSB0aGUgZHJpdmVyIGlzIGluIHRoZSBsaW51eCBrZXJuZWwsIGFjdGl2YXRpbmcgdGhlIGRyaXZlciBpbgp5b3VyIGZhdm9yaXRlIGNvbmZpZy1lbnZpcm9ubWVudCBzaG91bGQgc3VmZmljaWVudC4gSSByZWNvbW1lbmQKdG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIG1vZHVsZS4gSG90cGx1ZyBkb2VzIHRoZSByZXN0LgoKMS4zLiBMb2FkaW5nIHRoZSBkcml2ZXJzCgpIb3RwbHVnIGlzIGFibGUgdG8gbG9hZCB0aGUgZHJpdmVyLCB3aGVuIGl0IGlzIG5lZWRlZCAoYmVjYXVzZSB5b3UgcGx1Z2dlZAppbiB0aGUgZGV2aWNlKS4KCklmIHlvdSB3YW50IHRvIGVuYWJsZSBkZWJ1ZyBvdXRwdXQsIHlvdSBoYXZlIHRvIGxvYWQgdGhlIGRyaXZlciBtYW51YWxseSBhbmQKZnJvbSB3aXRoaW5nIHRoZSBkdmIta2VybmVsIGN2cyByZXBvc2l0b3J5LgoKZmlyc3QgaGF2ZSBhIGxvb2ssIHdoaWNoIGRlYnVnIGxldmVsIGFyZSBhdmFpbGFibGU6Cgptb2RpbmZvIGRpYjMwMDBtYgptb2RpbmZvIGRpYjMwMDAtY29tbW9uCm1vZGluZm8gZGliMzAwMG1jCm1vZGluZm8gZHZiLWRpYnVzYgoKbW9kcHJvYmUgZGliMzAwMC1jb21tb24gZGVidWc9PGxldmVsPgptb2Rwcm9iZSBkaWIzMDAwbWIgZGVidWc9PGxldmVsPgptb2Rwcm9iZSBkaWIzMDAwbWMgZGVidWc9PGxldmVsPgptb2Rwcm9iZSBkdmItZGlidXNiIGRlYnVnPTxsZXZlbD4KCnNob3VsZCBkbyB0aGUgdHJpY2suCgpXaGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkIHN1Y2Nlc3NmdWxseSwgdGhlIGZpcm13YXJlIGZpbGUgd2FzIGluCnRoZSByaWdodCBwbGFjZSBhbmQgdGhlIGRldmljZSBpcyBjb25uZWN0ZWQsIHRoZSAiUG93ZXIiLUxFRCBzaG91bGQgYmUKdHVybmVkIG9uLgoKQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQgYSBkdmItY2FwYWJsZSBhcHBsaWNhdGlvbi4gRm9yIG15c2VsZgpJIHVzZWQgbXBsYXllciwgZHZic2NhbiwgdHphcCBhbmQga2F4dHYsIHRoZXkgYXJlIHdvcmtpbmcuIFVzaW5nIHRoZSBkZXZpY2UKaW4gdmRyIGlzIHdvcmtpbmcgbm93IGFsc28uCgoyLiBLbm93biBwcm9ibGVtcyBhbmQgYnVncwoKLSBEb24ndCByZW1vdmUgdGhlIFVTQiBkZXZpY2Ugd2hpbGUgcnVubmluZyBhbiBEVkIgYXBwbGljYXRpb24sIHlvdXIgc3lzdGVtIHdpbGwgZGllLgoKMi4xLiBBZGRpbmcgc3VwcG9ydCBmb3IgZGV2aWNlcwoKSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgZGV2aWNlcyBiYXNlZCBvbiB0aGUgRGlCY29tCnJlZmVyZW5jZSBkZXNpZ25zLiBUaGlzIGlzIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBkZXNpZ24gb2YgRGlCY29tIGNhbiBiZSBzb2xkCnRvIHRoaXJkcywgd2l0aG91dCB0ZWxsaW5nIERpQmNvbSAoc28gZG9uZSB3aXRoIHRoZSBUd2luaGFuIFZQNzA0MSBhbmQKdGhlIEhBTUEgZGV2aWNlKS4KCldoZW4geW91IHRoaW5rIHlvdSBoYXZlIGEgZGV2aWNlIGxpa2UgdGhpcyBhbmQgdGhlIGRyaXZlciBkb2VzIG5vdCByZWNvZ25pemVzIGl0LApwbGVhc2Ugc2VuZCB0aGUgKioqKmxvYWQqLmluZiBhbmQgdGhlICoqKipjYXAqLmluZiBvZiB0aGUgV2luZG93cyBkcml2ZXIgdG8gbWUuCgpTb21ldGltZXMgdGhlIFZlbmRvciBvciBQcm9kdWN0IElEIGlzIGlkZW50aWNhbCB0byB0aGUgb25lcyBvZiBUd2luaGFuLCBldmVuCnRob3VnaCBpdCBpcyBub3QgYSBUd2luaGFuIGRldmljZSAoZS5nLiBIQU1BKSwgdGhlbiBwbGVhc2Ugc2VuZCBtZSB0aGUgbmFtZQpvZiB0aGUgZGV2aWNlLiBJIHdpbGwgYWRkIGl0IHRvIHRoaXMgbGlzdCBpbiBvcmRlciB0byBtYWtlIHRoaXMgY2xlYXIgdG8Kb3RoZXJzLgoKSWYgeW91IGFyZSBmYW1pbGFyIHdpdGggQyB5b3UgY2FuIGFsc28gYWRkIHRoZSBWSUQgYW5kIFBJRCBvZiB0aGUgZGV2aWNlIHRvCnRoZSBkdmItZGlidXNiLWNvcmUuYy1maWxlIGFuZCBjcmVhdGUgYSBwYXRjaCBhbmQgc2VuZCBpdCBvdmVyIHRvIG1lIG9yIHRvCnRoZSBsaW51eC1kdmIgbWFpbGluZyBsaXN0LCBfYWZ0ZXJfIHlvdSBoYXZlIHRyaWVkIGNvbXBpbGluZyBhbmQgbW9kcHJvYmluZwppdC4KCjIuMi4gVVNCMS4xIEJhbmR3aWR0aCBsaW1pdGF0aW9uCgpNb3N0IG9mIHRoZSBjdXJyZW50bHkgc3VwcG9ydGVkIGRldmljZXMgYXJlIFVTQjEuMSBhbmQgdGh1cyB0aGV5IGhhdmUgYQptYXhpbXVtIGJhbmR3aWR0aCBvZiBhYm91dCA1LTYgTUJpdC9zIHdoZW4gY29ubmVjdGVkIHRvIGEgVVNCMi4wIGh1Yi4KVGhpcyBpcyBub3QgZW5vdWdoIGZvciByZWNlaXZpbmcgdGhlIGNvbXBsZXRlIHRyYW5zcG9ydCBzdHJlYW0gb2YgYQpEVkItVCBjaGFubmVsICh3aGljaCBjYW4gYmUgYWJvdXQgMTYgTUJpdC9zKS4gTm9ybWFsbHkgdGhpcyBpcyBub3QgYQpwcm9ibGVtLCBpZiB5b3Ugb25seSB3YW50IHRvIHdhdGNoIFRWICh0aGlzIGRvZXMgbm90IGFwcGx5IGZvciBIRFRWKSwKYnV0IHdhdGNoaW5nIGEgY2hhbm5lbCB3aGlsZSByZWNvcmRpbmcgYW5vdGhlciBjaGFubmVsIG9uIHRoZSBzYW1lCmZyZXF1ZW5jeSBzaW1wbHkgZG9lcyBub3Qgd29yayB2ZXJ5IHdlbGwuIFRoaXMgYXBwbGllcyB0byBhbGwgVVNCMS4xCkRWQi1UIGRldmljZXMsIG5vdCBqdXN0IGRpYnVzYikKClVwZGF0ZTogRm9yIHRoZSBVU0IxLjEgYW5kIFZEUiBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSAocGF0Y2hlcyBhbmQgY29tbWVudHMKYXJlIHN0aWxsIHZlcnkgd2VsY29tZSkuIE1heWJlIHRoZSBwcm9ibGVtIGlzIHNvbHZlZCBpbiB0aGUgbWVhbnRpbWUgYmVjYXVzZSBJCm5vdyB1c2UgdGhlIGRteF9zd19maWx0ZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBkbXhfc3dfZmlsdGVyX3BhY2tldC4gSSBob3BlIHRoZQpsaW51eC1kdmIgc29mdHdhcmUgZmlsdGVyIGlzIGFibGUgdG8gZ2V0IHRoZSBiZXN0IG9mIHRoZSBnYXJibGVkIFRTLgoKVGhlIGJ1Zywgd2hlcmUgdGhlIFRTIGlzIGRpc3RvcnRlZCBieSBhIGhlYXZ5IHVzYWdlIG9mIHRoZSBkZXZpY2UgaXMgZ29uZQpkZWZpbml0ZWx5LiBBbGwgZGlidXNiLWRldmljZXMgSSB3YXMgdXNpbmcgKFR3aW5oYW4sIEt3b3JsZCwgRGlCY29tKSBhcmUKd29ya2luZyBsaWtlIGNoYXJtIG5vdyB3aXRoIFZEUi4gU29tZXRpbWVzIEkgZXZlbiB3YXMgYWJsZSB0byByZWNvcmQgYSBjaGFubmVsCmFuZCB3YXRjaCBhbm90aGVyIG9uZS4KCjIuMy4gQ29tbWVudHMKClBhdGNoZXMsIGNvbW1lbnRzIGFuZCBzdWdnZXN0aW9ucyBhcmUgdmVyeSB2ZXJ5IHdlbGNvbWUuCgozLiBBY2tub3dsZWRnZW1lbnRzCglBbWF1cnkgRGVtb2wgKGFkZW1vbEBkaWJjb20uZnIpIGFuZCBGcmFuY29pcyBLYW5vdW5uaWtvZmYgZnJvbSBEaUJjb20gZm9yCiAgICBwcm92aWRpbmcgc3BlY3MsIGNvZGUgYW5kIGhlbHAsIG9uIHdoaWNoIHRoZSBkdmItZGlidXNiLCBkaWIzMDAwbWIgYW5kCiAgICBkaWIzMDAwbWMgYXJlIGJhc2VkLgoKICAgRGF2aWQgTWF0dGhld3MgZm9yIGlkZW50aWZ5aW5nIGEgbmV3IGRldmljZSB0eXBlIChBcnRlYyBUMSB3aXRoIEFOMjIzNSkKICAgIGFuZCBmb3IgZXh0ZW5kaW5nIGRpYnVzYiB3aXRoIHJlbW90ZSBjb250cm9sIGV2ZW50IGhhbmRsaW5nLiBUaGFuayB5b3UuCgogICBBbGV4IFdvb2RzIGZvciBmcmVxdWVudGx5IGFuc3dlcmluZyBxdWVzdGlvbiBhYm91dCB1c2IgYW5kIGR2YgogICAgc3R1ZmYsIGEgYmlnIHRoYW5rIHlvdS4KCiAgIEJlcm5kIFdhZ25lciBmb3IgaGVscGluZyB3aXRoIGh1Z2UgYnVnIHJlcG9ydHMgYW5kIGRpc2N1c3Npb25zLgoKICAgR3VubmFyIFdpdHRpY2ggYW5kIEpvYWNoaW0gdm9uIENhcm9uIGZvciB0aGVpciB0cnVzdCBmb3IgZ2l2aW5nIG1lCiAgICByb290LXNoZWxscyBvbiB0aGVpciBtYWNoaW5lcyB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgbmV3IGRldmljZXMuCgogICBTb21lIGd1eXMgb24gdGhlIGxpbnV4LWR2YiBtYWlsaW5nIGxpc3QgZm9yIGVuY291cmFnaW5nIG1lCgogICBQZXRlciBTY2hpbGRtYW5uID5wZXRlci5zY2hpbGRtYW5uLW5vc3BhbS1hdC13ZWIuZGU8IGZvciBoaXMKICAgIHVzZXItbGV2ZWwgZmlybXdhcmUgbG9hZGVyLCB3aGljaCBzYXZlcyBhIGxvdCBvZiB0aW1lCiAgICAod2hlbiB3cml0aW5nIHRoZSB2cDcwNDEgZHJpdmVyKQoKICAgVWxmIEhlcm1lbmF1IGZvciBoZWxwaW5nIG1lIG91dCB3aXRoIHRyYWRpdGlvbmFsIGNoaW5lc2UuCgogICBBbmRy6SBTbW9rdHVuIGFuZCBDaHJpc3RpYW4gRnL2bW1lbCBmb3Igc3VwcG9ydGluZyBtZSB3aXRoCiAgICBoYXJkd2FyZSBhbmQgbGlzdGVuaW5nIHRvIG15IHByb2JsZW1zIHZlcnkgcGF0aWVudAo=