KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICAgICAgICAgCiAgICAgICAgICAgICBWTU9wcyBDbG91ZCBTdGFjayBWZXJzaW9uIDAuNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldIQVQnUyBORVcgOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogTklDIGJvbmRpbmcgc3VwcG9ydCBmb3IgdGhlIENvbXB1dGluZywgUm91dGluZywgYW5kIFN0b3JhZ2Ugbm9kZXMgdG8gdGFrZQphZHZhbnRhZ2Ugb2YgdGhlIG11bHRpcGxlIE5JQ1MgaW5zdGFsbGVkIG9uIHRoZSBzZXJ2ZXIuCiogTWFpbnRlbmFuY2UgTW9kZSBzdXBwb3J0IGZvciBwaHlzaWNhbCBzZXJ2ZXJzLiAgQWRtaW5pc3RyYXRvcnMgbm93IGhhdmUgdGhlCm9wdGlvbiB0byBlbmFibGUgb3IgZGlzYWJsZSBtYWludGVuYW5jZSBtb2RlIG9uIGFueSBwaHlzaWNhbCBzZXJ2ZXJzLiAgRW5hYmxpbmcKbWFpbnRlbmFuY2UgbW9kZSBvbiBhIFJvdXRpbmcgb3IgQ29tcHV0aW5nIG5vZGUgd2lsbCByZXN1bHQgaW4gdGhlIHNlYW1sZXNzIGxpdmUKbWlncmF0aW9uIG9mIGd1ZXN0IHZpcnR1YWwgbWFjaGluZXMgaW50byBvdGhlciBwaHlzaWNhbCBzZXJ2ZXJzIHdpdGhpbiB0aGUgc2FtZQp6b25lIGJlZm9yZSBtYWtpbmcgdGhlIHNlcnZlciBhdmFpbGFibGUgZm9yIG1haW50ZW5hbmNlLgoqIEludHJvZHVjdGlvbiBvZiBhIG5ldyB1c2VyIHdlYiBpbnRlcmZhY2UgZm9yIGFsbG93aW5nIHVzZXIgYWNjb3VudHMgdG8gbWFuYWdlCnRoZWlyIG93biB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBuZXcgaW50ZXJmYWNlIGhhcyBhIGJyYW5kIG5ldyBsb29rIGFuZCBmZWVsLAphbGxvd3MgZm9yIGVhc2llciBicmFuZGluZyBhbmQgY3VzdG9taXphdGlvbiwgYW5kIGlzIGVhc2llciB0byBpbmNvcnBvcmF0ZSBpbnRvCmV4aXN0aW5nIHdlYiBpbnRlcmZhY2VzLgoqIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBjcmVhdGlvbiBvZiBSZXNlbGxlciBEb21haW5zLiAgVGhlIFJlc2VsbGVyIERvbWFpbiAKZmVhdHVyZSBhbGxvd3MgaG9zdCBwcm92aWRlcnMgdG8gY3JlYXRlIHJlc2VsbGVycyBjb21wbGV0ZSB3aXRoIHRoZWlyIG93bgp1c2VyIGJhc2UgYW5kIGFkbWluaXN0cmF0b3JzIHdoaWxlIHVzaW5nIHRoZSBzYW1lIGdsb2JhbCBjb21wdXRpbmcgcmVzb3VyY2VzCnByb3ZpZGVkIGJ5IHRoZSBob3N0IHByb3ZpZGVyLgoqIEFkZGVkIGEgbmV3IGVtYWlsIGFsZXJ0aW5nIHN5c3RlbSB0aGF0IHdpbGwgbm93IGluZm9ybSBhZG1pbmlzdHJhdG9ycyBvZgpldmVudHMgc3VjaCBhcyB3aGVuIHBoeXNpY2FsIHNlcnZlcnMgYXJlIGRvd24gb3IgY29tcHV0aW5nIHJlc291cmNlcyBhcmUgCnBhc3NpbmcgYSBwcmUtY29uZmlndXJlZCB0aHJlc2hvbGQuCiogTWFzc2l2ZSBpbXByb3ZlbWVudHMgdG8gdGhlIGV4aXN0aW5nIERldmVsb3BlciBhbmQgSW50ZWdyYXRpb24gQVBJLiAgRXJyb3IKY29kZXMgaGF2ZSBub3cgYmVlbiBhZGRlZCBhbmQgZXhpc3RpbmcgQVBJIG1ldGhvZCBuYW1lcyBhbmQgcGFyYW1ldGVycyBoYXZlIGJlZW4KbWFkZSBtb3JlIGNvbnNpc3RlbnQuICBBIEpTT04gZm9ybWF0IGNhbiBhbHNvIG5vdyBiZSBvcHRpb25hbGx5CnJldHVybmVkIGluIGFkZGl0aW9uIHRvIHRoZSBleGlzdGluZyBYTUwgZm9ybWF0LiAgUGxlYXNlIHJlYWQgdGhlIG5ldyBBUEkKUmVmZXJlbmNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgY2hhbmdlcy4KKiBCaWxsaW5nIHJlY29yZHMgaGF2ZSBub3cgYmVlbiBjaGFuZ2VkIHRvIFVzYWdlIHJlY29yZHMgdG8gcHJvdmlkZSBkYXRhIGZvcgpib3RoIGJpbGxpbmcgaW50ZWdyYXRpb24gYW5kIHVzYWdlIG1ldGVyaW5nLiAgUHJpY2UgaGFzIGJlZW4gY29tcGxldGVseSByZW1vdmVkCmZyb20gVk1PcHMuICBJbnN0ZWFkIHdlIGFkZGVkIGFiaWxpdHkgdG8gc2V0IHlvdXIgb3duIGRpc3BsYXkgdGV4dCBmb3IgYm90aCAKc2VydmljZSBvZmZlcmluZyBhbmQgdGVtcGxhdGVzLiAgWW91IGNhbiBub3cgdXNlIHRoaXMgdG8gc2V0IGFueSB0ZXh0IGZvciB0aGUgVUkKdG8gZGlzcGxheS4KKiBOZXcgdmlydHVhbCBtYWNoaW5lcyBkZXBsb3llZCB3aWxsIG5vdyBnZW5lcmF0ZSBhIHJhbmRvbSBwYXNzd29yZC4gIEEgcmVzZXQKcGFzc3dvcmQgaXMgYWxzbyBub3cgYXZhaWxhYmxlIGJvdGggaW4gdGhlIHdlYiB1c2VyIGludGVyZmFjZSBhcyB3ZWxsIGFzIHRoZSAKQVBJLiAgV2Ugc3VwcG9ydCBib3RoIExpbnV4IGFuZCBXaW5kb3dzIE9TIGJhc2VkIHRlbXBsYXRlcy4KKiBTdG9yYWdlIHNlcnZlciBpcyBub3cgYSBiYXJlLWJvbmUgaW5zdGFsbGF0aW9uIGFuZCB1c2VzIHRoZSBuZXcgQ09NU1RBUiBpU0NTSSAKc3RhY2sgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLiAgV2UgcmVjb2duaXplZCB0aGF0IHdoaWxlIHJ1bm5pbmcgdGhlIHN0b3JhZ2UgCnNlcnZlciBhcyBhIHZpcnR1YWwgbWFjaGluZSBkb2VzIGFsbG93cyBmb3IgbW9yZSBoYXJkd2FyZSBzdXBwb3J0LCBpdCBzZXZlcmVseSAKaW1wYWN0cyBwZXJmb3JtYW5jZS4gIFRoZSBsaXN0IG9mIGNvbXBhdGlibGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBPcGVuIApTb2xhcmlzIHdlYnNpdGUuCiogQWRkZWQgY2x1c3RlcmluZyBzdXBwb3J0IGZvciB0aGUgVk1PcHMgTWFuYWdlbWVudCBTZXJ2ZXIuICAKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGlwIGFkZHJlc3MgKHNlcGFyYXRlIApzdWJuZXQpIGZvciBib3RoIFJvdXRpbmcgYW5kIENvbXB1dGluZyBzZXJ2ZXJzLiAgSWYgYSBzZXJ2ZXIgaXMgY29uZmlndXJlZCB3aXRoIAphbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXAsIGFsbCBzdG9yYWdlIHRyYWZmaWMgd2lsbCByb3V0ZSB0aHJvdWdoIHRoaXMgc3VibmV0IGFuZAphbGwgbmV0d29yay9pbnRlcm5ldCB0cmFmZmljIHdpbGwgcm91dGUgdGhyb3VnaCB0aGUgZXhpc3RpbmcgcHJpdmF0ZSBuZXR3b3JrLgoqIEFkZGVkIGNvbmNlcHQgb2YgYSB1c2VyIGFjY291bnQuICBWTU9wcyBzdXBwb3J0cyBtdWx0aXBsZSB1c2VybmFtZSBmb3IgYQpzaW5nbGUgdXNlciBhY2NvdW50LgoqIENyZWF0ZWQgbmV3IGluc3RhbGxlcnMgZm9yIHRoZSBWTU9wcyBNdWx0aVRlbmFudCBIeXBlcnZpc29yIGFuZCB0aGUgVk1PcHMKU3RvcmFnZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpLTk9XTiBJU1NVRVMgOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogRG9tUiBpcyBzdGlsbCBjb3VudGluZyBpbnRlcm5hbCBuZXR3b3JrIGFjdGl2aXRpZXMgYXMgcGFydCBvZiB0aGUgdXNhZ2UgdGhhdAppcyBiZWluZyByZXR1cm5lZCBieSB0aGUgQVBJLgoqIFRoZSByZXNldCBwYXNzd29yZCBmb3IgdmlydHVhbCBtYWNoaW5lIGZlYXR1cmUgZG9lcyBub3QgcmV0dXJuIGFuIGVycm9yIGlmIGl0CmZhaWxzIHRvIHN1Y2Nlc3NmdWxseSByZXNldCB0aGUgcGFzc3dvcmQuCiogVk1PcHMgaW5zdGFsbGF0aW9uIHNjcmlwdHMgdG8gbm90IHZhbGlkYXRlIGJhZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgoqIFZOWCBQcm94eSBTZXJ2ZXIgZG9lcyBub3QgaGFuZGxlIHJhcGlkIHJlZnJlc2hlcyBvZiB3ZWIgY29uc29sZSBwcm94eSB3ZWxsLgoqIFZOQyBQcm94eSBTZXJ2ZXIgYXQgdGltZXMgZG8gbm90IHJldHVybiBhIHRodW1ibmFpbCBpbWFnZS4KKiBSZWJvb3RpbmcgYSBEb21SIGluc3RhbmNlIHdpbGwgY2F1c2UgbmV0d29yayB0cmFmZmljIHRvIG5vdCBiZSBjb2xsZWN0ZWQuCiogQXNzb2NpYXRpbmcgbmV3IElQIGFkZHJlc3NlcyBzaG91bGQgY2xlYW4gb3V0IGV4aXN0aW5nIExCIG9yIFBGIHJ1bGVzIGJlZm9yZQphc3NpZ25pbmcgaXQgdG8gYSBEb21SIGluc3RhbmNlLiAgCiogVGhlIFVzYWdlIHBhcnNlIGVuZ2luZSBuZWVkcyB0byBiZSBzcGxpdCBvdXQgZnJvbSB0aGUgVk1PcHMgTWFuYWdlbWVudCBTZXJ2ZXIKc28gdGhhdCBvbmx5IGEgc2luZ2xlIGluc3RhbmNlIG9mIHRoaXMgY2FuIGJlIHJ1bm5pbmcgYW5kIGRvZXMgbm90IGFmZmVjdApub3JtYWwgb3BlcmF0aW9ucy4KKiBUZW1wbGF0ZXMgbmVlZHMgYSB3YXkgb2Ygc3BlY2lmeWluZyB0aGUgbWluaW11bSBDUFUgYW5kIE1lbW9yeSByZXF1aXJlbWVudHMuCiogY3JlYXRlVXNlciBBUEkgbWV0aG9kIGN1cnJlbnRseSBhbGxvd3MgeW91IHRvIGFzc2lnbiB1c2VycyB0byBhZG1pbiBhY2NvdW50cy4KKiBJbnN0YWxsYXRpb25zIG9mIHNlcnZlcnMgd2l0aCBtb3JlIHRoYW4gMyBOSUMgc29tZXRpbWVzIGR1cGxpY2F0ZXMgdGhlIE1BQwphZGRyZXNzIG9uIHRoZSBpZmNmZyBjb25maWd1cmF0aW9uIGZpbGVzLgoqIEFkZGl0aW9uYWwgYWRtaW4gb25seSBBUEkgbWV0aG9kcyBhcmUgbWlzc2luZyAoaWUuIERvbWFpbiBtYW5hZ2VtZW50LCByb3V0ZXIKbWFuYWdlbWVudCkuCiogVXNhZ2UgcGFyc2UgZW5naW5lIGNvdWxkIGdvIE9PTSBpbiB0aGUgZXZlbnQgaXQgaGFzIG5vdCBiZWVuIHJ1biByZWNlbnRseQphbmQgdGhlcmUgYXJlIGEgbGFyZ2UgKDIgbWlsbGlvbisgcmVjb3JkcykuCiogUHJvYmxlbSB3aXRoIGRvbVUgd2hlbiBib3RoIGUxMDAwIGFuZCBlMTAwMGUgdXNlZCBhcyBhIE5JQyBkcml2ZXJzIGZvciBhCkNvbXB1dGluZyBTZXJ2ZXIuICBUaGUgaW5zdGFsbGVyIG5lZWRzIHRvIGJsYWNrbGlzdCBvbmUgb2YgdGhlIGRyaXZlcnMuCiogdm5ldCBmYWlsdXJlcyBhbmQgeGVuIGNyYXNoZXMgY3VycmVudGx5IGRvIG5vdCBnZW5lcmF0ZSBhbiBhbGVydCB0byB0aGUgYWRtaW5pc3RyYXRvci4KKiBUaGUgY3VycmVudCBsaW1pdCBmb3IgZG9tVSBpbnN0YW5jZXMgY3JlYXRlZCBvbiBhIENvbXB1dGluZyBTZXJ2ZXIgaXMgNjQgYW5kCnRoZSBjdXJyZW50bHkgbGltaXQgZm9yIGRvbVIgaW5zdGFuY2VzIGNyZWF0ZWQgaXMgNTkgb24gYSBSb3V0aW5nIFNlcnZlci4KKiBObyBjdXJyZW50IHdheSBvZiBhbGxvd2luZyBkaWZmZXJlbnQgc3VibmV0cyBmb3IgZGlmZmVyZW50IHBvZHMgd2l0aGluIHRoZQpzYW1lIHpvbmUuCiogbGltaXQgdGhlIG51bWJlciBvZiB1c2FnZSBhbmQgZXZlbnQgcmVjb3JkcyByZXR1cm5lZCBieSB0aGUgQVBJLiAgQSBsYXJnZQplbm91Z2ggb2YgdGhlIHF1ZXJ5IGNvdWxkIGNhdXNlIHRoZSBNYW5hZ2VtZW50IFNlcnZlciB0byBnbyBvb20uCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQlVHIEZJWEVTIDoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoqIEltcHJvdmVkIHRyYW5zYWN0aW9ucyBhY3Jvc3MgYm90aCBkYXRhYmFzZSBjYWxscyBhbmQgY2FsbHMgYWNyb3NzIGFnZW50cy4KKiBGaXhlZCBhbiBpc3N1ZSB3aGVyZSBkdXBsaWNhdGUgSVAgb3IgTEIgcnVsZXMgY291bGQgYmUgc2VudCB0byB0aGUgRG9tUgppbnN0YW5jZSBkdXJpbmcgYSBEb21SIHJlc3RhcnQuCiogUmVtb3ZlZCByZXF1aXJlbWVudCBvZiB0aGUgcmV2ZXJzZSBETlMgbG9va3VwIGZvciB0aGUgU3RvcmFnZSBTZXJ2ZXIuCiogTWFzc2l2ZSBpbXByb3ZlbWVudHMgdG8gdGhlIEhBIHByb2Nlc3MuCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgdGhlIGl0IHdvdWxkIHRha2UgdG9vIGxvbmcgZm9yIHRoZSBtYW5hZ2VtZW50IHNlcnZlcgp0byBkZXRlY3QgYSBUQ1AgZGlzY29ubmVjdC4KKiBGaXhlZCBhbiBpc3N1ZSB3aGVyZSB0aGUgdGhlIGFnZW50IHdvdWxkICp0aGluayogaXQgaGFzIGNvbm5lY3RlZCB0byB0aGUgCm1hbmFnZW1lbnQgc2VydmVyIGJ1dCBpbiByZWFsaXR5LCBpdCBpcyBqdXN0IHN0dWNrIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgdGhhdAp3aWxsIG5ldmVyIGNvbWUuCiogR2VuZXJpYyBEQiBsb2NrIHdhaXQgdGltZW91dCBmaXhlcy4KKiBJbXByb3ZlbWVudHMgdG8gdGhlIGdlbmVyYWwgc3RhdGUgbWFuYWdlbWVudCBvZiB0aGUgc2VydmVycy4KKiBGaXhlZCBpc3N1ZSB3aGVyZSB3aGVyZSBwaHlzaWNhbCBzZXJ2ZXJzIHdpdGggdGhlIHNhbWUgSVAgYXR0ZW1wdHMgdG8gY29ubmVjdAp0byB0aGUgTWFuYWdlbWVudCBTZXJ2ZXIuICBUaGUgc2Vjb25kIHNlcnZlciBpcyBub3cgcHJldmVudGVkIGZyb20gcmVnaXN0ZXJpbmcuCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgZGVsZXRpbmcgYSB1c2VyIGZyb20gYW4gYWNjb3VudCB3b3VsZCByZXN1bHQgaW4gYWxsIHRoZQp2aXJ0dWFsIG1hY2hpbmVzIHRvIGJlIGNsZWFuZWQgdXAuICBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiB0aGUgbGFzdCB1c2VyIGZvcgphbiBhY2NvdW50IGhhcyBiZWVuIGRlbGV0ZWQuCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgdGhlIHNvdXJjZSBOQVQgaXAgYWRkcmVzcyBvZiBhIERvbVIgaW5zdGFuY2UgaXMgYmVpbmcKcmVsZWFzZWQgYmFjayBpbnRvIHRoZSBwdWJsaWMgcG9vbCBldmVuIHRob3VnaCB0aGUgRG9tUiBpbnN0YW5jZSB3YXMgbm90IApzdWNjZXNzZnVsbHkgZGVzdHJveWVkLgoqIEZpeGVkIGFuIGlzc3VlIHdoZXJlIGEgZ3Vlc3QgdmlydHVhbCBtYWNoaW5lIGNhbm5vdCBiZSBkZXN0cm95ZWQgd2hpbGUgaW4gSEEKc3RhdGUuCiogUmVtb3ZlZCByZXF1aXJlbWVudCB0byBzcGVjaWZ5IHRoZSBzdG9yYWdlIHR5cGUgd2hlbiBpbnN0YWxsaW5nIGEgbmV3IHRlbXBhdGUuCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgdGhlIGNvbnNvbGUgcHJveHkgZnJvbSBkaWZmZXJlbnQgem9uZXMgYXJlIGFsbCBzdGFydGluZwppbiB0aGUgc2FtZSB6b25lLgoqIEZpeGVkIGFuIGlzc3VlIHdoZXJlIHRoZSBsaXN0aW5nIG9mIHZpcnR1YWwgbWFjaGluZXMgd291bGQgaGFuZyBpZiB0aGUgY29uc29sZQpwcm94eSBpcyBub3QgZXZlbiBzdGFydGVkLgoqIE1hc3NpdmUgaW1wcm92ZW1lbnRzIHRvIG91ciBpbnN0YWxsZXIgc2NyaXB0cy4KKiBNYXNzaXZlIGltcHJvdmVtZW50cyB0byB0aGUgZ2VuZXJhbCBzdGFiaWxpdHkgb2YgdGhlIENsb3VkIFN0YWNrLgoqIEZpeGVkIGFuIGlzc3VlIHdoZXJlIHRoZSBIeXBlcnZpc29yIGluc3RhbGxlciBpcyB1bmFibGUgdG8gaW5zdGFsbCBvbnRvIAptYWNoaW5lcyB3aXRoIGEgSVBNSSBjYXJkLgoqIEFzIHVzdWFsLCB0aGVyZSBhcmUgdG9vIG1hbnkgYnVnIGZpeGVzIHRvIGxpc3QuLi4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgICAgIAogICAgICAgICAgICAgVk1PcHMgQ2xvdWQgU3RhY2sgVmVyc2lvbiAwLjMueHh4eAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldIQVQnUyBORVcgOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogSW50cm9kdWN0aW9uIG9mIFZNT3BzIERldmVsb3BlciBBUEkuIFRoaXMgYWxsb3dzIHVzZXJzIG9mIHRoZSBWTU9wcyBDbG91ZCAKICBTdGFjayB0byBtYW5hZ2UgdGhlaXIgdmlydHVhbCBtYWNoaW5lcyB0aHJvdWdoIGEgc2V0IG9mIFJFU1QtbGlrZSBBUEkuIAoqIEltcHJvdmVkIGNvbGxlY3Rpb24gb2YgdXNlciB1c2FnZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGJvdGggYmlsbGluZyAKICBhZ2dyZWdhdGlvbiBhbmQgbWV0cmljIGNvbGxlY3Rpb24uIAoqIEhpZ2ggYXZhaWxhYmlsaXR5IHN1cHBvcnQgZm9yIHVzZXIgdmlydHVhbCBtYWNoaW5lcy4gCiogU3VwcG9ydCBmb3IgYXV0b21hdGljIGh5cGVydmlzb3IgYWdlbnQgc29mdHdhcmUgdXBkYXRlLiAKKiBWTkMgY29uc29sZSBwcm94eSBzZXJ2ZXJzIGNhbiBub3cgcnVuIGFzIG1hbmFnZWQgVk1PcHMgc3lzdGVtIFZNcy4gVGhlIG5ldyAKICBpbXBsZW1lbnRhdGlvbiBwcm92aWRlcyBmZWF0dXJlcyBzdWNoIGFzIG9uLWRlbWFuZCBWTSBzdGFydHVwLCBzdGFuZGJ5IAogIGNhcGFjaXR5IHByZS1hbGxvY2F0aW9uIGFuZCBjb25zb2xlIHByb3h5IGxvYWQgbW9uaXRvcmluZy4gCiogTXVjaCBJbXByb3ZlZCBWTU9wcyBDbG91ZCBTdGFjayBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gVk1PcHMgQ2xvdWQgU3RhY2sgY2FuIAogIG5vdyBiZSBpbnN0YWxsZWQgd2l0aCBhIG1pbmltdW0gb2YgdHdvIHBoeXNpY2FsIHNlcnZlcnMuCiogVk1PcHMgQ2xvdWQgU3RhY2sgaW5zdGFsbGF0aW9uIERWRCBub3cgY29tZXMgaW4gdHdvIGZsYXZvcnMuIFZNT3BzIENsb3VkIFN0YWNrIAogIE1hbmFnZW1lbnQgU2VydmVyIEluc3RhbGxhdGlvbiBEVkQgYW5kIFZNT3BzIENsb3VkIFN0YWNrIE11bHRpdGVuYW50IAogIEh5cGVydmlzb3IgSW5zdGFsbGF0aW9uIERWRC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpLTk9XTiBJU1NVRVMgOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogUFYgZHJpdmVycyBmb3IgV2luZG93cyAyMDAzIGFuZCBXaW5kb3dzIDIwMDMgeDg2XzY0IChJbmNvbXBsZXRlIEZlYXR1cmUpCiogR1VJIHBhbmVsIGZvciBhbGxvd2luZyBhZG1pbmlzdHJhdG9ycyB0byBzZXQgdmFyaW91cyBzeXN0ZW0gY29uZmlndXJhdGlvbnMgLQogIGkuZS4gem9uZXMsIHBvZHMsIGlwIGFkZHJlc3NlcyAoSW5jb21wbGV0ZSBGZWF0dXJlKQoqIFN1cHBvcnQgZm9yIG11bHRpcGxlIE5JQyBjYXJkcyBvbiBjb21wdXRpbmcsIHJvdXRpbmcsIGFuZCBzdG9yYWdlIHNlcnZlcnMgCiAgKERpc2FibGVkIEZlYXR1cmUpCiogU3VwcG9ydCBmb3IgcmVzZWxsZXJzIChJbmNvbXBsZXRlIEZlYXR1cmUpCiogQWxsb3cgYWRtaW5zL3VzZXJzIHRvIHNwZWNpZnkgdGhlIHJvb3QgcGFzc3dvcmQgZm9yIHRoZWlyIG5ldyBpbnN0YW5jZS4gIEl0IAogIGNhbm5vdCBkZWZhdWx0IHRvIHJvb3QvcGFzc3dvcmQgKEJ1ZyAxMzQpCiogQWRtaW4vVXNlciBEYXNoYm9hcmQgKEJ1ZyAxNTQgYW5kIDE1NSkKKiBEeW5hbWljYWxseSByZWZyZXNoIHNlcnZlciBhbmQgdm0gaW5zdGFuY2Ugc3RhdHVzIGluIEdVSSB3aXRob3V0IGEgbWFudWFsCiAgcmVmcmVzaCAoQnVnIDM4OSkKKiBOZWVkIHRyYW5zYWN0aW9uIHNlbWFudGljcyBhY3Jvc3MgREIgYW5kIGFnZW50LiAgV2l0aG91dCB0aGlzLCBpdCBpcyBwb3NzaWJsZQogIHRvIHRpbWVvdXQgZGIgY2FsbHMgdGhhdCBmaXJzdCBsb2NrIGEgcmVjb3JkIGFuZCByZWxpZXMgb24gYW4gYWdlbnQgcmVzcG9uc2UKICBiZWZvcmUgcmVsZWFzaW5nIHRoYXQgcmVjb3JkLiAoQnVnIDQwOCkKKiBBbGwgU2VydmVyIFJvbGVzIChNZ210LCBDb21wdXRpbmcsIFJvdXRpbmcsIGFuZCBTdG9yYWdlKSByZXF1aXJlIGEgZnVuY3Rpb25pbmcKICBldGgwIE5JQyBpbiBvcmRlciB0byBpbnN0YWxsIGNvcnJlY3RseS4gKEJ1ZyA0NzApCiogVW5hYmxlIHRvIGhhbmRsZSBIQSB3aGVuIGFuIGVudGlyZSBQb2QgaXMgdW5yZWFjaGFibGUgKEJ1ZyA2MjApCiogSW1wcm92ZWQgbmV0d29yayB0cmFmZmljIHJlcG9ydGluZyAoQnVnIDY0MikKKiBNdWx0aXBsZSBsb2dpbiBzdXBwb3J0IGEgc2luZ2xlIHVzZXIgYWNjb3VudCAoQnVnIDU4OSkKKiBEb21SIGluc3RhbmNlcyBjb250aW51ZSB0byBydW4gZXZlbiB0aG91Z2ggYWxsIFZNcyBhc3NvY2lhdGVkIHdpdGggdGhlIERvbVIKICBhcmUgbm8gbG9uZ2VyIGV2ZW4gcnVubmluZy4gKEJ1ZyA2MTcpCiogSEEgZmFpbHMgd2hlbiBWTSBhbmQgUm91dGVyIGZvciB0aGUgc2FtZSB1c2VyIGdvIGRvd24gYXQgdGhlIHNhbWUgdGltZQogIChCdWcgNjAzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJVRyBGSVhFUyA6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKiBJbXByb3ZlZCBCaWxsaW5nIGRhdGEgZ2VuZXJhdGlvbiAoQnVnIDQ4MikKKiBBYmxlIHRvIGNyZWF0ZSBuZXcgYWRtaW5zIHRocm91Z2ggdGhlIGFkbWluIGNvbnNvbGUgVUkuIChCdWcgNDkyKQoqIEFibGUgdG8gY3JlYXRlIG5ldyBTZXJ2aWNlIE9mZmVyaW5ncyB0aHJvdWdoIHRoZSBhZG1pbiBjb25zb2xlIFVJIChCdWcgNTAwKQoqIFNpZ25pZmljYW50bHkgaW1wcm92ZWQgdGhlIGltYWdpbmcgc3BlZWQgd2hlbiBpbnN0YWxsaW5nIFZNT3BzIENsb3VkIFN0YWNrCiAgKEJ1ZyA0NzYpCiogSGFyZGVuIERvbVIgVGVtcGxhdGUgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzCiogTm8gbG9uZ2VyIHJlcXVpcmUgZXRoMCBkdXJpbmcgaW5zdGFsbGF0aW9uIHByb2Nlc3Mgb2YgdGhlIGhvc3RzIChCdWcgNDkwKQoqIEZpeGVkIGlzc3VlIHdoZXJlIGhhdmluZyBtdWx0aXBsZSBOSUMgY2FyZHMgY2F1c2VkIGlzc3VlcyAoQnVnIDQ4OSkKKiBJbnN0YWxsYXRpb24gVUkgd2lsbCBub3cgYWxsb3cgeW91IHRvIHNlbGVjdCB0byB0aGUgZGlzayBmb3Igc3RvcmFnZQogIChCdWcgNTU2KQoqIEluc3RhbGxhdGlvbiBVSSB3aWxsIG5vdyBhbGxvdyB5b3UgdG8gc2VsZWN0IE5JQyB0byB1c2UgYXMgcHJpdmF0ZSwgcHVibGljLAogIG9yIHNpbXBseSBkaXNhYmxlZAoqIE1nbXQgc2VydmVyIHdpbGwgbm93IHJlZmxlY3QgdGhlIHN0YXR1cyBvZiB1c2VyIHZtcyBpZiB0aGUgc3RvcmFnZSBzZXJ2ZXIgdGhhdAogIGhvc3RzIHRoZSB2bSdzIHZvbHVtZXMgaXMgbm8gbG9uZ2VyIGFjY2Vzc2libGUuIChCdWcgNTIxKQoqIFJvdXRpbmcgYW5kIENvbnNvbGUgUHJveHkgVk0gd2lsbCBub3cgYmUgSEEtZW5hYmxlZCBieSBkZWZhdWx0IChCdWcgNjE0KQoqIENvbnNvbGUgUHJveHkgVk0gYXJlIG5vdyBhdXRvbWF0aWNhbGx5IG1hbmFnZWQgYnkgdGhlIE1nbXQgU2VydmVyIChCdWcgMTEwKQoqIFRlbXBsYXRlIE1hbmFnZW1lbnQgZnJvbSB0aGUgY29uc29sZSBhZG1pbiBVSSBzaG91bGQgYmUgaW1wcm92ZWQKKiBUb28gbWFueSB0byBsaXN0Li4uCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZNT3BzIENsb3VkIFN0YWNrIFZlcnNpb24gMC4yLjYyOTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXSEFUJ1MgTkVXIDoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoqIFZNT3BzIFNlcnZlcgogIC0gSW50cm9kdWN0aW9uIG9mIFZNT3BzIEludGVncmF0aW9uIEFQSS4gIFRoaXMgQVBJIGFsbG93cyBzZXJ2aWNlIHByb3ZpZGVycwogICAgdG8gcHJvdmlzaW9uIHVzZXJzIGFuZCB0byByZXRyaWV2ZSBiaWxsaW5nIGluZm8gYW5kIGV2ZW50cy4gIEl0IGlzIGEgc2ltcGxlIAogICAgcXVlcnkgbGFuZ3VhZ2Ugd3JpdHRlbiBvbiB0b3Agb2YgSFRUUCB0aGF0IHNpbXBseSByZXR1cm5zIHJlc3VsdHMgaW4gWE1MIAogICAgZm9ybWF0LiAgCiAgLSBJbXByb3ZlZCBWTU9wcyBTZXJ2ZXIgaW5zdGFsbGF0aW9uIHByb2Nlc3MuCgoqIFZNT3BzIE11bHRpdGVuYW50IEh5cGVydmlzb3IKICAtIEltcHJvdmVkIFZNT3BzIE11bHRpdGVuYW50IEh5cGVydmlzb3IgaW5zdGFsbGF0aW9uIHByb2Nlc3MuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KS05PV04gSVNTVUVTIDoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoqIFBWIGRyaXZlcnMgZm9yIFdpbmRvd3MgMjAwMyBhbmQgV2luZG93cyAyMDAzIHg4Nl82NCAoSW5jb21wbGV0ZSBGZWF0dXJlKSAKKiBEZXZlbG9wZXIsIEJpbGxpbmcsIGFuZCBQcm92aXNpb25pbmcgQVBJIChJbmNvbXBsZXRlIEZlYXR1cmUpCiogTWlycm9yaW5nIG9mIGRpc2sgaW1hZ2VzIG9uIHN0b3JhZ2Ugc2VydmVycyBhY3Jvc3MgcG9kcyAoSW5jb21wbGV0ZSBGZWF0dXJlKQoqIEhBIEVuYWJsZWQgVk1zIChEaXNhYmxlZCBGZWF0dXJlKQoqIEZpcmV3YWxsIGludGVncmF0aW9uIEFQSSAoSW5jb21wbGV0ZSBGZWF0dXJlKQoqIEdVSSBwYW5lbCBmb3IgYWxsb3dpbmcgYWRtaW5pc3RyYXRvcnMgdG8gc2V0IHZhcmlvdXMgc3lzdGVtIGNvbmZpZ3VyYXRpb25zIC0KICBpLmUuIHpvbmVzLCBwb2RzLCBpcCBhZGRyZXNzZXMgKEluY29tcGxldGUgRmVhdHVyZSkKKiBTdXBwb3J0IGZvciBtdWx0aXBsZSBOSUMgY2FyZHMgb24gY29tcHV0aW5nLCByb3V0aW5nLCBhbmQgc3RvcmFnZSBzZXJ2ZXJzIAogIChEaXNhYmxlZCBGZWF0dXJlKQoqIEFiaWxpdHkgdG8gZGVwbG95IGFnZW50IHVwZ3JhZGUgb24gVk1PcHMgc2VydmVyIGFuZCBoYXZlIHRoZSB1cGdyYWRlIAogIGF1dG9tYXRpY2FsbHkgcHJvcGFnYXRlZCB0byBzdG9yYWdlLCByb3V0aW5nLCBhbmQgY29tcHV0aW5nIHNlcnZlcnMuCiAgKEJ1ZyAzODYpCiogRGV0YWlsZWQgSU8gc3RhdHMgZm9yIHN0b3JhZ2Ugc2VydmVycyAoQnVnIDk0KQoqIEFkbWluL1VzZXIgRGFzaGJvYXJkIChCdWcgMTU0IGFuZCAxNTUpCiogT3BlblNvbGFyaXMga2VybmVsIHBhbmljIChCdWcgNDEzKQoqIER5bmFtaWNhbGx5IHJlZnJlc2ggc2VydmVyIGFuZCB2bSBpbnN0YW5jZSBzdGF0dXMgaW4gR1VJIHdpdGhvdXQgYSBtYW51YWwKICByZWZyZXNoIChCdWcgMzg5KQoqIE5lZWQgdHJhbnNhY3Rpb24gc2VtYW50aWNzIGFjcm9zcyBEQiBhbmQgYWdlbnQuICBXaXRob3V0IHRoaXMsIGl0IGlzIHBvc3NpYmxlCiAgdG8gdGltZW91dCBkYiBjYWxscyB0aGF0IGZpcnN0IGxvY2sgYSByZWNvcmQgYW5kIHJlbGllcyBvbiBhbiBhZ2VudCByZXNwb25zZQogIGJlZm9yZSByZWxlYXNpbmcgdGhhdCByZWNvcmQuIChCdWcgNDA4KQoqIEFsbCBTZXJ2ZXIgUm9sZXMgKE1nbXQsIENvbXB1dGluZywgUm91dGluZywgYW5kIFN0b3JhZ2UpIHJlcXVpcmUgYSBmdW5jdGlvbmluZwogIGV0aDAgTklDIGluIG9yZGVyIHRvIGluc3RhbGwgY29ycmVjdGx5LiAoQnVnIDQ3MCkKKiBBZG1pbiBDb25zb2xlIFVJIFRlbXBsYXRlcyBUYWIgbmVlZHMgaW1wcm92ZW1lbnQuICAoQnVnIDQ2OSkKKiBVbmFibGUgdG8gY3JlYXRlIG5ldyBhZG1pbnMgdGhyb3VnaCB0aGUgYWRtaW4gY29uc29sZSBVSS4gKEJ1ZyA0OTIpCiogVW5hYmxlIHRvIGNyZWF0ZSBuZXcgU2VydmljZSBPZmZlcmluZ3MgdGhyb3VnaCB0aGUgYWRtaW4gY29uc29sZSBVSSAoQnVnIDUwMCkKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCVUcgRklYRVMgOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogQWRkZWQgYSBuZXcgWE1MIChzZXJ2ZXItc2V0dXAueG1sKSB0byBjb25maWd1cmUgaW5pdGlhbCBWTU9wcyBTZXJ2ZXIgZGF0YS4KICAoQnVnIDQzMCkKKiBNYWRlIGluc3RhbGxhdGlvbiBvZiB0aGUgcm91dGVyIHRlbXBsYXRlIGVhc2llciAoQnVnIDQzNCkKKiBEZWxldGluZyBhIHVzZXIgdGhyb3VnaCB0aGUgYWRtaW4gVUkgd2lsbCBub3cgc2hvdyBhIHByb2dyZXNzIGJhciAoQnVnIDQyOCkKKiBZb3UgY2FuIG5vIGxvbmdlciBhbnkgZHJvcCBkb3duIGJveGVzIGluIHRoZSBzZWFyY2ggbGVmdCBwYW5lbCBvZiB0aGUgY29uc29sZQogIFVJIChCdWcgNDM5KQoqIENvbmZpZ3VyZWQgZG9tMCBhbmQgZG9tUiB0byBubyBsb25nZXIgZG8gYW55IHJldmVyc2UgRE5TIGxvb2t1cCAoQnVnIDQ1OSkKKiBGaXhlZCBpbnN0YWxsZXIgdG8gaGFuZGxlIG11bHRpcGxlIE5JQyAoQnVnIDQ1NykKKiBNaXNzaW5nIFNETCBtb2R1bGUgaW4gYWxsIHRlbXBsYXRlcyAoQnVnIDQ0OSkKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgICAgIAogICAgICAgICAgICAgVk1PcHMgQ2xvdWQgU3RhY2sgVmVyc2lvbiAwLjEuNjA1MwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldIQVQnUyBORVcgOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogVk1PcHMgU2VydmVyCiAgLSBDb21wbGV0ZSB3ZWIgVUkgZm9yIGJvdGggYWRtaW5pc3RyYXRvcnMgYW5kIHVzZXJzIHRvIG1hbmFnZSBWTU9wcyBDbG91ZAogICAgU3RhY2suICAKICAtIEFsbG93cyBhZG1pbmlzdHJhdG9ycyB0byBtYW5hZ2UgdGhlIGNyZWF0aW9uIG9mIHNlcnZpY2Ugb2ZmZXJpbmdzIGFuZCBzZXQKICAgIGl0cyBwcmljaW5nIGFsb25nIHdpdGggcHJpY2luZyBmb3IgbmV0d29yayBiYW5kd2lkdGgsIGFkZGl0aW9uYWwgcHVibGljCiAgICBpcHMsIGFuZCB2bSB0ZW1wbGF0ZXMuCiAgLSBBbGxvd3MgYWRtaW5pc3RyYXRvcnMgdG8gcmV0cmlldmUgYmlsbGluZyByZWNvcmRzIGFuZCB1c2VyIHVzYWdlcy4KICAtIFZNIFN5bmMgLSBjb29yZGluYXRlcywgbWFuYWdlcywgYW5kIG1haW50YWlucyB0aGUgbGlmZSBjeWNsZSBvZiBWTU9wcyBhZ2VudHMgCiAgICBydW5uaW5nIG9uIGF0dGFjaGVkIGNvbXB1dGluZywgcm91dGluZywgYW5kIHN0b3JhZ2UgaG9zdHMuCiAgLSBWTSBUZW1wbGF0ZSBNYW5hZ2VtZW50IC0gYWxsb3dzIGFkbWluaXN0cmF0b3JzIHRvIG1hbmFnZSBhbmQgdXBsb2FkIGhvc3RlZCAKICAgIHZtIHRlbXBsYXRlcyBpbnRvIFZNT3BzIENsb3VkIFN0YWNrLgoKKiBWTU9wcyBNdWx0aXRlbmFudCBIeXBlcnZpc29yCiAgLSBEZXNpZ25lZCB0byBhbGxvdyBmb3IgdGhlIGNvbXBsZXRlIGlzb2xhdGlvbiBvZiBDUFUsIG1lbW9yeSwgc3RvcmFnZSwgYW5kIAogICAgbmV0d29yayByZXNvdXJjZXMgZm9yIGVhY2ggdXNlci4gIAogIJUgSHlwZXJ2aXNvciBBdHRhY2hlZCBTdG9yYWdlIChIQVMpIJYgVGhlIHN0b3JhZ2Ugc29sdXRpb24gdGhhdCBpcyAKICAgIGludGVncmF0ZWQgd2l0aGluIHRoZSBoeXBlcnZpc29yIGFuZCBkb2VzIG5vdCByZWx5IG9uIGNlbnRyYWxpemVkIFNBTiBvciBOQVMKICAgIHRvIGltcGxlbWVudCBzdG9yYWdlIHZpcnR1YWxpemF0aW9uLiAgSXQgcHJvdmlkZXMgYSBoaWdoIHBlcmZvcm1hbmNlIGFuZCAKICAgIHVsdHJhLXJlbGlhYmxlIGJsb2NrIHN0b3JhZ2UgZm9yIHZpcnR1YWwgbWFjaGluZSBpbWFnZXMKICAtIEh5cGVydmlzb3IgQXdhcmUgTmV0d29yayAoSEFOKSCWIFRoZSBuZXR3b3JrIHNvbHV0aW9uIGZvciBWTU9wcyBDbG91ZCBTdGFjayAKICAgIHRoYXQgaW1wbGVtZW50cyB0aGUgbmVjZXNzYXJ5IElQIGFkZHJlc3MgdHJhbnNsYXRpb24gYW5kIHR1bm5lbGluZyBmb3IgdGhlIAogICAgZ3Vlc3QgT1MgcnVubmluZyBpbnNpZGUgdGhlIHZpcnR1YWwgbWFjaGluZS4gIEl0IGRvZXMgbm90IHJlbHkgb24gVkxBTiB0byAKICAgIGltcGxlbWVudCBhbnkgbmV0d29yayB2aXJ0dWFsaXphdGlvbiBhbmQgaXNvbGF0aW9uLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CktOT1dOIElTU1VFUyA6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKiBQViBkcml2ZXJzIGZvciBXaW5kb3dzIDIwMDMgYW5kIFdpbmRvd3MgMjAwMyB4ODZfNjQgKEluY29tcGxldGUgRmVhdHVyZSkgCiogRGV2ZWxvcGVyLCBCaWxsaW5nLCBhbmQgUHJvdmlzaW9uaW5nIEFQSSAoSW5jb21wbGV0ZSBGZWF0dXJlKQoqIE1pcnJvcmluZyBvZiBkaXNrIGltYWdlcyBvbiBzdG9yYWdlIHNlcnZlcnMgYWNyb3NzIHBvZHMgKEluY29tcGxldGUgRmVhdHVyZSkKKiBIQSBFbmFibGVkIFZNcyAoRGlzYWJsZWQgRmVhdHVyZSkKKiBGaXJld2FsbCBpbnRlZ3JhdGlvbiBBUEkgKEluY29tcGxldGUgRmVhdHVyZSkKKiBHVUkgcGFuZWwgZm9yIGFsbG93aW5nIGFkbWluaXN0cmF0b3JzIHRvIHNldCB2YXJpb3VzIHN5c3RlbSBjb25maWd1cmF0aW9ucyAtCiAgaS5lLiB6b25lcywgcG9kcywgaXAgYWRkcmVzc2VzIChJbmNvbXBsZXRlIEZlYXR1cmUpCiogU3VwcG9ydCBmb3IgbXVsdGlwbGUgTklDIGNhcmRzIG9uIGNvbXB1dGluZywgcm91dGluZywgYW5kIHN0b3JhZ2Ugc2VydmVycyAKICAoRGlzYWJsZWQgRmVhdHVyZSkKKiBBYmlsaXR5IHRvIGRlcGxveSBhZ2VudCB1cGdyYWRlIG9uIFZNT3BzIHNlcnZlciBhbmQgaGF2ZSB0aGUgdXBncmFkZSAKICBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0ZWQgdG8gc3RvcmFnZSwgcm91dGluZywgYW5kIGNvbXB1dGluZyBzZXJ2ZXJzLgogIChCdWcgMzg2KQoqIERldGFpbGVkIElPIHN0YXRzIGZvciBzdG9yYWdlIHNlcnZlcnMgKEJ1ZyA5NCkKKiBBZG1pbi9Vc2VyIERhc2hib2FyZCAoQnVnIDE1NCBhbmQgMTU1KQoqIE9wZW5Tb2xhcmlzIGtlcm5lbCBwYW5pYyAoQnVnIDQxMykKKiBEeW5hbWljYWxseSByZWZyZXNoIHNlcnZlciBhbmQgdm0gaW5zdGFuY2Ugc3RhdHVzIGluIEdVSSB3aXRob3V0IGEgbWFudWFsCiAgcmVmcmVzaCAoQnVnIDM4OSkKKiBOZWVkIHRyYW5zYWN0aW9uIHNlbWFudGljcyBhY3Jvc3MgREIgYW5kIGFnZW50LiAgV2l0aG91dCB0aGlzLCBpdCBpcyBwb3NzaWJsZQogIHRvIHRpbWVvdXQgZGIgY2FsbHMgdGhhdCBmaXJzdCBsb2NrIGEgcmVjb3JkIGFuZCByZWxpZXMgb24gYW4gYWdlbnQgcmVzcG9uc2UKICBiZWZvcmUgcmVsZWFzaW5nIHRoYXQgcmVjb3JkLiAoQnVnIDQwOCkKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCVUcgRklYRVMgOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogTi9B