CQk9PT09PT09PT0gQmludXRpbHMgTWFpbnRhaW5lcnMgPT09PT09PT09CgpUaGlzIGlzIHRoZSBsaXN0IG9mIGluZGl2aWR1YWxzIHJlc3BvbnNpYmxlIGZvciBtYWludGVuYW5jZSBhbmQgdXBkYXRlCm9mIHRoZSBHTlUgQmluYXJ5IFV0aWxpdGllcyBwcm9qZWN0LiAgVGhpcyBpbmNsdWRlcyB0aGUgbGlua2VyIChsZCksCnRoZSBhc3NlbWJsZXIgKGdhcyksIHRoZSBwcm9maWxlciAoZ3Byb2YpLCBhIHdob2xlIHN1aXRlIG9mIG90aGVyCnByb2dyYW1zIChiaW51dGlscykgYW5kIHRoZSBsaWJyYXJpZXMgdGhhdCB0aGV5IHVzZSAoYmZkIGFuZApvcGNvZGVzKS4gIFRoaXMgcHJvamVjdCBzaGFyZXMgYSBjb21tb24gc2V0IG9mIGhlYWRlciBmaWxlcyB3aXRoIHRoZQpHQ0MgYW5kIEdEQiBwcm9qZWN0cyAoaW5jbHVkZSksIHNvIG1haW50YWluZXJzaGlwIG9mIHRob3NlIGZpbGVzIGlzIApzaGFyZWQgYW1vdW5nc3QgdGhlIHByb2plY3RzLgoKVGhlIGhvbWUgcGFnZSBmb3IgYmludXRpbHMgaXM6CgogIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iaW51dGlscy9iaW51dGlscy5odG1sCgphbmQgcGF0Y2hlcyBzaG91bGQgYmUgc2VudCB0bzoKCiAgYnVnLWJpbnV0aWxzQGdudS5vcmcgICAgb3IgICAgYmludXRpbHNAc291cmNlcy5yZWRoYXQuY29tCiAgCndpdGggIltQYXRjaF0iIGFzIHBhcnQgb2YgdGhlIHN1YmplY3QgbGluZS4gIE5vdGUgLSBwYXRjaGVzIHRvIHRoZQp0b3AgbGV2ZWwgY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViIHNjcmlwdHMgc2hvdWxkIGJlIHNlbnQgdG86CgogIGNvbmZpZy1wYXRjaGVzQGdudS5vcmcKCmFuZCBub3QgdG8gdGhlIGJpbnV0aWxzIGxpc3RzLiAgUGF0Y2hlcyB0byB0aGUgb3RoZXIgdG9wIGxldmVsCmNvbmZpZ3VyZSBmaWxlcyAoY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbmZpZy1tbC5pbikgc2hvdWxkCmJlIHNlbnQgdG8gdGhlIGJpbnV0aWxzIGxpc3RzLCBhbmQgY29waWVkIHRvIHRoZSBnY2MgYW5kIGdkYgpsaXN0cyBhcyB3ZWxsIChnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZyBhbmQKZ2RiLXBhdGNoZXNAc291cmNlcy5yZWRoYXQuY29tKS4KCgkJLS0tLS0tLS0tIEJsYW5rZXQgV3JpdGUgUHJpdnMgLS0tLS0tLS0tCgpUaGUgZm9sbG93aW5nIHBlb3BsZSBoYXZlIHBlcm1pc3Npb24gdG8gY2hlY2sgcGF0Y2hlcyBpbnRvIHRoZQpyZXBvc2l0b3J5IHdpdGhvdXQgb2J0YWluaW5nIGFwcHJvdmFsIGZpcnN0OgoJCQogIE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4gKGhlYWQgbWFpbnRhaW5lcikKICBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+CiAgSWFuIExhbmNlIFRheWxvciA8aWFuQGFpcnMuY29tPgogIEplZmYgTGF3IDxsYXdAcmVkaGF0LmNvbT4KICBKaW0gV2lsc29uIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgogIERKIERlbG9yaWUgPGRqQHJlZGhhdC5jb20+CiAgQWxhbiBNb2RyYSA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgogIE1pY2hhZWwgTWVpc3NuZXIgPGdudUB0aGUtbWVpc3NuZXJzLm9yZz4KICBEYW5pZWwgSmFjb2Jvd2l0eiA8ZGFuQGRlYmlhbi5vcmc+CgogICAgICAtLS0tLS0tLS0gTWFpbnRhaW5lcnMgLS0tLS0tLS0tCgpNYWludGFpbmVycyBhcmUgaW5kaXZpZHVhbHMgd2hvIGFyZSByZXNwb25zaWJsZSBmb3IsIGFuZCBoYXZlCnBlcm1pc3Npb24gdG8gY2hlY2sgaW4gY2hhbmdlcyBpbiwgY2VydGFpbiBzdWJzZXRzIG9mIHRoZSBjb2RlLiAgTm90ZQp0aGF0IG1haW50YWluZXJzIHN0aWxsIG5lZWQgYXBwcm92YWwgdG8gY2hlY2sgaW4gY2hhbmdlcyBvdXRzaWRlIG9mCnRoZSBpbW1lZGlhdGUgZG9tYWluIHRoYXQgdGhleSBtYWludGFpbi4KCklmIHRoZXJlIGlzIG5vIG1haW50YWluZXIgZm9yIGEgZ2l2ZW4gZG9tYWluIHRoZW4gdGhlIHJlc3BvbnNpYmlsaXR5CmZhbGxzIHRvIHRoZSBoZWFkIG1haW50YWluZXIgKGFib3ZlKS4gIElmIHRoZXJlIGFyZSBzZXZlcmFsCm1haW50YWluZXJzIGZvciBhIGdpdmVuIGRvbWFpbiB0aGVuIHJlc3BvbnNpYmlsaXR5IGZhbGxzIHRvIHRoZSBmaXJzdAptYWludGFpbmVyLiAgVGhlIGZpcnN0IG1haW50YWluZXIgaXMgZnJlZSB0byBkZXZvbHZlIHRoYXQKcmVzcG9uc2liaWxpdHkgYW1vbmcgdGhlIG90aGVyIG1haW50YWluZXJzLgoKICBBTFBIQSAgICAgICAgICAgIFJpY2hhcmQgSGVuZGVyc29uIDxydGhAcmVkaGF0LmNvbT4KICBBUk0JCSAgIE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KICBBUk0JCSAgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CiAgQVJNIChTeW1iaWFuKQkgICBQYXVsIEJyb29rIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CiAgQVJNIChTeW1iaWFuKQkgICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CiAgQVZSCQkgICBEZW5pcyBDaGVydHlrb3YgPGRlbmlzY0BvdmVydGEucnU+CiAgQVZSCQkgICBNYXJlayBNaWNoYWxraWV3aWN6IDxtYXJla21AYW1lbGVrLmdkYS5wbD4KICBCRklOCQkgICBKaWUgWmhhbmcgPGppZS56aGFuZ0BhbmFsb2cuY29tPgogIEJGSU4JCSAgIEJlcm5kIFNjaG1pZHQgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KICBCVUlMRCBTWVNURU0JICAgQmVuIEVsbGlzdG9uIDxiamVAZ251Lm9yZz4KICBCVUlMRCBTWVNURU0JICAgRGFuaWVsIEphY29ib3dpdHogPGRhbkBkZWJpYW4ub3JnPgogIENSSVMJCSAgIEhhbnMtUGV0ZXIgTmlsc3NvbiA8aHBAYXhpcy5jb20+CiAgQ1JYCQkgICBUb21lciBMZXZpIDxUb21lci5MZXZpQG5zYy5jb20+CiAgRExYICAgICAgICAgICAgICBOaWtvbGFvcyBLYXZ2YWRpYXMgPG5rYXZ2QHBoeXNpY3MuYXV0aC5ncj4KICBEV0FSRjIJICAgSmFzb24gTWVycmlsbCA8amFzb25AcmVkaGF0LmNvbT4KICBGUjMwCQkgICBEYXZlIEJyb2xsZXkgPGJyb2xsZXlAcmVkaGF0LmNvbT4KICBGUlYJCSAgIERhdmUgQnJvbGxleSA8YnJvbGxleUByZWRoYXQuY29tPgogIEZSVgkJICAgQWxleGFuZHJlIE9saXZhIDxhb2xpdmFAcmVkaGF0LmNvbT4KICBIODMwMAkJICAgQW5pbCBQYXJhbmpwZSA8YW5pbHAxQGtwaXRjdW1taW5zLmNvbT4gCiAgSFBQQQkJICAgRGF2ZSBBbmdsaW4gPGRhdmUuYW5nbGluQG5yYy5jYT4KICBIUFBBIGVsZjMyCSAgIEFsYW4gTW9kcmEgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KICBIUFBBIGVsZjY0CSAgIEplZmYgTGF3IDxsYXdAcmVkaGF0LmNvbT4gW0Jhc2ljIG1haW50YWluYW5jZSBvbmx5XQogIElBLTY0CQkgICBKaW0gV2lsc29uIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgogIElRMjAwMAkgICBTdGFuIENveCA8c2NveEByZWRoYXQuY29tPgogIGk4NjAJCSAgIEphc29uIEVja2hhcmR0IDxqbGVAcmljZS5lZHU+CiAgaXg4NgkJICAgQWxhbiBNb2RyYSA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgogIGl4ODYgUEUJICAgQ2hyaXN0b3BoZXIgRmF5bG9yIDxjZ2ZAcmVkaGF0LmNvbT4KICBpeDg2IENPRkYJICAgREogRGVsb3JpZSA8ZGpAcmVkaGF0LmNvbT4KICBpeDg2CQkgICBILkouTHUgPGhqbEBnbnUub3JnPgogIGl4ODYgSU5URUwgTU9ERSAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQG5vdmVsbC5jb20+CiAgTTY4SEMxMSBNNjhIQzEyICBTdGVwaGFuZSBDYXJyZXogPHN0Y2FycmV6QG5lcmltLmZyPgogIE02OGsJCSAgIEJlbiBFbGxpc3RvbiA8YmplQGdudS5vcmc+CiAgTTg4awkJICAgTWFyayBLZXR0ZW5pcyA8a2V0dGVuaXNAZ251Lm9yZz4KICBNQVhRCQkgICBJbmRlcnByZWV0IFNpbmdoIDxpbmRlcnByZWV0YkBub2lkYS5oY2x0ZWNoLmNvbT4KICBNSVBTCQkgICBFcmljIENocmlzdG9waGVyIDxlY2hyaXN0b0BhcHBsZS5jb20+CiAgTUlQUwkJICAgVGhpZW1vIFNldWZlciA8dGhzQG5ldHdvcmtuby5kZT4KICBNTUlYCQkgICBIYW5zLVBldGVyIE5pbHNzb24gPGhwQGJpdHJhbmdlLmNvbT4KICBNTjEwMzAwCSAgIEVyaWMgQ2hyaXN0b3BoZXIgPGVjaHJpc3RvQGFwcGxlLmNvbT4KICBNTjEwMzAwCSAgIEFsZXhhbmRyZSBPbGl2YSA8YW9saXZhQHJlZGhhdC5jb20+CiAgTVNQNDMwCSAgIERtaXRyeSBEaWt5IDxkaXdpbEBzcGVjLnJ1PgogIFBQQwkJICAgR2VvZmYgS2VhdGluZyA8Z2VvZmZrQGdlb2Zmay5vcmc+CiAgUFBDIHZlY3RvciBleHQgICBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KICBzMzkwLCBzMzkweAkgICBNYXJ0aW4gU2Nod2lkZWZza3kgPHNjaHdpZGVmc2t5QGRlLmlibS5jb20+CiAgU0gJCSAgIEr2cm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KICBTSAkJICAgQWxleGFuZHJlIE9saXZhIDxhb2xpdmFAcmVkaGF0LmNvbT4KICBTSAkJICAgS2F6IEtvamltYSA8a2tvamltYUByci5paWo0dS5vci5qcD4KICBTUEFSQwkJICAgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KICBURVNUU1VJVEVTCSAgIEJlbiBFbGxpc3RvbiA8YmplQGdudS5vcmc+CiAgVElDNFggICAgICAgICAgICBTdmVpbiBTZWxkYWwgPHN2ZWluQGRldi5zZWxkYWwuY29tPgogIFRJQzU0WCAgICAgICAgICAgVGltb3RoeSBXYWxsIDx0d2FsbEBhbHVtLm1pdC5lZHU+CiAgVkFYCQkgICBKYXNvbiBSIFRob3JwZSA8dGhvcnBlakBuZXRic2Qub3JnPgogIFZBWAkJICAgSmFuLUJlbmVkaWN0IEdsYXcgPGpiZ2xhd0BsdWctb3dsLmRlPgogIHg4Nl82NAkgICBKYW4gSHViaWNrYSA8amhAc3VzZS5jej4KICB4ODZfNjQJICAgQW5kcmVhcyBKYWVnZXIgPGFqQHN1c2UuZGU+CiAgeDg2XzY0CSAgIEguSi5MdSA8aGpsQGdudS5vcmc+CiAgWHRlbnNhCSAgIEJvYiBXaWxzb24gPGJvYi53aWxzb25AYWNtLm9yZz4KICB6ODAJCSAgIEFybm9sZCBNZXRzZWxhYXIgPGFybm9sZC5tZXRzZWxhYXJAcGxhbmV0Lm5sPgogIHo4awkJICAgQ2hyaXN0aWFuIEdyb2Vzc2xlciA8Y2hyaXNAZ3JvZXNzbGVyLm9yZz4KCgogICAgICAtLS0tLS0tLS0gQ0dFTiBNYWludGFpbmVycyAtLS0tLS0tLS0tLS0tCgpDR0VOIGlzIGEgdG9vbCBmb3IgYnVpbGRpbmcsIGFtb25nc3Qgb3RoZXIgdGhpbmdzLCBhc3NlbWJsZXJzLApkaXNhc3NlbWJsZXJzIGFuZCBzaW11bGF0b3JzIGZyb20gYSBzaW5nbGUgZGVzY3JpcHRpb24gb2YgYSBDUFUuCkl0IGNyZWF0ZXMgZmlsZXMgaW4gc2V2ZXJhbCBvZiB0aGUgYmludXRpbHMgZGlyZWN0b3JpZXMsIGJ1dCBpdAppcyBtZW50aW9uZWQgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIHNpbmdsZSBncm91cCB0aGF0IG1haW50YWlucwpDR0VOIGFuZCB0aGUgZmlsZXMgdGhhdCBpdCBjcmVhdGVzLiAKCklmIHlvdSBoYXZlIENHRU4gcmVsYXRlZCBwcm9ibGVtcyB5b3UgY2FuIHNlbmQgZW1haWwgdG87CgogICBjZ2VuQHNvdXJjZXMucmVkaGF0LmNvbQoKVGhlIGN1cnJlbnQgQ0dFTiBtYWludGFpbmVycyBhcmU6CgogIERvdWcgRXZhbnMsIEZyYW5rIEVpZ2xlcgoKICAgICAtLS0tLS0tLS0gV3JpdGUgQWZ0ZXIgQXBwcm92YWwgLS0tLS0tLS0tCgpJbmRpdmlkdWFscyB3aXRoICJ3cml0ZSBhZnRlciBhcHByb3ZhbCIgaGF2ZSB0aGUgYWJpbGl0eSB0byBjaGVjayBpbgpjaGFuZ2VzLCBidXQgdGhleSBtdXN0IGdldCBhcHByb3ZhbCBmb3IgZWFjaCBjaGFuZ2UgZnJvbSBzb21lb25lIGluCm9uZSBvZiB0aGUgYWJvdmUgbGlzdHMgKGJsYW5rZXQgd3JpdGUgb3IgbWFpbnRhaW5lcnMpLgoKW0l0J3MgYSBodWdlIGxpc3QsIGZvbGtzLiAgWW91IGtub3cgd2hvIHlvdSBhcmUuICBJZiB5b3UgaGF2ZSB0aGUKICphYmlsaXR5KiB0byBkbyBiaW51dGlscyBjaGVja2lucywgeW91J3JlIGluIHRoaXMgZ3JvdXAuICBKdXN0CiByZW1lbWJlciB0byBnZXQgYXBwcm92YWwgYmVmb3JlIGNoZWNraW5nIGFueXRoaW5nIGluLl0KCiAgICAgLS0tLS0tLS0tLS0tLSAgT2J2aW91cyBGaXhlcyAtLS0tLS0tLS0tLS0tCgpGaXhlcyBmb3Igb2J2aW91cyBtaXN0YWtlcyBkbyBub3QgbmVlZCBhcHByb3ZhbCwgYW5kIGNhbiBiZSBjaGVja2VkIGluCnJpZ2h0IGF3YXksIGJ1dCB0aGUgcGF0Y2ggc2hvdWxkIHN0aWxsIGJlIHNlbnQgdG8gdGhlIGJpbnV0aWxzIGxpc3QuClRoZSBkZWZpbml0aW9uIG9mIG9idmlvdXMgaXMgYSBiaXQgaGF6eSwgYW5kIGlmIHlvdSBhcmUgbm90IHN1cmUsIHRoZW4KeW91IHNob3VsZCBzZWVrIGFwcHJvdmFsIGZpcnN0LiAgT2J2aW91cyBmaXhlcyBpbmNsdWRlIGZpeGVzIGZvcgpzcGVsbGluZyBtaXN0YWtlcywgYmxhdGFudGx5IGluY29ycmVjdCBjb2RlICh3aGVyZSB0aGUgY29ycmVjdCBjb2RlIGlzCmFsc28gYmxhdGFudGx5IG9idmlvdXMpLCBhbmQgc28gb24uICBPYnZpb3VzIGZpeGVzIHNob3VsZCBhbHdheXMgYmUKc21hbGwsIHRoZSBsYXJnZXIgdGhleSBhcmUsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0aGF0IHRoZXkgY29udGFpbgpzb21lIHVuLW9idmlvdXMgc2lkZSBlZmZlY3Qgb3IgY29uc2VxdWVuY2UuCgogICAgLS0tLS0tLS0tIEJyYW5jaCBDaGVja2lucyAtLS0tLS0tLS0KCklmIGEgcGF0Y2ggaXMgYXBwcm92ZWQgZm9yIGNoZWNrIGluIHRvIHRoZSBtYWlubGluZSBzb3VyY2VzLCBpdCBjYW4KYWxzbyBiZSBjaGVja2VkIGludG8gdGhlIGN1cnJlbnQgcmVsZWFzZSBicmFuY2guICBOb3JtYWxseSBob3dldmVyCm9ubHkgYnVnIGZpeGVzIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSBicmFuY2guICBOZXcgZmVhdHVyZXMsIG5ldwpwb3J0cywgZXRjLCBzaG91bGQgYmUgcmVzdHJpY3RlZCB0byB0aGUgbWFpbmxpbmUuICAoT3RoZXJ3aXNlIHRoZQpidXJkZW4gb2YgbWFpbnRhaW5pbmcgdGhlIGJyYW5jaCBpbiBzeW5jIHdpdGggdGhlIG1haW5saW5lIGJlY29tZXMgdG9vIApncmVhdCkuICBJZiB5b3UgYXJlIHVuY2VydGFpbiBhcyB0byB3aGV0aGVyIGEgcGF0Y2ggaXMgYXBwcm9wcmlhdGUgZm9yCnRoZSBicmFuY2gsIGFzayB0aGUgYnJhbmNoIG1haW50YWluZXIuICBUaGlzIGlzOgoKICAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AZGViaWFuLm9yZz4KCiAgICAtLS0tLS0tLSBUZXN0c3VpdGVzIC0tLS0tLS0tLS0tLS0tLQoKSW4gZ2VuZXJhbCBwYXRjaGVzIHRvIGFueSBvZiB0aGUgYmludXRpbHMgdGVzdHN1aXRlcyBzaG91bGQgYmUKY29uc2lkZXJlZCBnZW5lcmljIGFuZCBzZW50IHRvIHRoZSBiaW51dGlscyBtYWlsaW5nIGxpc3QgZm9yCmFwcHJvdmFsLiAgUGF0Y2hlcyB0byB0YXJnZXQgc3BlY2lmaWMgdGVzdHMgYXJlIHRoZSByZXNwb25zaWJpbGl0eSB0aGUKcmVsZXZlbnQgcG9ydCBtYWludGFpbmVyKHMpLCBhbmQgY2FuIGJlIGFwcHJvdmVkL2NoZWNrZWQgaW4gYnkgdGhlbS4KT3RoZXIgdGVzdHN1aXRlIHBhdGNoZXMgbmVlZCB0aGUgYXBwcm92YWwgb2YgYSBibGFua2V0LXdyaXRlLXByaXZlbGVnZXMKcGVyc29uLgoKICAgIC0tLS0tLS0tIENvbmZpZ3VyZSBwYXRjaGVzIC0tLS0tLS0tLS0KClBhdGNoZXMgdG8gdGhlIHRvcCBsZXZlbCBjb25maWd1cmUgZmlsZXMgKGNvbmZpZy5zdWIgJiBjb25maWcuZ3Vlc3MpCmFyZSBub3QgdGhlIGRvbWFpbiBvZiB0aGUgYmludXRpbHMgcHJvamVjdCBhbmQgdGhleSBjYW5ub3QgYmUgYXBwcm92ZWQKYnkgdGhlIGJpbnV0aWxzIGdyb3VwLiAgSW5zdGVhZCB0aGV5IHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gdGhlIGNvbmZpZwptYWludGFpbmVyIGF0OgoKCWNvbmZpZy1wYXRjaGVzQGdudS5vcmcKCiAgICAtLS0tLS0tLS0gQ3JlYXRpbmcgQnJhbmNoZXMgLS0tLS0tLS0tCgpBbnlvbmUgd2l0aCBhdCBsZWFzdCB3cml0ZS1hZnRlci1hcHByb3ZhbCBhY2Nlc3MgbWF5IGNyZWF0ZSBhIGJyYW5jaAp0byB1c2UgZm9yIHRoZWlyIG93biBkZXZlbG9wbWVudCBwdXJwb3Nlcy4gIEluIGtlZXBpbmcgd2l0aCBGU0YKcG9saWNpZXMsIGFsbCBwYXRjaGVzIGFwcGxpZWQgdG8gc3VjaCBhIGJyYW5jaCBtdXN0IGNvbWUgZnJvbSBwZW9wbGUKd2l0aCBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgYXNzaWdubWVudHMgb24gZmlsZS4gIEFsbCBsZWdhbApyZXF1aXJlbWVudHMgdGhhdCB3b3VsZCBhcHBseSB0byBhbnkgb3RoZXIgY29udHJpYnV0aW9uIGFwcGx5IGVxdWFsbHkKdG8gY29udHJpYnV0aW9ucyBvbiBhIGJyYW5jaC4KCkJlZm9yZSBjcmVhdGluZyB0aGUgYnJhbmNoLCB5b3Ugc2hvdWxkIHNlbGVjdCBhIG5hbWUgZm9yIHRoZSBicmFuY2ggb2YKdGhlIGZvcm06CgogIGJpbnV0aWxzLTxvcmc+LTxuYW1lPiAKCndoZXJlICJvcmciIGlzIHRoZSBpbml0aWFscyBvZiB5b3VyIG9yZ2FuaXphdGlvbiwgb3IgeW91ciBvd24gaW5pdGlhbHMKaWYgeW91IGFyZSBhY3RpbmcgYXMgYW4gaW5kaXZpZHVhbC4gIEZvciBleGFtcGxlLCBmb3IgYSBicmFuY2ggY3JlYXRlZApieSBUaGUgR05VRGlzdCBDb21wYW55LCAidGdjIiB3b3VsZCBiZSBhbiBhcHByb3ByaWF0ZSBjaG9pY2UgZm9yCiJvcmciLiAgSXQncyB1cCB0byBlYWNoIG9yZ2FuaXphdGlvbiB0byBzZWxlY3QgYW4gYXBwcm9wcmlhdGUgY2hvaWNlCmZvciAibmFtZSI7IHNvbWUgb3JnYW5pemF0aW9ucyBtYXkgdXNlIG1vcmUgc3RydWN0dXJlIHRoYW4gb3RoZXJzLCBzbwoibmFtZSIgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBoeXBoZW5zLgoKU3VwcG9zZSB0aGF0IFRoZSBHTlVEaXN0IENvbXBhbnkgd2FzIGNyZWF0aW5nIGEgYnJhbmNoIHRvIGRldmVsb3AgYQpwb3J0IG9mIEJpbnV0aWxzIHRvIHRoZSBGdWxsTW9udHkgcHJvY2Vzc29yLiAgVGhlbiwgYW4gYXBwcm9wcmlhdGUKY2hvaWNlIG9mIGJyYW5jaCBuYW1lIHdvdWxkIGJlOgoKICBiaW51dGlscy10Z2MtZm0KCkEgZGF0YSBzdGFtcCBpcyBub3QgcmVxdWlyZWQgYXMgcGFydCBvZiB0aGUgbmFtZSBmaWVsZCwgYnV0IHNvbWUKb3JnYW5pemF0aW9ucyBsaWtlIHRvIGhhdmUgb25lLiAgSWYgeW91IGRvIGluY2x1ZGUgdGhlIGRhdGUsIHlvdQpzaG91bGQgZm9sbG93IHRoZXNlIHJ1bGVzOgoKMS4gVGhlIGRhdGUgc2hvdWxkIGJlIHRoZSBkYXRlIHRoYXQgdGhlIGJyYW5jaCB3YXMgY3JlYXRlZC4KCjIuIFRoZSBkYXRlIHNob3VsZCBiZSBudW1lcmljYWwgYW5kIGluIHRoZSBmb3JtIFlZWVlNTURELgoKRm9yIGV4YW1wbGU6CgogIGJpbnV0aWxzLXRnYy1mbV8yMDA1MDEwMQoKd291bGQgYmUgYXBwcm9wcmlhdGUgaWYgdGhlIGJyYW5jaCB3YXMgY3JlYXRlZCBvbiBKYW51YXJ5IDFzdCwgMjAwNS4KCkhhdmluZyBzZWxlY3RlZCB0aGUgYnJhbmNoIG5hbWUsIGNyZWF0ZSB0aGUgYnJhbmNoIGFzIGZvbGxvd3M6CgoxLiBDaGVjayBvdXQgYmludXRpbHMsIHNvIHRoYXQgeW91IGhhdmUgYSBDVlMgY2hlY2tvdXQgY29ycmVzcG9uZGluZwogICB0byB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB5b3VyIGJyYW5jaC4KCjIuIENyZWF0ZSBhIHRhZzoKCiAgICAgY3ZzIHRhZyBiaW51dGlscy08b3JnPi08bmFtZT4tYnJhbmNocG9pbnQKCiAgIFRoYXQgdGFnIHdpbGwgYWxsb3cgeW91LCBhbmQgb3RoZXJzLCB0byBlYXNpbHkgZGV0ZXJtaW5lIHdoYXQncwogICBjaGFuZ2VkIG9uIHRoZSBicmFuY2ggcmVsYXRpdmUgdG8gdGhlIGluaXRpYWwgc3RhdGUuCgozLiBDcmVhdGUgdGhlIGJyYW5jaDoKCiAgICAgY3ZzIHJ0YWcgLWIgLXIgYmludXRpbHMtPG9yZz4tPG5hbWU+LWJyYW5jaHBvaW50IFwKICAgICAgIGJpbnV0aWxzLTxvcmc+LTxuYW1lPi1icmFuY2ggCgo0LiBEb2N1bWVudCB0aGUgYnJhbmNoOgoKICAgICBBZGQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgYnJhbmNoIHRvIGJpbnV0aWxzL0JSQU5DSEVTLCBhbmQgY2hlY2sKICAgICB0aGF0IGZpbGUgaW4uICBBbGwgYnJhbmNoIGRlc2NyaXB0aW9ucyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlCiAgICAgSEVBRCByZXZpc2lvbiBvZiB0aGUgZmlsZTsgaXQgZG9lc24ndCBoZWxwIHRvIG1vZGlmeQogICAgIGJpbnV0aWxzL0JSQU5DSEVTIG9uIGEgYnJhbmNoIQoKUGxlYXNlIGRvIG5vdCBjb21taXQgYW55IHBhdGNoZXMgdG8gYSBicmFuY2ggeW91IGRpZCBub3QgY3JlYXRlCndpdGhvdXQgdGhlIGV4cGxpY2l0IHBlcm1pc3Npb24gb2YgdGhlIHBlcnNvbiB3aG8gY3JlYXRlZCB0aGUgYnJhbmNoLgo=