LyogSGV5LCBFbWFjcywgb3BlbiB0aGlzIGZpbGUgd2l0aCAtKi0gY29kaW5nOiBjcDEyNTAgLSotCiAqCiAqIFN0YXJ0CiAqIEN6ZWNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDMgRGFuIEtlZ2VsCiAqIENvcHlyaWdodCAyMDA0IERhdmlkIEtyZWRiYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2VzLmgiCgpMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKCi8qIEN6ZWNoIHN0cmluZ3MgaW4gQ1AxMjUwICovCgpTVFJJTkdUQUJMRQp7ClNUUklOR19VU0FHRSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTcHVzdO0gcHJvZ3JhbSBuZWJvIG90ZXb4ZSBkb2t1bWVudCB2IHByb2dyYW11LCBrdGVy/SBqZSBub3Jt4Wxu7CBwb3WeaXQgcHJvIHNvdWJvcnkgcyBkYW5vdSBw+O1wb25vdS5cblwKUG91nml07TpcblwKc3RhcnQgW3ZvbGJ5XSBqbelub19wcm9ncmFtdSBbLi4uXVxuXApzdGFydCBbdm9sYnldIGpt6W5vX2Rva3VtZW50dVxuXApcblwKVm9sYnk6XG5cCi9NW2luaW1hbGl6b3ZhbuxdIFNwdXN07SBwcm9ncmFtIG1pbmltYWxpem92YW7sLlxuXAovTUFYW2ltYWxpem92YW7sXSBTcHVzdO0gcHJvZ3JhbSBtYXhpbWFsaXpvdmFu7C5cblwKL1IgU3B1c3TtIHByb2dyYW0gbm9ybeFsbuwgKGFuaSBtaW5pbWFsaXpvdmFu/SBhbmkgbWF4aW1hbGl6b3Zhbv0pLlxuXAovVyDIZWvhIG5hIGRva29u6GVu7SBzcHWadOxu6WhvIHByb2dyYW11LCB2cmFj7SBu4XZyYXRvdv0ga/NkLlxuXAovUHJvZ0lET3BlbiAgT3BlbiBhIGRvY3VtZW50IHVzaW5nIHRoZSBmb2xsb3dpbmcgcHJvZ0lELlxuXAovTCBab2JyYXrtIGxpY2VuY2kuXG5cClxuXApzdGFydC5leGUgdmVyemUgMC4yIENvcHlyaWdodCAoQykgMjAwMywgRGFuIEtlZ2VsXG5cClN0YXJ0IGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgcnVuIHdpdGggL0wgb3B0aW9uLlxuXApUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0XG5cCnVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgcnVuICdzdGFydCAvTCcgZm9yIGRldGFpbHMuXG5cCiIKClNUUklOR19MSUNFTlNFLCAic3RhcnQuZXhlIHZlcnNpb24gMC4yIENvcHlyaWdodCAoQykgMjAwMywgRGFuIEtlZ2VsXG5cClRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcblwKbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBQdWJsaWMgTGljZW5zZVxuXAphcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xXG5cCm9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXApcblwKVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG5cCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG5cCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcblwKR05VIExlc3NlciBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXApcblwKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBQdWJsaWMgTGljZW5zZVxuXAphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuXApGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuXApcblwKUPhl6HTsdGUgc2kgc291Ym9yIENPUFlJTkcuTElCIHBybyB67XNr4W7tIGluZm9ybWFj7SBvIGxpY2VuY2kuXG5cCiIKClNUUklOR19FWEVDRkFJTCAiQXBsaWthY2UgbmVtb2hsYSBi/XQgc3B1mnTsbmEgbmVibyBuZW7tIJ7hZG7hIGFwbGlrYWNlIGFzb2Npb3bhbmEgcyBkYW79bSBzb3Vib3JlbS5cblNoZWxsRXhlY3V0ZUV4IHNlbGhhbCIKClNUUklOR19VTklYRkFJTCAiQ291bGQgbm90IHRyYW5zbGF0ZSB0aGUgc3BlY2lmaWVkIFVuaXggZmlsZW5hbWUgdG8gYSBET1MgZmlsZW5hbWUuIgp9Cg==