S2VybmVsIGRyaXZlciB3ODM3OTJkCj09PT09PT09PT09PT09PT09PT09PQoKU3VwcG9ydGVkIGNoaXBzOgogICogV2luYm9uZCBXODM3OTJECiAgICBQcmVmaXg6ICd3ODM3OTJkJwogICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZgogICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LndpbmJvbmQuY29tLnR3L0UtV0lOQk9OREhUTS9wYXJ0bmVyL1BERnJlc3VsdC5hc3A/UG5hbWU9MTAzNQoKQXV0aG9yOiBDaHVuaGFvIEh1YW5nCkNvbnRhY3Q6IERaU2hlbiA8RFpTaGVuQFdpbmJvbmQuY29tLnR3PgoKCk1vZHVsZSBQYXJhbWV0ZXJzCi0tLS0tLS0tLS0tLS0tLS0tCgoqIGluaXQgaW50CiAgKGRlZmF1bHQgMSkKICBVc2UgJ2luaXQ9MCcgdG8gYnlwYXNzIGluaXRpYWxpemluZyB0aGUgY2hpcC4KICBUcnkgdGhpcyBpZiB5b3VyIGNvbXB1dGVyIGNyYXNoZXMgd2hlbiB5b3UgbG9hZCB0aGUgbW9kdWxlLgoKKiBmb3JjZV9zdWJjbGllbnRzPWJ1cyxjYWRkcixzYWRkcixzYWRkcgogIFRoaXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgaTJjIGFkZHJlc3NlcyBmb3Igc3ViY2xpZW50cyBvZgogIGEgY2VydGFpbiBjaGlwLiBFeGFtcGxlIHVzYWdlIGlzIGBmb3JjZV9zdWJjbGllbnRzPTAsMHgyZiwweDRhLDB4NGInCiAgdG8gZm9yY2UgdGhlIHN1YmNsaWVudHMgb2YgY2hpcCAweDJmIG9uIGJ1cyAwIHRvIGkyYyBhZGRyZXNzZXMKICAweDRhIGFuZCAweDRiLgoKCkRlc2NyaXB0aW9uCi0tLS0tLS0tLS0tCgpUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBXaW5ib25kIFc4Mzc5MkFEL0QuCgpEZXRlY3Rpb24gb2YgdGhlIGNoaXAgY2FuIHNvbWV0aW1lcyBiZSBmb2lsZWQgYmVjYXVzZSBpdCBjYW4gYmUgaW4gYW4KaW50ZXJuYWwgc3RhdGUgdGhhdCBhbGxvd3Mgbm8gY2xlYW4gYWNjZXNzIChCYW5rIHdpdGggSUQgcmVnaXN0ZXIgaXMgbm90CmN1cnJlbnRseSBzZWxlY3RlZCkuIElmIHlvdSBrbm93IHRoZSBhZGRyZXNzIG9mIHRoZSBjaGlwLCB1c2UgYSAnZm9yY2UnCnBhcmFtZXRlcjsgdGhpcyB3aWxsIHB1dCBpdCBpbnRvIGEgbW9yZSB3ZWxsLWJlaGF2ZWQgc3RhdGUgZmlyc3QuCgpUaGUgZHJpdmVyIGltcGxlbWVudHMgdGhyZWUgdGVtcGVyYXR1cmUgc2Vuc29ycywgc2V2ZW4gZmFuIHJvdGF0aW9uIHNwZWVkCnNlbnNvcnMsIG5pbmUgdm9sdGFnZSBzZW5zb3JzLCBhbmQgdHdvIGF1dG9tYXRpYyBmYW4gcmVndWxhdGlvbgpzdHJhdGVnaWVzIGNhbGxlZDogU21hcnQgRmFuIEkgKFRoZXJtYWwgQ3J1aXNlIG1vZGUpIGFuZCBTbWFydCBGYW4gSUkuCkF1dG9tYXRpYyBmYW4gY29udHJvbCBtb2RlIGlzIHBvc3NpYmxlIG9ubHkgZm9yIGZhbjEtZmFuMy4gRmFuNC1mYW43IGNhbiBydW4Kc3luY2hyb25pemVkIHdpdGggc2VsZWN0ZWQgZmFuIChmYW4xLWZhbjMpLiBUaGlzIGZ1bmN0aW9uYWxpdHkgYW5kIG1hbnVhbCBQV00KY29udHJvbCBmb3IgZmFuNC1mYW43IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCgpUZW1wZXJhdHVyZXMgYXJlIG1lYXN1cmVkIGluIGRlZ3JlZXMgQ2Vsc2l1cyBhbmQgbWVhc3VyZW1lbnQgcmVzb2x1dGlvbiBpcyAxCmRlZ0MgZm9yIHRlbXAxIGFuZCAwLjUgZGVnQyBmb3IgdGVtcDIgYW5kIHRlbXAzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgd2hlbgp0aGUgdGVtcGVyYXR1cmUgZ2V0cyBoaWdoZXIgdGhhbiB0aGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duIHZhbHVlOyBpdCBzdGF5cwpvbiB1bnRpbCB0aGUgdGVtcGVyYXR1cmUgZmFsbHMgYmVsb3cgdGhlIEh5c3RlcmVzaXMgdmFsdWUuCgpGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKdHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gRmFuCnJlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQgb3IKMTI4KSB0byBnaXZlIHRoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LgoKVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIElOIHNlbnNvcnMpIHJlcG9ydCB0aGVpciB2YWx1ZXMgaW4gbWlsbGl2b2x0cy4KQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcyBjcm9zc2VkIGEgcHJvZ3JhbW1hYmxlIG1pbmltdW0Kb3IgbWF4aW11bSBsaW1pdC4KCkFsYXJtcyBhcmUgcHJvdmlkZWQgYXMgb3V0cHV0IGZyb20gInJlYWx0aW1lIHN0YXR1cyByZWdpc3RlciIuIEZvbGxvd2luZyBiaXRzCmFyZSBkZWZpbmVkOgoKYml0IC0gYWxhcm0gb246CjAgIC0gaW4wCjEgIC0gaW4xCjIgIC0gdGVtcDEKMyAgLSB0ZW1wMgo0ICAtIHRlbXAzCjUgIC0gZmFuMQo2ICAtIGZhbjIKNyAgLSBmYW4zCjggIC0gaW4yCjkgIC0gaW4zCjEwIC0gaW40CjExIC0gaW41CjEyIC0gaW42CjEzIC0gVklEIGNoYW5nZQoxNCAtIGNoYXNzaXMKMTUgLSBmYW43CjE2IC0gdGFydDEKMTcgLSB0YXJ0MgoxOCAtIHRhcnQzCjE5IC0gaW43CjIwIC0gaW44CjIxIC0gZmFuNAoyMiAtIGZhbjUKMjMgLSBmYW42CgpUYXJ0IHdpbGwgYmUgYXNzZXJ0ZWQgd2hpbGUgdGFyZ2V0IHRlbXBlcmF0dXJlIGNhbm5vdCBiZSBhY2hpZXZlZCBhZnRlciAzIG1pbnV0ZXMKb2YgZnVsbCBzcGVlZCByb3RhdGlvbiBvZiBjb3JyZXNwb25kaW5nIGZhbi4KCkluIGFkZGl0aW9uIHRvIHRoZSBhbGFybXMgZGVzY3JpYmVkIGFib3ZlLCB0aGVyZSBpcyBhIENIQVMgYWxhcm0gb24gdGhlIGNoaXBzCndoaWNoIHRyaWdnZXJzIGlmIHlvdXIgY29tcHV0ZXIgY2FzZSBpcyBvcGVuIChUaGlzIG9uZSBpcyBsYXRjaGVkLCBjb250cmFyeQp0byByZWFsdGltZSBhbGFybXMpLgoKVGhlIGNoaXBzIG9ubHkgdXBkYXRlIHZhbHVlcyBlYWNoIDMgc2Vjb25kczsgcmVhZGluZyB0aGVtIG1vcmUgb2Z0ZW4gd2lsbApkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLgoKClc4Mzc5MkQgUFJPQkxFTVMKLS0tLS0tLS0tLS0tLS0tLQpLbm93biBwcm9ibGVtczoKCS0gVGhpcyBkcml2ZXIgaXMgb25seSBmb3IgV2luYm9uZCBXODM3OTJEIEMgdmVyc2lvbiBkZXZpY2UsIHRoZXJlCgkgIGFyZSBhbHNvIHNvbWUgbW90aGVyYm9hcmRzIHdpdGggQiB2ZXJzaW9uIFc4Mzc5MkQgZGV2aWNlLiBUaGUKCSAgY2FsY3VsYXRpb24gbWV0aG9kIHRvIGluNi1pbjcobWVhc3VyZWQgdmFsdWUsIGxpbWl0cykgaXMgYSBsaXR0bGUKCSAgZGlmZmVyZW50IGJldHdlZW4gQyBhbmQgQiB2ZXJzaW9uLiBDIG9yIEIgdmVyc2lvbiBjYW4gYmUgaWRlbnRpZmllZAoJICBieSBDUlsweDQ5aF0uCgktIFRoZSBmdW5jdGlvbiBvZiB2aWQgYW5kIHZybSBoYXMgbm90IGJlZW4gZmluaXNoZWQsIGJlY2F1c2UgSSdtIE5PVAoJICB2ZXJ5IGZhbWlsaWFyIHdpdGggdGhlbS4gQWRkaW5nIHN1cHBvcnQgaXMgd2VsY29tZS4KoAktIFRoZSBmdW5jdGlvbiBvZiBjaGFzc2lzIG9wZW4gZGV0ZWN0aW9uIG5lZWRzIG1vcmUgdGVzdHMuCgktIElmIHlvdSBoYXZlIEFTVVMgc2VydmVyIGJvYXJkIGFuZCBjaGlwIHdhcyBub3QgZm91bmQ6IFRoZW4geW91IHdpbGwKCSAgbmVlZCB0byB1cGdyYWRlIHRvIGxhdGVzdCAob3IgYmV0YSkgQklPUy4gSWYgaXQgZG9lcyBub3QgaGVscCBwbGVhc2UKCSAgY29udGFjdCB1cy4KCkZhbiBjb250cm9sCi0tLS0tLS0tLS0tCgpNYW51YWwgbW9kZQotLS0tLS0tLS0tLQoKV29ya3MgYXMgZXhwZWN0ZWQuIFlvdSBqdXN0IG5lZWQgdG8gc3BlY2lmeSBkZXNpcmVkIFBXTS9EQyB2YWx1ZSAoZmFuIHNwZWVkKQppbiBhcHByb3ByaWF0ZSBwd20jIGZpbGUuCgpUaGVybWFsIGNydWlzZQotLS0tLS0tLS0tLS0tLQoKSW4gdGhpcyBtb2RlLCBXODM3OTJEIHByb3ZpZGVzIHRoZSBTbWFydCBGYW4gc3lzdGVtIHRvIGF1dG9tYXRpY2FsbHkgY29udHJvbApmYW4gc3BlZWQgdG8ga2VlcCB0aGUgdGVtcGVyYXR1cmVzIG9mIENQVSBhbmQgdGhlIHN5c3RlbSB3aXRoaW4gc3BlY2lmaWMKcmFuZ2UuIEF0IGZpcnN0IGEgd2FudGVkIHRlbXBlcmF0dXJlIGFuZCBpbnRlcnZhbCBtdXN0IGJlIHNldC4gVGhpcyBpcyBkb25lCnZpYSB0aGVybWFsX2NydWlzZSMgZmlsZS4gVGhlIHRvbGVyYW5jZSMgZmlsZSBzZXJ2ZXMgdG8gY3JlYXRlIFQgKy0gdG9sZXJhbmNlCmludGVydmFsLiBUaGUgZmFuIHNwZWVkIHdpbGwgYmUgbG93ZXJlZCBhcyBsb25nIGFzIHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlCnJlbWFpbnMgYmVsb3cgdGhlIHRoZXJtYWxfY3J1aXNlIyArLSB0b2xlcmFuY2UjIHZhbHVlLiBPbmNlIHRoZSB0ZW1wZXJhdHVyZQpleGNlZWRzIHRoZSBoaWdoIGxpbWl0IChUK3RvbGVyYW5jZSksIHRoZSBmYW4gd2lsbCBiZSB0dXJuZWQgb24gd2l0aCBhCnNwZWNpZmljIHNwZWVkIHNldCBieSBwd20jIGFuZCBhdXRvbWF0aWNhbGx5IGNvbnRyb2xsZWQgaXRzIFBXTSBkdXR5IGN5Y2xlCndpdGggdGhlIHRlbXBlcmF0dXJlIHZhcnlpbmcuIFRocmVlIGNvbmRpdGlvbnMgbWF5IG9jY3VyOgoKKDEpIElmIHRoZSB0ZW1wZXJhdHVyZSBzdGlsbCBleGNlZWRzIHRoZSBoaWdoIGxpbWl0LCBQV00gZHV0eQpjeWNsZSB3aWxsIGluY3JlYXNlIHNsb3dseS4KCigyKSBJZiB0aGUgdGVtcGVyYXR1cmUgZ29lcyBiZWxvdyB0aGUgaGlnaCBsaW1pdCwgYnV0IHN0aWxsIGFib3ZlIHRoZSBsb3cKbGltaXQgKFQtdG9sZXJhbmNlKSwgdGhlIGZhbiBzcGVlZCB3aWxsIGJlIGZpeGVkIGF0IHRoZSBjdXJyZW50IHNwZWVkIGJlY2F1c2UKdGhlIHRlbXBlcmF0dXJlIGlzIGluIHRoZSB0YXJnZXQgcmFuZ2UuCgooMykgSWYgdGhlIHRlbXBlcmF0dXJlIGdvZXMgYmVsb3cgdGhlIGxvdyBsaW1pdCwgUFdNIGR1dHkgY3ljbGUgd2lsbCBkZWNyZWFzZQpzbG93bHkgdG8gMCBvciBhIHByZXNldCBzdG9wIHZhbHVlIHVudGlsIHRoZSB0ZW1wZXJhdHVyZSBleGNlZWRzIHRoZSBsb3cKbGltaXQuIChUaGUgcHJlc2V0IHN0b3AgdmFsdWUgaGFuZGxpbmcgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBpbiBkcml2ZXIpCgpTbWFydCBGYW4gSUkKLS0tLS0tLS0tLS0tCgpXODM3OTJEIGFsc28gcHJvdmlkZXMgYSBzcGVjaWFsIG1vZGUgZm9yIGZhbi4gRm91ciB0ZW1wZXJhdHVyZSBwb2ludHMgYXJlCmF2YWlsYWJsZS4gV2hlbiByZWxhdGVkIHRlbXBlcmF0dXJlIHNlbnNvcnMgZGV0ZWN0cyB0aGUgdGVtcGVyYXR1cmUgaW4gcHJlc2V0CnRlbXBlcmF0dXJlIHJlZ2lvbiAoc2YyX3BvaW50QF9mYW4jICstIHRvbGVyYW5jZSMpIGl0IHdpbGwgY2F1c2UgZmFucyB0byBydW4Kb24gcHJvZ3JhbW1lZCB2YWx1ZSBmcm9tIHNmMl9sZXZlbEBfZmFuIy4gWW91IG5lZWQgdG8gc2V0IGZvdXIgdGVtcGVyYXR1cmVzCmZvciBlYWNoIGZhbi4KCgovc3lzIGZpbGVzCi0tLS0tLS0tLS0KCnB3bVsxLTNdIC0gdGhpcyBmaWxlIHN0b3JlcyBQV00gZHV0eSBjeWNsZSBvciBEQyB2YWx1ZSAoZmFuIHNwZWVkKSBpbiByYW5nZToKCTAgKHN0b3ApIHRvIDI1NSAoZnVsbCkKcHdtWzEtM11fZW5hYmxlIC0gdGhpcyBmaWxlIGNvbnRyb2xzIG1vZGUgb2YgZmFuL3RlbXBlcmF0dXJlIGNvbnRyb2w6CiAgICAgICAgICAgICogMCBEaXNhYmxlZAogICAgICAgICAgICAqIDEgTWFudWFsIG1vZGUKICAgICAgICAgICAgKiAyIFNtYXJ0IEZhbiBJSQogICAgICAgICAgICAqIDMgVGhlcm1hbCBDcnVpc2UKcHdtWzEtM11fbW9kZSAtIFNlbGVjdCBQV00gb2YgREMgbW9kZQogICAgICAgICAgICAqIDAgREMKICAgICAgICAgICAgKiAxIFBXTQp0aGVybWFsX2NydWlzZVsxLTNdIC0gU2VsZWN0cyB0aGUgZGVzaXJlZCB0ZW1wZXJhdHVyZSBmb3IgY3J1aXNlIChkZWdDKQp0b2xlcmFuY2VbMS0zXSAtIFZhbHVlIGluIGRlZ3JlZXMgb2YgQ2Vsc2l1cyAoZGVnQykgZm9yICstIFQKc2YyX3BvaW50WzEtNF1fZmFuWzEtM10gLSBmb3VyIHRlbXBlcmF0dXJlIHBvaW50cyBmb3IgZWFjaCBmYW4gZm9yIFNtYXJ0IEZhbiBJSQpzZjJfbGV2ZWxbMS0zXV9mYW5bMS0zXSAtIHRocmVlIFBXTS9EQyBsZXZlbHMgZm9yIGVhY2ggZmFuIGZvciBTbWFydCBGYW4gSUkK