MTk5OC0xMi0zMSAgSm9zZXBoIEJlY2tlbmJhY2ggSUlJIDxqcmIzQGJlc3QuY29tPgoKCSogbHRjb25maWcuaW46IGFkZGVkIHN1cHBvcnQgZm9yIEJlT1MKCSogbHRtYWluLmluIChzaGxpYnBhdGhfdmFyKTogYWRkZWQgYSB3b3JrYXJvdW5kIGZvcgoJICBhbiBvZGQgYnVnIGluIHRoZSBCZU9TIFI0IHNlZAoKMTk5OC0xMi0zMSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiB2ZXJpZmllZCBhbGwgY29weXJpZ2h0IG5vdGljZXMKCSAgYW5kIHVwZGF0ZWQgdGhlbSB0byAxOTk5CgkqIFRPRE86IGFkZGVkIHNvbWUgdGhpbmdzIHRoYXQgbmVlZCB0byBkb2N1bWVudGVkCgkqIGRvYy9saWJ0b29sLnRleGk6IC1leHBvcnQtc3ltYm9scyBpcyBub3QKCSAgc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMKCSogZG9jL1BMQVRGT1JNUzogYWRkZWQgYSBmZXcgbmV3IHBsYXRmb3JtcwoKMTk5OC0xMi0zMCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBORVdTOiB1cGRhdGVkCgkqIFRIQU5LUzogYWRkZWQgVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoKMTk5OC0xMi0zMCAgVG9kZCBWaWVybGluZyAgPHR2QHBvYm94LmNvbT4KCgkqIGx0Y29uZmlnLmluOiBpbXByb3ZlZCBzaGFyZWQgb2JqZWN0IGhhbmRsaW5nIG9uIGJvdGgKCSAgYS5vdXQgYW5kIEVMRiBwbGF0Zm9ybXMgZm9yIE5ldEJTRAoKMTk5OC0xMi0yOSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsdGNvbmZpZy5pbjogZG8gbm90IHJlbHkgb24gYSBsZWFkaW5nIHNwYWNlIHdoZW4gY29uY2F0ZW5hdGluZwoJICB2YXJpYWJsZXMgYXMgc3VnZ2VzdGVkIGJ5IEVyZXogWmFkb2sKCSogbHRtYWluLmluOiBsaWtld2lzZQoJKiBkb2MvUExBVEZPUk1TOiB1cGRhdGVkIGFuZCByZWZvcm1hdHRlZAoJICAodGhhbmtzIHRvIEVyZXogWmFkb2sgZm9yIHRoZSB0ZXN0aW5nKQoKMTk5OC0xMi0yNyAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBUSEFOS1M6IGFkZGVkIEVyZXogWmFkb2sgPGV6a0BzaGVrZWwubWNsLmNzLmNvbHVtYmlhLmVkdT4KCjE5OTgtMTItMjYgIEVyZXogWmFkb2sgIDxlemtAc2hla2VsLm1jbC5jcy5jb2x1bWJpYS5lZHU+CgoJKiBsdGNvbmZpZy5pbjogc3VwcG9ydCBpNDg2LW5jci1zeXN2NC4zLjAzCglzaGFyZWQgbGlicmFyaWVzLgoKCSogbHRtYWluLmluOiBiZWZvcmUgZXZlcnkgbG4gLXMsIHJlbW92ZSB0aGUgbGluayBuYW1lCgoxOTk4LTEyLTI1ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGRlcGRlbW8vY29uZmlndXJlLmluOiByZW1vdmVkIGxhc3QgcmVsaWNzIG9mIGRlbW8KCSogZGVwZGVtby9zeXNkZXAuaDogZGl0dG8KCSogbWRlbW8vTWFrZWZpbGUuYW06IGRpdHRvCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW06IGZpeGVkIHRoZSB2ZXJzaW9uIG51bWJlciwgYnVpbGQgbGlibHRkbHMgaWYKCSAgLWVuYWJsZS1pbnN0YWxsIGFuZCAtZW5hYmxlLWRscHJlb3BlbiBhcmUgZW5hYmxlZAoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogbGlibHRkbCBpcyB2ZXJzaW9uIDAuMSwgbm90IDEuMCwKCSAgcmVuYW1lZCAtZW5hYmxlLWx0ZGwtaW5zdGFsbCB0byAtZW5hYmxlLWluc3RhbGwsCgkgIGNvbmRpdGlvbmFscyBmb3IgbGlibHRkbHMsIGNoZWNrIGZvciBzdHJjaHIgYW5kIGluZGV4LAoJICByZXBsYWNlZCBOVUxMIHdpdGggMAoJKiBsaWJsdGRsL2x0ZGwuYzogcmVwbGFjZWQgTlVMTCB3aXRoIDAsIGRscHJlb3BlbiBvbmx5IGlmCgkgIFVTRV9ETFBSRU9QRU4gd2FzIGRlZmluZWQsIGludGVncmF0ZWQgc2hsX2xvYWQgY29kZSBmcm9tIEdNb2R1bGUKCSAgKHN0aWxsIHVudGVzdGVkKQoKMTk5OC0xMi0yNCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IGZpeHVwIHNwYWNpbmcgaW4gLS1lbmFibGUtbHRkbC1pbnN0YWxsCgloZWxwIHN0cmluZyBzbyB0aGF0IGl0IGxpbmVzIHVwIG5pY2VseSBmb3IgY29uZmlndXJlIC0taGVscC4KCgkqIGx0bWFpbi5pbiAoZGxsc2VhcmNocGF0aCk6IGtlZXAgdHJhY2sgb2Ygd2hhdCB0aGUgZGxsIHNlYXJjaCBwYXRoCgl3aWxsIG5lZWQgdG8gYmUgaW4gdGhlIHdyYXBwZXIgc2NyaXB0cyBhcyBkZXBsaWJzIGFyZSBjYWxjdWxhdGVkLgoJTWFrZSBzdXJlIHRoZSB3cmFwcGVyIHNjcmlwdCBkb2Vzbid0IGVuZCBpbiBgLmV4cicsIHdoaWNoIG1ha2VzCgl3aW4zMiB0cnkgdG8gZXhlY3V0ZSBpdCBhcyBhIGJpbmFyeSEKCUFkZCB0aGUgY29udGVudHMgb2YgZGxsc2VhcmNocGF0aCB0byAkUEFUSCBpbiB0aGUgd3JhcHBlciBzY3JpcHQuCglVc2UgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHdyYXBwZWQgcHJvZ3JhbSBzbyB0aGF0IHRoZSBkbGwKCXNlYXJjaCBwYXRoIGlzIGNhbGN1bGF0ZWQgcHJvcGVybHkgYnkgd2luMzIgT1Nlcy4KCSogVE9ETzogcmVtb3ZlZCB0aGUgaXRlbSBmb3IgbWFraW5nIHdyYXBwZXIgc2NyaXB0cyB3b3JrIG9uIHdpbjMyLgoKCSogVE9ETzogcmVtb3ZlZCB0aGUgcmVmZXJlbmNlIHRvIG1ha2luZyBsaWJsdGRsIGFuZCBkZW1vIHdvcmsgb24KCXdpbjMyLiAgVGhleSAqZG8qIHdvcmsgbm93IHRoYXQgd3JhcHBlciBzY3JpcHRzIGFyZSBmdW5jdGlvbmluZy4KCgkqIGx0bWFpbi5pbiAoZmlsZV9tYWdpY19jb21tYW5kKTogSXQgdHVybnMgb3V0IHRoYXQgaWYgdGhlCglmaWxlX21hZ2ljX2NvbW1hbmQgZ2VuZXJhdGVzIGh1Z2Ugb3V0cHV0IChlLmcuIHJ1bm5pbmcgYG9iamR1bXAKCS1mJyBvdmVyIGEgbGFyZ2UgaW1wb3J0IGxpYiBbc2F5IGxpYlgxMS5hXSkgdGhlIGV4cHIgdG8gY2hlY2sgaXQKCWFnYWluc3QgdGhlIGZpbGVfbWFnaWNfcmVnZXggYmxvd3MgdXAuICBUaGVyZSBpcyBub3cgYW4gb3B0aW1pc3RpYwoJaGV1cmlzdGljLCB0byBzYXZlIG9ubHkgdGhlIGZpcnN0IDEwIGxpbmVzIG9mIHJ1bm5pbmcKCWZpbGVfbWFnaWNfY29tbWFuZCB3aGljaCAoYXQgcmlzayBvZiBzb3VuZGluZyBsaWtlIEJpbGwpIHNob3VsZCBiZQoJZW5vdWdoIGZvciBhbnlvbmUgPSlPfC4KCgkqIGx0bWFpbi5pbjogU2V0IHRoZSBjb21waWxlX2RlcGVuZGVuY3lsaWJzIGFuZAlkbGxzZWFyY2hwYXRoIGZvcgoJbm9uLWxpYnRvb2wgbGlicywgb3IgZWxzZSBsaWJkZXBzIG9ubHkgd29ya3MgYmV0d2VlbiBsdGxpYnMgZm9yCgljeWd3aW4zMi4KCjE5OTgtMTItMjMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChTUDJOTCwgTkwyU1ApOiB1c2UgYHRyJyBtYWdpYyB0byBhdm9pZCBwYXNzaW5nIHZlcnkKCWxvbmcgbGluZXMgdG8gc2VkCgkqIGRvYy9saWJ0b29sLnRleGkgKHNlZCk6IHZlcnkgbG9uZyBsaW5lcyBhcmUgbm8gbG9uZ2VyIGEgcHJvYmxlbQoKCSogbGlibHRkbC9NYWtlZmlsZS5hbTogaW5zdGFsbCBsaWJsdGRsIGNvbmRpdGlvbmFsbHkuLi4KCSogbGlibHRkbC9jb25maWd1cmUuaW46IC4uLiBpZiAtLWVuYWJsZS1sdGRsLWluc3RhbGwgaXMgaXNzdWVkCgkqIGxpYmx0ZGwvbHRkbC5jOiByZW1vdmVkICNpZmRlZiBERUJVRwoJKiBtZGVtby9NYWtlZmlsZS5hbSAobWRlbW9fZGVidWdfTERBREQsIG1kZW1vX2RlYnVnX0RFUEVOREVOQ0lFUyk6Cgl1c2UgbGlibHRkbC5sYQoKMTk5OC0xMi0yMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogZG9jL1BMQVRGT1JNUzogYWRkZWQgbXkgY3lnd2luMzIgYm94IChpNjg2LXBjLWN5Z3dpbjMyKS4KCgkqIFRPRE86IHJlbWluZCBteXNlbGYgb2YgdGhlIHdpbjMyIHRhc2tzIHJlbWFpbmluZy4KCgkqIGx0Y29uZmlnLmluIChhcmNoaXZlX2NtZHMsIGFyY2hpdmVfc3ltX2NtZHMsCglvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzKTogRml4ZWQgYSBidWcgd2hpY2ggbGVmdCBhbiBhLmV4ZSBpbiB0aGUKCWJ1aWxkIGRpcmVjdG9yeS4gIEZpeGVkIGEgYnVnIHdoZXJlICRzb25hbWUtZGVmIHdhcyBuZXZlciBkZWxldGVkLgoKCSogbHRjb25maWcuaW4gKGZpbGVfbWFnaWNfY29tbWFuZCk6IG5ldyB2YXJpYWJsZSBob2xkcyB0aGUgY29tbWFuZAoJKGluY2x1ZGluZyBhbnkgYXJncykgdG8gcnVuIHRvIGdlbmVyYXRlIHRoZSBzdHJpbmcgdG8gbWF0Y2gKCWFnYWluc3QgdGhlIHJlZ2V4IGluICRmaWxlX21hZ2ljLiAgVXNlIHRoZSB2YXJpYWJsZSB3aGVyZQoJbmVjZXNzYXJ5LiBBZGRlZCB0byBsaWJ0b29sIGhlYWRlciBvdXRwdXQuCgkoZGVwbGlic19jaGVja19tZXRob2QpOiB1c2UgZmlsZV9tYWdpYyBmb3Igd2luMzIsIGJ1dCBjb21wYXJlIHRoZQoJb3V0cHV0IG9mIGBvYmpkdW1wIC1mJyB3aXRoIHRoZSByZWdleCAoc2VlIGJlbG93KS4KCShhcmNoaXZlX2NtZHMsIGFyY2hpdmVfc3ltX2NtZHMpOiB1c2UgY29tcGlsZV9kZXBlbmRlbmN5bGlicyBmb3IKCWVhY2ggJENDIGludm9rYXRpb24gKHNlZSBiZWxvdykuCgoJKiBsdG1haW4uaW46IFNldCBhbGxvd191bmRlZmluZWQgdG8gYG5vJyBmb3Igd2luMzIgdmFyaWFudHMgYnkKCWRlZmF1bHQsIG90aGVyd2lzZSBpdCBpcyBpbXBvc3NpYmxlIHRvIGxpbmsgYSBkbGwgd2l0aG91dCBmb3JjaW5nCgl0aGUgbWFrZWZpbGUgbWFpbnRhaW5lciB0byBmaWd1cmUgb3V0IHdoZXRoZXIgdG8gcGFzcwoJLS1uby11bmRlZmluZWQgYXQgZXZlcnkgbGlidG9vbCBpbnZva2F0aW9uLgoJKGNvbXBpbGVfZGVwZW5kZW5jeWxpYnMpOiBzYXZlIHRoZSBsaXN0IG9mIGRlcGVuZGVuY3kgbGlicmFyeQoJZmxhZ3MgbmVlZGVkIGZvciBhIGRlcGxpYiBidWlsZCBvbiB3aW4zMi4KCShsaW5rX2FnYWluc3RfbGlidG9vbF9saWJzKTogY29tbWVudGVkIG91dCB0aGUgY2hlY2sgZm9yIHRoaXM7ICBpZgoJaXQgaXMgbGVmdCBpbiwgdGhlbiBsdGxpYnMgKGkuZS4gKi5sYSBmaWxlcykgY2Fubm90IGJlIGRlcGxpYnMgZm9yCglzdWJzZXF1ZW50IGxpbmtzLgoJRG9uJ3QgYWRkIC1sYyB0byB0aGUgZGVwbGlicyBsaW5lIGZvciB3aW4zMiBwbGF0Zm9ybXMgKHdoaWNoIGRvbid0CgloYXZlIGEgbGliYyBhcyBzdWNoKS4KCShmaWxlX21hZ2ljX2NvbW1hbmQpOiB1c2UgdGhpcyB0byBnZXQgc29tZSBvdXRwdXQgdG8gY29tcGFyZSB3aXRoCgl0aGUgZmlsZV9tYWdpYyByZWdleCAoaW5zdGVhZCBvZiBoYXJkY29kaW5nIGBmaWxlJyB3aGljaCBkb2Vzbid0CglleGlzdCBvbiB3aW4zMi4KCSogZG9jL2xpYnRvb2wudGV4aSAoUG9ydGluZyBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyk6IFVwZGF0ZWQKCXRvIGRvY3VtZW50IHRoZSBjaGFuZ2VzIGFib3ZlLgoKCSogbHRjb25maWcuaW4gKGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogQ2hhbmdlZCB0aGUgZmlsZV9tYWdpYyByZWdleAoJdG8gbWF0Y2ggbW9yZSBsaW51eCB2YXJpYW50cy4gIFRoaXMgaXMgbGVzcyBsZW5pZW50IHRoYW4gVGhvbWFzCglUYW5uZXIncyBjb21taXQgdG8gZml4IHRoZSBzYW1lIHByb2JsZW0gYmVsb3cuCglSZXBvcnRlZCBieSBKb2VsIEtsZWNrZXIgPGVzcHlAZGViaWFuLm9yZz4KCSogVEhBTktTOiBhZGRlZCBKb2VsIEtsZWNrZXIgPGVzcHlAZGViaWFuLm9yZz4KCjE5OTgtMTItMjMgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRjb25maWcuaW46IGZpeGVkIGZpbGUtbWFnaWMgZm9yIExpbnV4IHNoYXJlZCBsaWJyYXJpZXMKCSogbHRtYWluLmluOiByZW1vdmVkIHRoZSB1bnVzZWQgLWZvcmNlLXN0YXRpYyBmbGFnCgkqIGxpYmx0ZGwvbHRkbC5jOiBhZGRlZCBzdHJjaHIsIHNlYXJjaCBtb2R1bGVzIGluIExURExfTElCUkFSWV9QQVRILAoJICBjaGVjayB3aGV0aGVyIGFjdHVhbCBtb2R1bGUgd2FzIGFscmVhZHkgZGxvcGVuZWQsCgkgIHJlYWQgaW4gcHJlbG9hZF9saWJzIHJhdGhlciB0aGFuIGRlcGVuZGVuY3lfbGlicwoKMTk5OC0xMi0yMyAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBidWlsZCB0d28gdmVyc2lvbnMgb2YgbGlibHRkbDoKCSAgbGlibHRkbCAoc3VwcG9ydCBuYXRpdmUgZGxvcGVuIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRscHJlb3BlbiksCgkgIGxpYmx0ZGxzIChsaWtlIGxpYmx0ZGwsIGJ1dCBhbHdheXMgc3VwcG9ydCBmb3IgZGxwcmVvcGVuKQoJKiBsaWJsdGRsL2x0ZGwuYzogZGl0dG8KCSogbGlibHRkbC9jb25maWd1cmUuaW46IHdhcm4gaWYgZGxvcGVuIGlzIG5vdCBzdXBwb3J0ZWQKCSogbWRlbW8vTWFrZWZpbGUuYW0gKG1kZW1vLmRlYnVnKTogdXNlIGxpYmx0ZGxzCgoxOTk4LTEyLTIyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbjogcmV2ZXJ0IFRob21hcyBUYW5uZXJzIGNoYW5nZSB0byBjcmVhdGUgYWxsCglsaWJyYXJpZXMgd2l0aG91dCB0aGUgYGxpYicgcHJlZml4IG9uIHdpbjMyLCBvdGhlcndpc2UgYGdjYyBmb28uYwoJLWxiYXInIGNhbid0IGZpbmQgbGliYmFyLmEuCgoxOTk4LTEyLTIyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogcHJlcGVuZCBgLicgdG8gYXZvaWQgYW0tcmVjdXJzaXZlCglkZXBlbmRlbmN5IGhhY2sKCjE5OTgtMTItMjEgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRjb25maWcuaW46IGluZGVudGF0aW9uIGlzIG5vdyA4IGNoYXJhY3RlciB3aWRlIHRhYnMKCSogbHRtYWluLmluOiBkaXR0bwoJKiBDaGFuZ2VMb2c6IGRpdHRvCgkqIGx0bWFpbi5pbjogcmVuYW1lZCBjaGVja19zaGFyZWRfZGVwbGlic19tZXRob2QgdG8KCSAgZGVwbGlic19jaGVja19tZXRob2QgKHdlX2RvbnRfd2FudF90b29fbG9uZ192YXJpYWJsZV9uYW1lcyA6KQoJKiBkb2MvbGlidG9vbC50ZXhpIChQb3J0aW5nIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzKTogZGl0dG8KCSogZGVwZGVtby8uY3ZzaWdub3JlOiByZW5hbWVkIGhlbGwqIHRvIGRlcGRlbW8qLCBhZGRlZCAqLmxvLCoubGEKCSogbWRlbW8vLmN2c2lnbm9yZTogZGl0dG8KCjE5OTgtMTItMjEgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKEFNX1NZU19OTV9QQVJTRSk6IGFwcGFyZW50bHkgIF9fcHRyX3QgaXMgcHJlZGVmaW5lZAoJb24gc29tZSBzeXN0ZW1zIC0gdXNlIGx0X3B0cl90IGluc3RlYWQuCgkqIGx0Y29uZmlnLmluOiBkaXR0by4KCSogbHRtYWluLmluOiBkaXR0by4KCgkqIGxpYnRvb2wubTQgKEFNX1NZU19TWU1CT0xfVU5ERVJTQ09SRSk6IHVzZSBhbiBBQ19TVUJTVCB0byBwYXNzCgl0aGUgcmVzdWx0IG9mIHRoaXMgaW50byB0aGUgY29tcGlsZSByYXRoZXIgdGhhbiBBQ19ERUZJTkUgd2hpY2gKCWJyZWFrcyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgYXV0b2NvbmYuCgkqIGx0Y29uZmlnLmluIChzeW14ZnJtKTogRG9uJ3QgcHV0IHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgYmFjawoJd2l0aCB0aGUgZ2xvYmFsX3N5bWJvbF9waXBlLgoJKiBkZW1vL2RsbWFpbi5jIChtYWluKTogTm8gbmVlZCB0byBzcGVjaWFsY2FzZSB1bmRlcnNjb3JlcyBpbgoJZGxkX3ByZWxvYWRlZF9zeW1ib2xzIC0gaXQgaXMgZml4ZWQgYnkgc3lteGZybSBhYm92ZSEKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHVzZSBBTV9TWVNfU1lNQk9MX1VOREVSU0NPUkUgZnJvbQoJbGlidG9vbC5tNCByYXRoZXIgdGhhbiByZWludmVudCB0aGUgd2hlZWwgaGVyZSA9KU98CgoJKiBsdG1haW4uaW46ICBGaXggZGVwbGlicyBtZXRob2RzIHRvIG5vdCByZWx5IG9uIGEub3V0IChjeWd3aW4KCXVzZXMgYS5leGUhKS4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBDbGVhbnVwcyAtIGZpeCBoZWFkZXIgY29tbWVudCBhbmQgZW1hY3MKCWxvY2FsLXZhcnMuCgoJKiBkZW1vL2RsbWFpbi5jICh3aW4zMl9mb3JjZV9kYXRhX2ltcG9ydF9hZGRyZXNzKTogYSBuYXN0eSBoYWNrCgl0byBmb3JjZSB0aGUgYWRkcmVzcyBvZiBpbXBvcnRlZCBkYXRhIHN5bWJvbHMgaW50bwoJZGxkX3ByZWxvYWRlZF9zeW1ib2xzIG9uIHdpbjMyLCB3aGljaCBkb2VzIGRhdGEgaW1wb3J0cwoJZGlmZmVyZW50bHkgdG8gZnVuY3Rpb24gaW1wb3J0cyAoc2hlZXNoISkuICBUaGlzIGZ1bmN0aW9uYWxpdHkKCW5lZWRzIHRvIGJlIG1vdmVkIGludG8gdGhlIGRsZF9wcmVsb2FkZWRfc3ltYm9scyBnZW5lcmF0aW9uIGNvZGUuCglkZW1vL2hlbGxkbCB3aXRoIHN0YXRpYyBsaW5raW5nIGlzIGJyb2tlbiBvbiB3aW4zMiBieSB0aGlzIGNoYW5nZSwKCXByb2JhYmx5IHVudGlsIGFmdGVyIGxpYnRvb2wtMS4zID0oT3wKCSogZGVtby9mb28uaDogbWFrZSBzdXJlIF9fQ1lHV0lOMzJfXyBpcyBhbHdheXMgZGVmaW5lZCBvbiBjeWd3aW4zMgoJc3lzdGVtcy4gIFVzZSB0aGUgY29ycmVjdCBfX2RlY2xzcGVjIG1hY3JvIGZvciBsaWIgZXhwb3J0cy9pbXBvcnRzCglvbiBjeWd3aW4zMi4KCSogZGVtby9mb28uYywgZGVtby9oZWxsby5jOiBNYWtlIHN1cmUgd2UgdGVsbCBmb28uaCB0aGF0IHRoZXNlCglzb3VyY2VzIGFyZSBpbnNpZGUgbGliZm9vLCBhbmQgd2FudCB0byBleHBvcnQgc3ltYm9scy4KCjE5OTgtMTItMjAgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogYXV0b2dlbjogY29uZmlndXJlIGRlbW8sIGRlcGRlbW8sIGxpYmx0ZGwgYW5kIG1kZW1vCgkqIHRlc3RzL21kZW1vLWV4ZWMudGVzdDogcmVuYW1lZCBoZWxsKiB0byBtZGVtbyoKCSogdGVzdHMvbWRlbW8taW5zdC50ZXN0OiBkaXR0bwoKMTk5OC0xMi0xOSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBidWlsZCBhIG5vcm1hbCBsaWJ0b29sIGxpYnJhcnkKCSogbGlibHRkbC9sdGRsLmM6IGdldCBMVERMX0xJQlJBUllfUEFUSCBidXQgZG9uJ3QgbWFrZSB1c2Ugb2YgaXQgeWV0LAoJICBzb21lIHJlZm9ybWF0dGluZwoJKiBsdG1haW4uaW46IGZpeGVkIGEgYnVnIHdoaWNoIGxpc3RlZCBzeW1ib2xzIGluCgkgIGRsZF9wcmVsb2FkZWRfc3ltYm9scyB0d2ljZQoJKiBUT0RPOiByZW1vdmVkIHN5bWJvbCBleHBvcnQgbGlzdHMgYW5kIGRlcGxpYnMKCjE5OTgtMTItMTggIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRjb25maWcuaW46IGFkZGVkIG5lZWRfbGliX3ByZWZpeCBhbmQgbmVlZF92ZXJzaW9uLAoJICB3aGljaCBkZXRlcm1pbmUgd2hldGhlciB3ZSBtdXN0IHByZWZpeCBtb2R1bGVzIHdpdGggJ2xpYicKCSAgYW5kIHdoZXRoZXIgdmVyc2lvbmluZyBpcyByZXF1aXJlZCBmb3IgbGlicmFyaWVzLgoJKiBsdG1haW4uaW46IGFsbG93IG1vZHVsZXMgbmFtZXMgd2l0aG91dCAnbGliJyBwcmVmaXgsCgkgIG5ldyAtYXZvaWQtdmVyc2lvbmluZyBvcHRpb24KCSogZG9jL2xpYnRvb2wudGV4aSAobGluayBmbGFncyk6IHVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgLW1vZHVsZSwKCSAgYWRkZWQgLWF2b2lkLXZlcnNpb25pbmcKCSogZG9jL2xpYnRvb2wudGV4aSAobGlidG9vbCBzY3JpcHQgY29udGVudHMpOgoJICBkb2N1bWVudGVkIHRoZSB0d28gbmV3IGZsYWdzIGFuZCBhcmNoaXZlX3N5bV9jbWRzCgkqIGRvYy9saWJ0b29sLnRleGkgKHRlc3RzKToKCSAgYWRkZWQgKHBhcnRpYWxseSB2ZXJ5IHNob3J0KSBkb2N1bWVudGF0aW9uIGZvciBhc3NpZ24udGVzdCwKCSAgbm9tb2RlLnRlc3QsIHF1b3RlLnRlc3QsIHNoLnRlc3QKCSogbGlibHRkbC9sdGRsLmM6IGNhbm9uaWNhbGl6ZSBtb2R1bGUgbmFtZXMsCgkgIHNvbWUgY2xlYW51cHMgYW5kIGJ1Z2ZpeGVzLCAgX19wdHJfdCBpcyBwcmVkZWZpbmVkIG9uCgkgIHNvbWUgc3lzdGVtcyAtIHVzZSBsdF9wdHJfdCBpbnN0ZWFkCgkqIG1kZW1vLzogcmVuYW1lZCBoZWxsKiB0byBtZGVtbyogKGhlbGwgaXMgYWxyZWFkeSB1c2VkIGluCgkgIGRlbW8pLCB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uLCBpbXBvcnQgc2luIGFuZCBjb3MgaW4gbWFpbgoJICBwcm9ncmFtIHJhdGhlciB0aGFuIGxpbmtpbmcgbGliZm9vMSBzdGF0aWNhbGx5CgoxOTk4LTEyLTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBTV9QUk9HX0xJQlRPT0wpOiBBZGRlZCBBQ19QUkVSRVEoMi4xMikgdG8gcHJldmVudAoJcGVvcGxlIHVzaW5nIGxpYnRvb2wgd2l0aCBvbGQgYXV0b2NvbmZzIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGUKCWZlYXR1cmVzIHdlIG5lZWQuCgoxOTk4LTEyLTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE5FV1MsIGNvbmZpZ3VyZS5pbiwgbGlidG9vbC5zcGVjOiBCdW1wZWQgdG8gMS4yZSBmb3IgQ1ZTCgoJKiBORVdTLCBjb25maWd1cmUuaW4sIGxpYnRvb2wuc3BlYzogQnVtcGVkIHRvIDEuMmQgZm9yIHJlbGVhc2UKCgkqIE1ha2VmaWxlLmFtIChjdnMtZGlzdCk6IG91ciByZWxlYXNlIHRhZ3MgYXJlIGluIGxvd2VyIGNhc2UKCShjdnMtZGlmZik6IGRpdHRvCgkoRVhUUkFfRElTVCk6IGFkZGVkIFJFQURNRS1hbHBoYQoJKiBSRUFETUUtYWxwaGE6IG1pbm9yIGFkYXB0YXRpb25zCgkqIGRlbW8vTWFrZWZpbGUuYW0sIG1kZW1vL01ha2VmaWxlLmFtLCBkZXBkZW1vL01ha2VmaWxlLmFtOgoJcmVtb3ZlZCBjb21tZW50IGFib3V0IHNwZWNpYWwgbmVlZHMgZm9yIGRpc3RyaWJ1dGlvbgoJKiBkZXBkZW1vL01ha2VmaWxlLmFtOiBkb24ndCBnZW5lcmF0ZSBkZXBlbmRlbmNpZXMKCSogZGVwZGVtby9jb25maWd1cmUuaW46IG1vZGlmaWVkIHZlcnNpb24gbnVtYmVyCgoJKiBsdG1haW4uaW4gKC1mb3JjZS1zdGF0aWMsIGZvcmNlX3N0YXRpYyk6IHJlbW92ZWQKCSogbGlibHRkbC9NYWtlZmlsZS5hbSAoQ0ZMQUdTKTogZGl0dG8KCSogbGlibHRkbC9jb25maWd1cmUuaW46IGNoZWNrIGZvciBtZW1vcnkuaCwgcmluZGV4KCkgYW5kCglkbHByZW9wZW5pbmcuICBGaXhlZCBORUVEX1VTQ09SRSBjYWNoaW5nIHBvbGljeS4KCSogbGlibHRkbC9sdGRsLmggKGx0X2Rsc3ltKTogbWFrZSB0aGUgbmFtZSBhcmd1bWVudCBjb25zdAoJKiBsaWJsdGRsL2x0ZGwuYyAodHlwZXMpOiBuZXcgdmFyaWFibGU6IGhlYWQgb2YgbGlzdCBvZiBhdmFpbGFibGUKCWRsb3BlbmluZyBtZWNoYW5pc21zCgkobHRfZGx0eXBlX3QpOiBpbnRlcmZhY2Ugb2YgYSBkbG9wZW5pbmcgbWVjaGFuaXNtLCB3aXRoIHBvaW50ZXJzCgl0byBmdW5jdGlvbnMgZm9yIGluaXQsIGV4aXQsIG9wZW4sIGNsb3NlIGFuZCBzeW0KCShsdF9kbGhhbmRsZV90KTogYWRkZWQgcG9pbnRlciB0byBpbnRlcmZhY2UgdHlwZQoJKHN0cmR1cCk6IGRvbid0IG5hbWUgaXQgc3RyZHVwOyBpdCBjYW4gYmUgdHJvdWJsZXNvbWUKCShzdHJyY2hyKTogZGl0dG87IHVzZSByaW5kZXggaWYgYXZhaWxhYmxlCgkoTElCVE9PTF9TVEFUSUMpOiBjaGVjayBIQVZFX0RMUFJFT1BFTiBpbnN0ZWFkLCBhbmQgbW92ZSB0byB0aGUKCWVuZCBvZiB0aGUgZmlsZSwgc28gdGhhdCBpdCBiZWNvbWVzIHRoZSBoZWFkZXIgb2YgdGhlIGxpc3QKCShhbGwpOiByZW5hbWVkIGFsbCBpbnRlcmZhY2UtaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zLCB0byBhdm9pZAoJbmFtZSBjbGFzaGVzLCBhbmQgY3JlYXRlZCBsdF9kbHR5cGVfdCBub2RlcyBmb3IgYWxsIG9mIHRoZW0KCShsdF9kbGluaXQpOiBpbml0aWFsaXplIGFsbCBhdmFpbGFibGUgaW50ZXJmYWNlczsgcmVtb3ZlIHRob3NlCgl0aGF0IGZhaWwgZnJvbSB0aGUgbGlzdC4gIFJldHVybiBmYWlsdXJlIG9ubHkgaWYgbm8gaW50ZXJmYWNlcwoJY291bGQgYmUgaW5pdGlhbGl6ZWQuCgkobHRfZGxleGl0KTogcmV0dXJuIG51bWJlciBvZiBmYWlsdXJlcwoJKHRyeWFsbF9kbG9wZW4pOiB0cnkgdG8gb3BlbiB0aGUgbGlicmFyeSB3aXRoIGFsbCBhdmFpbGFibGUKCWludGVyZmFjZXMKCShsdF9kbG9wZW4pOiB1c2UgdHJ5YWxsX2Rsb3BlbjsgaW5jcmVhc2VkIHNpemUgb2YgZml4ZWQgYnVmZmVycy4KCVdlIHNob3VsZCBwcm9iYWJseSBtYWtlIHRoZXNlIGJvdW5kLWNoZWNrZWQgb3IgZHluYW1pY2FsbHkKCWFsbG9jYXRlZCBmb3IgdGhlIGZpbmFsIHJlbGVhc2UhICBGaXggYnVnIHdoZW4gZmlsZW5hbWUgZGlkIG5vdAoJY29udGFpbiBzbGFzaGVzOyBzaG91bGQgd2UgY2hlY2sgZm9yIGBcXCcgdG9vPyAgVHJ5IG9sZF9saWJyYXJ5IGlmCglldmVyeXRoaW5nIGVsc2UgZmFpbHMuCgkobHRfZGxjbG9zZSk6IHVzZSB0aGUgaW50ZXJmYWNlIHR5cGUgZm9yIGNsb3NpbmcKCShsdF9kbHN5bSk6IG1ha2UgYHN5bWJvbCcgY29uc3QsIHVzZSBpbnRlcmZhY2UgdHlwZSBmb3IgbG9va2luZyB1cAoJKiBtZGVtby9NYWtlZmlsZS5hbTogbW92ZWQgbWRlbW8vbW9kdWxlcy8qIGJhY2sgaW50byBtZGVtbwoJKFNVQkRJUlMpOiByZW1vdmVkCgkobGliZm9vMl9sYV9MREZMQUdTKTogYWRkZWQgLXN0YXRpYzsgbmljZSB0ZXN0LiAgSG93ZXZlciwgc2luY2UgaXQKCWNhdXNlcyAtbG0gdG8gbGlua2VkIGludG8gaGVsbCosIGl0IGNhdXNlcyB0ZXN0cyB0aGF0IHNob3VsZCBmYWlsCgl0byBwYXNzCgkobm9pbnN0X0hFQURFUlMpOiBubyBuZWVkIHRvIGluc3RhbGwgZm9vLmgKCSogbWRlbW8vY29uZmlndXJlLmluOiByZW1vdmUgbW9kdWxlcy9NYWtlZmlsZQoJdGVzdHMvbWRlbW8tZXhlYy50ZXN0OiB1cGRhdGVkIGFjY29yZGluZ2x5CgoJKiBORVdTOiBBZGRlZCBUaG9tYXMgVGFubmVyIGFuZCBHYXJ5IFYuIFZhdWdoYW4gdG8gdGhlIGxpc3Qgb2YgbmV3CgltYWludGFpbmVycy4gIERldGFpbGVkIGV4cGVjdGVkIGZhaWx1cmVzIG9mIGxpYmx0ZGwrbWRlbW8uICBMaXN0ZWQKCXJlY2VudCBwb3J0cy4gIEFkZGVkIGZ1bGwgVVJMIGZvciB0aGUgaG9tZSBwYWdlLiAgTm90ZSB0aGF0CglsaWJ0b29sIEMgcHJvZ3JhbSBpcyB1bnVzYWJsZS4KCjE5OTgtMTItMTYgIEJydW5vIEhhaWJsZSAgPGhhaWJsZUBpbG9nLmZyPgoKCSogZG9jL2xpYnRvb2wudGV4aSAoVGVzdGVkIHBsYXRmb3Jtcyk6IGJyb2tlbiBgc2VkJyBwcm9ncmFtcwoKMTk5OC0xMi0xNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBUSEFOS1M6IGFkZGVkIFN0ZXBoYW4gS3Vsb3c7IHJlbW92ZWQgR2FyeSBWLiBWYXVnaGFuIGFuZCBUaG9tYXMKCVRhbm5lciwgbm93IHRoYXQgdGhleSdyZSBBVVRIT1JTCgoxOTk4LTEyLTE2ICBTdGVwaGFuIEt1bG93ICA8Y29vbG9Aa2RlLm9yZz4KCgkqIGx0bWFpbi5pbiAoZnJlZWJzZC1hb3V0LCBmcmVlYnNkLWVsZik6IGFkZGVkIG1pc3NpbmcgZG90IHRvCgl2ZXJzdWZmaXgKCjE5OTgtMTItMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9NYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IHJlbW92ZWQsIG5vdGhpbmcgbmVlZGVkCgkobGlidG9vbCk6IGF1dG9tYXRpY2FsbHkgdXBkYXRlCgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbiAoc3RkbGliLmgsIHVuaXN0ZC5oLCBzdGRpby5oKTogY2hlY2sKCSogbGlibHRkbC9sdGRsLmM6IGluY2x1ZGUgdGhlbQoKCSogZGVtby9jb25maWd1cmUuaW4gKEJJTkFSWV9IRUxMREwpOiB0ZXN0IHdoZXRoZXIgZGxvcGVuIGlzCglzdXBwb3J0ZWQgYXQgY29uZmlndXJlIHRpbWUKCSogZGVtby9NYWtlZmlsZS5hbSAoaGVsbGRsKTogdXNlIGF1dG9tYWtlIGNvbmRpdGlvbmFscyB0byBidWlsZAoJaGVsbGRsIGFzIGEgc2NyaXB0IG9yIGFzIGEgYmluYXJ5IHByb2dyYW0KCgkqIHRlc3RzL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogcmVtb3ZlIGx0ZGwtKi50ZXN0CgkoY2xlYW4tbG9jYWwpOiBkb24ndCBjbGVhbiBsaWJsdGRsIGFueSBtb3JlCgkqIHRlc3RzL2x0ZGwtY29uZi50ZXN0OiByZW1vdmVkCgkqIHRlc3RzL2x0ZGwtaW5zdC50ZXN0OiBkaXR0bwoJKiB0ZXN0cy9sdGRsLW1ha2UudGVzdDogZGl0dG8KCSogdGVzdHMvbHRkbC11bnN0LnRlc3Q6IGRpdHRvCgkqIHRlc3RzL21kZW1vLW1ha2UudGVzdDogdXBkYXRlZCBhY2NvcmRpbmdseQoJKiB0ZXN0cy9tZGVtby1pbnN0LnRlc3Q6IGRpdHRvCgkqIHRlc3RzL21kZW1vLXVuc3QudGVzdDogZGl0dG8KCSogZG9jL2xpYnRvb2wudGV4aTogZGl0dG8KCgkqIGx0bWFpbi5pbiAoLURTVEFUSUMpOiBjaGFuZ2VkIHRvIC1ETElCVE9PTF9TVEFUSUMsIGFuZCBkZWZpbmVkCglvbmx5IGZvciAtZm9yY2Utc3RhdGljOyBpdCBzaG91bGQgYmUgcmVtb3ZlZCBzb29uLCBiZWZvcmUgcGVvcGxlCglzdGFydCB0byB1c2UgaXQKCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ09ORklHX1NVQkRJUlMpOiBhZGRlZCBsaWJsdGRsCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogYnVpbGQgbGlibHRkbCBieSBkZWZhdWx0CgkoRElTVF9TVUJESVJTKTogc2ltcGxpZnkgZGlzdHJpYnV0aW9uIG9mIGRlbW8gYW5kIG1kZW1vCgkobGlidG9vbCwgY2xpYnRvb2wsIGxpYnRvb2xpemUsIGx0Y29uZmlnLCBsdG1haW4uc2gpOiBhZGQKCXNyY2RpciB3aGVyZSBhcHByb3ByaWF0ZQoJKEFDSU5DTFVERV9NNF9MSVNUKTogbmV3IHJ1bGUgZm9yIG1haW50YWluaW5nIGxpbmtzIGZyb20KCWFjaW5jbHVkZS5tNCB0byBsaWJ0b29sLm00CgkoKmRlbW8vTWFrZWZpbGUuaW4pOiBkb24ndCB1cGRhdGUgYXV0b2NvbmYvYXV0b21ha2UgZmlsZXMgYW55Cgltb3JlOyBtYWtlIGNoZWNrIGlzIG5lZWRlZAoKMTk5OC0xMi0xNCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKGFyY2hpdmVfY21kcyk6IHR3ZWFrZWQgZm9yIGN5Z3dpbiBiMTgtPmIyMC4xCgljb21wYXRpYmlsaXR5IGFuZCBmaXhlZCBhIGJ1ZyB3aXRoIGdlbmVyYXRpbmcgdGhlIGV4cG9ydAoJZGVmaW5pdGlvbnMgZmlsZS4gIFRoaXMgaXMgb25seSB0ZXN0ZWQgb24gYjIwLjEsIGJ1dCBzaG91bGQKCXdvcmsgYmFjayB0byBiMTggYXQgbGVhc3QuCgoxOTk4LTEyLTExICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGx0bWFpbi5pbjogLW1vZHVsZSBpbXBsaWVzIG5vdyAtZXhwb3J0LWR5bmFtaWMsCgkgIGRscHJlb3BlbiBmaWxlcyBpZiB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHkKCSogZG9jL2xpYnRvb2wudGV4aSAobGluayBmbGFncyk6IGFkZGVkIGRvY3VtZW50YXRpb24gZm9yIC1tb2R1bGUKCSAgYW5kIHRoZSB0ZXN0cyBmb3IgbWRlbW8gYW5kIGxpYmx0ZGwKCSogbWRlbW8vTWFrZWZpbGUuYW06IHJlcGxhY2VkIC1kbHByZW9wZW4gd2l0aCAtZGxvcGVuCgoxOTk4LTEyLTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIFBPUlRJTkc6IHJlbW92ZWQgdGhlIHRleHQgQWtpbSBEZW1haWxsZSBjb252ZXJ0ZWQgdG8gLnRleGkKCjE5OTgtMTItMDkgIEFraW0gRGVtYWlsbGUgIDxkZW1haWxsZUBpbmYuZW5zdC5mcj4KCgkqIGRvYy9saWJ0b29sLnRleGk6IGNvbnZlcnRlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcwoJaW5zdHJ1Y3Rpb25zIGZyb20gUE9SVElORwoKMTk5OC0xMi0wOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKGNvbnZlbmllbmNlLCBkZXBsaWJzKTogcHJvcGFnYXRlIGRlcGVuZGVuY2llcwoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChub2luc3RfSEVBREVSUyk6IGRvbid0IGluc3RhbGwgbHRkbC5oIHlldAoJKG5vaW5zdF9MVExJQlJBUklFUyk6IGRpdHRvIGZvciBsaWJsdGRsLmxhCgoxOTk4LTEyLTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBSRUFETUUtYWxwaGE6IGFkYXB0ZWQgdGhlIHJlbGVhc2UgcHJvY2VkdXJlIGZyb20KCSAgYXV0b21ha2UvSEFDS0lORy4KCSogTWFrZWZpbGUuYW06IGFkYXB0ZWQgdGhlIGN2cy1kaXN0IGFuZCBjdnMtZGlmZiBydWxlcyBmcm9tCgkgIGF1dG9tYWtlL01ha2VmaWxlLmFtLiAgSSBndWVzcyB0aGlzIGlzIHByb2JhYmx5IHNhZmUgdG8gdXNlCgkgIGFscmVhZHksIGJ1dCBJIGRpZG4ndCB0ZXN0IGl0IGFzIGl0IHRhZ3MgdGhlIENWUyB0cmVlLiAgSWYKCSAgaXQgbmVlZHMgdHdlYWtpbmcsIHdlJ2xsIGZpbmQgb3V0IGNvbWUgMS4yZC4KCjE5OTgtMTItMDggIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRjb25maWcuaW46IGZpeGVkIHNvbWUgdHlwb3MgaW4gYXJjaGl2ZV9zeW1fY21kcwoJKiBsdG1haW4uaW46IHJlcGxhY2VkIGJhc2VuYW1lIHdpdGggYSBzZWQgZXhwcmVzc2lvbgoKMTk5OC0xMi0wNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBjb25maWd1cmUuaW46IHdlIG5vIGxvbmdlciB1c2UgUFJDUwoKCSogZG9jL2xpYnRvb2wudGV4aSAoYXV0aG9yKTogbGlzdGVkIGFsbCB0aGUgQVVUSE9SUwoJKERsb3BlbiBpc3N1ZXMpOiBhZGRlZCByZWZlcmVuY2UgdG8gbGlibHRkbCwgc3RpbGwgdW5kb2N1bWVudGVkCgkoQysrIGxpYnJhcmllcyk6IGl0J3Mgbm90ICp0aGF0KiBzaW1wbGUsIGFmdGVyIGFsbCA6LSgKCShJbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyk6IHRoZXkncmUgYmFjayEKCjE5OTgtMTItMDQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoYWNfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlKTogYHRlc3QgYSA9PSBiJyBkb2Vzbid0Cgl3b3JrLCB1c2UgYHRlc3QgYSA9IGInIGluc3RlYWQKCgkqIE1ha2VmaWxlLmFtIChtZGVtb19kaXN0ZmlsZXMpOiBsaWJmb29bMTJdLnN5bSBubyBsb25nZXIgZXhpc3QKCgkqIGx0Y29uZmlnLmluIChzb2xhcmlzKTogZG8gbm90IHVzZSAkQ0MgZm9yIGxpbmtpbmcgaWYgR05VIGxkIGlzCglub3QgYXZhaWxhYmxlCgoxOTk4LTEyLTA0ICBNYW5mcmVkIFdlaWNoZWwgIDxNYW5mcmVkLldlaWNoZWxAcGRiLnNpZW1lbnMuZGU+CgoJKiBsdGNvbmZpZy5pbjogUG9ydCB0byBTQ08gVW5peFdhcmUgNy54LgoKMTk5OC0xMi0wMyAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBDaGFuZ2VMb2c6IGNvbnZlcnRlZCBDUi9MRiBiYWNrIHRvIENSIGZvcm1hdAoJKiBsdGNvbmZpZy5pbjogbmV3IHZhcmlhYmxlIHN5c19saWJfc2VhcmNoX3BhdGggZm9yIHNlYXJjaGluZwoJb2YgaW5zdGFsbGVkIGxpYnJhcmllcywgZXhwb3J0IGFyY2hpdmVfc3ltX2NtZHMgYW5kCglzeXNfbGliX3NlYXJjaF9wYXRoCgkqIGx0bWFpbi5pbjogdXNlIHN5c19saWJfc2VhcmNoX3BhdGgsIHJlbW92ZWQgZXh0cmFkZXBsaWJzCgkodGhleSdyZSBub3QgcG9ydGFibGUpCgoxOTk4LTEyLTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogbG9vayBmb3Igc3RyaW5nLmggb3IgZWxzZSBzdHJpbmdzLmgsIGFuZAoJYWxzbyBjaGVjayBmb3IgQU5TSSBzdHJyY2hyKCkgZnVuY3Rpb24uICBGaXggYHVuZGVzY29yZSBiZWZvcmUKCXN5bWJvbHMnIG1hY3JvIHRvIG5vdCByZWx5IG9uIGEub3V0IChjeWd3aW4gdXNlcyBhLmV4ZSEpLiAgRml4CglgdW5kZXJzY29yZSBmb3IgZGxzeW0nIHRvIHNldCBjYWNoZSB2YXJpYWJsZSBwcm9wZXJseSwgbm90IGp1c3QgaW4KCWVudmlyb25tZW50IG9mIEFDX0RFRklORShORUVEX1VTQ09SRSkuCgkqIGxpYmx0ZGwvbHRkbC5oIChfX3B0cl90KTogZm9yIEsmUiBjb21wYXRpYmlsaXR5IHVzaW5nIGNoYXIqLgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3RycmNocik6IGZhbGxiYWNrIGZ1bmN0aW9uIGluY2FzZSBub25lIGlzCglkZWZpbmVkIGluIGxpYmMuCgkodHJpbSwgbHRkbG9wZW4pOiByZXBsYWNlIHJpbmRleCB3aXRoIEFOU0kgc3RycmNoci4KCUFkZCBzdGF0aWMgZnVuY3Rpb24gZGVjbGFyYXRpb25zIHNvIHRoYXQgd2UgZ2V0IHR5cGUgY2hlY2tpbmcgd2l0aAoJQU5TSSBjb21waWxlcnMuICBVc2UgX19wdHJfdCBpbnN0ZWFkIG9mIHZvaWQqLgoKMTk5OC0xMi0wMSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsdGNvbmZpZy5pbjogYWRkZWQgLWV4cG9ydC1zeW1ib2xzIHN1cHBvcnQgZm9yIEdOVSBsZCBhbmQKCVNvbGFyaXMgKHVudGVzdGVkKSwgYXJjaGl2ZV9zeW1fY21kcyBmb3IgLWV4cG9ydC1zeW1ib2xzCgkqIGRvYy9saWJ0b29sLnRleGksIGx0bWFpbi5pbjogLWV4cG9ydC1zeW1ib2xzIGlzIG5vdwoJaW5kZXBlbmRlbnQgZnJvbSAtZXhwb3J0LWR5bmFtaWMgYW5kIGRvZXMgbm90IHdvcmsgZm9yIG1vZHVsZXMKCWFueW1vcmUKCSogbHRtYWluLmluOiBhZGRlZCBzb21lIGNoZWNrcyBmb3IgLWV4cG9ydC1zeW1ib2xzCgkqIG1kZW1vL21vZHVsZXMvTWFrZWZpbGUuYW06IHJlcGxhY2VkIC1leHBvcnQtc3ltYm9scyB3aXRoCgktZXhwb3J0LWR5bmFtaWMgc2luY2UgaXQgZG9lc24ndCB3b3JrIGZvciBtb2R1bGVzCgoxOTk4LTEyLTAxICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBSRUFETUU6IFVwZGF0ZWQgaG9tZXBhZ2UgcG9pbnRlciB0byBnbnUgbGlidG9vbCBwYWdlLgoKCSogbHRjb25maWcuaW4gKGx0ZGxsLmMpOiB1cGRhdGUgdGhlIGx0ZGxsLmMgZmlsZSBmb3IgY3lnd2luYjIwLgoJQmFzZWQgb24gY29kZSBmcm9tIE11bWl0IEtoYW4gPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+LgoJKGFyY2hpdmVfY21kcyk6IGNvcnJlY3QgdHlwbyBsaWJ0b29sLmMtPmx0ZGxsLmMuICBVcGRhdGUgc2hlbGwKCWNvbW1hbmRzIGZvciBjeWd3aW4zMi4KCgkqIGxpYnRvb2wubTQgKEFNX1NZU19TWU1CT0xfVU5ERVJTQ09SRSk6IE5ldyBtYWNybzsgZmluZCBvdXQKCXdoZXRoZXIgY29tcGlsZWQgc3ltYm9scyBoYXZlIGFuIGV4dHJhIGxlYWRpbmcgdW5kZXJzY29yZS4KCShBTV9TWVNfTk1fUEFSU0UpOiBOZXcgbWFjcm8gKGNvbnZlcnRlZCB0byBtNCBmcm9tIGx0Y29uZmlnLmluKTsKCWZpbmQgYSBzZWQgZXhwcmVzc2lvbiB0byBwYXJzZSBnbG9iYWwgc3ltYm9scyBmcm9tIHRoZSBvdXRwdXQgb2YKCSROTS4KCShBTV9QUk9HX0xJQlRPT0wpOiByZXF1aXJlIEFNX1NZU19OTV9QQVJTRSBhbmQKCUFNX1NZU19TWU1CT0xfVU5ERVJTQ09SRS4KCSogZGVtby9kbG1haW4uYyAobWFpbik6IFJlbW92ZSBhIHNpbmdsZQlsZWFkaW5nIHVuZGVyc2NvcmUgZnJvbQoJY29tcGlsZWQgc3ltYm9sIG5hbWVzIGlmIG5lY2Vzc2FyeS4KCjE5OTgtMTItMDEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViOiBpbXBvcnRlZCBmcm9tIGF1dG9jb25mIHByZS0yLjEzCgoxOTk4LTExLTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sIChBTV9QUk9HX0xEKTogT29wcy4uLiB3ZSBuZWVkIHRvIGtub3cgdGhlIGhvc3Rfb3MgZm9yCgl0aGUgY2hhbmdlcyBiZWxvdy4gIEknbSBub3Qgc3VyZSB3aGV0aGVyIG1pbmd3MzIgYW5kIG9zMiBzdXBwb3J0CglVTkMgcGF0aHMsIGlmIHRoZXkgZGlkIHdlIHdvdWxkbid0IG5lZWQgdGhlIGNoZWNrLCB3ZSBjb3VsZCB1c2UKCVVOQyBwYXRocyBvbiBhbGwgdGhyZWU7IG9yIGlmIHRoZSBidWcgd2l0aCAkTEQgbm90IGJlaW5nCglzaGVsbC1tZXRhIGVzY2FwZWQgd2FzIGZpeGVkLCB3ZSBjb3VsZCB1c2UgJ1xcJyBzZXBhcmF0b3JzIG9uIGFsbAoJdGhyZWUuIEFDX1JFUVVJUkUnZWQgQUNfQ0FOT05JQ0FMX0hPU1QuCgoJKiBsaWJ0b29sLm00IChBTV9QUk9HX0xEKTogQ2Fubm9uaWNhbGl6ZSB0aGUgYWJzb2x1dGUgcGF0aCBmb3IgdGhlCglsZCBwcm9ncmFtOyAgVGhlIG9yZGVyIGlzIGZ1bm55IHRvIHByb3ZpZGUgY2Fub25pY2FsaXphdGlvbiB0bwoJcGF0aHMgd2l0aCAnXFwnIHNlcGFyYXRvcnMgYXMgd2VsbCBhcyAnLycuCgkqIGx0Y29uZmlnLmluOiBkaXR0by4KCgkqIEFVVEhPUlM6IEFkZGVkIG15c2VsZiBhcyBhIGNvLW1haW50YWluZXIuCgoJKiBsdGNvbmZpZy5pbiAoYXJjaGl2ZV9jbWRzKTogVGhlIGA7XCcgaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQgaXMKCWV4cGFuZGVkIHdyb25nbHkgZm9yIGN5Z3dpbjMyLCBtaW5ndzMyLCBhaXgzIGFuZCBhaXg0LiBDaGFuZ2VkIHRvCglgOycuCgoxOTk4LTExLTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wuc3BlYyAoVVJMKTogcG9pbnQgdG8gd3d3LmdudS5vcmcKCShTb3VyY2UpOiBwb2ludCB0byBmdHAuZ251Lm9yZwoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiByZW1vdmVkIGxpYnRvb2wucHJqCglSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlIDxkZW1haWxsZUBpbmYuZW5zdC5mcj4KCjE5OTgtMTEtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGVjaG8pOiBhdm9pZCBzaGVsbCBlcnJvciBtZXNzYWdlcyB3aGVuIHdlJ3JlCgl0ZXN0aW5nIGZvciBsYXJnZSBjb21tYW5kIGxpbmUgc3VwcG9ydAoJUmVwb3J0ZWQgYnkgQXhlbCBUaGltbSA8QXhlbC5UaGltbUBwaHlzaWsuZnUtYmVybGluLmRlPgoKCSogZG9jL1BMQVRGT1JNUzogdXBkYXRlZCBsYXN0LXRlc3RlZCByZWxlYXNlIGZvciBwbGF0Zm9ybXMgSSd2ZQoJZ290IGFjY2VzcyB0bwoKCSogVEhBTktTOiBhZGRlZCBDaHJpcyBQLiBSb3NzCgoxOTk4LTExLTI0ICBDaHJpcyBQLiBSb3NzICA8Y3Jvc3NAZW5nLnVzLnV1Lm5ldD4KCgkqIGx0Y29uZmlnLmluOiBhZGRlZCByZWNvZ25pdGlvbiBvZiB0aGUgZHluYW1pYyBsaW5rZXIgb24gQlNEL09TIDQueAoJKiBSRUFETUU6IGFkZGVkIEJTRC9PUyA0LnggdG8gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIHBsYXRmb3JtcwoJKiBkb2MvUExBVEZPUk1TOiBhZGRlZCBCU0QvT1MgNC54IHN1cHBvcnQgZm9yIHZhcmlvdXMgaG9zdCBpZCdzCgoxOTk4LTExLTI0ICBEYXZpZCBIZWluZSAgPGRsaGVpbmVAdHJ1ZmZsZS5TdGFuZm9yZC5FRFU+CgoJKiBsdG1haW4uaW4gKHBhc3NfYWxsKTogYWN0aXZlbHkgcGFzcyB0aGUgZmxhZ3MKCjE5OTgtMTEtMjQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZGVwZGVtbzogYWRkZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgZGVtbyAoZG9lc24ndCB3b3JrIHlldCEpCgkqIEFVVEhPUlM6IGFkZGVkIG15c2VsZiB0byB0aGUgbGlzdCBvZiBtYWludGFpbmVycwoKMTk5OC0xMS0yMiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsaWJsdGRsOiBhZGRlZCBzdXBwb3J0IGZvciAubGEgZmlsZXMsIExHUEwgbGljZW5zZSwKCUsmUiBjb21wYXRpYmlsaXR5LCBzb21lIEFQSSBjaGFuZ2VzIGFuZCBidWdmaXhlcwoJKiBsdG1haW4uaW46IHJlbmFtZWQgLW1vZHVsZSBmbGFnIChmb3IgY29tcGlsaW5nKSB0byAtZm9yY2Utc3RhdGljLAoJZGVmaW5lIC1EU1RBVElDIHdoZW4gY29tcGlsaW5nIHN0YXRpYyAubyBmaWxlcywKCWRvIG5vdCBpbmNsdWRlIGRpcmVjdG9yaWVzIGluIGRsZF9wcmVsb2FkZWRfc3ltYm9scwoJKiBtZGVtbzogbW9kaWZpZWQgbWRlbW8gdG8gd29yayB3aXRoIHRoZSBuZXcgbGlibHRkbAoJKiB0ZXN0cy9tZGVtby1leGVjLnRlc3QsIHRlc3RzL21kZW1vLWluc3QudGVzdDogdXNlIC5sYSBmaWxlcwoKMTk5OC0xMS0yMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJsdGRsL2x0ZGwuYzogcmVwbGFjZSBOVUxMIHdpdGggMCwgc28gdGhhdCB3ZSBkb24ndCBkZXBlbmQgb24KCWhlYWRlciBmaWxlcyBkZWZpbmluZyBpdC4KCgkqIGx0Y29uZmlnLmluIChhcmNoaXZlX2NtZHMsIG9zZjMsIG9zZjQsIHNvbGFyaXMsIHN1bm9zNCk6IGNyZWF0ZQoJbGlicmFyaWVzIHdpdGggZ2NjIC1zaGFyZWQgaWYgdXNpbmcgZ2NjIHdpdGhvdXQgR05VIGxkLgoKCSogbHRjb25maWcuaW46IHJlcGxhY2VkIG9jY3VycmVuY2VzIG9mIHNvbGFyaXMyIHdpdGggc29sYXJpcywgdG8KCXByZXBhcmUgZm9yIFNvbGFyaXMgNwoKMTk5OC0xMS0xOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBtZGVtby9NYWtlZmlsZS5hbSAoaGVsbF9kZWJ1Z19MREZMQUdTKTogLWRscHJlb3BlbiAtPiAtZGxvcGVuCgkoaGVsbF9MREZMQUdTKTogYWRkZWQgLWV4cG9ydC1keW5hbWljIGFuZCAtZGxvcGVuCgkoU1VCRElSUywgSU5DTFVERVMpOiBhZGRlZCBtb2R1bGVzIGRpcmVjdG9yeQoJKGZvbzEuYywgZm9vMi5jLCBmb28uaCwgbGliZm9vMS5zeW0sIGxpYmZvbzIuc3ltKTogbW92ZWQgdG8gbW9kdWxlcwoJKiBNYWtlZmlsZS5hbTogZGl0dG8KCSogdGVzdHMvbWRlbW8tZXhlYy50ZXN0LCB0ZXN0cy9tZGVtby1pbnN0LnRlc3Q6IGxpYnJhcmllcyBtb3ZlZAoJKiBtZGVtby9tb2R1bGVzL01ha2VmaWxlLmFtOiBuZXcgZmlsZQoKCSogKi9NYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IGFkZGVkIG5vLWRlcGVuZGVuY2llcwoKCSogbHRtYWluLmluOiBtaXNzaW5nIGB0ZXN0JyBiZXR3ZWVuIGAmJicgYW5kIGAiJG1vZHVsZSInCgoJKiBsdGNvbmZpZy5pbiAoZWNob190ZXN0X3N0cmluZyk6IHRoZSB3aG9sZSBsdGNvbmZpZyBzY3JpcHQgd2FzCgl0b28gbXVjaCBmb3IgRFU0LjAncyBrc2gsIGJ1dCB0aGUgZmlyc3QgNTAgbGluZXMgd2lsbCBiZSBlbm91Z2guCgoJKiBsdG1haW4uaW4gKGluc3RhbGxlZCk6IG5ldyB2YXJpYWJsZSBkZWZpbmVkIHdpdGhpbiBhIC5sYSBmaWxlLAoJc28gdGhhdCBsaWJ0b29sIGNhbiBub3cgbGluayBhbHJlYWR5LWluc3RhbGxlZCBsaWJyYXJpZXMgaW50byBhCglwcm9ncmFtLgoJKiBORVdTOiBkaXR0bwoJKiBkb2MvbGlidG9vbC50ZXhpIChMaW5raW5nIGV4ZWN1dGFibGVzKTogZG9jdW1lbnQgaXQKCgkqIGx0bWFpbi5pbiAob3V0cHV0X29iamRpcik6IGNvbXB1dGUgaXQgZnJvbSAkb3V0cHV0LCBub3QgJGFyZwoKCSogdGVzdHMvbWRlbW8taW5zdC50ZXN0IChsaWJsdGRsKTogaW5zdGFsbCBpdAoJKiB0ZXN0cy9tZGVtby11bnN0LnRlc3QgKGxpYmx0ZGwpOiB1bmluc3RhbGwgaXQKCSogdGVzdHMvTWFrZWZpbGUuYW0gKFRFU1RTKTogbGlzdCBsdGRsLXVuc3QudGVzdCBiZWZvcmUgbWRlbW8tY29uZi50ZXN0CgoxOTk4LTExLTE4ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE5FV1M6IC1tb2R1bGUgYW5kIGxpYmx0ZGwKCSogbWRlbW8vTWFrZWZpbGUuYW06IC4uL2xpYmx0ZGwgaXMgd2l0aGluICQoc3JjZGlyKQoKMTk5OC0xMS0xOCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsaWJsdGRsLCBNYWtlZmlsZS5hbTogYWRkZWQgbGlibHRkbCAoYSBzeXN0ZW0gaW5kZXBlbmRlbnQKCWRsb3BlbiB3cmFwcGVyIGxpYnJhcnkgZXh0cmFjdGVkIGZyb20gbWRlbW8pCgkqIGx0bWFpbi5pbjogYWRkZWQgLW1vZHVsZSBmbGFnIGZvciBjb21waWxpbmcgYW5kIGxpbmtpbmcgb2YKCW1vZHVsZXMuIElmIGVuYWJsZWQgaXQgY29tcGlsZXMgYWx3YXlzIGJvdGggLm8gKHdpdGggLURMVF9SRU5BTUUpCglhbmQgLmxvIGZpbGVzCgkqIG1kZW1vOiBtb2RpZmllZCBtZGVtbyB0byB3b3JrIHdpdGggbGlibHRkbAoJKiB0ZXN0cy9sdGRsKjogYWRkZWQgdGVzdHMgZm9yIGxpYmx0ZGwKCjE5OTgtMTEtMTYgIFN0ZXZlIFByaWNlICA8c3ByaWNlQGhpd2FheS5uZXQ+CgoJKiBsdGNvbmZpZy5pbjogd2hlbiAkaG9zdF9vcyBpcyBmcmVlYnNkWzIzXSogZGV0ZXJtaW5lIHdoZXRoZXIKCXRoZSBjdXJyZW50IGxpbmtlciBmb3JtYXQgaXMgYS5vdXQgb3IgRUxGCgkqIGx0bWFpbi5pbjogYWRkIHR3byBuZXcgJHZlcnNpb25fdHlwZSdzLCBmcmVlYnNkLWFvdXQgYW5kCglmcmVlYnNkLWVsZiwgdG8gc3VwcG9ydCBhYm92ZSBjaGFuZ2UKCjE5OTgtMTEtMTYgIFN0ZXBoYW4gS3Vsb3cgIDxjb29sb0BrZGUub3JnPgoKCSogbHRjb25maWcuaW46IGV4dGVudCBub19idWlsdGluX2ZsYWcgdG8gY29udGFpbiAtZm5vLXJ0dGkgYW5kCgktZm5vLWV4Y2VwdGlvbnMgaW4gY2FzZSB3ZSBjb21waWxlIHdpdGggYSBnY2MsIHRoYXQgc3VwcG9ydHMKCXRoaXMgb3B0aW9ucyAoZWdjcyBhbmQgZ2NjID49IDIuOCkKCjE5OTgtMTEtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChDX2NvbXBpbGVyKTogY29weSAkQ0MgYmVmb3JlIGl0IGlzIG92ZXJ3cml0dGVuIHdpdGgKCWNvbW1hbmQtbGluZSBjb21waWxlciwgc28gdGhhdCB3ZSBjYW4gdXNlIGl0IHRvIGNvbXBpbGUgQyBzb3VyY2VzCglnZW5lcmF0ZWQgZHVyaW5nIHRoZSBidWlsZC4gIFRoaXMgZml4ZXMgdGhlIHByb2JsZW0gdGhhdCBzaG93ZWQgdXAKCXdpdGggLWV4cG9ydC1keW5hbWljIG9mIEMrKyBwcm9ncmFtcyBpbiBlZ2NzIDEuMS4KCSogTkVXUzogZGl0dG8KCjE5OTgtMTEtMTIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogUE9SVElORzogUG9ydGluZyBpbnN0cnVjdGlvbnMgYXJlIGluIHRoZSBsaWJ0b29sIG1hbnVhbCBhbHJlYWR5CgoJKiBORVdTOiBNZW50aW9uIC1leHBvcnQtc3ltYm9scyBhbmQgbmV3IGRscHJlb3BlbgoKMTk5OC0xMS0xMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKElGUyk6IHJldmVydCBHYXJ5J3MgcGF0Y2ggd2hlbiBwYXJzaW5nIHZlcnNpb24KCWluZm9ybWF0aW9uOyB3ZSBzdGlsbCB1c2UgYDonIGhlcmUgOi0pCgoJKiBORVdTOiB1cGRhdGVkCgkqIFBPUlRJTkc6IG5ldyBmaWxlLCB3aXRoIGdlbmVyYWwgaW5zdHJ1Y3Rpb25zIGFuZCBpbnRlci1saWJyYXJ5CglkZXBlbmRlbmNpZXMgdGlwcwoKMTk5OC0xMS0xMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRjb25maWcuaW46IG1ha2UgdXNlIG9mICd+JyBmaWVsZCBzZXBhcmF0b3IgaW4gcmVsb2FkX2NtZHMsCglvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCBvbGRfYXJjaGl2ZV9jbWRzLCBhcmNoaXZlX2NtZHMsCglvbGRfcG9zdGluc3RhbGxfY21kcywgcG9zdGluc3RhbGxfY21kcywgb2xkX3Bvc3R1bmluc3RhbGxfY21kcywKCXBvc3R1bmluc3RhbGxfY21kcyBhbmQgZmluaXNoX2NtZHMsIHNvIHRoYXQgdGhlIHNlbWktY29sb25zIGluc2lkZQoJaWYvdGhlbi9lbHNlL2ZpIGFuZCBmb3IvZG8vZG9uZSBldGMuIGRvIG5vdCBicmVhayB0aGUgZXZhbCBsb29wIGluCglsdG1haW4uaW4gKGJlbG93KS4KCSogbHRtYWluLmluOiBjaGFuZ2VkIGFsbCBvZiB0aGUgZXZhbCBsb29wcyB0byB1c2UgYW4gSUZTIG9mIGB+JywKCXRvIGFsbG93IGRpZmZlcmVudGlhdGlvbiBiZXR3ZWVuIHRoZSBlbmQtb2Ytc3RhdGVtZW50LTsKCShub3cgYH4nIGlzIHVzZWQpIGFuZCBlbmQtb2Ytc3Vic3RhdGVtZW50LTsgKHN0aWxsIGA7JykuICBUaGlzCglmaXhlcyBBSVggYW5kIHdpbjMyIGF0IGxlYXN0LgoKMTk5OC0xMS0xMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoc3Vub3MqLCBzeW1wYXQsIHN5bXhmcm0pOiByZW1vdmUgdW5kZXJzY29yZQoJcHJlcGVuZGVkIGJ5IHRoZSBjb21waWxlcgoKMTk5OC0xMS0xMCAgVG9zaGlvIEt1cmF0b21pICA8YmFkZ2VyQHBydHItMTMudWNzYy5lZHU+CgoJKiBsdGNvbmZpZy5pbjogcmUtZW5hYmxlIGRlcGxpYnMKCSogbHRtYWluLmluOiBzdXBwb3J0IGRlcGxpYnMsIGF0IGxlYXN0IGZvciBHTlUvTGludXgveDg2CglVcGRhdGVkIHRvIGN1cnJlbnQgbGlidG9vbCBieSBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCjE5OTgtMTEtMTAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogbHRtYWluLmluIChsaW5rKTogTWFrZSB0aGUgcmVsaW5rIHdhcm5pbmcgbGVzcyBoYXJzaC4KCjE5OTgtMTEtMDcgIFdpbGxpYW0gTS4gUGVycnkgIDx3bXBlcnJ5QGF2ZW50YWlsLmNvbT4KCgkqIGx0Y29uZmlnLmluIChhaXgzLCBhaXg0KTogdW5pcXVpZnkgc3ltYm9sIG5hbWVzIGluIGFyY2hpdmVfY21kcwoKMTk5OC0xMS0wNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbjogYWRkIC0tZmFsYmFjay1lY2hvLCB0byBiZSB1c2VkIGlmIGV2ZXJ5dGhpbmcgZWxzZQoJZmFpbHMuICBUaGUgdGVzdHMgbm93IGNoZWNrIHRoZSBiZWhhdmlvciBvZiAkZWNobyBmb3IgdmVyeSBsYXJnZQoJc3RyaW5ncywgYmVjYXVzZSBzb21lIGVjaG8gY29tbWFuZHMgd291bGQganVzdCBjb3JlIGR1bXAgKGUuZy4sCglTb2xhcmlzJyBwcmludGYpLiAgSWYgdG9vIGxhcmdlIHN0cmluZ3MgZmFpbCwgc21hbGxlciBvbmVzIGFyZQoJdGVzdGVkLgoJKGx0ZWNobyk6IGFycmFuZ2UgdGhhdCwgaWYgdGhlIC0tZmFsbGJhY2stZWNobyBtZXRob2QgaXMgc2VsZWN0ZWQsCgllY2hvIHdpbGwgYmUgZGVmaW5lZCBpbiB0aGUgbGlidG9vbCBzY3JpcHQgc28gYXMgdG8gcmUtcnVuIGl0c2VsZiwKCW5vdCBsdGNvbmZpZwoJKiBsdG1haW4uaW46IGFkZCAtLWZhbGxiYWNrLWVjaG8KCShxZWNobykgZW5zdXJlIHRoYXQsIGlmIC0tZmFsYmFjay1lY2hvIGlzIGJlaW5nIHVzZWQsIHFlY2hvIGlzCglkZWZpbmVkIHdpdGggdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnRvb2wgc2NyaXB0CgoJKiB0ZXN0cy9zaC50ZXN0ICh0ZXN0IFgpOiBlbnN1cmUgdGhhdCB0aGUgZG91YmxlLXF1b3RlIHN1cHBvc2VkIHRvIGJlCglyZXBvcnRlZCBpcyByZWFsbHkgcmVwb3J0ZWQKCjE5OTgtMTEtMDcgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbWRlbW8vbWFpbi5jOiByZW1vdmVkIGhhcmRjb2RlZCBsaWJyYXJ5IG5hbWVzOyBsaW5rIGFnYWluc3QgLWxtCgkqIHRlc3RzL21kZW1vLWV4ZWMsIHRlc3RzL21kZW1vLWluc3Q6IHBhc3MgdGhlIGxpYnJhcnkgbmFtZXMKCXRvIHRoZSBwcm9ncmFtCgoxOTk4LTExLTA3ICBNYXJjIEouIEZyYWlvbGkgIDxmcmFpb2xpQGRnLXJ0cC5kZy5jb20+CgoJKiBSRUFETUU6IEFkZGVkIERHL1VYCgkqIGRvYy9QTEFURk9STVM6IGRpdHRvCgoxOTk4LTExLTA0ICBNaWNoYWVsIFRpZW1hbm4gIDx0aWVtYW5uQGN5Z251cy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoaXJpeDYpOiBpdCdzIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQgZnJvbSBpcml4NQoKMTk5OC0xMS0wNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBUSEFOS1M6IEFkZGVkIFRob21hcyBUYW5uZXIgYW5kIEdhcnkgVi4gVmF1Z2hhbgoKCSogbHRjb25maWcuaW4sIGx0bWFpbi5pbjogdXBkYXRlZCBhbmQgZml4ZWQgdGhlIHBhdGNoZXMgYmVsb3cKCjE5OTgtMTEtMDQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbWRlbW8vKjogYWRkZWQgbmV3IGRlbW8gdG8gZGVtb25zdHJhdGUgYnVpbGRpbmcgb2YgZGxvcGVuZW5kCgltb2R1bGVzCgkqIHRlc3RzL01ha2VmaWxlLmFtLCB0ZXN0cy9tZGVtbyo6IGFkZGVkIHNvbWUgdGVzdHMgZm9yIG1kZW1vCgoxOTk4LTExLTA0ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBkZW1vL2NvbmZpZ3VyZS5pbjogYWRkZWQgQUNfRVhFRVhUIG1hY3JvIHNvIHRoYXQgdGhlIHRlc3RzIGNhbgoJd29yayBvbiBjeXdpbjMyL21pbmd3MzIgaG9zdHMuICBUaGlzIHJlcXVpcmVzIHRoZSBjdXJyZW50IENWUwoJYXV0b2NvbmYKCjE5OTgtMTEtMDQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRtYWluLmluOiBOZXcgZmxhZyAtZXhwb3J0LXN5bWJvbHM7IG5ldyBkbHByZW9wZW4gc3lzdGVtCgkqIGRlbW8vZGxtYWluLmM6IHJlbW92ZWQgZGxkX3ByZWxvYWRlZF9zeW1ib2xfY291bnQKCjE5OTgtMTEtMDQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGx0bWFpbi5pbjogT24gaW5zdGFsbGF0aW9uLCBkb24ndCBnZXQgY29uZnVzZWQgaWYgdGhlIHNhbWUgbmFtZQoJYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgbGlzdCBvZiBsaWJyYXJ5IG5hbWVzLgoKMTk5OC0xMS0wNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbHRjb25maWcuaW46IEFkZCBvYmpleHQgYW5kIGxpYmV4dCB2YXJpYWJsZXMuICBDaGVjayBmb3Igb2JqZWN0CglzdWZmaXguICBDaGVjayBmb3IgbWluZ3czMiogYXMgd2VsbCBhcyBjeWd3aW4zMiouICBVc2Ugb2JqZXh0IHdoZW4KCXRlc3RpbmcgY29tcGlsZXIuICBBZGQgc3VwcG9ydCBmb3IgVmlzdWFsIEMrKyBvbiBjeWd3aW4zMiB3aGVuIG5vdAoJdXNpbmcgZ2NjLiAgQWRkIG9iamV4dCwgbGliZXh0LCBhbmQgZml4X3NyY2ZpbGVfcGF0aCB0byBnZW5lcmF0ZWQKCWxpYnRvb2wgc2NyaXB0LgoJKiBsdG1haW4uaW46IFVzZSAuJHtvYmpleHR9IHJhdGhlciB0aGFuIC5vLiAgVXNlIGZpeF9zcmNmaWxlX3BhdGgKCWlmIGl0IGlzIHNldC4gIENoZWNrIGZvciAub2JqIGFzIHdlbGwgYXMgZm9yIC5vLCBhbmQgZm9yIC5saWIgYXMKCXdlbGwgYXMgZm9yIC5hLiAgVXNlIC4ke2xpYmV4dH0gcmF0aGVyIHRoYW4gLmEgd2hlbiBjcmVhdGluZyBvbGQKCWxpYnJhcmllcy4KCSogbGlidG9vbGl6ZS5pbjogQ2hhbmdlIGluaXRpYWwgL2Jpbi9zaCB0byBAU0hFTExALgoJKiBsaWJ0b29sLm00IChBTV9QUk9HX0xJQlRPT0wpOiBBZGQgQUNfUkVRVUlSRSBmb3IKCUFDX0NBTk9OSUNBTF9CVUlMRCwgc28gdGhhdCBhdXRvY29uZiBkb2Vzbid0IGdldCBtaXhlZCB1cCBieSB0aGUKCUFDX1JFUVVJUkUgaW4gQUNfQ0hFQ0tfVE9PTC4KCjE5OTgtMTEtMDQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBMb29rIGluIHRoZSByaWdodCBkaXJlY3RvcnkgZm9yIGxpYnRvb2wuYyBpbgoJYXJjaGl2ZV9jbWRzIGZvciBjeWd3aW4zMi4KCjE5OTgtMTEtMDQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBGaXggY3lnd2luMzIgc3VwcG9ydCB0byBhdm9pZCB1c2luZyBhIGRvdWJsZQoJZXh0ZW5zaW9uLCB0byBkZWxldGUgdGhlIGRlZiBmaWxlLCB0byBzZXQgdmVyc2lvbl90eXBlIHRvIHdpbmRvd3MsCglhbmQgdG8gaW5jbHVkZSB2ZXJzdWZmaXggaW4gdGhlIERMTCBuYW1lLgoJKiBsdG1haW4uaW46IEFkZCBzdXBwb3J0IGZvciBhIHZlcnNpb25fdHlwZSBvZiB3aW5kb3dzLgoKMTk5OC0xMS0wNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbHRjb25maWcuaW46IEFkZCBjeWd3aW4zMiBzdXBwb3J0LgoJKiBsaWJ0b29sLm00IChBTV9QUk9HX0xJQlRPT0wpOiBDYWxsIEFNX1NZU19MSUJUT09MX0NZR1dJTjMyIG9uIGEKCWN5Z3dpbjMyIGhvc3QuICBQYXNzIERMTFRPT0wgYW5kIEFTIHRvIGx0Y29uZmlnLgoJKEFNX1NZU19MSUJUT09MX0NZR1dJTjMyKTogTmV3IG1hY3JvLgoKMTk5OC0xMS0wNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJ0b29sLm00IChzY28pOiBmaXggdHlwbwoKMTk5OC0xMS0wNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbHRjb25maWcuaW46IE9uIEFJWCwgZG9uJ3QgdHJlYXQgR05VIGxkIHNwZWNpYWxseS4KCjE5OTgtMTEtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGhhcmRjb2RlX21pbnVzX0wpOiBSZXZlcnQgSWFuJ3MgcGF0Y2ggZm9yCglsdGNvbmZpZy5pbi4gIEFsdGhvdWdoIC1MIGhhcmRjb2RpbmcgaXMgbm90IHVzZWQgd2l0aCBHTlUgbGQsIGl0Cglkb2VzIGhhcHBlbiwgc28gaGFyZGNvZGVfbWludXNfTCBtdXN0IGJlIHNldCB0byB5ZXMuCgoJKiBsdGNvbmZpZy5pbiAoY29tcGlsZXJfb19sbyk6IGNoZWNrIHdoZXRoZXIgd2UgY2FuIHdyaXRlIGRpcmVjdGx5Cgl0byBhIC5sbwoKCSogbHRtYWluLmluIChjb21waWxlcl9vX2xvKTogaWYgbm90LCB3cml0ZSB0byAubyBhbmQgcmVuYW1lIGl0CgoxOTk4LTExLTA0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsdGNvbmZpZy5pbjogRm9yIHN1bm9zNCB1c2luZyBHTlUgbGQsIHNldCBoYXJkY29kZV9taW51c19MIHRvCgluby4KCSogbHRtYWluLmluOiBBZGQgc29tZSBoYWNrcyB0byBtYWtlIFN1bk9TIC0tZW5hYmxlLXNoYXJlZCB3b3JrCgl3aGVuIHVzaW5nIEdOVSBsZC4KCjE5OTgtMTEtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogVEhBTktTOiBBZGRlZCBNYXJjIEouIEZyYWlvbGkKCjE5OTgtMTEtMDQgIE1hcmMgSi4gRnJhaW9saSAgPGZyYWlvbGlAZGctcnRwLmRnLmNvbT4KCgkqIGx0Y29uZmlnLmluIChkZ3V4KTogbmV3IHN1cHBvcnRlZCBwbGF0Zm9ybXMKCjE5OTgtMTEtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKG5lZWRfbG9ja3MpOiBpZiBuZWl0aGVyIGAtYyAtbycgbm9yIGhhcmQgbGlua3MgYXJlCglhdmFpbGFibGUsIGZhbGxiYWNrIHRvIG5vdCBzbyBzYWZlIG1lY2hhbmlzbSwgYnkgc2V0dGluZwoJbmVlZF9sb2NrcyB0byB3YXJuCgkqIGx0bWFpbi5pbiAobmVlZF9sb2Nrcyk6IHdoZW4gbmVlZF9sb2NrcyBpcyBzZXQgdG8gd2FybiwgdXNlIHRoZQoJbG9ja2ZpbGUgdG8gdHJ5IHRvIGZhaWwgaW4gY2FzZSBvZiBpbmNvcnJlY3QgY29uY3VycmVudCBidWlsZHMKCgkqIFRIQU5LUzogQWRkZWQgRXJpYyBFc3RpZXZlbmFydAoKMTk5OC0xMS0wNCAgRXJpYyBFc3RpZXZlbmFydCAgPGVyaWNAdmlhLmVjcC5mcj4KCgkqIGRvYy9saWJ0b29sLnRleGkgKENvbXBpbGUgbW9kZSk6IERvY3VtZW50IHRoYXQgLW8gaXMgZnVsbHkKCXN1cHBvcnRlZC4KCgkqIGxpYnRvb2wubTQgKGxpYnRvb2wtbG9jayk6IG5ldyBBUkdfRU5BQkxFOyBzZXRzIChuZWVkX2xvY2tzKQoJKiBsdGNvbmZpZy5pbiAoZGlzYWJsZS1sb2NrKTogY29udHJvbCBuZWVkX2xvY2tzCgkoaGFyZF9saW5rcyk6IGNoZWNrIHdoZXRoZXIgaGFyZC1saW5rcyBjYW4gYmUgdXNlZCBmb3IgbG9ja2luZwoJKiBsdG1haW4uaW4gKG5lZWRfbG9ja3MpOiB1c2UgJG91dHB1dF9vYmoubG9jayBmb3IgbG9ja2luZwoKMTk5OC0xMS0wMyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW46IGNvcnJlY3RseSBjcmVhdGUgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoCglkaXJlY3RvcnkgY29tcG9uZW50cyBpbiB0aGVpciBuYW1lcwoKMTk5OC0xMS0wMyAgRXJpYyBFc3RpZXZlbmFydCA8ZXJpY0B2aWEuZWNwLmZyPgoKCSogbHRtYWluLmluIChvdXRwdXRfb2JqKTogdHlwbwoKMTk5OC0xMS0wMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbHRjb25maWcuaW46IEZvciBzdW5vczQsIGFkZCAke2xpYm5hbWV9LnNvJHZlcnN1ZmZpeCB0bwoJbGlicmFyeV9uYW1lc19zcGVjLgoJKiBsdG1haW4uaW46IEZvciB2ZXJzaW9uX3R5cGUgb2Ygc3Vub3MsIHNldCB2ZXJzdWZmaXggZXZlbiBpZgoJLXZlcnNpb24taW5mbyB3YXMgbm90IHVzZWQuCgoxOTk4LTExLTAyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0bWFpbi5pbiAobGlib2JqKTogZGVmYXVsdCB2YWx1ZSBtdXN0IG5vdCBjb250YWluIGRpcmVjdG9yeQoJY29tcG9uZW50cwoKMTk5OC0xMS0wMiAgRXJpYyBFc3RpZXZlbmFydCA8ZXJpY0B2aWEuZWNwLmZyPgoKCSogbHRjb25maWcuaW4gKGNvbXBpbGVyKTogZGV0ZWN0IGlmIHRoZSBjb21waWxlciBzdXBwb3J0cwoJLWMgYW5kIC1vIGZsYWdzLCBjcmVhdGUgYSB2YXJpYWJsZSBjb21waWxlcl9jX28uIEFsc28gaXNzdWUKCWEgYmlnIHdhcm5pbmcgaWYgaXQgaXMgbm90IHN1cHBvcnRlZAoKCSogbHRtYWluLmluIChjb21waWxlKTogZW5hYmxlIHRoZSAtbyBvcHRpb24gYXMgaW5wdXQgZm9yIGxpYnRvb2wuCglUaGUgb2JqZWN0cyBhcmUgbm90IG1vdmVkIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyAtbyB3aXRoIC1jLgoJU291cmNlcyBhbmQgb2JqZWN0cyBjYW4gY29udGFpbiByZWxhdGl2ZSBkaXJlY3Rvcmllcy4KCShsaW5rKTogZW5hYmxlIHRoZSBsaW5raW5nIG9mIGV4ZWN1dGFibGVzIGludG8gcmVsYXRpdmUgZGlyZWN0b3JpZXMKCjE5OTgtMTEtMDIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogQVVUSE9SUzogYWRkZWQgbXlzZWxmIGFzIGEgY28tbWFpbnRhaW5lcgoJKiBUSEFOS1M6IGFuZCByZW1vdmVkIG15IG5hbWUgZnJvbSBoZXJlCgoJKiBhdXRvZ2VuOiBuZXcgc2NyaXB0OyBydW4gaXQgdG8gYm9vdHN0cmFwIGxpYnRvb2wgYWZ0ZXIgY2hlY2tpbmcKCWl0IG91dCBmcm9tIENWUwoKCSogbGlidG9vbC5tNCAoQ0ZMQUdTKTogY2hlY2sgd2hldGhlciAtYmVsZiBpcyBuZWVkZWQgb24gU0NPLCBhcwoJc3VnZ2VzdGVkIGJ5IFJvYmVydCBMaXBlIDxyb2JlcnRsQGRnaWkuY29tPgoKMTk5OC0xMC0zMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBkZW1vL01ha2VmaWxlLmFtIChoYy1saWJwYXRoKTogVXNlIHBhcmFtZXRlcnMgZnJvbSB0aGUgbGlidG9vbAoJaW4gdGhlIHRvcCBidWlsZCBkaXJlY3RvcnksIHNpbmNlIHRoZSBvbmUgaW4gdGhlIGRlbW8gZGlyZWN0b3J5IGlzCglub3QgZ3VhcmFudGVlZCB0byBleGlzdC4KCjE5OTgtMTAtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZGVtby9NYWtlZmlsZS5hbSAob2JqZGlyKTogdGhlcmUgYXJlIG5vIGxvbmdlciBxdW90ZXMgYXJvdW5kCglvYmpkaXIgaW4gdGhlIGxpYnRvb2wgc2NyaXB0CgoxOTk4LTEwLTI3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIGx0Y29uZmlnLmluIChkeW5hbWljX2xpbmtlcik6IEVjaG8gdGhlIHJlc3VsdCB0byBmZCA2LCBzbyB0aGF0CgktLXNpbGVudCB3b3JrcyBjb3JyZWN0bHkuICBGcm9tIFdpbGxpYW0gTS4gUGVycnkuCgoxOTk4LTA5LTI0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIGx0bWFpbi5pbiAobGluayk6IEZpeCBwcm9ibGVtcyB3aGVuIGJ1aWxkaW5nIG9ubHkgc3RhdGljCglsaWJyYXJpZXMuICBGcm9tIE93ZW4gVGF5bG9yLgoKMTk5OC0wOC0yMCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBsdG1haW4uaW4gKGluc3RhbGwpOiBXaGVuIGxpYnJhcnlfbmFtZXNfc3BlYyBoYXMgcmVkdW5kYW5jaWVzLAoJYXZvaWQgZGVsZXRpbmcgdGhlIG1haW4gbGlicmFyeSB3aGVuIGluc3RhbGxpbmcgc3ltbGlua3MuICBGcm9tCglKZWZmIERhaXJpa2kuCgkobGluayk6IEdldCByaWQgb2YgYmFja3RpY2tzIGluIGEgaGVyZSBkb2MgY29tbWVudC4KCVRoaXMgY2F1c2VzIHNlZ2ZhdWx0cyBvbiBTb2xhcmlzIDIuICBGcm9tIEFsZWtzYW5kYXIgQmFraWMuCgkoZmluaXNoKTogRG9uJ3QgZGlzcGxheSBtZXNzYWdlcwoKCSogbHRjb25maWcuaW4gKGFyY2hpdmVfY21kcyk6IE9uIEhQLVVYIDksIG1ha2Ugc3VyZSB3ZSBkb24ndCB0cnkKCXRvIG1vdmUgYSBmaWxlIHRvIGl0c2VsZi4gIEZyb20gSmVmZiBEYWlyaWtpLgoKMTk5OC0wOC0xOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBsdGNvbmZpZy5pbjogTWFrZSBjaGFuZ2VzIHRvIGFjY29tb2RhdGUgbHRtYWluLmMuCgoJKiBNYWtlZmlsZS5hbSAoY2xpYnRvb2wpOiBOZXcgdGFyZ2V0IGZvciB0aGUgQyB2ZXJzaW9uIG9mIGxpYnRvb2wuCgoJKiBsdG1haW4uYzogRXhwZXJpbWVudGFsIEMgdmVyc2lvbiBvZiBsaWJ0b29sLgoKMTk5OC0wNy0xMCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbHRtYWluLmluIChpbnN0YWxsKTogVGVzdCBhZ2FpbnN0IGJvdGggJFNIRUxMIGFuZCAvYmluL3NoLgoKMTk5OC0wNi0zMCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBsdG1haW4uaW46IENvbnZlbmllbmNlIGFyY2hpdmUgc3VwcG9ydC4gIEZyb20gVWxyaWNoIERyZXBwZXIuCgoJKiBsdGNvbmZpZy5pbiAocG9zdGluc3RhbGxfY29tbWFuZHMpOiBDaGFuZ2UgbGlicmFyaWVzIHRvIGJlCglleGVjdXRhYmxlIG9uIFNvbGFyaXMgaW4gb3JkZXIgdG8gcHJldmVudCBsZGQgZnJvbSBtb2FuaW5nLiAgRnJvbQoJSnVsaWFuIEdvc25lbGwuCgkod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMpOiBOZXcgdmFyaWFibGUgdG8gc2hvcnRjdXQgY29udmVuaWVuY2UKCWFyY2hpdmUgZXhwYW5zaW9uLiAgRnJvbSBVbHJpY2ggRHJlcHBlci4KCjE5OTgtMDYtMTEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluOiBDaGFuZ2UgZ2xvYnMgdG8gYWNjZXB0IGZvcndhcmQgc2xhc2hlcwoJaW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWVzIHVzZWQgb24gRE9TLWxpa2Ugc3lzdGVtcy4gIEZyb20gUm9iZXJ0CglTLiBNYWllci4KClRodSBNYXkgMjggMTg6NTk6MDggMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbHRjb25maWcuaW46IFVzZSAkU0hFTEwgd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzLgoKMTk5OC0wNS0yMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0bWFpbi5pbiAoY29tcGlsZSk6IERvbid0IGhhdmUgYC1zdGF0aWMnIHR1cm4gb2ZmIGxpYnRvb2wKCWxpYnJhcmllcywgc28gdGhhdCBwZW9wbGUgY2FuIHVzZSBpdCBqdXN0IHRvIGd1YXJhbnRlZSB0aGF0IGAubycKCWZpbGVzIGV4aXN0LiAgU3VnZ2VzdGVkIGJ5IERhdmlkIE1vc2Jlcmdlci1UYW5nLgoKMTk5OC0wNS0xOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0bWFpbi5pbiAobGluayk6IFBvc3NpYmx5IHJlZXhlYyB0aGUgc2hlbGwgZnJvbSB3aXRoaW4gdGhlCgl3cmFwcGVyIHNjcmlwdC4KCUFsbG93IGAtdmVyc2lvbi1pbmZvJyBhbmQgYC1yZWxlYXNlJyB0byBjb2V4aXN0IGFnYWluLiAgSWYgcGVvcGxlCgl3YW50IHRvIHNob290IHRoZW1zZWx2ZXMgaW4gdGhlIGZvb3QsIEknZCBiZXR0ZXIgbGV0IHRoZW0gZG8gc28sCglzbyB0aGF0IHBlb3BsZSB3aG8gYXJlIHNtYXJ0IGVub3VnaCBub3QgdG8gY2FuIHNxdWVlemUgb3V0IGFub3RoZXIKCW91bmNlIG9mIGZ1bmN0aW9uYWxpdHkuICBGcm9tIFRpbSBKYW5pay4KCSh2ZXJzaW9uX3ZhcnMpOiBEZWxldGUgZGVhZCB2YXJpYWJsZS4KCgkqIGx0Y29uZmlnLmluIChoYXJkY29kZV9taW51c19MKTogRnJlZUJTRCAzLjAgZG9lc24ndCBoYXJkY29kZSwgYXQKCWxhc3QuICBSZXBvcnRlZCBieSBKYXNvbiBOb3Jkd2ljay4KCgkqIGxpYnRvb2xpemUuaW4sIGx0Y29uZmlnLmluLCBsdG1haW4uaW46IENoYW5nZSBhIGJ1bmNoIG9mIGBpZgoJdGVzdCAuLi47IHRoZW4gOiA7IGVsc2UgLi4uJyBjb25zdHJ1Y3RzIHRvIGBpZiB0ZXN0ICEgLi4uOyB0aGVuCgkuLi4nLCBmb3IgY2xhcml0eS4KCjE5OTgtMDUtMTcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW4gKExDX0FMTCwgTEFORyk6IFNhdmUgdGhlc2UgdmFsdWVzIGFuZCByZXN0b3JlIHRoZW0KCWR1cmluZyBleGVjdXRlIG1vZGUuICBGcm9tIFBhdmVsIEthbmtvdnNreS4KCShtb2RlKTogQWNjZXB0IHN0cmFjZSBhbmQgdHJ1c3MgYXMgcHJvZ3JhbXMgdGhhdCB0aHJvdyB1cyBpbnRvCglleGVjdXRlIG1vZGUuICBGcm9tIFBhdmVsIEthbmtvdnNreS4KCjE5OTgtMDUtMDcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBEb24ndCB1c2UgLiR2ZXJzdWZmaXggb3IgLiRtYWpvci4gIEluc3RlYWQsIGFzc3VtZQoJdGhlIHZhcmlhYmxlIHdpbGwgaW5jbHVkZSBhbnkgcmVxdWlyZWQgcHJlZml4LgoJKiBsdG1haW4uaW46IElmIG5vIC12ZXJzaW9uLWluZm8gb3B0aW9uIHdhcyB1c2VkLCBwcm9kdWNlIGVtcHR5Cgl2ZXJzaW9uIHN0cmluZ3MgcmF0aGVyIHRoYW4gMC4wLjAuICBXaGVuIG1ha2luZyBsaWJyYXJ5IHN5bWxpbmtzLAoJYXZvaWQgbWFraW5nIGEgc3ltbGluayBpZiB0aGUgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZS4KCjE5OTgtMDQtMjcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW4gKGxpbmspOiBTdXBwb3J0IGB1bnN1cHBvcnRlZCcgYXMgYSBoYXJkY29kZV9hY3Rpb24uCglSZXBvcnRlZCBieSBMYXJzIEhlY2tpbmcuCgkobGliX2xpbmtlZCk6IERvIHNvbWUgc2FuaXR5IGNoZWNraW5nIHRvIG1ha2Ugc3VyZSB0aGF0IHdlCglhY3R1YWxseSBkbyBsaW5rIGxpYnRvb2wgbGlicmFyaWVzIGludG8gdGhlIHByb2dyYW0gdG8gcHJldmVudCB0aGUKCWFib3ZlIHByb2JsZW0gZnJvbSBoYXBwZW5pbmcgYWdhaW4uCgoxOTk4LTA0LTIwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluOiBNYXliZSByZWV4ZWMgdW5kZXIgJFNIRUxMLCBpZiAkZWNobyBkb2Vzbid0IHdvcmsuCglSZXBvcnRlZCBieSBMYXJzIEhlY2tpbmcuCgoxOTk4LTA0LTE5ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogTWFrZWZpbGUuYW0gKG1haW50YWluZXItcmVrZXkpOiBOZXcgcnVsZSB0byBmb3JjZSB1cyB0byBjaGFuZ2UKCVByb2plY3QtVmVyc2lvbiBhZnRlciB3ZSBtYWtlIGEgcmVsZWFzZS4gIFRoaXMga2VlcHMgYWxsIHZlcnNpb24KCW51bWJlcnMgaW4gc3luYywgcmF0aGVyIHRoYW4gYnJhbmNoaW5nIGp1c3QgYmVmb3JlIHRoZSByZWxlYXNlLgoJKG1haW50YWluZXItcmVsZWFzZSwgbWFpbnRhaW5lci1jaGVja2luKTogVXNlIG1haW50YWluZXItcmVrZXkuCgoJKiBsdG1haW4uaW4gKGZpbmlzaCk6IE5vdGljZSB3aGVuIGEgZmluaXNoIGNvbW1hbmQgZmFpbHMsIHNvIHRoYXQKCXdlIGNhbiBhZGQgaXQgdG8gdGhlIGxpc3Qgb2YgcmVjb21tZW5kYXRpb25zLgoKMTk5OC0wNC0xNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFNX1BST0dfTElCVE9PTCk6IEFwcGVuZCBmaWxlIGRlc2NyaXB0b3IgNSB0bwoJY29uZmlnLmxvZywgc28gdGhhdCBjb25maWd1cmUgZG9lc24ndCBjbG9iYmVyIHRoZSBtZXNzYWdlcyB0aGF0CglsdGNvbmZpZyBwdXQgdGhlcmUuICBGcm9tIERhdmlkIFRheWxvci4KCjE5OTgtMDQtMTUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoYXJjaGl2ZV9jbWRzKTogVHJ5IHVzaW5nIGAkQ0MgLXNoYXJlZCcgd2hlbgoJY29uZmlndXJpbmcgZm9yIEdDQyB1bmRlciBpcml4NSBhbmQgaXJpeDYuICBGcm9tIFdvbGZyYW0gR2xvZ2VyLgoJKG9maWxlKTogQWRkIGAtLW91dHB1dCcgZmxhZyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZAoJbGlidG9vbC4gIFN1Z2dlc3RlZCBieSBXb2xmcmFtIEdsb2dlci4KCjE5OTgtMDQtMTQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW46IFJlbW92ZSBhbGwgaGFyZGNvZGVkIHJlZmVyZW5jZXMgdG8gbHRtYWluLmluIGluCglmYXZvdXIgb2YgJFBBQ0tBR0UgYW5kICRQUk9HUkFNLgoJKGluc3RhbGwpOiBDb21wdXRlIHRoZSBpbnN0YWxsYXRpb24gbmFtZSBmb3IgcHJvZ3JhbXMsIGluIGNhc2Ugd2UKCWluc3RhbGwgYSByZWxpbmtlZCBmaWxlIHdoaWNoIGhhcyBhIGRpZmZlcmVudCBuYW1lLiAgUmVwb3J0ZWQgYnkKCVBpZXRlciBTY2hvZW5tYWtlcnMuCgoJKiBsdGNvbmZpZy5pbiAoZWNobyk6IFRyeSB1c2luZyB0aGUga3NoKDEpIGBwcmludCAtcicgYnVpbHRpbgoJY29tbWFuZCwgYmVmb3JlIHJldmVydGluZyB0byBwcmludGYoMSkuCgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCk6IFVzZSAkKFNIRUxMKSB3aGVuIGludm9raW5nIGx0Y29uZmlnLgoKCSogbHRjb25maWcuaW4gKGVjaG8pOiBSZXdyaXRlIHRoZSB0ZXN0IGZvciBhIHdvcmtpbmcgZWNobyBzbyB0aGF0Cgl3ZSB3aW4gb24gU29sYXJpcyBieSBhdm9pZGluZyBwcmludGYoMSksIGlmIHBvc3NpYmxlLgoKCSogdGVzdHMvcXVvdGUudGVzdCAoZWNobyk6IFVwZGF0ZSB0aGUgZWNobyB0ZXN0IGZyb20gLi4vbHRjb25maWcuaW4uCgoxOTk4LTA0LTEzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJ0b29sLm00IChBTV9QUk9HX05NKTogRG9uJ3Qgb3ZlcnJpZGUgTk0gaW4gdGhlIGVudmlyb25tZW50LgoKMTk5OC0wNC0xMyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0bWFpbi5pbjogTmV3IGAtLWNvbmZpZycgZmxhZyB0byBwcmludCBvdXQgYWxsIGNvbmZpZ3VyZWQKCXZhcmlhYmxlcy4KCgkqIGxpYnRvb2wubTQ6IFBhc3MgbHRjb25maWcgdGhlIHVuZG9jdW1lbnRlZCAtLW5vLXJlZXhlYyBmbGFnLAoJc2luY2Ugd2UgY2FsbCBpdCBleHBsaWNpdGx5IHVzaW5nIENPTkZJR19TSEVMTC4KCgkqIGx0Y29uZmlnLmluOiBSZXN0YXJ0IHRoZSBzY3JpcHQgdW5kZXIgYSBkaWZmZXJlbnQgc2hlbGwgaWYKCUNPTkZJR19TSEVMTCBpcyBub3QgL2Jpbi9zaC4gIFRoaXMgd2F5LCBwZW9wbGUgY2FuIHVzZSBCYXNoIGlmCgl0aGV5IGRvbid0IGhhdmUgYSB3b3JraW5nIGVjaG8gcHJvZ3JhbS4KCgkqIGx0bWFpbi5pbiwgbHRjb25maWcuaW46IFVzZSAkU0hFTEwgaW5zdGVhZCBvZiAvYmluL3NoIHdoZW4KCWdlbmVyYXRpbmcgZXhlY3V0YWJsZSBzY3JpcHRzLgoKCSogbGlidG9vbGl6ZS5pbiwgbHRjb25maWcuaW4sIGx0bWFpbi5pbjogSW1wbGVtZW50IHRoZSBgLS1kZWJ1ZycKCWZsYWcgdG8gYmVnaW4gc2hlbGwgdHJhY2luZy4KCgkqIGx0Y29uZmlnLmluIChhcmNoaXZlX2NtZHMpOiBEb24ndCB1c2UgYGdjYyAtc2hhcmVkJywgZXZlbiBpZiB3ZQoJaGF2ZSBHTlUgbGQuICBSZXBvcnRlZCBieSBSb2JlcnQgUy4gTWFpZXIuCgoxOTk4LTA0LTA2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4gKHBpY19mbGFnKTogQ3JlYXRlIG1vcmUgdGhhbiBqdXN0IGEgbnVsbCBDIGZpbGUsIHNvCgl0aGF0IHRoZSBTdW5QUk8gNC4yIGNjIGRvZXNuJ3QgY29tcGxhaW4uICBGcm9tIEJvYiBGcmllc2VuaGFobi4KCShnbnVfbGRfYWN0c19uYXRpdmUpOiBEZWxldGUgdGhpcyB2YXJpYWJsZS4gIFRoZXJlIGlzIGp1c3QgdG9vCgltdWNoIHZlcnNpb24gc2tldyB0byB0cnkgdG8gcHJldGVuZCBHTlUgbGQgaXMgdGhlIHNhbWUgYXMgdGhlCglzeXN0ZW0gbGQuICBSZXBvcnRlZCBieSBJYW4gTGFuY2UgVGF5bG9yLgoJKGhhcmRjb2RlX2FjdGlvbik6IERvbid0IGJvdGhlciByZWxpbmtpbmcgb3IgYWJvcnRpbmcgb24gc3lzdGVtcwoJdGhhdCBhcmUgdG9vIGR5bmFtaWMgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgaGFyZGNvZGUgbWV0aG9kLgoJUmVwb3J0ZWQgYnkgRG91ZyBXaW50ZXJidXJuLgoKMTk5OC0wMy0yNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGRvYy9saWJ0b29sLnRleGk6IEEgbGl0dGxlIHByb29mcmVhZGluZy4gIEZyb20gQWxiZXJ0CglDaGluLUEtWW91bmcuCgoxOTk4LTAzLTIzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW46IFRyZWF0IEhQLVVYIDExIGp1c3QgbGlrZSBIUC1VWCAxMC4gIEZyb20gSmVmZiBMYXcuCgoxOTk4LTAzLTIxICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4gKHJlbG9hZF9mbGFnKTogQ29ycmVjdCBhIHRpbnkgYnVnIHdoZXJlIGAtLXNpbGVudCcKCXdvdWxkIHN0aWxsIHByaW50IG91dCB0aGUgcmVsb2FkIGZsYWcuICBGcm9tIFN0ZXBoYW4gS3Vsb3cuCgoxOTk4LTAzLTIwICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJ0b29sLm00OiBVc2UgY2hhbmdlcXVvdGUgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBzcXVhcmUKCWJyYWNrZXQgcGF0dGVybnMuCgoxOTk4LTAzLTIwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogUmVsZWFzZSAxLjIuCgoxOTk4LTAzLTE4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluOiBSZWFycmFuZ2Ugc29tZSBvZiB0aGUgZWNob3MgdG8gbWFrZSB0aGVtIG1vcmUKCWNvbnNpc3RlbnQuCgoxOTk4LTAzLTE0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluOiBCcmVhayB1cCBhbiBlY2hvIGNvbW1hbmQgdGhhdCBjYXVzZXMgU29sYXJpcyBwcmludGYKCXRvIGR1bXAgY29yZS4gIEFwcGFyZW50bHkgdGhlIFNvbGFyaXMgcGVvcGxlIGhhcmRjb2RlZCBhIDIxMTAtYnl0ZQoJYnVmZmVyIGludG8gdGhlaXIgcHJpbnRmKDEpLiAgRmVoLiAgRnJvbSBKb2huIEp1ZGdlLgoKMTk5OC0wMy0xMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBDaGFuZ2UgdGhlIHRlc3QgZm9yIHRoZSBQSUMgY29tcGlsZXIgZmxhZyBzbyB0aGF0Cgl3ZSBhc3N1bWUgaXQgZG9lc24ndCB3b3JrIGlmIHRoZXJlIGFyZSBhbnkgd2FybmluZyBtZXNzYWdlcy4gIFRoaXMKCWZpeGVzIGEgYnVnIHVzaW5nIG9sZCBHQ0MncyBvbiBIUC1VWC4gIFJlcG9ydGVkIGJ5IEFraW0gRGVtYWlsbGUuCgoxOTk4LTAzLTEwICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIE1ha2VmaWxlLmFtICgkKHNyY2RpcikvbHRjb25maWcpOiBSZW1vdmUgYm9ndXMgY29tbWFuZCB0byBjcmVhdGUKCWEgZmlsZSBsdGNvbmZpZyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LgoKMTk5OC0wMy0wOSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBsdG1haW4uaW46IEF2b2lkIHVubmVjZXNzYXJ5IHVzZSBvZiBjb21tYW5kIHN1YnN0aXR1dGlvbiwKCXJlcGxhY2luZyBmb289YGV2YWwgXFwkZWNobyBcIiRtdW1ibGVcImAgYnkgZXZhbCBmb289XCIkbXVtYmxlXCIuCgoJKGxpbmspOiBVc2UgJHsxKyIkQCJ9IGluIHdyYXBwZXIgc2NyaXB0cyBpbiBvcmRlciB0byBwYXNzCglhcmd1bWVudHMgc2FmZWx5IHRvIGEgcHJvZ3JhbS4KCgkqIGx0Y29uZmlnLmluOiBVc2UgLWZwaWMgaW5zdGVhZCBvZiAtZlBJQyBpZiAkaG9zdF9jcHUgbWF0Y2hlcwoJbTY4Ki4KCjE5OTgtMDMtMDggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBSZWxlYXNlIDEuMS4KCgkqIGx0bWFpbi5pbjogPHNpZ2g+IEkgbGlrZSBgaGVyZSBkb2N1bWVudHMnIGEgbG90LCBidXQgYXBwYXJlbnRseQoJdGhleSBhcmUgc28gYmFkbHkgaGFuZGxlZCBieSBvbGQgYW5kIGJ1Z2d5IC9iaW4vc2gncywgdGhhdAoJcmVwbGFjaW5nIGBjYXQgPDxFT0YgLi4uIEVPRicgYnkgYCRlY2hvICIuLi4iJyBpbXByb3ZlcyBsaWJ0b29sJ3MKCXNwZWVkIGJ5IGEgZmFjdG9yIG9mIDUuICBTbywgSSd2ZSBlbGltaW5hdGVkIGhlcmUgZG9jcyBmcm9tIHRoZQoJYWxsLWltcG9ydGFudCBsdG1haW4uaW4uICBGcm9tIFRvbSBMYW5lLgoKCSogdGVzdHMvdGxpYnRvb2w6IEVsaW1pbmF0ZSBmcm9tIGRpc3RyaWJ1dGlvbi4KCgkqIHRlc3RzL2RlZnMgKGxpYnRvb2wpOiBEb24ndCB1c2UgdGxpYnRvb2wgYW55bW9yZSwgc2luY2Ugd2UgY2FuIG5vdyB1c2UKCXRoZSBnZW5lcmF0ZWQgbGlidG9vbCBkaXJlY3RseS4KCjE5OTgtMDMtMDcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogQ29weSB0aGUgY29udGVudHMgb2YgbHRtYWluLnNoIGludG8gdGhlIGdlbmVyYXRlZAoJbGlidG9vbC4gIFRoaXMgc2hvdWxkIG1vcmUgdGhhbiBoYWx2ZSB0aGUgZXhlY3V0aW9uIHRpbWVzIG9uIG9sZAoJb3IgYnVnZ3kgL2Jpbi9zaCBzeXN0ZW1zLCBzdWNoIGFzIEhQLVVYIDkgYW5kIFN1bk9TIDQuMS40LiAgRnJvbQoJVG9tIExhbmUuCgoxOTk4LTAzLTA1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbGlidG9vbC5tNCAoQU1fRU5BQkxFX1NIQVJFRCwgQU1fRU5BQkxFX1NUQVRJQyk6IEFkZCBzdXBwb3J0IGZvcgoJdGhlIGBkZWZhdWx0JyBwYWNrYWdlLCBzbyB0aGF0IHBlb3BsZSBjYW4gY29udHJvbCB1bm5hbWVkCglwYWNrYWdlcy4KCShMRCk6IE9ubHkgYWRkIGFuIEFCSSBmbGFnIHVuZGVyIElSSVggNi54LCBzaW5jZSBJUklYIDUueCBkb2Vzbid0CglzdXBwb3J0IHRoZW0uICBGcm9tIEFsZXhhbmRyZSBPbGl2YS4KCjE5OTgtMDMtMDEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogUG9ydCB0byBVbml4V2FyZSAyLnguICBGcm9tIENocmlzdG9waGVyIE9sc2VuLgoKMTk5OC0wMi0yNSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0bWFpbi5pbiAoY29tcGlsZSk6IEZvciBjb25zaXN0ZW5jeSwgaG9ub3VyIHRoZSBgLXN0YXRpYycgZmxhZwoJZHVyaW5nIGNvbXBpbGF0aW9uLgoKMTk5OC0wMi0yMyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFNX0VOQUJMRV9TSEFSRUQsIEFNX0VOQUJMRV9TVEFUSUMpOiBGb3IKCS0tZW5hYmxlLXNoYXJlZCwgaGVlZCB0aGUgdmFsdWUgb2YgJFBBQ0tBR0UgZnJvbSBBTV9JTklUX0FVVE9NQUtFCglpZiBnaXZlbiBhcyB0aGUgYXJndW1lbnQgZm9yIHRoZSBsaWJyYXJ5IHRvIGJlIGJ1aWx0IHNoYXJlZC4KCjE5OTgtMDItMjAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsaWJ0b29sLm00LCBsdGNvbmZpZy5pbiAoTk0pOiBGaXggdXAgYSB0eXBvIGNvbmZ1c2lvbiBiZXR3ZWVuCgkkYWNfZGlyIGFuZCAkZGlyLiAgUmVwb3J0ZWQgYnkgQWtpbSBEZW1haWxsZS4KCgkqIGx0bWFpbi5pbiAobGluayk6IERvbid0IGFsbG93IGJvdGggYC12ZXJzaW9uLWluZm8nIGFuZAoJYC1yZWxlYXNlJy4gIFJlcG9ydGVkIGJ5IERhbm55IEJhY2t4LgoKMTk5OC0wMi0xOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChub2luc3RfU0NSSVBUUyk6IFJlbW92ZSBsaW5lbm8gZnJvbSBkaXN0cmlidXRpb24uCgoJKiBsaW5lbm86IFJlbW92ZSBmcm9tIGRpc3RyaWJ1dGlvbiwgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIE1ha2VmaWxlLmFtICgkKHNyY2RpcikvbHRjb25maWcuaW4sICQoc3JjZGlyKS9sdG1haW4uc2gpOgoJUmV3cml0ZSB0aGVzZSBydWxlcyBub3QgdG8gdXNlIGNvbmZpZy5zdGF0dXMgb3IgbGluZW5vLiAgVGhpcwoJbWFrZXMgdGhpbmdzIHNpbXBsZXIsIGFuZCByZWR1Y2VzIGRlcGVuZGVuY2llcywgc28gdGhhdCB0aGUKCXNjcmlwdHMgYXJlIHJlYnVpbHQgYW5kIGluc3RhbGxlZCBpbiBzcmNkaXIgb25seSB3aGVuIG5lY2Vzc2FyeS4KCVJlcG9ydGVkIGJ5IFN0ZXBoYW4gS3Vsb3cuCgoJKiB0ZXN0cy9zaC50ZXN0IChzY3JpcHRzKTogUmVtb3ZlIHRoZSBsaW5lbm8gc2NyaXB0LCBzaW5jZSBpdCBpcyBubwoJbG9uZ2VyIGRpc3RyaWJ1dGVkLgoKCSogdGVzdHMvYXNzaWduLnRlc3QsIGlmLnRlc3QsIHRlc3QtZS50ZXN0OiBFdmVuIHRob3VnaCAxNSB0ZXN0cyBsb29rcwoJaW1wcmVzc2l2ZSwgdGhlc2UgYXJlIG5vdyByZWR1bmRhbnQuICBSZW1vdmUgdGhlbSBmcm9tIHRoZQoJZGlzdHJpYnV0aW9uLgoKCSogdGVzdHMvc2gudGVzdDogRG8gd2hhdCBhc3NpZ24udGVzdCwgaWYudGVzdCwgYW5kIHRlc3QtZS50ZXN0IHVzZWQgdG8KCWRvLgoKMTk5OC0wMi0xNiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGxpYnRvb2wubTQsIGx0bWFpbi5pbiwgbHRjb25maWcuaW46IENvcnJlY3RseSBpZGVudGlmeSBhYnNvbHV0ZQoJZGlyZWN0b3J5IG5hbWVzIG9uIE1TLURPUy4gIFN1Z2dlc3RlZCBieSBCb2IgRnJpZXNlbmhhaG4uCgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluLCBsaWJ0b29sLm00OiBDaGFuZ2UgYSBidW5jaCBvZiBgc2VkIE4hZCcKCWNvbW1hbmRzIHRvIGBzZWQgTnEnLCBmb3IgZWZmaWNpZW5jeS4KCgkqIGx0bWFpbi5pbjogT25seSBlZ3JlcCB0aGUgZmlyc3QgZmV3IGxpbmVzIG9mIGZpbGVzIGluIG9yZGVyIHRvCglkZXRlcm1pbmUgaWYgdGhleSB3ZXJlIGxpYnRvb2wtZ2VuZXJhdGVkLiAgVGhpcyBwcmV2ZW50cyBlZ3JlcCgxKQoJZnJvbSB0YWtpbmcgZm9yZXZlciB0byBsb29rIGF0IGEgMTBNQiBiaW5hcnkgb24gU29sYXJpcy4gIEZyb20KCVN0ZXBoYW4gS3Vsb3cuCgoJKiB0ZXN0cy9kZWZzOiBDb3JyZWN0bHkgaWRlbnRpZnkgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWVzIG9uIE1TLURPUy4KCVN1Z2dlc3RlZCBieSBCb2IgRnJpZXNlbmhhaG4uCgoxOTk4LTAyLTExICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4gKG5vX3VuZGVmaW5lZF9mbGFnKTogQWRkIGEgZmxhZyB0byBkZWNsYXJlIHVuZGVyCglTb2xhcmlzIHRoYXQgdGhlIGxpYnJhcnkgc2hvdWxkIG5vdCBoYXZlIGFueSB1bmRlZmluZWQKCXJlZmVyZW5jZXMuICBTdWdnZXN0ZWQgYnkgQm9iIEZyaWVzZW5oYWhuLgoKCSogbHRtYWluLmluIChta2Rpcik6IEZpeCBvbmUgbW9yZSBta2RpciByYWNlLiAgRnJvbSBILkouIEx1LgoKMTk5OC0wMi0wOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0Y29uZmlnLmluLCBsdG1haW4uaW4gKHN0cmlwbGliLCBvbGRfc3RyaXBsaWIpOiBEaXR0by4KCgkqIGx0Y29uZmlnLmluIChwcm9maWxlX2ZsYWdfcGF0dGVybik6IEdldCByaWQgb2YgZGVhZCBjb2RlLgoKMTk5OC0wMi0wNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFNX0VOQUJMRV9TSEFSRUQsIEFNX0VOQUJMRV9TVEFUSUMpOiBOZXcgbWFjcm9zIHRvCgltb2RpZnkgdGhlIGAtLWVuYWJsZS1zaGFyZWQnIGFuZCBgLS1lbmFibGUtc3RhdGljJyBkZWZhdWx0cyBpbiB0aGUKCWNvbmZpZ3VyZSBzY3JpcHQuICBUaGlzIHdvcmtzIGEgbG90IGJldHRlciB0aGFuIHRoZSBvbGQKCWBlbmFibGVfc2hhcmVkJyBhbmQgYGVuYWJsZV9zdGF0aWMnIHZhcmlhYmxlcyBkaWQuICBSZXBvcnRlZCBieQoJQm9iIEZyaWVzZW5oYWhuLgoKCSogdGVzdHMvc3VmZml4LnRlc3QgKGV4dGVuc2lvbnMpOiBBZGRlZCBHTkFUIChHTlUgQWRhIFRyYW5zbGF0b3IpCglzdWZmaWNlcywgYC5hZGEnLCBgLmFkcycsIGAuYWRiJy4gIEZyb20gU2FtdWVsIFRhcmRpZXUuCgoxOTk4LTAyLTA3ICBTYW11ZWwgVGFyZGlldSAgPHNhbUBpbmYuZW5zdC5mcj4KCgkqIGx0bWFpbi5pbjogUmVjb2duaXplIC5hZGEsIC5hZHMgYW5kIC5hZGIgYXMga25vd24gc3VmZml4ZXMgKHRoZXkKCWFyZSB1c2VkIGJ5IEdOQVQsIHRoZSBHTlUgQWRhIGNvbXBpbGVyKS4KCjE5OTgtMDItMDYgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogVHVybiBvbiBJUklYIHNoYXJlZCBsaWJyYXJpZXMgYWdhaW4hCgoJKiBsaWJ0b29sLm00IChMRCk6IFVzZSBmaWxlKDEpIHRvIGRpc2NvdmVyIHdoaWNoIEFCSSB3ZSdyZSB1c2luZwoJb24gSVJJWCwgYW5kIHByb3BhZ2F0ZSB0aGUgY29ycmVjdCBsaW5rZXIgZmxhZy4gIEZyb20gSmltIFdpbHNvbi4KCgkqIGx0Y29uZmlnLmluLCBsdG1haW4uaW4gKFhzZWQpOiBgYXJnPS1uOyBlY2hvICIkYXJnIiB8IHNlZCAuLi4nCglnaXZlcyBwcm9ibGVtcywgYmVjYXVzZSB0aGUgYC1uJyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvcHRpb24gdG8KCWVjaG8oMSkuICBTbywgdXNlIGBlY2hvICJYJGFyZyIgfCBzZWQgLWUgJ3MvXlgvLycgLi4uJyBldmVyeXdoZXJlLAoJdmlhIHRoZSAkWHNlZCBjb252ZW5pZW5jZSB2YXJpYWJsZS4gIFN1Z2dlc3RlZCBieSBILkouIEx1LgoKMTk5OC0wMi0wMiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBUdXJuIG9mZiBJUklYIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQgdW50aWwgMzItYml0CglhbmQgNjQtYml0IEFCSSBkaWZmZXJlbmNlcyBjYW4gYmUgcmVzb2x2ZWQuCgoxOTk4LTAxLTI4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbGlidG9vbC5tNCAoTEQpOiBSZXZlcnNlIHllc3RlcmRheSdzIGNoYW5nZSBiZWNhdXNlIGAtb2xkX2xkJwoJaXNuJ3QgYWNjZXB0ZWQgYnkgR0NDLgoKMTk5OC0wMS0yNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0Y29uZmlnLmluIChzb25hbWVfc3BlYyk6IEFkZCBpbiB1c2VyLXNwZWNpZmllZCByZWxlYXNlIG51bWJlcnMKCWZvciBldmVyeSBob3N0IHN5c3RlbSB0aGF0IHN1cHBvcnRzIGFuIHNvbmFtZSB0aGF0IGRpZmZlcnMgZnJvbQoJdGhlIGxpbmtuYW1lLgoKCSogbGlidG9vbC5tNCAoTEQpOiBBZGQgYC1vbGRfbGQnIHRvIHRoZSBsaXN0IG9mIGZsYWdzIHRoYXQgbmVlZCB0bwoJYmUgcGFzc2VkIHRocm91Z2ggb24gU0dJLiAgUmVwb3J0ZWQgYnkgQ2hyaXMgTGVlLgoKCSogbHRtYWluLmluIChyZWxlYXNlKTogUHJlcGVuZCBhIGh5cGhlbiB0byB0aGUgcmVsZWFzZSBudW1iZXIsIGFuZAoJZml4IGEgdHlwbyBiZWNhdXNlIGAtdmVyc2lvbi1pbmZvJyB0YWtlcyBvbmx5IDMgYXJncy4gIEZyb20KCUguSi4gTHUuCgoxOTk4LTAxLTI1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4gKGxpYnJhcnlfbmFtZXNfc3BlYyk6IE9uIExpbnV4LCB1c2UgdGhlCgl1c2VyLXNwZWNpZmllZCByZWxlYXNlLgoKCSogbHRtYWluLmluIChsaW5rKTogQWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIHJlbGVhc2UgbnVtYmVyIGZvcgoJdGhlIGxpYnJhcnkgdXNpbmcgdGhlIGAtcmVsZWFzZScgZmxhZy4gIFN1Z2dlc3RlZCBieSBILkouIEx1IGFuZAoJSWFuIExhbmNlIFRheWxvci4KCjE5OTgtMDEtMjMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFNfRU5WSVJPTk1FTlQpOiBFeHBvcnQgc29tZSBpbXBvcnRhbnQKCWVudmlyb25tZW50IHZhcmlhYmxlcy4gIFJlcG9ydGVkIGJ5IElhbiBIYWdnYXJkLgoKMTk5OC0wMS0xOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0Y29uZmlnLmluIChvbGRfcG9zdHVuaW5zdGFsbF9jbWRzKTogUmVvcmRlciBzbyB0aGF0IGNobW9kCgloYXBwZW5zIGFmdGVyIHJhbmxpYi4gIEZyb20gTWFya3VzIEYuWC5KLiBPYmVyaHVtZXIuCgoJKiBsdG1haW4uaW4gKG1vZGUpOiBBZGRlZCBgZ2NjKicgYW5kIGAqLWdjYyonIHRvIHRoZSBwYXR0ZXJucyB0aGF0CglyZWNvZ25pemUgY29tcGlsZXJzLiAgRnJvbSBQaWV0ZXIgU2Nob2VubWFrZXJzLgoJKGxpbmspOiBSZWNvZ25pemUgYC5hJyBmaWxlcyBhZ2Fpbi4gIFN1Z2dlc3RlZCBieSBQaWV0ZXIKCVNjaG9lbm1ha2Vycy4KCjE5OTgtMDEtMTggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW4gKGNvbXBpbGUpOiBSZWNvZ25pemUgYC5hc20nIGV4dGVuc2lvbiwgZm9yIHVzZSB3aXRoCgl0aGUgbmFzbSBhc3NlbWJsZXIuICBGcm9tIE1hcmt1cyBGLlguSi4gT2Jlcmh1bWVyLgoKCSogdGVzdHMvc3VmZml4LnRlc3QgKGV4dGVuc2lvbnMpOiBSZWNvZ25pemUgYC5hc20nLiAgRnJvbSBNYXJrdXMKCUYuWC5KLiBPYmVyaHVtZXIuCgoxOTk4LTAxLTEyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4gKHJ1bnBhdGhfdmFyKTogVXNlIGluc3RlYWQgb2YKCWBoYXJkY29kZV9ydW5wYXRoX3ZhcicuCgoxOTk4LTAxLTExICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluIChmaW5pc2gpOiBBZGQgYSBiZXR0ZXIgLS1maW5pc2ggbWVzc2FnZS4gIFN1Z2dlc3RlZCBieQoJS2VubmV0aCBBbGJhbm93c2tpLgoKCSogbHRjb25maWcuaW4sIGx0bWFpbi5pbjogRml4IGEgZmV3IHR5cG9zLgoKMTk5OC0wMS0wMyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0bWFpbi5pbiAobGluayk6IFF1b3RlIHRoZSBkZWZpbml0aW9uIG9mICRlY2hvIGluIHRoZSB3cmFwcGVyCglzY3JpcHQuCgoJKiBsdGNvbmZpZy5pbiAoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjKTogVXNlIGAtLWV4cG9ydC1keW5hbWljJwoJaW5zdGVhZCBvZiBgLWV4cG9ydC1keW5hbWljJywgd2hpY2ggaXMgbm90IGFjY2VwdGVkIGJ5IGFsbCBHTlUKCWxkJ3MuICBGcm9tIEVpaWNoaSBUYWthbW9yaS4KCgkqIGx0bWFpbi5pbiAoaW5zdGFsbCk6IERvbid0IHByaW50IHNpbGx5IGBsaWJyYXJ5IHN0cmlwcGluZycKCXdhcm5pbmdzLiAgUmVwb3J0ZWQgYnkgRnJhbudvaXMgUGluYXJkLgoKQ29udGludWVkIGluIENoYW5nZUxvZy4xOTk3Cg==