PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTkgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBJbnRlcmZhY2UgIERPTUNvbmZpZ3VyYXRpb24NCjwvVElUTEU+DQo8TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+DQo8L0hFQUQ+DQo8Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+DQoNCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4NCjxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4NCjxUUj4NCjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4NCjxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPg0KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9ET01Db25maWd1cmF0aW9uLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8L1RSPg0KPC9UQUJMRT4NCjwvVEQ+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4NCjwvRU0+DQo8L1REPg0KPC9UUj4NCg0KPFRSPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL0RvY3VtZW50VHlwZS5odG1sIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsNCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL0RPTUVycm9yLmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiAgPEEgSFJFRj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7DQombmJzcDs8QSBIUkVGPSJET01Db25maWd1cmF0aW9uLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KREVUQUlMOiAmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+DQo8SDI+DQo8Rk9OVCBTSVpFPSItMSI+DQpvcmcudzNjLmRvbTwvRk9OVD4NCjxCUj4NCkludGVyZmFjZSAgRE9NQ29uZmlndXJhdGlvbjwvSDI+DQo8REw+DQo8RFQ+PEI+QWxsIEtub3duIEltcGxlbWVudGluZyBDbGFzc2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3NlcmlhbGl6ZXIvZG9tMy9MU1NlcmlhbGl6ZXJJbXBsLmh0bWwiPkxTU2VyaWFsaXplckltcGw8L0E+PC9ERD4NCjwvREw+DQo8SFI+DQo8REw+DQo8RFQ+cHVibGljIGludGVyZmFjZSA8Qj5ET01Db25maWd1cmF0aW9uPC9CPjwvREw+DQoNCjxQPg0KVGhlIDxjb2RlPkRPTUNvbmZpZ3VyYXRpb248L2NvZGU+IGludGVyZmFjZSByZXByZXNlbnRzIHRoZSBjb25maWd1cmF0aW9uIAogb2YgYSBkb2N1bWVudCBhbmQgbWFpbnRhaW5zIGEgdGFibGUgb2YgcmVjb2duaXplZCBwYXJhbWV0ZXJzLiBVc2luZyB0aGUgCiBjb25maWd1cmF0aW9uLCBpdCBpcyBwb3NzaWJsZSB0byBjaGFuZ2UgCiA8Y29kZT5Eb2N1bWVudC5ub3JtYWxpemVEb2N1bWVudCgpPC9jb2RlPiBiZWhhdmlvciwgc3VjaCBhcyByZXBsYWNpbmcgdGhlIAogPGNvZGU+Q0RBVEFTZWN0aW9uPC9jb2RlPiBub2RlcyB3aXRoIDxjb2RlPlRleHQ8L2NvZGU+IG5vZGVzIG9yIAogc3BlY2lmeWluZyB0aGUgdHlwZSBvZiB0aGUgc2NoZW1hIHRoYXQgbXVzdCBiZSB1c2VkIHdoZW4gdGhlIHZhbGlkYXRpb24gCiBvZiB0aGUgPGNvZGU+RG9jdW1lbnQ8L2NvZGU+IGlzIHJlcXVlc3RlZC4gPGNvZGU+RE9NQ29uZmlndXJhdGlvbjwvY29kZT4gCiBvYmplY3RzIGFyZSBhbHNvIHVzZWQgaW4gWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLURPTS1MZXZlbC0zLUxTLTIwMDQwNDA3Jz5ET00gTGV2ZWwgMyBMb2FkIGFuZCBTYXZlPC9hPl0KICBpbiB0aGUgPGNvZGU+RE9NUGFyc2VyPC9jb2RlPiBhbmQgPGNvZGU+RE9NU2VyaWFsaXplcjwvY29kZT4gaW50ZXJmYWNlcy4gCiA8cD4gVGhlIHBhcmFtZXRlciBuYW1lcyB1c2VkIGJ5IHRoZSA8Y29kZT5ET01Db25maWd1cmF0aW9uPC9jb2RlPiBvYmplY3QgCiBhcmUgZGVmaW5lZCB0aHJvdWdob3V0IHRoZSBET00gTGV2ZWwgMyBzcGVjaWZpY2F0aW9ucy4gTmFtZXMgYXJlIAogY2FzZS1pbnNlbnNpdGl2ZS4gVG8gYXZvaWQgcG9zc2libGUgY29uZmxpY3RzLCBhcyBhIGNvbnZlbnRpb24sIG5hbWVzIAogcmVmZXJyaW5nIHRvIHBhcmFtZXRlcnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBET00gc3BlY2lmaWNhdGlvbiBzaG91bGQgYmUgCiBtYWRlIHVuaXF1ZS4gQmVjYXVzZSBwYXJhbWV0ZXJzIGFyZSBleHBvc2VkIGFzIHByb3BlcnRpZXMgaW4gdGhlICwgbmFtZXMgCiBhcmUgcmVjb21tZW5kZWQgdG8gZm9sbG93IHRoZSBzZWN0aW9uIDUuMTYgSWRlbnRpZmllcnMgb2YgW1VuaWNvZGVdIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgJy0nIChIWVBIRU4tTUlOVVMpIGJ1dCBpdCBpcyBub3QgCiBlbmZvcmNlZCBieSB0aGUgRE9NIGltcGxlbWVudGF0aW9uLiBET00gTGV2ZWwgMyBDb3JlIEltcGxlbWVudGF0aW9ucyBhcmUgCiByZXF1aXJlZCB0byByZWNvZ25pemUgYWxsIHBhcmFtZXRlcnMgZGVmaW5lZCBpbiB0aGlzIHNwZWNpZmljYXRpb24uIFNvbWUgCiBwYXJhbWV0ZXIgdmFsdWVzIG1heSBhbHNvIGJlIHJlcXVpcmVkIHRvIGJlIHN1cHBvcnRlZCBieSB0aGUgCiBpbXBsZW1lbnRhdGlvbi4gUmVmZXIgdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlciB0byBrbm93IGlmIGEgCiB2YWx1ZSBtdXN0IGJlIHN1cHBvcnRlZCBvciBub3QuIAogPHAgPjxiPk5vdGU6PC9iPiAgUGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byBmZWF0dXJlcyBhbmQgcHJvcGVydGllcyB1c2VkIGluIAogU0FYMiBbPGEgaHJlZj0naHR0cDovL3d3dy5zYXhwcm9qZWN0Lm9yZy8nPlNBWDwvYT5dLiAKIDxwPiBUaGUgZm9sbG93aW5nIGxpc3Qgb2YgcGFyYW1ldGVycyBkZWZpbmVkIGluIHRoZSBET006IAogPGRsPgogPGR0PgogPGNvZGU+ImNhbm9uaWNhbC1mb3JtIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0Pjxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPm9wdGlvbmFsPC9lbT5dIENhbm9uaWNhbGl6ZSB0aGUgZG9jdW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBzcGVjaWZpZWQgaW4gWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Jz5DYW5vbmljYWwgWE1MPC9hPl0sIAogc3VjaCBhcyByZW1vdmluZyB0aGUgPGNvZGU+RG9jdW1lbnRUeXBlPC9jb2RlPiBub2RlIChpZiBhbnkpIGZyb20gdGhlIAogdHJlZSwgb3IgcmVtb3Zpbmcgc3VwZXJmbHVvdXMgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBmcm9tIGVhY2ggZWxlbWVudC4gCiBOb3RlIHRoYXQgdGhpcyBpcyBsaW1pdGVkIHRvIHdoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZSBET007IGluIAogcGFydGljdWxhciwgdGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIG9yZGVyIG9mIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSAKIERPTS4gSW4gYWRkaXRpb24sICBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIDxjb2RlPnRydWU8L2NvZGU+IHdpbGwgYWxzbyAKIHNldCB0aGUgc3RhdGUgb2YgdGhlIHBhcmFtZXRlcnMgbGlzdGVkIGJlbG93LiBMYXRlciBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSAKIG9mIG9uZSBvZiB0aG9zZSBwYXJhbWV0ZXJzIHdpbGwgcmV2ZXJ0ICJjYW5vbmljYWwtZm9ybSIgYmFjayB0byAKIDxjb2RlPmZhbHNlPC9jb2RlPi4gUGFyYW1ldGVycyBzZXQgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+OiAiZW50aXRpZXMiLCAiCiBub3JtYWxpemUtY2hhcmFjdGVycyIsICJjZGF0YS1zZWN0aW9ucyIuIFBhcmFtZXRlcnMgc2V0IHRvIAogPGNvZGU+dHJ1ZTwvY29kZT46ICJuYW1lc3BhY2VzIiwgIm5hbWVzcGFjZS1kZWNsYXJhdGlvbnMiLCAid2VsbC1mb3JtZWQiLCAKICJlbGVtZW50LWNvbnRlbnQtd2hpdGVzcGFjZSIuIE90aGVyIHBhcmFtZXRlcnMgYXJlIG5vdCBjaGFuZ2VkIHVubGVzcyAKIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVycy48L2RkPgogPGR0PgogPGNvZGU+ZmFsc2U8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPnJlcXVpcmVkPC9lbT5dICg8ZW0+ZGVmYXVsdDwvZW0+KURvIG5vdCBjYW5vbmljYWxpemUgdGhlIGRvY3VtZW50LjwvZGQ+CiA8L2RsPjwvZGQ+CiA8ZHQ+PGNvZGU+ImNkYXRhLXNlY3Rpb25zIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0PgogPGNvZGU+dHJ1ZTwvY29kZT48L2R0PgogPGRkPls8ZW0+cmVxdWlyZWQ8L2VtPl0gKDxlbT5kZWZhdWx0PC9lbT4pS2VlcCA8Y29kZT5DREFUQVNlY3Rpb248L2NvZGU+IG5vZGVzIGluIHRoZSBkb2N1bWVudC48L2RkPgogPGR0Pjxjb2RlPmZhbHNlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XVRyYW5zZm9ybSA8Y29kZT5DREFUQVNlY3Rpb248L2NvZGU+IG5vZGVzIGluIHRoZSBkb2N1bWVudCBpbnRvIAogPGNvZGU+VGV4dDwvY29kZT4gbm9kZXMuIFRoZSBuZXcgPGNvZGU+VGV4dDwvY29kZT4gbm9kZSBpcyB0aGVuIGNvbWJpbmVkIAogd2l0aCBhbnkgYWRqYWNlbnQgPGNvZGU+VGV4dDwvY29kZT4gbm9kZS48L2RkPgogPC9kbD48L2RkPgogPGR0PgogPGNvZGU+ImNoZWNrLWNoYXJhY3Rlci1ub3JtYWxpemF0aW9uIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0Pjxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPm9wdGlvbmFsPC9lbT5dIENoZWNrIGlmIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBkb2N1bWVudCBhcmUgPGEgaHJlZj0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sMTEtMjAwNDAyMDQvI2R0LWZ1bGxub3JtJz5mdWxseSAKIG5vcm1hbGl6ZWQ8L2E+LCBhcyBkZWZpbmVkIGluIGFwcGVuZGl4IEIgb2YgWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbDExLTIwMDQwMjA0Lyc+WE1MIDEuMTwvYT5dLiBXaGVuIGEgCiBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGlzIGVuY291bnRlcmVkIHRoYXQgZmFpbHMgbm9ybWFsaXphdGlvbiBjaGVja2luZywgCiBhbiBlcnJvciB3aXRoIHRoZSA8Y29kZT5ET01FcnJvci50eXBlPC9jb2RlPiBlcXVhbHMgdG8gCiAiY2hlY2stY2hhcmFjdGVyLW5vcm1hbGl6YXRpb24tZmFpbHVyZSIgaXMgaXNzdWVkLiA8L2RkPgogPGR0Pjxjb2RlPmZhbHNlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XSAoPGVtPmRlZmF1bHQ8L2VtPilEbyBub3QgY2hlY2sgaWYgY2hhcmFjdGVycyBhcmUgbm9ybWFsaXplZC48L2RkPgogPC9kbD48L2RkPgogPGR0Pjxjb2RlPiJjb21tZW50cyI8L2NvZGU+PC9kdD4KIDxkZD4KIDxkbD4KIDxkdD4KIDxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPnJlcXVpcmVkPC9lbT5dICg8ZW0+ZGVmYXVsdDwvZW0+KUtlZXAgPGNvZGU+Q29tbWVudDwvY29kZT4gbm9kZXMgaW4gdGhlIGRvY3VtZW50LjwvZGQ+CiA8ZHQ+PGNvZGU+ZmFsc2U8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPnJlcXVpcmVkPC9lbT5dRGlzY2FyZCA8Y29kZT5Db21tZW50PC9jb2RlPiBub2RlcyBpbiB0aGUgZG9jdW1lbnQuPC9kZD4KIDwvZGw+PC9kZD4KIDxkdD4KIDxjb2RlPiJkYXRhdHlwZS1ub3JtYWxpemF0aW9uIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0Pjxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPm9wdGlvbmFsPC9lbT5dIEV4cG9zZSBzY2hlbWEgbm9ybWFsaXplZCB2YWx1ZXMgaW4gdGhlIHRyZWUsIHN1Y2ggYXMgPGEgaHJlZj0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sc2NoZW1hLTEtMjAwMTA1MDIvI2tleS1udic+WE1MIAogU2NoZW1hIG5vcm1hbGl6ZWQgdmFsdWVzPC9hPiBpbiB0aGUgY2FzZSBvZiBYTUwgU2NoZW1hLiBTaW5jZSB0aGlzIHBhcmFtZXRlciByZXF1aXJlcyB0byBoYXZlIHNjaGVtYSAKIGluZm9ybWF0aW9uLCB0aGUgInZhbGlkYXRlIiBwYXJhbWV0ZXIgd2lsbCBhbHNvIGJlIHNldCB0byAKIDxjb2RlPnRydWU8L2NvZGU+LiBIYXZpbmcgdGhpcyBwYXJhbWV0ZXIgYWN0aXZhdGVkIHdoZW4gInZhbGlkYXRlIiBpcyAKIDxjb2RlPmZhbHNlPC9jb2RlPiBoYXMgbm8gZWZmZWN0IGFuZCBubyBzY2hlbWEtbm9ybWFsaXphdGlvbiB3aWxsIGhhcHBlbi4gCiA8cCA+PGI+Tm90ZTo8L2I+ICBTaW5jZSB0aGUgZG9jdW1lbnQgY29udGFpbnMgdGhlIHJlc3VsdCBvZiB0aGUgWE1MIDEuMCAKIHByb2Nlc3NpbmcsIHRoaXMgcGFyYW1ldGVyIGRvZXMgbm90IGFwcGx5IHRvIGF0dHJpYnV0ZSB2YWx1ZSAKIG5vcm1hbGl6YXRpb24gYXMgZGVmaW5lZCBpbiBzZWN0aW9uIDMuMy4zIG9mIFs8YSBocmVmPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQnPlhNTCAxLjA8L2E+XSBhbmQgaXMgb25seSAKIG1lYW50IGZvciBzY2hlbWEgbGFuZ3VhZ2VzIG90aGVyIHRoYW4gRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9uIChEVEQpLiA8L2RkPgogPGR0PgogPGNvZGU+ZmFsc2U8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPnJlcXVpcmVkPC9lbT5dICg8ZW0+ZGVmYXVsdDwvZW0+KSBEbyBub3QgcGVyZm9ybSBzY2hlbWEgbm9ybWFsaXphdGlvbiBvbiB0aGUgdHJlZS4gPC9kZD4KIDwvZGw+PC9kZD4KIDxkdD4KIDxjb2RlPiJlbGVtZW50LWNvbnRlbnQtd2hpdGVzcGFjZSI8L2NvZGU+PC9kdD4KIDxkZD4KIDxkbD4KIDxkdD48Y29kZT50cnVlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XSAoPGVtPmRlZmF1bHQ8L2VtPilLZWVwIGFsbCB3aGl0ZXNwYWNlcyBpbiB0aGUgZG9jdW1lbnQuPC9kZD4KIDxkdD48Y29kZT5mYWxzZTwvY29kZT48L2R0PgogPGRkPls8ZW0+b3B0aW9uYWw8L2VtPl0gRGlzY2FyZCBhbGwgPGNvZGU+VGV4dDwvY29kZT4gbm9kZXMgdGhhdCBjb250YWluIHdoaXRlc3BhY2VzIGluIGVsZW1lbnQgCiBjb250ZW50LCBhcyBkZXNjcmliZWQgaW4gPGEgaHJlZj0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLWluZm9zZXQtMjAwNDAyMDQjaW5mb2l0ZW0uY2hhcmFjdGVyJz4KIFtlbGVtZW50IGNvbnRlbnQgd2hpdGVzcGFjZV08L2E+LiBUaGUgaW1wbGVtZW50YXRpb24gaXMgZXhwZWN0ZWQgdG8gdXNlIHRoZSBhdHRyaWJ1dGUgCiA8Y29kZT5UZXh0LmlzRWxlbWVudENvbnRlbnRXaGl0ZXNwYWNlPC9jb2RlPiB0byBkZXRlcm1pbmUgaWYgYSAKIDxjb2RlPlRleHQ8L2NvZGU+IG5vZGUgc2hvdWxkIGJlIGRpc2NhcmRlZCBvciBub3QuPC9kZD4KIDwvZGw+PC9kZD4KIDxkdD48Y29kZT4iZW50aXRpZXMiPC9jb2RlPjwvZHQ+CiA8ZGQ+CiA8ZGw+CiA8ZHQ+CiA8Y29kZT50cnVlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XSAoPGVtPmRlZmF1bHQ8L2VtPilLZWVwIDxjb2RlPkVudGl0eVJlZmVyZW5jZTwvY29kZT4gbm9kZXMgaW4gdGhlIGRvY3VtZW50LjwvZGQ+CiA8ZHQ+CiA8Y29kZT5mYWxzZTwvY29kZT48L2R0PgogPGRkPls8ZW0+cmVxdWlyZWQ8L2VtPl0gUmVtb3ZlIGFsbCA8Y29kZT5FbnRpdHlSZWZlcmVuY2U8L2NvZGU+IG5vZGVzIGZyb20gdGhlIGRvY3VtZW50LCAKIHB1dHRpbmcgdGhlIGVudGl0eSBleHBhbnNpb25zIGRpcmVjdGx5IGluIHRoZWlyIHBsYWNlLiA8Y29kZT5UZXh0PC9jb2RlPiAKIG5vZGVzIGFyZSBub3JtYWxpemVkLCBhcyBkZWZpbmVkIGluIDxjb2RlPk5vZGUubm9ybWFsaXplPC9jb2RlPi4gT25seSA8YSBocmVmPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtaW5mb3NldC0yMDA0MDIwNC8jaW5mb2l0ZW0ucnNlJz4KIHVuZXhwYW5kZWQgZW50aXR5IHJlZmVyZW5jZXM8L2E+IGFyZSBrZXB0IGluIHRoZSBkb2N1bWVudC4gPC9kZD4KIDwvZGw+CiA8cCA+PGI+Tm90ZTo8L2I+ICBUaGlzIHBhcmFtZXRlciBkb2VzIG5vdCBhZmZlY3QgPGNvZGU+RW50aXR5PC9jb2RlPiBub2Rlcy4gPC9kZD4KIDxkdD4KIDxjb2RlPiJlcnJvci1oYW5kbGVyIjwvY29kZT48L2R0PgogPGRkPls8ZW0+cmVxdWlyZWQ8L2VtPl0gQ29udGFpbnMgYSA8Y29kZT5ET01FcnJvckhhbmRsZXI8L2NvZGU+IG9iamVjdC4gSWYgYW4gZXJyb3IgaXMgCiBlbmNvdW50ZXJlZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGNhbGwgYmFjayB0aGUgCiA8Y29kZT5ET01FcnJvckhhbmRsZXI8L2NvZGU+IHJlZ2lzdGVyZWQgdXNpbmcgdGhpcyBwYXJhbWV0ZXIuIFRoZSAKIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlIGEgZGVmYXVsdCA8Y29kZT5ET01FcnJvckhhbmRsZXI8L2NvZGU+IG9iamVjdC4gCiAgV2hlbiBjYWxsZWQsIDxjb2RlPkRPTUVycm9yLnJlbGF0ZWREYXRhPC9jb2RlPiB3aWxsIGNvbnRhaW4gdGhlIGNsb3Nlc3QgCiBub2RlIHRvIHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4gSWYgdGhlIGltcGxlbWVudGF0aW9uIGlzIHVuYWJsZSB0byAKIGRldGVybWluZSB0aGUgbm9kZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzLCAKIDxjb2RlPkRPTUVycm9yLnJlbGF0ZWREYXRhPC9jb2RlPiB3aWxsIGNvbnRhaW4gdGhlIDxjb2RlPkRvY3VtZW50PC9jb2RlPiAKIG5vZGUuIE11dGF0aW9ucyB0byB0aGUgZG9jdW1lbnQgZnJvbSB3aXRoaW4gYW4gZXJyb3IgaGFuZGxlciB3aWxsIHJlc3VsdCAKIGluIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBiZWhhdmlvci4gPC9kZD4KIDxkdD48Y29kZT4iaW5mb3NldCI8L2NvZGU+PC9kdD4KIDxkZD4KIDxkbD4KIDxkdD4KIDxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPnJlcXVpcmVkPC9lbT5dS2VlcCBpbiB0aGUgZG9jdW1lbnQgdGhlIGluZm9ybWF0aW9uIGRlZmluZWQgaW4gdGhlIFhNTCBJbmZvcm1hdGlvbiBTZXQgWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC1pbmZvc2V0LTIwMDQwMjA0Lyc+WE1MIEluZm9ybWF0aW9uIFNldDwvYT5dCiAuVGhpcyBmb3JjZXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIHRvIDxjb2RlPmZhbHNlPC9jb2RlPjogIgogdmFsaWRhdGUtaWYtc2NoZW1hIiwgImVudGl0aWVzIiwgImRhdGF0eXBlLW5vcm1hbGl6YXRpb24iLCAiY2RhdGEtc2VjdGlvbnMKICIuVGhpcyBmb3JjZXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIHRvIDxjb2RlPnRydWU8L2NvZGU+OiAiCiBuYW1lc3BhY2UtZGVjbGFyYXRpb25zIiwgIndlbGwtZm9ybWVkIiwgImVsZW1lbnQtY29udGVudC13aGl0ZXNwYWNlIiwgIgogY29tbWVudHMiLCAibmFtZXNwYWNlcyIuT3RoZXIgcGFyYW1ldGVycyBhcmUgbm90IGNoYW5nZWQgdW5sZXNzIAogZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLiBOb3RlIHRoYXQgCiBxdWVyeWluZyB0aGlzIHBhcmFtZXRlciB3aXRoIDxjb2RlPmdldFBhcmFtZXRlcjwvY29kZT4gcmV0dXJucyAKIDxjb2RlPnRydWU8L2NvZGU+IG9ubHkgaWYgdGhlIGluZGl2aWR1YWwgcGFyYW1ldGVycyBzcGVjaWZpZWQgYWJvdmUgYXJlIAogYXBwcm9wcmlhdGVseSBzZXQuPC9kZD4KIDxkdD48Y29kZT5mYWxzZTwvY29kZT48L2R0PgogPGRkPlNldHRpbmcgPGNvZGU+aW5mb3NldDwvY29kZT4gdG8gCiA8Y29kZT5mYWxzZTwvY29kZT4gaGFzIG5vIGVmZmVjdC48L2RkPgogPC9kbD48L2RkPgogPGR0Pjxjb2RlPiJuYW1lc3BhY2VzIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0PgogPGNvZGU+dHJ1ZTwvY29kZT48L2R0PgogPGRkPls8ZW0+cmVxdWlyZWQ8L2VtPl0gKDxlbT5kZWZhdWx0PC9lbT4pIFBlcmZvcm0gdGhlIG5hbWVzcGFjZSBwcm9jZXNzaW5nIGFzIGRlZmluZWQgaW4gLiA8L2RkPgogPGR0Pjxjb2RlPmZhbHNlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5vcHRpb25hbDwvZW0+XSBEbyBub3QgcGVyZm9ybSB0aGUgbmFtZXNwYWNlIHByb2Nlc3NpbmcuIDwvZGQ+CiA8L2RsPjwvZGQ+CiA8ZHQ+CiA8Y29kZT4ibmFtZXNwYWNlLWRlY2xhcmF0aW9ucyI8L2NvZGU+PC9kdD4KIDxkZD4gVGhpcyBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdCBpZiB0aGUgCiBwYXJhbWV0ZXIgIm5hbWVzcGFjZXMiIGlzIHNldCB0byA8Y29kZT5mYWxzZTwvY29kZT4uIAogPGRsPgogPGR0Pjxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPnJlcXVpcmVkPC9lbT5dICg8ZW0+ZGVmYXVsdDwvZW0+KSBJbmNsdWRlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBhdHRyaWJ1dGVzLCBzcGVjaWZpZWQgb3IgZGVmYXVsdGVkIGZyb20gCiB0aGUgc2NoZW1hLCBpbiB0aGUgZG9jdW1lbnQuIFNlZSBhbHNvIHRoZSBzZWN0aW9ucyAiRGVjbGFyaW5nIE5hbWVzcGFjZXMiIAogaW4gWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhtbC1uYW1lcy0xOTk5MDExNC8nPlhNTCBOYW1lc3BhY2VzPC9hPl0KICBhbmQgWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC1uYW1lczExLTIwMDQwMjA0Lyc+WE1MIE5hbWVzcGFjZXMgMS4xPC9hPl0KIC48L2RkPgogPGR0Pjxjb2RlPmZhbHNlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XURpc2NhcmQgYWxsIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBhdHRyaWJ1dGVzLiBUaGUgbmFtZXNwYWNlIHByZWZpeGVzICgKIDxjb2RlPk5vZGUucHJlZml4PC9jb2RlPikgYXJlIHJldGFpbmVkIGV2ZW4gaWYgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIAogPGNvZGU+ZmFsc2U8L2NvZGU+LjwvZGQ+CiA8L2RsPjwvZGQ+CiA8ZHQ+PGNvZGU+Im5vcm1hbGl6ZS1jaGFyYWN0ZXJzIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0Pjxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPm9wdGlvbmFsPC9lbT5dIDxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbDExLTIwMDQwMjA0LyNkdC1mdWxsbm9ybSc+RnVsbHkgCiBub3JtYWxpemVkPC9hPiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgZG9jdW1lbnQgYXMgZGVmaW5lZCBpbiBhcHBlbmRpeCBCIG9mIFs8YSBocmVmPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwxMS0yMDA0MDIwNC8nPlhNTCAxLjE8L2E+XS4gPC9kZD4KIDxkdD4KIDxjb2RlPmZhbHNlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XSAoPGVtPmRlZmF1bHQ8L2VtPilEbyBub3QgcGVyZm9ybSBjaGFyYWN0ZXIgbm9ybWFsaXphdGlvbi48L2RkPgogPC9kbD48L2RkPgogPGR0Pjxjb2RlPiJzY2hlbWEtbG9jYXRpb24iPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5vcHRpb25hbDwvZW0+XSBSZXByZXNlbnQgYSA8Y29kZT5ET01TdHJpbmc8L2NvZGU+IG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBvZiBVUklzLCAKIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlcyAoY2hhcmFjdGVycyBtYXRjaGluZyB0aGUgPGEgaHJlZj0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLTIwMDQwMjA0I05ULVMnPm5vbnRlcm1pbmFsIAogcHJvZHVjdGlvbiBTPC9hPiBkZWZpbmVkIGluIHNlY3Rpb24gMi4zIFs8YSBocmVmPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQnPlhNTCAxLjA8L2E+XSksIHRoYXQgCiByZXByZXNlbnRzIHRoZSBzY2hlbWFzIGFnYWluc3Qgd2hpY2ggdmFsaWRhdGlvbiBzaG91bGQgb2NjdXIsIGkuZS4gdGhlIAogY3VycmVudCBzY2hlbWEuIFRoZSB0eXBlcyBvZiBzY2hlbWFzIHJlZmVyZW5jZWQgaW4gdGhpcyBsaXN0IG11c3QgbWF0Y2ggCiB0aGUgdHlwZSBzcGVjaWZpZWQgd2l0aCA8Y29kZT5zY2hlbWEtdHlwZTwvY29kZT4sIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgCiBvZiBhbiBpbXBsZW1lbnRhdGlvbiBpcyB1bmRlZmluZWQuICBUaGUgc2NoZW1hcyBzcGVjaWZpZWQgdXNpbmcgdGhpcyAKIHByb3BlcnR5IHRha2UgcHJlY2VkZW5jZSB0byB0aGUgc2NoZW1hIGluZm9ybWF0aW9uIHNwZWNpZmllZCBpbiB0aGUgCiBkb2N1bWVudCBpdHNlbGYuIEZvciBuYW1lc3BhY2UgYXdhcmUgc2NoZW1hLCBpZiBhIHNjaGVtYSBzcGVjaWZpZWQgdXNpbmcgCiB0aGlzIHByb3BlcnR5IGFuZCBhIHNjaGVtYSBzcGVjaWZpZWQgaW4gdGhlIGRvY3VtZW50IGluc3RhbmNlIChpLmUuIHVzaW5nIAogdGhlIDxjb2RlPnNjaGVtYUxvY2F0aW9uPC9jb2RlPiBhdHRyaWJ1dGUpIGluIGEgc2NoZW1hIGRvY3VtZW50IChpLmUuIAogdXNpbmcgc2NoZW1hIDxjb2RlPmltcG9ydDwvY29kZT4gbWVjaGFuaXNtcykgc2hhcmUgdGhlIHNhbWUgCiA8Y29kZT50YXJnZXROYW1lc3BhY2U8L2NvZGU+LCB0aGUgc2NoZW1hIHNwZWNpZmllZCBieSB0aGUgdXNlciB1c2luZyB0aGlzIAogcHJvcGVydHkgd2lsbCBiZSB1c2VkLiBJZiB0d28gc2NoZW1hcyBzcGVjaWZpZWQgdXNpbmcgdGhpcyBwcm9wZXJ0eSBzaGFyZSAKIHRoZSBzYW1lIDxjb2RlPnRhcmdldE5hbWVzcGFjZTwvY29kZT4gb3IgaGF2ZSBubyBuYW1lc3BhY2UsIHRoZSBiZWhhdmlvciAKIGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gIElmIG5vIGxvY2F0aW9uIGhhcyBiZWVuIHByb3ZpZGVkLCB0aGlzIAogcGFyYW1ldGVyIGlzIDxjb2RlPm51bGw8L2NvZGU+LiAKIDxwID48Yj5Ob3RlOjwvYj4gIFRoZSA8Y29kZT4ic2NoZW1hLWxvY2F0aW9uIjwvY29kZT4gcGFyYW1ldGVyIGlzIGlnbm9yZWQgCiB1bmxlc3MgdGhlICJzY2hlbWEtdHlwZSIgcGFyYW1ldGVyIHZhbHVlIGlzIHNldC4gSXQgaXMgc3Ryb25nbHkgCiByZWNvbW1lbmRlZCB0aGF0IDxjb2RlPkRvY3VtZW50LmRvY3VtZW50VVJJPC9jb2RlPiB3aWxsIGJlIHNldCBzbyB0aGF0IGFuIAogaW1wbGVtZW50YXRpb24gY2FuIHN1Y2Nlc3NmdWxseSByZXNvbHZlIGFueSBleHRlcm5hbCBlbnRpdGllcyByZWZlcmVuY2VkLiA8L2RkPgogPGR0PgogPGNvZGU+InNjaGVtYS10eXBlIjwvY29kZT48L2R0PgogPGRkPls8ZW0+b3B0aW9uYWw8L2VtPl0gUmVwcmVzZW50IGEgPGNvZGU+RE9NU3RyaW5nPC9jb2RlPiBvYmplY3QgY29udGFpbmluZyBhbiBhYnNvbHV0ZSBVUkkgCiBhbmQgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG9mIHRoZSBzY2hlbWEgbGFuZ3VhZ2UgdXNlZCB0byB2YWxpZGF0ZSBhIAogZG9jdW1lbnQgYWdhaW5zdC4gTm90ZSB0aGF0IG5vIGxleGljYWwgY2hlY2tpbmcgaXMgZG9uZSBvbiB0aGUgYWJzb2x1dGUgCiBVUkkuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3Qgc2V0LCBhIGRlZmF1bHQgdmFsdWUgbWF5IGJlIHByb3ZpZGVkIGJ5IAogdGhlIGltcGxlbWVudGF0aW9uLCBiYXNlZCBvbiB0aGUgc2NoZW1hIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYW5kIG9uIHRoZSAKIHNjaGVtYSBsYW5ndWFnZSB1c2VkIGF0IGxvYWQgdGltZS4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIHRoaXMgCiBwYXJhbWV0ZXIgaXMgPGNvZGU+bnVsbDwvY29kZT4uIAogPHAgPjxiPk5vdGU6PC9iPiAgRm9yIFhNTCBTY2hlbWEgWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbHNjaGVtYS0xLTIwMDEwNTAyLyc+WE1MIFNjaGVtYSBQYXJ0IDE8L2E+XQogLCBhcHBsaWNhdGlvbnMgbXVzdCB1c2UgdGhlIHZhbHVlIAogPGNvZGU+Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjwvY29kZT4uIEZvciBYTUwgRFREIFs8YSBocmVmPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQnPlhNTCAxLjA8L2E+XSwgCiBhcHBsaWNhdGlvbnMgbXVzdCB1c2UgdGhlIHZhbHVlIAogPGNvZGU+Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwiPC9jb2RlPi4gT3RoZXIgc2NoZW1hIGxhbmd1YWdlcyBhcmUgCiBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGUgVzNDIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlY29tbWVuZCBhbiBhYnNvbHV0ZSAKIFVSSSBpbiBvcmRlciB0byB1c2UgdGhpcyBtZXRob2QuIDwvZGQ+CiA8ZHQ+PGNvZGU+InNwbGl0LWNkYXRhLXNlY3Rpb25zIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0PgogPGNvZGU+dHJ1ZTwvY29kZT48L2R0PgogPGRkPls8ZW0+cmVxdWlyZWQ8L2VtPl0gKDxlbT5kZWZhdWx0PC9lbT4pU3BsaXQgQ0RBVEEgc2VjdGlvbnMgY29udGFpbmluZyB0aGUgQ0RBVEEgc2VjdGlvbiB0ZXJtaW5hdGlvbiBtYXJrZXIgCiAnXV0mZ3Q7Jy4gV2hlbiBhIENEQVRBIHNlY3Rpb24gaXMgc3BsaXQgYSB3YXJuaW5nIGlzIGlzc3VlZCB3aXRoIGEgCiA8Y29kZT5ET01FcnJvci50eXBlPC9jb2RlPiBlcXVhbHMgdG8gCiA8Y29kZT4iY2RhdGEtc2VjdGlvbnMtc3BsaXR0ZWQiPC9jb2RlPiBhbmQgCiA8Y29kZT5ET01FcnJvci5yZWxhdGVkRGF0YTwvY29kZT4gZXF1YWxzIHRvIHRoZSBmaXJzdCAKIDxjb2RlPkNEQVRBU2VjdGlvbjwvY29kZT4gbm9kZSBpbiBkb2N1bWVudCBvcmRlciByZXN1bHRpbmcgZnJvbSB0aGUgc3BsaXQuPC9kZD4KIDxkdD4KIDxjb2RlPmZhbHNlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XVNpZ25hbCBhbiBlcnJvciBpZiBhIDxjb2RlPkNEQVRBU2VjdGlvbjwvY29kZT4gY29udGFpbnMgYW4gCiB1bnJlcHJlc2VudGFibGUgY2hhcmFjdGVyLjwvZGQ+CiA8L2RsPjwvZGQ+CiA8ZHQ+PGNvZGU+InZhbGlkYXRlIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0Pjxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPm9wdGlvbmFsPC9lbT5dIFJlcXVpcmUgdGhlIHZhbGlkYXRpb24gYWdhaW5zdCBhIHNjaGVtYSAoaS5lLiBYTUwgc2NoZW1hLCBEVEQsIGFueSAKIG90aGVyIHR5cGUgb3IgcmVwcmVzZW50YXRpb24gb2Ygc2NoZW1hKSBvZiB0aGUgZG9jdW1lbnQgYXMgaXQgaXMgYmVpbmcgCiBub3JtYWxpemVkIGFzIGRlZmluZWQgYnkgWzxhIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNCc+WE1MIDEuMDwvYT5dLiBJZiAKIHZhbGlkYXRpb24gZXJyb3JzIGFyZSBmb3VuZCwgb3Igbm8gc2NoZW1hIHdhcyBmb3VuZCwgdGhlIGVycm9yIGhhbmRsZXIgaXMgCiBub3RpZmllZC4gU2NoZW1hLW5vcm1hbGl6ZWQgdmFsdWVzIHdpbGwgbm90IGJlIGV4cG9zZWQgYWNjb3JkaW5nIHRvIHRoZSAKIHNjaGVtYSBpbiB1c2VkIHVubGVzcyB0aGUgcGFyYW1ldGVyICJkYXRhdHlwZS1ub3JtYWxpemF0aW9uIiBpcyAKIDxjb2RlPnRydWU8L2NvZGU+LiAgVGhpcyBwYXJhbWV0ZXIgd2lsbCByZWV2YWx1YXRlOiAKIDx1bD4KIDxsaT4gQXR0cmlidXRlIG5vZGVzIHdpdGggCiA8Y29kZT5BdHRyLnNwZWNpZmllZDwvY29kZT4gZXF1YWxzIHRvIDxjb2RlPmZhbHNlPC9jb2RlPiwgYXMgc3BlY2lmaWVkIGluIAogdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSA8Y29kZT5BdHRyPC9jb2RlPiBpbnRlcmZhY2U7IAogPC9saT4KIDxsaT4gVGhlIHZhbHVlIG9mIHRoZSAKIGF0dHJpYnV0ZSA8Y29kZT5UZXh0LmlzRWxlbWVudENvbnRlbnRXaGl0ZXNwYWNlPC9jb2RlPiBmb3IgYWxsIAogPGNvZGU+VGV4dDwvY29kZT4gbm9kZXM7IAogPC9saT4KIDxsaT4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgCiA8Y29kZT5BdHRyLmlzSWQ8L2NvZGU+IGZvciBhbGwgPGNvZGU+QXR0cjwvY29kZT4gbm9kZXM7IAogPC9saT4KIDxsaT4gVGhlIGF0dHJpYnV0ZXMgCiA8Y29kZT5FbGVtZW50LnNjaGVtYVR5cGVJbmZvPC9jb2RlPiBhbmQgPGNvZGU+QXR0ci5zY2hlbWFUeXBlSW5mbzwvY29kZT4uIAogPC9saT4KIDwvdWw+CiA8cCA+PGI+Tm90ZTo8L2I+ICAidmFsaWRhdGUtaWYtc2NoZW1hIiBhbmQgInZhbGlkYXRlIiBhcmUgbXV0dWFsbHkgCiBleGNsdXNpdmUsIHNldHRpbmcgb25lIG9mIHRoZW0gdG8gPGNvZGU+dHJ1ZTwvY29kZT4gd2lsbCBzZXQgdGhlIG90aGVyIAogb25lIHRvIDxjb2RlPmZhbHNlPC9jb2RlPi4gQXBwbGljYXRpb25zIHNob3VsZCBhbHNvIGNvbnNpZGVyIHNldHRpbmcgdGhlIAogcGFyYW1ldGVyICJ3ZWxsLWZvcm1lZCIgdG8gPGNvZGU+dHJ1ZTwvY29kZT4sIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciAKIHRoYXQgb3B0aW9uLCB3aGVuIHZhbGlkYXRpbmcgdGhlIGRvY3VtZW50LiA8L2RkPgogPGR0Pjxjb2RlPmZhbHNlPC9jb2RlPjwvZHQ+CiA8ZGQ+WzxlbT5yZXF1aXJlZDwvZW0+XSAoPGVtPmRlZmF1bHQ8L2VtPikgRG8gbm90IGFjY29tcGxpc2ggc2NoZW1hIHByb2Nlc3NpbmcsIGluY2x1ZGluZyB0aGUgaW50ZXJuYWwgc3Vic2V0IAogcHJvY2Vzc2luZy4gRGVmYXVsdCBhdHRyaWJ1dGUgdmFsdWVzIGluZm9ybWF0aW9uIGFyZSBrZXB0LiBOb3RlIHRoYXQgCiB2YWxpZGF0aW9uIG1pZ2h0IHN0aWxsIGhhcHBlbiBpZiAidmFsaWRhdGUtaWYtc2NoZW1hIiBpcyA8Y29kZT50cnVlPC9jb2RlPgogLiA8L2RkPgogPC9kbD48L2RkPgogPGR0Pjxjb2RlPiJ2YWxpZGF0ZS1pZi1zY2hlbWEiPC9jb2RlPjwvZHQ+CiA8ZGQ+CiA8ZGw+CiA8ZHQ+PGNvZGU+dHJ1ZTwvY29kZT48L2R0PgogPGRkPls8ZW0+b3B0aW9uYWw8L2VtPl1FbmFibGUgdmFsaWRhdGlvbiBvbmx5IGlmIGEgZGVjbGFyYXRpb24gZm9yIHRoZSBkb2N1bWVudCBlbGVtZW50IGNhbiBiZSAKIGZvdW5kIGluIGEgc2NoZW1hIChpbmRlcGVuZGVudGx5IG9mIHdoZXJlIGl0IGlzIGZvdW5kLCBpLmUuIFhNTCBzY2hlbWEsIAogRFRELCBvciBhbnkgb3RoZXIgdHlwZSBvciByZXByZXNlbnRhdGlvbiBvZiBzY2hlbWEpLiBJZiB2YWxpZGF0aW9uIGlzIAogZW5hYmxlZCwgdGhpcyBwYXJhbWV0ZXIgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBwYXJhbWV0ZXIgInZhbGlkYXRlIiAKIHNldCB0byA8Y29kZT50cnVlPC9jb2RlPi4gCiA8cCA+PGI+Tm90ZTo8L2I+ICAidmFsaWRhdGUtaWYtc2NoZW1hIiBhbmQgInZhbGlkYXRlIiBhcmUgbXV0dWFsbHkgCiBleGNsdXNpdmUsIHNldHRpbmcgb25lIG9mIHRoZW0gdG8gPGNvZGU+dHJ1ZTwvY29kZT4gd2lsbCBzZXQgdGhlIG90aGVyIAogb25lIHRvIDxjb2RlPmZhbHNlPC9jb2RlPi4gPC9kZD4KIDxkdD48Y29kZT5mYWxzZTwvY29kZT48L2R0PgogPGRkPls8ZW0+cmVxdWlyZWQ8L2VtPl0gKDxlbT5kZWZhdWx0PC9lbT4pIE5vIHNjaGVtYSBwcm9jZXNzaW5nIHNob3VsZCBiZSBwZXJmb3JtZWQgaWYgdGhlIGRvY3VtZW50IGhhcyBhIHNjaGVtYSwgCiBpbmNsdWRpbmcgaW50ZXJuYWwgc3Vic2V0IHByb2Nlc3NpbmcuIERlZmF1bHQgYXR0cmlidXRlIHZhbHVlcyAKIGluZm9ybWF0aW9uIGFyZSBrZXB0LiBOb3RlIHRoYXQgdmFsaWRhdGlvbiBtdXN0IHN0aWxsIGhhcHBlbiBpZiAidmFsaWRhdGUKICIgaXMgPGNvZGU+dHJ1ZTwvY29kZT4uIDwvZGQ+CiA8L2RsPjwvZGQ+CiA8ZHQ+PGNvZGU+IndlbGwtZm9ybWVkIjwvY29kZT48L2R0PgogPGRkPgogPGRsPgogPGR0Pjxjb2RlPnRydWU8L2NvZGU+PC9kdD4KIDxkZD5bPGVtPnJlcXVpcmVkPC9lbT5dICg8ZW0+ZGVmYXVsdDwvZW0+KSBDaGVjayBpZiBhbGwgbm9kZXMgYXJlIFhNTCB3ZWxsIGZvcm1lZCBhY2NvcmRpbmcgdG8gdGhlIFhNTCB2ZXJzaW9uIGluIAogdXNlIGluIDxjb2RlPkRvY3VtZW50LnhtbFZlcnNpb248L2NvZGU+OiAKIDx1bD4KIDxsaT4gY2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSAKIDxjb2RlPk5vZGUubm9kZU5hbWU8L2NvZGU+IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyBhY2NvcmRpbmcgdG8gaXRzIAogbm9kZSB0eXBlIGFuZCBnZW5lcmF0ZSBhIDxjb2RlPkRPTUVycm9yPC9jb2RlPiBvZiB0eXBlIAogPGNvZGU+IndmLWludmFsaWQtY2hhcmFjdGVyLWluLW5vZGUtbmFtZSI8L2NvZGU+LCB3aXRoIGEgCiA8Y29kZT5ET01FcnJvci5TRVZFUklUWV9FUlJPUjwvY29kZT4gc2V2ZXJpdHksIGlmIG5lY2Vzc2FyeTsgCiA8L2xpPgogPGxpPiBjaGVjayBpZiAKIHRoZSB0ZXh0IGNvbnRlbnQgaW5zaWRlIDxjb2RlPkF0dHI8L2NvZGU+LCA8Y29kZT5FbGVtZW50PC9jb2RlPiwgCiA8Y29kZT5Db21tZW50PC9jb2RlPiwgPGNvZGU+VGV4dDwvY29kZT4sIDxjb2RlPkNEQVRBU2VjdGlvbjwvY29kZT4gbm9kZXMgCiBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzIGFuZCBnZW5lcmF0ZSBhIDxjb2RlPkRPTUVycm9yPC9jb2RlPiBvZiB0eXBlIAogPGNvZGU+IndmLWludmFsaWQtY2hhcmFjdGVyIjwvY29kZT4sIHdpdGggYSAKIDxjb2RlPkRPTUVycm9yLlNFVkVSSVRZX0VSUk9SPC9jb2RlPiBzZXZlcml0eSwgaWYgbmVjZXNzYXJ5OyAKIDwvbGk+CiA8bGk+IGNoZWNrIGlmIAogdGhlIGRhdGEgaW5zaWRlIDxjb2RlPlByb2Nlc3NpbmdJbnN0cnVjdGlvbjwvY29kZT4gbm9kZXMgZm9yIGludmFsaWQgCiBjaGFyYWN0ZXJzIGFuZCBnZW5lcmF0ZSBhIDxjb2RlPkRPTUVycm9yPC9jb2RlPiBvZiB0eXBlIAogPGNvZGU+IndmLWludmFsaWQtY2hhcmFjdGVyIjwvY29kZT4sIHdpdGggYSAKIDxjb2RlPkRPTUVycm9yLlNFVkVSSVRZX0VSUk9SPC9jb2RlPiBzZXZlcml0eSwgaWYgbmVjZXNzYXJ5OyAKIDwvbGk+CiA8L3VsPjwvZGQ+CiA8ZHQ+CiA8Y29kZT5mYWxzZTwvY29kZT48L2R0PgogPGRkPls8ZW0+b3B0aW9uYWw8L2VtPl0gRG8gbm90IGNoZWNrIGZvciBYTUwgd2VsbC1mb3JtZWRuZXNzLiA8L2RkPgogPC9kbD48L2RkPgogPC9kbD4KIDxwPiBUaGUgcmVzb2x1dGlvbiBvZiB0aGUgc3lzdGVtIGlkZW50aWZpZXJzIGFzc29jaWF0ZWQgd2l0aCBlbnRpdGllcyBpcyAKIGRvbmUgdXNpbmcgPGNvZGU+RG9jdW1lbnQuZG9jdW1lbnRVUkk8L2NvZGU+LiBIb3dldmVyLCB3aGVuIHRoZSBmZWF0dXJlIAogIkxTIiBkZWZpbmVkIGluIFs8YSBocmVmPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2ZWwtMy1MUy0yMDA0MDQwNyc+RE9NIExldmVsIDMgTG9hZCBhbmQgU2F2ZTwvYT5dCiAgaXMgc3VwcG9ydGVkIGJ5IHRoZSBET00gaW1wbGVtZW50YXRpb24sIHRoZSBwYXJhbWV0ZXIgCiAicmVzb3VyY2UtcmVzb2x2ZXIiIGNhbiBhbHNvIGJlIHVzZWQgb24gPGNvZGU+RE9NQ29uZmlndXJhdGlvbjwvY29kZT4gCiBvYmplY3RzIGF0dGFjaGVkIHRvIDxjb2RlPkRvY3VtZW50PC9jb2RlPiBub2Rlcy4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgCiBzZXQsIDxjb2RlPkRvY3VtZW50Lm5vcm1hbGl6ZURvY3VtZW50KCk8L2NvZGU+IHdpbGwgaW52b2tlIHRoZSByZXNvdXJjZSAKIHJlc29sdmVyIGluc3RlYWQgb2YgdXNpbmcgPGNvZGU+RG9jdW1lbnQuZG9jdW1lbnRVUkk8L2NvZGU+LiAKIDxwPlNlZSBhbHNvIHRoZSA8YSBocmVmPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2ZWwtMy1Db3JlLTIwMDQwNDA3Jz5Eb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgTGV2ZWwgMyBDb3JlIFNwZWNpZmljYXRpb248L2E+Lg0KPFA+DQo8REw+DQo8RFQ+PEI+U2luY2U6IDwvQj48REQ+RE9NIExldmVsIDM8L0REPg0KPC9ETD4NCjxIUj4NCg0KPFA+DQo8IS0tID09PT09PT09IElOTkVSIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+DQoNCjxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPg0KPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL0RPTUNvbmZpZ3VyYXRpb24uaHRtbCNjYW5TZXRQYXJhbWV0ZXIoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPmNhblNldFBhcmFtZXRlcjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lLAogICAgICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdCZuYnNwO3ZhbHVlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2hlY2sgaWYgc2V0dGluZyBhIHBhcmFtZXRlciB0byBhIHNwZWNpZmljIHZhbHVlIGlzIHN1cHBvcnRlZC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLk9iamVjdDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9ET01Db25maWd1cmF0aW9uLmh0bWwjZ2V0UGFyYW1ldGVyKGphdmEubGFuZy5TdHJpbmcpIj5nZXRQYXJhbWV0ZXI8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIgaWYga25vd24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL0RPTVN0cmluZ0xpc3QuaHRtbCI+RE9NU3RyaW5nTGlzdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vRE9NQ29uZmlndXJhdGlvbi5odG1sI2dldFBhcmFtZXRlck5hbWVzKCkiPmdldFBhcmFtZXRlck5hbWVzPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGxpc3Qgb2YgdGhlIHBhcmFtZXRlcnMgc3VwcG9ydGVkIGJ5IHRoaXMgCiA8Y29kZT5ET01Db25maWd1cmF0aW9uPC9jb2RlPiBvYmplY3QgYW5kIGZvciB3aGljaCBhdCBsZWFzdCBvbmUgdmFsdWUgCiBjYW4gYmUgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9ET01Db25maWd1cmF0aW9uLmh0bWwjc2V0UGFyYW1ldGVyKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QpIj5zZXRQYXJhbWV0ZXI8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSwKICAgICAgICAgICAgIGphdmEubGFuZy5PYmplY3QmbmJzcDt2YWx1ZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuPC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7DQo8UD4NCg0KPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+DQoNCjxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQoNCjxBIE5BTUU9InNldFBhcmFtZXRlcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0UGFyYW1ldGVyPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRQYXJhbWV0ZXI8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdCZuYnNwO3ZhbHVlKQogICAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vRE9NRXhjZXB0aW9uLmh0bWwiPkRPTUV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5TZXQgdGhlIHZhbHVlIG9mIGEgcGFyYW1ldGVyLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5hbWU8L0NPREU+IC0gVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0byBzZXQuPEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIFRoZSBuZXcgdmFsdWUgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlIHVzZXIgd2lzaGVzIHRvIAogICB1bnNldCB0aGUgcGFyYW1ldGVyLiBXaGlsZSB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgcGFyYW1ldGVyIGlzIAogICBkZWZpbmVkIGFzIDxjb2RlPkRPTVVzZXJEYXRhPC9jb2RlPiwgdGhlIG9iamVjdCB0eXBlIG11c3QgbWF0Y2ggdGhlIAogICB0eXBlIGRlZmluZWQgYnkgdGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlci4gRm9yIGV4YW1wbGUsIGlmIAogICB0aGUgcGFyYW1ldGVyIGlzICJlcnJvci1oYW5kbGVyIiwgdGhlIHZhbHVlIG11c3QgYmUgb2YgdHlwZSAKICAgPGNvZGU+RE9NRXJyb3JIYW5kbGVyPC9jb2RlPi48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vRE9NRXhjZXB0aW9uLmh0bWwiPkRPTUV4Y2VwdGlvbjwvQT4gLSBOT1RfRk9VTkRfRVJSOiBSYWlzZWQgd2hlbiB0aGUgcGFyYW1ldGVyIG5hbWUgaXMgbm90IHJlY29nbml6ZWQuIAogICA8YnI+IE5PVF9TVVBQT1JURURfRVJSOiBSYWlzZWQgd2hlbiB0aGUgcGFyYW1ldGVyIG5hbWUgaXMgcmVjb2duaXplZCAKICAgYnV0IHRoZSByZXF1ZXN0ZWQgdmFsdWUgY2Fubm90IGJlIHNldC4gCiAgIDxicj4gVFlQRV9NSVNNQVRDSF9FUlI6IFJhaXNlZCBpZiB0aGUgdmFsdWUgdHlwZSBmb3IgdGhpcyBwYXJhbWV0ZXIgCiAgIG5hbWUgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGV4cGVjdGVkIHZhbHVlIHR5cGUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRQYXJhbWV0ZXIoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFBhcmFtZXRlcjwvSDM+DQo8UFJFPg0KcHVibGljIGphdmEubGFuZy5PYmplY3QgPEI+Z2V0UGFyYW1ldGVyPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL0RPTUV4Y2VwdGlvbi5odG1sIj5ET01FeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+UmV0dXJuIHRoZSB2YWx1ZSBvZiBhIHBhcmFtZXRlciBpZiBrbm93bi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5uYW1lPC9DT0RFPiAtIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIuPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgY3VycmVudCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyIG9yIAogICA8Y29kZT5udWxsPC9jb2RlPiBpZiBubyBvYmplY3QgaGFzIGJlZW4gYXNzb2NpYXRlZCBvciBpZiB0aGUgCiAgIHBhcmFtZXRlciBpcyBub3Qgc3VwcG9ydGVkLjxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9ET01FeGNlcHRpb24uaHRtbCI+RE9NRXhjZXB0aW9uPC9BPiAtIE5PVF9GT1VORF9FUlI6IFJhaXNlZCB3aGVuIHRoZSBwYXJhbWV0ZXIgbmFtZSBpcyBub3QgcmVjb2duaXplZC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImNhblNldFBhcmFtZXRlcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PCEtLSAtLT48L0E+PEgzPg0KY2FuU2V0UGFyYW1ldGVyPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5jYW5TZXRQYXJhbWV0ZXI8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdCZuYnNwO3ZhbHVlKTwvUFJFPg0KPERMPg0KPEREPkNoZWNrIGlmIHNldHRpbmcgYSBwYXJhbWV0ZXIgdG8gYSBzcGVjaWZpYyB2YWx1ZSBpcyBzdXBwb3J0ZWQuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bmFtZTwvQ09ERT4gLSBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHRvIGNoZWNrLjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSBBbiBvYmplY3QuIGlmIDxjb2RlPm51bGw8L2NvZGU+LCB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgCiAgIDxjb2RlPnRydWU8L2NvZGU+LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHBhcmFtZXRlciBjb3VsZCBiZSBzdWNjZXNzZnVsbHkgc2V0IAogICB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhlIHBhcmFtZXRlciBpcyAKICAgbm90IHJlY29nbml6ZWQgb3IgdGhlIHJlcXVlc3RlZCB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIGRvZXMgCiAgIG5vdCBjaGFuZ2UgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBpdHNlbGYuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRQYXJhbWV0ZXJOYW1lcygpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRQYXJhbWV0ZXJOYW1lczwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL0RPTVN0cmluZ0xpc3QuaHRtbCI+RE9NU3RyaW5nTGlzdDwvQT4gPEI+Z2V0UGFyYW1ldGVyTmFtZXM8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5UaGUgbGlzdCBvZiB0aGUgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgdGhpcyAKIDxjb2RlPkRPTUNvbmZpZ3VyYXRpb248L2NvZGU+IG9iamVjdCBhbmQgZm9yIHdoaWNoIGF0IGxlYXN0IG9uZSB2YWx1ZSAKIGNhbiBiZSBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBOb3RlIHRoYXQgdGhpcyBsaXN0IGNhbiBhbHNvIGNvbnRhaW4gCiBwYXJhbWV0ZXIgbmFtZXMgZGVmaW5lZCBvdXRzaWRlIHRoaXMgc3BlY2lmaWNhdGlvbi48L0RMPg0KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPg0KPEhSPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRE9NQ29uZmlndXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPC9UUj4NCjwvVEFCTEU+DQo8L1REPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+DQo8L0VNPg0KPC9URD4NCjwvVFI+DQoNCjxUUj4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Eb2N1bWVudFR5cGUuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9ET01FcnJvci5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iRE9NQ29uZmlndXJhdGlvbi5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCiAgU1VNTUFSWTogJm5ic3A7SU5ORVImbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCkRFVEFJTDogJm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4NCg0KPEhSPg0KQ29weXJpZ2h0IKkgMjAwNiBBcGFjaGUgWE1MIFByb2plY3QuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo8L0JPRFk+DQo8L0hUTUw+DQo=