LyoKICogQ29weXJpZ2h0IDIwMDAgUGV0ZXIgSXZhbnlpCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJ3aW5kZWYuaCIKI2luY2x1ZGUgIm1tZGRrLmgiCgpMQU5HVUFHRSBMQU5HX1NMT1ZBSywgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRQpCRUdJTgoKLyogTU1TWVMgZXJyb3JzICovCk1NU1lTRVJSX05PRVJST1IsIAkJIopwZWNpZmlrb3Zhbv0gcHLta2F6IGJvbCB2eWtvbmFu/S4iCk1NU1lTRVJSX0VSUk9SLCAJCSJOZWRlZmlub3ZhbuEgZXh0ZXJu4SBjaHliYS4iCk1NU1lTRVJSX0JBRERFVklDRUlELCAJCSJBIGRldmljZSBJRCBoYXMgYmVlbiB1c2VkIHRoYXQgaXMgb3V0IG9mIHJhbmdlIGZvciB5b3VyIHN5c3RlbS4iCk1NU1lTRVJSX05PVEVOQUJMRUQsIAkJIlRoZSBkcml2ZXIgd2FzIG5vdCBlbmFibGVkLiIKTU1TWVNFUlJfQUxMT0NBVEVELCAJCSJUaGUgc3BlY2lmaWVkIGRldmljZSBpcyBhbHJlYWR5IGluIHVzZS4gV2FpdCB1bnRpbCBpdCBpcyBmcmVlLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNTVNZU0VSUl9JTlZBTEhBTkRMRSwgCQkiVGhlIHNwZWNpZmllZCBkZXZpY2UgaGFuZGxlIGlzIGludmFsaWQuIgpNTVNZU0VSUl9OT0RSSVZFUiwgCQkiVGhlcmUgaXMgbm8gZHJpdmVyIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSAhXG4iCk1NU1lTRVJSX05PTUVNLCAJCSJOb3QgZW5vdWdoIG1lbW9yeSBhdmFpbGFibGUgZm9yIHRoaXMgdGFzay4gUXVpdCBvbmUgb3IgbW9yZSBhcHBsaWNhdGlvbnMgdG8gaW5jcmVhc2UgYXZhaWxhYmxlIG1lbW9yeSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTU1TWVNFUlJfTk9UU1VQUE9SVEVELCAJCSJUaGlzIGZ1bmN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSB0aGUgQ2FwYWJpbGl0aWVzIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGljaCBmdW5jdGlvbnMgYW5kIG1lc3NhZ2VzIHRoZSBkcml2ZXIgc3VwcG9ydHMuIgpNTVNZU0VSUl9CQURFUlJOVU0sIAkJIkFuIGVycm9yIG51bWJlciB3YXMgc3BlY2lmaWVkIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gdGhlIHN5c3RlbS4iCk1NU1lTRVJSX0lOVkFMRkxBRywgCQkiQW4gaW52YWxpZCBmbGFnIHdhcyBwYXNzZWQgdG8gYSBzeXN0ZW0gZnVuY3Rpb24uIgpNTVNZU0VSUl9JTlZBTFBBUkFNLCAJCSJBbiBpbnZhbGlkIHBhcmFtZXRlciB3YXMgcGFzc2VkIHRvIGEgc3lzdGVtIGZ1bmN0aW9uLiIKCi8qIFdBVkUgZXJyb3JzICovCldBVkVSUl9CQURGT1JNQVQsIAkJIlRoZSBzcGVjaWZpZWQgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQgb3IgY2Fubm90IGJlIHRyYW5zbGF0ZWQuIFVzZSB0aGUgQ2FwYWJpbGl0aWVzIGZ1bmN0aW9uIHRvIGRldGVybWluZSB0aGUgc3VwcG9ydGVkIGZvcm1hdHMiCldBVkVSUl9TVElMTFBMQVlJTkcsIAkJIkNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIHdoaWxlIG1lZGlhIGRhdGEgaXMgc3RpbGwgcGxheWluZy4gUmVzZXQgdGhlIGRldmljZSwgb3Igd2FpdCB1bnRpbCB0aGUgZGF0YSBpcyBmaW5pc2hlZCBwbGF5aW5nLiIKV0FWRVJSX1VOUFJFUEFSRUQsIAkJIlRoZSB3YXZlIGhlYWRlciB3YXMgbm90IHByZXBhcmVkLiBVc2UgdGhlIFByZXBhcmUgZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgaGVhZGVyLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpXQVZFUlJfU1lOQywgCQkJIkNhbm5vdCBvcGVuIHRoZSBkZXZpY2Ugd2l0aG91dCB1c2luZyB0aGUgV0FWRV9BTExPV1NZTkMgZmxhZy4gVXNlIHRoZSBmbGFnLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgoKLyogTUlESSBlcnJvcnMgKi8KTUlESUVSUl9VTlBSRVBBUkVELCAJCSJUaGUgTUlESSBoZWFkZXIgd2FzIG5vdCBwcmVwYXJlZC4gVXNlIHRoZSBQcmVwYXJlIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIGhlYWRlciwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUlESUVSUl9TVElMTFBMQVlJTkcsIAkJIkNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIHdoaWxlIG1lZGlhIGRhdGEgaXMgc3RpbGwgcGxheWluZy4gUmVzZXQgdGhlIGRldmljZSwgb3Igd2FpdCB1bnRpbCB0aGUgZGF0YSBpcyBmaW5pc2hlZCBwbGF5aW5nLiIKTUlESUVSUl9OT01BUCwgCQkJIkEgTUlESSBtYXAgd2FzIG5vdCBmb3VuZC4gVGhlcmUgbWF5IGJlIGEgcHJvYmxlbSB3aXRoIHRoZSBkcml2ZXIsIG9yIHRoZSBNSURJTUFQLkNGRyBmaWxlIG1heSBiZSBjb3JydXB0IG9yIG1pc3NpbmcuIgpNSURJRVJSX05PVFJFQURZLCAJCSJUaGUgcG9ydCBpcyB0cmFuc21pdHRpbmcgZGF0YSB0byB0aGUgZGV2aWNlLiBXYWl0IHVudGlsIHRoZSBkYXRhIGhhcyBiZWVuIHRyYW5zbWl0dGVkLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNSURJRVJSX05PREVWSUNFLCAJCSJUaGUgY3VycmVudCBNSURJIE1hcHBlciBzZXR1cCByZWZlcnMgdG8gYSBNSURJIGRldmljZSB0aGF0IGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4gVXNlIE1JREkgTWFwcGVyIHRvIGVkaXQgdGhlIHNldHVwLiIKTUlESUVSUl9JTlZBTElEU0VUVVAsIAkJIlRoZSBjdXJyZW50IE1JREkgc2V0dXAgaXMgZGFtYWdlZC4gQ29weSB0aGUgb3JpZ2luYWwgTUlESU1BUC5DRkcgZmlsZSB0byB0aGUgV2luZG93cyBTWVNURU0gZGlyZWN0b3J5LCBhbmQgdGhlbiB0cnkgYWdhaW4uIgoKLyogTUNJIGVycm9ycyAqLwpNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfSUQsIAkiSW52YWxpZCBNQ0kgZGV2aWNlIElELiBVc2UgdGhlIElEIHJldHVybmVkIHdoZW4gb3BlbmluZyB0aGUgTUNJIGRldmljZS4iCk1DSUVSUl9VTlJFQ09HTklaRURfS0VZV09SRCwgCSJUaGUgZHJpdmVyIGNhbm5vdCByZWNvZ25pemUgdGhlIHNwZWNpZmllZCBjb21tYW5kIHBhcmFtZXRlci4iCk1DSUVSUl9VTlJFQ09HTklaRURfQ09NTUFORCwJIlRoZSBkcml2ZXIgY2Fubm90IHJlY29nbml6ZSB0aGUgc3BlY2lmaWVkIGNvbW1hbmQuIgpNQ0lFUlJfSEFSRFdBUkUsIAkJIlRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHlvdXIgbWVkaWEgZGV2aWNlLiBNYWtlIHN1cmUgaXQgaXMgd29ya2luZyBjb3JyZWN0bHkgb3IgY29udGFjdCB0aGUgZGV2aWNlIG1hbnVmYWN0dXJlci4iCk1DSUVSUl9JTlZBTElEX0RFVklDRV9OQU1FLCAJIlRoZSBzcGVjaWZpZWQgZGV2aWNlIGlzIG5vdCBvcGVuIG9yIGlzIG5vdCByZWNvZ25pemVkIGJ5IE1DSS4iCk1DSUVSUl9PVVRfT0ZfTUVNT1JZLCAJCSJOb3QgZW5vdWdoIG1lbW9yeSBhdmFpbGFibGUgZm9yIHRoaXMgdGFzay5cblF1aXQgb25lIG9yIG1vcmUgYXBwbGljYXRpb25zIHRvIGluY3JlYXNlIGF2YWlsYWJsZSBtZW1vcnksIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9ERVZJQ0VfT1BFTiwgCQkiVGhlIGRldmljZSBuYW1lIGlzIGFscmVhZHkgYmVpbmcgdXNlZCBhcyBhbiBhbGlhcyBieSB0aGlzIGFwcGxpY2F0aW9uLiBVc2UgYSB1bmlxdWUgYWxpYXMuIgpNQ0lFUlJfQ0FOTk9UX0xPQURfRFJJVkVSLCAJIlRoZXJlIGlzIGFuIHVuZGV0ZWN0YWJsZSBwcm9ibGVtIGluIGxvYWRpbmcgdGhlIHNwZWNpZmllZCBkZXZpY2UgZHJpdmVyLiIKTUNJRVJSX01JU1NJTkdfQ09NTUFORF9TVFJJTkcsIAkiTmVib2wgmnBlY2lmaWtvdmFu/SCeaWFkbnkgcHLta2F6LiIKTUNJRVJSX1BBUkFNX09WRVJGTE9XLCAJCSJUaGUgb3V0cHV0IHN0cmluZyB3YXMgdG8gbGFyZ2UgdG8gZml0IGluIHRoZSByZXR1cm4gYnVmZmVyLiBJbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLiIKTUNJRVJSX01JU1NJTkdfU1RSSU5HX0FSR1VNRU5ULCAiVGhlIHNwZWNpZmllZCBjb21tYW5kIHJlcXVpcmVzIGEgY2hhcmFjdGVyLXN0cmluZyBwYXJhbWV0ZXIuIFBsZWFzZSBwcm92aWRlIG9uZS4iCk1DSUVSUl9CQURfSU5URUdFUiwgCQkiVGhlIHNwZWNpZmllZCBpbnRlZ2VyIGlzIGludmFsaWQgZm9yIHRoaXMgY29tbWFuZC4iCk1DSUVSUl9QQVJTRVJfSU5URVJOQUwsIAkiVGhlIGRldmljZSBkcml2ZXIgcmV0dXJuZWQgYW4gaW52YWxpZCByZXR1cm4gdHlwZS4gQ2hlY2sgd2l0aCB0aGUgZGV2aWNlIG1hbnVmYWN0dXJlciBhYm91dCBvYnRhaW5pbmcgYSBuZXcgZHJpdmVyLiIKTUNJRVJSX0RSSVZFUl9JTlRFUk5BTCwgCSJUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgZGV2aWNlIGRyaXZlci4gQ2hlY2sgd2l0aCB0aGUgZGV2aWNlIG1hbnVmYWN0dXJlciBhYm91dCBvYnRhaW5pbmcgYSBuZXcgZHJpdmVyLiIKTUNJRVJSX01JU1NJTkdfUEFSQU1FVEVSLCAJIlRoZSBzcGVjaWZpZWQgY29tbWFuZCByZXF1aXJlcyBhIHBhcmFtZXRlci4gUGxlYXNlIHN1cHBseSBvbmUuIgpNQ0lFUlJfVU5TVVBQT1JURURfRlVOQ1RJT04sIAkiVGhlIE1DSSBkZXZpY2UgeW91IGFyZSB1c2luZyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBzcGVjaWZpZWQgY29tbWFuZC4iCk1DSUVSUl9GSUxFX05PVF9GT1VORCwgCQkiQ2Fubm90IGZpbmQgdGhlIHNwZWNpZmllZCBmaWxlLiBNYWtlIHN1cmUgdGhlIHBhdGggYW5kIGZpbGVuYW1lIGFyZSBjb3JyZWN0LiIKTUNJRVJSX0RFVklDRV9OT1RfUkVBRFksIAkiT3Zs4WRh6CB6YXJpYWRlbmlhIG5pZSBqZSBwcmlwcmF2ZW79LiIKTUNJRVJSX0lOVEVSTkFMLCAJCSJBIHByb2JsZW0gb2NjdXJyZWQgaW4gaW5pdGlhbGl6aW5nIE1DSS4gVHJ5IHJlc3RhcnRpbmcgV2luZG93cy4iCk1DSUVSUl9EUklWRVIsIAkJCSJUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgZGV2aWNlIGRyaXZlci4gVGhlIGRyaXZlciBoYXMgY2xvc2VkLiBDYW5ub3QgYWNjZXNzIGVycm9yLiIKTUNJRVJSX0NBTk5PVF9VU0VfQUxMLCAJCSJDYW5ub3QgdXNlICdhbGwnIGFzIHRoZSBkZXZpY2UgbmFtZSB3aXRoIHRoZSBzcGVjaWZpZWQgY29tbWFuZC4iCk1DSUVSUl9NVUxUSVBMRSwgCQkiRXJyb3JzIG9jY3VycmVkIGluIG1vcmUgdGhhbiBvbmUgZGV2aWNlLiBTcGVjaWZ5IGVhY2ggY29tbWFuZCBhbmQgZGV2aWNlIHNlcGFyYXRlbHkgdG8gZGV0ZXJtaW5lIHdoaWNoIGRldmljZXMgY2F1c2VkIHRoZSBlcnJvciIKTUNJRVJSX0VYVEVOU0lPTl9OT1RfRk9VTkQsIAkiQ2Fubm90IGRldGVybWluZSB0aGUgZGV2aWNlIHR5cGUgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5hbWUgZXh0ZW5zaW9uLiIKTUNJRVJSX09VVE9GUkFOR0UsIAkJIlRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyIGlzIG91dCBvZiByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBjb21tYW5kLiIKTUNJRVJSX0ZMQUdTX05PVF9DT01QQVRJQkxFLCAJIlRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4iCk1DSUVSUl9GSUxFX05PVF9TQVZFRCwgCQkiQ2Fubm90IHNhdmUgdGhlIHNwZWNpZmllZCBmaWxlLiBNYWtlIHN1cmUgeW91IGhhdmUgZW5vdWdoIGRpc2sgc3BhY2Ugb3IgYXJlIHN0aWxsIGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4iCk1DSUVSUl9ERVZJQ0VfVFlQRV9SRVFVSVJFRCwgCSJDYW5ub3QgZmluZCB0aGUgc3BlY2lmaWVkIGRldmljZS4gTWFrZSBzdXJlIGl0IGlzIGluc3RhbGxlZCBvciB0aGF0IHRoZSBkZXZpY2UgbmFtZSBpcyBzcGVsbGVkIGNvcnJlY3RseS4iCk1DSUVSUl9ERVZJQ0VfTE9DS0VELCAJCSJUaGUgc3BlY2lmaWVkIGRldmljZSBpcyBub3cgYmVpbmcgY2xvc2VkLiBXYWl0IGEgZmV3IHNlY29uZHMsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9EVVBMSUNBVEVfQUxJQVMsIAkiVGhlIHNwZWNpZmllZCBhbGlhcyBpcyBhbHJlYWR5IGJlaW5nIHVzZWQgaW4gdGhpcyBhcHBsaWNhdGlvbi4gVXNlIGEgdW5pcXVlIGFsaWFzLiIKTUNJRVJSX0JBRF9DT05TVEFOVCwgCQkiVGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIgaXMgaW52YWxpZCBmb3IgdGhpcyBjb21tYW5kLiIKTUNJRVJSX01VU1RfVVNFX1NIQVJFQUJMRSwgCSJUaGUgZGV2aWNlIGRyaXZlciBpcyBhbHJlYWR5IGluIHVzZS4gVG8gc2hhcmUgaXQsIHVzZSB0aGUgJ3NoYXJlYWJsZScgcGFyYW1ldGVyIHdpdGggZWFjaCAnb3BlbicgY29tbWFuZC4iCk1DSUVSUl9NSVNTSU5HX0RFVklDRV9OQU1FLCAJIlRoZSBzcGVjaWZpZWQgY29tbWFuZCByZXF1aXJlcyBhbiBhbGlhcywgZmlsZSwgZHJpdmVyLCBvciBkZXZpY2UgbmFtZS4gUGxlYXNlIHN1cHBseSBvbmUuIgpNQ0lFUlJfQkFEX1RJTUVfRk9STUFULCAJIlRoZSBzcGVjaWZpZWQgdmFsdWUgZm9yIHRoZSB0aW1lIGZvcm1hdCBpcyBpbnZhbGlkLiBSZWZlciB0byB0aGUgTUNJIGRvY3VtZW50YXRpb24gZm9yIHZhbGlkIGZvcm1hdHMuIgpNQ0lFUlJfTk9fQ0xPU0lOR19RVU9URSwgCSJBIGNsb3NpbmcgZG91YmxlLXF1b3RhdGlvbiBtYXJrIGlzIG1pc3NpbmcgZnJvbSB0aGUgcGFyYW1ldGVyIHZhbHVlLiBQbGVhc2Ugc3VwcGx5IG9uZS4iCk1DSUVSUl9EVVBMSUNBVEVfRkxBR1MsIAkiQSBwYXJhbWV0ZXIgb3IgdmFsdWUgd2FzIHNwZWNpZmllZCB0d2ljZS4gT25seSBzcGVjaWZ5IGl0IG9uY2UuIgpNQ0lFUlJfSU5WQUxJRF9GSUxFLCAJCSJUaGUgc3BlY2lmaWVkIGZpbGUgY2Fubm90IGJlIHBsYXllZCBvbiB0aGUgc3BlY2lmaWVkIE1DSSBkZXZpY2UuIFRoZSBmaWxlIG1heSBiZSBjb3JydXB0LCBvciBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LiIKTUNJRVJSX05VTExfUEFSQU1FVEVSX0JMT0NLLCAJIkEgbnVsbCBwYXJhbWV0ZXIgYmxvY2sgd2FzIHBhc3NlZCB0byBNQ0kuIgpNQ0lFUlJfVU5OQU1FRF9SRVNPVVJDRSwgCSJDYW5ub3Qgc2F2ZSBhbiB1bm5hbWVkIGZpbGUuIFN1cHBseSBhIGZpbGVuYW1lLiIKTUNJRVJSX05FV19SRVFVSVJFU19BTElBUywgCSJZb3UgbXVzdCBzcGVjaWZ5IGFuIGFsaWFzIHdoZW4gdXNpbmcgdGhlICduZXcnIHBhcmFtZXRlci4iCk1DSUVSUl9OT1RJRllfT05fQVVUT19PUEVOLCAJIkNhbm5vdCB1c2UgdGhlICdub3RpZnknIGZsYWcgd2l0aCBhdXRvLW9wZW5lZCBkZXZpY2VzLiIKTUNJRVJSX05PX0VMRU1FTlRfQUxMT1dFRCwgCSJDYW5ub3QgdXNlIGEgZmlsZW5hbWUgd2l0aCB0aGUgc3BlY2lmaWVkIGRldmljZS4iCk1DSUVSUl9OT05BUFBMSUNBQkxFX0ZVTkNUSU9OLCAJIkNhbm5vdCBjYXJyeSBvdXQgdGhlIGNvbW1hbmRzIGluIHRoZSBvcmRlciBzcGVjaWZpZWQuIENvcnJlY3QgdGhlIGNvbW1hbmQgc2VxdWVuY2UsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9JTExFR0FMX0ZPUl9BVVRPX09QRU4sIAkiQ2Fubm90IGNhcnJ5IG91dCB0aGUgc3BlY2lmaWVkIGNvbW1hbmQgb24gYW4gYXV0by1vcGVuZWQgZGV2aWNlLiBXYWl0IHVudGlsIHRoZSBkZXZpY2UgaXMgY2xvc2VkLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfRklMRU5BTUVfUkVRVUlSRUQsIAkiVGhlIGZpbGVuYW1lIGlzIGludmFsaWQuIE1ha2Ugc3VyZSB0aGUgZmlsZW5hbWUgaXMgbm90IGxvbmdlciB0aGFuIDggY2hhcmFjdGVycywgZm9sbG93ZWQgYnkgYSBwZXJpb2QgYW5kIGFuIGV4dGVuc2lvbi4iCk1DSUVSUl9FWFRSQV9DSEFSQUNURVJTLCAJIkNhbm5vdCBzcGVjaWZ5IGV4dHJhIGNoYXJhY3RlcnMgYWZ0ZXIgYSBzdHJpbmcgZW5jbG9zZWQgaW4gcXVvdGF0aW9uIG1hcmtzLiIKTUNJRVJSX0RFVklDRV9OT1RfSU5TVEFMTEVELCAJIlRoZSBzcGVjaWZpZWQgZGV2aWNlIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4gVXNlIHRoZSBEcml2ZXJzIG9wdGlvbiBpbiBDb250cm9sIFBhbmVsIHRvIGluc3RhbGwgdGhlIGRldmljZS4iCk1DSUVSUl9HRVRfQ0QsIAkJCSJDYW5ub3QgYWNjZXNzIHRoZSBzcGVjaWZpZWQgZmlsZSBvciBNQ0kgZGV2aWNlLiBUcnkgY2hhbmdpbmcgZGlyZWN0b3JpZXMgb3IgcmVzdGFydGluZyB5b3VyIGNvbXB1dGVyLiIKTUNJRVJSX1NFVF9DRCwgCQkJIkNhbm5vdCBhY2Nlc3MgdGhlIHNwZWNpZmllZCBmaWxlIG9yIE1DSSBkZXZpY2UgYmVjYXVzZSB0aGUgYXBwbGljYXRpb24gY2Fubm90IGNoYW5nZSBkaXJlY3Rvcmllcy4iCk1DSUVSUl9TRVRfRFJJVkUsIAkJIkNhbm5vdCBhY2Nlc3Mgc3BlY2lmaWVkIGZpbGUgb3IgTUNJIGRldmljZSBiZWNhdXNlIHRoZSBhcHBsaWNhdGlvbiBjYW5ub3QgY2hhbmdlIGRyaXZlcy4iCk1DSUVSUl9ERVZJQ0VfTEVOR1RILCAJCSJTcGVjaWZ5IGEgZGV2aWNlIG9yIGRyaXZlciBuYW1lIHRoYXQgaXMgbGVzcyB0aGFuIDc5IGNoYXJhY3RlcnMuIgpNQ0lFUlJfREVWSUNFX09SRF9MRU5HVEgsIAkiU3BlY2lmeSBhIGRldmljZSBvciBkcml2ZXIgbmFtZSB0aGF0IGlzIGxlc3MgdGhhbiA2OSBjaGFyYWN0ZXJzLiIKTUNJRVJSX05PX0lOVEVHRVIsIAkJIlRoZSBzcGVjaWZpZWQgY29tbWFuZCByZXF1aXJlcyBhbiBpbnRlZ2VyIHBhcmFtZXRlci4gUGxlYXNlIHByb3ZpZGUgb25lLiIKTUNJRVJSX1dBVkVfT1VUUFVUU0lOVVNFLCAJIkFsbCB3YXZlIGRldmljZXMgdGhhdCBjYW4gcGxheSBmaWxlcyBpbiB0aGUgY3VycmVudCBmb3JtYXQgYXJlIGluIHVzZS4gV2FpdCB1bnRpbCBhIHdhdmUgZGV2aWNlIGlzIGZyZWUsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9XQVZFX1NFVE9VVFBVVElOVVNFLCAJIkNhbm5vdCBzZXQgdGhlIGN1cnJlbnQgd2F2ZSBkZXZpY2UgZm9yIHBsYXkgYmFjayBiZWNhdXNlIGl0IGlzIGluIHVzZS4gV2FpdCB1bnRpbCB0aGUgZGV2aWNlIGlzIGZyZWUsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9XQVZFX0lOUFVUU0lOVVNFLCAJIkFsbCB3YXZlIGRldmljZXMgdGhhdCBjYW4gcmVjb3JkIGZpbGVzIGluIHRoZSBjdXJyZW50IGZvcm1hdCBhcmUgaW4gdXNlLiBXYWl0IHVudGlsIGEgd2F2ZSBkZXZpY2UgaXMgZnJlZSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX1dBVkVfU0VUSU5QVVRJTlVTRSwgCSJDYW5ub3Qgc2V0IHRoZSBjdXJyZW50IHdhdmUgZGV2aWNlIGZvciByZWNvcmRpbmcgYmVjYXVzZSBpdCBpcyBpbiB1c2UuIFdhaXQgdW50aWwgdGhlIGRldmljZSBpcyBmcmVlLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfV0FWRV9PVVRQVVRVTlNQRUNJRklFRCwJIkFueSBjb21wYXRpYmxlIHdhdmVmb3JtIHBsYXliYWNrIGRldmljZSBtYXkgYmUgdXNlZC4iCk1DSUVSUl9XQVZFX0lOUFVUVU5TUEVDSUZJRUQsIAkiQW55IGNvbXBhdGlibGUgd2F2ZWZvcm0gcmVjb3JkaW5nIGRldmljZSBtYXkgYmUgdXNlZC4iCk1DSUVSUl9XQVZFX09VVFBVVFNVTlNVSVRBQkxFLCAJIk5vIHdhdmUgZGV2aWNlIHRoYXQgY2FuIHBsYXkgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZm9ybWF0IGlzIGluc3RhbGxlZC4gVXNlIHRoZSBEcml2ZXJzIG9wdGlvbiB0byBpbnN0YWxsIHRoZSB3YXZlIGRldmljZS4iCk1DSUVSUl9XQVZFX1NFVE9VVFBVVFVOU1VJVEFCTEUsIlRoZSBkZXZpY2UgeW91IGFyZSB0cnlpbmcgdG8gcGxheSB0byBjYW5ub3QgcmVjb2duaXplIHRoZSBjdXJyZW50IGZpbGUgZm9ybWF0LiIKTUNJRVJSX1dBVkVfSU5QVVRTVU5TVUlUQUJMRSwgCSJObyB3YXZlIGRldmljZSB0aGF0IGNhbiByZWNvcmQgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZm9ybWF0IGlzIGluc3RhbGxlZC4gVXNlIHRoZSBEcml2ZXJzIG9wdGlvbiB0byBpbnN0YWxsIHRoZSB3YXZlIGRldmljZS4iCk1DSUVSUl9XQVZFX1NFVElOUFVUVU5TVUlUQUJMRSwgIlRoZSBkZXZpY2UgeW91IGFyZSB0cnlpbmcgdG8gcmVjb3JkIGZyb20gY2Fubm90IHJlY29nbml6ZSB0aGUgY3VycmVudCBmaWxlIGZvcm1hdC4iCk1DSUVSUl9OT19XSU5ET1csIAkJIlRoZXJlIGlzIG5vIGRpc3BsYXkgd2luZG93LiIKTUNJRVJSX0NSRUFURVdJTkRPVywgCQkiTmVt9J5lbSB2eXR2b3JpnSBhbGVibyBwb3WeaZ0gb2tuby4iCk1DSUVSUl9GSUxFX1JFQUQsIAkJIkNhbm5vdCByZWFkIHRoZSBzcGVjaWZpZWQgZmlsZS4gTWFrZSBzdXJlIHRoZSBmaWxlIGlzIHN0aWxsIHByZXNlbnQsIG9yIGNoZWNrIHlvdXIgZGlzayBvciBuZXR3b3JrIGNvbm5lY3Rpb24uIgpNQ0lFUlJfRklMRV9XUklURSwgCQkiQ2Fubm90IHdyaXRlIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gTWFrZSBzdXJlIHlvdSBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIG9yIGFyZSBzdGlsbCBjb25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuIgpNQ0lFUlJfU0VRX0RJVl9JTkNPTVBBVElCTEUsIAkiVGhlIHRpbWUgZm9ybWF0cyBvZiB0aGUgIiJzb25nIHBvaW50ZXIiIiBhbmQgU01QVEUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gWW91IGNhbid0IHVzZSB0aGVtIHRvZ2V0aGVyLiIKTUNJRVJSX1NFUV9OT01JRElQUkVTRU5ULCAJIlRoZSBzeXN0ZW0gaGFzIG5vIGluc3RhbGxlZCBNSURJIGRldmljZXMuIFVzZSB0aGUgRHJpdmVycyBvcHRpb24gZnJvbSB0aGUgQ29udHJvbCBQYW5lbCB0byBpbnN0YWxsIGEgTUlESSBkcml2ZXIuIgpNQ0lFUlJfU0VRX1BPUlRfSU5VU0UsIAkJIlRoZSBzcGVjaWZpZWQgTUlESSBwb3J0IGlzIGFscmVhZHkgaW4gdXNlLiBXYWl0IHVudGlsIGl0IGlzIGZyZWU7IHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX1NFUV9QT1JUX01BUE5PREVWSUNFLCAJIlRoZSBjdXJyZW50IE1JREkgTWFwcGVyIHNldHVwIHJlZmVycyB0byBhIE1JREkgZGV2aWNlIHRoYXQgaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLiBVc2UgdGhlIE1JREkgTWFwcGVyIG9wdGlvbiBmcm9tIHRoZSBDb250cm9sIFBhbmVsIHRvIGVkaXQgdGhlIHNldHVwLiIKTUNJRVJSX1NFUV9QT1JUX01JU0NFUlJPUiwgCSJBbiBlcnJvciBvY2N1cnJlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcG9ydC4iCk1DSUVSUl9TRVFfUE9SVF9OT05FWElTVEVOVCwgCSJUaGUgc3BlY2lmaWVkIE1JREkgZGV2aWNlIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4gVXNlIHRoZSBEcml2ZXJzIG9wdGlvbiBmcm9tIHRoZSBDb250cm9sIFBhbmVsIHRvIGluc3RhbGwgYSBNSURJIGRldmljZS4iCk1DSUVSUl9TRVFfUE9SVFVOU1BFQ0lGSUVELCAJIlRoZSBzeXN0ZW0gZG9lc25vdCBoYXZlIGEgY3VycmVudCBNSURJIHBvcnQgc3BlY2lmaWVkLiIKTUNJRVJSX1NFUV9USU1FUiwgCQkiQWxsIG11bHRpbWVkaWEgdGltZXJzIGFyZSBiZWluZyB1c2VkIGJ5IG90aGVyIGFwcGxpY2F0aW9ucy4gUXVpdCBvbmUgb2YgdGhlc2UgYXBwbGljYXRpb25zOyB0aGVuLCB0cnkgYWdhaW4uIgoKRU5ECg==