SENVNSBjb25maWd1cmF0aW9uIGRldGFpbHMgYW5kIHN0YXJ0dXAgc2VxdWVuY2UKCihDKSBDb3B5cmlnaHQgMjAwNyBOZXRzdGFsIE1hc2NoaW5lbiBBRwogICAgTmlrbGF1cyBHaWdlciAoTmlrbGF1cy5HaWdlckBuZXRzdGFsLmNvbSkKClRPRE86Ci0tLS0tCi0gRml4IGVycm9yOiBXYWl0aW5nIGZvciBQSFkgYXV0byBuZWdvdGlhdGlvbiB0byBjb21wbGV0ZS4uLi4uIFRJTUVPVVQgIQogICAgIC0gRG9lcyBub3Qgb2NjdXIgaWYgYm90aCBFTUFDIGFyZSBjb25uZWN0ZWQKLSBGaXggUlRTL0NUUyBwcm9ibGVtIChIVz8pCiAgQ09ORklHX1NFUklBTF9NVUxUSS9DT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gaGFuZ3MgYWZ0ZXIKICBTd2l0Y2hpbmcgdG8gaW50ZXJydXB0IGRyaXZlbiBzZXJpYWwgaW5wdXQgbW9kZQoKQ2F2ZWF0czoKLS0tLS0tLS0KRXJyYXRhIENISVBfODogSW5jb3JyZWN0IFdyaXRlIHRvIEREUiBTRFJBTS4gKHdhcyBub3QgYXBwbGllZCB0byBzZXF1b2lhLmMpCnNlZSBoY3U1LmMuCgoKTWVtb3J5IEJhbmsgMCAtLSBGbGFzaCBjaGlwCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMHhmZmYwMDAwMCAtIDB4ZmZmZmZmZmYKClRoZSBmbGFzaCBjaGlwIGlzIHJlYWxseSBvbmx5IDUxMktieXRlcywgYnV0IHRoZSBoaWdoIGFkZHJlc3MgYml0IG9mCnRoZSAxTWVnIHJlZ2lvbiBpcyBpZ25vcmVkLCBzbyB0aGUgZmxhc2ggaXMgcmVwbGljYXRlZCB0aHJvdWdoIHRoZQpyZWdpb24uIFRodXMsIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGEgZmxhc2ggYmFzZSBhZGRyZXNzIDB4ZmZmODAwMDAuCgpUaGUgcGxhY2VtZW50IGF0IHRoZSBlbmQgaXMgdG8gYmUgY29uc2lzdGVudCB3aXRoIHJlc2V0IGJlaGF2aW9yLAp3aGVyZSB0aGUgcHJvY2Vzc29yIGl0c2VsZiBpbml0aWFsbHkgdXNlcyB0aGlzIGJ1cyB0byBsb2FkIHRoZSBicmFuY2gKdmVjdG9yIGFuZCBzdGFydCBydW5uaW5nLgoKT24tQ2hpcCBNZW1vcnkKLS0tLS0tLS0tLS0tLS0KCjB4ZTAwMTAwMDAtIDB4ZTAwMTNmZmYgICBDT05GSUdfU1lTX09DTV9CQVNFClRoZSA0NDBFUHggaW5jbHVkZXMgYSAxNksgb24tY2hpcCBtZW1vcnkgdGhhdCBjYW4gYmUgcGxhY2VkIGhvd2V2ZXIKc29mdHdhcmUgY2hvb3Nlcy4KCkludGVybmFsIFBlcmlwaGVyYWxzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgoweGVmNjAwMzAwIC0gMHhlZjYwMDhmZgoKVGhlc2UgYXJlIHNjYXR0ZXJlZCB2YXJpb3VzIHBlcmlwaGVyYWxzIGludGVybmFsIHRvIHRoZSBQUEM0NDBFUFgKY2hpcC4KCkNoaXAtU2VsZWN0IDI6IEZsYXNoIE1lbW9yeQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk5vdCB1c2VkCgpDaGlwLVNlbGVjdCAzOiBDQU4gSW50ZXJmYWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMHhjODAwMDAwOiAyIEludGVsIDgyNTI3IENBTi1Db250cm9sbGVyCgoKQ2hpcC1TZWxlY3QgNDogSU1DLWJ1cyBzdGFuZGFyZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoweGNjMDAwMDA6IE5ldHN0YWwgc3BlY2lmaWMgSU8tQnVzCgoKQ2hpcC1TZWxlY3QgNTogSU1DLWJ1cyBmYXN0IChpbmFjdGl2ZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjB4Y2UwMDAwMDogTmV0c3RhbCBzcGVjaWZpYyBJTy1CdXMgKGZhc3QsIGJ1dCBub3QgeWV0IHVzZWQpCgoKTWVtb3J5IEJhbmsgMSAtLSBERFIyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjB4MDAwMDAwMDAgLSAweGZmZmZmZmYgICAjIERlZmF1bHQgMjU2IE1CCgpQQ0kgPz8KClVTQiA/PwpPbmx5IFVTQl9TVE9SQUdFIGlzIGVuYWJsZWQgdG8gbG9hZCB2eFdvcmtzCmZyb20gYSBtZW1vcnkgc3RpY2suCgpTeXN0ZW0tTEVEcyA/Pz8gKEFuYWxvZyB6dSBIQ1U0ID8/PykKClN0YXJ0dXAgc2VxdWVuY2UKLS0tLS0tLS0tLS0tLS0tLQoKKGFyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L3Jlc2V0dmVjLlMpCmRlcGVuZGluZyBvbiBjb25maWdzIG9wdGlvbgpjYWxsIF9zdGFydF80NDAgX3N0YXJ0X3BjaSBvZGVyIF9zdGFydAoKKGFyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L3N0YXJ0LlMpCgpfc3RhcnRfNDQwOgoJaW5pdGlhbGl6ZSByZWdpc3RlciBsaWtlCglDQ1IwCglkZWJ1ZwoJc2V0dXAgaW50ZXJydXB0IHZlY3RvcnMKCWNvbmZpZ3VyZSBjYWNoZSByZWdpb25zCgljbGVhciBhbmQgc2V0dXAgVExCCgllbmFibGUgaW50ZXJuYWwgUkFNCglqdW1wIHN0YXJ0X3JhbQoJd2hpY2ggaW4gdHVybiB3aWxsIGp1bXAgdG8gc3RhcnQKX3N0YXJ0OgoJQ2xlYXIgYW5kIHNldCB1cCBzb21lIHJlZ2lzdGVycy4KCURlYnVnIHNldHVwCglTZXR1cCB0aGUgaW50ZXJuYWwgU1JBTQoJU2V0dXAgdGhlIHN0YWNrIGluIGludGVybmFsIFNSQU0KICAgIHNldHVwIHN0YWNrIHBvaW50ZXIgKHIxKQogICAgc2V0dXAgR09UCgljYWxsIGNwdV9pbml0X2YJLyogcnVuIGxvdy1sZXZlbCBDUFUgaW5pdCBjb2RlCSAgIChmcm9tIEZsYXNoKSAqLwoKICAgIGNhbGwgY3B1X2luaXRfZgogICAgYm9hcmRfaW5pdF9mOiAoYXJjaC9wb3dlcnBjL2xpYlxib2FyZC5jKQoJaW5pdF9zZXF1ZW5jZSBkZWZpbmVzIGEgbGlzdCBvZiBmdW5jdGlvbiB0byBiZSBjYWxsZWQKCSAgICBib2FyZF9lYXJseV9pbml0X2Y6IChib2FyZC9uZXRzdGFsL2hjdTUvaGN1NS5jKQoJCVdlIGFyZSB1c2luZyBCb290c3RyYXAtT3B0aW9uIEEKCQlpZiBDUFIwX0lDRkdfUkxJX01BU0sgPT0gMCB0aGVuIHNldCBzb21lIHJlZ2lzdGVycyBhbmQgcmVib290CgkJU2V0dXAgdGhlIEdQSU8gcGlucwoJCVNldHVwIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBwb2xhcml0aWVzLCB0cmlnZ2VycywgZXRjLgoJCUV0aGVybmV0LCBQQ0ksIFVTQiBlbmFibGUKCQlzZXR1cCBCT09UIEZMQVNIIChDaGlwIHRpbWluZykKCSAgICBpbml0X2JhdWRyYXRlLAoJICAgIHNlcmlhbF9pbml0CgkgICAgY2hlY2tjcHUKCSAgICBtaXNjX2luaXRfZiAjaWZkZWYKCSAgICBpbml0X2Z1bmNfaTJjICNpZmRlZgoJICAgIHBvc3RfaW5pdF9mICAjaWZkZWYKCSAgICBpbml0X2Z1bmNfcmFtIC0+IGNhbGxzIGluaXRfZHJhbSBib2FyZC9uZXRzdGFsL2hjdTUvc2RyYW0uYwoJCShFWUUgZnVuY3Rpb24gcmVtb3ZlZCEhKQoJICAgIHRlc3RfZHJhbSBjYWxsCgoJICogUmVzZXJ2ZSBtZW1vcnkgYXQgZW5kIG9mIFJBTSBmb3IgKHRvcCBkb3duIGluIHRoYXQgb3JkZXIpOgoJICogIC0ga2VybmVsIGxvZyBidWZmZXIKCSAqICAtIHByb3RlY3RlZCBSQU0KCSAqICAtIExDRCBmcmFtZWJ1ZmZlcgoJICogIC0gbW9uaXRvciBjb2RlCgkgKiAgLSBib2FyZCBpbmZvIHN0cnVjdAoJU2F2ZSBsb2NhbCB2YXJpYWJsZXMgdG8gYm9hcmQgaW5mbyBzdHJ1Y3QKCWNhbGwgcmVsb2NhdGVfY29kZSgpIGRvZXMgbm90IHJldHVybgoJcmVsb2NhdGVfY29kZTogKGFyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L3N0YXJ0LlMpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRnJvbSBub3cgb24gb3VyIGNvcHkgaXMgaW4gUkFNIGFuZCB3ZSB3aWxsIHJ1biBmcm9tIHRoZXJlLAoJc3RhcnRpbmcgd2l0aCBib2FyZF9pbml0X3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYm9hcmRfaW5pdF9yOiAoYXJjaC9wb3dlcnBjL2xpYlxib2FyZC5jKQoJc2V0dXAgYmQgZnVuY3Rpb24gcG9pbnRlcnMKCXRyYXBfaW5pdAoJZmxhc2hfaW5pdDogKGJvYXJkL25ldHN0YWwvaGN1NS9mbGFzaC5jKQoJCS8qIHNldHVwIGZvciB1LWJvb3QgZXJhc2UsIHVwZGF0ZSAqLwoJc2V0dXAgYmQgZmxhc2ggaW5mbwoJY3B1X2luaXRfcjogKGFyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L2NwdV9pbml0LmMpCgkgICAgcGVyaXBoZXJhbCBjaGlwIHNlbGVjdCBpbiB1c2luZyBkZWZpbmVzIGxpa2UKCSAgICBDT05GSUdfU1lTX0VCQ19QQjBBLCBDT05GSUdfU1lTX0VCQ19QQjBDIGZyb20gaGN1NS5oCgltZW1fbWFsbG9jX2luaXQKCW1hbGxvY19iaW5fcmVsb2MKCXNwaV9pbml0IChyIG9yIGYpPz8/IChDT05GSUdfRU5WX0lTX0lOX0VFUFJPTSkKCWVudl9yZWxvY2F0ZWQKCW1pc2NfaW5pdF9yKGJkKTogKGJvYXJkL25ldHN0YWwvaGN1NS5jKQoJICAgIGV0aGFkZHIgbWl0IHNlcmlhbCBudW1iZXIgZXJn5G56ZW4KICAgIFRoZW4gd2Ugd2lsbCBzb21laG93IGdvIGludG8gdGhlIGNvbW1hbmQgbG9vcAoKTW9zdCBvZiB0aGUgSFcgc3BlY2lmaWMgY29kZSBmb3IgdGhlIEhDVTUgbWF5IGJlIGZvdW5kIGluCmluY2x1ZGUvY29uZmlncy9oY3U1LmgKYm9hcmQvbmV0c3RhbC9oY3U1LyoKYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvKgphcmNoL3Bvd2VycGMvbGliLyoKaW5jbHVkZS9wcGM0NDAuaAoKRHJpdmVycyBmb3Igc2VyaWFsIGV0YyBhcmUgZm91bmQgdW5kZXIgZHJpdmVycy8KCkRvbid0IGFzayBxdWVzdGlvbiBpZiB5b3UgZGlkIG5vdCBsb29rIGF0IHRoZSBSRUFETUUgISEKTW9zdCBDT05GSUdfU1lTXyogYW5kIENPTkZJR18qIHN3aXRjaGVzIGFyZSBtZW50aW9uZWQvZXhwbGFpbmVkIHRoZXJlLgo=