PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIHNpbmNlIGZvciBVLUJvb3QgMC4xLjA6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogUGF0Y2ggYnkgSGFucy1Kb2VyZyBGcmllZGVuLCAwNiBEZWMgMjAwMgogIEZpeCBtaXNjIHByb2JsZW1zIHdpdGggQW1pZ2FPbmUgc3VwcG9ydAoKKiBQYXRjaCBieSBDaHJpcyBIYWxsaW5hbiwgMyBEZWMgMjAwMjoKICBtaW5vciBjbGVhbnVwIHRvIHRoZSBNUEM4MjQ1IEVQSUMgZHJpdmVyCgoqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQgLCAyOCBOb3YgMjAwMgogIEFkZCBzdXBwb3J0IGZvciBleHRlcm5hbCAoU0lVKSBpbnRlcnJ1cHRzIG9uIE1QQzh4eAoKKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0ICwgMjggTm92IDIwMDIKICBGaXggbmVzdGVkIHN5c2NhbGxzIGJ1ZyBpbiBzdGFuZGFsb25lIGFwcGxpY2F0aW9ucwoKKiBQYXRjaCBieSBEYXZpZCBN/GxsZXIsIDI3IE5vdiAyMDAyOgogIGZpeCBvdXRwdXQgb2YgInBjaWluZm8iIGNvbW1hbmQgZm9yIENhcmRCdXMgYnJpZGdlIGRldmljZXMuCgoqIEZpeCBidWcgaW4gVFFNODI2MCBib2FyZCBkZXRlY3Rpb24gLSBib2FyZHMgZ290IHN0dWNrIHdoZW4gYm9hcmQgSUQKICB3YXMgbm90IHJlYWRhYmxlCgoqIEFkZCBMRUQgaW5kaWNhdGlvbiBmb3IgSURFIGFjdGl2aXR5IG9uIEtVUDRLIGJvYXJkCgoqIEZpeCBzdGFydHVwIHByb2JsZW1zIHdpdGggVkZEIGRpc3BsYXkgb24gVFJBQgoKKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAyMCBOb3YgMjAwMgogIEFkZCBkcml2ZXIgZm9yIEVwc29uIFNFRDEzODA2IGdyYXBoaWMgY29udHJvbGxlci4KICBBZGQgc3VwcG9ydCBmb3IgQk1QIGxvZ29zIGluIGNmYl9jb25zb2xlIGRyaXZlci4KCiogQWRkZWQgc3VwcG9ydCBmb3IgYm90aCBQQ01DSUEgc2xvdHMgKGF0IHRoZSBzYW1lIHRpbWUhKSBvbiBNUEM4eHgKCiogUGF0Y2ggYnkgUm9kIEJveWNlLCAyMSBOb3YgMjAwMjoKICBmaXggUENNQ0lBIG9uIE1CWDh4eCBib2FyZAoKKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0ICwgMjEgTm92IDIwMDIKICBBZGQgQ0ZHX0NQTV9QT1NUX1dPUkRfQUREUiB0byBtYWtlIHRoZSBvZmZzZXQgb2YgdGhlCiAgYm9vdG1vZGUgd29yZCBpbiBEUFJBTSBjb25maWd1cmFibGUKCiogUGF0Y2ggYnkgRGFuaWVsIEVuZ3N0cvZtLCAxOCBOb3YgMjAwMjoKICBGaXhlcyBmb3IgeDg2IHBvcnQgKG1vc3RseSBzdHJpbmdzIGlzc3VlcykKCiogUGF0Y2ggYnkgS2VuIENob3UsIDE4IE5vdiAyMDAyOgogIEZpeCBmb3IgbmF0c2VtaSBOSUMgY2FyZHMgKERQODM4MTUpCgoqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQsIDE5IE5vdiAyMDAyOgogIGZpeCBhIGJ1ZyBmb3IgdGhlIE1JSSBjb25maWd1cmF0aW9uLCBhbmQgc29tZSB3YXJuaW5ncwoKKiBQYXRjaCBieSBUaG9tYXMgRnJpZWRlbiwgMTMgTm92IDIwMDI6CiAgQWRkIGNvZGUgZm9yIEFtaWdhT25lIGJvYXJkCiAgKHByZWxpbWluYXJ5IG1lcmdlIHRvIFUtQm9vdCwgc3RpbGwgV0lQKQoKKiBQYXRjaCBieSBKb24gRGlla2VtYSwgMTIgTm92IDIwMDI6CiAgLSBBZGRpbmcgVVJMIGZvciBJRUVFIE9VSSBsb29rdXAKICAtIE1ha2luZyB0aGUgYXV0b2Jvb3QgI2RlZmluZXMgZGVwZW5kZW50IG9uIENPTkZJR19BVVRPQk9PVF9LRVlFRAogICAgYmVpbmcgZGVmaW5lZC4KICAtIEluIHRoZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTICNkZWZpbmUsIHRoZSByb290LW9uLWluaXRyZCBhbmQKICAgIHJvb3Qtb24tbmZzIG1hY3JvcyBhcmUgZGVzaWduZWQgdG8gc3dpdGNoIGhvdyB0aGUgZGVmYXVsdCBib290CiAgICBtZXRob2QgZ2V0cyBkZWZpbmVkLgoKKiBQYXRjaCBieSBEYW5pZWwgRW5nc3Ry9m0sIDEzIE5vdiAyMDAyOgogIEFkZCBzdXBwb3J0IGZvciBpMzg2IGFyY2hpdGVjdHVyZSBhbmQgQU1EIFNDNTIwIGJvYXJkCgoqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQsIDEyIE5vdiAyMDAyOgogIEFkZCBzdXBwb3J0IGZvciBET1MgZmlsZXN5c3RlbSBhbmQgYm9vdGluZyBmcm9tIERPUyBmbG9wcHkgZGlzawoKKiBQYXRjaCBieSBKaW0gU2FuZG96LCAwNyBOb3YgMjAwMjoKICBJbmNyZWFzZSBudW1iZXIgb2YgbmV0d29yayBSWCBidWZmZXJzIChQS1RCVUZTUlggaW4KICAiaW5jbHVkZS9uZXQuaCIpIGZvciBFRVBSTzEwMCBiYXNlZCBib2FyZHMgKGVzcGVjaWFsbHkgU1A4MjQwKQogIHdoaWNoIHNob3dlZCAiUmVjZWl2ZXIgaXMgbm90IHJlYWR5IiBlcnJvcnMgd2hlbiBVLUJvb3Qgd2FzCiAgcHJvY2Vzc2luZyB0aGUgcmVjZWl2ZSBidWZmZXJzIHNsb3dlciB0aGFuIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIKICB3YXMgZmlsbGluZyB0aGVtLgoKKiBQYXRjaCBieSBBbmRyZWFzIE9iZXJyaXR0ZXIsIDA5IE5vdiAyMDAyOgogIENoYW5nZSBiZWhhdmlvdXIgb2YgTmV0TG9vcCgpOiByZXR1cm4gLTEgZm9yIGVycm9ycywgZmlsZXNpemUKICBvdGhlcndpc2U7IHJldHVybiBjb2RlIDAgaXMgdmFsaWQgYW4gbWVhbnMgbm8gZmlsZSBsb2FkZWQgLSBpbiB0aGlzCiAgY2FzZSB0aGUgZW52aXJvbm1lbnQgc3RpbGwgZ2V0cyB1cGRhdGVkIQoKKiBQYXRjaGVzIGJ5IEpvbiBEaWVrZW1hLCA5IE5vdiAyMDAyOgogIC0gaW1wcm92ZSBBREMvREFDIGNsb2NraW5nIG9uIHRoZSBTQUNTbmcgYm9hcmQgdG8gYWxpZ24KICAgIHRoZSBmYWlsaW5nIGVkZ2VzIG9mIExSQ0xLIGFuZCBTQ0xLCiAgLSBzYmM4MjYwIGNvbmZpZ3VyYXRpb24gdHdlYWtzCiAgLSBhZGQgc3RhdHVzIExFRCBzdXBwb3J0IGZvciA4Mnh4IHN5c3RlbXMKICAtIHdpcmUgc3NwaS9zc3BvIGNvbW1hbmRzIGludG8gY29tbWFuZCBoYW5kbGVyOyBpbXByb3ZlZCBlcnJvcgogICAgaGFuZGxlcmluZwogIC0gYWRkIHRpbWVzdGFtcCBzdXBwb3J0IGFuZCBhbHRlcm5hdGUgbWVtb3J5IHRlc3QgdG8gdGhlCiAgICBTQUNTbmcgY29uZmlndXJhdGlvbgoKKiBQYXRjaCBieSBWaW5jZSBIdXNvdnNreSwgNyBOb3YgMjAwMjoKICBBZGQgIi1uIiB0byBsaW5rZXIgb3B0aW9ucyB0byBnZXQgcmlkIG9mICJOb3QgZW5vdWdoIHJvb20gZm9yCiAgcHJvZ3JhbSBoZWFkZXJzIiBwcm9ibGVtCgoqIFBhdGNoIGJ5IERhdmlkIE38bGxlciwgMDUgTm92IDIwMDIKICBSZW5hbWUgQ09ORklHX1BMTF9JTlBVVF9GUkVRIHRvIENPTkZJR19TWVNfQ0xLX0ZSRVEKICBzbyB3ZSBjYW4gdXNlIGFuIGFscmVhZHkgZXhpc3RpbmcgbmFtZQoKKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAwNSBOb3YgMjAwMgogIEhhcmR3YXJlIHJlbGF0aWVkIGltcHJvdm1lbnRzIGluIEZEQyBib290IGNvZGUKCiogUGF0Y2ggYnkgSG9sZ2VyIFNjaHVyaWcsIDUgTm92IDIwMDI6CiAgTWFrZSB0aGUgUFhBIHJlYWxseSBjaGFuZ2UgaXQncyBmcmVxdWVuY3kKCiogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMDUgTm92IDIwMDIKICBBZGQgc3VwcG9ydCBmb3Igc2xhdmUgc2VyaWFsIFNwYXJ0YW4gMiBGUEdBcwoKKiBGaXggdW5pbml0aWFsaXplZCBtZW1vcnkgKE1BQyAgYWRkcmVzcykgIGluICA4eHggIFNDQy9GRUMgIGV0aGVybmV0CiAgZHJpdmVycwoKKiBBZGQgc3VwcG9ydCBmb3IgbG9nIGJ1ZmZlciB3aGljaCBjYW4gYmUgcGFzc2VkIHRvIExpbnV4IGtlcm5lbCdzCiAgc3lzbG9nIG1lY2hhbmlzbTsgdXNlZCBlc3BlY2lhbGx5IGZvciBQT1NUIHJlc3VsdHMuCgoqIFBhdGNoIGJ5IEtsYXVzIEhleWRlY2ssIDMxIE9jdCAyMDAyOgogIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIGt1cDRrIGJvYXJkCgoqIFBhdGNoIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMDQgTm92IDIwMDI6CiAgLSB1c2Ugd2F0Y2hkb2cgdG8gcmVzZXQgUFhBMjUwIHN5c3RlbXMKICAtIGFkZGVkIHByb2dyZXNzIGNhbGxiYWNrcyB0byAoc29tZSBvZiB0aGUpIEFSTSBjb2RlCiAgLSB1cGRhdGUgZm9yIENvZ2VudCBDU0IyMjYgYm9hcmQKCiogQWRkIHN1cHBvcnQgZm9yIEZQUzg2MCBib2FyZAoKKiBQYXRjaCBieSBHdWlsbGF1bWUgQWxleGFuZHJlLCwgMDQgTm92IDIwMDI6CiAgSW1wcm92ZSBQQ0kgYWNjZXNzIG9uIDMyLWJpdHMgQ29tcGFjdCBQQ0kgYnVzCgoqIEZpeCBtZGVsYXkoKSBvbiBUUkFCIC0gdGhpcyB3YXMgc3RpbGwgdGhlIGRlYnVnZ2luZyB2ZXJzaW9uIHdpdGgKICBzZWNvbmRzIGluc3RlYWQgb2YgbXMuCgoqIFBhdGNoIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMSBOb3YgMjAwMjoKICBYU2NhbGUgcmVsYXRlZCBjbGVhbnVwIChhZmZlY3RzIGFsbCBBUk0gYm9hcmRzKQoKKiBDbGVhbnVwIG9mIG5hbWVzIGFuZCBSRUFETUUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck5vdGVzIGZvciBVLUJvb3QgMC4xLjA6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgaXMgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiAiRGFzIFUtQm9vdCIsIHRoZSBVbml2ZXJzYWwgQm9vdCBMb2FkZXIuCgpJdCBpcyBiYXNlZCBvbiB2ZXJzaW9uIDIuMC4wICh0aGUgIkhhbGxvd2VlbiBSZWxlYXNlIikgb2YgUFBDQm9vdC4KRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0IHBsZWFzZSBzZWUgdGhlClBQQ0Jvb3QgcHJvamVjdCBwYWdlIGF0IGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvcHBjYm9vdAoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo=