PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBGcmFtZXNldC8vRU4iImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvZnJhbWVzZXQuZHRkIj4KPCEtLU5ld1BhZ2UtLT4KPEhUTUw+CjxIRUFEPgo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFdlZCBBcHIgMTQgMDg6MjY6MzAgRURUIDIwMDQgLS0+CjxUSVRMRT4KVmVsb2NpdHkgMS40IEFQSTogSW5kZXgKPC9USVRMRT4KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgo8L0hFQUQ+CjxCT0RZIEJHQ09MT1I9IndoaXRlIj4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8L1RSPgo8L1RBQkxFPgo8L1REPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KPC9FTT4KPC9URD4KPC9UUj4KCjxUUj4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KJm5ic3A7UFJFViZuYnNwOwombmJzcDtORVhUPC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiAgPEEgSFJFRj0iaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOzxBIEhSRUY9ImluZGV4LWFsbC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxBIEhSRUY9IiNfQV8iPkE8L0E+IDxBIEhSRUY9IiNfQl8iPkI8L0E+IDxBIEhSRUY9IiNfQ18iPkM8L0E+IDxBIEhSRUY9IiNfRF8iPkQ8L0E+IDxBIEhSRUY9IiNfRV8iPkU8L0E+IDxBIEhSRUY9IiNfRl8iPkY8L0E+IDxBIEhSRUY9IiNfR18iPkc8L0E+IDxBIEhSRUY9IiNfSF8iPkg8L0E+IDxBIEhSRUY9IiNfSV8iPkk8L0E+IDxBIEhSRUY9IiNfSl8iPko8L0E+IDxBIEhSRUY9IiNfS18iPks8L0E+IDxBIEhSRUY9IiNfTF8iPkw8L0E+IDxBIEhSRUY9IiNfTV8iPk08L0E+IDxBIEhSRUY9IiNfTl8iPk48L0E+IDxBIEhSRUY9IiNfT18iPk88L0E+IDxBIEhSRUY9IiNfUF8iPlA8L0E+IDxBIEhSRUY9IiNfUV8iPlE8L0E+IDxBIEhSRUY9IiNfUl8iPlI8L0E+IDxBIEhSRUY9IiNfU18iPlM8L0E+IDxBIEhSRUY9IiNfVF8iPlQ8L0E+IDxBIEhSRUY9IiNfVV8iPlU8L0E+IDxBIEhSRUY9IiNfVl8iPlY8L0E+IDxBIEhSRUY9IiNfV18iPlc8L0E+IDxBIEhSRUY9IiNfWF8iPlg8L0E+IDxBIEhSRUY9IiNfWl8iPlo8L0E+IDxIUj4KPEEgTkFNRT0iX0FfIj48IS0tIC0tPjwvQT48SDI+CjxCPkE8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sIj48Qj5BYnN0cmFjdENvbnRleHQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwiPkFic3RyYWN0Q29udGV4dDwvQT4uPEREPlRoaXMgY2xhc3MgaXMgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGFsbCBjb252ZW50aW9uYWwgCiAgVmVsb2NpdHkgQ29udGV4dCAgaW1wbGVtZW50YXRpb25zLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwjQWJzdHJhY3RDb250ZXh0KCkiPjxCPkFic3RyYWN0Q29udGV4dCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwiPkFic3RyYWN0Q29udGV4dDwvQT4KPEREPmRlZmF1bHQgQ1RPUgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sI0Fic3RyYWN0Q29udGV4dChvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCkiPjxCPkFic3RyYWN0Q29udGV4dChDb250ZXh0KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sIj5BYnN0cmFjdENvbnRleHQ8L0E+CjxERD5DaGFpbmluZyBjb25zdHJ1Y3RvciBhY2NlcHRzIGEgQ29udGV4dCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BYnN0cmFjdEV4ZWN1dG9yLmh0bWwiPjxCPkFic3RyYWN0RXhlY3V0b3I8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQWJzdHJhY3RFeGVjdXRvci5odG1sIj5BYnN0cmFjdEV4ZWN1dG9yPC9BPi48REQ+QWJzdHJhY3QgY2xhc3MgdGhhdCBpcyB1c2VkIHRvIGV4ZWN1dGUgYW4gYXJiaXRyYXJ5CiBtZXRob2QgdGhhdCBpcyBpbiBpbnRyb3NwZWN0ZWQuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BYnN0cmFjdEV4ZWN1dG9yLmh0bWwjQWJzdHJhY3RFeGVjdXRvcigpIj48Qj5BYnN0cmFjdEV4ZWN1dG9yKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BYnN0cmFjdEV4ZWN1dG9yLmh0bWwiPkFic3RyYWN0RXhlY3V0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCNhZGRfZXNjYXBlcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkX2VzY2FwZXMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCI+UGFyc2VFeGNlcHRpb248L0E+CjxERD5Vc2VkIHRvIGNvbnZlcnQgcmF3IGNoYXJhY3RlcnMgdG8gdGhlaXIgZXNjYXBlZCB2ZXJzaW9uCiB3aGVuIHRoZXNlIHJhdyB2ZXJzaW9uIGNhbm5vdCBiZSB1c2VkIGFzIHBhcnQgb2YgYW4gQVNDSUkKIHN0cmluZyBsaXRlcmFsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNhZGQoaW50LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+YWRkKGludCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwjYWRkKGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCkiPjxCPmFkZChNZXRob2QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sIj5NZXRob2RNYXA8L0E+CjxERD5BZGQgYSBtZXRob2QgdG8gYSBsaXN0IG9mIG1ldGhvZHMgYnkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjYWRkKGphdmEubGFuZy5PYmplY3QpIj48Qj5hZGQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNhZGRBbGwoamF2YS51dGlsLkNvbGxlY3Rpb24pIj48Qj5hZGRBbGwoQ29sbGVjdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjYWRkQWxsKGludCwgamF2YS51dGlsLkNvbGxlY3Rpb24pIj48Qj5hZGRBbGwoaW50LCBDb2xsZWN0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNhZGRDb29raWUoamF2YXguc2VydmxldC5odHRwLkNvb2tpZSkiPjxCPmFkZENvb2tpZShDb29raWUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI2FkZERhdGVIZWFkZXIoamF2YS5sYW5nLlN0cmluZywgbG9uZykiPjxCPmFkZERhdGVIZWFkZXIoU3RyaW5nLCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sI2FkZEVudHJpZXMoamF2YS51dGlsLkhhc2h0YWJsZSkiPjxCPmFkZEVudHJpZXMoSGFzaHRhYmxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFyUmVzb3VyY2VMb2FkZXIuaHRtbCI+SmFyUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5Db3B5IGFsbCB0aGUgZW50cmllcyBpbnRvIHRoZSBlbnRyeURpcmVjdG9yeQogSXQgd2lsbCBvdmVyd3JpdGUgYW55IGR1cGxpY2F0ZSBrZXlzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbk1nckVycm9yLmh0bWwjYWRkRXNjYXBlcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkRXNjYXBlcyhTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW5NZ3JFcnJvci5odG1sIj5Ub2tlbk1nckVycm9yPC9BPgo8REQ+UmVwbGFjZXMgdW5wcmludGFibGUgY2hhcmFjdGVycyBieSB0aGVpciBlc3BhY2VkIChvciB1bmljb2RlIGVzY2FwZWQpCiBlcXVpdmFsZW50cyBpbiB0aGUgZ2l2ZW4gc3RyaW5nCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9FdmVudENhcnRyaWRnZS5odG1sI2FkZEV2ZW50SGFuZGxlcihvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC5FdmVudEhhbmRsZXIpIj48Qj5hZGRFdmVudEhhbmRsZXIoRXZlbnRIYW5kbGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9FdmVudENhcnRyaWRnZS5odG1sIj5FdmVudENhcnRyaWRnZTwvQT4KPEREPkFkZHMgYW4gZXZlbnQgaGFuZGxlcihzKSB0byB0aGUgQ2FydHJpZGdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbi5odG1sI2FkZEZpbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPmFkZEZpbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2VEaXJlY3RpdmVFeGNlcHRpb24uaHRtbCI+UGFyc2VEaXJlY3RpdmVFeGNlcHRpb248L0E+CjxERD5BZGQgYSBmaWxlIHRvIHRoZSBmaWxlbmFtZSBzdGFjawo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNhZGRIZWFkZXIoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmFkZEhlYWRlcihTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjYWRkSW50SGVhZGVyKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPmFkZEludEhlYWRlcihTdHJpbmcsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjQWRkaXRpdmVFeHByZXNzaW9uKCkiPjxCPkFkZGl0aXZlRXhwcmVzc2lvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwjYWRkTmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGROYW1lc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD5hZGRzIGEgbmFtZXNwYWNlIHRvIHRoZSBuYW1lc3BhY2VzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjYWRkTmV3QWxsb3dlZCI+PEI+YWRkTmV3QWxsb3dlZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPmNvbnRyb2xzIGlmIG5ldyBWTXMgY2FuIGJlIGFkZGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwjYWRkT2JqZWN0KGphdmEubGFuZy5PYmplY3QpIj48Qj5hZGRPYmplY3QoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9GaWVsZE1ldGhvZGl6ZXIuaHRtbCI+RmllbGRNZXRob2RpemVyPC9BPgo8REQ+QWRkIGFuIE9iamVjdCB0byBtZXRob2RpemUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sI2FkZE9iamVjdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkT2JqZWN0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwiPkZpZWxkTWV0aG9kaXplcjwvQT4KPEREPkFkZCB0aGUgTmFtZSBvZiB0aGUgY2xhc3MgdG8gbWV0aG9kaXplCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2FkZFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QpIj48Qj5hZGRQcm9wZXJ0eShTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5BZGQgYSBWZWxvY2l0eSBSdW50aW1lIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNhZGRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+YWRkUHJvcGVydHkoU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPkFkZCBhIFZlbG9jaXR5IFJ1bnRpbWUgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjYWRkUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPmFkZFByb3BlcnR5KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5BZGQgYSBwcm9wZXJ0eSB0byB0aGUgY29uZmlndXJhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjYWRkUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPmFkZFByb3BlcnR5KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwiPlJ1bnRpbWU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtBZGQgYSBwcm9wZXJ0eSB0byB0aGUgY29uZmlndXJhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjYWRkUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPmFkZFByb3BlcnR5KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5BZGQgYSBwcm9wZXJ0eSB0byB0aGUgY29uZmlndXJhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNhZGRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+YWRkUHJvcGVydHkoU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5BZGQgYSBwcm9wZXJ0eSB0byB0aGUgY29uZmlndXJhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNhZGRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+YWRkUHJvcGVydHkoU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0FkZCBhIHByb3BlcnR5IHRvIHRoZSBjb25maWd1cmF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2FkZFN0cmluZ1Byb3BlcnR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRTdHJpbmdQcm9wZXJ0eShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7U2V0cyBhIHN0cmluZyBwcm9wZXJ0eSB3L28gY2hlY2tpbmcgZm9yIGNvbW1hcyAtIHVzZWQKICBpbnRlcm5hbGx5IHdoZW4gYSBwcm9wZXJ0eSBoYXMgYmVlbiBicm9rZW4gdXAgaW50bwogIHN0cmluZ3MgdGhhdCBjb3VsZCBjb250YWluIGVzY2FwZWQgY29tbWFzIHRvIHByZXZlbnQKICB0aGUgaW5hZHZlcnRhbnQgdmVjdG9yaXphdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RTdWl0ZS5odG1sI2FkZFRlbXBsYXRlVGVzdENhc2VzKCkiPjxCPmFkZFRlbXBsYXRlVGVzdENhc2VzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RTdWl0ZS5odG1sIj5UZW1wbGF0ZVRlc3RTdWl0ZTwvQT4KPEREPkFkZHMgdGhlIHRlbXBsYXRlIHRlc3QgY2FzZXMgdG8gcnVuIHRvIHRoaXMgdGVzdCBzdWl0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNhZGRWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nW10sIGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRWZWxvY2ltYWNybyhTdHJpbmcsIFN0cmluZywgU3RyaW5nW10sIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+QWRkcyBhIG5ldyBWZWxvY2ltYWNyby4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNhZGRWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nW10sIGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRWZWxvY2ltYWNybyhTdHJpbmcsIFN0cmluZywgU3RyaW5nW10sIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPgo8REQ+YWRkcyBhIG1hY3JvIHRvIHRoZSBmYWN0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCNhZGRWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nW10sIGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRWZWxvY2ltYWNybyhTdHJpbmcsIFN0cmluZywgU3RyaW5nW10sIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7QWRkcyBhIG5ldyBWZWxvY2ltYWNyby4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjYWRkVmVsb2NpbWFjcm8oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZ1tdLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkVmVsb2NpbWFjcm8oU3RyaW5nLCBTdHJpbmcsIFN0cmluZ1tdLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPkFkZHMgYSBuZXcgVmVsb2NpbWFjcm8uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjYWRkVmVsb2NpbWFjcm8oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZ1tdLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkVmVsb2NpbWFjcm8oU3RyaW5nLCBTdHJpbmcsIFN0cmluZ1tdLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5BZGRzIGEgbmV3IFZlbG9jaW1hY3JvLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI2FkZFZNKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmdbXSwgamF2YS5sYW5nLlN0cmluZykiPjxCPmFkZFZNKFN0cmluZywgU3RyaW5nLCBTdHJpbmdbXSwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD5BZGRzIGEgVk0gZGVmaW5pdGlvbiB0byB0aGUgY2FjaGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjYWRkVk1Qcm94eUFyZyhvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLlZNUHJveHlBcmcpIj48Qj5hZGRWTVByb3h5QXJnKFZNUHJveHlBcmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPlVzZWQgdG8gcHV0IFZNUHJveHlBcmdzIGludG8gdGhpcyBjb250ZXh0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNhZGp1c3RCZWdpbkxpbmVDb2x1bW4oaW50LCBpbnQpIj48Qj5hZGp1c3RCZWdpbkxpbmVDb2x1bW4oaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+TWV0aG9kIHRvIGFkanVzdCBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIHN0YXJ0IG9mIGEgdG9rZW4uPEJSPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsLmh0bWwjYWUiPjxCPmFlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsLmh0bWwiPlViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCNhbCI+PEI+YWw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCI+VGVtcGxhdGVUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvVHJlZVdhbGtlci5odG1sI2FsbEVsZW1lbnRzKG9yZy5qZG9tLkVsZW1lbnQpIj48Qj5hbGxFbGVtZW50cyhFbGVtZW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9UcmVlV2Fsa2VyLmh0bWwiPlRyZWVXYWxrZXI8L0E+CjxERD5DcmVhdGVzIGEgbmV3IFZlY3RvciBhbmQgd2Fsa3MgdGhlIEVsZW1lbnQgdHJlZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sI2FsbEVtcHR5KGphdmEudXRpbC5MaXN0KSI+PEI+YWxsRW1wdHkoTGlzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sIj5TdHJpbmdVdGlsczwvQT4KPEREPkNoZWNrIHRvIHNlZSBpZiBhbGwgdGhlIHN0cmluZyBvYmplY3RzIHBhc3NlZAogaW4gYXJlIGVtcHR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2FsbEVtcHR5KGphdmEubGFuZy5PYmplY3RbXSkiPjxCPmFsbEVtcHR5KE9iamVjdFtdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjQUxQSEFfQ0hBUiI+PEI+QUxQSEFfQ0hBUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjQUxQSEFOVU1fQ0hBUiI+PEI+QUxQSEFOVU1fQ0hBUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QWx0ZXJuYXRvci5odG1sI2FsdGVybmF0ZSgpIj48Qj5hbHRlcm5hdGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3IuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBbHRlcm5hdG9yPC9BPgo8REQ+QWx0ZXJuYXRlcyB0byB0aGUgbmV4dCBpbiB0aGUgbGlzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QWx0ZXJuYXRvci5odG1sI2FsdGVybmF0ZXMiPjxCPmFsdGVybmF0ZXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3IuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBbHRlcm5hdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFFbGVtZW50Lmh0bWwiPjxCPkFuYWtpYUVsZW1lbnQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4uPEREPkEgSkRPTSA8Q09ERT5FbGVtZW50PC9DT0RFPiB0aGF0IGlzIHRhaWxvcmVkIGZvciBBbmFraWEgbmVlZHMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCNBbmFraWFFbGVtZW50KGphdmEubGFuZy5TdHJpbmcpIj48Qj5BbmFraWFFbGVtZW50KFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhRWxlbWVudC5odG1sIj5BbmFraWFFbGVtZW50PC9BPgo8REQ+CiAgVGhpcyB3aWxsIGNyZWF0ZSBhbiA8Y29kZT5BbmFraWFFbGVtZW50PC9jb2RlPiBpbiBubwogICAgPGNvZGU+PENPREU+TmFtZXNwYWNlPC9DT0RFPjwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFFbGVtZW50Lmh0bWwjQW5ha2lhRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBvcmcuamRvbS5OYW1lc3BhY2UpIj48Qj5BbmFraWFFbGVtZW50KFN0cmluZywgTmFtZXNwYWNlKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFFbGVtZW50Lmh0bWwiPkFuYWtpYUVsZW1lbnQ8L0E+CjxERD4KIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgPGNvZGU+QW5ha2lhRWxlbWVudDwvY29kZT4KICAgd2l0aCB0aGUgc3VwcGxpZWQgKGxvY2FsKSBuYW1lLCBhbmQgZGVmaW5lCiAgIHRoZSA8Y29kZT48Q09ERT5OYW1lc3BhY2U8L0NPREU+PC9jb2RlPiB0byBiZSB1c2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhRWxlbWVudC5odG1sI0FuYWtpYUVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPkFuYWtpYUVsZW1lbnQoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4KPEREPgogIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgPGNvZGU+QW5ha2lhRWxlbWVudDwvY29kZT4gd2l0aAogICAgdGhlIHN1cHBsaWVkIChsb2NhbCkgbmFtZSwgYW5kIHNwZWNpZmllcyB0aGUgVVJJCiAgICBvZiB0aGUgPGNvZGU+PENPREU+TmFtZXNwYWNlPC9DT0RFPjwvY29kZT4gdGhlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+CiAgICBzaG91bGQgYmUgaW4sIHJlc3VsdGluZyBpdCBiZWluZyB1bnByZWZpeGVkIChpbiB0aGUgZGVmYXVsdAogICAgbmFtZXNwYWNlKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCNBbmFraWFFbGVtZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5BbmFraWFFbGVtZW50KFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4KPEREPgogIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgPGNvZGU+QW5ha2lhRWxlbWVudDwvY29kZT4gd2l0aAogICAgdGhlIHN1cHBsaWVkIChsb2NhbCkgbmFtZSwgYW5kIHNwZWNpZmllcyB0aGUgcHJlZml4IGFuZCBVUkkKICAgIG9mIHRoZSA8Y29kZT48Q09ERT5OYW1lc3BhY2U8L0NPREU+PC9jb2RlPiB0aGUgPGNvZGU+RWxlbWVudDwvY29kZT4KICAgIHNob3VsZCBiZSBpbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUpET01GYWN0b3J5Lmh0bWwiPjxCPkFuYWtpYUpET01GYWN0b3J5PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFKRE9NRmFjdG9yeS5odG1sIj5BbmFraWFKRE9NRmFjdG9yeTwvQT4uPEREPkEgY3VzdG9taXplZCBKRE9NRmFjdG9yeSBmb3IgQW5ha2lhIHRoYXQgcHJvZHVjZXMgPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhRWxlbWVudC5odG1sIj48Q09ERT5BbmFraWFFbGVtZW50PC9DT0RFPjwvQT4KIGluc3RhbmNlcyBpbnN0ZWFkIG9mIG9yZGluYXJ5IEpET00gPENPREU+RWxlbWVudDwvQ09ERT4gaW5zdGFuY2VzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFKRE9NRmFjdG9yeS5odG1sI0FuYWtpYUpET01GYWN0b3J5KCkiPjxCPkFuYWtpYUpET01GYWN0b3J5KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhSkRPTUZhY3RvcnkuaHRtbCI+QW5ha2lhSkRPTUZhY3Rvcnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+PEI+QW5ha2lhVGFzazwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPi48REQ+VGhlIHB1cnBvc2Ugb2YgdGhpcyBBbnQgVGFzayBpcyB0byBhbGxvdyB5b3UgdG8gdXNlIAogVmVsb2NpdHkgYXMgYW4gWE1MIHRyYW5zZm9ybWF0aW9uIHRvb2wgbGlrZSBYU0xUIGlzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjQW5ha2lhVGFzaygpIj48Qj5BbmFraWFUYXNrKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+Q29uc3RydWN0b3IgY3JlYXRlcyB0aGUgU0FYQnVpbGRlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9BbmFraWFUZXN0Q2FzZS5odG1sIj48Qj5BbmFraWFUZXN0Q2FzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9BbmFraWFUZXN0Q2FzZS5odG1sIj5BbmFraWFUZXN0Q2FzZTwvQT4uPEREPlRoaXMgaXMgYSB0ZXN0IGNhc2UgZm9yIEFuYWtpYS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0FuYWtpYVRlc3RDYXNlLmh0bWwjQW5ha2lhVGVzdENhc2UoKSI+PEI+QW5ha2lhVGVzdENhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0FuYWtpYVRlc3RDYXNlLmh0bWwiPkFuYWtpYVRlc3RDYXNlPC9BPgo8REQ+Q3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNhcHBsaWNhdGlvbkF0dHJpYnV0ZXMiPjxCPmFwcGxpY2F0aW9uQXR0cmlidXRlczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhUb29sLmh0bWwjYXBwbHlUbyhqYXZhLmxhbmcuU3RyaW5nLCBvcmcuamRvbS5Eb2N1bWVudCkiPjxCPmFwcGx5VG8oU3RyaW5nLCBEb2N1bWVudCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhUb29sLmh0bWwiPlhQYXRoVG9vbDwvQT4KPEREPkFwcGx5IGFuIFhQYXRoIHRvIGEgSkRPTSBEb2N1bWVudAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhUb29sLmh0bWwjYXBwbHlUbyhqYXZhLmxhbmcuU3RyaW5nLCBvcmcuamRvbS5FbGVtZW50KSI+PEI+YXBwbHlUbyhTdHJpbmcsIEVsZW1lbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL1hQYXRoVG9vbC5odG1sIj5YUGF0aFRvb2w8L0E+CjxERD5BcHBseSBhbiBYUGF0aCB0byBhIEpET00gRWxlbWVudAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhUb29sLmh0bWwjYXBwbHlUbyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCkiPjxCPmFwcGx5VG8oU3RyaW5nLCBMaXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9YUGF0aFRvb2wuaHRtbCI+WFBhdGhUb29sPC9BPgo8REQ+QXBwbHkgYW4gWFBhdGggdG8gYSBub2Rlc2V0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5KSkNhbGxzLmh0bWwjYXJnIj48Qj5hcmc8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLkpKQ2FsbHMuaHRtbCI+UGFyc2VyLkpKQ2FsbHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sI2FyZ2FycmF5Ij48Qj5hcmdhcnJheTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI2FyZ0FycmF5Ij48Qj5hcmdBcnJheTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL1ZNUmVmZXJlbmNlTXVuZ2VWaXNpdG9yLmh0bWwjYXJnbWFwIj48Qj5hcmdtYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9WTVJlZmVyZW5jZU11bmdlVmlzaXRvci5odG1sIj5WTVJlZmVyZW5jZU11bmdlVmlzaXRvcjwvQT4KPEREPk1hcCBjb250YWluaW5nIFZNIGFyZyB0byBpbnN0YW5jZS11c2UgcmVmZXJlbmNlCiAgUGFzc2VkIGluIHdpdGggQ1RPUgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0dldEV4ZWN1dG9yLmh0bWwjYXJncyI+PEI+YXJnczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvR2V0RXhlY3V0b3IuaHRtbCI+R2V0RXhlY3V0b3I8L0E+CjxERD5Db250YWluZXIgdG8gaG9sZCB0aGUgJ2tleScgcGFydCBvZiAKIGdldChrZXkpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCNhcnJheSI+PEI+YXJyYXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCI+QXJyYXlJdGVyYXRvcjwvQT4KPEREPlRoZSBvYmplY3RzIHRvIGl0ZXJhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvQXJyYXlJdGVyYXRvci5odG1sIj48Qj5BcnJheUl0ZXJhdG9yPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCI+QXJyYXlJdGVyYXRvcjwvQT4uPEREPgogIEFuIEl0ZXJhdG9yIHdyYXBwZXIgZm9yIGFuIE9iamVjdFtdLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvQXJyYXlJdGVyYXRvci5odG1sI0FycmF5SXRlcmF0b3IoamF2YS5sYW5nLk9iamVjdCkiPjxCPkFycmF5SXRlcmF0b3IoT2JqZWN0KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCI+QXJyYXlJdGVyYXRvcjwvQT4KPEREPkNyZWF0ZXMgYSBuZXcgaXRlcmF0b3IgaW5zdGFuY2UgZm9yIHRoZSBzcGVjaWZpZWQgYXJyYXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI2Fzc2VtYmxlUmVzb3VyY2VMb2FkZXJJbml0aWFsaXplcnMoKSI+PEI+YXNzZW1ibGVSZXNvdXJjZUxvYWRlckluaXRpYWxpemVycygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9BPgo8REQ+VGhpcyB3aWxsIHByb2R1Y2UgYSBMaXN0IG9mIEhhc2h0YWJsZXMsIGVhY2gKIGhhc2h0YWJsZSBjb250YWlucyB0aGUgaW50aWFsaXphdGlvbiBpbmZvIGZvcgogYSBwYXJ0aWN1bGFyIHJlc291cmNlIGxvYWRlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjQXNzaWdubWVudCgpIj48Qj5Bc3NpZ25tZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9CYXNlVGVzdENhc2UuaHRtbCNhc3N1cmVSZXN1bHRzRGlyZWN0b3J5RXhpc3RzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5hc3N1cmVSZXN1bHRzRGlyZWN0b3J5RXhpc3RzKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQmFzZVRlc3RDYXNlLmh0bWwiPkJhc2VUZXN0Q2FzZTwvQT4KPEREPkFzc3VyZXMgdGhhdCB0aGUgcmVzdWx0cyBkaXJlY3RvcnkgZXhpc3RzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFkZE5vZGUuaHRtbCI+PEI+QVNUQWRkTm9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBZGROb2RlLmh0bWwiPkFTVEFkZE5vZGU8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFkZE5vZGUuaHRtbCNBU1RBZGROb2RlKGludCkiPjxCPkFTVEFkZE5vZGUoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFkZE5vZGUuaHRtbCI+QVNUQWRkTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFkZE5vZGUuaHRtbCNBU1RBZGROb2RlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RBZGROb2RlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFkZE5vZGUuaHRtbCI+QVNUQWRkTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFuZE5vZGUuaHRtbCI+PEI+QVNUQW5kTm9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBbmROb2RlLmh0bWwiPkFTVEFuZE5vZGU8L0E+LjxERD5QbGVhc2UgbG9vayBhdCB0aGUgUGFyc2VyLmpqdCBmaWxlIHdoaWNoIGlzCiB3aGF0IGNvbnRyb2xzIHRoZSBnZW5lcmF0aW9uIG9mIHRoaXMgY2xhc3MuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBbmROb2RlLmh0bWwjQVNUQW5kTm9kZShpbnQpIj48Qj5BU1RBbmROb2RlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBbmROb2RlLmh0bWwiPkFTVEFuZE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBbmROb2RlLmh0bWwjQVNUQW5kTm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUQW5kTm9kZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBbmROb2RlLmh0bWwiPkFTVEFuZE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBc3NpZ25tZW50Lmh0bWwiPjxCPkFTVEFzc2lnbm1lbnQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQXNzaWdubWVudC5odG1sIj5BU1RBc3NpZ25tZW50PC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBc3NpZ25tZW50Lmh0bWwjQVNUQXNzaWdubWVudChpbnQpIj48Qj5BU1RBc3NpZ25tZW50KGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBc3NpZ25tZW50Lmh0bWwiPkFTVEFzc2lnbm1lbnQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBc3NpZ25tZW50Lmh0bWwjQVNUQXNzaWdubWVudChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUQXNzaWdubWVudChQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBc3NpZ25tZW50Lmh0bWwiPkFTVEFzc2lnbm1lbnQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RCbG9jay5odG1sIj48Qj5BU1RCbG9jazwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RCbG9jay5odG1sIj5BU1RCbG9jazwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQmxvY2suaHRtbCNBU1RCbG9jayhpbnQpIj48Qj5BU1RCbG9jayhpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQmxvY2suaHRtbCI+QVNUQmxvY2s8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RCbG9jay5odG1sI0FTVEJsb2NrKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RCbG9jayhQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RCbG9jay5odG1sIj5BU1RCbG9jazwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVENvbW1lbnQuaHRtbCI+PEI+QVNUQ29tbWVudDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RDb21tZW50Lmh0bWwiPkFTVENvbW1lbnQ8L0E+LjxERD5SZXByZXNlbnRzIGFsbCBjb21tZW50cy4uLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQ29tbWVudC5odG1sI0FTVENvbW1lbnQoaW50KSI+PEI+QVNUQ29tbWVudChpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQ29tbWVudC5odG1sIj5BU1RDb21tZW50PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQ29tbWVudC5odG1sI0FTVENvbW1lbnQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVENvbW1lbnQoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQ29tbWVudC5odG1sIj5BU1RDb21tZW50PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwiPjxCPkFTVERpcmVjdGl2ZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCI+QVNURGlyZWN0aXZlPC9BPi48REQ+VGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIHBsdWdnYWJsZQogZGlyZWN0aXZlcyBpbiBWVEwuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCNBU1REaXJlY3RpdmUoaW50KSI+PEI+QVNURGlyZWN0aXZlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCI+QVNURGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwjQVNURGlyZWN0aXZlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1REaXJlY3RpdmUoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwiPkFTVERpcmVjdGl2ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVERpdk5vZGUuaHRtbCI+PEI+QVNURGl2Tm9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwiPkFTVERpdk5vZGU8L0E+LjxERD5IYW5kbGVzIGludGVnZXIgZGl2aXNpb24gb2Ygbm9kZXMKCiBQbGVhc2UgbG9vayBhdCB0aGUgUGFyc2VyLmpqdCBmaWxlIHdoaWNoIGlzCiB3aGF0IGNvbnRyb2xzIHRoZSBnZW5lcmF0aW9uIG9mIHRoaXMgY2xhc3MuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwjQVNURGl2Tm9kZShpbnQpIj48Qj5BU1REaXZOb2RlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwiPkFTVERpdk5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwjQVNURGl2Tm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNURGl2Tm9kZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwiPkFTVERpdk5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFbHNlSWZTdGF0ZW1lbnQuaHRtbCI+PEI+QVNURWxzZUlmU3RhdGVtZW50PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VJZlN0YXRlbWVudC5odG1sIj5BU1RFbHNlSWZTdGF0ZW1lbnQ8L0E+LjxERD5UaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgRWxzZUlmIFZUTCBjb250cm9sIHN0YXRlbWVudC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VJZlN0YXRlbWVudC5odG1sI0FTVEVsc2VJZlN0YXRlbWVudChpbnQpIj48Qj5BU1RFbHNlSWZTdGF0ZW1lbnQoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VJZlN0YXRlbWVudC5odG1sIj5BU1RFbHNlSWZTdGF0ZW1lbnQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFbHNlSWZTdGF0ZW1lbnQuaHRtbCNBU1RFbHNlSWZTdGF0ZW1lbnQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVEVsc2VJZlN0YXRlbWVudChQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFbHNlSWZTdGF0ZW1lbnQuaHRtbCI+QVNURWxzZUlmU3RhdGVtZW50PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURWxzZVN0YXRlbWVudC5odG1sIj48Qj5BU1RFbHNlU3RhdGVtZW50PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VTdGF0ZW1lbnQuaHRtbCI+QVNURWxzZVN0YXRlbWVudDwvQT4uPEREPlRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBFbHNlIFZUTCBjb250cm9sIHN0YXRlbWVudC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VTdGF0ZW1lbnQuaHRtbCNBU1RFbHNlU3RhdGVtZW50KGludCkiPjxCPkFTVEVsc2VTdGF0ZW1lbnQoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VTdGF0ZW1lbnQuaHRtbCI+QVNURWxzZVN0YXRlbWVudDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VTdGF0ZW1lbnQuaHRtbCNBU1RFbHNlU3RhdGVtZW50KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RFbHNlU3RhdGVtZW50KFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VTdGF0ZW1lbnQuaHRtbCI+QVNURWxzZVN0YXRlbWVudDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVRTm9kZS5odG1sIj48Qj5BU1RFUU5vZGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURVFOb2RlLmh0bWwiPkFTVEVRTm9kZTwvQT4uPEREPkhhbmRsZXMgdGhlIGVxdWl2YWxlbmNlIG9wZXJhdG9yCgogICAgPGFyZzE+ICA9PSA8YXJnMj4KCiAgVGhpcyBvcGVyYXRvciByZXF1aXJlcyB0aGF0IHRoZSBMSFMgYW5kIFJIUyBhcmUgYm90aCBvZiB0aGUKICBzYW1lIENsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURVFOb2RlLmh0bWwjQVNURVFOb2RlKGludCkiPjxCPkFTVEVRTm9kZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURVFOb2RlLmh0bWwiPkFTVEVRTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVRTm9kZS5odG1sI0FTVEVRTm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNURVFOb2RlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVRTm9kZS5odG1sIj5BU1RFUU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGUuaHRtbCI+PEI+QVNURXNjYXBlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sIj5BU1RFc2NhcGU8L0E+LjxERD5UaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBFc2NhcGVzCiAgaW4gVlRMLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXNjYXBlLmh0bWwjQVNURXNjYXBlKGludCkiPjxCPkFTVEVzY2FwZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXNjYXBlLmh0bWwiPkFTVEVzY2FwZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sI0FTVEVzY2FwZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNURXNjYXBlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sIj5BU1RFc2NhcGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwiPjxCPkFTVEVzY2FwZWREaXJlY3RpdmU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXNjYXBlZERpcmVjdGl2ZS5odG1sIj5BU1RFc2NhcGVkRGlyZWN0aXZlPC9BPi48REQ+VGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgRXNjYXBlZERpcmVjdGl2ZXMKICBpbiBWVEwuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwjQVNURXNjYXBlZERpcmVjdGl2ZShpbnQpIj48Qj5BU1RFc2NhcGVkRGlyZWN0aXZlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwiPkFTVEVzY2FwZWREaXJlY3RpdmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwjQVNURXNjYXBlZERpcmVjdGl2ZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNURXNjYXBlZERpcmVjdGl2ZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwiPkFTVEVzY2FwZWREaXJlY3RpdmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFeHByZXNzaW9uLmh0bWwiPjxCPkFTVEV4cHJlc3Npb248L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXhwcmVzc2lvbi5odG1sIj5BU1RFeHByZXNzaW9uPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFeHByZXNzaW9uLmh0bWwjQVNURXhwcmVzc2lvbihpbnQpIj48Qj5BU1RFeHByZXNzaW9uKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFeHByZXNzaW9uLmh0bWwiPkFTVEV4cHJlc3Npb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFeHByZXNzaW9uLmh0bWwjQVNURXhwcmVzc2lvbihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNURXhwcmVzc2lvbihQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFeHByZXNzaW9uLmh0bWwiPkFTVEV4cHJlc3Npb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sIj48Qj5BU1RGYWxzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sIj5BU1RGYWxzZTwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURmFsc2UuaHRtbCNBU1RGYWxzZShpbnQpIj48Qj5BU1RGYWxzZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURmFsc2UuaHRtbCI+QVNURmFsc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sI0FTVEZhbHNlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RGYWxzZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sIj5BU1RGYWxzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdFTm9kZS5odG1sIj48Qj5BU1RHRU5vZGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR0VOb2RlLmh0bWwiPkFTVEdFTm9kZTwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR0VOb2RlLmh0bWwjQVNUR0VOb2RlKGludCkiPjxCPkFTVEdFTm9kZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR0VOb2RlLmh0bWwiPkFTVEdFTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdFTm9kZS5odG1sI0FTVEdFTm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUR0VOb2RlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdFTm9kZS5odG1sIj5BU1RHRU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RHVE5vZGUuaHRtbCI+PEI+QVNUR1ROb2RlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdUTm9kZS5odG1sIj5BU1RHVE5vZGU8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdUTm9kZS5odG1sI0FTVEdUTm9kZShpbnQpIj48Qj5BU1RHVE5vZGUoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdUTm9kZS5odG1sIj5BU1RHVE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RHVE5vZGUuaHRtbCNBU1RHVE5vZGUob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVEdUTm9kZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RHVE5vZGUuaHRtbCI+QVNUR1ROb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sIj48Qj5BU1RJZGVudGlmaWVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVElkZW50aWZpZXIuaHRtbCI+QVNUSWRlbnRpZmllcjwvQT4uPEREPkFTVElkZW50aWZpZXIuamF2YQoKICBNZXRob2Qgc3VwcG9ydCBmb3IgaWRlbnRpZmllcnMgOiAgJGZvbwoKICBtYWlubHkgdXNlZCBieSBBU1RSZWZyZW5jZQoKICBJbnRyb3NwZWN0aW9uIGlzIG5vdyBtb3ZlZCB0byAnanVzdCBpbiB0aW1lJyBvciBhdCByZW5kZXIgLyBleGVjdXRpb24KICB0aW1lLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sI0FTVElkZW50aWZpZXIoaW50KSI+PEI+QVNUSWRlbnRpZmllcihpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sIj5BU1RJZGVudGlmaWVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sI0FTVElkZW50aWZpZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVElkZW50aWZpZXIoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sIj5BU1RJZGVudGlmaWVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWZTdGF0ZW1lbnQuaHRtbCI+PEI+QVNUSWZTdGF0ZW1lbnQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWZTdGF0ZW1lbnQuaHRtbCI+QVNUSWZTdGF0ZW1lbnQ8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVElmU3RhdGVtZW50Lmh0bWwjQVNUSWZTdGF0ZW1lbnQoaW50KSI+PEI+QVNUSWZTdGF0ZW1lbnQoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVElmU3RhdGVtZW50Lmh0bWwiPkFTVElmU3RhdGVtZW50PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWZTdGF0ZW1lbnQuaHRtbCNBU1RJZlN0YXRlbWVudChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUSWZTdGF0ZW1lbnQoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWZTdGF0ZW1lbnQuaHRtbCI+QVNUSWZTdGF0ZW1lbnQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbmNsdWRlU3RhdGVtZW50Lmh0bWwiPjxCPkFTVEluY2x1ZGVTdGF0ZW1lbnQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSW5jbHVkZVN0YXRlbWVudC5odG1sIj5BU1RJbmNsdWRlU3RhdGVtZW50PC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbmNsdWRlU3RhdGVtZW50Lmh0bWwjQVNUSW5jbHVkZVN0YXRlbWVudChpbnQpIj48Qj5BU1RJbmNsdWRlU3RhdGVtZW50KGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbmNsdWRlU3RhdGVtZW50Lmh0bWwiPkFTVEluY2x1ZGVTdGF0ZW1lbnQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbmNsdWRlU3RhdGVtZW50Lmh0bWwjQVNUSW5jbHVkZVN0YXRlbWVudChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUSW5jbHVkZVN0YXRlbWVudChQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbmNsdWRlU3RhdGVtZW50Lmh0bWwiPkFTVEluY2x1ZGVTdGF0ZW1lbnQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbnRlZ2VyUmFuZ2UuaHRtbCI+PEI+QVNUSW50ZWdlclJhbmdlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEludGVnZXJSYW5nZS5odG1sIj5BU1RJbnRlZ2VyUmFuZ2U8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEludGVnZXJSYW5nZS5odG1sI0FTVEludGVnZXJSYW5nZShpbnQpIj48Qj5BU1RJbnRlZ2VyUmFuZ2UoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEludGVnZXJSYW5nZS5odG1sIj5BU1RJbnRlZ2VyUmFuZ2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbnRlZ2VyUmFuZ2UuaHRtbCNBU1RJbnRlZ2VyUmFuZ2Uob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVEludGVnZXJSYW5nZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbnRlZ2VyUmFuZ2UuaHRtbCI+QVNUSW50ZWdlclJhbmdlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTEVOb2RlLmh0bWwiPjxCPkFTVExFTm9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RMRU5vZGUuaHRtbCI+QVNUTEVOb2RlPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RMRU5vZGUuaHRtbCNBU1RMRU5vZGUoaW50KSI+PEI+QVNUTEVOb2RlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RMRU5vZGUuaHRtbCI+QVNUTEVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTEVOb2RlLmh0bWwjQVNUTEVOb2RlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RMRU5vZGUoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTEVOb2RlLmh0bWwiPkFTVExFTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVExUTm9kZS5odG1sIj48Qj5BU1RMVE5vZGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTFROb2RlLmh0bWwiPkFTVExUTm9kZTwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTFROb2RlLmh0bWwjQVNUTFROb2RlKGludCkiPjxCPkFTVExUTm9kZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTFROb2RlLmh0bWwiPkFTVExUTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVExUTm9kZS5odG1sI0FTVExUTm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUTFROb2RlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVExUTm9kZS5odG1sIj5BU1RMVE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNZXRob2QuaHRtbCI+PEI+QVNUTWV0aG9kPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE1ldGhvZC5odG1sIj5BU1RNZXRob2Q8L0E+LjxERD5BU1RNZXRob2QuamF2YQoKICBNZXRob2Qgc3VwcG9ydCBmb3IgcmVmZXJlbmNlcyA6ICAkZm9vLm1ldGhvZCgpCgogIE5PVEUgOgoKICBpbnRyb3NwZWN0aW9uIGlzIG5vdyBkb25lIGF0IHJlbmRlciB0aW1lLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTWV0aG9kLmh0bWwjQVNUTWV0aG9kKGludCkiPjxCPkFTVE1ldGhvZChpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTWV0aG9kLmh0bWwiPkFTVE1ldGhvZDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE1ldGhvZC5odG1sI0FTVE1ldGhvZChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUTWV0aG9kKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE1ldGhvZC5odG1sIj5BU1RNZXRob2Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNb2ROb2RlLmh0bWwiPjxCPkFTVE1vZE5vZGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTW9kTm9kZS5odG1sIj5BU1RNb2ROb2RlPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNb2ROb2RlLmh0bWwjQVNUTW9kTm9kZShpbnQpIj48Qj5BU1RNb2ROb2RlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNb2ROb2RlLmh0bWwiPkFTVE1vZE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNb2ROb2RlLmh0bWwjQVNUTW9kTm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUTW9kTm9kZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNb2ROb2RlLmh0bWwiPkFTVE1vZE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNdWxOb2RlLmh0bWwiPjxCPkFTVE11bE5vZGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTXVsTm9kZS5odG1sIj5BU1RNdWxOb2RlPC9BPi48REQ+SGFuZGxlcyBpbnRlZ2VyIG11bHRpcGxpY2F0aW9uCgogUGxlYXNlIGxvb2sgYXQgdGhlIFBhcnNlci5qanQgZmlsZSB3aGljaCBpcwogd2hhdCBjb250cm9scyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIGNsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTXVsTm9kZS5odG1sI0FTVE11bE5vZGUoaW50KSI+PEI+QVNUTXVsTm9kZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTXVsTm9kZS5odG1sIj5BU1RNdWxOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTXVsTm9kZS5odG1sI0FTVE11bE5vZGUob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVE11bE5vZGUoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTXVsTm9kZS5odG1sIj5BU1RNdWxOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTkVOb2RlLmh0bWwiPjxCPkFTVE5FTm9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RORU5vZGUuaHRtbCI+QVNUTkVOb2RlPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RORU5vZGUuaHRtbCNBU1RORU5vZGUoaW50KSI+PEI+QVNUTkVOb2RlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RORU5vZGUuaHRtbCI+QVNUTkVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTkVOb2RlLmh0bWwjQVNUTkVOb2RlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RORU5vZGUoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTkVOb2RlLmh0bWwiPkFTVE5FTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5vdE5vZGUuaHRtbCI+PEI+QVNUTm90Tm9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1ROb3ROb2RlLmh0bWwiPkFTVE5vdE5vZGU8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5vdE5vZGUuaHRtbCNBU1ROb3ROb2RlKGludCkiPjxCPkFTVE5vdE5vZGUoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5vdE5vZGUuaHRtbCI+QVNUTm90Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5vdE5vZGUuaHRtbCNBU1ROb3ROb2RlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1ROb3ROb2RlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5vdE5vZGUuaHRtbCI+QVNUTm90Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCI+PEI+QVNUTnVtYmVyTGl0ZXJhbDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1ROdW1iZXJMaXRlcmFsLmh0bWwiPkFTVE51bWJlckxpdGVyYWw8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCNBU1ROdW1iZXJMaXRlcmFsKGludCkiPjxCPkFTVE51bWJlckxpdGVyYWwoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCI+QVNUTnVtYmVyTGl0ZXJhbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCNBU1ROdW1iZXJMaXRlcmFsKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1ROdW1iZXJMaXRlcmFsKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCI+QVNUTnVtYmVyTGl0ZXJhbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9iamVjdEFycmF5Lmh0bWwiPjxCPkFTVE9iamVjdEFycmF5PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9iamVjdEFycmF5Lmh0bWwiPkFTVE9iamVjdEFycmF5PC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPYmplY3RBcnJheS5odG1sI0FTVE9iamVjdEFycmF5KGludCkiPjxCPkFTVE9iamVjdEFycmF5KGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPYmplY3RBcnJheS5odG1sIj5BU1RPYmplY3RBcnJheTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9iamVjdEFycmF5Lmh0bWwjQVNUT2JqZWN0QXJyYXkob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVE9iamVjdEFycmF5KFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9iamVjdEFycmF5Lmh0bWwiPkFTVE9iamVjdEFycmF5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUT3JOb2RlLmh0bWwiPjxCPkFTVE9yTm9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPck5vZGUuaHRtbCI+QVNUT3JOb2RlPC9BPi48REQ+UGxlYXNlIGxvb2sgYXQgdGhlIFBhcnNlci5qanQgZmlsZSB3aGljaCBpcwogd2hhdCBjb250cm9scyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIGNsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUT3JOb2RlLmh0bWwjQVNUT3JOb2RlKGludCkiPjxCPkFTVE9yTm9kZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUT3JOb2RlLmh0bWwiPkFTVE9yTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9yTm9kZS5odG1sI0FTVE9yTm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUT3JOb2RlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9yTm9kZS5odG1sIj5BU1RPck5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RQYXJhbWV0ZXJzLmh0bWwiPjxCPkFTVFBhcmFtZXRlcnM8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUGFyYW1ldGVycy5odG1sIj5BU1RQYXJhbWV0ZXJzPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RQYXJhbWV0ZXJzLmh0bWwjQVNUUGFyYW1ldGVycyhpbnQpIj48Qj5BU1RQYXJhbWV0ZXJzKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RQYXJhbWV0ZXJzLmh0bWwiPkFTVFBhcmFtZXRlcnM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RQYXJhbWV0ZXJzLmh0bWwjQVNUUGFyYW1ldGVycyhvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUUGFyYW1ldGVycyhQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RQYXJhbWV0ZXJzLmh0bWwiPkFTVFBhcmFtZXRlcnM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1Rwcm9jZXNzLmh0bWwiPjxCPkFTVHByb2Nlc3M8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUcHJvY2Vzcy5odG1sIj5BU1Rwcm9jZXNzPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1Rwcm9jZXNzLmh0bWwjQVNUcHJvY2VzcyhpbnQpIj48Qj5BU1Rwcm9jZXNzKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1Rwcm9jZXNzLmh0bWwiPkFTVHByb2Nlc3M8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1Rwcm9jZXNzLmh0bWwjQVNUcHJvY2VzcyhvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUcHJvY2VzcyhQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1Rwcm9jZXNzLmh0bWwiPkFTVHByb2Nlc3M8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+PEI+QVNUUmVmZXJlbmNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+LjxERD5UaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgcmVmZXJlbmNlcyBpbgogVlRMICgkZm9vKS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sI0FTVFJlZmVyZW5jZShpbnQpIj48Qj5BU1RSZWZlcmVuY2UoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNBU1RSZWZlcmVuY2Uob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXIsIGludCkiPjxCPkFTVFJlZmVyZW5jZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwiPjxCPkFTVFNldERpcmVjdGl2ZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCI+QVNUU2V0RGlyZWN0aXZlPC9BPi48REQ+Tm9kZSBmb3IgdGhlICNzZXQgZGlyZWN0aXZlPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCNBU1RTZXREaXJlY3RpdmUoaW50KSI+PEI+QVNUU2V0RGlyZWN0aXZlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCI+QVNUU2V0RGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwjQVNUU2V0RGlyZWN0aXZlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RTZXREaXJlY3RpdmUoUGFyc2VyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwiPkFTVFNldERpcmVjdGl2ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN0cmluZ0xpdGVyYWwuaHRtbCI+PEI+QVNUU3RyaW5nTGl0ZXJhbDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwiPkFTVFN0cmluZ0xpdGVyYWw8L0E+LjxERD5BU1RTdHJpbmdMaXRlcmFsIHN1cHBvcnQuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwjQVNUU3RyaW5nTGl0ZXJhbChpbnQpIj48Qj5BU1RTdHJpbmdMaXRlcmFsKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwiPkFTVFN0cmluZ0xpdGVyYWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwjQVNUU3RyaW5nTGl0ZXJhbChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUU3RyaW5nTGl0ZXJhbChQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwiPkFTVFN0cmluZ0xpdGVyYWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdWJ0cmFjdE5vZGUuaHRtbCI+PEI+QVNUU3VidHJhY3ROb2RlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN1YnRyYWN0Tm9kZS5odG1sIj5BU1RTdWJ0cmFjdE5vZGU8L0E+LjxERD5IYW5kbGVzIGludGVnZXIgc3VidHJhY3Rpb24gb2Ygbm9kZXMgKGluICNzZXQoKSApCgogUGxlYXNlIGxvb2sgYXQgdGhlIFBhcnNlci5qanQgZmlsZSB3aGljaCBpcwogd2hhdCBjb250cm9scyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIGNsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU3VidHJhY3ROb2RlLmh0bWwjQVNUU3VidHJhY3ROb2RlKGludCkiPjxCPkFTVFN1YnRyYWN0Tm9kZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU3VidHJhY3ROb2RlLmh0bWwiPkFTVFN1YnRyYWN0Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN1YnRyYWN0Tm9kZS5odG1sI0FTVFN1YnRyYWN0Tm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUU3VidHJhY3ROb2RlKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN1YnRyYWN0Tm9kZS5odG1sIj5BU1RTdWJ0cmFjdE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUZXh0Lmh0bWwiPjxCPkFTVFRleHQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVGV4dC5odG1sIj5BU1RUZXh0PC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUZXh0Lmh0bWwjQVNUVGV4dChpbnQpIj48Qj5BU1RUZXh0KGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUZXh0Lmh0bWwiPkFTVFRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUZXh0Lmh0bWwjQVNUVGV4dChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUVGV4dChQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUZXh0Lmh0bWwiPkFTVFRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwiPjxCPkFTVFRydWU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVHJ1ZS5odG1sIj5BU1RUcnVlPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwjQVNUVHJ1ZShpbnQpIj48Qj5BU1RUcnVlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwiPkFTVFRydWU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwjQVNUVHJ1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+QVNUVHJ1ZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwiPkFTVFRydWU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RWYXJpYWJsZS5odG1sIj48Qj5BU1RWYXJpYWJsZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RWYXJpYWJsZS5odG1sIj5BU1RWYXJpYWJsZTwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVmFyaWFibGUuaHRtbCNBU1RWYXJpYWJsZShpbnQpIj48Qj5BU1RWYXJpYWJsZShpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVmFyaWFibGUuaHRtbCI+QVNUVmFyaWFibGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RWYXJpYWJsZS5odG1sI0FTVFZhcmlhYmxlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RWYXJpYWJsZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RWYXJpYWJsZS5odG1sIj5BU1RWYXJpYWJsZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFdvcmQuaHRtbCI+PEI+QVNUV29yZDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RXb3JkLmh0bWwiPkFTVFdvcmQ8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFdvcmQuaHRtbCNBU1RXb3JkKGludCkiPjxCPkFTVFdvcmQoaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFdvcmQuaHRtbCI+QVNUV29yZDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFdvcmQuaHRtbCNBU1RXb3JkKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuUGFyc2VyLCBpbnQpIj48Qj5BU1RXb3JkKFBhcnNlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFdvcmQuaHRtbCI+QVNUV29yZDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCNhdHRhY2hFdmVudENhcnRyaWRnZShvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC5FdmVudENhcnRyaWRnZSkiPjxCPmF0dGFjaEV2ZW50Q2FydHJpZGdlKEV2ZW50Q2FydHJpZGdlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCI+SW50ZXJuYWxDb250ZXh0QmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwjYXR0YWNoRXZlbnRDYXJ0cmlkZ2Uob3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuZXZlbnQuRXZlbnRDYXJ0cmlkZ2UpIj48Qj5hdHRhY2hFdmVudENhcnRyaWRnZShFdmVudENhcnRyaWRnZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sIj5JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsRXZlbnRDb250ZXh0Lmh0bWwjYXR0YWNoRXZlbnRDYXJ0cmlkZ2Uob3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuZXZlbnQuRXZlbnRDYXJ0cmlkZ2UpIj48Qj5hdHRhY2hFdmVudENhcnRyaWRnZShFdmVudENhcnRyaWRnZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxFdmVudENvbnRleHQuaHRtbCI+SW50ZXJuYWxFdmVudENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCNhdHRhY2hFdmVudENhcnRyaWRnZShvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC5FdmVudENhcnRyaWRnZSkiPjxCPmF0dGFjaEV2ZW50Q2FydHJpZGdlKEV2ZW50Q2FydHJpZGdlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sIj5WTUNvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwjYXR0YWNoVG9Db250ZXh0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0KSI+PEI+YXR0YWNoVG9Db250ZXh0KENvbnRleHQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwiPkV2ZW50Q2FydHJpZGdlPC9BPgo8REQ+QXR0YWNoZWQgdGhlIEV2ZW50Q2FydHJpZGdlIHRvIHRoZSBjb250ZXh0CgogIEZpbmFsIGJlY2F1c2Ugbm90IHNvbWV0aGluZyBvbmUgc2hvdWxkIG1lc3Mgd2l0aCBsaWdodGx5IDopCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjYXV0b0ZsdXNoIj48Qj5hdXRvRmx1c2g8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNhdXRvUmVsb2FkTGlicmFyeSI+PEI+YXV0b1JlbG9hZExpYnJhcnk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5kZXRlcm1pbmVzIGlmIHRoZSBsaWJyYXJpZXMgYXJlIGF1dG8tbG9hZGVkCiAgd2hlbiB0aGV5IGNoYW5nZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNhdmFpbGFibGUiPjxCPmF2YWlsYWJsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0F2YWxvbkxvZ1N5c3RlbS5odG1sIj48Qj5BdmFsb25Mb2dTeXN0ZW08L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9BdmFsb25Mb2dTeXN0ZW0uaHRtbCI+QXZhbG9uTG9nU3lzdGVtPC9BPi48REQ+SW1wbGVtZW50YXRpb24gb2YgYSBBdmFsb24gbG9nZ2VyLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0F2YWxvbkxvZ1N5c3RlbS5odG1sI0F2YWxvbkxvZ1N5c3RlbSgpIj48Qj5BdmFsb25Mb2dTeXN0ZW0oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvQXZhbG9uTG9nU3lzdGVtLmh0bWwiPkF2YWxvbkxvZ1N5c3RlbTwvQT4KPEREPmRlZmF1bHQgQ1RPUi4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfQl8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+QjwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI2JhY2t1cChpbnQpIj48Qj5iYWNrdXAoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9DaGFyU3RyZWFtLmh0bWwjYmFja3VwKGludCkiPjxCPmJhY2t1cChpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sIj5DaGFyU3RyZWFtPC9BPgo8REQ+QmFja3MgdXAgdGhlIGlucHV0IHN0cmVhbSBieSBhbW91bnQgc3RlcHMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjYmFuZygpIj48Qj5iYW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjYmFzZURpciI+PEI+YmFzZURpcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPnRoZSBiYXNlIGRpcmVjdG9yeQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCNiYXNlRmlsZU5hbWUiPjxCPmJhc2VGaWxlTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sIj5UZW1wbGF0ZVRlc3RDYXNlPC9BPgo8REQ+VGhlIGJhc2UgZmlsZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSBhbmQgY29tcGFyaXNvbiBmaWxlIChpLmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjYmFzZVBhdGgiPjxCPmJhc2VQYXRoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7QmFzZSBwYXRoIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdXNlZCB0byBjcmVhdGUKIHRoaXMgQ29uZmlndXJhdGlvbiBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQmFzZVRlc3RDYXNlLmh0bWwiPjxCPkJhc2VUZXN0Q2FzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9CYXNlVGVzdENhc2UuaHRtbCI+QmFzZVRlc3RDYXNlPC9BPi48REQ+QmFzZSB0ZXN0IGNhc2UgdGhhdCBwcm92aWRlcyBhIGZldyB1dGlsaXR5IG1ldGhvZHMgZm9yCiB0aGUgcmVzdCBvZiB0aGUgdGVzdHMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9CYXNlVGVzdENhc2UuaHRtbCNCYXNlVGVzdENhc2UoamF2YS5sYW5nLlN0cmluZykiPjxCPkJhc2VUZXN0Q2FzZShTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQmFzZVRlc3RDYXNlLmh0bWwiPkJhc2VUZXN0Q2FzZTwvQT4KPEREPkRlZmF1bHQgY29uc3RydWN0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj48Qj5CYXNlVmlzaXRvcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+LjxERD5UaGlzIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgdmlzaXRvcnMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjQmFzZVZpc2l0b3IoKSI+PEI+QmFzZVZpc2l0b3IoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sI2JlZ2luQ29sdW1uIj48Qj5iZWdpbkNvbHVtbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4KPEREPmJlZ2luTGluZSBhbmQgYmVnaW5Db2x1bW4gZGVzY3JpYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKIG9mIHRoaXMgdG9rZW47IGVuZExpbmUgYW5kIGVuZENvbHVtbiBkZXNjcmliZSB0aGUgcG9zaXRpb24gb2YgdGhlCiBsYXN0IGNoYXJhY3RlciBvZiB0aGlzIHRva2VuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sI2JlZ2luTGluZSI+PEI+YmVnaW5MaW5lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuLmh0bWwiPlRva2VuPC9BPgo8REQ+YmVnaW5MaW5lIGFuZCBiZWdpbkNvbHVtbiBkZXNjcmliZSB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3Rlcgogb2YgdGhpcyB0b2tlbjsgZW5kTGluZSBhbmQgZW5kQ29sdW1uIGRlc2NyaWJlIHRoZSBwb3NpdGlvbiBvZiB0aGUKIGxhc3QgY2hhcmFjdGVyIG9mIHRoaXMgdG9rZW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI0JlZ2luVG9rZW4oKSI+PEI+QmVnaW5Ub2tlbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCNCZWdpblRva2VuKCkiPjxCPkJlZ2luVG9rZW4oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCI+Q2hhclN0cmVhbTwvQT4KPEREPlJldHVybnMgdGhlIG5leHQgY2hhcmFjdGVyIHRoYXQgbWFya3MgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCB0b2tlbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNibGF0aGVyIj48Qj5ibGF0aGVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPgo8REQ+Y29udHJvbHMgbG9nIG91dHB1dAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFNldERpcmVjdGl2ZS5odG1sI2JsYXRoZXIiPjxCPmJsYXRoZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFNldERpcmVjdGl2ZS5odG1sIj5BU1RTZXREaXJlY3RpdmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlQ29uc3RhbnRzLmh0bWwjQkxPQ0siPjxCPkJMT0NLPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlQ29uc3RhbnRzLmh0bWwiPkRpcmVjdGl2ZUNvbnN0YW50czwvQT4KPEREPkJsb2NrIGRpcmVjdGl2ZSBpbmRpY2F0b3IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sI2Jvb2xlYW5NZXRob2QoYm9vbGVhbikiPjxCPmJvb2xlYW5NZXRob2QoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0Jvb2xlYW5Qcm9wZXJ0eUV4ZWN1dG9yLmh0bWwiPjxCPkJvb2xlYW5Qcm9wZXJ0eUV4ZWN1dG9yPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0Jvb2xlYW5Qcm9wZXJ0eUV4ZWN1dG9yLmh0bWwiPkJvb2xlYW5Qcm9wZXJ0eUV4ZWN1dG9yPC9BPi48REQ+SGFuZGxlcyBkaXNjb3ZlcnkgYW5kIHZhbHVhdGlvbiBvZiBhCiAgYm9vbGVhbiBvYmplY3QgcHJvcGVydHksIG9mIHRoZQogIGZvcm0gcHVibGljIGJvb2xlYW4gaXM8cHJvcGVydHk+IHdoZW4gZXhlY3V0ZWQuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Cb29sZWFuUHJvcGVydHlFeGVjdXRvci5odG1sI0Jvb2xlYW5Qcm9wZXJ0eUV4ZWN1dG9yKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lTG9nZ2VyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5JbnRyb3NwZWN0b3IsIGphdmEubGFuZy5DbGFzcywgamF2YS5sYW5nLlN0cmluZykiPjxCPkJvb2xlYW5Qcm9wZXJ0eUV4ZWN1dG9yKFJ1bnRpbWVMb2dnZXIsIEludHJvc3BlY3RvciwgQ2xhc3MsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Cb29sZWFuUHJvcGVydHlFeGVjdXRvci5odG1sIj5Cb29sZWFuUHJvcGVydHlFeGVjdXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL0Jvb2xPYmouaHRtbCI+PEI+Qm9vbE9iajwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9Cb29sT2JqLmh0bWwiPkJvb2xPYmo8L0E+LjxERD5zaW1wbGUgY2xhc3MgdG8gdGVzdCBib29sZWFuIHByb3BlcnR5CiAgaW50cm9zcGVjdGlvbiAtIGNhbid0IHVzZSBUZXN0UHJvdmlkZXIKICBhcyB0aGVyZSBpcyBhIGdldCggU3RyaW5nICkKICBhbmQgdGhhdCBjb21lcyBiZWZvcmUgaXNQcm9wZXJ0eQogIGluIHRoZSBzZWFyY2ggcGF0dGVybjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvQm9vbE9iai5odG1sI0Jvb2xPYmooKSI+PEI+Qm9vbE9iaigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvQm9vbE9iai5odG1sIj5Cb29sT2JqPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI2J1ZmNvbHVtbiI+PEI+YnVmY29sdW1uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjYnVmZmVyIj48Qj5idWZmZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI2J1ZmZlck92ZXJmbG93KCkiPjxCPmJ1ZmZlck92ZXJmbG93KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjYnVmZmVyU2l6ZSI+PEI+YnVmZmVyU2l6ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNidWZsaW5lIj48Qj5idWZsaW5lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjYnVmcG9zIj48Qj5idWZwb3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNidWZzaXplIj48Qj5idWZzaXplPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNidWlsZGVyIj48Qj5idWlsZGVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+PGNvZGU+PENPREU+U0FYQnVpbGRlcjwvQ09ERT48L2NvZGU+IGluc3RhbmNlIHRvIHVzZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwjYnl0ZU1ldGhvZChieXRlKSI+PEI+Ynl0ZU1ldGhvZChieXRlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjwvREw+CjxIUj4KPEEgTkFNRT0iX0NfIj48IS0tIC0tPjwvQT48SDI+CjxCPkM8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGVJbXBsLmh0bWwjY2FjaGUiPjxCPmNhY2hlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlSW1wbC5odG1sIj5SZXNvdXJjZUNhY2hlSW1wbDwvQT4KPEREPkNhY2hlIHN0b3JhZ2UsIGFzc3VtZWQgdG8gYmUgdGhyZWFkLXNhZmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI0NBQ0hFX01JU1MiPjxCPkNBQ0hFX01JU1M8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCI+Q2xhc3NNYXA8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3RvckJhc2UuaHRtbCNjYWNoZWRDbGFzc05hbWVzIj48Qj5jYWNoZWRDbGFzc05hbWVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yQmFzZS5odG1sIj5JbnRyb3NwZWN0b3JCYXNlPC9BPgo8REQ+SG9sZHMgdGhlIHF1YWxpZmllZCBjbGFzcyBuYW1lcyBmb3IgdGhlIGNsYXNzZXMKIHdlIGhvbGQgaW4gdGhlIGNsYXNzTWV0aG9kTWFwcyBoYXNoCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbnRyb3NwZWN0b3IuaHRtbCNDQUNIRURVTVBfTVNHIj48Qj5DQUNIRURVTVBfTVNHPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rvci5odG1sIj5JbnRyb3NwZWN0b3I8L0E+CjxERD5kZWZpbmUgYSBwdWJsaWMgc3RyaW5nIHNvIHRoYXQgaXQgY2FuIGJlIGxvb2tlZCBmb3IKICBpZiBpbnRlcmVzdGVkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNjYWxsZXJSZWZlcmVuY2UiPjxCPmNhbGxlclJlZmVyZW5jZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwiPlZNUHJveHlBcmc8L0E+CjxERD50aGUgcmVmZXJlbmNlIHdlIGFyZSBwcm94eWluZyBmb3IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI2NhbGxpbmdBcmdzIj48Qj5jYWxsaW5nQXJnczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI2NhbGxpbmdBcmdUeXBlcyI+PEI+Y2FsbGluZ0FyZ1R5cGVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCI+VmVsb2NpbWFjcm9Qcm94eTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sI2NhbkFkZFZlbG9jaW1hY3JvKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5jYW5BZGRWZWxvY2ltYWNybyhTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPgo8REQ+ZGV0ZXJtaW5lcyBpZiBhIGdpdmVuIG1hY3JvL25hbWVzcGFjZSAobmFtZSwgc291cmNlKSBjb21ibyBpcyBhbGxvd2VkCiAgdG8gYmUgYWRkZWQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sI2NhcGl0YWxpemVGaXJzdExldHRlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD4gCiBDYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgYnV0IGxlYXZlIHRoZSByZXN0IGFzIHRoZXkgYXJlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVENvbW1lbnQuaHRtbCNjYXJyIj48Qj5jYXJyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RDb21tZW50Lmh0bWwiPkFTVENvbW1lbnQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNjYiI+PEI+Y2I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sI2NoYXJhY3Rlck1ldGhvZChjaGFyKSI+PEI+Y2hhcmFjdGVyTWV0aG9kKGNoYXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UuTWV0aG9kUHJvdmlkZXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UuTWV0aG9kUHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sIj48Qj5DaGFyU3RyZWFtPC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCI+Q2hhclN0cmVhbTwvQT4uPEREPlRoaXMgaW50ZXJmYWNlIGRlc2NyaWJlcyBhIGNoYXJhY3RlciBzdHJlYW0gdGhhdCBtYWludGFpbnMgbGluZSBhbmQKIGNvbHVtbiBudW1iZXIgcG9zaXRpb25zIG9mIHRoZSBjaGFyYWN0ZXJzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvQ2hpbGQuaHRtbCI+PEI+Q2hpbGQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvQ2hpbGQuaHRtbCI+Q2hpbGQ8L0E+LjxERD5SdWRpbWVudGFyeSBjbGFzcyB1c2VkIGluIHRoZSB0ZXN0YmVkIHRvIHRlc3QKIGludHJvc3BlY3Rpb24gd2l0aCBzdWJjbGFzc2VzIG9mIGEgcGFydGljdWxhcgogY2xhc3MuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9DaGlsZC5odG1sI0NoaWxkKCkiPjxCPkNoaWxkKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9DaGlsZC5odG1sIj5DaGlsZDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNjaGlsZHJlbiI+PEI+Y2hpbGRyZW48L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNjaGlsZHJlbkFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmNoaWxkcmVuQWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2NoaWxkcmVuQWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Y2hpbGRyZW5BY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwiPk5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNjaG9vc2VDaGFyYWN0ZXJFbmNvZGluZyhqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+Y2hvb3NlQ2hhcmFjdGVyRW5jb2RpbmcoSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5DaG9vc2VzIHRoZSBvdXRwdXQgY2hhcmFjdGVyIGVuY29kaW5nIHRvIGJlIHVzZWQgYXMgdGhlIHZhbHVlCiBmb3IgdGhlICJjaGFyc2V0PSIgcG9ydGlvbiBvZiB0aGUgSFRUUCBDb250ZW50LVR5cGUgaGVhZGVyIChhbmQKIHRodXMgcmV0dXJuZWQgYnkgPGNvZGU+cmVzcG9uc2UuZ2V0Q2hhcmFjdGVyRW5jb2RpbmcoKTwvY29kZT4pLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2Nob3AoamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+Y2hvcChTdHJpbmcsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Q2hvcCBpIGNoYXJhY3RlcnMgb2ZmIHRoZSBlbmQgb2YgYSBzdHJpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNjaG9wKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPmNob3AoU3RyaW5nLCBpbnQpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwiPlN0cmluZ1V0aWxzPC9BPgo8REQ+Q2hvcCBpIGNoYXJhY3RlcnMgb2ZmIHRoZSBlbmQgb2YgYSBzdHJpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNjaG9wKGphdmEubGFuZy5TdHJpbmcsIGludCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmNob3AoU3RyaW5nLCBpbnQsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5DaG9wIGkgY2hhcmFjdGVycyBvZmYgdGhlIGVuZCBvZiBhIHN0cmluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sI2NsYXNzSGFzaCI+PEI+Y2xhc3NIYXNoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwiPkZpZWxkTWV0aG9kaXplcjwvQT4KPEREPkhvbGQgdGhlIGNsYXNzIG9iamVjdHMgYnkgZmllbGQgbmFtZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzbG9hZGVyQ2hhbmdlVGVzdC5odG1sIj48Qj5DbGFzc2xvYWRlckNoYW5nZVRlc3Q8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3Nsb2FkZXJDaGFuZ2VUZXN0Lmh0bWwiPkNsYXNzbG9hZGVyQ2hhbmdlVGVzdDwvQT4uPEREPlRlc3RzIGlmIHdlIGNhbiBoYW5kIFZlbG9jaXR5IGFuIGFyYml0cmFyeSBjbGFzcyBmb3IgbG9nZ2luZy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzbG9hZGVyQ2hhbmdlVGVzdC5odG1sI0NsYXNzbG9hZGVyQ2hhbmdlVGVzdCgpIj48Qj5DbGFzc2xvYWRlckNoYW5nZVRlc3QoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzbG9hZGVyQ2hhbmdlVGVzdC5odG1sIj5DbGFzc2xvYWRlckNoYW5nZVRlc3Q8L0E+CjxERD5EZWZhdWx0IGNvbnN0cnVjdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCI+PEI+Q2xhc3NNYXA8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwiPkNsYXNzTWFwPC9BPi48REQ+QSBjYWNoZSBvZiBpbnRyb3NwZWN0aW9uIGluZm9ybWF0aW9uIGZvciBhIHNwZWNpZmljIGNsYXNzIGluc3RhbmNlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5DYWNoZU1pc3MuaHRtbCI+PEI+Q2xhc3NNYXAuQ2FjaGVNaXNzPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5DYWNoZU1pc3MuaHRtbCI+Q2xhc3NNYXAuQ2FjaGVNaXNzPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLkNhY2hlTWlzcy5odG1sI0NsYXNzTWFwLkNhY2hlTWlzcygpIj48Qj5DbGFzc01hcC5DYWNoZU1pc3MoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5DYWNoZU1pc3MuaHRtbCI+Q2xhc3NNYXAuQ2FjaGVNaXNzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5NZXRob2RJbmZvLmh0bWwiPjxCPkNsYXNzTWFwLk1ldGhvZEluZm88L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCI+Q2xhc3NNYXAuTWV0aG9kSW5mbzwvQT4uPEREPlVzZWQgZm9yIHRoZSBpdGVyYXRpdmUgZGlzY292ZXJ5IHByb2Nlc3MgZm9yIHB1YmxpYyBtZXRob2RzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5NZXRob2RJbmZvLmh0bWwjQ2xhc3NNYXAuTWV0aG9kSW5mbyhqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QpIj48Qj5DbGFzc01hcC5NZXRob2RJbmZvKE1ldGhvZCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuTWV0aG9kSW5mby5odG1sIj5DbGFzc01hcC5NZXRob2RJbmZvPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI0NsYXNzTWFwKCkiPjxCPkNsYXNzTWFwKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCI+Q2xhc3NNYXA8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwjQ2xhc3NNYXAoamF2YS5sYW5nLkNsYXNzKSI+PEI+Q2xhc3NNYXAoQ2xhc3MpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwiPkNsYXNzTWFwPC9BPgo8REQ+U3RhbmRhcmQgY29uc3RydWN0b3IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3RvckJhc2UuaHRtbCNjbGFzc01ldGhvZE1hcHMiPjxCPmNsYXNzTWV0aG9kTWFwczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3RvckJhc2UuaHRtbCI+SW50cm9zcGVjdG9yQmFzZTwvQT4KPEREPkhvbGRzIHRoZSBtZXRob2QgbWFwcyBmb3IgdGhlIGNsYXNzZXMgd2Uga25vdyBhYm91dCwga2V5ZWQgYnkKIENsYXNzIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCNjbGFzc05hbWUiPjxCPmNsYXNzTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sIj5SZXNvdXJjZUxvYWRlcjwvQT4KPEREPkNsYXNzIG5hbWUgZm9yIHRoaXMgbG9hZGVyLCBmb3IgbG9nZ2luZy9kZWJ1Z2dpbgogcHVycG9zZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0NsYXNzcGF0aFJlc291cmNlTG9hZGVyLmh0bWwiPjxCPkNsYXNzcGF0aFJlc291cmNlTG9hZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvQ2xhc3NwYXRoUmVzb3VyY2VMb2FkZXIuaHRtbCI+Q2xhc3NwYXRoUmVzb3VyY2VMb2FkZXI8L0E+LjxERD5DbGFzc3BhdGhSZXNvdXJjZUxvYWRlciBpcyBhIHNpbXBsZSBsb2FkZXIgdGhhdCB3aWxsIGxvYWQKICB0ZW1wbGF0ZXMgZnJvbSB0aGUgY2xhc3NwYXRoLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0NsYXNzcGF0aFJlc291cmNlTG9hZGVyLmh0bWwjQ2xhc3NwYXRoUmVzb3VyY2VMb2FkZXIoKSI+PEI+Q2xhc3NwYXRoUmVzb3VyY2VMb2FkZXIoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvQ2xhc3NwYXRoUmVzb3VyY2VMb2FkZXIuaHRtbCI+Q2xhc3NwYXRoUmVzb3VyY2VMb2FkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc3BhdGhSZXNvdXJjZVRlc3QuaHRtbCI+PEI+Q2xhc3NwYXRoUmVzb3VyY2VUZXN0PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sIj5DbGFzc3BhdGhSZXNvdXJjZVRlc3Q8L0E+LjxERD5Mb2FkIHRlbXBsYXRlcyBmcm9tIHRoZSBDbGFzc3BhdGguPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc3BhdGhSZXNvdXJjZVRlc3QuaHRtbCNDbGFzc3BhdGhSZXNvdXJjZVRlc3QoKSI+PEI+Q2xhc3NwYXRoUmVzb3VyY2VUZXN0KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc3BhdGhSZXNvdXJjZVRlc3QuaHRtbCI+Q2xhc3NwYXRoUmVzb3VyY2VUZXN0PC9BPgo8REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwjY2xhenoiPjxCPmNsYXp6PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCI+Q2xhc3NNYXA8L0E+CjxERD5DbGFzcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3IgdXNlZCB0byBhcwogdGhlIGJhc2lzIGZvciB0aGUgTWV0aG9kIG1hcC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI2NsZWFudXAoKSI+PEI+Y2xlYW51cCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uYW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sIj5UZXhlblRhc2s8L0E+CjxERD5BIGhvb2sgbWV0aG9kIGNhbGxlZCBhdCB0aGUgZW5kIG9mIDxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI2V4ZWN1dGUoKSI+PENPREU+VGV4ZW5UYXNrLmV4ZWN1dGUoKTwvQ09ERT48L0E+IHdoaWNoIGNhbgogYmUgb3ZlcnJpZGRlbiB0byBwZXJmb3JtIGFueSBuZWNlc3NhcnkgY2xlYW51cCBhY3Rpdml0aWVzIChzdWNoCiBhcyB0aGUgcmVsZWFzZSBvZiBkYXRhYmFzZSBjb25uZWN0aW9ucywgZXRjLikuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2NsZWFyKCkiPjxCPmNsZWFyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNjbGVhcigpIj48Qj5jbGVhcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPkRpc2NhcmQgdGhlIG91dHB1dCBidWZmZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbnRyb3NwZWN0b3JCYXNlLmh0bWwjY2xlYXJDYWNoZSgpIj48Qj5jbGVhckNhY2hlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yQmFzZS5odG1sIj5JbnRyb3NwZWN0b3JCYXNlPC9BPgo8REQ+Q2xlYXJzIHRoZSBjbGFzc21hcCBhbmQgY2xhc3NuYW1lCiBjYWNoZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rvci5odG1sI2NsZWFyQ2FjaGUoKSI+PEI+Y2xlYXJDYWNoZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rvci5odG1sIj5JbnRyb3NwZWN0b3I8L0E+CjxERD5DbGVhcnMgdGhlIGNsYXNzbWFwIGFuZCBjbGFzc25hbWUKIGNhY2hlcywgYW5kIGxvZ3MgdGhhdCB3ZSBkaWQgc28KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCNjbGVhck5vZGVTY29wZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPmNsZWFyTm9kZVNjb3BlKE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sIj5KSlRQYXJzZXJTdGF0ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCNjbGVhclByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5jbGVhclByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5DbGVhciBhIFZlbG9jaXR5IFJ1bnRpbWUgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2NsZWFyUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPmNsZWFyUHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5DbGVhciBhIFZlbG9jaXR5IFJ1bnRpbWUgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjY2xlYXJQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Y2xlYXJQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkNsZWFyIHRoZSB2YWx1ZXMgcGVydGFpbmluZyB0byBhIHBhcnRpY3VsYXIKIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCNjbGVhclByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5jbGVhclByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q2xlYXIgdGhlIHZhbHVlcyBwZXJ0YWluaW5nIHRvIGEgcGFydGljdWxhcgogcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2NsZWFyUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPmNsZWFyUHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5DbGVhciB0aGUgdmFsdWVzIHBlcnRhaW5pbmcgdG8gYSBwYXJ0aWN1bGFyCiBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNjbGVhclByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5jbGVhclByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkNsZWFyIHRoZSB2YWx1ZXMgcGVydGFpbmluZyB0byBhIHBhcnRpY3VsYXIKIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2NsZWFyUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPmNsZWFyUHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDbGVhciBhIHByb3BlcnR5IGluIHRoZSBjb25maWd1cmF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNjbGVhclN0YXRlVmFycygpIj48Qj5jbGVhclN0YXRlVmFycygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Q2xlYXJzIGFsbCBzdGF0ZSB2YXJpYWJsZXMsIHJlc2V0cyB0bwogIHN0YXJ0IHZhbHVlcywgY2xlYXJzIHN0YXRlU3RhY2suCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1ZlbG9jaXR5Q29udGV4dC5odG1sI2Nsb25lKCkiPjxCPmNsb25lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1ZlbG9jaXR5Q29udGV4dC5odG1sIj5WZWxvY2l0eUNvbnRleHQ8L0E+CjxERD5DbG9uZXMgdGhpcyBjb250ZXh0IG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjY2xvbmUoKSI+PEI+Y2xvbmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPlJldHVybnMgYSBOb2RlTGlzdCB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIG5vZGVzIGFzIHRoaXMgbm9kZSBsaXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNjbG9uZU5vZGVzKCkiPjxCPmNsb25lTm9kZXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI2Nsb3NlKCkiPjxCPmNsb3NlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+Q2xvc2UgdGhlIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFySG9sZGVyLmh0bWwjY2xvc2UoKSI+PEI+Y2xvc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFySG9sZGVyLmh0bWwiPkphckhvbGRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCNjbG9zZURiQ29ubmVjdGlvbihqYXZhLnNxbC5Db25uZWN0aW9uKSI+PEI+Y2xvc2VEYkNvbm5lY3Rpb24oQ29ubmVjdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sIj5EYXRhU291cmNlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5DbG9zZXMgY29ubmVjdGlvbiB0byB0aGUgZGF0YXNvdXJjZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sI2Nsb3NlSmFyKGphdmEubGFuZy5TdHJpbmcpIj48Qj5jbG9zZUphcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sIj5KYXJSZXNvdXJjZUxvYWRlcjwvQT4KPEREPkNsb3NlcyBhIEphciBmaWxlIGFuZCBzZXQgaXRzIFVSTENvbm5lY3Rpb24gCiB0byBudWxsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sI2Nsb3NlTm9kZVNjb3BlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5Ob2RlLCBib29sZWFuKSI+PEI+Y2xvc2VOb2RlU2NvcGUoTm9kZSwgYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjY2xvc2VOb2RlU2NvcGUob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUsIGludCkiPjxCPmNsb3NlTm9kZVNjb3BlKE5vZGUsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlMb2FkZXJUZXN0Q2FzZS5odG1sI0NNUF9GSUxFX0VYVCI+PEI+Q01QX0ZJTEVfRVhUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlMb2FkZXJUZXN0Q2FzZS5odG1sIj5NdWx0aUxvYWRlclRlc3RDYXNlPC9BPgo8REQ+Q29tcGFyaXNvbiBmaWxlIGV4dGVuc2lvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwjQ01QX0ZJTEVfRVhUIj48Qj5DTVBfRklMRV9FWFQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwiPk11bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3Q8L0E+CjxERD5Db21wYXJpc29uIGZpbGUgZXh0ZW5zaW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdEJhc2UuaHRtbCNDTVBfRklMRV9FWFQiPjxCPkNNUF9GSUxFX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RCYXNlLmh0bWwiPlRlbXBsYXRlVGVzdEJhc2U8L0E+CjxERD5Db21wYXJpc29uIGZpbGUgZXh0ZW5zaW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sI0NNUF9GSUxFX0VYVCI+PEI+Q01QX0ZJTEVfRVhUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3NwYXRoUmVzb3VyY2VUZXN0Lmh0bWwiPkNsYXNzcGF0aFJlc291cmNlVGVzdDwvQT4KPEREPkNvbXBhcmlzb24gZmlsZSBleHRlbnNpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNjb2xsYXBzZU5ld2xpbmVzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5jb2xsYXBzZU5ld2xpbmVzKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5SZW1vdmUvY29sbGFwc2UgbXVsdGlwbGUgbmV3bGluZSBjaGFyYWN0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjY29sbGFwc2VTcGFjZXMoamF2YS5sYW5nLlN0cmluZykiPjxCPmNvbGxhcHNlU3BhY2VzKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5SZW1vdmUvY29sbGFwc2UgbXVsdGlwbGUgc3BhY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCNjb2x1bW4iPjxCPmNvbHVtbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCI+RGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI2NvbHVtbiI+PEI+Y29sdW1uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0luZm8uaHRtbCNjb2x1bW4iPjxCPmNvbHVtbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0luZm8uaHRtbCI+SW5mbzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2NvbWJpbmUob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbikiPjxCPmNvbWJpbmUoQ29uZmlndXJhdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29tYmluZXMgYW4gZXhpc3RpbmcgSGFzaHRhYmxlIHdpdGggdGhpcyBIYXNodGFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0NPTU1BIj48Qj5DT01NQTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjQ29tbWVudCgpIj48Qj5Db21tZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCNjb21tb25Jbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMsIG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5FeHRlbmRlZFByb3BlcnRpZXMpIj48Qj5jb21tb25Jbml0KFJ1bnRpbWVTZXJ2aWNlcywgRXh0ZW5kZWRQcm9wZXJ0aWVzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCI+UmVzb3VyY2VMb2FkZXI8L0E+CjxERD5UaGlzIGluaXRpYWxpemF0aW9uIGlzIHVzZWQgYnkgYWxsIHJlc291cmNlCiBsb2FkZXJzIGFuZCBtdXN0IGJlIGNhbGxlZCB0byBzZXQgdXAgY29tbW9uCiBwcm9wZXJ0aWVzIHNoYXJlZCBieSBhbGwgcmVzb3VyY2UgbG9hZGVycwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbW1vbnNFeHRQcm9wVGVzdENhc2UuaHRtbCI+PEI+Q29tbW9uc0V4dFByb3BUZXN0Q2FzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwiPkNvbW1vbnNFeHRQcm9wVGVzdENhc2U8L0E+LjxERD5UZXN0cyBmb3IgdGhlIENvbW1vbnMgRXh0ZW5kZWRQcm9wZXJ0aWVzIGNsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29tbW9uc0V4dFByb3BUZXN0Q2FzZS5odG1sI0NvbW1vbnNFeHRQcm9wVGVzdENhc2UoKSI+PEI+Q29tbW9uc0V4dFByb3BUZXN0Q2FzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29tbW9uc0V4dFByb3BUZXN0Q2FzZS5odG1sIj5Db21tb25zRXh0UHJvcFRlc3RDYXNlPC9BPgo8REQ+Q3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db25maWd1cmF0aW9uVGVzdENhc2UuaHRtbCNDT01QQVJFX0RJUiI+PEI+Q09NUEFSRV9ESVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db25maWd1cmF0aW9uVGVzdENhc2UuaHRtbCI+Q29uZmlndXJhdGlvblRlc3RDYXNlPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29tcGFyaXNvbiBkaXJlY3RvcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlMb2FkZXJUZXN0Q2FzZS5odG1sI0NPTVBBUkVfRElSIj48Qj5DT01QQVJFX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpTG9hZGVyVGVzdENhc2UuaHRtbCI+TXVsdGlMb2FkZXJUZXN0Q2FzZTwvQT4KPEREPlJlc3VsdHMgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwjQ09NUEFSRV9ESVIiPjxCPkNPTVBBUkVfRElSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sIj5NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0PC9BPgo8REQ+UmVzdWx0cyByZWxhdGl2ZSB0byB0aGUgYnVpbGQgZGlyZWN0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0FuYWtpYVRlc3RDYXNlLmh0bWwjQ09NUEFSRV9ESVIiPjxCPkNPTVBBUkVfRElSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQW5ha2lhVGVzdENhc2UuaHRtbCI+QW5ha2lhVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlbkNsYXNzcGF0aFRlc3RDYXNlLmh0bWwjQ09NUEFSRV9ESVIiPjxCPkNPTVBBUkVfRElSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5DbGFzc3BhdGhUZXN0Q2FzZS5odG1sIj5UZXhlbkNsYXNzcGF0aFRlc3RDYXNlPC9BPgo8REQ+RGlyZWN0b3J5IHdoZXJlIGNvbXBhcmlzb24gb3V0cHV0IGlzIHN0b3JlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwjQ09NUEFSRV9ESVIiPjxCPkNPTVBBUkVfRElSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29tbW9uc0V4dFByb3BUZXN0Q2FzZS5odG1sIj5Db21tb25zRXh0UHJvcFRlc3RDYXNlPC9BPgo8REQ+Q29tcGFyaXNvbiBkaXJlY3RvcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0QmFzZS5odG1sI0NPTVBBUkVfRElSIj48Qj5DT01QQVJFX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RCYXNlLmh0bWwiPlRlbXBsYXRlVGVzdEJhc2U8L0E+CjxERD5SZXN1bHRzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5UZXN0Q2FzZS5odG1sI0NPTVBBUkVfRElSIj48Qj5DT01QQVJFX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuVGVzdENhc2UuaHRtbCI+VGV4ZW5UZXN0Q2FzZTwvQT4KPEREPkRpcmVjdG9yeSB3aGVyZSBjb21wYXJpc29uIG91dHB1dCBpcyBzdG9yZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3NwYXRoUmVzb3VyY2VUZXN0Lmh0bWwjQ09NUEFSRV9ESVIiPjxCPkNPTVBBUkVfRElSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3NwYXRoUmVzb3VyY2VUZXN0Lmh0bWwiPkNsYXNzcGF0aFJlc291cmNlVGVzdDwvQT4KPEREPlJlc3VsdHMgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwjY29tcGFyZTEiPjxCPmNvbXBhcmUxPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwiPlZlbG9jaXR5QXBwVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb21waWxlci9Db21waWxlci5odG1sIj48Qj5Db21waWxlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbXBpbGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb21waWxlci9Db21waWxlci5odG1sIj5Db21waWxlcjwvQT4uPEREPlRoZSBzdGFydCBvZiBhIHZlbG9jaXR5IHRlbXBsYXRlIGNvbXBpbGVyLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29tcGlsZXIvQ29tcGlsZXIuaHRtbCNDb21waWxlcigpIj48Qj5Db21waWxlcigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb21waWxlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29tcGlsZXIvQ29tcGlsZXIuaHRtbCI+Q29tcGlsZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNjb21wdXRhYmxlUmVmZXJlbmNlIj48Qj5jb21wdXRhYmxlUmVmZXJlbmNlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjY29uY2F0KGphdmEudXRpbC5MaXN0KSI+PEI+Y29uY2F0KExpc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjY29uY2F0KGphdmEudXRpbC5MaXN0KSI+PEI+Y29uY2F0KExpc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5Db25jYXRlbmF0ZXMgYSBsaXN0IG9mIG9iamVjdHMgYXMgYSBTdHJpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjY29uY2F0KGphdmEubGFuZy5PYmplY3RbXSkiPjxCPmNvbmNhdChPYmplY3RbXSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjY29uY2F0KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5jb25jYXQoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNDb25kaXRpb25hbEFuZEV4cHJlc3Npb24oKSI+PEI+Q29uZGl0aW9uYWxBbmRFeHByZXNzaW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjQ29uZGl0aW9uYWxPckV4cHJlc3Npb24oKSI+PEI+Q29uZGl0aW9uYWxPckV4cHJlc3Npb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2NvbmZpZ3VyYXRpb24iPjxCPmNvbmZpZ3VyYXRpb248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5PYmplY3QgdGhhdCBob3VzZXMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IKIHRoZSB2ZWxvY2l0eSBydW50aW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj48Qj5Db25maWd1cmF0aW9uPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+LjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiB2ZXJzaW9uIDEuMSwgcGxlYXNlIHVzZSBFeHRlbmRlZFByb3BlcnRpZXMgZnJvbQogdGhlIEpha2FydGEgQ29tbW9ucyBDb2xsZWN0aW9ucyBjb21wb25lbnQuPC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNSZWFkZXIuaHRtbCI+PEI+Q29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzUmVhZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNSZWFkZXIuaHRtbCI+Q29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzUmVhZGVyPC9BPi48REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGhpcyBjbGFzcyBpcyB1c2VkIHRvIHJlYWQgcHJvcGVydGllcyBsaW5lcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzUmVhZGVyLmh0bWwjQ29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzUmVhZGVyKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb24sIGphdmEuaW8uUmVhZGVyKSI+PEI+Q29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzUmVhZGVyKENvbmZpZ3VyYXRpb24sIFJlYWRlcik8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzUmVhZGVyLmh0bWwiPkNvbmZpZ3VyYXRpb24uUHJvcGVydGllc1JlYWRlcjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnN0cnVjdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzVG9rZW5pemVyLmh0bWwiPjxCPkNvbmZpZ3VyYXRpb24uUHJvcGVydGllc1Rva2VuaXplcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzVG9rZW5pemVyLmh0bWwiPkNvbmZpZ3VyYXRpb24uUHJvcGVydGllc1Rva2VuaXplcjwvQT4uPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoaXMgY2xhc3MgZGl2aWRlcyBpbnRvIHRva2VucyBhIHByb3BlcnR5IHZhbHVlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXIuaHRtbCNDb25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbiwgamF2YS5sYW5nLlN0cmluZykiPjxCPkNvbmZpZ3VyYXRpb24uUHJvcGVydGllc1Rva2VuaXplcihDb25maWd1cmF0aW9uLCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uUHJvcGVydGllc1Rva2VuaXplci5odG1sIj5Db25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXI8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNDb25maWd1cmF0aW9uKCkiPjxCPkNvbmZpZ3VyYXRpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDcmVhdGVzIGFuIGVtcHR5IGV4dGVuZGVkIHByb3BlcnRpZXMgb2JqZWN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI0NvbmZpZ3VyYXRpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPkNvbmZpZ3VyYXRpb24oU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDcmVhdGVzIGFuZCBsb2FkcyB0aGUgZXh0ZW5kZWQgcHJvcGVydGllcyBmcm9tIHRoZSBzcGVjaWZpZWQKIGZpbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjQ29uZmlndXJhdGlvbihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Q29uZmlndXJhdGlvbihTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q3JlYXRlcyBhbmQgbG9hZHMgdGhlIGV4dGVuZGVkIHByb3BlcnRpZXMgZnJvbSB0aGUgc3BlY2lmaWVkCiBmaWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sIj48Qj5Db25maWd1cmF0aW9uVGVzdENhc2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29uZmlndXJhdGlvblRlc3RDYXNlLmh0bWwiPkNvbmZpZ3VyYXRpb25UZXN0Q2FzZTwvQT4uPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPldpbGwgYmUgcmVtb3ZlZCB3aGVuIENvbmZpZ3VyYXRpb24gY2xhc3MgaXMgcmVtb3ZlZDwvST48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sI0NvbmZpZ3VyYXRpb25UZXN0Q2FzZSgpIj48Qj5Db25maWd1cmF0aW9uVGVzdENhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sIj5Db25maWd1cmF0aW9uVGVzdENhc2U8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDcmVhdGVzIGEgbmV3IGluc3RhbmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sI2NvbmZpZ3VyZUVtYWlsKCkiPjxCPmNvbmZpZ3VyZUVtYWlsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwiPkxvZzRKTG9nU3lzdGVtPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29uZmlndXJlcyB0aGUgbG9nZ2luZyB0byBlbWFpbAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sI2NvbmZpZ3VyZUZpbGUoKSI+PEI+Y29uZmlndXJlRmlsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sIj5Mb2c0SkxvZ1N5c3RlbTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbmZpZ3VyZXMgdGhlIGxvZ2dpbmcgdG8gYSBmaWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sI2NvbmZpZ3VyZVJlbW90ZSgpIj48Qj5jb25maWd1cmVSZW1vdGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCI+TG9nNEpMb2dTeXN0ZW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb25maWd1cmVzIHRoZSBsb2dnaW5nIHRvIGEgcmVtb3RlIHNlcnZlcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sI2NvbmZpZ3VyZVN5c2xvZygpIj48Qj5jb25maWd1cmVTeXNsb2coKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCI+TG9nNEpMb2dTeXN0ZW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb25maWd1cmVzIHRoZSBsb2dnaW5nIHRvIHN5c2xvZ2QKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFySG9sZGVyLmh0bWwjY29ubiI+PEI+Y29ubjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJIb2xkZXIuaHRtbCI+SmFySG9sZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNjb25zdGFudCI+PEI+Y29uc3RhbnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+YnkgZGVmYXVsdCwgd2UgYXJlIGR5bmFtaWMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2NvbnRhaW5zKGphdmEubGFuZy5PYmplY3QpIj48Qj5jb250YWlucyhPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2NvbnRhaW5zQWxsKGphdmEudXRpbC5Db2xsZWN0aW9uKSI+PEI+Y29udGFpbnNBbGwoQ29sbGVjdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjY29udGFpbnNIZWFkZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPmNvbnRhaW5zSGVhZGVyKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCNjb250YWluc0tleShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Y29udGFpbnNLZXkoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sIj5BYnN0cmFjdENvbnRleHQ8L0E+CjxERD5JbmRpY2F0ZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGtleSBpcyBpbiB0aGUgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI2NvbnRhaW5zS2V5KGphdmEubGFuZy5PYmplY3QpIj48Qj5jb250YWluc0tleShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9Db250ZXh0Lmh0bWwjY29udGFpbnNLZXkoamF2YS5sYW5nLk9iamVjdCkiPjxCPmNvbnRhaW5zS2V5KE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQ29udGV4dC5odG1sIj5Db250ZXh0PC9BPgo8REQ+SW5kaWNhdGVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBrZXkgaXMgaW4gdGhlIGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjY29udGFpbnNLZXkoamF2YS5sYW5nLk9iamVjdCkiPjxCPmNvbnRhaW5zS2V5KE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+bm90IHlldCBpbXBsCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjQ09OVEVOVF9UWVBFIj48Qj5DT05URU5UX1RZUEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+VGhlIEhUVFAgY29udGVudCB0eXBlIGNvbnRleHQga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL0NvbnRlbnRSZXNvdXJjZS5odG1sIj48Qj5Db250ZW50UmVzb3VyY2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvQ29udGVudFJlc291cmNlLmh0bWwiPkNvbnRlbnRSZXNvdXJjZTwvQT4uPEREPlRoaXMgY2xhc3MgcmVwcmVzZW50IGEgZ2VuZXJhbCB0ZXh0IHJlc291cmNlIHRoYXQgbWF5IGhhdmUgYmVlbgogcmV0cmlldmVkIGZyb20gYW55IG51bWJlciBvZiBwb3NzaWJsZSBzb3VyY2VzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvQ29udGVudFJlc291cmNlLmh0bWwjQ29udGVudFJlc291cmNlKCkiPjxCPkNvbnRlbnRSZXNvdXJjZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvQ29udGVudFJlc291cmNlLmh0bWwiPkNvbnRlbnRSZXNvdXJjZTwvQT4KPEREPkRlZmF1bHQgZW1wdHkgY29uc3RydWN0b3IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwjY29udGV4dCI+PEI+Y29udGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCI+VmVsb2NpdHlDb250ZXh0PC9BPgo8REQ+U3RvcmFnZSBmb3Iga2V5L3ZhbHVlIHBhaXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCNjb250ZXh0Ij48Qj5jb250ZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI2NvbnRleHQiPjxCPmNvbnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwiPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsPC9BPgo8REQ+dGhlIHVzZXIgZGF0YSBDb250ZXh0IHRoYXQgd2UgYXJlIHdyYXBwaW5nCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI2NvbnRleHQiPjxCPmNvbnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPkNvbnRleHQgdXNlZCBkdXJpbmcgdHJhdmVyc2FsCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sI2NvbnRleHQiPjxCPmNvbnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCI+VGVtcGxhdGVUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0NvbnRleHQuaHRtbCI+PEI+Q29udGV4dDwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQ29udGV4dC5odG1sIj5Db250ZXh0PC9BPi48REQ+SW50ZXJmYWNlIGRlc2NyaWJpbmcgdGhlIGFwcGxpY2F0aW9uIGRhdGEgY29udGV4dC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCNjb250ZXh0MSI+PEI+Y29udGV4dDE8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCI+VGVtcGxhdGVUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCNjb250ZXh0MiI+PEI+Y29udGV4dDI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCI+VGVtcGxhdGVUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdGlvbkNhY2hlRGF0YS5odG1sI2NvbnRleHREYXRhIj48Qj5jb250ZXh0RGF0YTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rpb25DYWNoZURhdGEuaHRtbCI+SW50cm9zcGVjdGlvbkNhY2hlRGF0YTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjY29udGV4dFByb3BlcnRpZXMiPjxCPmNvbnRleHRQcm9wZXJ0aWVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPgogVGhlc2UgYXJlIHByb3BlcnRpZXMgdGhhdCBhcmUgZmVkIGludG8gdGhlCiBpbml0aWFsIGNvbnRleHQgZnJvbSBhIHByb3BlcnRpZXMgZmlsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI2NvbnRleHRSZWZlcmVuY2UiPjxCPmNvbnRleHRSZWZlcmVuY2U8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+b3VyIGlkZW50aXR5IGluIHRoZSBjdXJyZW50IGNvbnRleHQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db250ZXh0U2FmZXR5VGVzdENhc2UuaHRtbCI+PEI+Q29udGV4dFNhZmV0eVRlc3RDYXNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbnRleHRTYWZldHlUZXN0Q2FzZS5odG1sIj5Db250ZXh0U2FmZXR5VGVzdENhc2U8L0E+LjxERD5UZXN0cyBpZiB3ZSBhcmUgY29udGV4dCBzYWZlIDogY2FuIHdlIHN3aXRjaCBvYmplY3RzIGluIHRoZSBjb250ZXh0CiBhbmQgcmUtbWVyZ2UgdGhlIHRlbXBsYXRlIHNhZmVseS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbnRleHRTYWZldHlUZXN0Q2FzZS5odG1sI0NvbnRleHRTYWZldHlUZXN0Q2FzZSgpIj48Qj5Db250ZXh0U2FmZXR5VGVzdENhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbnRleHRTYWZldHlUZXN0Q2FzZS5odG1sIj5Db250ZXh0U2FmZXR5VGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjY29udHJvbENvbnRleHQiPjxCPmNvbnRyb2xDb250ZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5Db250ZXh0IHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIHRleGVuIG91dHB1dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI2NvbnRyb2xUZW1wbGF0ZSI+PEI+Y29udHJvbFRlbXBsYXRlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPlRoaXMgaXMgdGhlIGNvbnRyb2wgdGVtcGxhdGUgdGhhdCBnb3Zlcm5zIHRoZSBvdXRwdXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCNjb252ZXJ0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5jb252ZXJ0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb252ZXJ0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sIj5XZWJNYWNybzwvQT4KPEREPkl0ZXJhdGUgdGhyb3VnaCB0aGUgc2V0IG9mIGZpbmQvcmVwbGFjZSByZWdleGVzCiB0aGF0IHdpbGwgY29udmVydCBhIGdpdmVuIFdNIHRlbXBsYXRlIHRvIGEgVk0gdGVtcGxhdGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sI2NvbnZlcnROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5jb252ZXJ0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udmVydC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCI+V2ViTWFjcm88L0E+CjxERD5TaW1wbGUgZXh0ZW5zaW9uIGNvbnZlcnNpb24gb2YgLndtIHRvIC52bQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2NvbnZlcnRQcm9wZXJ0aWVzKGphdmEudXRpbC5Qcm9wZXJ0aWVzKSI+PEI+Y29udmVydFByb3BlcnRpZXMoUHJvcGVydGllcyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnZlcnQgYSBzdGFuZGFyZCBwcm9wZXJ0aWVzIGNsYXNzIGludG8gYSBjb25maWd1cmF0aW9uCiBjbGFzcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sI2NvbnZlcnRUZW1wbGF0ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Y29udmVydFRlbXBsYXRlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb252ZXJ0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sIj5XZWJNYWNybzwvQT4KPEREPkFwcGx5IGZpbmQvcmVwbGFjZSByZWdleGVzIHRvIG91ciBXTSB0ZW1wbGF0ZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNDT1VOVEVSX0lOSVRJQUxfVkFMVUUiPjxCPkNPVU5URVJfSU5JVElBTF9WQUxVRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5Jbml0aWFsIGNvdW50ZXIgdmFsdWUgaW4gI2ZvcmVhY2ggZGlyZWN0aXZlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjQ09VTlRFUl9OQU1FIj48Qj5DT1VOVEVSX05BTUU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+SW5pdGlhbCBjb3VudGVyIHZhbHVlIGluICNmb3JlYWNoIGRpcmVjdGl2ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0ZvcmVhY2guaHRtbCNjb3VudGVySW5pdGlhbFZhbHVlIj48Qj5jb3VudGVySW5pdGlhbFZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0ZvcmVhY2guaHRtbCI+Rm9yZWFjaDwvQT4KPEREPldoYXQgdmFsdWUgdG8gc3RhcnQgdGhlIGxvb3AgY291bnRlciBhdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRm9yZWFjaC5odG1sI2NvdW50ZXJOYW1lIj48Qj5jb3VudGVyTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwiPkZvcmVhY2g8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gdXNlIHdoZW4gcGxhY2luZwogdGhlIGNvdW50ZXIgdmFsdWUgaW50byB0aGUgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3RvckJhc2UuaHRtbCNjcmVhdGVDbGFzc01hcChqYXZhLmxhbmcuQ2xhc3MpIj48Qj5jcmVhdGVDbGFzc01hcChDbGFzcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yQmFzZS5odG1sIj5JbnRyb3NwZWN0b3JCYXNlPC9BPgo8REQ+Q3JlYXRlcyBhIGNsYXNzIG1hcCBmb3Igc3BlY2lmaWMgY2xhc3MgYW5kIHJlZ2lzdGVycyBpdCBpbiB0aGUKIGNhY2hlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sI2NyZWF0ZUNvbnRleHQoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5jcmVhdGVDb250ZXh0KEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+UmV0dXJucyBhIGNvbnRleHQgc3VpdGFibGUgdG8gcGFzcyB0byB0aGUgaGFuZGxlUmVxdWVzdCgpIG1ldGhvZAogIDxicj48YnI+CiAgRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGNyZWF0ZSBhIFZlbG9jaXR5Q29udGV4dCBvYmplY3QsCiAgIHB1dCB0aGUgSHR0cFNlcnZsZXRSZXF1ZXN0IGFuZCBIdHRwU2VydmxldFJlc3BvbnNlCiAgaW50byB0aGUgY29udGV4dCBhY2Nlc3NhYmxlIHZpYSB0aGUga2V5cyBWZWxvY2l0eVNlcnZsZXQuUkVRVUVTVCBhbmQKICBWZWxvY2l0eVNlcnZsZXQuUkVTUE9OU0UsIHJlc3BlY3RpdmVseS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nTWFuYWdlci5odG1sI2NyZWF0ZUxvZ1N5c3RlbShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+Y3JlYXRlTG9nU3lzdGVtKFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dNYW5hZ2VyLmh0bWwiPkxvZ01hbmFnZXI8L0E+CjxERD5DcmVhdGVzIGEgbmV3IGxvZ2dpbmcgc3lzdGVtIG9yIHJldHVybnMgYW4gZXhpc3Rpbmcgb25lCiAgc3BlY2lmaWVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNjcmVhdGVOZXdQYXJzZXIoKSI+PEI+Y3JlYXRlTmV3UGFyc2VyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+UmV0dXJucyBhIEphdmFDQyBnZW5lcmF0ZWQgUGFyc2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNjcmVhdGVOZXdQYXJzZXIoKSI+PEI+Y3JlYXRlTmV3UGFyc2VyKCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+UmV0dXJucyBhIEphdmFDQyBnZW5lcmF0ZWQgUGFyc2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwjY3JlYXRlVmVsb2NpbWFjcm8oamF2YS5sYW5nLlN0cmluZykiPjxCPmNyZWF0ZVZlbG9jaW1hY3JvKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sI2N0ZXh0Ij48Qj5jdGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXNjYXBlLmh0bWwiPkFTVEVzY2FwZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRleHQuaHRtbCNjdGV4dCI+PEI+Y3RleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRleHQuaHRtbCI+QVNUVGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCNjdHgiPjxCPmN0eDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCI+RGF0YVNvdXJjZVJlc291cmNlTG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2N1ckNoYXIiPjxCPmN1ckNoYXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNjdXJMZXhTdGF0ZSI+PEI+Y3VyTGV4U3RhdGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBbHRlcm5hdG9yLmh0bWwjY3VycmVudCI+PEI+Y3VycmVudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QWx0ZXJuYXRvci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TaW1wbGVQb29sLmh0bWwjY3VycmVudCI+PEI+Y3VycmVudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU2ltcGxlUG9vbC5odG1sIj5TaW1wbGVQb29sPC9BPgo8REQ+aW5kZXggb2YgcHJldmlvdXMgdG8gbmV4dAogIGZyZWUgc2xvdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCNjdXJyZW50UmVzb3VyY2UiPjxCPmN1cnJlbnRSZXNvdXJjZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QmFzZS5odG1sIj5JbnRlcm5hbENvbnRleHRCYXNlPC9BPgo8REQ+Q3VycmVudCByZXNvdXJjZSAtIHVzZWQgZm9yIGNhcnJ5aW5nIGVuY29kaW5nIGFuZCBvdGhlcgogIGluZm9ybWF0aW9uIGRvd24gaW50byB0aGUgcmVuZGVyaW5nIHByb2Nlc3MKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjY3VycmVudFRlbXBsYXRlTmFtZSI+PEI+Y3VycmVudFRlbXBsYXRlTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+TmFtZSBvZiBjdXJyZW50IHRlbXBsYXRlIHdlIGFyZSBwYXJzaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZUV4Y2VwdGlvbi5odG1sI2N1cnJlbnRUb2tlbiI+PEI+Y3VycmVudFRva2VuPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXhjZXB0aW9uPC9BPgo8REQ+VGhpcyBpcyB0aGUgbGFzdCB0b2tlbiB0aGF0IGhhcyBiZWVuIGNvbnN1bWVkIHN1Y2Nlc3NmdWxseS4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfRF8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+RDwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNkYXRhIj48Qj5kYXRhPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4KPEREPlJlc291cmNlIG1pZ2h0IHJlcXVpcmUgYW5jaWxsYXJ5IHN0b3JhZ2Ugb2Ygc29tZSBraW5kCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sI2RhdGFTb3VyY2UiPjxCPmRhdGFTb3VyY2U8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCNkYXRhU291cmNlTmFtZSI+PEI+ZGF0YVNvdXJjZU5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCI+PEI+RGF0YVNvdXJjZVJlc291cmNlTG9hZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4uPEREPlRoaXMgaXMgYSBzaW1wbGUgdGVtcGxhdGUgZmlsZSBsb2FkZXIgdGhhdCBsb2FkcyB0ZW1wbGF0ZXMKIGZyb20gYSBEYXRhU291cmNlIGluc3RlYWQgb2YgcGxhaW4gZmlsZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwjRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyKCkiPjxCPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCI+RGF0YVNvdXJjZVJlc291cmNlTG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ1N5c3RlbS5odG1sI0RFQlVHX0lEIj48Qj5ERUJVR19JRDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ1N5c3RlbS5odG1sIj5Mb2dTeXN0ZW08L0E+CjxERD5QcmVmaXggZm9yIGRlYnVnIG1lc3NhZ2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCNERUJVR19PTiI+PEI+REVCVUdfT048L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCI+TG9nU3lzdGVtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI0RFQlVHX1BSRUZJWCI+PEI+REVCVUdfUFJFRklYPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPkxvZyBtZXNzYWdlIHByZWZpeGVzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2RlYnVnKGphdmEubGFuZy5PYmplY3QpIj48Qj5kZWJ1ZyhPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwiPlZlbG9jaXR5RW5naW5lPC9BPgo8REQ+TG9nIGEgZGVidWcgbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwjZGVidWcoamF2YS5sYW5nLk9iamVjdCkiPjxCPmRlYnVnKE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwiPlZlbG9jaXR5PC9BPgo8REQ+TG9nIGEgZGVidWcgbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNkZWJ1ZyhqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZGVidWcoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5Mb2cgYSBkZWJ1ZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVMb2dnZXIuaHRtbCNkZWJ1ZyhqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZGVidWcoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lTG9nZ2VyLmh0bWwiPlJ1bnRpbWVMb2dnZXI8L0E+CjxERD5Mb2cgYSBkZWJ1ZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCNkZWJ1ZyhqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZGVidWcoT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwiPlJ1bnRpbWU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtMb2cgYSBkZWJ1ZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNkZWJ1ZyhqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZGVidWcoT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5Mb2cgYSBkZWJ1ZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sI2RlYnVnTW9kZSI+PEI+ZGVidWdNb2RlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sIj5NYWNybzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNkZWJ1Z1ByaW50Ij48Qj5kZWJ1Z1ByaW50PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjZGVidWdTdHJlYW0iPjxCPmRlYnVnU3RyZWFtPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjREVGQVVMVCI+PEI+REVGQVVMVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNERUZBVUxUX0JVRkZFUiI+PEI+REVGQVVMVF9CVUZGRVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+Y29uc3RhbnQgaW5kaWNhdGluZyB0aGF0IHRoZSBXcml0ZXIgaXMgYnVmZmVyZWQgYW5kIGlzIHVzaW5nIHRoZSAKIGltcGxlbWVudGF0aW9uIGRlZmF1bHQgYnVmZmVyIHNpemUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNERUZBVUxUX0NPTlRFTlRfVFlQRSI+PEI+REVGQVVMVF9DT05URU5UX1RZUEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+VGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGZvciB0aGUgcmVzcG9uc2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNERUZBVUxUX09VVFBVVF9FTkNPRElORyI+PEI+REVGQVVMVF9PVVRQVVRfRU5DT0RJTkc8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+RW5jb2RpbmcgZm9yIHRoZSBvdXRwdXQgc3RyZWFtCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFFbGVtZW50Lmh0bWwjREVGQVVMVF9PVVRQVVRURVIiPjxCPkRFRkFVTFRfT1VUUFVUVEVSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNERUZBVUxUX09VVFBVVFRFUiI+PEI+REVGQVVMVF9PVVRQVVRURVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjREVGQVVMVF9SVU5USU1FX0RJUkVDVElWRVMiPjxCPkRFRkFVTFRfUlVOVElNRV9ESVJFQ1RJVkVTPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPkRlZmF1bHQgUnVudGltZSBwcm9wZXJ0aWVzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI0RFRkFVTFRfUlVOVElNRV9QUk9QRVJUSUVTIj48Qj5ERUZBVUxUX1JVTlRJTUVfUFJPUEVSVElFUzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5EZWZhdWx0IFJ1bnRpbWUgcHJvcGVydGllcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjREVGQVVMVF9URVhFTl9QUk9QRVJUSUVTIj48Qj5ERUZBVUxUX1RFWEVOX1BST1BFUlRJRVM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5EZWZhdWx0IHByb3BlcnRpZXMgZmlsZSB1c2VkIGZvciBjb250cm9sbGluZyB0aGUKIHRvb2xzIHBsYWNlZCBpbiB0aGUgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNkZWZhdWx0Q2hhckJ1ZmZlclNpemUiPjxCPmRlZmF1bHRDaGFyQnVmZmVyU2l6ZTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNkZWZhdWx0Q29udGVudFR5cGUiPjxCPmRlZmF1bHRDb250ZW50VHlwZTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5UaGUgZGVmYXVsdCBjb250ZW50IHR5cGUsIGl0c2VsZiBkZWZhdWx0aW5nIHRvIDxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNERUZBVUxUX0NPTlRFTlRfVFlQRSI+PENPREU+VmVsb2NpdHlTZXJ2bGV0LkRFRkFVTFRfQ09OVEVOVF9UWVBFPC9DT0RFPjwvQT4gaWYgbm90IGNvbmZpZ3VyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2RlZmF1bHRMZXhTdGF0ZSI+PEI+ZGVmYXVsdExleFN0YXRlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNkZWZhdWx0cyI+PEI+ZGVmYXVsdHM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtEZWZhdWx0IGNvbmZpZ3VyYXRpb25zIHJlcG9zaXRvcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXIuaHRtbCNERUxJTUlURVIiPjxCPkRFTElNSVRFUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXIuaHRtbCI+Q29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzVG9rZW5pemVyPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGhlIHByb3BlcnR5IGRlbGltaXRlciB1c2VkIHdoaWxlIHBhcnNpbmcgKGEgY29tbWEpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2RlcHJlY2F0aW9uQ3J1dGNoIj48Qj5kZXByZWNhdGlvbkNydXRjaDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbi5odG1sI2RlcHRoQ291bnQiPjxCPmRlcHRoQ291bnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2VEaXJlY3RpdmVFeGNlcHRpb24uaHRtbCI+UGFyc2VEaXJlY3RpdmVFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNkZXN0RGlyIj48Qj5kZXN0RGlyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+dGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNESUdJVCI+PEI+RElHSVQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwjZGlyZWN0aXZlIj48Qj5kaXJlY3RpdmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVERpcmVjdGl2ZS5odG1sIj5BU1REaXJlY3RpdmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlLmh0bWwiPjxCPkRpcmVjdGl2ZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sIj5EaXJlY3RpdmU8L0E+LjxERD5CYXNlIGNsYXNzIGZvciBhbGwgZGlyZWN0aXZlcyB1c2VkIGluIFZlbG9jaXR5LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0RJUkVDVElWRSI+PEI+RElSRUNUSVZFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNESVJFQ1RJVkVfQ0hBUiI+PEI+RElSRUNUSVZFX0NIQVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0RJUkVDVElWRV9URVJNSU5BVE9SIj48Qj5ESVJFQ1RJVkVfVEVSTUlOQVRPUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlLmh0bWwjRGlyZWN0aXZlKCkiPjxCPkRpcmVjdGl2ZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCI+RGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI0RpcmVjdGl2ZSgpIj48Qj5EaXJlY3RpdmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPlN1cHBvcnRzIHRoZSBQbHVnZ2FibGUgRGlyZWN0aXZlcwogICAgICNmb28oIGFyZysgKQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNEaXJlY3RpdmVBcmcoKSI+PEI+RGlyZWN0aXZlQXJnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5TdXBwb3J0cyB0aGUgYXJndW1lbnRzIGZvciB0aGUgUGx1Z2dhYmxlIERpcmVjdGl2ZXMKICAgV2UgYWRkIHdoaXRlc3BhY2UgaW4gaGVyZSBhcyBhIHRva2VuIHNvIHRoZSBWTXMgY2FuCiAgIGVhc2lseSByZWNvbnN0cnVjdCBhIG1hY3JvIGJvZHkgZnJvbSB0aGUgdG9rZW4gc3RyZWFtCiAgIFNlZSBEaXJlY3RpdmUoKQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmVDb25zdGFudHMuaHRtbCI+PEI+RGlyZWN0aXZlQ29uc3RhbnRzPC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZUNvbnN0YW50cy5odG1sIj5EaXJlY3RpdmVDb25zdGFudHM8L0E+LjxERD5CYXNlIGNsYXNzIGZvciBhbGwgZGlyZWN0aXZlcyB1c2VkIGluIFZlbG9jaXR5LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwjZGlyZWN0aXZlTmFtZSI+PEI+ZGlyZWN0aXZlTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwiPkFTVERpcmVjdGl2ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNkaXJlY3RpdmVzIj48Qj5kaXJlY3RpdmVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5UaGlzIEhhc2h0YWJsZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIG9mIHRoZSBkeW5hbWljIGRpcmVjdGl2ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2Rpc2FibGVfdHJhY2luZygpIj48Qj5kaXNhYmxlX3RyYWNpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1Byb3BlcnR5RXhlY3V0b3IuaHRtbCNkaXNjb3ZlcihqYXZhLmxhbmcuQ2xhc3MsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5kaXNjb3ZlcihDbGFzcywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1Byb3BlcnR5RXhlY3V0b3IuaHRtbCI+UHJvcGVydHlFeGVjdXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0Jvb2xlYW5Qcm9wZXJ0eUV4ZWN1dG9yLmh0bWwjZGlzY292ZXIoamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZGlzY292ZXIoQ2xhc3MsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Cb29sZWFuUHJvcGVydHlFeGVjdXRvci5odG1sIj5Cb29sZWFuUHJvcGVydHlFeGVjdXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2Rpc3BsYXkoKSI+PEI+ZGlzcGxheSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0Rpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGRlYnVnZ2luZwogcHVycG9zZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0RJVklERSI+PEI+RElWSURFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3ZpZXcvVGVtcGxhdGVOb2RlVmlldy5odG1sI2RvY3VtZW50Ij48Qj5kb2N1bWVudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC52aWV3LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC92aWV3L1RlbXBsYXRlTm9kZVZpZXcuaHRtbCI+VGVtcGxhdGVOb2RlVmlldzwvQT4KPEREPlJvb3Qgb2YgdGhlIEFTVCBub2RlIHN0cnVjdHVyZSB0aGF0IHJlc3VsdHMgZnJvbQogcGFyc2luZyBhIHRlbXBsYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0Lmh0bWwjZG9FeGNlcHRpb24oKSI+PEI+ZG9FeGNlcHRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0Lmh0bWwiPk1ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjZG9HZXQoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5kb0dldChIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuc2VydmxldC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwiPlZlbG9jaXR5U2VydmxldDwvQT4KPEREPkhhbmRsZXMgSFRUUCA8Y29kZT5HRVQ8L2NvZGU+IHJlcXVlc3RzIGJ5IGNhbGxpbmcgPENPREU+I2RvUmVxdWVzdCgpPC9DT0RFPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjRE9MTEFSIj48Qj5ET0xMQVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0RPTExBUkJBTkciPjxCPkRPTExBUkJBTkc8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI0RvbmUoKSI+PEI+RG9uZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCNEb25lKCkiPjxCPkRvbmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCI+Q2hhclN0cmVhbTwvQT4KPEREPlRoZSBsZXhlciBjYWxscyB0aGlzIGZ1bmN0aW9uIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgZG9uZSB3aXRoIHRoZSBzdHJlYW0KIGFuZCBoZW5jZSBpbXBsZW1lbnRhdGlvbnMgY2FuIGZyZWUgYW55IHJlc291cmNlcyBoZWxkIGJ5IHRoaXMgY2xhc3MuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjZG9Qb3N0KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+ZG9Qb3N0KEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+SGFuZGxlcyBIVFRQIDxjb2RlPlBPU1Q8L2NvZGU+IHJlcXVlc3RzIGJ5IGNhbGxpbmcgPENPREU+I2RvUmVxdWVzdCgpPC9DT0RFPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNkb1JlcXVlc3QoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5kb1JlcXVlc3QoSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5IYW5kbGVzIGFsbCByZXF1ZXN0cyAoYnkgZGVmYXVsdCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0RPVCI+PEI+RE9UPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNET1VCTEVfRVNDQVBFIj48Qj5ET1VCTEVfRVNDQVBFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNET1VCTEVET1QiPjxCPkRPVUJMRURPVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sI2RvdWJsZU1ldGhvZChkb3VibGUpIj48Qj5kb3VibGVNZXRob2QoZG91YmxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI2R1bXAoamF2YS5sYW5nLlN0cmluZykiPjxCPmR1bXAoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Qcmltb3JkaWFsTG9nU3lzdGVtLmh0bWwjZHVtcExvZ01lc3NhZ2VzKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuTG9nU3lzdGVtKSI+PEI+ZHVtcExvZ01lc3NhZ2VzKExvZ1N5c3RlbSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1ByaW1vcmRpYWxMb2dTeXN0ZW0uaHRtbCI+UHJpbW9yZGlhbExvZ1N5c3RlbTwvQT4KPEREPmR1bXBzIHRoZSBsb2cgbWVzc2FnZXMgdGhpcyBsb2dnZXIgaXMgaG9sZGluZyBpbnRvIGEgbmV3IGxvZ2dlcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI2R1bXBOYW1lc3BhY2UoamF2YS5sYW5nLlN0cmluZykiPjxCPmR1bXBOYW1lc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD5SZW1vdmVzIHRoZSBWTXMgYW5kIHRoZSBuYW1lc3BhY2UgZnJvbSB0aGUgbWFuYWdlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNkdW1wVk1OYW1lc3BhY2UoamF2YS5sYW5nLlN0cmluZykiPjxCPmR1bXBWTU5hbWVzcGFjZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPnRlbGxzIHRoZSB2bUZhY3RvcnkgdG8gZHVtcCB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNkdW1wVk1OYW1lc3BhY2UoamF2YS5sYW5nLlN0cmluZykiPjxCPmR1bXBWTU5hbWVzcGFjZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPnRlbGxzIHRoZSB2bU1hbmFnZXIgdG8gZHVtcCB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCNkdW1wVk1OYW1lc3BhY2UoamF2YS5sYW5nLlN0cmluZykiPjxCPmR1bXBWTU5hbWVzcGFjZShTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO3RlbGxzIHRoZSB2bUZhY3RvcnkgdG8gZHVtcCB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZHVtcFZNTmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5kdW1wVk1OYW1lc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD50ZWxscyB0aGUgdm1GYWN0b3J5IHRvIGR1bXAgdGhlIHNwZWNpZmllZCBuYW1lc3BhY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZHVtcFZNTmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5kdW1wVk1OYW1lc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+dGVsbHMgdGhlIHZtRmFjdG9yeSB0byBkdW1wIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlLgo8L0RMPgo8SFI+CjxBIE5BTUU9Il9FXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5FPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUpET01GYWN0b3J5Lmh0bWwjZWxlbWVudChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZWxlbWVudChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUpET01GYWN0b3J5Lmh0bWwiPkFuYWtpYUpET01GYWN0b3J5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFKRE9NRmFjdG9yeS5odG1sI2VsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgb3JnLmpkb20uTmFtZXNwYWNlKSI+PEI+ZWxlbWVudChTdHJpbmcsIE5hbWVzcGFjZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhSkRPTUZhY3RvcnkuaHRtbCI+QW5ha2lhSkRPTUZhY3Rvcnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUpET01GYWN0b3J5Lmh0bWwjZWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZWxlbWVudChTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhSkRPTUZhY3RvcnkuaHRtbCI+QW5ha2lhSkRPTUZhY3Rvcnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUpET01GYWN0b3J5Lmh0bWwjZWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZWxlbWVudChTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFKRE9NRmFjdG9yeS5odG1sIj5BbmFraWFKRE9NRmFjdG9yeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwjZWxlbWVudEtleSI+PEI+ZWxlbWVudEtleTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwiPkZvcmVhY2g8L0E+CjxERD5UaGUgcmVmZXJlbmNlIG5hbWUgdXNlZCB0byBhY2Nlc3MgZWFjaAogb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBsaXN0IG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjRUxTRV9ESVJFQ1RJVkUiPjxCPkVMU0VfRElSRUNUSVZFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNFTFNFSUZfRElSRUNUSVZFIj48Qj5FTFNFSUZfRElSRUNUSVZFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNFbHNlSWZTdGF0ZW1lbnQoKSI+PEI+RWxzZUlmU3RhdGVtZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjRWxzZVN0YXRlbWVudCgpIj48Qj5FbHNlU3RhdGVtZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjZW5hYmxlX3RyYWNpbmcoKSI+PEI+ZW5hYmxlX3RyYWNpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNlbmNvZGVSZWRpcmVjdFVybChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZW5jb2RlUmVkaXJlY3RVcmwoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNlbmNvZGVSZWRpcmVjdFVSTChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZW5jb2RlUmVkaXJlY3RVUkwoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNlbmNvZGVVcmwoamF2YS5sYW5nLlN0cmluZykiPjxCPmVuY29kZVVybChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI2VuY29kZVVSTChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZW5jb2RlVVJMKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI2VuY29kaW5nIj48Qj5lbmNvZGluZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD5DaGFyYWN0ZXIgZW5jb2Rpbmcgb2YgdGhpcyByZXNvdXJjZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNlbmNvZGluZyI+PEI+ZW5jb2Rpbmc8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNFTkNPRElOR19ERUZBVUxUIj48Qj5FTkNPRElOR19ERUZBVUxUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0VuY29kaW5nVGVzdENhc2UuaHRtbCI+PEI+RW5jb2RpbmdUZXN0Q2FzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FbmNvZGluZ1Rlc3RDYXNlLmh0bWwiPkVuY29kaW5nVGVzdENhc2U8L0E+LjxERD5UZXN0cyBpbnB1dCBlbmNvZGluZyBoYW5kbGluZy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0VuY29kaW5nVGVzdENhc2UuaHRtbCNFbmNvZGluZ1Rlc3RDYXNlKCkiPjxCPkVuY29kaW5nVGVzdENhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0VuY29kaW5nVGVzdENhc2UuaHRtbCI+RW5jb2RpbmdUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNFTkQiPjxCPkVORDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW4uaHRtbCNlbmRDb2x1bW4iPjxCPmVuZENvbHVtbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4KPEREPmJlZ2luTGluZSBhbmQgYmVnaW5Db2x1bW4gZGVzY3JpYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKIG9mIHRoaXMgdG9rZW47IGVuZExpbmUgYW5kIGVuZENvbHVtbiBkZXNjcmliZSB0aGUgcG9zaXRpb24gb2YgdGhlCiBsYXN0IGNoYXJhY3RlciBvZiB0aGlzIHRva2VuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sI2VuZExpbmUiPjxCPmVuZExpbmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW4uaHRtbCI+VG9rZW48L0E+CjxERD5iZWdpbkxpbmUgYW5kIGJlZ2luQ29sdW1uIGRlc2NyaWJlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyCiBvZiB0aGlzIHRva2VuOyBlbmRMaW5lIGFuZCBlbmRDb2x1bW4gZGVzY3JpYmUgdGhlIHBvc2l0aW9uIG9mIHRoZQogbGFzdCBjaGFyYWN0ZXIgb2YgdGhpcyB0b2tlbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNlbnN1cmVEaXJlY3RvcnlGb3IoamF2YS5pby5GaWxlKSI+PEI+ZW5zdXJlRGlyZWN0b3J5Rm9yKEZpbGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPmNyZWF0ZSBkaXJlY3RvcmllcyBhcyBuZWVkZWQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFyUmVzb3VyY2VMb2FkZXIuaHRtbCNlbnRyeURpcmVjdG9yeSI+PEI+ZW50cnlEaXJlY3Rvcnk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFyUmVzb3VyY2VMb2FkZXIuaHRtbCI+SmFyUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5NYXBzIGVudHJpZXMgdG8gdGhlIHBhcmVudCBKQVIgRmlsZQogS2V5ID0gdGhlIGVudHJ5ICpleGNsdWRpbmcqIHBsYWluIGRpcmVjdG9yaWVzCiBWYWx1ZSA9IHRoZSBKQVIgVVJMCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvRW51bWVyYXRpb25JdGVyYXRvci5odG1sI2VudW0iPjxCPmVudW08L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0VudW1lcmF0aW9uSXRlcmF0b3IuaHRtbCI+RW51bWVyYXRpb25JdGVyYXRvcjwvQT4KPEREPlRoZSBlbnVtZXJhdGlvbiB0byBpdGVyYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGVJbXBsLmh0bWwjZW51bWVyYXRlS2V5cygpIj48Qj5lbnVtZXJhdGVLZXlzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlSW1wbC5odG1sIj5SZXNvdXJjZUNhY2hlSW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGUuaHRtbCNlbnVtZXJhdGVLZXlzKCkiPjxCPmVudW1lcmF0ZUtleXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlLmh0bWwiPlJlc291cmNlQ2FjaGU8L0E+CjxERD5yZXR1cm5zIGFuIEl0ZXJhdG9yIG9mIEtleXMgaW4gdGhlIGNhY2hlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvRW51bWVyYXRpb25JdGVyYXRvci5odG1sIj48Qj5FbnVtZXJhdGlvbkl0ZXJhdG9yPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0VudW1lcmF0aW9uSXRlcmF0b3IuaHRtbCI+RW51bWVyYXRpb25JdGVyYXRvcjwvQT4uPEREPkFuIEl0ZXJhdG9yIHdyYXBwZXIgZm9yIGFuIEVudW1lcmF0aW9uLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvRW51bWVyYXRpb25JdGVyYXRvci5odG1sI0VudW1lcmF0aW9uSXRlcmF0b3IoamF2YS51dGlsLkVudW1lcmF0aW9uKSI+PEI+RW51bWVyYXRpb25JdGVyYXRvcihFbnVtZXJhdGlvbik8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9FbnVtZXJhdGlvbkl0ZXJhdG9yLmh0bWwiPkVudW1lcmF0aW9uSXRlcmF0b3I8L0E+CjxERD5DcmVhdGVzIGEgbmV3IGl0ZXJhdG9yd3JhcHBlciBpbnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCAKIEVudW1lcmF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNFT0YiPjxCPkVPRjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCNlb2wiPjxCPmVvbDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZUV4Y2VwdGlvbi5odG1sIj5QYXJzZUV4Y2VwdGlvbjwvQT4KPEREPlRoZSBlbmQgb2YgbGluZSBzdHJpbmcgZm9yIHRoaXMgbWFjaGluZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sI0VPTCI+PEI+RU9MPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5MaW5lIHNlcGFyYXRvciBmb3IgdGhlIE9TIHdlIGFyZSBvcGVyYXRpbmcgb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNFT0xfTEVOR1RIIj48Qj5FT0xfTEVOR1RIPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5MZW5ndGggb2YgdGhlIGxpbmUgc2VwYXJhdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNFcXVhbGl0eUV4cHJlc3Npb24oKSI+PEI+RXF1YWxpdHlFeHByZXNzaW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjRVFVQUxTIj48Qj5FUVVBTFM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZXF1YWxzKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD5UZXN0cyBmb3IgZXF1YWxpdHkgd2l0aCBhbm90aGVyIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI0VSUl9NU0dfRlJBR01FTlQiPjxCPkVSUl9NU0dfRlJBR01FTlQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPlRoaXMgbWVzc2FnZSBmcmFnbWVudCAodGVsbGluZyB1c2VycyB0byBjb25zdWx0IHRoZSBsb2cgb3IKIGludm9rZSBhbnQgd2l0aCB0aGUgLWRlYnVnIGZsYWcpIGlzIGFwcGVuZGVkIHRvIHJldGhyb3duCiBleGNlcHRpb24gbWVzc2FnZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ1N5c3RlbS5odG1sI0VSUk9SX0lEIj48Qj5FUlJPUl9JRDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ1N5c3RlbS5odG1sIj5Mb2dTeXN0ZW08L0E+CjxERD5QcmVmaXggZm9yIGVycm9yIG1lc3NhZ2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNFUlJPUl9QUkVGSVgiPjxCPkVSUk9SX1BSRUZJWDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNlcnJvcihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSwgamF2YS5sYW5nLkV4Y2VwdGlvbikiPjxCPmVycm9yKEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSwgRXhjZXB0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5JbnZva2VkIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IgdGhyb3duIGluIGFueSBwYXJ0IG9mIGRvUmVxdWVzdCgpIHByb2Nlc3NpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2Vycm9yKGphdmEubGFuZy5PYmplY3QpIj48Qj5lcnJvcihPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwiPlZlbG9jaXR5RW5naW5lPC9BPgo8REQ+TG9nIGFuIGVycm9yIG1lc3NhZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2Vycm9yKGphdmEubGFuZy5PYmplY3QpIj48Qj5lcnJvcihPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPkxvZyBhbiBlcnJvciBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2Vycm9yKGphdmEubGFuZy5PYmplY3QpIj48Qj5lcnJvcihPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkxvZyBhbiBlcnJvciBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVMb2dnZXIuaHRtbCNlcnJvcihqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZXJyb3IoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lTG9nZ2VyLmh0bWwiPlJ1bnRpbWVMb2dnZXI8L0E+CjxERD5Mb2cgYW4gZXJyb3IgbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZXJyb3IoamF2YS5sYW5nLk9iamVjdCkiPjxCPmVycm9yKE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7TG9nIGFuIGVycm9yIG1lc3NhZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2Vycm9yKGphdmEubGFuZy5PYmplY3QpIj48Qj5lcnJvcihPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPkxvZyBhbiBlcnJvciBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbk1nckVycm9yLmh0bWwjZXJyb3JDb2RlIj48Qj5lcnJvckNvZGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW5NZ3JFcnJvci5odG1sIj5Ub2tlbk1nckVycm9yPC9BPgo8REQ+SW5kaWNhdGVzIHRoZSByZWFzb24gd2h5IHRoZSBleGNlcHRpb24gaXMgdGhyb3duLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9UZW1wbGF0ZS5odG1sI2Vycm9yQ29uZGl0aW9uIj48Qj5lcnJvckNvbmRpdGlvbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9UZW1wbGF0ZS5odG1sIj5UZW1wbGF0ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNFUlJPUk1TR19FTkQiPjxCPkVSUk9STVNHX0VORDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5FbmRpbmcgdGFnIGZvciBlcnJvciBtZXNzYWdlcyB0cmlnZ2VyZWQgYnkgcGFzc2luZwogYSBwYXJhbWV0ZXIgbm90IGFsbG93ZWQgaW4gdGhlICNpbmNsdWRlIGRpcmVjdGl2ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjRVJST1JNU0dfU1RBUlQiPjxCPkVSUk9STVNHX1NUQVJUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPlN0YXJ0aW5nIHRhZyBmb3IgZXJyb3IgbWVzc2FnZXMgdHJpZ2dlcmVkIGJ5IHBhc3NpbmcKIGEgcGFyYW1ldGVyIG5vdCBhbGxvd2VkIGluIHRoZSAjaW5jbHVkZSBkaXJlY3RpdmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Fc2NhcGUuaHRtbCI+PEI+RXNjYXBlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Fc2NhcGUuaHRtbCI+RXNjYXBlPC9BPi48REQ+VGhpcyBjbGFzcyBpcyBmb3IgZXNjYXBpbmcgQ0RBVEEgc2VjdGlvbnMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjRVNDQVBFIj48Qj5FU0NBUEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0VTQ0FQRV9ESVJFQ1RJVkUiPjxCPkVTQ0FQRV9ESVJFQ1RJVkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Fc2NhcGUuaHRtbCNFc2NhcGUoKSI+PEI+RXNjYXBlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvRXNjYXBlLmh0bWwiPkVzY2FwZTwvQT4KPEREPkVtcHR5IGNvbnN0cnVjdG9yCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI0VzY2FwZSgpIj48Qj5Fc2NhcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPlVzZWQgdG8gY2F0Y2ggYW5kIHByb2Nlc3MgZXNjYXBlIHNlcXVlbmNlcyBpbiBncmFtbWF0aWNhbCBjb25zdHJ1Y3RzCiAgYXMgZXNjYXBlcyBvdXRzaWRlIG9mIFZUTCBhcmUganVzdCBjaGFyYWN0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sI2VzY2FwZWQiPjxCPmVzY2FwZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjRXNjYXBlZERpcmVjdGl2ZSgpIj48Qj5Fc2NhcGVkRGlyZWN0aXZlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD51c2VkIHRvIHNlcGFyYXRlIHRoZSBub3Rpb24gb2YgYSB2YWxpZCBkaXJlY3RpdmUgdGhhdCBoYXMgYmVlbgogIGVzY2FwZWQsIHZlcnN1cyBzb21ldGhpbmcgdGhhdCBsb29rcyBsaWtlIGEgZGlyZWN0aXZlIGFuZAogIGlzIGp1c3Qgc2NobW9vLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNlc2NhcGVkRGlyZWN0aXZlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5lc2NhcGVkRGlyZWN0aXZlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5Qcm9kdWNlcyBhIHByb2Nlc3NlZCBvdXRwdXQgZm9yIGFuIGVzY2FwZWQgY29udHJvbCBvcgogcGx1Z2dhYmxlIGRpcmVjdGl2ZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sI2VzY1ByZWZpeCI+PEI+ZXNjUHJlZml4PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5pby5JbnB1dFN0cmVhbSkiPjxCPmV2YWx1YXRlKENvbnRleHQsIFdyaXRlciwgU3RyaW5nLCBJbnB1dFN0cmVhbSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UKICA8QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5pby5SZWFkZXIpIj48Q09ERT5WZWxvY2l0eUVuZ2luZS5ldmFsdWF0ZSggQ29udGV4dCBjb250ZXh0LCBXcml0ZXIgd3JpdGVyLCAKICAgICAgU3RyaW5nIGxvZ1RhZywgUmVhZGVyIHJlYWRlciApPC9DT0RFPjwvQT48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5pby5JbnB1dFN0cmVhbSkiPjxCPmV2YWx1YXRlKENvbnRleHQsIFdyaXRlciwgU3RyaW5nLCBJbnB1dFN0cmVhbSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwiPlZlbG9jaXR5PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlCiAgPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNldmFsdWF0ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCwgamF2YS5pby5Xcml0ZXIsIGphdmEubGFuZy5TdHJpbmcsIGphdmEuaW8uUmVhZGVyKSI+PENPREU+VmVsb2NpdHkuZXZhbHVhdGUoIENvbnRleHQgY29udGV4dCwgV3JpdGVyIHdyaXRlciwKICAgICAgU3RyaW5nIGxvZ1RhZywgUmVhZGVyIHJlYWRlciApPC9DT0RFPjwvQT48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5pby5SZWFkZXIpIj48Qj5ldmFsdWF0ZShDb250ZXh0LCBXcml0ZXIsIFN0cmluZywgUmVhZGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPlJlbmRlcnMgdGhlIGlucHV0IHJlYWRlciB1c2luZyB0aGUgY29udGV4dCBpbnRvIHRoZSBvdXRwdXQgd3JpdGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNldmFsdWF0ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCwgamF2YS5pby5Xcml0ZXIsIGphdmEubGFuZy5TdHJpbmcsIGphdmEuaW8uUmVhZGVyKSI+PEI+ZXZhbHVhdGUoQ29udGV4dCwgV3JpdGVyLCBTdHJpbmcsIFJlYWRlcik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwiPlZlbG9jaXR5PC9BPgo8REQ+UmVuZGVycyB0aGUgaW5wdXQgcmVhZGVyIHVzaW5nIHRoZSBjb250ZXh0IGludG8gdGhlIG91dHB1dCB3cml0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmV2YWx1YXRlKENvbnRleHQsIFdyaXRlciwgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwiPlZlbG9jaXR5RW5naW5lPC9BPgo8REQ+cmVuZGVycyB0aGUgaW5wdXQgc3RyaW5nIHVzaW5nIHRoZSBjb250ZXh0IGludG8gdGhlIG91dHB1dCB3cml0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmV2YWx1YXRlKENvbnRleHQsIFdyaXRlciwgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPnJlbmRlcnMgdGhlIGlucHV0IHN0cmluZyB1c2luZyB0aGUgY29udGV4dCBpbnRvIHRoZSBvdXRwdXQgd3JpdGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNldmFsdWF0ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV2YWx1YXRlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR1ROb2RlLmh0bWwjZXZhbHVhdGUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj5ldmFsdWF0ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdUTm9kZS5odG1sIj5BU1RHVE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBbmROb2RlLmh0bWwjZXZhbHVhdGUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj5ldmFsdWF0ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFuZE5vZGUuaHRtbCI+QVNUQW5kTm9kZTwvQT4KPEREPmxvZ2ljYWwgYW5kIDogCiAgIG51bGwgJiYgcmlnaHQgPSBmYWxzZQogICBsZWZ0ICYmIG51bGwgPSBmYWxzZQogICBudWxsICYmIG51bGwgPSBmYWxzZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVExFTm9kZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RMRU5vZGUuaHRtbCI+QVNUTEVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTFROb2RlLmh0bWwjZXZhbHVhdGUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj5ldmFsdWF0ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVExUTm9kZS5odG1sIj5BU1RMVE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwjZXZhbHVhdGUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj5ldmFsdWF0ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRydWUuaHRtbCI+QVNUVHJ1ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEV4cHJlc3Npb24uaHRtbCNldmFsdWF0ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV2YWx1YXRlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXhwcmVzc2lvbi5odG1sIj5BU1RFeHByZXNzaW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURWxzZUlmU3RhdGVtZW50Lmh0bWwjZXZhbHVhdGUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj5ldmFsdWF0ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VJZlN0YXRlbWVudC5odG1sIj5BU1RFbHNlSWZTdGF0ZW1lbnQ8L0E+CjxERD5BbiBBU1RFbHNlU3RhdGVtZW50IGlzIHRydWUgaWYgdGhlIGV4cHJlc3Npb24KIGl0IGNvbnRhaW5zIGV2YWx1YXRlcyB0byB0cnVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Q29tcHV0ZXMgYm9vbGVhbiB2YWx1ZSBvZiB0aGlzIHJlZmVyZW5jZQogICBSZXR1cm5zIHRoZSBhY3R1YWwgdmFsdWUgb2YgcmVmZXJlbmNlIHJldHVybiB0eXBlCiAgIGJvb2xlYW4sIGFuZCAndHJ1ZScgaWYgdmFsdWUgaXMgbm90IG51bGwKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sIj5BU1RGYWxzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVRTm9kZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFUU5vZGUuaHRtbCI+QVNURVFOb2RlPC9BPgo8REQ+Q2FsY3VsYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGxvZ2ljYWwgZXhwcmVzc2lvbgoKICAgICBhcmcxID09IGFyZzIKCiAgIEFsbCBjbGFzcyB0eXBlcyBhcmUgc3VwcG9ydGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9yTm9kZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPck5vZGUuaHRtbCI+QVNUT3JOb2RlPC9BPgo8REQ+dGhlIGxvZ2ljYWwgb3IgOgogICAgdGhlIHJ1bGUgOgogICAgICBsZWZ0IHx8IG51bGwgLT4gbGVmdAogICAgICBudWxsIHx8IHJpZ2h0IC0+IHJpZ2h0CiAgICAgIG51bGwgfHwgbnVsbCAtPiBmYWxzZQogICAgICBsZWZ0IHx8IHJpZ2h0IC0+ICBsZWZ0IHx8IHJpZ2h0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTm90Tm9kZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1ROb3ROb2RlLmh0bWwiPkFTVE5vdE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RHRU5vZGUuaHRtbCNldmFsdWF0ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV2YWx1YXRlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR0VOb2RlLmh0bWwiPkFTVEdFTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VTdGF0ZW1lbnQuaHRtbCNldmFsdWF0ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV2YWx1YXRlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURWxzZVN0YXRlbWVudC5odG1sIj5BU1RFbHNlU3RhdGVtZW50PC9BPgo8REQ+QW4gQVNURWxzZVN0YXRlbWVudCBhbHdheXMgZXZhbHVhdGVzIHRvCiB0cnVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5FTm9kZS5odG1sI2V2YWx1YXRlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXZhbHVhdGUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RORU5vZGUuaHRtbCI+QVNUTkVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QmFzZS5odG1sI2V2ZW50Q2FydHJpZGdlIj48Qj5ldmVudENhcnRyaWRnZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QmFzZS5odG1sIj5JbnRlcm5hbENvbnRleHRCYXNlPC9BPgo8REQ+RXZlbnRDYXJ0cmlkZ2Ugd2UgYXJlIHRvIGNhcnJ5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRDYXJ0cmlkZ2UuaHRtbCI+PEI+RXZlbnRDYXJ0cmlkZ2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwiPkV2ZW50Q2FydHJpZGdlPC9BPi48REQ+J1BhY2thZ2UnIG9mIGV2ZW50IGhhbmRsZXJzLi4uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwjRXZlbnRDYXJ0cmlkZ2UoKSI+PEI+RXZlbnRDYXJ0cmlkZ2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9FdmVudENhcnRyaWRnZS5odG1sIj5FdmVudENhcnRyaWRnZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRIYW5kbGVyLmh0bWwiPjxCPkV2ZW50SGFuZGxlcjwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50SGFuZGxlci5odG1sIj5FdmVudEhhbmRsZXI8L0E+LjxERD5CYXNlIGludGVyZmFjZSBmb3IgYWxsIGV2ZW50IGhhbmRsZXJzPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCI+PEI+RXZlbnRIYW5kbGluZ1Rlc3RDYXNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sIj5FdmVudEhhbmRsaW5nVGVzdENhc2U8L0E+LjxERD5UZXN0cyBldmVudCBoYW5kbGluZzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwjRXZlbnRIYW5kbGluZ1Rlc3RDYXNlKCkiPjxCPkV2ZW50SGFuZGxpbmdUZXN0Q2FzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwiPkV2ZW50SGFuZGxpbmdUZXN0Q2FzZTwvQT4KPEREPkRlZmF1bHQgY29uc3RydWN0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwjZXhjZXB0aW9uU3dpdGNoIj48Qj5leGNlcHRpb25Td2l0Y2g8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sIj5FdmVudEhhbmRsaW5nVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNleGVjdXRlKCkiPjxCPmV4ZWN1dGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD5NYWluIGJvZHkgb2YgdGhlIGFwcGxpY2F0aW9uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNleGVjdXRlKCkiPjxCPmV4ZWN1dGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+RXhlY3V0ZSB0aGUgaW5wdXQgc2NyaXB0IHdpdGggVmVsb2NpdHkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BYnN0cmFjdEV4ZWN1dG9yLmh0bWwjZXhlY3V0ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZXhlY3V0ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQWJzdHJhY3RFeGVjdXRvci5odG1sIj5BYnN0cmFjdEV4ZWN1dG9yPC9BPgo8REQ+RXhlY3V0ZSBtZXRob2QgYWdhaW5zdCBjb250ZXh0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0dldEV4ZWN1dG9yLmh0bWwjZXhlY3V0ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZXhlY3V0ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvR2V0RXhlY3V0b3IuaHRtbCI+R2V0RXhlY3V0b3I8L0E+CjxERD5FeGVjdXRlIG1ldGhvZCBhZ2FpbnN0IGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUHJvcGVydHlFeGVjdXRvci5odG1sI2V4ZWN1dGUoamF2YS5sYW5nLk9iamVjdCkiPjxCPmV4ZWN1dGUoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1Byb3BlcnR5RXhlY3V0b3IuaHRtbCI+UHJvcGVydHlFeGVjdXRvcjwvQT4KPEREPkV4ZWN1dGUgbWV0aG9kIGFnYWluc3QgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjZXhlY3V0ZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV4ZWN1dGUoT2JqZWN0LCBJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVElkZW50aWZpZXIuaHRtbCNleGVjdXRlKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+ZXhlY3V0ZShPYmplY3QsIEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sIj5BU1RJZGVudGlmaWVyPC9BPgo8REQ+aW52b2tlcyB0aGUgbWV0aG9kIG9uIHRoZSBvYmplY3QgcGFzc2VkIGluCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTWV0aG9kLmh0bWwjZXhlY3V0ZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV4ZWN1dGUoT2JqZWN0LCBJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE1ldGhvZC5odG1sIj5BU1RNZXRob2Q8L0E+CjxERD5pbnZva2VzIHRoZSBtZXRob2QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjZXhlY3V0ZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV4ZWN1dGUoT2JqZWN0LCBJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD5nZXRzIGFuIE9iamVjdCB0aGF0ICdpcycgdGhlIHZhbHVlIG9mIHRoZSByZWZlcmVuY2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjZXhlY3V0ZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmV4ZWN1dGUoT2JqZWN0LCBJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwiPk5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjRXhwYW5kQnVmZihib29sZWFuKSI+PEI+RXhwYW5kQnVmZihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZUV4Y2VwdGlvbi5odG1sI2V4cGVjdGVkVG9rZW5TZXF1ZW5jZXMiPjxCPmV4cGVjdGVkVG9rZW5TZXF1ZW5jZXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCI+UGFyc2VFeGNlcHRpb248L0E+CjxERD5FYWNoIGVudHJ5IGluIHRoaXMgYXJyYXkgaXMgYW4gYXJyYXkgb2YgaW50ZWdlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI0V4cHJlc3Npb24oKSI+PEI+RXhwcmVzc2lvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjZXh0ZW5zaW9uIj48Qj5leHRlbnNpb248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD50aGUgZGVmYXVsdCBvdXRwdXQgZXh0ZW5zaW9uIGlzIC5odG1sCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXh0ZXJuYWxMb2dnZXJUZXN0Lmh0bWwiPjxCPkV4dGVybmFsTG9nZ2VyVGVzdDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FeHRlcm5hbExvZ2dlclRlc3QuaHRtbCI+RXh0ZXJuYWxMb2dnZXJUZXN0PC9BPi48REQ+VGVzdHMgaWYgd2UgY2FuIGhhbmQgVmVsb2NpdHkgYW4gYXJiaXRyYXJ5IGNsYXNzIGZvciBsb2dnaW5nLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXh0ZXJuYWxMb2dnZXJUZXN0Lmh0bWwjRXh0ZXJuYWxMb2dnZXJUZXN0KCkiPjxCPkV4dGVybmFsTG9nZ2VyVGVzdCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXh0ZXJuYWxMb2dnZXJUZXN0Lmh0bWwiPkV4dGVybmFsTG9nZ2VyVGVzdDwvQT4KPEREPkRlZmF1bHQgY29uc3RydWN0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCNleHRyYWN0UGF0aChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZXh0cmFjdFBhdGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnZlcnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwiPldlYk1hY3JvPC9BPgo8REQ+R2V0cyB0aGUgcGF0aCBzZWdtZW50IG9mIHRoZSBmdWxsIHBhdGggdG8gYSBmaWxlIChpLmUuCjwvREw+CjxIUj4KPEEgTkFNRT0iX0ZfIj48IS0tIC0tPjwvQT48SDI+CjxCPkY8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwjZmFpbHVyZXMiPjxCPmZhaWx1cmVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNGQUxTRSI+PEI+RkFMU0U8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI0ZhbHNlKCkiPjxCPkZhbHNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sI2ZpZWxkSGFzaCI+PEI+ZmllbGRIYXNoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwiPkZpZWxkTWV0aG9kaXplcjwvQT4KPEREPkhvbGQgdGhlIGZpZWxkIG9iamVjdHMgYnkgZmllbGQgbmFtZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwiPjxCPkZpZWxkTWV0aG9kaXplcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwiPkZpZWxkTWV0aG9kaXplcjwvQT4uPEREPgogIFRoaXMgaXMgYSBzbWFsbCB1dGlsaXR5IGNsYXNzIGFsbG93IGVhc3kgYWNjZXNzIHRvIHN0YXRpYyBmaWVsZHMgaW4gYSBjbGFzcywKICBzdWNoIGFzIHN0cmluZyBjb25zdGFudHMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sI0ZpZWxkTWV0aG9kaXplcigpIj48Qj5GaWVsZE1ldGhvZGl6ZXIoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9GaWVsZE1ldGhvZGl6ZXIuaHRtbCI+RmllbGRNZXRob2RpemVyPC9BPgo8REQ+QWxsb3cgb2JqZWN0IHRvIGJlIGluaXRpYWxpemVkIHdpdGhvdXQgYW55IGRhdGEuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9GaWVsZE1ldGhvZGl6ZXIuaHRtbCNGaWVsZE1ldGhvZGl6ZXIoamF2YS5sYW5nLk9iamVjdCkiPjxCPkZpZWxkTWV0aG9kaXplcihPYmplY3QpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sIj5GaWVsZE1ldGhvZGl6ZXI8L0E+CjxERD5Db25zdHJ1Y3RvciB0aGF0IHRha2VzIGFzIGl0J3MgYXJnIGEgbGl2aW5nCiAgb2JqZWN0IHRvIG1ldGhvZGl6ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sI0ZpZWxkTWV0aG9kaXplcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+RmllbGRNZXRob2RpemVyKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwiPkZpZWxkTWV0aG9kaXplcjwvQT4KPEREPkNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYXMgaXQncyBhcmcgdGhlIG5hbWUgb2YgdGhlIGNsYXNzCiAgdG8gbWV0aG9kaXplLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2ZpbGUiPjxCPmZpbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgZmlsZSBjb25uZWN0ZWQgdG8gdGhpcyByZXBvc2l0b3J5IChob2xkaW5nIGNvbW1lbnRzIGFuZAogc3VjaCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQW5ha2lhVGVzdENhc2UuaHRtbCNGSUxFX0VYVCI+PEI+RklMRV9FWFQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9BbmFraWFUZXN0Q2FzZS5odG1sIj5BbmFraWFUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNGSUxFX1JFU09VUkNFX0xPQURFUl9DQUNIRSI+PEI+RklMRV9SRVNPVVJDRV9MT0FERVJfQ0FDSEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+VGhlIHB1YmxpYyBoYW5kbGUgZm9yIHR1cm5pbmcgdGhlIGNhY2hpbmcgb24gaW4gdGhlCiBGaWxlUmVzb3VyY2VMb2FkZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI0ZJTEVfUkVTT1VSQ0VfTE9BREVSX1BBVEgiPjxCPkZJTEVfUkVTT1VSQ0VfTE9BREVSX1BBVEg8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+VGhlIHB1YmxpYyBoYW5kbGUgZm9yIHNldHRpbmcgYSBwYXRoIGluCiB0aGUgRmlsZVJlc291cmNlTG9hZGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpTG9hZGVyVGVzdENhc2UuaHRtbCNGSUxFX1JFU09VUkNFX0xPQURFUl9QQVRIIj48Qj5GSUxFX1JFU09VUkNFX0xPQURFUl9QQVRIPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlMb2FkZXJUZXN0Q2FzZS5odG1sIj5NdWx0aUxvYWRlclRlc3RDYXNlPC9BPgo8REQ+UGF0aCBmb3IgdGVtcGxhdGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdEJhc2UuaHRtbCNGSUxFX1JFU09VUkNFX0xPQURFUl9QQVRIIj48Qj5GSUxFX1JFU09VUkNFX0xPQURFUl9QQVRIPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdEJhc2UuaHRtbCI+VGVtcGxhdGVUZXN0QmFzZTwvQT4KPEREPlBhdGggZm9yIHRlbXBsYXRlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwjRklMRV9SRVNPVVJDRV9MT0FERVJfUEFUSDEiPjxCPkZJTEVfUkVTT1VSQ0VfTE9BREVSX1BBVEgxPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sIj5NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0PC9BPgo8REQ+UGF0aCBmb3IgdGVtcGxhdGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3QuaHRtbCNGSUxFX1JFU09VUkNFX0xPQURFUl9QQVRIMiI+PEI+RklMRV9SRVNPVVJDRV9MT0FERVJfUEFUSDI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwiPk11bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3Q8L0E+CjxERD5QYXRoIGZvciB0ZW1wbGF0ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvRmlsZVV0aWwuaHRtbCNmaWxlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5maWxlKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4udXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvRmlsZVV0aWwuaHRtbCI+RmlsZVV0aWw8L0E+CjxERD5BIG1ldGhvZCB0byBnZXQgYSBGaWxlIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vdXRpbC9GaWxlVXRpbC5odG1sI2ZpbGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmZpbGUoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi91dGlsL0ZpbGVVdGlsLmh0bWwiPkZpbGVVdGlsPC9BPgo8REQ+QSBtZXRob2QgdG8gZ2V0IGEgRmlsZSBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNmaWxlQ29udGVudHNUb1N0cmluZyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZmlsZUNvbnRlbnRzVG9TdHJpbmcoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sIj5TdHJpbmdVdGlsczwvQT4KPEREPlJlYWQgdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSBhbmQgcGxhY2UgdGhlbSBpbgogYSBzdHJpbmcgb2JqZWN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNmaWxlRGVwdGgiPjxCPmZpbGVEZXB0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlRGlyZWN0aXZlRXhjZXB0aW9uLmh0bWwjZmlsZW5hbWVTdGFjayI+PEI+ZmlsZW5hbWVTdGFjazwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbi5odG1sIj5QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9GaWxlUmVzb3VyY2VMb2FkZXIuaHRtbCI+PEI+RmlsZVJlc291cmNlTG9hZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRmlsZVJlc291cmNlTG9hZGVyLmh0bWwiPkZpbGVSZXNvdXJjZUxvYWRlcjwvQT4uPEREPkEgbG9hZGVyIGZvciB0ZW1wbGF0ZXMgc3RvcmVkIG9uIHRoZSBmaWxlIHN5c3RlbS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9GaWxlUmVzb3VyY2VMb2FkZXIuaHRtbCNGaWxlUmVzb3VyY2VMb2FkZXIoKSI+PEI+RmlsZVJlc291cmNlTG9hZGVyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sIj5GaWxlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNmaWxlU2VwYXJhdG9yIj48Qj5maWxlU2VwYXJhdG9yPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7RmlsZSBzZXBhcmF0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNmaWxlU2VwYXJhdG9yIj48Qj5maWxlU2VwYXJhdG9yPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPlBhdGggc2VwYXJhdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi91dGlsL0ZpbGVVdGlsLmh0bWwiPjxCPkZpbGVVdGlsPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi91dGlsL0ZpbGVVdGlsLmh0bWwiPkZpbGVVdGlsPC9BPi48REQ+QSBnZW5lcmFsIGZpbGUgdXRpbGl0eSBmb3IgdXNlIGluIHRoZSBjb250ZXh0PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vdXRpbC9GaWxlVXRpbC5odG1sI0ZpbGVVdGlsKCkiPjxCPkZpbGVVdGlsKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vdXRpbC9GaWxlVXRpbC5odG1sIj5GaWxlVXRpbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNGaWxsQnVmZigpIj48Qj5GaWxsQnVmZigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sI2ZpbGxDb250ZXh0RGVmYXVsdHMob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQpIj48Qj5maWxsQ29udGV4dERlZmF1bHRzKENvbnRleHQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+QWRkIHByb3BlcnRpZXMgdGhhdCB3aWxsIGF3YXlzIGJlIGluIHRoZSBjb250ZXh0IGJ5IGRlZmF1bHQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjZmlsbENvbnRleHRIYXNoKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLnV0aWwuSGFzaHRhYmxlKSI+PEI+ZmlsbENvbnRleHRIYXNoKENvbnRleHQsIEhhc2h0YWJsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5BZGQgYWxsIHRoZSBjb250ZW50cyBvZiBhIEhhc2h0YWJsZSB0byB0aGUgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjZmlsbENvbnRleHRQcm9wZXJ0aWVzKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0KSI+PEI+ZmlsbENvbnRleHRQcm9wZXJ0aWVzKENvbnRleHQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+QWRkIG9iamVjdHMgdG8gdGhlIGNvbnRleHQgZnJvbSB0aGUgY3VycmVudCBwcm9wZXJ0aWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sI2ZpbmFsaXplKCkiPjxCPmZpbmFsaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwiPkxvZzRKTG9nU3lzdGVtPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7QWxzbyBkbyBhIHNodXRkb3duIGlmIHRoZSBvYmplY3QgaXMgZGVzdHJveSgpJ2QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwjZmluYWxpemUoKSI+PEI+ZmluYWxpemUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvU2ltcGxlTG9nNEpMb2dTeXN0ZW0uaHRtbCI+U2ltcGxlTG9nNEpMb2dTeXN0ZW08L0E+CjxERD5BbHNvIGRvIGEgc2h1dGRvd24gaWYgdGhlIG9iamVjdCBpcyBkZXN0cm95KCknZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyLmh0bWwjZmluZChvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuSW50cm9zcGVjdG9yVGVzdENhc2UyLkJhciwgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LkludHJvc3BlY3RvclRlc3RDYXNlMi5CYXIpIj48Qj5maW5kKEludHJvc3BlY3RvclRlc3RDYXNlMi5CYXIsIEludHJvc3BlY3RvclRlc3RDYXNlMi5CYXIpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3RlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIyLmh0bWwjZmluZChvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuSW50cm9zcGVjdG9yVGVzdENhc2UyLkJhciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmZpbmQoSW50cm9zcGVjdG9yVGVzdENhc2UyLkJhciwgT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMi5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIuaHRtbCNmaW5kKG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuV29vZ2llKSI+PEI+ZmluZChJbnRyb3NwZWN0b3JUZXN0Q2FzZTIuV29vZ2llKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMi5odG1sI2ZpbmQob3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LkludHJvc3BlY3RvclRlc3RDYXNlMi5Xb29naWUpIj48Qj5maW5kKEludHJvc3BlY3RvclRlc3RDYXNlMi5Xb29naWUpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3Rlci5odG1sI2ZpbmQob3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LkludHJvc3BlY3RvclRlc3RDYXNlMi5Xb29naWUsIGphdmEubGFuZy5PYmplY3QpIj48Qj5maW5kKEludHJvc3BlY3RvclRlc3RDYXNlMi5Xb29naWUsIE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3Rlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3RlcjIuaHRtbCNmaW5kKG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuV29vZ2llLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZmluZChJbnRyb3NwZWN0b3JUZXN0Q2FzZTIuV29vZ2llLCBPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3Rlci5odG1sI2ZpbmQoamF2YS5sYW5nLk9iamVjdCkiPjxCPmZpbmQoT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMi5odG1sI2ZpbmQoamF2YS5sYW5nLk9iamVjdCkiPjxCPmZpbmQoT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMi5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIuaHRtbCNmaW5kKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuQmFyKSI+PEI+ZmluZChPYmplY3QsIEludHJvc3BlY3RvclRlc3RDYXNlMi5CYXIpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3RlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXIyLmh0bWwjZmluZChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuSW50cm9zcGVjdG9yVGVzdENhc2UyLkJhcikiPjxCPmZpbmQoT2JqZWN0LCBJbnRyb3NwZWN0b3JUZXN0Q2FzZTIuQmFyKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMi5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwjZmluZChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10pIj48Qj5maW5kKFN0cmluZywgT2JqZWN0W10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sIj5NZXRob2RNYXA8L0E+CjxERD4KICBGaW5kIGEgbWV0aG9kLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1Rlc3RDbGFzc2xvYWRlci5odG1sI2ZpbmRDbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZmluZENsYXNzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXN0Q2xhc3Nsb2FkZXIuaHRtbCI+VGVzdENsYXNzbG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI2ZpbmRNZXRob2QoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdFtdKSI+PEI+ZmluZE1ldGhvZChTdHJpbmcsIE9iamVjdFtdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sIj5DbGFzc01hcDwvQT4KPEREPkZpbmQgYSBNZXRob2QgdXNpbmcgdGhlIG1ldGhvZEtleQogcHJvdmlkZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sI2ZpbmRUZW1wbGF0ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZmluZFRlbXBsYXRlKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRmlsZVJlc291cmNlTG9hZGVyLmh0bWwiPkZpbGVSZXNvdXJjZUxvYWRlcjwvQT4KPEREPlRyeSB0byBmaW5kIGEgdGVtcGxhdGUgZ2l2ZW4gYSBub3JtYWxpemVkIHBhdGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5KSkNhbGxzLmh0bWwjZmlyc3QiPjxCPmZpcnN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5KSkNhbGxzLmh0bWwiPlBhcnNlci5KSkNhbGxzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI2ZpcnN0Ij48Qj5maXJzdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNmaXJzdExldHRlckNhcHMoamF2YS5sYW5nLlN0cmluZykiPjxCPmZpcnN0TGV0dGVyQ2FwcyhTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwiPlN0cmluZ1V0aWxzPC9BPgo8REQ+IAogIE1ha2VzIHRoZSBmaXJzdCBsZXR0ZXIgY2FwcyBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwjZmxvYXRNZXRob2QoZmxvYXQpIj48Qj5mbG9hdE1ldGhvZChmbG9hdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI2ZsdXNoKCkiPjxCPmZsdXNoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+Rmx1c2ggdGhlIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNmbHVzaEJ1ZmZlcigpIj48Qj5mbHVzaEJ1ZmZlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPkZsdXNoIHRoZSBvdXRwdXQgYnVmZmVyIHRvIHRoZSB1bmRlcmx5aW5nIGNoYXJhY3RlciBzdHJlYW0sIHdpdGhvdXQKIGZsdXNoaW5nIHRoZSBzdHJlYW0gaXRzZWxmLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNmbHVzaEJ1ZmZlcigpIj48Qj5mbHVzaEJ1ZmZlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjZmx1c2hlZCI+PEI+Zmx1c2hlZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1Rlc3RDbGFzc2xvYWRlci5odG1sI2Zvb0NsYXNzIj48Qj5mb29DbGFzczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVzdENsYXNzbG9hZGVyLmh0bWwiPlRlc3RDbGFzc2xvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwiPjxCPkZvcmVhY2g8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwiPkZvcmVhY2g8L0E+LjxERD5Gb3JlYWNoIGRpcmVjdGl2ZSB1c2VkIGZvciBtb3ZpbmcgdGhyb3VnaCBhcnJheXMsCiBvciBvYmplY3RzIHRoYXQgcHJvdmlkZSBhbiBJdGVyYXRvci48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwjRm9yZWFjaCgpIj48Qj5Gb3JlYWNoKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0ZvcmVhY2guaHRtbCI+Rm9yZWFjaDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNGT1JNQUxfQ09NTUVOVCI+PEI+Rk9STUFMX0NPTU1FTlQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjRk9STUFMX1JFRkVSRU5DRSI+PEI+Rk9STUFMX1JFRkVSRU5DRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjZm9ybWF0QXJyYXkoamF2YS5sYW5nLk9iamVjdCkiPjxCPmZvcm1hdEFycmF5KE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXI8L0E+CjxERD5Gb3JtYXRzIGFuIGFycmF5IGludG8gdGhlIGZvcm0gIkEsIEIgYW5kIEMiLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCNmb3JtYXRBcnJheShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Zm9ybWF0QXJyYXkoT2JqZWN0LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyPC9BPgo8REQ+Rm9ybWF0cyBhbiBhcnJheSBpbnRvIHRoZSBmb3JtCiAiQSZsdDtkZWxpbSZndDtCJmx0O2RlbGltJmd0O0MiLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCNmb3JtYXRBcnJheShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Zm9ybWF0QXJyYXkoT2JqZWN0LCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXI8L0E+CjxERD5Gb3JtYXRzIGFuIGFycmF5IGludG8gdGhlIGZvcm0KICJBJmx0O2RlbGltJmd0O0ImbHQ7ZmluYWxkZWxpbSZndDtDIi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjZm9ybWF0TG9uZ0RhdGUoamF2YS51dGlsLkRhdGUpIj48Qj5mb3JtYXRMb25nRGF0ZShEYXRlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPkZvcm1hdHMgYSBkYXRlIGluIDxjb2RlPkRhdGVGb3JtYXQuTE9ORzwvY29kZT4gc3R5bGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sI2Zvcm1hdExvbmdEYXRlVGltZShqYXZhLnV0aWwuRGF0ZSkiPjxCPmZvcm1hdExvbmdEYXRlVGltZShEYXRlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPkZvcm1hdHMgYSBkYXRlL3RpbWUgaW4gJ2xvbmcnIHN0eWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCNmb3JtYXRTaG9ydERhdGUoamF2YS51dGlsLkRhdGUpIj48Qj5mb3JtYXRTaG9ydERhdGUoRGF0ZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXI8L0E+CjxERD5Gb3JtYXRzIGEgZGF0ZSBpbiA8Y29kZT5EYXRlRm9ybWF0LlNIT1JUPC9jb2RlPiBzdHlsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjZm9ybWF0U2hvcnREYXRlVGltZShqYXZhLnV0aWwuRGF0ZSkiPjxCPmZvcm1hdFNob3J0RGF0ZVRpbWUoRGF0ZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXI8L0E+CjxERD5Gb3JtYXRzIGEgZGF0ZS90aW1lIGluICdzaG9ydCcgc3R5bGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sI2Zvcm1hdFZlY3RvcihqYXZhLnV0aWwuTGlzdCkiPjxCPmZvcm1hdFZlY3RvcihMaXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPkZvcm1hdHMgYSB2ZWN0b3IgaW50byB0aGUgZm9ybSAiQSwgQiBhbmQgQyIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sI2Zvcm1hdFZlY3RvcihqYXZhLnV0aWwuTGlzdCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmZvcm1hdFZlY3RvcihMaXN0LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyPC9BPgo8REQ+Rm9ybWF0cyBhIHZlY3RvciBpbnRvIHRoZSBmb3JtICJBJmx0O2RlbGltJmd0O0ImbHQ7ZGVsaW0mZ3Q7QyIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sI2Zvcm1hdFZlY3RvcihqYXZhLnV0aWwuTGlzdCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmZvcm1hdFZlY3RvcihMaXN0LCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXI8L0E+CjxERD5Gb3JtYXRzIGEgbGlzdCBpbnRvIHRoZSBmb3JtCiAiQWRlbGltJmd0O0ImbHQ7ZmluYWxkZWxpbSZndDtDIi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sI2Zyb21MaWJyYXJ5Ij48Qj5mcm9tTGlicmFyeTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnk8L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBOQU1FPSJfR18iPjwhLS0gLS0+PC9BPjxIMj4KPEI+RzwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5KSkNhbGxzLmh0bWwjZ2VuIj48Qj5nZW48L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLkpKQ2FsbHMuaHRtbCI+UGFyc2VyLkpKQ2FsbHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI0dFTkVSQUxTVEFUSUMiPjxCPkdFTkVSQUxTVEFUSUM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+aW4gdGhlIGV2ZW50IG91ciB0eXBlIGlzIHN3aXRjaGVkIC0gd2UgZG9uJ3QgY2FyZSByZWFsbHkgd2hhdCBpdCBpcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNnZW5lcmF0ZVBhcnNlRXhjZXB0aW9uKCkiPjxCPmdlbmVyYXRlUGFyc2VFeGNlcHRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+PEI+R2VuZXJhdG9yPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4uPEREPkEgdGV4dC9jb2RlIGdlbmVyYXRvciBjbGFzczxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sI0dlbmVyYXRvcigpIj48Qj5HZW5lcmF0b3IoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPkRlZmF1bHQgY29uc3RydWN0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sI0dlbmVyYXRvcihqYXZhLnV0aWwuUHJvcGVydGllcykiPjxCPkdlbmVyYXRvcihQcm9wZXJ0aWVzKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPkNyZWF0ZSBhIG5ldyBHZW5lcmF0b3Igb2JqZWN0IHdpdGggYSBnaXZlbiBwcm9wZXJ0eQogc2V0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNHZW5lcmF0b3IoamF2YS5sYW5nLlN0cmluZykiPjxCPkdlbmVyYXRvcihTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+Q3JlYXRlIGEgbmV3IGdlbmVyYXRvciBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGxvYWRlZCBmcm9tCiBhIGZpbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU2ltcGxlUG9vbC5odG1sI2dldCgpIj48Qj5nZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1NpbXBsZVBvb2wuaHRtbCI+U2ltcGxlUG9vbDwvQT4KPEREPkdldCBhbiBvYmplY3QgZnJvbSB0aGUgcG9vbCwgbnVsbCBpZiB0aGUgcG9vbCBpcyBlbXB0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjZ2V0KGludCkiPjxCPmdldChpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCNnZXQoamF2YS5sYW5nLk9iamVjdCkiPjxCPmdldChPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCI+UmVzb3VyY2VDYWNoZUltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlLmh0bWwjZ2V0KGphdmEubGFuZy5PYmplY3QpIj48Qj5nZXQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlLmh0bWwiPlJlc291cmNlQ2FjaGU8L0E+CjxERD5yZXRyaWV2ZXMgYSBSZXNvdXJjZSBmcm9tIHRoZQogIGNhY2hlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9GaWVsZE1ldGhvZGl6ZXIuaHRtbCNnZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sIj5GaWVsZE1ldGhvZGl6ZXI8L0E+CjxERD5BY2Nlc3NvciBtZXRob2QgdG8gZ2V0IHRoZSBmaWVsZHMgYnkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCNnZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwiPkFic3RyYWN0Q29udGV4dDwvQT4KPEREPkdldHMgdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIGtleSBmcm9tIHRoZSBjb250ZXh0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwjZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwiPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQ29udGV4dC5odG1sI2dldChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQ29udGV4dC5odG1sIj5Db250ZXh0PC9BPgo8REQ+R2V0cyB0aGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQga2V5IGZyb20gdGhlIGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sIj5WTUNvbnRleHQ8L0E+CjxERD5JbXBsIG9mIHRoZSBDb250ZXh0Lmd1dCgpIG1ldGhvZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNnZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPlRlc3QgdGhlIGFiaWxpdHkgb2YgdmVsIHRvIHVzZSBhIGdldChrZXkpCiBtZXRob2QgZm9yIGFueSBvYmplY3QgdHlwZSwgbm90IGp1c3Qgb25lCiB0aGF0IGltcGxlbWVudHMgdGhlIE1hcCBpbnRlcmZhY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCNnZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sIj5NZXRob2RNYXA8L0E+CjxERD5SZXR1cm4gYSBsaXN0IG9mIG1ldGhvZHMgd2l0aCB0aGUgc2FtZSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI2dldChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD5nZXRzIGEgbmV3IGxpdmluZyBWZWxvY2ltYWNyb1Byb3h5IG9iamVjdCBieSB0aGUgCiBuYW1lIC8gc291cmNlIHRlbXBsYXRlIGR1cGxlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI2dldEFjY2Vzc2libGVNZXRob2RzKGphdmEubGFuZy5DbGFzcykiPjxCPmdldEFjY2Vzc2libGVNZXRob2RzKENsYXNzKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCI+Q2xhc3NNYXA8L0E+CjxERD5SZXRyaWV2ZXMgcHVibGljIG1ldGhvZHMgZm9yIGEgY2xhc3MuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI2dldEFjY2Vzc2libGVNZXRob2RzKGphdmEubGFuZy5DbGFzcywgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uQ2xhc3NNYXAuTWV0aG9kSW5mb1tdLCBpbnQpIj48Qj5nZXRBY2Nlc3NpYmxlTWV0aG9kcyhDbGFzcywgQ2xhc3NNYXAuTWV0aG9kSW5mb1tdLCBpbnQpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sIj5DbGFzc01hcDwvQT4KPEREPlJlY3Vyc2l2ZWx5IGZpbmRzIGEgbWF0Y2ggZm9yIGVhY2ggbWV0aG9kLCBzdGFydGluZyB3aXRoIHRoZSBjbGFzcywgYW5kIHRoZW4KICBzZWFyY2hpbmcgdGhlIHN1cGVyY2xhc3MgYW5kIGludGVyZmFjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCNnZXRBcHBsaWNhYmxlcyhqYXZhLnV0aWwuTGlzdCwgamF2YS5sYW5nLkNsYXNzW10pIj48Qj5nZXRBcHBsaWNhYmxlcyhMaXN0LCBDbGFzc1tdKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwiPk1ldGhvZE1hcDwvQT4KPEREPlJldHVybnMgYWxsIG1ldGhvZHMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byBhY3R1YWwgYXJndW1lbnQgdHlwZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjZ2V0QXBwbGljYXRpb25BdHRyaWJ1dGUoamF2YS5sYW5nLk9iamVjdCkiPjxCPmdldEFwcGxpY2F0aW9uQXR0cmlidXRlKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2dldEFwcGxpY2F0aW9uQXR0cmlidXRlKGphdmEubGFuZy5PYmplY3QpIj48Qj5nZXRBcHBsaWNhdGlvbkF0dHJpYnV0ZShPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sI2dldEFwcGxpY2F0aW9uQXR0cmlidXRlKGphdmEubGFuZy5PYmplY3QpIj48Qj5nZXRBcHBsaWNhdGlvbkF0dHJpYnV0ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5SZXR1cm4gdGhlIHNwZWNpZmllZCBhcHBsY2F0aW9uIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI2dldEFyZ0FycmF5KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5Ob2RlKSI+PEI+Z2V0QXJnQXJyYXkoTm9kZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCI+VmVsb2NpbWFjcm9Qcm94eTwvQT4KPEREPmdldHMgdGhlIGFyZ3MgdG8gdGhlIFZNIGZyb20gdGhlIGluc3RhbmNlLXVzZSBBU1QKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm8uaHRtbCNnZXRBcmdBcnJheShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPmdldEFyZ0FycmF5KE5vZGUpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm8uaHRtbCI+TWFjcm88L0E+CjxERD5jcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGxpdGVyYWwKICBzdHJpbmdzIGluIHRoZSBtYWNybyBhcmd1ZW1lbnQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNnZXRBcnJheSgpIj48Qj5nZXRBcnJheSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sI2dldEFTVEFzU3RyaW5nQXJyYXkob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUpIj48Qj5nZXRBU1RBc1N0cmluZ0FycmF5KE5vZGUpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm8uaHRtbCI+TWFjcm88L0E+CjxERD5SZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBsaXRlcmFsIHJlcCBvZiB0aGUgQVNUCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNnZXRBdHRyaWJ1dGUoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEF0dHJpYnV0ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldEF0dHJpYnV0ZU5hbWVzKCkiPjxCPmdldEF0dHJpYnV0ZU5hbWVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhRWxlbWVudC5odG1sI2dldEF0dHJpYnV0ZXMoKSI+PEI+Z2V0QXR0cmlidXRlcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4KPEREPgogVGhpcyByZXR1cm5zIHRoZSBjb21wbGV0ZSBzZXQgb2YgYXR0cmlidXRlcyBmb3IgdGhpcyBlbGVtZW50LCBhcyBhIAogPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+IG9mIDxjb2RlPkF0dHJpYnV0ZTwvY29kZT4gb2JqZWN0cyBpbiBubyBwYXJ0aWN1bGFyIAogb3JkZXIsIG9yIGFuIGVtcHR5IGxpc3QgaWYgdGhlcmUgYXJlIG5vbmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjZ2V0QXV0b2xvYWQoKSI+PEI+Z2V0QXV0b2xvYWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5nZXQgdGhlIHN3aXRjaCBmb3IgYXV0b21hdGljIHJlbG9hZGluZyBvZgogIGdsb2JhbCBsaWJyYXJ5LWJhc2VkIFZNcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwjZ2V0QmFzZUNvbnRleHQoKSI+PEI+Z2V0QmFzZUNvbnRleHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwiPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsPC9BPgo8REQ+UmV0dXJucyB0aGUgYmFzZSBjb250ZXh0IHRoYXQgd2UgYXJlIAogIHdyYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsV3JhcHBlckNvbnRleHQuaHRtbCNnZXRCYXNlQ29udGV4dCgpIj48Qj5nZXRCYXNlQ29udGV4dCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsV3JhcHBlckNvbnRleHQuaHRtbCI+SW50ZXJuYWxXcmFwcGVyQ29udGV4dDwvQT4KPEREPnJldHVybnMgdGhlIGJhc2UgZnVsbCBjb250ZXh0IGltcGwKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCNnZXRCYXNlQ29udGV4dCgpIj48Qj5nZXRCYXNlQ29udGV4dCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNnZXRCZWdpbkNvbHVtbigpIj48Qj5nZXRCZWdpbkNvbHVtbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCNnZXRCZWdpbkNvbHVtbigpIj48Qj5nZXRCZWdpbkNvbHVtbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sIj5DaGFyU3RyZWFtPC9BPgo8REQ+UmV0dXJucyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGZvciBjdXJyZW50IHRva2VuIChiZWluZwogbWF0Y2hlZCBhZnRlciB0aGUgbGFzdCBjYWxsIHRvIEJlZ2luVE9rZW4pLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNnZXRCZWdpbkxpbmUoKSI+PEI+Z2V0QmVnaW5MaW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sI2dldEJlZ2luTGluZSgpIj48Qj5nZXRCZWdpbkxpbmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCI+Q2hhclN0cmVhbTwvQT4KPEREPlJldHVybnMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgZm9yIGN1cnJlbnQgdG9rZW4gKGJlaW5nCiBtYXRjaGVkIGFmdGVyIHRoZSBsYXN0IGNhbGwgdG8gQmVnaW5UT2tlbikuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjZ2V0QmxhdGhlcigpIj48Qj5nZXRCbGF0aGVyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPgo8REQ+Z2V0IG91dHB1dCBtZXNzYWdlIG1vZGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRCb29sZWFuKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRCb29sZWFuKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgYm9vbGVhbiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24ga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldEJvb2xlYW4oamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPjxCPmdldEJvb2xlYW4oU3RyaW5nLCBib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5Cb29sZWFuIHByb3BlcnR5IGFjY2Vzc29yIG1ldGhvZCB0byBoaWRlIHRoZSBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCNnZXRCb29sZWFuKGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pIj48Qj5nZXRCb29sZWFuKFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Qm9vbGVhbiBwcm9wZXJ0eSBhY2Nlc3NvciBtZXRob2QgdG8gaGlkZSB0aGUgY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0Qm9vbGVhbihqYXZhLmxhbmcuU3RyaW5nLCBib29sZWFuKSI+PEI+Z2V0Qm9vbGVhbihTdHJpbmcsIGJvb2xlYW4pPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPkJvb2xlYW4gcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGhpZGUgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZ2V0Qm9vbGVhbihqYXZhLmxhbmcuU3RyaW5nLCBib29sZWFuKSI+PEI+Z2V0Qm9vbGVhbihTdHJpbmcsIGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5Cb29sZWFuIHByb3BlcnR5IGFjY2Vzc29yIG1ldGhvZCB0byBoaWRlIHRoZSBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldEJvb2xlYW4oamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPjxCPmdldEJvb2xlYW4oU3RyaW5nLCBib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBib29sZWFuIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0Qm9vbGVhbihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQm9vbGVhbikiPjxCPmdldEJvb2xlYW4oU3RyaW5nLCBCb29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBib29sZWFuIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjZ2V0QnVmZmVyU2l6ZSgpIj48Qj5nZXRCdWZmZXJTaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+VGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgYnkgdGhlIEpzcFdyaXRlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjZ2V0QnVmZmVyU2l6ZSgpIj48Qj5nZXRCdWZmZXJTaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRCeXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRCeXRlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgYnl0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24ga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldEJ5dGUoamF2YS5sYW5nLlN0cmluZywgYnl0ZSkiPjxCPmdldEJ5dGUoU3RyaW5nLCBieXRlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBieXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0Qnl0ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQnl0ZSkiPjxCPmdldEJ5dGUoU3RyaW5nLCBCeXRlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBieXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI2dldENhY2hlZENsYXNzKCkiPjxCPmdldENhY2hlZENsYXNzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCI+Q2xhc3NNYXA8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI2dldENhbGxlclJlZmVyZW5jZSgpIj48Qj5nZXRDYWxsZXJSZWZlcmVuY2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwjZ2V0Q2hhaW5lZENvbnRleHQoKSI+PEI+Z2V0Q2hhaW5lZENvbnRleHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sIj5BYnN0cmFjdENvbnRleHQ8L0E+CjxERD5yZXR1cm5zIGlubmVyQ29udGV4dCBpZiBvbmUgaXMgY2hhaW5lZAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNnZXRDaGFyYWN0ZXJFbmNvZGluZygpIj48Qj5nZXRDaGFyYWN0ZXJFbmNvZGluZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjZ2V0Q2hpbGQoKSI+PEI+Z2V0Q2hpbGQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCNnZXRDaGlsZHJlbigpIj48Qj5nZXRDaGlsZHJlbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4KPEREPgogVGhpcyByZXR1cm5zIGEgPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+IG9mIGFsbCB0aGUgY2hpbGQgZWxlbWVudHMKIG5lc3RlZCBkaXJlY3RseSAob25lIGxldmVsIGRlZXApIHdpdGhpbiB0aGlzIGVsZW1lbnQsIGFzIAogPGNvZGU+RWxlbWVudDwvY29kZT4gb2JqZWN0cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCNnZXRDaGlsZHJlbihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0Q2hpbGRyZW4oU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFFbGVtZW50Lmh0bWwiPkFuYWtpYUVsZW1lbnQ8L0E+CjxERD4KIFRoaXMgcmV0dXJucyBhIDxjb2RlPk5vZGVMaXN0PC9jb2RlPiBvZiBhbGwgdGhlIGNoaWxkIGVsZW1lbnRzCiBuZXN0ZWQgZGlyZWN0bHkgKG9uZSBsZXZlbCBkZWVwKSB3aXRoaW4gdGhpcyBlbGVtZW50IHdpdGggdGhlIGdpdmVuCiBsb2NhbCBuYW1lIGFuZCBiZWxvbmdpbmcgdG8gbm8gbmFtZXNwYWNlLCByZXR1cm5lZCBhcyAKIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IG9iamVjdHMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFFbGVtZW50Lmh0bWwjZ2V0Q2hpbGRyZW4oamF2YS5sYW5nLlN0cmluZywgb3JnLmpkb20uTmFtZXNwYWNlKSI+PEI+Z2V0Q2hpbGRyZW4oU3RyaW5nLCBOYW1lc3BhY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4KPEREPgogVGhpcyByZXR1cm5zIGEgPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+IG9mIGFsbCB0aGUgY2hpbGQgZWxlbWVudHMKIG5lc3RlZCBkaXJlY3RseSAob25lIGxldmVsIGRlZXApIHdpdGhpbiB0aGlzIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4KIGxvY2FsIG5hbWUgYW5kIGJlbG9uZ2luZyB0byB0aGUgZ2l2ZW4gTmFtZXNwYWNlLCByZXR1cm5lZCBhcyAKIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IG9iamVjdHMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwjZ2V0Q2xhc3NOYW1lKCkiPjxCPmdldENsYXNzTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sIj5SZXNvdXJjZUxvYWRlcjwvQT4KPEREPlJldHVybiB0aGUgY2xhc3MgbmFtZSBvZiB0aGlzIHJlc291cmNlIExvYWRlcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCNnZXRDb2x1bW4oKSI+PEI+Z2V0Q29sdW1uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sIj5EaXJlY3RpdmU8L0E+CjxERD5mb3IgbG9nIG1zZyBwdXJwb3Nlcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNnZXRDb2x1bW4oKSI+PEI+Z2V0Q29sdW1uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST48L0k+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCNnZXRDb2x1bW4oKSI+PEI+Z2V0Q29sdW1uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9DaGFyU3RyZWFtLmh0bWwiPkNoYXJTdHJlYW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST48L0k+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI2dldENvbHVtbigpIj48Qj5nZXRDb2x1bW4oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCNnZXRDb2x1bW4oKSI+PEI+Z2V0Q29sdW1uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbmZvLmh0bWwjZ2V0Q29sdW1uKCkiPjxCPmdldENvbHVtbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0luZm8uaHRtbCI+SW5mbzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldENvbmZpZ3VyYXRpb24oKSI+PEI+Z2V0Q29uZmlndXJhdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlJldHVybiB0aGUgdmVsb2NpdHkgcnVudGltZSBjb25maWd1cmF0aW9uIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0Q29uZmlndXJhdGlvbigpIj48Qj5nZXRDb25maWd1cmF0aW9uKCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSB2ZWxvY2l0eSBydW50aW1lIGNvbmZpZ3VyYXRpb24gb2JqZWN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNnZXRDb25maWd1cmF0aW9uKCkiPjxCPmdldENvbmZpZ3VyYXRpb24oKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5SZXR1cm4gdGhlIHZlbG9jaXR5IHJ1bnRpbWUgY29uZmlndXJhdGlvbiBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZ2V0Q29uZmlndXJhdGlvbigpIj48Qj5nZXRDb25maWd1cmF0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPlJldHVybiB0aGUgdmVsb2NpdHkgcnVudGltZSBjb25maWd1cmF0aW9uIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCNnZXRDb250ZW50KCkiPjxCPmdldENvbnRlbnQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFFbGVtZW50Lmh0bWwiPkFuYWtpYUVsZW1lbnQ8L0E+CjxERD4KIFRoaXMgcmV0dXJucyB0aGUgZnVsbCBjb250ZW50IG9mIHRoZSBlbGVtZW50IGFzIGEgTm9kZUxpc3Qgd2hpY2gKIG1heSBjb250YWluIG9iamVjdHMgb2YgdHlwZSA8Y29kZT5TdHJpbmc8L2NvZGU+LCA8Y29kZT5FbGVtZW50PC9jb2RlPiwKIDxjb2RlPkNvbW1lbnQ8L2NvZGU+LCA8Y29kZT5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb248L2NvZGU+LAogPGNvZGU+Q0RBVEE8L2NvZGU+LCBhbmQgPGNvZGU+RW50aXR5UmVmPC9jb2RlPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNnZXRDb250ZW50KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRDb250ZW50KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+UmV0dXJucyBhIHN0YXRpYyBjb250ZW50IHJlc291cmNlIGZyb20gdGhlCiByZXNvdXJjZSBtYW5hZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCNnZXRDb250ZW50KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRDb250ZW50KFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJucyBhIHN0YXRpYyBjb250ZW50IHJlc291cmNlIGZyb20gdGhlCiByZXNvdXJjZSBtYW5hZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNnZXRDb250ZW50KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRDb250ZW50KFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+UmV0dXJucyBhIHN0YXRpYyBjb250ZW50IHJlc291cmNlIGZyb20gdGhlCiByZXNvdXJjZSBtYW5hZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sI2dldENvbnRlbnQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldENvbnRlbnQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+UmV0dXJucyBhIHN0YXRpYyBjb250ZW50IHJlc291cmNlIGZyb20gdGhlCiByZXNvdXJjZSBtYW5hZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldENvbnRlbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldENvbnRlbnQoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlJldHVybnMgYSBzdGF0aWMgY29udGVudCByZXNvdXJjZSBmcm9tIHRoZQogcmVzb3VyY2UgbWFuYWdlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0Q29udGVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0Q29udGVudChTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJucyBhIHN0YXRpYyBjb250ZW50IHJlc291cmNlIGZyb20gdGhlCiByZXNvdXJjZSBtYW5hZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNnZXRDb250ZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRDb250ZW50KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5SZXR1cm5zIGEgc3RhdGljIGNvbnRlbnQgcmVzb3VyY2UgZnJvbSB0aGUKIHJlc291cmNlIG1hbmFnZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZ2V0Q29udGVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0Q29udGVudChTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPlJldHVybnMgYSBzdGF0aWMgY29udGVudCByZXNvdXJjZSBmcm9tIHRoZQogcmVzb3VyY2UgbWFuYWdlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjZ2V0Q29udGV4dChqYXZhLnV0aWwuSGFzaHRhYmxlKSI+PEI+Z2V0Q29udGV4dChIYXNodGFibGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+Q3JlYXRlIGEgbmV3IGNvbnRleHQgYW5kIGZpbGwgaXQgd2l0aCB0aGUgZWxlbWVudHMgb2YgdGhlCiBvYmpzIEhhc2h0YWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldENvbnRleHQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldENvbnRleHQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNnZXRDb250ZXh0UHJvcGVydGllcygpIj48Qj5nZXRDb250ZXh0UHJvcGVydGllcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uYW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sIj5UZXhlblRhc2s8L0E+CjxERD5HZXQgdGhlIGNvbnRleHQgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUKIGZlZCBpbnRvIHRoZSBpbml0aWFsIGNvbnRleHQgYmUgdGhlCiBnZW5lcmF0aW5nIHByb2Nlc3Mgc3RhcnRzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwjZ2V0Q29udGV4dFJlZmVyZW5jZSgpIj48Qj5nZXRDb250ZXh0UmVmZXJlbmNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCI+Vk1Qcm94eUFyZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjZ2V0Q29udHJvbFRlbXBsYXRlKCkiPjxCPmdldENvbnRyb2xUZW1wbGF0ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uYW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sIj5UZXhlblRhc2s8L0E+CjxERD5HZXQgdGhlIGNvbnRyb2wgdGVtcGxhdGUgZm9yIHRoZQogZ2VuZXJhdGluZyBwcm9jZXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCNnZXRDdXJyZW50UmVzb3VyY2UoKSI+PEI+Z2V0Q3VycmVudFJlc291cmNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwiPkludGVybmFsQ29udGV4dEJhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI2dldEN1cnJlbnRSZXNvdXJjZSgpIj48Qj5nZXRDdXJyZW50UmVzb3VyY2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwiPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjZ2V0Q3VycmVudFJlc291cmNlKCkiPjxCPmdldEN1cnJlbnRSZXNvdXJjZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sI2dldEN1cnJlbnRSZXNvdXJjZSgpIj48Qj5nZXRDdXJyZW50UmVzb3VyY2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQuaHRtbCI+SW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0PC9BPgo8REQ+dGVtcG9yYXJ5IGZpeCB0byBlbmFibGUgI2luY2x1ZGUoKSB0byBmaWd1cmUgb3V0CiAgY3VycmVudCBlbmNvZGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwjZ2V0Q3VycmVudFRlbXBsYXRlTmFtZSgpIj48Qj5nZXRDdXJyZW50VGVtcGxhdGVOYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwiPkludGVybmFsQ29udGV4dEJhc2U8L0E+CjxERD5nZXQgdGhlIGN1cnJlbnQgdGVtcGxhdGUgbmFtZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwjZ2V0Q3VycmVudFRlbXBsYXRlTmFtZSgpIj48Qj5nZXRDdXJyZW50VGVtcGxhdGVOYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sIj5JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI2dldEN1cnJlbnRUZW1wbGF0ZU5hbWUoKSI+PEI+Z2V0Q3VycmVudFRlbXBsYXRlTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sI2dldEN1cnJlbnRUZW1wbGF0ZU5hbWUoKSI+PEI+Z2V0Q3VycmVudFRlbXBsYXRlTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sIj5JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQ8L0E+CjxERD5nZXQgdGhlIGN1cnJlbnQgdGVtcGxhdGUgbmFtZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2dldEN1c3RvbWVycygpIj48Qj5nZXRDdXN0b21lcnMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNnZXRDdXN0b21lcnMyKCkiPjxCPmdldEN1c3RvbWVyczIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI2dldERhdGEoKSI+PEI+Z2V0RGF0YSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD5HZXQgYXJiaXRyYXJ5IGRhdGEgb2JqZWN0IHRoYXQgbWlnaHQgYmUgdXNlZAogYnkgdGhlIHJlc291cmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNnZXREaXJlY3RpdmUoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldERpcmVjdGl2ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+VGhpcyBtZXRob2QgZ2V0cyBhIERpcmVjdGl2ZSBmcm9tIHRoZSBkaXJlY3RpdmVzIEhhc2h0YWJsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVERpcmVjdGl2ZS5odG1sI2dldERpcmVjdGl2ZU5hbWUoKSI+PEI+Z2V0RGlyZWN0aXZlTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwiPkFTVERpcmVjdGl2ZTwvQT4KPEREPkdldHMgdGhlIG5hbWUgb2YgdGhpcyBkaXJlY3RpdmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0RG91YmxlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXREb3VibGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBkb3VibGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXREb3VibGUoamF2YS5sYW5nLlN0cmluZywgZG91YmxlKSI+PEI+Z2V0RG91YmxlKFN0cmluZywgZG91YmxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBkb3VibGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXREb3VibGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkRvdWJsZSkiPjxCPmdldERvdWJsZShTdHJpbmcsIERvdWJsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgZG91YmxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjZ2V0RW1wdHlMaXN0KCkiPjxCPmdldEVtcHR5TGlzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjZ2V0RW5jb2RpbmcoKSI+PEI+Z2V0RW5jb2RpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+Z2V0IHRoZSBlbmNvZGluZyBvZiB0aGlzIHJlc291cmNlCiAgZm9yIGV4YW1wbGUsICJJU08tODg1OS0xIgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNnZXRFbmRDb2x1bW4oKSI+PEI+Z2V0RW5kQ29sdW1uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sI2dldEVuZENvbHVtbigpIj48Qj5nZXRFbmRDb2x1bW4oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCI+Q2hhclN0cmVhbTwvQT4KPEREPlJldHVybnMgdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGxhc3QgY2hhcmFjdGVyIGZvciBjdXJyZW50IHRva2VuIChiZWluZwogbWF0Y2hlZCBhZnRlciB0aGUgbGFzdCBjYWxsIHRvIEJlZ2luVE9rZW4pLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNnZXRFbmRMaW5lKCkiPjxCPmdldEVuZExpbmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9DaGFyU3RyZWFtLmh0bWwjZ2V0RW5kTGluZSgpIj48Qj5nZXRFbmRMaW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9DaGFyU3RyZWFtLmh0bWwiPkNoYXJTdHJlYW08L0E+CjxERD5SZXR1cm5zIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgZm9yIGN1cnJlbnQgdG9rZW4gKGJlaW5nCiBtYXRjaGVkIGFmdGVyIHRoZSBsYXN0IGNhbGwgdG8gQmVnaW5UT2tlbikuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sI2dldEVudHJpZXMoKSI+PEI+Z2V0RW50cmllcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJIb2xkZXIuaHRtbCI+SmFySG9sZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QmFzZS5odG1sI2dldEV2ZW50Q2FydHJpZGdlKCkiPjxCPmdldEV2ZW50Q2FydHJpZGdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwiPkludGVybmFsQ29udGV4dEJhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI2dldEV2ZW50Q2FydHJpZGdlKCkiPjxCPmdldEV2ZW50Q2FydHJpZGdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sIj5JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsRXZlbnRDb250ZXh0Lmh0bWwjZ2V0RXZlbnRDYXJ0cmlkZ2UoKSI+PEI+Z2V0RXZlbnRDYXJ0cmlkZ2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbEV2ZW50Q29udGV4dC5odG1sIj5JbnRlcm5hbEV2ZW50Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI2dldEV2ZW50Q2FydHJpZGdlKCkiPjxCPmdldEV2ZW50Q2FydHJpZGdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvR2V0RXhlY3V0b3IuaHRtbCI+PEI+R2V0RXhlY3V0b3I8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvR2V0RXhlY3V0b3IuaHRtbCI+R2V0RXhlY3V0b3I8L0E+LjxERD5FeGVjdXRvciB0aGF0IHNpbXBseSB0cmllcyB0byBleGVjdXRlIGEgZ2V0KGtleSkKIG9wZXJhdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0dldEV4ZWN1dG9yLmh0bWwjR2V0RXhlY3V0b3Iob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLlJ1bnRpbWVMb2dnZXIsIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLkludHJvc3BlY3RvciwgamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+R2V0RXhlY3V0b3IoUnVudGltZUxvZ2dlciwgSW50cm9zcGVjdG9yLCBDbGFzcywgU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0dldEV4ZWN1dG9yLmh0bWwiPkdldEV4ZWN1dG9yPC9BPgo8REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRFeHRlbmRlZFByb3BlcnRpZXMoKSI+PEI+Z2V0RXh0ZW5kZWRQcm9wZXJ0aWVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+RG8gbm90IHVzZS4gIEZvciBkZXByZWNhdGlvbiBhc3Npc3RhbmNlIG9ubHkuPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0Jhc2VUZXN0Q2FzZS5odG1sI2dldEZpbGVOYW1lKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRGaWxlTmFtZShTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9CYXNlVGVzdENhc2UuaHRtbCI+QmFzZVRlc3RDYXNlPC9BPgo8REQ+Q29uY2F0ZW5hdGVzIHRoZSBmaWxlIG5hbWUgcGFydHMgdG9nZXRoZXIgYXBwcm9wcmlhdGVseS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjZ2V0Rmlyc3RUb2tlbigpIj48Qj5nZXRGaXJzdFRva2VuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjZ2V0Rmlyc3RUb2tlbigpIj48Qj5nZXRGaXJzdFRva2VuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0RmxvYXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEZsb2F0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgZmxvYXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRGbG9hdChqYXZhLmxhbmcuU3RyaW5nLCBmbG9hdCkiPjxCPmdldEZsb2F0KFN0cmluZywgZmxvYXQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBhIGZsb2F0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0RmxvYXQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkZsb2F0KSI+PEI+Z2V0RmxvYXQoU3RyaW5nLCBGbG9hdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgZmxvYXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdC5odG1sI2dldEZvbygpIj48Qj5nZXRGb28oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0Lmh0bWwiPk1ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjZ2V0Rm9vKCkiPjxCPmdldEZvbygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwjZ2V0RnJvbUxpYnJhcnkoKSI+PEI+Z2V0RnJvbUxpYnJhcnkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjZ2V0SGFzaHRhYmxlKCkiPjxCPmdldEhhc2h0YWJsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNHZXRJbWFnZSgpIj48Qj5HZXRJbWFnZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCNHZXRJbWFnZSgpIj48Qj5HZXRJbWFnZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sIj5DaGFyU3RyZWFtPC9BPgo8REQ+UmV0dXJucyBhIHN0cmluZyBtYWRlIHVwIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgbWFya2VkIHRva2VuIGJlZ2lubmluZyAKIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBwb3NpdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRJbmNsdWRlKCkiPjxCPmdldEluY2x1ZGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXRzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBmb3IgaW5jbHVkaW5nIG90aGVyIHByb3BlcnRpZXMgZmlsZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI2dldEluZm8oKSI+PEI+Z2V0SW5mbygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2dldEluZm8oKSI+PEI+Z2V0SW5mbygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWcuaHRtbCNnZXRJbml0UGFyYW1ldGVyKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRJbml0UGFyYW1ldGVyKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29uZmlnLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldEluaXRQYXJhbWV0ZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEluaXRQYXJhbWV0ZXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbmZpZy5odG1sI2dldEluaXRQYXJhbWV0ZXJOYW1lcygpIj48Qj5nZXRJbml0UGFyYW1ldGVyTmFtZXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWcuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbmZpZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwjZ2V0SW5pdFBhcmFtZXRlck5hbWVzKCkiPjxCPmdldEluaXRQYXJhbWV0ZXJOYW1lcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5wdXRCYXNlLmh0bWwjZ2V0SW5wdXRFbmNvZGluZyhvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmdldElucHV0RW5jb2RpbmcoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0lucHV0QmFzZS5odG1sIj5JbnB1dEJhc2U8L0E+CjxERD5EZWNpZGVzIHRoZSBlbmNvZGluZyB1c2VkIGR1cmluZyBpbnB1dCBwcm9jZXNzaW5nIG9mIHRoaXMKIGRpcmVjdGl2ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjZ2V0SW5zdGFuY2UoKSI+PEI+Z2V0SW5zdGFuY2UoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5DcmVhdGUgYSBuZXcgZ2VuZXJhdG9yIG9iamVjdCB3aXRoIGRlZmF1bHQgcHJvcGVydGllcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNnZXRJbnQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEludChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkludCBwcm9wZXJ0eSBhY2Nlc3NvciBtZXRob2QgdG8gaGlkZSB0aGUgY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0SW50KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRJbnQoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwiPlJ1bnRpbWU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtJbnQgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGhpZGUgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2dldEludChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0SW50KFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+SW50IHByb3BlcnR5IGFjY2Vzc29yIG1ldGhvZCB0byBoaWRlIHRoZSBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sI2dldEludChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0SW50KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkludCBwcm9wZXJ0eSBhY2Nlc3NvciBtZXRob2QgdG8gaGlkZSB0aGUgY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRJbnQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEludChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiByZXNvdXJjZQogd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhcyBhbiBpbnRlZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldEludChqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj48Qj5nZXRJbnQoU3RyaW5nLCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkludCBwcm9wZXJ0eSBhY2Nlc3NvciBtZXRob2QgdG8gaGlkZSB0aGUgY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0SW50KGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPmdldEludChTdHJpbmcsIGludCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7SW50IHByb3BlcnR5IGFjY2Vzc29yIG1ldGhvZCB0byBoaWRlIHRoZSBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNnZXRJbnQoamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+Z2V0SW50KFN0cmluZywgaW50KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5JbnQgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGhpZGUgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZ2V0SW50KGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPmdldEludChTdHJpbmcsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkludCBwcm9wZXJ0eSBhY2Nlc3NvciBtZXRob2QgdG8gaGlkZSB0aGUgY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRJbnQoamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+Z2V0SW50KFN0cmluZywgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBnZXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVzb3VyY2UKIHdpdGggdGhlIGdpdmVuIG5hbWUgYXMgYW4gaW50ZWdlciwgb3IgYSBkZWZhdWx0IHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldEludGVnZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEludGVnZXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBpbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRJbnRlZ2VyKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPmdldEludGVnZXIoU3RyaW5nLCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBhIGludCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24ga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldEludGVnZXIoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkludGVnZXIpIj48Qj5nZXRJbnRlZ2VyKFN0cmluZywgSW50ZWdlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgaW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCNnZXRJbnRlcm5hbFVzZXJDb250ZXh0KCkiPjxCPmdldEludGVybmFsVXNlckNvbnRleHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwiPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsPC9BPgo8REQ+cmV0dXJucyB0aGUgdXNlciBkYXRhIGNvbnRleHQgdGhhdAogIHdlIGFyZSB3cmFwcGluZwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsV3JhcHBlckNvbnRleHQuaHRtbCNnZXRJbnRlcm5hbFVzZXJDb250ZXh0KCkiPjxCPmdldEludGVybmFsVXNlckNvbnRleHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbFdyYXBwZXJDb250ZXh0Lmh0bWwiPkludGVybmFsV3JhcHBlckNvbnRleHQ8L0E+CjxERD5yZXR1cm5zIHRoZSB3cmFwcGVkIHVzZXIgY29udGV4dAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI2dldEludGVybmFsVXNlckNvbnRleHQoKSI+PEI+Z2V0SW50ZXJuYWxVc2VyQ29udGV4dCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPnJldHVybiB0aGUgaW5uZXIgLyB1c2VyIGNvbnRleHQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNnZXRJbnRyb3NwZWN0b3IoKSI+PEI+Z2V0SW50cm9zcGVjdG9yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+UmV0dXJuIHRoZSBJbnRyb3NwZWN0b3IgZm9yIHRoaXMgaW5zdGFuY2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0SW50cm9zcGVjdG9yKCkiPjxCPmdldEludHJvc3BlY3RvcigpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPlJldHVybiB0aGUgSW50cm9zcGVjdG9yIGZvciB0aGlzIFJ1bnRpbWVJbnN0YW5jZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sI2dldEludHJvc3BlY3RvcigpIj48Qj5nZXRJbnRyb3NwZWN0b3IoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+UmV0dXJucyB0aGUgY29uZmlndXJlZCBtZXRob2QgaW50cm9zcGVjdGlvbi9yZWZsZWN0aW9uCiBpbXBsZW1lbmF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5odG1sI2dldEl0ZXJhdG9yKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLkluZm8pIj48Qj5nZXRJdGVyYXRvcihPYmplY3QsIEluZm8pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbDwvQT4KPEREPlRvIHN1cHBvcnQgaXRlcmF0aXZlcyAtICNmb3JlYWNoKCkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdC5odG1sI2dldEl0ZXJhdG9yKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLkluZm8pIj48Qj5nZXRJdGVyYXRvcihPYmplY3QsIEluZm8pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3QuaHRtbCI+VWJlcnNwZWN0PC9BPgo8REQ+VG8gc3VwcG9ydCBpdGVyYXRpdmVzIC0gI2ZvcmVhY2goKQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sI2dldEtleXMoKSI+PEI+Z2V0S2V5cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwiPkFic3RyYWN0Q29udGV4dDwvQT4KPEREPkdldCBhbGwgdGhlIGtleXMgZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIGNvbnRleHQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI2dldEtleXMoKSI+PEI+Z2V0S2V5cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9Db250ZXh0Lmh0bWwjZ2V0S2V5cygpIj48Qj5nZXRLZXlzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQ29udGV4dC5odG1sIj5Db250ZXh0PC9BPgo8REQ+R2V0IGFsbCB0aGUga2V5cyBmb3IgdGhlIHZhbHVlcyBpbiB0aGUgY29udGV4dAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI2dldEtleXMoKSI+PEI+Z2V0S2V5cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPmltcGwgYmFkbHkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRLZXlzKCkiPjxCPmdldEtleXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgdGhlIGxpc3Qgb2YgdGhlIGtleXMgY29udGFpbmVkIGluIHRoZSBjb25maWd1cmF0aW9uCiByZXBvc2l0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldEtleXMoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEtleXMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgdGhlIGxpc3Qgb2YgdGhlIGtleXMgY29udGFpbmVkIGluIHRoZSBjb25maWd1cmF0aW9uCiByZXBvc2l0b3J5IHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBwcmVmaXguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNnZXRMYXN0TW9kaWZpZWQoKSI+PEI+Z2V0TGFzdE1vZGlmaWVkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4KPEREPlJldHVybiB0aGUgbGFzdE1vZGlmZWQgdGltZSBvZiB0aGlzCiB0ZW1wbGF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCNnZXRMYXN0TW9kaWZpZWQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLlJlc291cmNlKSI+PEI+Z2V0TGFzdE1vZGlmaWVkKFJlc291cmNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCI+UmVzb3VyY2VMb2FkZXI8L0E+CjxERD5HZXQgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSBvZiB0aGUgSW5wdXRTdHJlYW0gc291cmNlCiB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdGVtcGxhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phclJlc291cmNlTG9hZGVyLmh0bWwjZ2V0TGFzdE1vZGlmaWVkKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPmdldExhc3RNb2RpZmllZChSZXNvdXJjZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phclJlc291cmNlTG9hZGVyLmh0bWwiPkphclJlc291cmNlTG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sI2dldExhc3RNb2RpZmllZChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuUmVzb3VyY2UpIj48Qj5nZXRMYXN0TW9kaWZpZWQoUmVzb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCI+RGF0YVNvdXJjZVJlc291cmNlTG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0NsYXNzcGF0aFJlc291cmNlTG9hZGVyLmh0bWwjZ2V0TGFzdE1vZGlmaWVkKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPmdldExhc3RNb2RpZmllZChSZXNvdXJjZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0NsYXNzcGF0aFJlc291cmNlTG9hZGVyLmh0bWwiPkNsYXNzcGF0aFJlc291cmNlTG9hZGVyPC9BPgo8REQ+RGVmYXVsdHMgdG8gcmV0dXJuIDAKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRmlsZVJlc291cmNlTG9hZGVyLmh0bWwjZ2V0TGFzdE1vZGlmaWVkKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPmdldExhc3RNb2RpZmllZChSZXNvdXJjZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sIj5GaWxlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjZ2V0TGFzdFRva2VuKCkiPjxCPmdldExhc3RUb2tlbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2dldExhc3RUb2tlbigpIj48Qj5nZXRMYXN0VG9rZW4oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwiPk5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCNnZXRMZWZ0SGFuZFNpZGUoKSI+PEI+Z2V0TGVmdEhhbmRTaWRlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCI+QVNUU2V0RGlyZWN0aXZlPC9BPgo8REQ+cmV0dXJucyB0aGUgQVNUUmVmZXJlbmNlIHRoYXQgaXMgdGhlIExIUyBvZiB0aGUgc2V0IHN0YXRlbWVtdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI2dldExpYnJhcnlOYW1lKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRMaWJyYXJ5TmFtZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sI2dldExpbmUoKSI+PEI+Z2V0TGluZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCI+RGlyZWN0aXZlPC9BPgo8REQ+Zm9yIGxvZyBtc2cgcHVycG9zZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjZ2V0TGluZSgpIj48Qj5nZXRMaW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST48L0k+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCNnZXRMaW5lKCkiPjxCPmdldExpbmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0NoYXJTdHJlYW0uaHRtbCI+Q2hhclN0cmVhbTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPjwvST4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjZ2V0TGluZSgpIj48Qj5nZXRMaW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjZ2V0TGluZSgpIj48Qj5nZXRMaW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbmZvLmh0bWwjZ2V0TGluZSgpIj48Qj5nZXRMaW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW5mby5odG1sIj5JbmZvPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2dldExpc3QoKSI+PEI+Z2V0TGlzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+UmV0cmlldmVzIHRoZSB1bmRlcmx5aW5nIGxpc3QgdXNlZCB0byBzdG9yZSB0aGUgbm9kZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjZ2V0TGlzdCgpIj48Qj5nZXRMaXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyRmFjdG9yeS5odG1sI2dldExvYWRlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0TG9hZGVyKFJ1bnRpbWVTZXJ2aWNlcywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyRmFjdG9yeS5odG1sIj5SZXNvdXJjZUxvYWRlckZhY3Rvcnk8L0E+CjxERD5HZXRzIHRoZSBsb2FkZXIgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjZ2V0TG9hZGVyTmFtZUZvclJlc291cmNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5EZXRlcm1pbmVzIGlzIGEgdGVtcGxhdGUgZXhpc3RzLCBhbmQgcmV0dXJucyBuYW1lIG9mIHRoZSBsb2FkZXIgdGhhdCAKICBwcm92aWRlcyBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0TG9hZGVyTmFtZUZvclJlc291cmNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2UoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwiPlJ1bnRpbWU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtEZXRlcm1pbmVzIGlzIGEgdGVtcGxhdGUgZXhpc3RzLCBhbmQgcmV0dXJucyBuYW1lIG9mIHRoZSBsb2FkZXIgdGhhdCAKICBwcm92aWRlcyBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0TG9hZGVyTmFtZUZvclJlc291cmNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2UoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5EZXRlcm1pbmVzIGlzIGEgdGVtcGxhdGUgZXhpc3RzLCBhbmQgcmV0dXJucyBuYW1lIG9mIHRoZSBsb2FkZXIgdGhhdCAKICBwcm92aWRlcyBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNnZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldExvYWRlck5hbWVGb3JSZXNvdXJjZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5EZXRlcm1pbmVzIGlzIGEgdGVtcGxhdGUgZXhpc3RzLCBhbmQgcmV0dXJucyBuYW1lIG9mIHRoZSBsb2FkZXIgdGhhdCAKICBwcm92aWRlcyBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjZ2V0TG9hZGVyTmFtZUZvclJlc291cmNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4KPEREPkRldGVybWluZXMgaXMgYSB0ZW1wbGF0ZSBleGlzdHMsIGFuZCByZXR1cm5zIG5hbWUgb2YgdGhlIGxvYWRlciB0aGF0IAogIHByb3ZpZGVzIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlci5odG1sI2dldExvYWRlck5hbWVGb3JSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0TG9hZGVyTmFtZUZvclJlc291cmNlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VyLmh0bWwiPlJlc291cmNlTWFuYWdlcjwvQT4KPEREPkRldGVybWluZXMgaXMgYSB0ZW1wbGF0ZSBleGlzdHMsIGFuZCByZXR1cm5zIG5hbWUgb2YgdGhlIGxvYWRlciB0aGF0IAogIHByb3ZpZGVzIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNnZXRMb2NhbGUoKSI+PEI+Z2V0TG9jYWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRMb25nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRMb25nKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgbG9uZyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24ga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldExvbmcoamF2YS5sYW5nLlN0cmluZywgbG9uZykiPjxCPmdldExvbmcoU3RyaW5nLCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBsb25nIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0TG9uZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuTG9uZykiPjxCPmdldExvbmcoU3RyaW5nLCBMb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBsb25nIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNnZXRNYWpvclZlcnNpb24oKSI+PEI+Z2V0TWFqb3JWZXJzaW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1NpbXBsZVBvb2wuaHRtbCNnZXRNYXgoKSI+PEI+Z2V0TWF4KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TaW1wbGVQb29sLmh0bWwiPlNpbXBsZVBvb2w8L0E+CjxERD5SZXR1cm4gdGhlIHNpemUgb2YgdGhlIHBvb2wKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNnZXRNZW51KCkiPjxCPmdldE1lbnUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2VEaXJlY3RpdmVFeGNlcHRpb24uaHRtbCNnZXRNZXNzYWdlKCkiPjxCPmdldE1lc3NhZ2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2VEaXJlY3RpdmVFeGNlcHRpb24uaHRtbCI+UGFyc2VEaXJlY3RpdmVFeGNlcHRpb248L0E+CjxERD5HZXQgYSBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZUV4Y2VwdGlvbi5odG1sI2dldE1lc3NhZ2UoKSI+PEI+Z2V0TWVzc2FnZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZUV4Y2VwdGlvbi5odG1sIj5QYXJzZUV4Y2VwdGlvbjwvQT4KPEREPlRoaXMgbWV0aG9kIGhhcyB0aGUgc3RhbmRhcmQgYmVoYXZpb3Igd2hlbiB0aGlzIG9iamVjdCBoYXMgYmVlbgogY3JlYXRlZCB1c2luZyB0aGUgc3RhbmRhcmQgY29uc3RydWN0b3JzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbk1nckVycm9yLmh0bWwjZ2V0TWVzc2FnZSgpIj48Qj5nZXRNZXNzYWdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCI+VG9rZW5NZ3JFcnJvcjwvQT4KPEREPllvdSBjYW4gYWxzbyBtb2RpZnkgdGhlIGJvZHkgb2YgdGhpcyBtZXRob2QgdG8gY3VzdG9taXplIHlvdXIgZXJyb3IgbWVzc2FnZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQWJzdHJhY3RFeGVjdXRvci5odG1sI2dldE1ldGhvZCgpIj48Qj5nZXRNZXRob2QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0Fic3RyYWN0RXhlY3V0b3IuaHRtbCI+QWJzdHJhY3RFeGVjdXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yQmFzZS5odG1sI2dldE1ldGhvZChqYXZhLmxhbmcuQ2xhc3MsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3RbXSkiPjxCPmdldE1ldGhvZChDbGFzcywgU3RyaW5nLCBPYmplY3RbXSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yQmFzZS5odG1sIj5JbnRyb3NwZWN0b3JCYXNlPC9BPgo8REQ+R2V0cyB0aGUgbWV0aG9kIGRlZmluZWQgYnkgPGNvZGU+bmFtZTwvY29kZT4gYW5kCiA8Y29kZT5wYXJhbXM8L2NvZGU+IGZvciB0aGUgQ2xhc3MgPGNvZGU+YzwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbnRyb3NwZWN0b3IuaHRtbCNnZXRNZXRob2QoamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10pIj48Qj5nZXRNZXRob2QoQ2xhc3MsIFN0cmluZywgT2JqZWN0W10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rvci5odG1sIj5JbnRyb3NwZWN0b3I8L0E+CjxERD5HZXRzIHRoZSBtZXRob2QgZGVmaW5lZCBieSA8Y29kZT5uYW1lPC9jb2RlPiBhbmQKIDxjb2RlPnBhcmFtczwvY29kZT4gZm9yIHRoZSBDbGFzcyA8Y29kZT5jPC9jb2RlPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuaHRtbCNnZXRNZXRob2QoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdFtdLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5JbmZvKSI+PEI+Z2V0TWV0aG9kKE9iamVjdCwgU3RyaW5nLCBPYmplY3RbXSwgSW5mbyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsPC9BPgo8REQ+TWV0aG9kCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3QuaHRtbCNnZXRNZXRob2QoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdFtdLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5JbmZvKSI+PEI+Z2V0TWV0aG9kKE9iamVjdCwgU3RyaW5nLCBPYmplY3RbXSwgSW5mbyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdC5odG1sIj5VYmVyc3BlY3Q8L0E+CjxERD5SZXR1cm5zIGEgZ2VuZXJhbCBtZXRob2QsIGNvcnJlc3BvbmRpbmcgdG8gJGZvby5iYXIoICR3b29naWUgKQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbi5odG1sI2dldE1ldGhvZE5hbWUoKSI+PEI+Z2V0TWV0aG9kTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuZXhjZXB0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL01ldGhvZEludm9jYXRpb25FeGNlcHRpb24uaHRtbCI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbjwvQT4KPEREPlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0aGF0IHRocmV3IHRoZQogIGV4Y2VwdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsLmh0bWwjZ2V0TWV0aG9kTmFtZSgpIj48Qj5nZXRNZXRob2ROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsLmh0bWwiPlViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsLmh0bWwjZ2V0TWV0aG9kTmFtZSgpIj48Qj5nZXRNZXRob2ROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsLmh0bWwiPlViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsLmh0bWwjZ2V0TWV0aG9kTmFtZSgpIj48Qj5nZXRNZXRob2ROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsLmh0bWwiPlViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwjZ2V0TWV0aG9kTmFtZSgpIj48Qj5nZXRNZXRob2ROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbE1ldGhvZC5odG1sIj5WZWxNZXRob2Q8L0E+CjxERD5yZXR1cm5zIHRoZSBtZXRob2QgbmFtZSB1c2VkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxQcm9wZXJ0eVNldC5odG1sI2dldE1ldGhvZE5hbWUoKSI+PEI+Z2V0TWV0aG9kTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxQcm9wZXJ0eVNldC5odG1sIj5WZWxQcm9wZXJ0eVNldDwvQT4KPEREPnJldHVybnMgdGhlIG1ldGhvZCBuYW1lIHVzZWQgdG8gc2V0IHRoaXMgJ3Byb3BlcnR5Jwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlHZXQuaHRtbCNnZXRNZXRob2ROYW1lKCkiPjxCPmdldE1ldGhvZE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlHZXQuaHRtbCI+VmVsUHJvcGVydHlHZXQ8L0E+CjxERD5yZXR1cm5zIHRoZSBtZXRob2QgbmFtZSB1c2VkIHRvIHJldHVybiB0aGlzICdwcm9wZXJ0eScKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldE1pbWVUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRNaW1lVHlwZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldE1pbm9yVmVyc2lvbigpIj48Qj5nZXRNaW5vclZlcnNpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwjZ2V0TW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbCgpIj48Qj5nZXRNb2RpZmljYXRpb25DaGVja0ludGVydmFsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwiPlJlc291cmNlTG9hZGVyPC9BPgo8REQ+R2V0IHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0aGUgSW5wdXRTdHJlYW0gc291cmNlCiBzaG91bGQgYmUgY2hlY2tlZCBmb3IgbW9kaWZpY2F0aW9ucy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sI2dldE1vc3RTcGVjaWZpYyhqYXZhLnV0aWwuTGlzdCwgamF2YS5sYW5nLkNsYXNzW10pIj48Qj5nZXRNb3N0U3BlY2lmaWMoTGlzdCwgQ2xhc3NbXSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sIj5NZXRob2RNYXA8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sIj5EaXJlY3RpdmU8L0E+CjxERD5SZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBkaXJlY3RpdmUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRm9yZWFjaC5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwiPkZvcmVhY2g8L0E+CjxERD5SZXR1cm4gbmFtZSBvZiB0aGlzIGRpcmVjdGl2ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD5SZXR1cm4gbmFtZSBvZiB0aGlzIFZlbG9jaW1hY3JvLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZS5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZS5odG1sIj5QYXJzZTwvQT4KPEREPlJldHVybiBuYW1lIG9mIHRoaXMgZGlyZWN0aXZlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sIj5NYWNybzwvQT4KPEREPlJldHVybiBuYW1lIG9mIHRoaXMgZGlyZWN0aXZlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9MaXRlcmFsLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0xpdGVyYWwuaHRtbCI+TGl0ZXJhbDwvQT4KPEREPlJldHVybiBuYW1lIG9mIHRoaXMgZGlyZWN0aXZlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9JbmNsdWRlLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0luY2x1ZGUuaHRtbCI+SW5jbHVkZTwvQT4KPEREPlJldHVybiBuYW1lIG9mIHRoaXMgZGlyZWN0aXZlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4KPEREPkdldCB0aGUgbmFtZSBvZiB0aGlzIHRlbXBsYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1BlcnNvbi5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvUGVyc29uLmh0bWwiPlBlcnNvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL0NoaWxkLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9DaGlsZC5odG1sIj5DaGlsZDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwjZ2V0TmFtZWREaXNwYXRjaGVyKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXROYW1lZERpc3BhdGNoZXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwjZ2V0TmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXROYW1lc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD5yZXR1cm5zIHRoZSBoYXNoIGZvciB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCNnZXROYW1lc3BhY2UoamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPjxCPmdldE5hbWVzcGFjZShTdHJpbmcsIGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlcjwvQT4KPEREPnJldHVybnMgdGhlIGhhc2ggZm9yIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlLCBhbmQgaWYgaXQgZG9lc24ndCBleGlzdAogIHdpbGwgY3JlYXRlIGEgbmV3IG9uZSBhbmQgYWRkIGl0IHRvIHRoZSBuYW1lc3BhY2VzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2dldE5leHRUb2tlbigpIj48Qj5nZXROZXh0VG9rZW4oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNnZXROZXh0VG9rZW4oKSI+PEI+Z2V0TmV4dFRva2VuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sI2dldE5vZGVUcmVlKCkiPjxCPmdldE5vZGVUcmVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwjZ2V0Tm9kZVRyZWUoKSI+PEI+Z2V0Tm9kZVRyZWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNnZXROdW1BcmdzKCkiPjxCPmdldE51bUFyZ3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+cmV0dXJucyB0aGUgbnVtYmVyIG9mIGFycyBuZWVkZWQgZm9yIHRoaXMgVk0KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI2dldE9iamVjdChvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPmdldE9iamVjdChJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+cmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI2dldE91dHB1dERpcmVjdG9yeSgpIj48Qj5nZXRPdXRwdXREaXJlY3RvcnkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+R2V0IHRoZSBvdXRwdXQgZGlyZWN0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjZ2V0T3V0cHV0RmlsZSgpIj48Qj5nZXRPdXRwdXRGaWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPkdldCB0aGUgb3V0cHV0IGZpbGUgZm9yIHRoZQogZ2VuZXJhdGlvbiBwcm9jZXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNnZXRPdXRwdXRQYXRoKCkiPjxCPmdldE91dHB1dFBhdGgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPkdldCB0aGUgb3V0cHV0IHBhdGggZm9yIHRoZSBnZW5lcmF0ZWQKIG91dHB1dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjZ2V0T3V0cHV0U3RyZWFtKCkiPjxCPmdldE91dHB1dFN0cmVhbSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNnZXRQYWNrYWdlQXNQYXRoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRQYWNrYWdlQXNQYXRoKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5SZXR1cm4gYSBwYWNrYWdlIG5hbWUgYXMgYSByZWxhdGl2ZSBwYXRoIG5hbWUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNnZXRQZXJzb24oKSI+PEI+Z2V0UGVyc29uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0UHJvcGVydGllcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UHJvcGVydGllcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBhIGxpc3Qgb2YgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCiBjb25maWd1cmF0aW9uIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRQcm9wZXJ0aWVzKGphdmEubGFuZy5TdHJpbmcsIGphdmEudXRpbC5Qcm9wZXJ0aWVzKSI+PEI+Z2V0UHJvcGVydGllcyhTdHJpbmcsIFByb3BlcnRpZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBhIGxpc3Qgb2YgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCiBjb25maWd1cmF0aW9uIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwjZ2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5HZXQgYSBWZWxvY2l0eSBSdW50aW1lIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNnZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5HZXQgYSBWZWxvY2l0eSBSdW50aW1lIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkFsbG93cyBhbiBleHRlcm5hbCBjYWxsZXIgdG8gZ2V0IGEgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sI2dldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0FsbG93cyBhbiBleHRlcm5hbCBjYWxsZXIgdG8gZ2V0IGEgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2dldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPkFsbG93cyBhbiBleHRlcm5hbCBjYWxsZXIgdG8gZ2V0IGEgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZ2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkFsbG93cyBhbiBleHRlcm5hbCBjYWxsZXIgdG8gZ2V0IGEgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0cyBhIHByb3BlcnR5IGZyb20gdGhlIGNvbmZpZ3VyYXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwjZ2V0UHJvcGVydHlHZXQoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uSW5mbykiPjxCPmdldFByb3BlcnR5R2V0KE9iamVjdCwgU3RyaW5nLCBJbmZvKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwiPlViZXJzcGVjdEltcGw8L0E+CjxERD5Qcm9wZXJ0eSAgZ2V0dGVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3QuaHRtbCNnZXRQcm9wZXJ0eUdldChqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5JbmZvKSI+PEI+Z2V0UHJvcGVydHlHZXQoT2JqZWN0LCBTdHJpbmcsIEluZm8pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3QuaHRtbCI+VWJlcnNwZWN0PC9BPgo8REQ+UHJvcGVydHkgZ2V0dGVyIC0gcmV0dXJucyBWZWxQcm9wZXJ0eUdldCBhcHByb3BvcyBmb3IgI3NldCgkZm9vID0gJGJhci53b29naWUpCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwjZ2V0UHJvcGVydHlTZXQoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uSW5mbykiPjxCPmdldFByb3BlcnR5U2V0KE9iamVjdCwgU3RyaW5nLCBPYmplY3QsIEluZm8pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbDwvQT4KPEREPlByb3BlcnR5IHNldHRlcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0Lmh0bWwjZ2V0UHJvcGVydHlTZXQoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uSW5mbykiPjxCPmdldFByb3BlcnR5U2V0KE9iamVjdCwgU3RyaW5nLCBPYmplY3QsIEluZm8pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3QuaHRtbCI+VWJlcnNwZWN0PC9BPgo8REQ+UHJvcGVydHkgc2V0dGVyIC0gcmV0dXJucyBWZWxQcm9wZXJ0eVNldCBhcHByb3BvcyBmb3IgI3NldCgkZm9vLmJhciA9ICJnZWlyIikKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwjZ2V0UHVibGljTWV0aG9kKGphdmEubGFuZy5DbGFzcywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzW10pIj48Qj5nZXRQdWJsaWNNZXRob2QoQ2xhc3MsIFN0cmluZywgQ2xhc3NbXSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwiPkNsYXNzTWFwPC9BPgo8REQ+TG9va3MgdXAgdGhlIG1ldGhvZCB3aXRoIHNwZWNpZmllZCBuYW1lIGFuZCBzaWduYXR1cmUgaW4gdGhlIGZpcnN0IHB1YmxpYwogIHN1cGVyY2xhc3Mgb3IgaW1wbGVtZW50ZWQgaW50ZXJmYWNlIG9mIHRoZSBjbGFzcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwjZ2V0UHVibGljTWV0aG9kKGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCkiPjxCPmdldFB1YmxpY01ldGhvZChNZXRob2QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sIj5DbGFzc01hcDwvQT4KPEREPkZvciBhIGdpdmVuIG1ldGhvZCwgcmV0cmlldmVzIGl0cyBwdWJsaWNseSBhY2Nlc3NpYmxlIGNvdW50ZXJwYXJ0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwjZ2V0UmVhbFBhdGgoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFJlYWxQYXRoKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbi5odG1sI2dldFJlZmVyZW5jZU5hbWUoKSI+PEI+Z2V0UmVmZXJlbmNlTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuZXhjZXB0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL01ldGhvZEludm9jYXRpb25FeGNlcHRpb24uaHRtbCI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbjwvQT4KPEREPlJldHJpZXZlcyB0aGUgbmFtZSBvZiB0aGUgcmVmZXJlbmNlIHRoYXQgY2F1c2VkIHRoZSAKICBleGNlcHRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNnZXRSZWxhdGl2ZVBhdGgoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFJlbGF0aXZlUGF0aChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPkhhY2t5IG1ldGhvZCB0byBmaWd1cmUgb3V0IHRoZSByZWxhdGl2ZSBwYXRoCiB0aGF0IHdlIGFyZSBjdXJyZW50bHkgaW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjZ2V0UmVsU2VhcmNoZXMoKSI+PEI+Z2V0UmVsU2VhcmNoZXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNnZXRSZW1haW5pbmcoKSI+PEI+Z2V0UmVtYWluaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNnZXRSZXF1ZXN0RGlzcGF0Y2hlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UmVxdWVzdERpc3BhdGNoZXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sI2dldFJlc291cmNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRSZXNvdXJjZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJIb2xkZXIuaHRtbCI+SmFySG9sZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNnZXRSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UmVzb3VyY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI2dldFJlc291cmNlKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPmdldFJlc291cmNlKFN0cmluZywgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZQogIDxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjZ2V0UmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+UmVzb3VyY2VNYW5hZ2VySW1wbC5nZXRSZXNvdXJjZShTdHJpbmcgcmVzb3VyY2VOYW1lLCBpbnQgcmVzb3VyY2VUeXBlLCAKICAgICAgICAgIFN0cmluZyBlbmNvZGluZyApPC9DT0RFPjwvQT48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VGYWN0b3J5Lmh0bWwjZ2V0UmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+Z2V0UmVzb3VyY2UoU3RyaW5nLCBpbnQpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlRmFjdG9yeS5odG1sIj5SZXNvdXJjZUZhY3Rvcnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjZ2V0UmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UmVzb3VyY2UoU3RyaW5nLCBpbnQsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwiPlJlc291cmNlTWFuYWdlckltcGw8L0E+CjxERD5HZXRzIHRoZSBuYW1lZCByZXNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCNnZXRSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRSZXNvdXJjZShTdHJpbmcsIGludCwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCI+UmVzb3VyY2VNYW5hZ2VyPC9BPgo8REQ+R2V0cyB0aGUgbmFtZWQgcmVzb3VyY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNnZXRSZXNvdXJjZUFzU3RyZWFtKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRSZXNvdXJjZUFzU3RyZWFtKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjZ2V0UmVzb3VyY2VMb2FkZXIoKSI+PEI+Z2V0UmVzb3VyY2VMb2FkZXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+UmV0dXJuIHRoZSB0ZW1wbGF0ZSBsb2FkZXIgdGhhdCBwdWxsZWQKIGluIHRoZSB0ZW1wbGF0ZSBzdHJlYW0KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCNnZXRSZXNvdXJjZVN0cmVhbShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UmVzb3VyY2VTdHJlYW0oU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCI+UmVzb3VyY2VMb2FkZXI8L0E+CjxERD5HZXQgdGhlIElucHV0U3RyZWFtIHRoYXQgdGhlIFJ1bnRpbWUgd2lsbCBwYXJzZQogdG8gY3JlYXRlIGEgdGVtcGxhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phclJlc291cmNlTG9hZGVyLmh0bWwjZ2V0UmVzb3VyY2VTdHJlYW0oamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFJlc291cmNlU3RyZWFtKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phclJlc291cmNlTG9hZGVyLmh0bWwiPkphclJlc291cmNlTG9hZGVyPC9BPgo8REQ+R2V0IGFuIElucHV0U3RyZWFtIHNvIHRoYXQgdGhlIFJ1bnRpbWUgY2FuIGJ1aWxkIGEKIHRlbXBsYXRlIHdpdGggaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sI2dldFJlc291cmNlU3RyZWFtKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRSZXNvdXJjZVN0cmVhbShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCI+RGF0YVNvdXJjZVJlc291cmNlTG9hZGVyPC9BPgo8REQ+R2V0IGFuIElucHV0U3RyZWFtIHNvIHRoYXQgdGhlIFJ1bnRpbWUgY2FuIGJ1aWxkIGEKIHRlbXBsYXRlIHdpdGggaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0NsYXNzcGF0aFJlc291cmNlTG9hZGVyLmh0bWwjZ2V0UmVzb3VyY2VTdHJlYW0oamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFJlc291cmNlU3RyZWFtKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0NsYXNzcGF0aFJlc291cmNlTG9hZGVyLmh0bWwiPkNsYXNzcGF0aFJlc291cmNlTG9hZGVyPC9BPgo8REQ+R2V0IGFuIElucHV0U3RyZWFtIHNvIHRoYXQgdGhlIFJ1bnRpbWUgY2FuIGJ1aWxkIGEKIHRlbXBsYXRlIHdpdGggaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sI2dldFJlc291cmNlU3RyZWFtKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRSZXNvdXJjZVN0cmVhbShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9GaWxlUmVzb3VyY2VMb2FkZXIuaHRtbCI+RmlsZVJlc291cmNlTG9hZGVyPC9BPgo8REQ+R2V0IGFuIElucHV0U3RyZWFtIHNvIHRoYXQgdGhlIFJ1bnRpbWUgY2FuIGJ1aWxkIGEKIHRlbXBsYXRlIHdpdGggaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNnZXRSZXR1cm5UeXBlKCkiPjxCPmdldFJldHVyblR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCNnZXRSZXR1cm5UeXBlKCkiPjxCPmdldFJldHVyblR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwiPlZlbE1ldGhvZDwvQT4KPEREPnJldHVybnMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBtZXRob2QgaW52b2tlZAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFNldERpcmVjdGl2ZS5odG1sI2dldFJpZ2h0SGFuZFNpZGUoKSI+PEI+Z2V0UmlnaHRIYW5kU2lkZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwiPkFTVFNldERpcmVjdGl2ZTwvQT4KPEREPnJldHVybnMgdGhlIFJIUyBOb2RlIG9mIHRoZSBzZXQgc3RhdGVtZW50CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjZ2V0Um9vdCgpIj48Qj5nZXRSb290KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjZ2V0Um9vdFN0cmluZygpIj48Qj5nZXRSb290U3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+UmV0dXJucyB0aGUgJ3Jvb3Qgc3RyaW5nJywgdGhlIHJlZmVyZW5jZSBrZXkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0UnVudGltZUluc3RhbmNlKCkiPjxCPmdldFJ1bnRpbWVJbnN0YW5jZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSBnZXRSdW50aW1lU2VydmljZXMoKSBpbnN0ZWFkLjwvST4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0UnVudGltZVNlcnZpY2VzKCkiPjxCPmdldFJ1bnRpbWVTZXJ2aWNlcygpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2dldFNlYXJjaCgpIj48Qj5nZXRTZWFyY2goKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldFNlcnZlckluZm8oKSI+PEI+Z2V0U2VydmVySW5mbygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldFNlcnZsZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFNlcnZsZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjZ2V0U2VydmxldENvbmZpZygpIj48Qj5nZXRTZXJ2bGV0Q29uZmlnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tWZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbmZpZy5odG1sI2dldFNlcnZsZXRDb250ZXh0KCkiPjxCPmdldFNlcnZsZXRDb250ZXh0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29uZmlnLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29uZmlnLmh0bWwjZ2V0U2VydmxldE5hbWUoKSI+PEI+Z2V0U2VydmxldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWcuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbmZpZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwjZ2V0U2VydmxldE5hbWVzKCkiPjxCPmdldFNlcnZsZXROYW1lcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2dldFNlcnZsZXRzKCkiPjxCPmdldFNlcnZsZXRzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldFNob3J0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTaG9ydChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBhIHNob3J0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0U2hvcnQoamF2YS5sYW5nLlN0cmluZywgc2hvcnQpIj48Qj5nZXRTaG9ydChTdHJpbmcsIHNob3J0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBzaG9ydCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24ga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2dldFNob3J0KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TaG9ydCkiPjxCPmdldFNob3J0KFN0cmluZywgU2hvcnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBhIHNob3J0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCNnZXRTb3VyY2VUZW1wbGF0ZSgpIj48Qj5nZXRTb3VyY2VUZW1wbGF0ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNnZXRTdGFjaygpIj48Qj5nZXRTdGFjaygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2dldFN0YXRlRmFsc2UoKSI+PEI+Z2V0U3RhdGVGYWxzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2dldFN0YXRlVHJ1ZSgpIj48Qj5nZXRTdGF0ZVRydWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI2dldFN0YXRpY09iamVjdCgpIj48Qj5nZXRTdGF0aWNPYmplY3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjZ2V0U3RyaW5nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTdHJpbmcoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5TdHJpbmcgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGhpZGUgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0U3RyaW5nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTdHJpbmcoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwiPlJ1bnRpbWU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtTdHJpbmcgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGhpZGUgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0U3RyaW5nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTdHJpbmcoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5TdHJpbmcgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGhpZGUgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNnZXRTdHJpbmcoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFN0cmluZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5TdHJpbmcgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGhpZGUgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRTdHJpbmcoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFN0cmluZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBhIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24ga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldFN0cmluZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0U3RyaW5nKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5TdHJpbmcgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHdpdGggZGVmYXVsdCB0byBoaWRlIHRoZQogY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0U3RyaW5nKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTdHJpbmcoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1N0cmluZyBwcm9wZXJ0eSBhY2Nlc3NvciBtZXRob2Qgd2l0aCBkZWZhdWx0IHRvIGhpZGUgdGhlCiBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNnZXRTdHJpbmcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFN0cmluZyhTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+U3RyaW5nIHByb3BlcnR5IGFjY2Vzc29yIG1ldGhvZCB3aXRoIGRlZmF1bHQgdG8gaGlkZSB0aGUKIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZ2V0U3RyaW5nKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTdHJpbmcoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5TdHJpbmcgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHdpdGggZGVmYXVsdCB0byBoaWRlIHRoZQogY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRTdHJpbmcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFN0cmluZyhTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0U3RyaW5nQXJyYXkoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFN0cmluZ0FycmF5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGFuIGFycmF5IG9mIHN0cmluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uCiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI0dldFN1ZmZpeChpbnQpIj48Qj5HZXRTdWZmaXgoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9DaGFyU3RyZWFtLmh0bWwjR2V0U3VmZml4KGludCkiPjxCPkdldFN1ZmZpeChpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sIj5DaGFyU3RyZWFtPC9BPgo8REQ+UmV0dXJucyBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzIHRoYXQgbWFrZSB1cCB0aGUgc3VmZml4IG9mIGxlbmd0aCAnbGVuJyBmb3IKIHRoZSBjdXJyZW50bHkgbWF0Y2hlZCB0b2tlbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwjZ2V0VGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFRlbXBsYXRlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5SZXR1cm5zIGEgPGNvZGU+VGVtcGxhdGU8L2NvZGU+IGZyb20gdGhlIFZlbG9jaXR5CiAgcmVzb3VyY2UgbWFuYWdlbWVudCBzeXN0ZW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPlJldHVybnMgYSA8Y29kZT5UZW1wbGF0ZTwvY29kZT4gZnJvbSB0aGUgVmVsb2NpdHkKICByZXNvdXJjZSBtYW5hZ2VtZW50IHN5c3RlbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNnZXRUZW1wbGF0ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0VGVtcGxhdGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5SZXR1cm5zIGEgPGNvZGU+VGVtcGxhdGU8L2NvZGU+IGZyb20gdGhlIHJlc291cmNlIG1hbmFnZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybnMgYSA8Y29kZT5UZW1wbGF0ZTwvY29kZT4gZnJvbSB0aGUgcmVzb3VyY2UgbWFuYWdlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0VGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFRlbXBsYXRlKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+UmV0dXJucyBhIDxjb2RlPlRlbXBsYXRlPC9jb2RlPiBmcm9tIHRoZSByZXNvdXJjZSBtYW5hZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5SZXR1cm5zIGEgPGNvZGU+VGVtcGxhdGU8L2NvZGU+IGZyb20gdGhlIHJlc291cmNlIG1hbmFnZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjZ2V0VGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFRlbXBsYXRlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+UmV0cmlldmVzIHRoZSByZXF1ZXN0ZWQgdGVtcGxhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5SZXR1cm5zIGEgPGNvZGU+VGVtcGxhdGU8L2NvZGU+IGZyb20gdGhlIFZlbG9jaXR5CiAgcmVzb3VyY2UgbWFuYWdlbWVudCBzeXN0ZW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwiPlZlbG9jaXR5PC9BPgo8REQ+UmV0dXJucyBhIDxjb2RlPlRlbXBsYXRlPC9jb2RlPiBmcm9tIHRoZSBWZWxvY2l0eQogIHJlc291cmNlIG1hbmFnZW1lbnQgc3lzdGVtLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+UmV0dXJucyBhIDxjb2RlPlRlbXBsYXRlPC9jb2RlPiBmcm9tIHRoZSByZXNvdXJjZSBtYW5hZ2VyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJucyBhIDxjb2RlPlRlbXBsYXRlPC9jb2RlPiBmcm9tIHRoZSByZXNvdXJjZSBtYW5hZ2VyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2dldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRUZW1wbGF0ZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+UmV0dXJucyBhIDxjb2RlPlRlbXBsYXRlPC9jb2RlPiBmcm9tIHRoZSByZXNvdXJjZSBtYW5hZ2VyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjZ2V0VGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFRlbXBsYXRlKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+UmV0dXJucyBhIDxjb2RlPlRlbXBsYXRlPC9jb2RlPiBmcm9tIHRoZSByZXNvdXJjZSBtYW5hZ2VyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjZ2V0VGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFRlbXBsYXRlKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5SZXRyaWV2ZXMgdGhlIHJlcXVlc3RlZCB0ZW1wbGF0ZSB3aXRoIHRoZSBzcGVjaWZpZWQKIGNoYXJhY3RlciBlbmNvZGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjZ2V0VGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFRlbXBsYXRlKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPlJldHVybnMgYSB0ZW1wbGF0ZSwgYmFzZWQgb24gZW5jb2RpbmcgYW5kIHBhdGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjZ2V0VGVtcGxhdGVMb2NhbElubGluZSgpIj48Qj5nZXRUZW1wbGF0ZUxvY2FsSW5saW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbmZvLmh0bWwjZ2V0VGVtcGxhdGVOYW1lKCkiPjxCPmdldFRlbXBsYXRlTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0luZm8uaHRtbCI+SW5mbzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCNnZXRUZW1wbGF0ZU5hbWVTdGFjaygpIj48Qj5nZXRUZW1wbGF0ZU5hbWVTdGFjaygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QmFzZS5odG1sIj5JbnRlcm5hbENvbnRleHRCYXNlPC9BPgo8REQ+Z2V0IHRoZSBjdXJyZW50IHRlbXBsYXRlIG5hbWUgc3RhY2sKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI2dldFRlbXBsYXRlTmFtZVN0YWNrKCkiPjxCPmdldFRlbXBsYXRlTmFtZVN0YWNrKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sIj5JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI2dldFRlbXBsYXRlTmFtZVN0YWNrKCkiPjxCPmdldFRlbXBsYXRlTmFtZVN0YWNrKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0Lmh0bWwjZ2V0VGVtcGxhdGVOYW1lU3RhY2soKSI+PEI+Z2V0VGVtcGxhdGVOYW1lU3RhY2soKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQuaHRtbCI+SW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0PC9BPgo8REQ+UmV0dXJucyB0aGUgdGVtcGxhdGUgbmFtZSBzdGFjayBpbiBmb3JtIG9mIGFuIGFycmF5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNnZXRUZW1wbGF0ZVBhdGgoKSI+PEI+Z2V0VGVtcGxhdGVQYXRoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5HZXQgdGhlIHRlbXBsYXRlIHBhdGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNnZXRUZW1wbGF0ZVBhdGgoKSI+PEI+Z2V0VGVtcGxhdGVQYXRoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPkdldCB0aGUgcGF0aCB3aGVyZSBWZWxvY2l0eSB3aWxsIGxvb2sKIGZvciB0ZW1wbGF0ZXMgdXNpbmcgdGhlIGZpbGUgdGVtcGxhdGUKIGxvYWRlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RTdWl0ZS5odG1sI2dldFRlbXBsYXRlVGVzdEtleShpbnQpIj48Qj5nZXRUZW1wbGF0ZVRlc3RLZXkoaW50KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RTdWl0ZS5odG1sIj5UZW1wbGF0ZVRlc3RTdWl0ZTwvQT4KPEREPk1hY3JvIHdoaWNoIHJldHVybnMgdGhlIHByb3BlcnRpZXMgZmlsZSBrZXkgZm9yIHRoZSBzcGVjaWZpZWQgdGVtcGxhdGUKIHRlc3QgbnVtYmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0Jhc2VUZXN0Q2FzZS5odG1sI2dldFRlc3RDYXNlTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0VGVzdENhc2VOYW1lKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQmFzZVRlc3RDYXNlLmh0bWwiPkJhc2VUZXN0Q2FzZTwvQT4KPEREPlR1cm5zIGEgYmFzZSBmaWxlIG5hbWUgaW50byBhIHRlc3QgY2FzZSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvRXNjYXBlLmh0bWwjZ2V0VGV4dChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0VGV4dChTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Fc2NhcGUuaHRtbCI+RXNjYXBlPC9BPgo8REQ+RG8gdGhlIGVzY2FwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2dldFRocm93KCkiPjxCPmdldFRocm93KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjZ2V0VGltZShsb25nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0VGltZShsb25nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPlV0aWxpdHkgbWV0aG9kIHRvIGZvcm1hdCB0aW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI2dldFRpdGxlKCkiPjxCPmdldFRpdGxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2dldFRva2VuKGludCkiPjxCPmdldFRva2VuKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlLmh0bWwjZ2V0VHlwZSgpIj48Qj5nZXRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sIj5EaXJlY3RpdmU8L0E+CjxERD5HZXQgdGhlIGRpcmVjdGl2ZSB0eXBlIEJMT0NLL0xJTkUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRm9yZWFjaC5odG1sI2dldFR5cGUoKSI+PEI+Z2V0VHlwZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwiPkZvcmVhY2g8L0E+CjxERD5SZXR1cm4gdHlwZSBvZiB0aGlzIGRpcmVjdGl2ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI2dldFR5cGUoKSI+PEI+Z2V0VHlwZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD5WZWxvY2ltYWNyb3MgYXJlIGFsd2F5cyBMSU5FCiB0eXBlIGRpcmVjdGl2ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlLmh0bWwjZ2V0VHlwZSgpIj48Qj5nZXRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlLmh0bWwiPlBhcnNlPC9BPgo8REQ+UmV0dXJuIHR5cGUgb2YgdGhpcyBkaXJlY3RpdmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL01hY3JvLmh0bWwjZ2V0VHlwZSgpIj48Qj5nZXRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL01hY3JvLmh0bWwiPk1hY3JvPC9BPgo8REQ+UmV0dXJuIHR5cGUgb2YgdGhpcyBkaXJlY3RpdmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNnZXRUeXBlKCkiPjxCPmdldFR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0xpdGVyYWwuaHRtbCNnZXRUeXBlKCkiPjxCPmdldFR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTGl0ZXJhbC5odG1sIj5MaXRlcmFsPC9BPgo8REQ+UmV0dXJuIHR5cGUgb2YgdGhpcyBkaXJlY3RpdmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0luY2x1ZGUuaHRtbCNnZXRUeXBlKCkiPjxCPmdldFR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sIj5JbmNsdWRlPC9BPgo8REQ+UmV0dXJuIHR5cGUgb2YgdGhpcyBkaXJlY3RpdmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI2dldFR5cGUoKSI+PEI+Z2V0VHlwZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2dldFR5cGUoKSI+PEI+Z2V0VHlwZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2dldFViZXJzcGVjdCgpIj48Qj5nZXRVYmVyc3BlY3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0VWJlcnNwZWN0KCkiPjxCPmdldFViZXJzcGVjdCgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sI2dldFViZXJzcGVjdCgpIj48Qj5nZXRVYmVyc3BlY3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+UmV0dXJucyB0aGUgY29uZmlndXJlZCBjbGFzcyBpbnRyb3NwZWN0aW9uL3JlZmxlY3Rpb24KIGltcGxlbWVuYXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sI2dldFVybFBhdGgoKSI+PEI+Z2V0VXJsUGF0aCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJIb2xkZXIuaHRtbCI+SmFySG9sZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjZ2V0VmFyaWFibGVWYWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFZhcmlhYmxlVmFsdWUoQ29udGV4dCwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNnZXRWZWN0b3IoKSI+PEI+Z2V0VmVjdG9yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjZ2V0VmVjdG9yKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRWZWN0b3IoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtHZXQgYSBWZWN0b3Igb2Ygc3RyaW5ncyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24KIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNnZXRWZWN0b3IoamF2YS5sYW5nLlN0cmluZywgamF2YS51dGlsLlZlY3RvcikiPjxCPmdldFZlY3RvcihTdHJpbmcsIFZlY3Rvcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7R2V0IGEgVmVjdG9yIG9mIHN0cmluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uCiBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjZ2V0VmVsb2NpbWFjcm8oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFZlbG9jaW1hY3JvKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5SZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBWZWxvY2ltYWNyb1Byb3h5IG9iamVjdCBpZiBzdHJWTW5hbWUKIGlzIGEgdmFsaWQgY3VycmVudCBWZWxvY2ltYWNyby4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNnZXRWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0VmVsb2NpbWFjcm8oU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPmFjdHVhbCBmYWN0b3J5IDogY3JlYXRlcyBhIERpcmVjdGl2ZSB0aGF0IHdpbGwKICBiZWhhdmUgY29ycmVjdGx5IHdydCBnZXR0aW5nIHRoZSBmcmFtZXdvcmsgdG8gCiAgZGlnIG91dCB0aGUgY29ycmVjdCAjIG9mIGFyZ3MKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjZ2V0VmVsb2NpbWFjcm8oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFZlbG9jaW1hY3JvKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwiPlJ1bnRpbWU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBWZWxvY2ltYWNyb1Byb3h5IG9iamVjdCBpZiBzdHJWTW5hbWUKIGlzIGEgdmFsaWQgY3VycmVudCBWZWxvY2ltYWNyby4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjZ2V0VmVsb2NpbWFjcm8oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFZlbG9jaW1hY3JvKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5SZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBWZWxvY2ltYWNyb1Byb3h5IG9iamVjdCBpZiBzdHJWTW5hbWUKIGlzIGEgdmFsaWQgY3VycmVudCBWZWxvY2ltYWNyby4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNnZXRWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0VmVsb2NpbWFjcm8oU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+CjxERD5SZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBWZWxvY2ltYWNyb1Byb3h5IG9iamVjdCBpZiBzdHJWTW5hbWUKIGlzIGEgdmFsaWQgY3VycmVudCBWZWxvY2ltYWNyby4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL01ldGhvZEludm9jYXRpb25FeGNlcHRpb24uaHRtbCNnZXRXcmFwcGVkVGhyb3dhYmxlKCkiPjxCPmdldFdyYXBwZWRUaHJvd2FibGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmV4Y2VwdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uLmh0bWwiPk1ldGhvZEludm9jYXRpb25FeGNlcHRpb248L0E+CjxERD5yZXR1cm5zIHRoZSB3cmFwcGVkIFRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzCiAgTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbiB0byBiZSB0aHJvd24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjZ2V0V3JpdGVyKCkiPjxCPmdldFdyaXRlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sI2dldFdyaXRlcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0V3JpdGVyKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPlJldHVybnMgYSB3cml0ZXIsIGJhc2VkIG9uIGVuY29kaW5nIGFuZCBwYXRoLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhDYWNoZS5odG1sI2dldFhQYXRoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRYUGF0aChTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9YUGF0aENhY2hlLmh0bWwiPlhQYXRoQ2FjaGU8L0E+CjxERD5SZXR1cm5zIGFuIFhQYXRoIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlcXVlc3RlZCBYUGF0aCBleHByZXNzaW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI0dMT0JBTF9OQU1FU1BBQ0UiPjxCPkdMT0JBTF9OQU1FU1BBQ0U8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI2dsb2JhbENhY2hlIj48Qj5nbG9iYWxDYWNoZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9BPgo8REQ+T2JqZWN0IGltcGxlbWVudGluZyBSZXNvdXJjZUNhY2hlIHRvIAogIGJlIG91ciByZXNvdXJjZSBtYW5hZ2VyJ3MgUmVzb3VyY2UgY2FjaGUuCjwvREw+CjxIUj4KPEEgTkFNRT0iX0hfIj48IS0tIC0tPjwvQT48SDI+CjxCPkg8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCNoIj48Qj5oPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RDYXNlLmh0bWwiPlRlbXBsYXRlVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNoYW5kbGVSZXF1ZXN0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0KSI+PEI+aGFuZGxlUmVxdWVzdChDb250ZXh0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UKIDxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNoYW5kbGVSZXF1ZXN0KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlLCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCkiPjxDT0RFPlZlbG9jaXR5U2VydmxldC5oYW5kbGVSZXF1ZXN0KCBIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgCiBIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlLCBDb250ZXh0IGN0eCApPC9DT0RFPjwvQT48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjaGFuZGxlUmVxdWVzdChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSwgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQpIj48Qj5oYW5kbGVSZXF1ZXN0KEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSwgQ29udGV4dCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+SW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIGFkZCB5b3VyIGFwcGxpY2F0aW9uIGRhdGEgdG8gdGhlIGNvbnRleHQsIAogY2FsbGluZyB0aGUgPGNvZGU+Z2V0VGVtcGxhdGUoKTwvY29kZT4gbWV0aG9kIHRvIHByb2R1Y2UgeW91ciByZXR1cm4gCiB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjSEFTSCI+PEI+SEFTSDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjaGFzaENvZGUoKSI+PEI+aGFzaENvZGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPlJldHVybnMgdGhlIGhhc2ggY29kZSBvZiB0aGUgY29udGFpbmVkIGxpc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXIuaHRtbCNoYXNNb3JlVG9rZW5zKCkiPjxCPmhhc01vcmVUb2tlbnMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXIuaHRtbCI+Q29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzVG9rZW5pemVyPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q2hlY2sgd2hldGhlciB0aGUgb2JqZWN0IGhhcyBtb3JlIHRva2Vucy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9FbnVtZXJhdGlvbkl0ZXJhdG9yLmh0bWwjaGFzTmV4dCgpIj48Qj5oYXNOZXh0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9FbnVtZXJhdGlvbkl0ZXJhdG9yLmh0bWwiPkVudW1lcmF0aW9uSXRlcmF0b3I8L0E+CjxERD5DaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYW5vdGhlciBlbGVtZW50IGluIHRoZSBhcnJheS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9BcnJheUl0ZXJhdG9yLmh0bWwjaGFzTmV4dCgpIj48Qj5oYXNOZXh0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9BcnJheUl0ZXJhdG9yLmh0bWwiPkFycmF5SXRlcmF0b3I8L0E+CjxERD5DaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYW5vdGhlciBlbGVtZW50IGluIHRoZSBhcnJheS4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfSV8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+STwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLkJhci5odG1sI2kiPjxCPmk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5CYXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UyLkJhcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCNpY2FjaGVHZXQoamF2YS5sYW5nLk9iamVjdCkiPjxCPmljYWNoZUdldChPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QmFzZS5odG1sIj5JbnRlcm5hbENvbnRleHRCYXNlPC9BPgo8REQ+cmV0dXJucyBhbiBJbnRyb3NwZWN0aW9uQ2FjaGUgRGF0YSAoQHNlZSBJbnRyb3NwZWN0aW9uQ2FjaGVEYXRhKQogIG9iamVjdCBpZiBleGlzdHMgZm9yIHRoZSBrZXkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI2ljYWNoZUdldChqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aWNhY2hlR2V0KE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sIj5JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI2ljYWNoZUdldChqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aWNhY2hlR2V0KE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0Lmh0bWwjaWNhY2hlR2V0KGphdmEubGFuZy5PYmplY3QpIj48Qj5pY2FjaGVHZXQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQuaHRtbCI+SW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0PC9BPgo8REQ+cmV0dXJucyBhbiBJbnRyb3NwZWN0aW9uQ2FjaGUgRGF0YSAoQHNlZSBJbnRyb3NwZWN0aW9uQ2FjaGVEYXRhKQogIG9iamVjdCBpZiBleGlzdHMgZm9yIHRoZSBrZXkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwjaWNhY2hlUHV0KGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLkludHJvc3BlY3Rpb25DYWNoZURhdGEpIj48Qj5pY2FjaGVQdXQoT2JqZWN0LCBJbnRyb3NwZWN0aW9uQ2FjaGVEYXRhKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCI+SW50ZXJuYWxDb250ZXh0QmFzZTwvQT4KPEREPnBsYWNlcyBhbiBJbnRyb3NwZWN0aW9uQ2FjaGUgRGF0YSAoQHNlZSBJbnRyb3NwZWN0aW9uQ2FjaGVEYXRhKQogIGVsZW1lbnQgaW4gdGhlIGNhY2hlIGZvciBzcGVjaWZpZWQga2V5CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCNpY2FjaGVQdXQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uSW50cm9zcGVjdGlvbkNhY2hlRGF0YSkiPjxCPmljYWNoZVB1dChPYmplY3QsIEludHJvc3BlY3Rpb25DYWNoZURhdGEpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCNpY2FjaGVQdXQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uSW50cm9zcGVjdGlvbkNhY2hlRGF0YSkiPjxCPmljYWNoZVB1dChPYmplY3QsIEludHJvc3BlY3Rpb25DYWNoZURhdGEpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sI2ljYWNoZVB1dChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5JbnRyb3NwZWN0aW9uQ2FjaGVEYXRhKSI+PEI+aWNhY2hlUHV0KE9iamVjdCwgSW50cm9zcGVjdGlvbkNhY2hlRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0Lmh0bWwiPkludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dDwvQT4KPEREPnBsYWNlcyBhbiBJbnRyb3NwZWN0aW9uQ2FjaGUgRGF0YSAoQHNlZSBJbnRyb3NwZWN0aW9uQ2FjaGVEYXRhKQogIGVsZW1lbnQgaW4gdGhlIGNhY2hlIGZvciBzcGVjaWZpZWQga2V5CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCNpY2IiPjxCPmljYjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD50aGUgSUNCIHdlIGFyZSB3cmFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjaWQiPjxCPmlkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJZGVudGlmaWVyLmh0bWwjaWRlbnRpZmllciI+PEI+aWRlbnRpZmllcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sIj5BU1RJZGVudGlmaWVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjaWRlbnRpZmllciI+PEI+aWRlbnRpZmllcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwiPkFTVFJlZmVyZW5jZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNJREVOVElGSUVSIj48Qj5JREVOVElGSUVSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNJREVOVElGSUVSX0NIQVIiPjxCPklERU5USUZJRVJfQ0hBUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjSWRlbnRpZmllcigpIj48Qj5JZGVudGlmaWVyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBjb3JyZXNwb25kcyB0byB2YXJpYWJsZQogcmVmZXJlbmNlcyBpbiBWZWxvY2l0eSB0ZW1wbGF0ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCNpZWMiPjxCPmllYzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD5UaGUgSW50ZXJuYWxFdmVudENvbnRleHQgdGhhdCB3ZSBhcmUgd3JhcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0lGX0RJUkVDVElWRSI+PEI+SUZfRElSRUNUSVZFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNJZlN0YXRlbWVudCgpIj48Qj5JZlN0YXRlbWVudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyLmh0bWwjaWkoaW50LCBpbnQpIj48Qj5paShpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuLmh0bWwjaW1hZ2UiPjxCPmltYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuLmh0bWwiPlRva2VuPC9BPgo8REQ+VGhlIHN0cmluZyBpbWFnZSBvZiB0aGUgdG9rZW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2ltYWdlIj48Qj5pbWFnZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU3RyaW5nTGl0ZXJhbC5odG1sI2ltYWdlIj48Qj5pbWFnZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU3RyaW5nTGl0ZXJhbC5odG1sIj5BU1RTdHJpbmdMaXRlcmFsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0lOX0ZPUk1BTF9DT01NRU5UIj48Qj5JTl9GT1JNQUxfQ09NTUVOVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjSU5fTVVMVElfTElORV9DT01NRU5UIj48Qj5JTl9NVUxUSV9MSU5FX0NPTU1FTlQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0lOX1NJTkdMRV9MSU5FX0NPTU1FTlQiPjxCPklOX1NJTkdMRV9MSU5FX0NPTU1FTlQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI2luQnVmIj48Qj5pbkJ1ZjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjaW5jbHVkZSI+PEI+aW5jbHVkZTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGNhbiBwb2ludCB0byBvdGhlcgogcHJvcGVydGllcyBmaWxlIGZvciBpbmNsdWRpbmcgb3RoZXIgcHJvcGVydGllcyBmaWxlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sIj48Qj5JbmNsdWRlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sIj5JbmNsdWRlPC9BPi48REQ+UGx1Z2dhYmxlIGRpcmVjdGl2ZSB0aGF0IGhhbmRsZXMgdGhlICNpbmNsdWRlKCkgc3RhdGVtZW50IGluIFZUTC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9JbmNsdWRlLmh0bWwjSW5jbHVkZSgpIj48Qj5JbmNsdWRlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0luY2x1ZGUuaHRtbCI+SW5jbHVkZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNpbkNvbW1lbnQiPjxCPmluQ29tbWVudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCNJTkNPTVBBUkFCTEUiPjxCPklOQ09NUEFSQUJMRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCI+TWV0aG9kTWFwPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCNpbmRlbnQiPjxCPmluZGVudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI2luZGVudFN0cmluZygpIj48Qj5pbmRlbnRTdHJpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+SW5kZW50IGNoaWxkIG5vZGVzIHRvIGhlbHAgdmlzdWFsbHkgaWRlbnRpZnkKICB0aGUgc3RydWN0dXJlIG9mIHRoZSBBU1QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2luZGV4T2YoamF2YS5sYW5nLk9iamVjdCkiPjxCPmluZGV4T2YoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNpbkRpcmVjdGl2ZSI+PEI+aW5EaXJlY3RpdmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNpbmZvIj48Qj5pbmZvPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0luZm8uaHRtbCI+PEI+SW5mbzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW5mby5odG1sIj5JbmZvPC9BPi48REQ+TGl0dGxlIGNsYXNzIHRvIGNhcnJ5IGluIGluZm8gc3VjaCBhcyB0ZW1wbGF0ZSBuYW1lLCBsaW5lIGFuZCBjb2x1bW4KICBmb3IgaW5mb3JtYXRpb24gZXJyb3IgcmVwb3J0aW5nIGZyb20gdGhlIHViZXJzcGVjdG9yIGltcGxlbWVudGF0aW9uczxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ1N5c3RlbS5odG1sI0lORk9fSUQiPjxCPklORk9fSUQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCI+TG9nU3lzdGVtPC9BPgo8REQ+UHJlZml4IGZvciBpbmZvIG1lc3NhZ2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNJTkZPX1BSRUZJWCI+PEI+SU5GT19QUkVGSVg8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbmZvLmh0bWwjSW5mbygpIj48Qj5JbmZvKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW5mby5odG1sIj5JbmZvPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2luZm8oamF2YS5sYW5nLk9iamVjdCkiPjxCPmluZm8oT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPkxvZyBhbiBpbmZvIG1lc3NhZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2luZm8oamF2YS5sYW5nLk9iamVjdCkiPjxCPmluZm8oT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5Mb2cgYW4gaW5mbyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2luZm8oamF2YS5sYW5nLk9iamVjdCkiPjxCPmluZm8oT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5Mb2cgYW4gaW5mbyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVMb2dnZXIuaHRtbCNpbmZvKGphdmEubGFuZy5PYmplY3QpIj48Qj5pbmZvKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUxvZ2dlci5odG1sIj5SdW50aW1lTG9nZ2VyPC9BPgo8REQ+TG9nIGFuIGluZm8gbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjaW5mbyhqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW5mbyhPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0xvZyBhbiBpbmZvIG1lc3NhZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2luZm8oamF2YS5sYW5nLk9iamVjdCkiPjxCPmluZm8oT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5Mb2cgYW4gaW5mbyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW5mby5odG1sI0luZm8oamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpIj48Qj5JbmZvKFN0cmluZywgaW50LCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0luZm8uaHRtbCI+SW5mbzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwjaW5pdCI+PEI+aW5pdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNJTklUX1BST1BTX0tFWSI+PEI+SU5JVF9QUk9QU19LRVk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+VGhpcyBpcyB0aGUgc3RyaW5nIHRoYXQgaXMgbG9va2VkIGZvciB3aGVuIGdldEluaXRQYXJhbWV0ZXIgaXMKIGNhbGxlZCAoPGNvZGU+b3JnLmFwYWNoZS52ZWxvY2l0eS5wcm9wZXJ0aWVzPC9jb2RlPikuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI2luaXQoKSI+PEI+aW5pdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwiPlZlbG9jaXR5RW5naW5lPC9BPgo8REQ+aW5pdGlhbGl6ZSB0aGUgVmVsb2NpdHkgcnVudGltZSBlbmdpbmUsIHVzaW5nIHRoZSBkZWZhdWx0IAogIHByb3BlcnRpZXMgb2YgdGhlIFZlbG9jaXR5IGRpc3RyaWJ1dGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNpbml0KCkiPjxCPmluaXQoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5pbml0aWFsaXplIHRoZSBWZWxvY2l0eSBydW50aW1lIGVuZ2luZSwgdXNpbmcgdGhlIGRlZmF1bHQKICBwcm9wZXJ0aWVzIG9mIHRoZSBWZWxvY2l0eSBkaXN0cmlidXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNpbml0KCkiPjxCPmluaXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjaW5pdCgpIj48Qj5pbml0KCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI2luaXQoKSI+PEI+aW5pdCgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPlRoaXMgaXMgdGhlIHByaW1hcnkgaW5pdGlhbGl6YXRpb24gbWV0aG9kIGluIHRoZSBWZWxvY2l0eQogUnVudGltZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNpbml0KCkiPjxCPmluaXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sI2luaXQoKSI+PEI+aW5pdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJIb2xkZXIuaHRtbCI+SmFySG9sZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwjaW5pdCgpIj48Qj5pbml0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsPC9BPgo8REQ+aW5pdCAtIGRvZXMgbm90aGluZyAtIHdlIG5lZWQgdG8gaGF2ZSBzZXRSdW50aW1lTG9nZ2VyCiAgY2FsbGVkIGJlZm9yZSBnZXR0aW5nIG91ciBpbnRyb3NwZWN0b3IsIGFzIHRoZSBkZWZhdWx0CiAgdmVsIGludHJvc3BlY3RvciBkZXBlbmRzIHVwb24gaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3QuaHRtbCNpbml0KCkiPjxCPmluaXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0Lmh0bWwiPlViZXJzcGVjdDwvQT4KPEREPkluaXRpYWxpemVyIC0gd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHVzZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbikiPjxCPmluaXQoQ29uZmlndXJhdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sIj5Db25maWd1cmF0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UHJpdmF0ZSBpbml0aWFsaXplciBtZXRob2QgdGhhdCBzZXRzIHVwIHRoZSBnZW5lcmljCiByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwjaW5pdChvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuRXh0ZW5kZWRQcm9wZXJ0aWVzKSI+PEI+aW5pdChFeHRlbmRlZFByb3BlcnRpZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sIj5SZXNvdXJjZUxvYWRlcjwvQT4KPEREPkluaXRpYWxpemUgdGhlIHRlbXBsYXRlIGxvYWRlciB3aXRoIGEKIGEgcmVzb3VyY2VzIGNsYXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sI2luaXQob3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkV4dGVuZGVkUHJvcGVydGllcykiPjxCPmluaXQoRXh0ZW5kZWRQcm9wZXJ0aWVzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFyUmVzb3VyY2VMb2FkZXIuaHRtbCI+SmFyUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5DYWxsZWQgYnkgVmVsb2NpdHkgdG8gaW5pdGlhbGl6ZSB0aGUgbG9hZGVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sI2luaXQob3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkV4dGVuZGVkUHJvcGVydGllcykiPjxCPmluaXQoRXh0ZW5kZWRQcm9wZXJ0aWVzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9DbGFzc3BhdGhSZXNvdXJjZUxvYWRlci5odG1sI2luaXQob3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkV4dGVuZGVkUHJvcGVydGllcykiPjxCPmluaXQoRXh0ZW5kZWRQcm9wZXJ0aWVzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvQ2xhc3NwYXRoUmVzb3VyY2VMb2FkZXIuaHRtbCI+Q2xhc3NwYXRoUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5UaGlzIGlzIGFic3RyYWN0IGluIHRoZSBiYXNlIGNsYXNzLCBzbyB3ZSBuZWVkIGl0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sI2luaXQob3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkV4dGVuZGVkUHJvcGVydGllcykiPjxCPmluaXQoRXh0ZW5kZWRQcm9wZXJ0aWVzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRmlsZVJlc291cmNlTG9hZGVyLmh0bWwiPkZpbGVSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW5pdChJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEubGFuZy5PYmplY3QpIj48Qj5pbml0KEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJZGVudGlmaWVyLmh0bWwiPkFTVElkZW50aWZpZXI8L0E+CjxERD5zaW1wbGUgaW5pdCAtIGRvbid0IGRvIGFueXRoaW5nIHRoYXQgaXMgY29udGV4dCBzcGVjaWZpYy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNZXRob2QuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW5pdChJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTWV0aG9kLmh0bWwiPkFTVE1ldGhvZDwvQT4KPEREPnNpbXBsZSBpbml0IC0gaW5pdCBvdXIgc3VidHJlZSBhbmQgZ2V0IHdoYXQgd2UgY2FuIGZyb20gCiAgdGhlIEFTVAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVERpcmVjdGl2ZS5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEubGFuZy5PYmplY3QpIj48Qj5pbml0KEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCI+QVNURGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjaW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmluaXQoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGUuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW5pdChJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXNjYXBlLmh0bWwiPkFTVEVzY2FwZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW5pdChJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTnVtYmVyTGl0ZXJhbC5odG1sIj5BU1ROdW1iZXJMaXRlcmFsPC9BPgo8REQ+SW5pdGlhbGl6YXRpb24gbWV0aG9kIC0gZG9lc24ndCBkbyBtdWNoIGJ1dCBkbyB0aGUgb2JqZWN0CiAgY3JlYXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQ29tbWVudC5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEubGFuZy5PYmplY3QpIj48Qj5pbml0KEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RDb21tZW50Lmh0bWwiPkFTVENvbW1lbnQ8L0E+CjxERD5XZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBjYXRjaCBhbnkgb2YgdGhlIGRyZWFkZWQgTU9SRSB0b2tlbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEubGFuZy5PYmplY3QpIj48Qj5pbml0KEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU3RyaW5nTGl0ZXJhbC5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEubGFuZy5PYmplY3QpIj48Qj5pbml0KEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwiPkFTVFN0cmluZ0xpdGVyYWw8L0E+CjxERD5pbml0IDogd2UgZG9uJ3QgaGF2ZSB0byBkbyBtdWNoLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRleHQuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW5pdChJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVGV4dC5odG1sIj5BU1RUZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwjaW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmluaXQoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFNldERpcmVjdGl2ZS5odG1sIj5BU1RTZXREaXJlY3RpdmU8L0E+CjxERD5zaW1wbGUgaW5pdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwjaW5pdChqYXZhLnV0aWwuUHJvcGVydGllcykiPjxCPmluaXQoUHJvcGVydGllcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5pbml0aWFsaXplIHRoZSBWZWxvY2l0eSBydW50aW1lIGVuZ2luZSwgdXNpbmcgZGVmYXVsdCBwcm9wZXJ0aWVzCiAgcGx1cyB0aGUgcHJvcGVydGllcyBpbiB0aGUgcGFzc2VkIGluIGphdmEudXRpbC5Qcm9wZXJ0aWVzIG9iamVjdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNpbml0KGphdmEudXRpbC5Qcm9wZXJ0aWVzKSI+PEI+aW5pdChQcm9wZXJ0aWVzKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5pbml0aWFsaXplIHRoZSBWZWxvY2l0eSBydW50aW1lIGVuZ2luZSwgdXNpbmcgZGVmYXVsdCBwcm9wZXJ0aWVzCiAgcGx1cyB0aGUgcHJvcGVydGllcyBpbiB0aGUgcGFzc2VkIGluIGphdmEudXRpbC5Qcm9wZXJ0aWVzIG9iamVjdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2luaXQoamF2YS51dGlsLlByb3BlcnRpZXMpIj48Qj5pbml0KFByb3BlcnRpZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkluaXRpYWxpemUgdGhlIFZlbG9jaXR5IFJ1bnRpbWUgd2l0aCBhIFByb3BlcnRpZXMKIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjaW5pdChqYXZhLnV0aWwuUHJvcGVydGllcykiPjxCPmluaXQoUHJvcGVydGllcyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7SW5pdGlhbGl6ZSB0aGUgVmVsb2NpdHkgUnVudGltZSB3aXRoIGEgUHJvcGVydGllcwogb2JqZWN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNpbml0KGphdmEudXRpbC5Qcm9wZXJ0aWVzKSI+PEI+aW5pdChQcm9wZXJ0aWVzKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5Jbml0aWFsaXplIHRoZSBWZWxvY2l0eSBSdW50aW1lIHdpdGggYSBQcm9wZXJ0aWVzCiBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjaW5pdChqYXZhLnV0aWwuUHJvcGVydGllcykiPjxCPmluaXQoUHJvcGVydGllcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkluaXRpYWxpemUgdGhlIFZlbG9jaXR5IFJ1bnRpbWUgd2l0aCBhIFByb3BlcnRpZXMKIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48Qj5pbml0KFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwiPkxvZzRKTG9nU3lzdGVtPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwjaW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+aW5pdChSdW50aW1lU2VydmljZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9TaW1wbGVMb2c0SkxvZ1N5c3RlbS5odG1sIj5TaW1wbGVMb2c0SkxvZ1N5c3RlbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Qcmltb3JkaWFsTG9nU3lzdGVtLmh0bWwjaW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+aW5pdChSdW50aW1lU2VydmljZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Qcmltb3JkaWFsTG9nU3lzdGVtLmh0bWwiPlByaW1vcmRpYWxMb2dTeXN0ZW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvQXZhbG9uTG9nU3lzdGVtLmh0bWwjaW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+aW5pdChSdW50aW1lU2VydmljZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9BdmFsb25Mb2dTeXN0ZW0uaHRtbCI+QXZhbG9uTG9nU3lzdGVtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL051bGxMb2dTeXN0ZW0uaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48Qj5pbml0KFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL051bGxMb2dTeXN0ZW0uaHRtbCI+TnVsbExvZ1N5c3RlbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48Qj5pbml0KFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCI+TG9nU3lzdGVtPC9BPgo8REQ+aW5pdCgpCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwjaW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+aW5pdChSdW50aW1lU2VydmljZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwiPkV2ZW50SGFuZGxpbmdUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V4dGVybmFsTG9nZ2VyVGVzdC5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLlJ1bnRpbWVTZXJ2aWNlcykiPjxCPmluaXQoUnVudGltZVNlcnZpY2VzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V4dGVybmFsTG9nZ2VyVGVzdC5odG1sIj5FeHRlcm5hbExvZ2dlclRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc2xvYWRlckNoYW5nZVRlc3QuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48Qj5pbml0KFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc2xvYWRlckNoYW5nZVRlc3QuaHRtbCI+Q2xhc3Nsb2FkZXJDaGFuZ2VUZXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLlJ1bnRpbWVTZXJ2aWNlcywgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5Ob2RlKSI+PEI+aW5pdChSdW50aW1lU2VydmljZXMsIEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCI+RGlyZWN0aXZlPC9BPgo8REQ+SG93IHRoaXMgZGlyZWN0aXZlIGlzIHRvIGJlIGluaXRpYWxpemVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwjaW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzLCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUpIj48Qj5pbml0KFJ1bnRpbWVTZXJ2aWNlcywgSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgTm9kZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0ZvcmVhY2guaHRtbCI+Rm9yZWFjaDwvQT4KPEREPnNpbXBsZSBpbml0IC0gaW5pdCB0aGUgdHJlZSBhbmQgZ2V0IHRoZSBlbGVtZW50S2V5IGZyb20KICB0aGUgQVNUCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPmluaXQoUnVudGltZVNlcnZpY2VzLCBJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+VGhlIG1ham9yIG1lYXQgb2YgVmVsb2NpbWFjcm9Qcm94eSwgaW5pdCgpIGNoZWNrcyB0aGUgIyBvZiBhcmd1bWVudHMsIHBhdGNoZXMgdGhlCiAgIG1hY3JvIGJvZHksIHJlbmRlcnMgdGhlIG1hY3JvIGludG8gYW4gQVNULCBhbmQgdGhlbiBpbml0cyB0aGUgQVNULCBzbyBpdCBpcyByZWFkeSAKICAgZm9yIHF1aWNrIHJlbmRlcmluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm8uaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPmluaXQoUnVudGltZVNlcnZpY2VzLCBJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm8uaHRtbCI+TWFjcm88L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTGl0ZXJhbC5odG1sI2luaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLlJ1bnRpbWVTZXJ2aWNlcywgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5Ob2RlKSI+PEI+aW5pdChSdW50aW1lU2VydmljZXMsIEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9MaXRlcmFsLmh0bWwiPkxpdGVyYWw8L0E+CjxERD5TdG9yZSB0aGUgbGl0ZXJhbCByZW5kaXRpb24gb2YgYSBub2RlIHVzaW5nCiB0aGUgTm9kZS5saXRlcmFsKCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0luY2x1ZGUuaHRtbCNpbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPmluaXQoUnVudGltZVNlcnZpY2VzLCBJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sIj5JbmNsdWRlPC9BPgo8REQ+c2ltcGxlIGluaXQgLSBpbml0IHRoZSB0cmVlIGFuZCBnZXQgdGhlIGVsZW1lbnRLZXkgZnJvbQogIHRoZSBBU1QKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNpbml0KGphdmF4LnNlcnZsZXQuU2VydmxldENvbmZpZykiPjxCPmluaXQoU2VydmxldENvbmZpZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+UGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBzZXJ2bGV0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCNpbml0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5pbml0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5pbml0aWFsaXplIHRoZSBWZWxvY2l0eSBydW50aW1lIGVuZ2luZSwgdXNpbmcgZGVmYXVsdCBwcm9wZXJ0aWVzCiAgcGx1cyB0aGUgcHJvcGVydGllcyBpbiB0aGUgcHJvcGVydGllcyBmaWxlIHBhc3NlZCBpbiBhcyB0aGUgYXJnCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2luaXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmluaXQoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5pbml0aWFsaXplIHRoZSBWZWxvY2l0eSBydW50aW1lIGVuZ2luZSwgdXNpbmcgZGVmYXVsdCBwcm9wZXJ0aWVzCiAgcGx1cyB0aGUgcHJvcGVydGllcyBpbiB0aGUgcHJvcGVydGllcyBmaWxlIHBhc3NlZCBpbiBhcyB0aGUgYXJnCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjaW5pdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aW5pdChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkluaXRpYWxpemUgdGhlIFZlbG9jaXR5IFJ1bnRpbWUgd2l0aCB0aGUgbmFtZSBvZgogRXh0ZW5kZWRQcm9wZXJ0aWVzIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjaW5pdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aW5pdChTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0luaXRpYWxpemUgdGhlIFZlbG9jaXR5IFJ1bnRpbWUgd2l0aCB0aGUgbmFtZSBvZgogRXh0ZW5kZWRQcm9wZXJ0aWVzIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjaW5pdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aW5pdChTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPkluaXRpYWxpemUgdGhlIFZlbG9jaXR5IFJ1bnRpbWUgd2l0aCB0aGUgbmFtZSBvZgogRXh0ZW5kZWRQcm9wZXJ0aWVzIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNpbml0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5pbml0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkluaXRpYWxpemUgdGhlIFZlbG9jaXR5IFJ1bnRpbWUgd2l0aCB0aGUgbmFtZSBvZgogRXh0ZW5kZWRQcm9wZXJ0aWVzIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvQXZhbG9uTG9nU3lzdGVtLmh0bWwjaW5pdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aW5pdChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9BdmFsb25Mb2dTeXN0ZW0uaHRtbCI+QXZhbG9uTG9nU3lzdGVtPC9BPgo8REQ+aW5pdGlhbGl6ZXMgdGhlIGxvZyBzeXN0ZW0gdXNpbmcgdGhlIGxvZ2ZpbGUgYXJndW1lbnQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNpbml0KGphdmEuaW8uV3JpdGVyLCBpbnQsIGJvb2xlYW4pIj48Qj5pbml0KFdyaXRlciwgaW50LCBib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI2luaXRDb250cm9sQ29udGV4dCgpIj48Qj5pbml0Q29udHJvbENvbnRleHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+Q3JlYXRlcyBhIFZlbG9jaXR5Q29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVGVtcGxhdGUuaHRtbCNpbml0RG9jdW1lbnQoKSI+PEI+aW5pdERvY3VtZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1RlbXBsYXRlLmh0bWwiPlRlbXBsYXRlPC9BPgo8REQ+aW5pdGlhbGl6ZXMgdGhlIGRvY3VtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGVJbXBsLmh0bWwjaW5pdGlhbGl6ZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+aW5pdGlhbGl6ZShSdW50aW1lU2VydmljZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCI+UmVzb3VyY2VDYWNoZUltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlLmh0bWwjaW5pdGlhbGl6ZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+aW5pdGlhbGl6ZShSdW50aW1lU2VydmljZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGUuaHRtbCI+UmVzb3VyY2VDYWNoZTwvQT4KPEREPmluaXRpYWxpemVzIHRoZSBSZXNvdXJjZUNhY2hlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNpbml0aWFsaXplKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48Qj5pbml0aWFsaXplKFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwiPlJlc291cmNlTWFuYWdlckltcGw8L0E+CjxERD5Jbml0aWFsaXplIHRoZSBSZXNvdXJjZU1hbmFnZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VyLmh0bWwjaW5pdGlhbGl6ZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+aW5pdGlhbGl6ZShSdW50aW1lU2VydmljZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlci5odG1sIj5SZXNvdXJjZU1hbmFnZXI8L0E+CjxERD5Jbml0aWFsaXplIHRoZSBSZXNvdXJjZU1hbmFnZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1RlbXBsYXRlLmh0bWwjaW5pdGlhbGl6ZWQiPjxCPmluaXRpYWxpemVkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1RlbXBsYXRlLmh0bWwiPlRlbXBsYXRlPC9BPgo8REQ+VG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoaXMgdGVtcGxhdGUgaGFzIGJlZW4KICAgaW5pdGlhbGl6ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjaW5pdGlhbGl6ZWQiPjxCPmluaXRpYWxpemVkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+SW5kaWNhdGUgd2hldGhlciB0aGUgUnVudGltZSBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNpbml0aWFsaXplRGlyZWN0aXZlcygpIj48Qj5pbml0aWFsaXplRGlyZWN0aXZlcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlRoaXMgbWV0aG9kcyBpbml0aWFsaXplcyBhbGwgdGhlIGRpcmVjdGl2ZXMKIHRoYXQgYXJlIHVzZWQgYnkgdGhlIFZlbG9jaXR5IFJ1bnRpbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjaW5pdGlhbGl6ZUludHJvc3BlY3Rpb24oKSI+PEI+aW5pdGlhbGl6ZUludHJvc3BlY3Rpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5HZXRzIHRoZSBjbGFzc25hbWUgZm9yIHRoZSBVYmVyc3BlY3QgaW50cm9zcGVjdGlvbiBwYWNrYWdlIGFuZAogIGluc3RhbnRpYXRlcyBhbiBpbnN0YW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNpbml0aWFsaXplTG9nZ2VyKCkiPjxCPmluaXRpYWxpemVMb2dnZXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5Jbml0aWFsaXplIHRoZSBWZWxvY2l0eSBsb2dnaW5nIHN5c3RlbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNpbml0aWFsaXplUGFyc2VyUG9vbCgpIj48Qj5pbml0aWFsaXplUGFyc2VyUG9vbCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkluaXRpYWxpemVzIHRoZSBWZWxvY2l0eSBwYXJzZXIgcG9vbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNpbml0aWFsaXplUHJvcGVydGllcygpIj48Qj5pbml0aWFsaXplUHJvcGVydGllcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkluaXRpYWxpemUgVmVsb2NpdHkgcHJvcGVydGllcywgaWYgdGhlIGRlZmF1bHQKIHByb3BlcnRpZXMgaGF2ZSBub3QgYmVlbiBsYWlkIGRvd24gZmlyc3QgdGhlbgogZG8gc28uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjaW5pdGlhbGl6ZVJlc291cmNlTWFuYWdlcigpIj48Qj5pbml0aWFsaXplUmVzb3VyY2VNYW5hZ2VyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjaW5pdFZlbG9jaW1hY3JvKCkiPjxCPmluaXRWZWxvY2ltYWNybygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPmluaXRpYWxpemUgdGhlIGZhY3RvcnkgLSBzZXR1cCBhbGwgcGVybWlzc2lvbnMKICBsb2FkIGFsbCBnbG9iYWwgbGlicmFyaWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sI2luaXRWZWxvY2l0eShqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb25maWcpIj48Qj5pbml0VmVsb2NpdHkoU2VydmxldENvbmZpZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+SW5pdGlhbGl6ZXMgdGhlIFZlbG9jaXR5IHJ1bnRpbWUsIGZpcnN0IGNhbGxpbmcgCiAgbG9hZENvbmZpZ3VyYXRpb24oU2VydmxldENvbnZpZykgdG8gZ2V0IGEgCiAgamF2YS51dGlsLlByb3BlcnRpZXMgb2YgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgogIGFuZCB0aGVuIGNhbGxpbmcgVmVsb2NpdHkuaW5pdCgpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI2lubGluZUxvY2FsTW9kZSI+PEI+aW5saW5lTG9jYWxNb2RlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW5saW5lU2NvcGVWTVRlc3RDYXNlLmh0bWwiPjxCPklubGluZVNjb3BlVk1UZXN0Q2FzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbmxpbmVTY29wZVZNVGVzdENhc2UuaHRtbCI+SW5saW5lU2NvcGVWTVRlc3RDYXNlPC9BPi48REQ+VGVzdHMgaWYgdGhlIFZNIHRlbXBsYXRlLWxvY2FsaXR5IGlzIHdvcmtpbmcuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbmxpbmVTY29wZVZNVGVzdENhc2UuaHRtbCNJbmxpbmVTY29wZVZNVGVzdENhc2UoKSI+PEI+SW5saW5lU2NvcGVWTVRlc3RDYXNlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbmxpbmVTY29wZVZNVGVzdENhc2UuaHRtbCI+SW5saW5lU2NvcGVWTVRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwjaW5uZXJDb250ZXh0Ij48Qj5pbm5lckNvbnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sIj5BYnN0cmFjdENvbnRleHQ8L0E+CjxERD50aGUgY2hhaW5lZCBDb250ZXh0IGlmIGFueQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI2lubmVyQ29udGV4dCI+PEI+aW5uZXJDb250ZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+dGhlIGJhc2UgY29udGV4dCBzdG9yZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjSU5QVVRfRU5DT0RJTkciPjxCPklOUFVUX0VOQ09ESU5HPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPlRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIHRoZSB0ZW1wbGF0ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2lucHV0X3N0cmVhbSI+PEI+aW5wdXRfc3RyZWFtPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwjaW5wdXQxIj48Qj5pbnB1dDE8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5QXBwVGVzdENhc2UuaHRtbCI+VmVsb2NpdHlBcHBUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9JbnB1dEJhc2UuaHRtbCI+PEI+SW5wdXRCYXNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5wdXRCYXNlLmh0bWwiPklucHV0QmFzZTwvQT4uPEREPkJhc2UgY2xhc3MgZm9yIGRpcmVjdGl2ZXMgd2hpY2ggZG8gaW5wdXQgb3BlcmF0aW9ucwogKGUuZy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9JbnB1dEJhc2UuaHRtbCNJbnB1dEJhc2UoKSI+PEI+SW5wdXRCYXNlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0lucHV0QmFzZS5odG1sIj5JbnB1dEJhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjaW5wdXRFbmNvZGluZyI+PEI+aW5wdXRFbmNvZGluZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+VGhpcyBpcyB0aGUgZW5jb2RpbmcgZm9yIHRoZSBpbnB1dCBmaWxlKHMpCiAodGVtcGxhdGVzKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI2lucHV0RW5jb2RpbmciPjxCPmlucHV0RW5jb2Rpbmc8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+VGhpcyBpcyB0aGUgZW5jb2RpbmcgZm9yIHRoZSBpbnB1dCBmaWxlKHMpCiAodGVtcGxhdGVzKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjaW5wdXRTdHJlYW0iPjxCPmlucHV0U3RyZWFtPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjaW5SZWZlcmVuY2UiPjxCPmluUmVmZXJlbmNlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjaW5TZXQiPjxCPmluU2V0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL0ZpZWxkTWV0aG9kaXplci5odG1sI2luc3BlY3QoamF2YS5sYW5nLkNsYXNzKSI+PEI+aW5zcGVjdChDbGFzcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvRmllbGRNZXRob2RpemVyLmh0bWwiPkZpZWxkTWV0aG9kaXplcjwvQT4KPEREPk1ldGhvZCB0aGF0IHJldHJpZXZlcyBhbGwgcHVibGljIHN0YXRpYyBmaWVsZHMKICBpbiB0aGUgY2xhc3Mgd2UgYXJlIG1ldGhvZGl6aW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNpbnN0YW5jZSI+PEI+aW5zdGFuY2U8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5UaGUgZ2VuZXJhdG9yIHRvb2xzIHVzZWQgZm9yIGNyZWF0aW5nIGFkZGl0aW9uYWwKIG91dHB1dCB3aXRoaW5nIHRoZSBjb250cm9sIHRlbXBsYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwjaW50ZWdlck1ldGhvZChpbnQpIj48Qj5pbnRlZ2VyTWV0aG9kKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNJbnRlZ2VyUmFuZ2UoKSI+PEI+SW50ZWdlclJhbmdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5zdXBwb3J0cyB0aGUgW24uLm1dIHZlY3RvciBnZW5lcmF0b3IgZm9yIHVzZSBpbgogIHRoZSAjZm9yZWFjaCgpIHRvIGdlbmVyYXRlIG1lYXN1cmVkIHJhbmdlcyB3L28KICBuZWVkaW5nIGV4cGxpY2l0IHN1cHBvcnQgZnJvbSB0aGUgYXBwL3NlcnZsZXQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwjaW50ZXJuYWxDb250YWluc0tleShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW50ZXJuYWxDb250YWluc0tleShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCI+VmVsb2NpdHlDb250ZXh0PC9BPgo8REQ+ZGV0ZXJtaW5lcyBpZiB0aGVyZSBpcyBhIHZhbHVlIGZvciB0aGUKICBnaXZlbiBrZXkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCNpbnRlcm5hbENvbnRhaW5zS2V5KGphdmEubGFuZy5PYmplY3QpIj48Qj5pbnRlcm5hbENvbnRhaW5zS2V5KE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCI+QWJzdHJhY3RDb250ZXh0PC9BPgo8REQ+SW1wbGVtZW50IHRvIGRldGVybWluZSBpZiBhIGtleSBpcyBpbiB0aGUgc3RvcmFnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVyLmh0bWwiPjxCPkludGVybmFsQ29udGV4dEFkYXB0ZXI8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXIuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlcjwvQT4uPEREPmludGVyZmFjZSB0byBicmluZyBhbGwgbmVjZXNzYXJ5IGludGVybmFsIGFuZCB1c2VyIGNvbnRleHRzIHRvZ2V0aGVyLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+PEI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+LjxERD5UaGlzIGFkYXB0ZXIgY2xhc3MgaXMgdGhlIGNvbnRhaW5lciBmb3IgYWxsIGNvbnRleHQgdHlwZXMgZm9yIGludGVybmFsCiAgdXNlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCNJbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCkiPjxCPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsKENvbnRleHQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD5DVE9SIHRha2VzIGEgQ29udGV4dCBhbmQgd3JhcHMgaXQsIGRlbGVnYXRpbmcgYWxsICdkYXRhJyBjYWxscyAKICB0byBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwiPjxCPkludGVybmFsQ29udGV4dEJhc2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QmFzZS5odG1sIj5JbnRlcm5hbENvbnRleHRCYXNlPC9BPi48REQ+Y2xhc3MgdG8gZW5jYXBzdWxhdGUgdGhlICdzdHVmZicgZm9yIGludGVybmFsIG9wZXJhdGlvbiBvZiB2ZWxvY2l0eS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCNJbnRlcm5hbENvbnRleHRCYXNlKCkiPjxCPkludGVybmFsQ29udGV4dEJhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCI+SW50ZXJuYWxDb250ZXh0QmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsRXZlbnRDb250ZXh0Lmh0bWwiPjxCPkludGVybmFsRXZlbnRDb250ZXh0PC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbEV2ZW50Q29udGV4dC5odG1sIj5JbnRlcm5hbEV2ZW50Q29udGV4dDwvQT4uPEREPkludGVyZmFjZSBmb3IgZXZlbnQgc3VwcG9ydC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCNpbnRlcm5hbEdldChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aW50ZXJuYWxHZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwiPlZlbG9jaXR5Q29udGV4dDwvQT4KPEREPnJldHJpZXZlcyB2YWx1ZSBmb3Iga2V5IGZyb20gaW50ZXJuYWwKICBzdG9yYWdlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwjaW50ZXJuYWxHZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPmludGVybmFsR2V0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCI+QWJzdHJhY3RDb250ZXh0PC9BPgo8REQ+SW1wbGVtZW50IHRvIHJldHVybiBhIHZhbHVlIGZyb20gdGhlIGNvbnRleHQgc3RvcmFnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwjaW50ZXJuYWxHZXRLZXlzKCkiPjxCPmludGVybmFsR2V0S2V5cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCI+VmVsb2NpdHlDb250ZXh0PC9BPgo8REQ+cmV0dXJucyBhcnJheSBvZiBrZXlzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwjaW50ZXJuYWxHZXRLZXlzKCkiPjxCPmludGVybmFsR2V0S2V5cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwiPkFic3RyYWN0Q29udGV4dDwvQT4KPEREPkltcGxlbWVudCB0byByZXR1cm4gYW4gb2JqZWN0IGFycmF5IG9mIGtleSAKICBzdHJpbmdzIGZyb20geW91ciBzdG9yYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sIj48Qj5JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQ8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sIj5JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQ8L0E+LjxERD5pbnRlcmZhY2UgdG8gZW5jYXBzdWxhdGUgdGhlICdzdHVmZicgZm9yIGludGVybmFsIG9wZXJhdGlvbiBvZiB2ZWxvY2l0eS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sI2ludGVybmFsSW5pdCgpIj48Qj5pbnRlcm5hbEluaXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCI+TG9nNEpMb2dTeXN0ZW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtpbml0aWFsaXplcyB0aGUgbG9nIHN5c3RlbSB1c2luZyB0aGUgbG9nZmlsZSBhcmd1bWVudAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9TaW1wbGVMb2c0SkxvZ1N5c3RlbS5odG1sI2ludGVybmFsSW5pdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aW50ZXJuYWxJbml0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwiPlNpbXBsZUxvZzRKTG9nU3lzdGVtPC9BPgo8REQ+aW5pdGlhbGl6ZXMgdGhlIGxvZyBzeXN0ZW0gdXNpbmcgdGhlIGxvZ2ZpbGUgYXJndW1lbnQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwjaW50ZXJuYWxQdXQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPmludGVybmFsUHV0KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwiPlZlbG9jaXR5Q29udGV4dDwvQT4KPEREPnN0b3JlcyB0aGUgdmFsdWUgZm9yIGtleSB0byBpbnRlcm5hbAogIHN0b3JhZ2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCNpbnRlcm5hbFB1dChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aW50ZXJuYWxQdXQoU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwiPkFic3RyYWN0Q29udGV4dDwvQT4KPEREPkltcGxlbWVudCB0byBwdXQgYSB2YWx1ZSBpbnRvIHRoZSBjb250ZXh0IHN0b3JhZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1ZlbG9jaXR5Q29udGV4dC5odG1sI2ludGVybmFsUmVtb3ZlKGphdmEubGFuZy5PYmplY3QpIj48Qj5pbnRlcm5hbFJlbW92ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCI+VmVsb2NpdHlDb250ZXh0PC9BPgo8REQ+cmVtb3ZlIGEga2V5L3ZhbHVlIHBhaXIgZnJvbSB0aGUKICBpbnRlcm5hbCBzdG9yYWdlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQWJzdHJhY3RDb250ZXh0Lmh0bWwjaW50ZXJuYWxSZW1vdmUoamF2YS5sYW5nLk9iamVjdCkiPjxCPmludGVybmFsUmVtb3ZlKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCI+QWJzdHJhY3RDb250ZXh0PC9BPgo8REQ+SSBtcGxlbWVudCB0byByZW1vdmUgYW4gaXRlbSBmcm9tIHlvdXIgc3RvcmFnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbFdyYXBwZXJDb250ZXh0Lmh0bWwiPjxCPkludGVybmFsV3JhcHBlckNvbnRleHQ8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsV3JhcHBlckNvbnRleHQuaHRtbCI+SW50ZXJuYWxXcmFwcGVyQ29udGV4dDwvQT4uPEREPmludGVyZmFjZSBmb3IgaW50ZXJuYWwgY29udGV4dCB3cmFwcGluZyBmdW5jdGlvbmFsaXR5PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwjaW50ZXJwb2xhdGUiPjxCPmludGVycG9sYXRlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwiPkFTVFN0cmluZ0xpdGVyYWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjSU5URVJQT0xBVEVfU1RSSU5HTElURVJBTFMiPjxCPklOVEVSUE9MQVRFX1NUUklOR0xJVEVSQUxTPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPlN3aXRjaCBmb3IgdGhlIGludGVycG9sYXRpb24gZmFjaWxpdHkgZm9yIHN0cmluZyBsaXRlcmFscwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGVVdGlscy5odG1sI2ludGVycG9sYXRlKGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0KSI+PEI+aW50ZXJwb2xhdGUoU3RyaW5nLCBDb250ZXh0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlVXRpbHMuaHRtbCI+Tm9kZVV0aWxzPC9BPgo8REQ+VXRpbGl0eSBtZXRob2QgdG8gaW50ZXJwb2xhdGUgY29udGV4dCB2YXJpYWJsZXMKIGludG8gc3RyaW5nIGxpdGVyYWxzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN0cmluZ0xpdGVyYWwuaHRtbCNpbnRlcnBvbGF0ZWltYWdlIj48Qj5pbnRlcnBvbGF0ZWltYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwiPkFTVFN0cmluZ0xpdGVyYWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwjaW50cm9zcGVjdGlvbkNhY2hlIj48Qj5pbnRyb3NwZWN0aW9uQ2FjaGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCI+SW50ZXJuYWxDb250ZXh0QmFzZTwvQT4KPEREPmNhY2hlIGZvciBub2RlL2NvbnRleHQgc3BlY2lmaWMgaW50cm9zcGVjdGlvbiBpbmZvcm1hdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdGlvbkNhY2hlRGF0YS5odG1sIj48Qj5JbnRyb3NwZWN0aW9uQ2FjaGVEYXRhPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbnRyb3NwZWN0aW9uQ2FjaGVEYXRhLmh0bWwiPkludHJvc3BlY3Rpb25DYWNoZURhdGE8L0E+LjxERD5Ib2xkcyBpbmZvcm1hdGlvbiBmb3Igbm9kZS1sb2NhbCBjb250ZXh0IGRhdGEgaW50cm9zcGVjdGlvbgogIGluZm9ybWF0aW9uLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbnRyb3NwZWN0aW9uQ2FjaGVEYXRhLmh0bWwjSW50cm9zcGVjdGlvbkNhY2hlRGF0YSgpIj48Qj5JbnRyb3NwZWN0aW9uQ2FjaGVEYXRhKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdGlvbkNhY2hlRGF0YS5odG1sIj5JbnRyb3NwZWN0aW9uQ2FjaGVEYXRhPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjaW50cm9zcGVjdG9yIj48Qj5pbnRyb3NwZWN0b3I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Qcm9wZXJ0eUV4ZWN1dG9yLmh0bWwjaW50cm9zcGVjdG9yIj48Qj5pbnRyb3NwZWN0b3I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1Byb3BlcnR5RXhlY3V0b3IuaHRtbCI+UHJvcGVydHlFeGVjdXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5odG1sI2ludHJvc3BlY3RvciI+PEI+aW50cm9zcGVjdG9yPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbDwvQT4KPEREPnRoZSBkZWZhdWx0IFZlbG9jaXR5IGludHJvc3BlY3Rvcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yLmh0bWwiPjxCPkludHJvc3BlY3RvcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yLmh0bWwiPkludHJvc3BlY3RvcjwvQT4uPEREPlRoaXMgYmFzaWMgZnVuY3Rpb24gb2YgdGhpcyBjbGFzcyBpcyB0byByZXR1cm4gYSBNZXRob2QKIG9iamVjdCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIGdpdmVuIHRoZSBuYW1lIG9mIGEgbWV0aG9kCiBhbmQgdGhlIHBhcmFtZXRlcnMgdG8gdGhlIG1ldGhvZCBpbiB0aGUgZm9ybSBvZiBhbiBPYmplY3RbXQoKIFRoZSBmaXJzdCB0aW1lIHRoZSBJbnRyb3NwZWN0b3Igc2VlcyBhIAogY2xhc3MgaXQgY3JlYXRlcyBhIGNsYXNzIG1ldGhvZCBtYXAgZm9yIHRoZQogY2xhc3MgaW4gcXVlc3Rpb24uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rvci5odG1sI0ludHJvc3BlY3RvcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZUxvZ2dlcikiPjxCPkludHJvc3BlY3RvcihSdW50aW1lTG9nZ2VyKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbnRyb3NwZWN0b3IuaHRtbCI+SW50cm9zcGVjdG9yPC9BPgo8REQ+UmVjaWV2ZXMgb3VyIFJ1bnRpbWVTZXJ2aWNlcyBvYmplY3QKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3RvckJhc2UuaHRtbCI+PEI+SW50cm9zcGVjdG9yQmFzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yQmFzZS5odG1sIj5JbnRyb3NwZWN0b3JCYXNlPC9BPi48REQ+VGhpcyBiYXNpYyBmdW5jdGlvbiBvZiB0aGlzIGNsYXNzIGlzIHRvIHJldHVybiBhIE1ldGhvZAogb2JqZWN0IGZvciBhIHBhcnRpY3VsYXIgY2xhc3MgZ2l2ZW4gdGhlIG5hbWUgb2YgYSBtZXRob2QKIGFuZCB0aGUgcGFyYW1ldGVycyB0byB0aGUgbWV0aG9kIGluIHRoZSBmb3JtIG9mIGFuIE9iamVjdFtdCgogVGhlIGZpcnN0IHRpbWUgdGhlIEludHJvc3BlY3RvciBzZWVzIGEgCiBjbGFzcyBpdCBjcmVhdGVzIGEgY2xhc3MgbWV0aG9kIG1hcCBmb3IgdGhlCiBjbGFzcyBpbiBxdWVzdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yQmFzZS5odG1sI0ludHJvc3BlY3RvckJhc2UoKSI+PEI+SW50cm9zcGVjdG9yQmFzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3RvckJhc2UuaHRtbCI+SW50cm9zcGVjdG9yQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlPC9BPi48REQ+VGVzdCBjYXNlIGZvciB0aGUgVmVsb2NpdHkgSW50cm9zcGVjdG9yIHdoaWNoIHVzZXMKIHRoZSBKYXZhIFJlZmxlY3Rpb24gQVBJIHRvIGRldGVybWluZSB0aGUgY29ycmVjdAogc2lnbmF0dXJlIG9mIHRoZSBtZXRob2RzIHVzZWQgaW4gVlRMIHRlbXBsYXRlcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sI0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyKCkiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwjSW50cm9zcGVjdG9yVGVzdENhc2UoKSI+PEI+SW50cm9zcGVjdG9yVGVzdENhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UuaHRtbCNJbnRyb3NwZWN0b3JUZXN0Q2FzZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+SW50cm9zcGVjdG9yVGVzdENhc2UoU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlPC9BPgo8REQ+Q3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuaHRtbCI+PEI+SW50cm9zcGVjdG9yVGVzdENhc2UyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTI8L0E+LjxERD5UZXN0IGNhc2UgZm9yIHRoZSBWZWxvY2l0eSBJbnRyb3NwZWN0b3Igd2hpY2gKICB0ZXN0cyB0aGUgYWJpbGl0eSB0byBmaW5kIGEgJ2Jlc3QgbWF0Y2gnPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuQmFyLmh0bWwiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlMi5CYXI8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLkJhci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuQmFyPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuQmFyLmh0bWwjSW50cm9zcGVjdG9yVGVzdENhc2UyLkJhcigpIj48Qj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuQmFyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuQmFyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMi5CYXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuRm9vLmh0bWwiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlMi5Gb288L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLkZvby5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuRm9vPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuRm9vLmh0bWwjSW50cm9zcGVjdG9yVGVzdENhc2UyLkZvbygpIj48Qj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuRm9vKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuRm9vLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMi5Gb288L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyLmh0bWwiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXI8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3Rlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyLmh0bWwjSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3RlcigpIj48Qj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMi5UZXN0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMi5odG1sIj48Qj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMi5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMjwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3RlcjIuaHRtbCNJbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMigpIj48Qj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuVGVzdGVyMigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3RlcjIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UyLlRlc3RlcjI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuV29vZ2llLmh0bWwiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlMi5Xb29naWU8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5Xb29naWUuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UyLldvb2dpZTwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLmh0bWwjSW50cm9zcGVjdG9yVGVzdENhc2UyKCkiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlMigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5odG1sI0ludHJvc3BlY3RvclRlc3RDYXNlMihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+SW50cm9zcGVjdG9yVGVzdENhc2UyKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UyPC9BPgo8REQ+Q3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuaHRtbCI+PEI+SW50cm9zcGVjdG9yVGVzdENhc2UzPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTM8L0E+LjxERD5TaW1wbGUgaW50cm9zcGVjdG9yIHRlc3QgY2FzZSBmb3IgcHJpbWl0aXZlIHByb2JsZW0gZm91bmQgaW4gMS4zPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXIuaHRtbCI+PEI+SW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXI8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlci5odG1sI0ludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlcigpIj48Qj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXIoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuaHRtbCNJbnRyb3NwZWN0b3JUZXN0Q2FzZTMoamF2YS5sYW5nLlN0cmluZykiPjxCPkludHJvc3BlY3RvclRlc3RDYXNlMyhTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UzLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMzwvQT4KPEREPkNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI2ludmFsaWQiPjxCPmludmFsaWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbk1nckVycm9yLmh0bWwjSU5WQUxJRF9MRVhJQ0FMX1NUQVRFIj48Qj5JTlZBTElEX0xFWElDQUxfU1RBVEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCI+VG9rZW5NZ3JFcnJvcjwvQT4KPEREPlRyaWVkIHRvIGNoYW5nZSB0byBhbiBpbnZhbGlkIGxleGljYWwgc3RhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGwuaHRtbCNpbnZva2UoamF2YS5sYW5nLk9iamVjdCkiPjxCPmludm9rZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbFByb3BlcnR5R2V0Lmh0bWwjaW52b2tlKGphdmEubGFuZy5PYmplY3QpIj48Qj5pbnZva2UoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlHZXQuaHRtbCI+VmVsUHJvcGVydHlHZXQ8L0E+CjxERD5pbnZvY2F0aW9uIG1ldGhvZCAtIGNhbGxlZCB3aGVuIHRoZSAnZ2V0IGFjdGlvbicgc2hvdWxkIGJlCiAgcHJlZm9ybWVkIGFuZCBhIHZhbHVlIHJldHVybmVkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwuaHRtbCNpbnZva2UoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmludm9rZShPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsLmh0bWwiPlViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlTZXQuaHRtbCNpbnZva2UoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmludm9rZShPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbFByb3BlcnR5U2V0Lmh0bWwiPlZlbFByb3BlcnR5U2V0PC9BPgo8REQ+bWV0aG9kIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBpbiB0aGUgb2JqZWN0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNpbnZva2UoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdFtdKSI+PEI+aW52b2tlKE9iamVjdCwgT2JqZWN0W10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbE1ldGhvZC5odG1sI2ludm9rZShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0W10pIj48Qj5pbnZva2UoT2JqZWN0LCBPYmplY3RbXSk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbE1ldGhvZC5odG1sIj5WZWxNZXRob2Q8L0E+CjxERD5pbnZvY2F0aW9uIG1ldGhvZCAtIGNhbGxlZCB3aGVuIHRoZSBtZXRob2QgaW52b2NhdGlvbnNob3VsZCBiZQogIHByZWZvcm1lZCBhbmQgYSB2YWx1ZSByZXR1cm5lZAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCNpbnZva2VWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nW10sIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlcikiPjxCPmludm9rZVZlbG9jaW1hY3JvKFN0cmluZywgU3RyaW5nLCBTdHJpbmdbXSwgQ29udGV4dCwgV3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPkludm9rZXMgYSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBWZWxvY2ltYWNybyB3aXRoIHRoZSBwYXJtcyBwcm92aWRlZAogIGFuZCBwbGFjZXMgdGhlIHJlbmRlcmVkIHN0cmVhbSBpbnRvIHRoZSB3cml0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI2ludm9rZVZlbG9jaW1hY3JvKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmdbXSwgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQsIGphdmEuaW8uV3JpdGVyKSI+PEI+aW52b2tlVmVsb2NpbWFjcm8oU3RyaW5nLCBTdHJpbmcsIFN0cmluZ1tdLCBDb250ZXh0LCBXcml0ZXIpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPkludm9rZXMgYSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBWZWxvY2ltYWNybyB3aXRoIHRoZSBwYXJtcyBwcm92aWRlZAogIGFuZCBwbGFjZXMgdGhlIHJlbmRlcmVkIHN0cmVhbSBpbnRvIHRoZSB3cml0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQWJzdHJhY3RFeGVjdXRvci5odG1sI2lzQWxpdmUoKSI+PEI+aXNBbGl2ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQWJzdHJhY3RFeGVjdXRvci5odG1sIj5BYnN0cmFjdEV4ZWN1dG9yPC9BPgo8REQ+VGVsbCB3aGV0aGVyIHRoZSBleGVjdXRvciBpcyBhbGl2ZSBieSBsb29raW5nCiBhdCB0aGUgdmFsdWUgb2YgdGhlIG1ldGhvZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sI2lzQXBwbGljYWJsZShqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QsIGphdmEubGFuZy5DbGFzc1tdKSI+PEI+aXNBcHBsaWNhYmxlKE1ldGhvZCwgQ2xhc3NbXSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sIj5NZXRob2RNYXA8L0E+CjxERD5SZXR1cm5zIHRydWUgaWYgdGhlIHN1cHBsaWVkIG1ldGhvZCBpcyBhcHBsaWNhYmxlIHRvIGFjdHVhbAogYXJndW1lbnQgdHlwZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjaXNBdXRvRmx1c2goKSI+PEI+aXNBdXRvRmx1c2goKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgSnNwV3JpdGVyIGlzIGF1dG9GbHVzaGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9Cb29sT2JqLmh0bWwjaXNCb29sZWFuKCkiPjxCPmlzQm9vbGVhbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvQm9vbE9iai5odG1sIj5Cb29sT2JqPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNpc0NhY2hlYWJsZSgpIj48Qj5pc0NhY2hlYWJsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbC5odG1sI2lzQ2FjaGVhYmxlKCkiPjxCPmlzQ2FjaGVhYmxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsLmh0bWwiPlViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsLmh0bWwjaXNDYWNoZWFibGUoKSI+PEI+aXNDYWNoZWFibGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCNpc0NhY2hlYWJsZSgpIj48Qj5pc0NhY2hlYWJsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCI+VmVsTWV0aG9kPC9BPgo8REQ+c3BlY2lmaWVzIGlmIHRoaXMgVmVsTWV0aG9kIGlzIGNhY2hlYWJsZSBhbmQgYWJsZSB0byBiZQogIHJldXNlZCBmb3IgdGhpcyBjbGFzcyBvZiBvYmplY3QgaXQgd2FzIHJldHVybmVkIGZvcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlTZXQuaHRtbCNpc0NhY2hlYWJsZSgpIj48Qj5pc0NhY2hlYWJsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxQcm9wZXJ0eVNldC5odG1sIj5WZWxQcm9wZXJ0eVNldDwvQT4KPEREPnNwZWNpZmllcyBpZiB0aGlzIFZlbFByb3BlcnR5U2V0IGlzIGNhY2hlYWJsZSBhbmQgYWJsZSB0byBiZQogIHJldXNlZCBmb3IgdGhpcyBjbGFzcyBvZiBvYmplY3QgaXQgd2FzIHJldHVybmVkIGZvcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlHZXQuaHRtbCNpc0NhY2hlYWJsZSgpIj48Qj5pc0NhY2hlYWJsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxQcm9wZXJ0eUdldC5odG1sIj5WZWxQcm9wZXJ0eUdldDwvQT4KPEREPnNwZWNpZmllcyBpZiB0aGlzIFZlbFByb3BlcnR5R2V0IGlzIGNhY2hlYWJsZSBhbmQgYWJsZSB0byBiZQogIHJldXNlZCBmb3IgdGhpcyBjbGFzcyBvZiBvYmplY3QgaXQgd2FzIHJldHVybmVkIGZvcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sI2lzQ2FjaGluZ09uIj48Qj5pc0NhY2hpbmdPbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sIj5SZXNvdXJjZUxvYWRlcjwvQT4KPEREPkRvZXMgdGhpcyBsb2FkZXIgd2FudCB0ZW1wbGF0ZXMgcHJvZHVjZWQgd2l0aCBpdAogY2FjaGVkIGluIHRoZSBSdW50aW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sI2lzQ2FjaGluZ09uKCkiPjxCPmlzQ2FjaGluZ09uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwiPlJlc291cmNlTG9hZGVyPC9BPgo8REQ+VGhlIFJ1bnRpbWUgdXNlcyB0aGlzIHRvIGZpbmQgb3V0IHdoZXRoZXIgdGhpcwogdGVtcGxhdGUgbG9hZGVyIHdhbnRzIHRoZSBSdW50aW1lIHRvIGNhY2hlCiB0ZW1wbGF0ZXMgY3JlYXRlZCB3aXRoIElucHV0U3RyZWFtcyBwcm92aWRlZAogYnkgdGhpcyBsb2FkZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI2lzQ29tbWl0dGVkKCkiPjxCPmlzQ29tbWl0dGVkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI2lzQ29uc3RhbnQoKSI+PEI+aXNDb25zdGFudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwiPlZNUHJveHlBcmc8L0E+CjxERD50ZWxscyBpZiBhcmcgd2UgYXJlIHBveHlpbmcgZm9yIGlzCiAgZHluYW1pYyBvciBjb25zdGFudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCNpc0RpcmVjdGl2ZSI+PEI+aXNEaXJlY3RpdmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVERpcmVjdGl2ZS5odG1sIj5BU1REaXJlY3RpdmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjaXNEaXJlY3RpdmUoamF2YS5sYW5nLlN0cmluZykiPjxCPmlzRGlyZWN0aXZlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBmaW5kcyBvdXQgb2YgdGhlIGRpcmVjdGl2ZSBleGlzdHMgaW4gdGhlIGRpcmVjdGl2ZXMKICBIYXNodGFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2lzRW1wdHkoKSI+PEI+aXNFbXB0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjaXNJbml0aWFsaXplZCI+PEI+aXNJbml0aWFsaXplZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0hhcyB0aGlzIGNvbmZpZ3VyYXRpb24gYmVlbiBpbnRpYWxpemVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI2lzSW5pdGlhbGl6ZWQoKSI+PEI+aXNJbml0aWFsaXplZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0luZGljYXRlIHRvIGNsaWVudCBjb2RlIHdoZXRoZXIgcHJvcGVydHkKIHJlc291cmNlcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgb3Igbm90Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNpc0ludmFsaWQoKSI+PEI+aXNJbnZhbGlkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjaXNJbnZhbGlkKCkiPjxCPmlzSW52YWxpZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0Jhc2VUZXN0Q2FzZS5odG1sI2lzTWF0Y2goamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmlzTWF0Y2goU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQmFzZVRlc3RDYXNlLmh0bWwiPkJhc2VUZXN0Q2FzZTwvQT4KPEREPlJldHVybnMgd2hldGhlciB0aGUgcHJvY2Vzc2VkIHRlbXBsYXRlIG1hdGNoZXMgdGhlIAogY29udGVudCBvZiB0aGUgcHJvdmlkZWQgY29tcGFyaXNvbiBmaWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwjaXNNZXRob2RJbnZvY2F0aW9uQ29udmVydGlibGUoamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuQ2xhc3MpIj48Qj5pc01ldGhvZEludm9jYXRpb25Db252ZXJ0aWJsZShDbGFzcywgQ2xhc3MpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCI+TWV0aG9kTWFwPC9BPgo8REQ+RGV0ZXJtaW5lcyB3aGV0aGVyIGEgdHlwZSByZXByZXNlbnRlZCBieSBhIGNsYXNzIG9iamVjdCBpcwogY29udmVydGlibGUgdG8gYW5vdGhlciB0eXBlIHJlcHJlc2VudGVkIGJ5IGEgY2xhc3Mgb2JqZWN0IHVzaW5nIGEKIG1ldGhvZCBpbnZvY2F0aW9uIGNvbnZlcnNpb24sIHRyZWF0aW5nIG9iamVjdCB0eXBlcyBvZiBwcmltaXRpdmUKIHR5cGVzIGFzIGlmIHRoZXkgd2VyZSBwcmltaXRpdmUgdHlwZXMgKHRoYXQgaXMsIGEgQm9vbGVhbiBhY3R1YWwKIHBhcmFtZXRlciB0eXBlIG1hdGNoZXMgYm9vbGVhbiBwcmltaXRpdmUgZm9ybWFsIHR5cGUpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL0Jvb2xPYmouaHRtbCNpc05vdGJvb2xlYW4oKSI+PEI+aXNOb3Rib29sZWFuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9Cb29sT2JqLmh0bWwiPkJvb2xPYmo8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjaXNOdWxsKGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpIj48Qj5pc051bGwoT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyPC9BPgo8REQ+UmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgaWYgdGhlIG9iamVjdCBwYXNzZWQgaXMgbnVsbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI2lzU291cmNlTW9kaWZpZWQoKSI+PEI+aXNTb3VyY2VNb2RpZmllZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCNpc1NvdXJjZU1vZGlmaWVkKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPmlzU291cmNlTW9kaWZpZWQoUmVzb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sIj5SZXNvdXJjZUxvYWRlcjwvQT4KPEREPkdpdmVuIGEgdGVtcGxhdGUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgc291cmNlIG9mIElucHV0U3RyZWFtCiBoYXMgYmVlbiBtb2RpZmllZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFyUmVzb3VyY2VMb2FkZXIuaHRtbCNpc1NvdXJjZU1vZGlmaWVkKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPmlzU291cmNlTW9kaWZpZWQoUmVzb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sIj5KYXJSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCNpc1NvdXJjZU1vZGlmaWVkKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPmlzU291cmNlTW9kaWZpZWQoUmVzb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCI+RGF0YVNvdXJjZVJlc291cmNlTG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0NsYXNzcGF0aFJlc291cmNlTG9hZGVyLmh0bWwjaXNTb3VyY2VNb2RpZmllZChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuUmVzb3VyY2UpIj48Qj5pc1NvdXJjZU1vZGlmaWVkKFJlc291cmNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvQ2xhc3NwYXRoUmVzb3VyY2VMb2FkZXIuaHRtbCI+Q2xhc3NwYXRoUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5EZWZhdWx0cyB0byByZXR1cm4gZmFsc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sI2lzU291cmNlTW9kaWZpZWQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLlJlc291cmNlKSI+PEI+aXNTb3VyY2VNb2RpZmllZChSZXNvdXJjZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sIj5GaWxlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5Ib3cgdG8ga2VlcCB0cmFjayBvZiBhbGwgdGhlIG1vZGlmaWVkIHRpbWVzCiBhY3Jvc3MgdGhlIHBhdGhzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwjaXNTdHJpY3RNZXRob2RJbnZvY2F0aW9uQ29udmVydGlibGUoamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuQ2xhc3MpIj48Qj5pc1N0cmljdE1ldGhvZEludm9jYXRpb25Db252ZXJ0aWJsZShDbGFzcywgQ2xhc3MpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCI+TWV0aG9kTWFwPC9BPgo8REQ+RGV0ZXJtaW5lcyB3aGV0aGVyIGEgdHlwZSByZXByZXNlbnRlZCBieSBhIGNsYXNzIG9iamVjdCBpcwogY29udmVydGlibGUgdG8gYW5vdGhlciB0eXBlIHJlcHJlc2VudGVkIGJ5IGEgY2xhc3Mgb2JqZWN0IHVzaW5nIGEKIG1ldGhvZCBpbnZvY2F0aW9uIGNvbnZlcnNpb24sIHdpdGhvdXQgbWF0Y2hpbmcgb2JqZWN0IGFuZCBwcmltaXRpdmUKIHR5cGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI2lzVmVsb2NpbWFjcm8oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmlzVmVsb2NpbWFjcm8oU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkNoZWNrcyB0byBzZWUgaWYgYSBWTSBleGlzdHMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNpc1ZlbG9jaW1hY3JvKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5pc1ZlbG9jaW1hY3JvKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5UZWxscyB0aGUgd29ybGQgaWYgYSBnaXZlbiBkaXJlY3RpdmUgc3RyaW5nIGlzIGEgVmVsb2NpbWFjcm8KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjaXNWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aXNWZWxvY2ltYWNybyhTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q2hlY2tzIHRvIHNlZSBpZiBhIFZNIGV4aXN0cwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNpc1ZlbG9jaW1hY3JvKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5pc1ZlbG9jaW1hY3JvKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5DaGVja3MgdG8gc2VlIGlmIGEgVk0gZXhpc3RzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjaXNWZWxvY2ltYWNybyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aXNWZWxvY2ltYWNybyhTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkNoZWNrcyB0byBzZWUgaWYgYSBWTSBleGlzdHMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjaXRlcmF0b3IoKSI+PEI+aXRlcmF0b3IoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9KXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5KPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuRm9vLmh0bWwjaiI+PEI+ajwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UyLkZvby5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuRm9vPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phclJlc291cmNlTG9hZGVyLmh0bWwjamFyZmlsZXMiPjxCPmphcmZpbGVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phclJlc291cmNlTG9hZGVyLmh0bWwiPkphclJlc291cmNlTG9hZGVyPC9BPgo8REQ+TWFwcyBKQVIgVVJMcyB0byB0aGUgYWN0dWFsIEpBUgogS2V5ID0gdGhlIEpBUiBVUkwKIFZhbHVlID0gdGhlIEpBUgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJIb2xkZXIuaHRtbCI+PEI+SmFySG9sZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFySG9sZGVyLmh0bWwiPkphckhvbGRlcjwvQT4uPEREPkEgc21hbGwgd3JhcHBlciBhcm91bmQgYSBKYXI8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJIb2xkZXIuaHRtbCNKYXJIb2xkZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLlJ1bnRpbWVTZXJ2aWNlcywgamF2YS5sYW5nLlN0cmluZykiPjxCPkphckhvbGRlcihSdW50aW1lU2VydmljZXMsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sIj5KYXJIb2xkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFyUmVzb3VyY2VMb2FkZXIuaHRtbCI+PEI+SmFyUmVzb3VyY2VMb2FkZXI8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sIj5KYXJSZXNvdXJjZUxvYWRlcjwvQT4uPEREPgogUmVzb3VyY2VMb2FkZXIgdG8gbG9hZCB0ZW1wbGF0ZXMgZnJvbSBtdWx0aXBsZSBKYXIgZmlsZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFyUmVzb3VyY2VMb2FkZXIuaHRtbCNKYXJSZXNvdXJjZUxvYWRlcigpIj48Qj5KYXJSZXNvdXJjZUxvYWRlcigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sIj5KYXJSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8yXzEoaW50KSI+PEI+ampfMl8xKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfMl8xMChpbnQpIj48Qj5qal8yXzEwKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfMl8xMShpbnQpIj48Qj5qal8yXzExKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfMl8yKGludCkiPjxCPmpqXzJfMihpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzJfMyhpbnQpIj48Qj5qal8yXzMoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8yXzQoaW50KSI+PEI+ampfMl80KGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfMl81KGludCkiPjxCPmpqXzJfNShpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzJfNihpbnQpIj48Qj5qal8yXzYoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8yXzcoaW50KSI+PEI+ampfMl83KGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfMl84KGludCkiPjxCPmpqXzJfOChpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzJfOShpbnQpIj48Qj5qal8yXzkoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8yX3J0bnMiPjxCPmpqXzJfcnRuczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNfMSgpIj48Qj5qal8zXzEoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zXzEwKCkiPjxCPmpqXzNfMTAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zXzExKCkiPjxCPmpqXzNfMTEoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zXzIoKSI+PEI+ampfM18yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM18zKCkiPjxCPmpqXzNfMygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNfNCgpIj48Qj5qal8zXzQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zXzUoKSI+PEI+ampfM181KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM182KCkiPjxCPmpqXzNfNigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNfNygpIj48Qj5qal8zXzcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zXzgoKSI+PEI+ampfM184KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM185KCkiPjxCPmpqXzNfOSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzE5KCkiPjxCPmpqXzNSXzE5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfMjAoKSI+PEI+ampfM1JfMjAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl8yMSgpIj48Qj5qal8zUl8yMSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzIyKCkiPjxCPmpqXzNSXzIyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfMjMoKSI+PEI+ampfM1JfMjMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl8yNCgpIj48Qj5qal8zUl8yNCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzI1KCkiPjxCPmpqXzNSXzI1KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfMjYoKSI+PEI+ampfM1JfMjYoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl8yNygpIj48Qj5qal8zUl8yNygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzI4KCkiPjxCPmpqXzNSXzI4KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfMjkoKSI+PEI+ampfM1JfMjkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl8zMCgpIj48Qj5qal8zUl8zMCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzMxKCkiPjxCPmpqXzNSXzMxKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfMzIoKSI+PEI+ampfM1JfMzIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl8zMygpIj48Qj5qal8zUl8zMygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzM0KCkiPjxCPmpqXzNSXzM0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfMzUoKSI+PEI+ampfM1JfMzUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl8zNigpIj48Qj5qal8zUl8zNigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzM3KCkiPjxCPmpqXzNSXzM3KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfMzgoKSI+PEI+ampfM1JfMzgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl8zOSgpIj48Qj5qal8zUl8zOSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzQwKCkiPjxCPmpqXzNSXzQwKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNDEoKSI+PEI+ampfM1JfNDEoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl80MigpIj48Qj5qal8zUl80MigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzQzKCkiPjxCPmpqXzNSXzQzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNDQoKSI+PEI+ampfM1JfNDQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl80NSgpIj48Qj5qal8zUl80NSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzQ2KCkiPjxCPmpqXzNSXzQ2KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNDcoKSI+PEI+ampfM1JfNDcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl80OCgpIj48Qj5qal8zUl80OCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzQ5KCkiPjxCPmpqXzNSXzQ5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNTAoKSI+PEI+ampfM1JfNTAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl81MSgpIj48Qj5qal8zUl81MSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzUyKCkiPjxCPmpqXzNSXzUyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNTMoKSI+PEI+ampfM1JfNTMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl81NCgpIj48Qj5qal8zUl81NCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzU1KCkiPjxCPmpqXzNSXzU1KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNTYoKSI+PEI+ampfM1JfNTYoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl81NygpIj48Qj5qal8zUl81NygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzU4KCkiPjxCPmpqXzNSXzU4KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNTkoKSI+PEI+ampfM1JfNTkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl82MCgpIj48Qj5qal8zUl82MCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzYxKCkiPjxCPmpqXzNSXzYxKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNjIoKSI+PEI+ampfM1JfNjIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl82MygpIj48Qj5qal8zUl82MygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzY0KCkiPjxCPmpqXzNSXzY0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNjUoKSI+PEI+ampfM1JfNjUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl82NigpIj48Qj5qal8zUl82NigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzY3KCkiPjxCPmpqXzNSXzY3KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNjgoKSI+PEI+ampfM1JfNjgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl82OSgpIj48Qj5qal8zUl82OSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzcwKCkiPjxCPmpqXzNSXzcwKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNzEoKSI+PEI+ampfM1JfNzEoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl83MigpIj48Qj5qal8zUl83MigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzczKCkiPjxCPmpqXzNSXzczKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNzQoKSI+PEI+ampfM1JfNzQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl83NSgpIj48Qj5qal8zUl83NSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzc2KCkiPjxCPmpqXzNSXzc2KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfNzcoKSI+PEI+ampfM1JfNzcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl83OCgpIj48Qj5qal8zUl83OCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzc5KCkiPjxCPmpqXzNSXzc5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfODAoKSI+PEI+ampfM1JfODAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl84MSgpIj48Qj5qal8zUl84MSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzgyKCkiPjxCPmpqXzNSXzgyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfODMoKSI+PEI+ampfM1JfODMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl84NCgpIj48Qj5qal8zUl84NCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzg1KCkiPjxCPmpqXzNSXzg1KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfODYoKSI+PEI+ampfM1JfODYoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal8zUl84NygpIj48Qj5qal8zUl84NygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqXzNSXzg4KCkiPjxCPmpqXzNSXzg4KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfM1JfODkoKSI+PEI+ampfM1JfODkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal9hZGRfZXJyb3JfdG9rZW4oaW50LCBpbnQpIj48Qj5qal9hZGRfZXJyb3JfdG9rZW4oaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2NvbnN1bWVfdG9rZW4oaW50KSI+PEI+ampfY29uc3VtZV90b2tlbihpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2VuZHBvcyI+PEI+ampfZW5kcG9zPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfZXhwZW50cmllcyI+PEI+ampfZXhwZW50cmllczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2V4cGVudHJ5Ij48Qj5qal9leHBlbnRyeTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2djIj48Qj5qal9nYzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2dlbiI+PEI+ampfZ2VuPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfa2luZCI+PEI+ampfa2luZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2xhIj48Qj5qal9sYTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2xhMSI+PEI+ampfbGExPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfbGExXzAiPjxCPmpqX2xhMV8wPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfbGExXzEiPjxCPmpqX2xhMV8xPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfbGFzdHBvcyI+PEI+ampfbGFzdHBvczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX2xhc3R0b2tlbnMiPjxCPmpqX2xhc3R0b2tlbnM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal9udCI+PEI+ampfbnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal9udGsiPjxCPmpqX250azwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX250aygpIj48Qj5qal9udGsoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal9yZXNjYW4iPjxCPmpqX3Jlc2NhbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX3Jlc2Nhbl90b2tlbigpIj48Qj5qal9yZXNjYW5fdG9rZW4oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqal9zYXZlKGludCwgaW50KSI+PEI+ampfc2F2ZShpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfc2Nhbl90b2tlbihpbnQpIj48Qj5qal9zY2FuX3Rva2VuKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjampfc2NhbnBvcyI+PEI+ampfc2NhbnBvczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2pqX3NlbUxBIj48Qj5qal9zZW1MQTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqQWRkU3RhdGVzKGludCwgaW50KSI+PEI+ampBZGRTdGF0ZXMoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqYml0VmVjMCI+PEI+ampiaXRWZWMwPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqYml0VmVjMiI+PEI+ampiaXRWZWMyPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqQ2FuTW92ZV8wKGludCwgaW50LCBpbnQsIGxvbmcsIGxvbmcpIj48Qj5qakNhbk1vdmVfMChpbnQsIGludCwgaW50LCBsb25nLCBsb25nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampDaGVja05BZGQoaW50KSI+PEI+ampDaGVja05BZGQoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqakNoZWNrTkFkZFN0YXRlcyhpbnQpIj48Qj5qakNoZWNrTkFkZFN0YXRlcyhpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqQ2hlY2tOQWRkU3RhdGVzKGludCwgaW50KSI+PEI+ampDaGVja05BZGRTdGF0ZXMoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqQ2hlY2tOQWRkVHdvU3RhdGVzKGludCwgaW50KSI+PEI+ampDaGVja05BZGRUd29TdGF0ZXMoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqRmlsbFRva2VuKCkiPjxCPmpqRmlsbFRva2VuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjamppbWFnZUxlbiI+PEI+amppbWFnZUxlbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqbWF0Y2hlZEtpbmQiPjxCPmpqbWF0Y2hlZEtpbmQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqam1hdGNoZWRQb3MiPjxCPmpqbWF0Y2hlZFBvczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV8wKGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzAoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV8xKGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzEoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV8yKGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzIoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV8zKGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzMoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV80KGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzQoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV81KGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzUoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV82KGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzYoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV83KGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzcoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZU5mYV84KGludCwgaW50KSI+PEI+ampNb3ZlTmZhXzgoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzAoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfMCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzEoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfMSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzIoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfMigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzMoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfMygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzQoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfNCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzUoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfNSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzYoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfNigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzcoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfNygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEwXzgoKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTBfOCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmExXzAobG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmExXzAobG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTFfMShsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTFfMShsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhMV8yKGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhMV8yKGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmExXzMobG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmExXzMobG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTFfNChsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTFfNChsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhMV81KGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhMV81KGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmExXzYobG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmExXzYobG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTFfNyhsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTFfNyhsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhMV84KGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhMV84KGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEyXzAobG9uZywgbG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmEyXzAobG9uZywgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTJfMShsb25nLCBsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTJfMShsb25nLCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhMl8yKGxvbmcsIGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhMl8yKGxvbmcsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEyXzQobG9uZywgbG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmEyXzQobG9uZywgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTJfNShsb25nLCBsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTJfNShsb25nLCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhM18wKGxvbmcsIGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhM18wKGxvbmcsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEzXzEobG9uZywgbG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmEzXzEobG9uZywgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTNfMihsb25nLCBsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTNfMihsb25nLCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhM180KGxvbmcsIGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhM180KGxvbmcsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmEzXzUobG9uZywgbG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmEzXzUobG9uZywgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTRfMChsb25nLCBsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTRfMChsb25nLCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhNF8xKGxvbmcsIGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhNF8xKGxvbmcsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmE0XzIobG9uZywgbG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmE0XzIobG9uZywgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampNb3ZlU3RyaW5nTGl0ZXJhbERmYTRfNChsb25nLCBsb25nKSI+PEI+ampNb3ZlU3RyaW5nTGl0ZXJhbERmYTRfNChsb25nLCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqak1vdmVTdHJpbmdMaXRlcmFsRGZhNF81KGxvbmcsIGxvbmcpIj48Qj5qak1vdmVTdHJpbmdMaXRlcmFsRGZhNF81KGxvbmcsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqTW92ZVN0cmluZ0xpdGVyYWxEZmE1XzQobG9uZywgbG9uZykiPjxCPmpqTW92ZVN0cmluZ0xpdGVyYWxEZmE1XzQobG9uZywgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampuZXdMZXhTdGF0ZSI+PEI+ampuZXdMZXhTdGF0ZTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqam5ld1N0YXRlQ250Ij48Qj5qam5ld1N0YXRlQ250PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampuZXh0U3RhdGVzIj48Qj5qam5leHRTdGF0ZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampyb3VuZCI+PEI+ampyb3VuZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqcm91bmRzIj48Qj5qanJvdW5kczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RhcnROZmFfMChpbnQsIGxvbmcpIj48Qj5qalN0YXJ0TmZhXzAoaW50LCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0YXJ0TmZhXzEoaW50LCBsb25nKSI+PEI+ampTdGFydE5mYV8xKGludCwgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdGFydE5mYV8yKGludCwgbG9uZykiPjxCPmpqU3RhcnROZmFfMihpbnQsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RhcnROZmFfMyhpbnQsIGxvbmcpIj48Qj5qalN0YXJ0TmZhXzMoaW50LCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0YXJ0TmZhXzQoaW50LCBsb25nKSI+PEI+ampTdGFydE5mYV80KGludCwgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdGFydE5mYV81KGludCwgbG9uZykiPjxCPmpqU3RhcnROZmFfNShpbnQsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RhcnROZmFfNihpbnQsIGxvbmcpIj48Qj5qalN0YXJ0TmZhXzYoaW50LCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0YXJ0TmZhXzcoaW50LCBsb25nKSI+PEI+ampTdGFydE5mYV83KGludCwgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdGFydE5mYV84KGludCwgbG9uZykiPjxCPmpqU3RhcnROZmFfOChpbnQsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RhcnROZmFXaXRoU3RhdGVzXzAoaW50LCBpbnQsIGludCkiPjxCPmpqU3RhcnROZmFXaXRoU3RhdGVzXzAoaW50LCBpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdGFydE5mYVdpdGhTdGF0ZXNfMShpbnQsIGludCwgaW50KSI+PEI+ampTdGFydE5mYVdpdGhTdGF0ZXNfMShpbnQsIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0YXJ0TmZhV2l0aFN0YXRlc18yKGludCwgaW50LCBpbnQpIj48Qj5qalN0YXJ0TmZhV2l0aFN0YXRlc18yKGludCwgaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RhcnROZmFXaXRoU3RhdGVzXzMoaW50LCBpbnQsIGludCkiPjxCPmpqU3RhcnROZmFXaXRoU3RhdGVzXzMoaW50LCBpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdGFydE5mYVdpdGhTdGF0ZXNfNChpbnQsIGludCwgaW50KSI+PEI+ampTdGFydE5mYVdpdGhTdGF0ZXNfNChpbnQsIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0YXJ0TmZhV2l0aFN0YXRlc181KGludCwgaW50LCBpbnQpIj48Qj5qalN0YXJ0TmZhV2l0aFN0YXRlc181KGludCwgaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RhcnROZmFXaXRoU3RhdGVzXzYoaW50LCBpbnQsIGludCkiPjxCPmpqU3RhcnROZmFXaXRoU3RhdGVzXzYoaW50LCBpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdGFydE5mYVdpdGhTdGF0ZXNfNyhpbnQsIGludCwgaW50KSI+PEI+ampTdGFydE5mYVdpdGhTdGF0ZXNfNyhpbnQsIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0YXJ0TmZhV2l0aFN0YXRlc184KGludCwgaW50LCBpbnQpIj48Qj5qalN0YXJ0TmZhV2l0aFN0YXRlc184KGludCwgaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqc3RhdGVTZXQiPjxCPmpqc3RhdGVTZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0b3BBdFBvcyhpbnQsIGludCkiPjxCPmpqU3RvcEF0UG9zKGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0b3BTdHJpbmdMaXRlcmFsRGZhXzAoaW50LCBsb25nKSI+PEI+ampTdG9wU3RyaW5nTGl0ZXJhbERmYV8wKGludCwgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdG9wU3RyaW5nTGl0ZXJhbERmYV8xKGludCwgbG9uZykiPjxCPmpqU3RvcFN0cmluZ0xpdGVyYWxEZmFfMShpbnQsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RvcFN0cmluZ0xpdGVyYWxEZmFfMihpbnQsIGxvbmcpIj48Qj5qalN0b3BTdHJpbmdMaXRlcmFsRGZhXzIoaW50LCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0b3BTdHJpbmdMaXRlcmFsRGZhXzMoaW50LCBsb25nKSI+PEI+ampTdG9wU3RyaW5nTGl0ZXJhbERmYV8zKGludCwgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdG9wU3RyaW5nTGl0ZXJhbERmYV80KGludCwgbG9uZykiPjxCPmpqU3RvcFN0cmluZ0xpdGVyYWxEZmFfNChpbnQsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RvcFN0cmluZ0xpdGVyYWxEZmFfNShpbnQsIGxvbmcpIj48Qj5qalN0b3BTdHJpbmdMaXRlcmFsRGZhXzUoaW50LCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqalN0b3BTdHJpbmdMaXRlcmFsRGZhXzYoaW50LCBsb25nKSI+PEI+ampTdG9wU3RyaW5nTGl0ZXJhbERmYV82KGludCwgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjampTdG9wU3RyaW5nTGl0ZXJhbERmYV83KGludCwgbG9uZykiPjxCPmpqU3RvcFN0cmluZ0xpdGVyYWxEZmFfNyhpbnQsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqU3RvcFN0cmluZ0xpdGVyYWxEZmFfOChpbnQsIGxvbmcpIj48Qj5qalN0b3BTdHJpbmdMaXRlcmFsRGZhXzgoaW50LCBsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqanN0ckxpdGVyYWxJbWFnZXMiPjxCPmpqc3RyTGl0ZXJhbEltYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RHVE5vZGUuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdUTm9kZS5odG1sIj5BU1RHVE5vZGU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQW5kTm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQW5kTm9kZS5odG1sIj5BU1RBbmROb2RlPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVExFTm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTEVOb2RlLmh0bWwiPkFTVExFTm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwiPkFTVERpdk5vZGU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTFROb2RlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RMVE5vZGUuaHRtbCI+QVNUTFROb2RlPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE11bE5vZGUuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE11bE5vZGUuaHRtbCI+QVNUTXVsTm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwiPkFTVFRydWU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWRlbnRpZmllci5odG1sIj5BU1RJZGVudGlmaWVyPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEV4cHJlc3Npb24uaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEV4cHJlc3Npb24uaHRtbCI+QVNURXhwcmVzc2lvbjwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFbHNlSWZTdGF0ZW1lbnQuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VJZlN0YXRlbWVudC5odG1sIj5BU1RFbHNlSWZTdGF0ZW1lbnQ8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTWV0aG9kLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNZXRob2QuaHRtbCI+QVNUTWV0aG9kPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN1YnRyYWN0Tm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU3VidHJhY3ROb2RlLmh0bWwiPkFTVFN1YnRyYWN0Tm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwiPkFTVEVzY2FwZWREaXJlY3RpdmU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGlyZWN0aXZlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCI+QVNURGlyZWN0aXZlPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwiPkFTVFJlZmVyZW5jZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGUuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sIj5BU1RFc2NhcGU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSW5jbHVkZVN0YXRlbWVudC5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSW5jbHVkZVN0YXRlbWVudC5odG1sIj5BU1RJbmNsdWRlU3RhdGVtZW50PC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEZhbHNlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sIj5BU1RGYWxzZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBc3NpZ25tZW50Lmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBc3NpZ25tZW50Lmh0bWwiPkFTVEFzc2lnbm1lbnQ8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTnVtYmVyTGl0ZXJhbC5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTnVtYmVyTGl0ZXJhbC5odG1sIj5BU1ROdW1iZXJMaXRlcmFsPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVRTm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURVFOb2RlLmh0bWwiPkFTVEVRTm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RDb21tZW50Lmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RDb21tZW50Lmh0bWwiPkFTVENvbW1lbnQ8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQWRkTm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQWRkTm9kZS5odG1sIj5BU1RBZGROb2RlPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEJsb2NrLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RCbG9jay5odG1sIj5BU1RCbG9jazwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPYmplY3RBcnJheS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUT2JqZWN0QXJyYXkuaHRtbCI+QVNUT2JqZWN0QXJyYXk8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUV29yZC5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUV29yZC5odG1sIj5BU1RXb3JkPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9yTm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUT3JOb2RlLmh0bWwiPkFTVE9yTm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RWYXJpYWJsZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVmFyaWFibGUuaHRtbCI+QVNUVmFyaWFibGU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJbnRlZ2VyUmFuZ2UuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEludGVnZXJSYW5nZS5odG1sIj5BU1RJbnRlZ2VyUmFuZ2U8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUGFyYW1ldGVycy5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUGFyYW1ldGVycy5odG1sIj5BU1RQYXJhbWV0ZXJzPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5vdE5vZGUuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5vdE5vZGUuaHRtbCI+QVNUTm90Tm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1Rwcm9jZXNzLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1Rwcm9jZXNzLmh0bWwiPkFTVHByb2Nlc3M8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWZTdGF0ZW1lbnQuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVElmU3RhdGVtZW50Lmh0bWwiPkFTVElmU3RhdGVtZW50PC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN0cmluZ0xpdGVyYWwuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN0cmluZ0xpdGVyYWwuaHRtbCI+QVNUU3RyaW5nTGl0ZXJhbDwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNb2ROb2RlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RNb2ROb2RlLmh0bWwiPkFTVE1vZE5vZGU8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR0VOb2RlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RHRU5vZGUuaHRtbCI+QVNUR0VOb2RlPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRleHQuaHRtbCNqanRBY2NlcHQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlBhcnNlclZpc2l0b3IsIGphdmEubGFuZy5PYmplY3QpIj48Qj5qanRBY2NlcHQoUGFyc2VyVmlzaXRvciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRleHQuaHRtbCI+QVNUVGV4dDwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFbHNlU3RhdGVtZW50Lmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFbHNlU3RhdGVtZW50Lmh0bWwiPkFTVEVsc2VTdGF0ZW1lbnQ8L0E+CjxERD5BY2NlcHQgdGhlIHZpc2l0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwjamp0QWNjZXB0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5QYXJzZXJWaXNpdG9yLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+amp0QWNjZXB0KFBhcnNlclZpc2l0b3IsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCI+QVNUU2V0RGlyZWN0aXZlPC9BPgo8REQ+QWNjZXB0IHRoZSB2aXNpdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE5FTm9kZS5odG1sI2pqdEFjY2VwdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmpqdEFjY2VwdChQYXJzZXJWaXNpdG9yLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTkVOb2RlLmh0bWwiPkFTVE5FTm9kZTwvQT4KPEREPkFjY2VwdCB0aGUgdmlzaXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjamp0QWRkQ2hpbGQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUsIGludCkiPjxCPmpqdEFkZENoaWxkKE5vZGUsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjamp0QWRkQ2hpbGQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUsIGludCkiPjxCPmpqdEFkZENoaWxkKE5vZGUsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+VGhpcyBtZXRob2QgdGVsbHMgdGhlIG5vZGUgdG8gYWRkIGl0cyBhcmd1bWVudCB0byB0aGUgbm9kZSdzCiAgIGxpc3Qgb2YgY2hpbGRyZW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRBREROT0RFIj48Qj5KSlRBREROT0RFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sIj5QYXJzZXJUcmVlQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRBTkROT0RFIj48Qj5KSlRBTkROT0RFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sIj5QYXJzZXJUcmVlQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRBU1NJR05NRU5UIj48Qj5KSlRBU1NJR05NRU5UPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sIj5QYXJzZXJUcmVlQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRCTE9DSyI+PEI+SkpUQkxPQ0s8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjamp0Q2xvc2UoKSI+PEI+amp0Q2xvc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCNqanRDbG9zZSgpIj48Qj5qanRDbG9zZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlIGNoaWxkIG5vZGVzIGhhdmUgYmVlbgogIGFkZGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUQ09NTUVOVCI+PEI+SkpUQ09NTUVOVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpURElSRUNUSVZFIj48Qj5KSlRESVJFQ1RJVkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVERJVk5PREUiPjxCPkpKVERJVk5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVEVMU0VJRlNUQVRFTUVOVCI+PEI+SkpURUxTRUlGU1RBVEVNRU5UPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sIj5QYXJzZXJUcmVlQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRFTFNFU1RBVEVNRU5UIj48Qj5KSlRFTFNFU1RBVEVNRU5UPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sIj5QYXJzZXJUcmVlQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRFUU5PREUiPjxCPkpKVEVRTk9ERTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpURVNDQVBFIj48Qj5KSlRFU0NBUEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVEVTQ0FQRURESVJFQ1RJVkUiPjxCPkpKVEVTQ0FQRURESVJFQ1RJVkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVEVYUFJFU1NJT04iPjxCPkpKVEVYUFJFU1NJT048L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVEZBTFNFIj48Qj5KSlRGQUxTRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUR0VOT0RFIj48Qj5KSlRHRU5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjamp0R2V0Q2hpbGQoaW50KSI+PEI+amp0R2V0Q2hpbGQoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCNqanRHZXRDaGlsZChpbnQpIj48Qj5qanRHZXRDaGlsZChpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPlRoaXMgbWV0aG9kIHJldHVybnMgYSBjaGlsZCBub2RlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNqanRHZXROdW1DaGlsZHJlbigpIj48Qj5qanRHZXROdW1DaGlsZHJlbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2pqdEdldE51bUNoaWxkcmVuKCkiPjxCPmpqdEdldE51bUNoaWxkcmVuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+UmV0dXJuIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gdGhlIG5vZGUgaGFzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNqanRHZXRQYXJlbnQoKSI+PEI+amp0R2V0UGFyZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjamp0R2V0UGFyZW50KCkiPjxCPmpqdEdldFBhcmVudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUR1ROT0RFIj48Qj5KSlRHVE5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVElERU5USUZJRVIiPjxCPkpKVElERU5USUZJRVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVElGU1RBVEVNRU5UIj48Qj5KSlRJRlNUQVRFTUVOVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUSU5URUdFUlJBTkdFIj48Qj5KSlRJTlRFR0VSUkFOR0U8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVExFTk9ERSI+PEI+SkpUTEVOT0RFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sIj5QYXJzZXJUcmVlQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRMVE5PREUiPjxCPkpKVExUTk9ERTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUTUVUSE9EIj48Qj5KSlRNRVRIT0Q8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVE1PRE5PREUiPjxCPkpKVE1PRE5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVE1VTE5PREUiPjxCPkpKVE1VTE5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVE5FTk9ERSI+PEI+SkpUTkVOT0RFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sIj5QYXJzZXJUcmVlQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNqanROb2RlTmFtZSI+PEI+amp0Tm9kZU5hbWU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVE5PVE5PREUiPjxCPkpKVE5PVE5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVE5VTUJFUkxJVEVSQUwiPjxCPkpKVE5VTUJFUkxJVEVSQUw8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVE9CSkVDVEFSUkFZIj48Qj5KSlRPQkpFQ1RBUlJBWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqanRvTW9yZSI+PEI+amp0b01vcmU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjamp0T3BlbigpIj48Qj5qanRPcGVuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjamp0T3BlbigpIj48Qj5qanRPcGVuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+VGhpcyBtZXRob2QgaXMgY2FsbGVkIGFmdGVyIHRoZSBub2RlIGhhcyBiZWVuIG1hZGUgdGhlIGN1cnJlbnQKICBub2RlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUT1JOT0RFIj48Qj5KSlRPUk5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjamp0b1NraXAiPjxCPmpqdG9Ta2lwPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI2pqdG9TcGVjaWFsIj48Qj5qanRvU3BlY2lhbDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNqanRvVG9rZW4iPjxCPmpqdG9Ub2tlbjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sIj48Qj5KSlRQYXJzZXJTdGF0ZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCNKSlRQYXJzZXJTdGF0ZSgpIj48Qj5KSlRQYXJzZXJTdGF0ZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sIj5KSlRQYXJzZXJTdGF0ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUUFJPQ0VTUyI+PEI+SkpUUFJPQ0VTUzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNqanRyZWUiPjxCPmpqdHJlZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCNKSlRSRUZFUkVOQ0UiPjxCPkpKVFJFRkVSRU5DRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUU0VURElSRUNUSVZFIj48Qj5KSlRTRVRESVJFQ1RJVkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjamp0U2V0UGFyZW50KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5Ob2RlKSI+PEI+amp0U2V0UGFyZW50KE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI2pqdFNldFBhcmVudChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPmpqdFNldFBhcmVudChOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwiPk5vZGU8L0E+CjxERD5UaGlzIHBhaXIgb2YgbWV0aG9kcyBhcmUgdXNlZCB0byBpbmZvcm0gdGhlIG5vZGUgb2YgaXRzCiAgcGFyZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUU1RSSU5HTElURVJBTCI+PEI+SkpUU1RSSU5HTElURVJBTDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+UGFyc2VyVHJlZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwjSkpUU1VCVFJBQ1ROT0RFIj48Qj5KSlRTVUJUUkFDVE5PREU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVFRFWFQiPjxCPkpKVFRFWFQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVFRSVUUiPjxCPkpKVFRSVUU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVFZPSUQiPjxCPkpKVFZPSUQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVHJlZUNvbnN0YW50cy5odG1sI0pKVFdPUkQiPjxCPkpKVFdPUkQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBOQU1FPSJfS18iPjwhLS0gLS0+PC9BPjxIMj4KPEI+SzwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sI2tleUNvbHVtbiI+PEI+a2V5Q29sdW1uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sIj5EYXRhU291cmNlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNrZXlzQXNMaXN0ZWQiPjxCPmtleXNBc0xpc3RlZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZXNlIGFyZSB0aGUga2V5cyBpbiB0aGUgb3JkZXIgdGhleSBsaXN0ZWQKIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuLmh0bWwja2luZCI+PEI+a2luZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4KPEREPkFuIGludGVnZXIgdGhhdCBkZXNjcmliZXMgdGhlIGtpbmQgb2YgdGhpcyB0b2tlbi4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfTF8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+TDwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI2xhc3QiPjxCPmxhc3Q8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNsYXN0SW5kZXhPZihqYXZhLmxhbmcuT2JqZWN0KSI+PEI+bGFzdEluZGV4T2YoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjbGFzdE1vZGlmaWVkIj48Qj5sYXN0TW9kaWZpZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+VGhlIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgZm9yIHRoZSBjYWNoZWQgdGVtcGxhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjbGFzdE1vZGlmaWVkQ2hlY2siPjxCPmxhc3RNb2RpZmllZENoZWNrPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+Y2hlY2sgdGhlIGxhc3QgbW9kaWZpZWQgZGF0ZSBvbiBmaWxlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCNsYXlvdXQiPjxCPmxheW91dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sIj5Mb2c0SkxvZ1N5c3RlbTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO2xvZ2dpbmcgbGF5b3V0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0xCUkFDS0VUIj48Qj5MQlJBQ0tFVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjTENVUkxZIj48Qj5MQ1VSTFk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwjbGVmdCI+PEI+bGVmdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwiPkFTVFNldERpcmVjdGl2ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFNldERpcmVjdGl2ZS5odG1sI2xlZnRSZWZlcmVuY2UiPjxCPmxlZnRSZWZlcmVuY2U8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFNldERpcmVjdGl2ZS5odG1sIj5BU1RTZXREaXJlY3RpdmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjbGVuZ3RoT2ZNYXRjaCI+PEI+bGVuZ3RoT2ZNYXRjaDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCNMRVNTX1NQRUNJRklDIj48Qj5MRVNTX1NQRUNJRklDPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sIj5NZXRob2RNYXA8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjTEVUVEVSIj48Qj5MRVRURVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCNMRVhJQ0FMX0VSUk9SIj48Qj5MRVhJQ0FMX0VSUk9SPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbk1nckVycm9yLmh0bWwiPlRva2VuTWdyRXJyb3I8L0E+CjxERD5MZXhpY2FsIGVycm9yIG9jY3VyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCNMZXhpY2FsRXJyb3IoYm9vbGVhbiwgaW50LCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZywgY2hhcikiPjxCPkxleGljYWxFcnJvcihib29sZWFuLCBpbnQsIGludCwgaW50LCBTdHJpbmcsIGNoYXIpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW5NZ3JFcnJvci5odG1sIj5Ub2tlbk1nckVycm9yPC9BPgo8REQ+UmV0dXJucyBhIGRldGFpbGVkIG1lc3NhZ2UgZm9yIHRoZSBFcnJvciB3aGVuIGl0IGlzIHRocm93biBieSB0aGUKIHRva2VuIG1hbmFnZXIgdG8gaW5kaWNhdGUgYSBsZXhpY2FsIGVycm9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNsZXhTdGF0ZU5hbWVzIj48Qj5sZXhTdGF0ZU5hbWVzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjbGliTW9kTWFwIj48Qj5saWJNb2RNYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5tYXAgb2YgdGhlIGxpYnJhcnkgVGVtcGxhdGUgb2JqZWN0cwogIHVzZWQgZm9yIHJlbG9hZCBkZXRlcm1pbmF0aW9uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwjbGlicmFyeU1hcCI+PEI+bGlicmFyeU1hcDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlcjwvQT4KPEREPm1hcCBvZiBuYW1lcyBvZiBsaWJyYXJ5IHRlbXBhdGVzL25hbWVzcGFjZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXIuaHRtbCNsaWkoamF2YS51dGlsLkxpc3QsIGludCwgaW50KSI+PEI+bGlpKExpc3QsIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjbGltaXRMZW4oaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bGltaXRMZW4oaW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyPC9BPgo8REQ+TGltaXRzICdzdHJpbmcnIHRvICdtYXhsZW4nIGNoYXJhY3RlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sI2xpbWl0TGVuKGludCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmxpbWl0TGVuKGludCwgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyPC9BPgo8REQ+TGltaXRzICdzdHJpbmcnIHRvICdtYXhsZW4nIGNoYXJhY3Rlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlLmh0bWwjbGluZSI+PEI+bGluZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCI+RGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI2xpbmUiPjxCPmxpbmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW5mby5odG1sI2xpbmUiPjxCPmxpbmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbmZvLmh0bWwiPkluZm88L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlQ29uc3RhbnRzLmh0bWwjTElORSI+PEI+TElORTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZUNvbnN0YW50cy5odG1sIj5EaXJlY3RpdmVDb25zdGFudHM8L0E+CjxERD5MaW5lIGRpcmVjdGl2ZSBpbmRpY2F0b3IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjbGlzdEl0ZXJhdG9yKCkiPjxCPmxpc3RJdGVyYXRvcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI2xpc3RJdGVyYXRvcihpbnQpIj48Qj5saXN0SXRlcmF0b3IoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sI2xpdGVyYWwiPjxCPmxpdGVyYWw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTGl0ZXJhbC5odG1sIj48Qj5MaXRlcmFsPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTGl0ZXJhbC5odG1sIj5MaXRlcmFsPC9BPi48REQ+QSB2ZXJ5IHNpbXBsZSBkaXJlY3RpdmUgdGhhdCBsZXZlcmFnZXMgdGhlIE5vZGUubGl0ZXJhbCgpCiB0byBncmFiIHRoZSBsaXRlcmFsIHJlbmRpdGlvbiBvZiBhIG5vZGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjbGl0ZXJhbCgpIj48Qj5saXRlcmFsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNsaXRlcmFsKCkiPjxCPmxpdGVyYWwoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD5PdmVycmlkZSBvZiB0aGUgU2ltcGxlTm9kZSBtZXRob2QgbGl0ZXJhbCgpCiAgUmV0dXJucyB0aGUgbGl0ZXJhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUKICBub2RlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCNsaXRlcmFsKCkiPjxCPmxpdGVyYWwoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwiPk5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTGl0ZXJhbC5odG1sI0xpdGVyYWwoKSI+PEI+TGl0ZXJhbCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9MaXRlcmFsLmh0bWwiPkxpdGVyYWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTGl0ZXJhbC5odG1sI2xpdGVyYWxUZXh0Ij48Qj5saXRlcmFsVGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9MaXRlcmFsLmh0bWwiPkxpdGVyYWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXIuaHRtbCNsbChsb25nLCBsb25nKSI+PEI+bGwobG9uZywgbG9uZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyLmh0bWwjbGxsKGphdmEudXRpbC5MaXN0LCBsb25nKSI+PEI+bGxsKExpc3QsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlci5odG1sI2xsbChqYXZhLnV0aWwuTGlzdCwgbG9uZywgaW50KSI+PEI+bGxsKExpc3QsIGxvbmcsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UzLk1ldGhvZFByb3ZpZGVyLmh0bWwjbGxsKGphdmEudXRpbC5MaXN0LCBsb25nLCBqYXZhLnV0aWwuTGlzdCkiPjxCPmxsbChMaXN0LCBsb25nLCBMaXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuTWV0aG9kUHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNsb2FkKGphdmEuaW8uSW5wdXRTdHJlYW0pIj48Qj5sb2FkKElucHV0U3RyZWFtKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtMb2FkIHRoZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGdpdmVuIGlucHV0IHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vdXRpbC9Qcm9wZXJ0aWVzVXRpbC5odG1sI2xvYWQoamF2YS5sYW5nLlN0cmluZykiPjxCPmxvYWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi91dGlsL1Byb3BlcnRpZXNVdGlsLmh0bWwiPlByb3BlcnRpZXNVdGlsPC9BPgo8REQ+TG9hZCBwcm9wZXJ0aWVzIGZyb20gZWl0aGVyIGEgZmlsZSBpbiB0aGUgdGVtcGxhdGVQYXRoIGlmIHRoZXJlCiBpcyBvbmUgb3IgdGhlIGNsYXNzUGF0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNsb2FkQ29uZmlndXJhdGlvbihqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb25maWcpIj48Qj5sb2FkQ29uZmlndXJhdGlvbihTZXJ2bGV0Q29uZmlnKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5Mb2FkcyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyB0aGF0IAogIGluZm9ybWF0aW9uIGFzIGEgUHJvcGVydGllcywgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIAogIGluaXRpYWxpemUgdGhlIFZlbG9jaXR5IHJ1bnRpbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjbG9hZENvbmZpZ3VyYXRpb24oamF2YXguc2VydmxldC5TZXJ2bGV0Q29uZmlnKSI+PEI+bG9hZENvbmZpZ3VyYXRpb24oU2VydmxldENvbmZpZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tWZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjbG9hZERpcmVjdGl2ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9hZERpcmVjdGl2ZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+aW5zdGFudGlhdGVzIGFuZCBsb2FkcyB0aGUgZGlyZWN0aXZlIHdpdGggc29tZSBiYXNpYyBjaGVja3MKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vdXRpbC9Qcm9wZXJ0aWVzVXRpbC5odG1sI2xvYWRGcm9tQ2xhc3NQYXRoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5sb2FkRnJvbUNsYXNzUGF0aChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4udXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvUHJvcGVydGllc1V0aWwuaHRtbCI+UHJvcGVydGllc1V0aWw8L0E+CjxERD5Mb2FkIGEgcHJvcGVydGllcyBmaWxlIGZyb20gdGhlIGNsYXNzcGF0aAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi91dGlsL1Byb3BlcnRpZXNVdGlsLmh0bWwjbG9hZEZyb21UZW1wbGF0ZVBhdGgoamF2YS5sYW5nLlN0cmluZykiPjxCPmxvYWRGcm9tVGVtcGxhdGVQYXRoKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vdXRpbC9Qcm9wZXJ0aWVzVXRpbC5odG1sIj5Qcm9wZXJ0aWVzVXRpbDwvQT4KPEREPkxvYWQgYSBwcm9wZXJ0aWVzIGZpbGUgZnJvbSB0aGUgdGVtcGxhdGVQYXRoIGRlZmluZWQgaW4gdGhlCiBnZW5lcmF0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phclJlc291cmNlTG9hZGVyLmh0bWwjbG9hZEphcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9hZEphcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9KYXJSZXNvdXJjZUxvYWRlci5odG1sIj5KYXJSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNsb2FkUmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9hZFJlc291cmNlKFN0cmluZywgaW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9BPgo8REQ+TG9hZHMgYSByZXNvdXJjZSBmcm9tIHRoZSBjdXJyZW50IHNldCBvZiByZXNvdXJjZSBsb2FkZXJzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjbG9jYWxjb250ZXh0Ij48Qj5sb2NhbGNvbnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sIj5WTUNvbnRleHQ8L0E+CjxERD5jb250YWluZXIgZm9yIGFueSBsb2NhbCBvciBjb25zdGFudCBWTVByb3h5IGl0ZW1zCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjbG9jYWxjb250ZXh0c2NvcGUiPjxCPmxvY2FsY29udGV4dHNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+c3VwcG9ydCBmb3IgbG9jYWwgY29udGV4dCBzY29wZSBmZWF0dXJlLCB3aGVyZSBhbGwgcmVmZXJlbmNlcyBhcmUgbG9jYWwKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2xvZyhqYXZhLmxhbmcuRXhjZXB0aW9uLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9nKEV4Y2VwdGlvbiwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjbG9nKGludCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmxvZyhpbnQsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+SGFuZGxlIGxvZ2dpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNsb2coamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI2xvZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuVGhyb3dhYmxlKSI+PEI+bG9nKFN0cmluZywgVGhyb3dhYmxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwiPjxCPkxvZzRKTG9nU3lzdGVtPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCI+TG9nNEpMb2dTeXN0ZW08L0E+LjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiB2MS4zLiAgVXNlCiAgPENPREU+U2ltcGxlTG9nNGpMb2dTeXN0ZW08L0NPREU+PC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwjTG9nNEpMb2dTeXN0ZW0oKSI+PEI+TG9nNEpMb2dTeXN0ZW0oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCI+TG9nNEpMb2dTeXN0ZW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtkZWZhdWx0IENUT1IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwjbG9nZmlsZSI+PEI+bG9nZmlsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sIj5Mb2c0SkxvZ1N5c3RlbTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO3RoZSBydW50aW1lLmxvZyBwcm9wZXJ0eSB2YWx1ZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sI2xvZ2dlciI+PEI+bG9nZ2VyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwiPkxvZzRKTG9nU3lzdGVtPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7bG9nNGphdmEgbG9nZ2luZyBpbnRlcmZhY2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvU2ltcGxlTG9nNEpMb2dTeXN0ZW0uaHRtbCNsb2dnZXIiPjxCPmxvZ2dlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9TaW1wbGVMb2c0SkxvZ1N5c3RlbS5odG1sIj5TaW1wbGVMb2c0SkxvZ1N5c3RlbTwvQT4KPEREPmxvZzRqYXZhIGxvZ2dpbmcgaW50ZXJmYWNlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0F2YWxvbkxvZ1N5c3RlbS5odG1sI2xvZ2dlciI+PEI+bG9nZ2VyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0F2YWxvbkxvZ1N5c3RlbS5odG1sIj5BdmFsb25Mb2dTeXN0ZW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjTE9HSUNBTF9BTkQiPjxCPkxPR0lDQUxfQU5EPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNMT0dJQ0FMX0VRVUFMUyI+PEI+TE9HSUNBTF9FUVVBTFM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0xPR0lDQUxfR0UiPjxCPkxPR0lDQUxfR0U8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0xPR0lDQUxfR1QiPjxCPkxPR0lDQUxfR1Q8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0xPR0lDQUxfTEUiPjxCPkxPR0lDQUxfTEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0xPR0lDQUxfTFQiPjxCPkxPR0lDQUxfTFQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0xPR0lDQUxfTk9UIj48Qj5MT0dJQ0FMX05PVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjTE9HSUNBTF9OT1RfRVFVQUxTIj48Qj5MT0dJQ0FMX05PVF9FUVVBTFM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI0xPR0lDQUxfT1IiPjxCPkxPR0lDQUxfT1I8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ01hbmFnZXIuaHRtbCI+PEI+TG9nTWFuYWdlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ01hbmFnZXIuaHRtbCI+TG9nTWFuYWdlcjwvQT4uPEREPgogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgaW5zdGFudGlhdGluZyB0aGUgY29ycmVjdCBMb2dnaW5nU3lzdGVtCiA8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dNYW5hZ2VyLmh0bWwjTG9nTWFuYWdlcigpIj48Qj5Mb2dNYW5hZ2VyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ01hbmFnZXIuaHRtbCI+TG9nTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sI2xvZ1N0cmluZyI+PEI+bG9nU3RyaW5nPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCI+RXZlbnRIYW5kbGluZ1Rlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXh0ZXJuYWxMb2dnZXJUZXN0Lmh0bWwjbG9nU3RyaW5nIj48Qj5sb2dTdHJpbmc8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V4dGVybmFsTG9nZ2VyVGVzdC5odG1sIj5FeHRlcm5hbExvZ2dlclRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNsb2dTeXN0ZW0iPjxCPmxvZ1N5c3RlbTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlRoZSBSdW50aW1lIGxvZ2dlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nU3lzdGVtLmh0bWwiPjxCPkxvZ1N5c3RlbTwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCI+TG9nU3lzdGVtPC9BPi48REQ+QmFzZSBpbnRlcmZhY2UgdGhhdCBMb2dnaW5nIHN5c3RlbXMgbmVlZCB0byBpbXBsZW1lbnQuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjTE9HU1lTVEVNX0xPRzRKX0VNQUlMX0JVRkZFUl9TSVpFIj48Qj5MT0dTWVNURU1fTE9HNEpfRU1BSUxfQlVGRkVSX1NJWkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+TG9nNEogY29uZmlndXJhdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNMT0dTWVNURU1fTE9HNEpfRU1BSUxfRlJPTSI+PEI+TE9HU1lTVEVNX0xPRzRKX0VNQUlMX0ZST008L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+TG9nNEogY29uZmlndXJhdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNMT0dTWVNURU1fTE9HNEpfRU1BSUxfU0VSVkVSIj48Qj5MT0dTWVNURU1fTE9HNEpfRU1BSUxfU0VSVkVSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPkxvZzRKIGNvbmZpZ3VyYXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjTE9HU1lTVEVNX0xPRzRKX0VNQUlMX1NVQkpFQ1QiPjxCPkxPR1NZU1RFTV9MT0c0Sl9FTUFJTF9TVUJKRUNUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPkxvZzRKIGNvbmZpZ3VyYXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjTE9HU1lTVEVNX0xPRzRKX0VNQUlMX1RPIj48Qj5MT0dTWVNURU1fTE9HNEpfRU1BSUxfVE88L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+TG9nNEogY29uZmlndXJhdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNMT0dTWVNURU1fTE9HNEpfRklMRV9CQUNLVVBTIj48Qj5MT0dTWVNURU1fTE9HNEpfRklMRV9CQUNLVVBTPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPkxvZzRKIGNvbmZpZ3VyYXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjTE9HU1lTVEVNX0xPRzRKX0ZJTEVfU0laRSI+PEI+TE9HU1lTVEVNX0xPRzRKX0ZJTEVfU0laRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5Mb2c0SiBjb25maWd1cmF0aW9uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI0xPR1NZU1RFTV9MT0c0Sl9QQVRURVJOIj48Qj5MT0dTWVNURU1fTE9HNEpfUEFUVEVSTjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5Mb2c0SiBjb25maWd1cmF0aW9uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI0xPR1NZU1RFTV9MT0c0Sl9SRU1PVEVfSE9TVCI+PEI+TE9HU1lTVEVNX0xPRzRKX1JFTU9URV9IT1NUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPkxvZzRKIGNvbmZpZ3VyYXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjTE9HU1lTVEVNX0xPRzRKX1JFTU9URV9QT1JUIj48Qj5MT0dTWVNURU1fTE9HNEpfUkVNT1RFX1BPUlQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+TG9nNEogY29uZmlndXJhdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNMT0dTWVNURU1fTE9HNEpfU1lTTE9HRF9GQUNJTElUWSI+PEI+TE9HU1lTVEVNX0xPRzRKX1NZU0xPR0RfRkFDSUxJVFk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+TG9nNEogY29uZmlndXJhdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNMT0dTWVNURU1fTE9HNEpfU1lTTE9HRF9IT1NUIj48Qj5MT0dTWVNURU1fTE9HNEpfU1lTTE9HRF9IT1NUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPkxvZzRKIGNvbmZpZ3VyYXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCNsb2dWZWxvY2l0eU1lc3NhZ2UoaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9nVmVsb2NpdHlNZXNzYWdlKGludCwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCI+TG9nNEpMb2dTeXN0ZW08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtsb2dzIG1lc3NhZ2VzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwjbG9nVmVsb2NpdHlNZXNzYWdlKGludCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZ1ZlbG9jaXR5TWVzc2FnZShpbnQsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwiPlNpbXBsZUxvZzRKTG9nU3lzdGVtPC9BPgo8REQ+bG9ncyBtZXNzYWdlcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Qcmltb3JkaWFsTG9nU3lzdGVtLmh0bWwjbG9nVmVsb2NpdHlNZXNzYWdlKGludCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZ1ZlbG9jaXR5TWVzc2FnZShpbnQsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1ByaW1vcmRpYWxMb2dTeXN0ZW0uaHRtbCI+UHJpbW9yZGlhbExvZ1N5c3RlbTwvQT4KPEREPmxvZ3MgbWVzc2FnZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0F2YWxvbkxvZ1N5c3RlbS5odG1sI2xvZ1ZlbG9jaXR5TWVzc2FnZShpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5sb2dWZWxvY2l0eU1lc3NhZ2UoaW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9BdmFsb25Mb2dTeXN0ZW0uaHRtbCI+QXZhbG9uTG9nU3lzdGVtPC9BPgo8REQ+bG9ncyBtZXNzYWdlcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9OdWxsTG9nU3lzdGVtLmh0bWwjbG9nVmVsb2NpdHlNZXNzYWdlKGludCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZ1ZlbG9jaXR5TWVzc2FnZShpbnQsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL051bGxMb2dTeXN0ZW0uaHRtbCI+TnVsbExvZ1N5c3RlbTwvQT4KPEREPmxvZ3MgbWVzc2FnZXMgdG8gdGhlIGdyZWF0IEdhcmJhZ2UgQ29sbGVjdG9yCiAgaW4gdGhlIHNreQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCNsb2dWZWxvY2l0eU1lc3NhZ2UoaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9nVmVsb2NpdHlNZXNzYWdlKGludCwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ1N5c3RlbS5odG1sIj5Mb2dTeXN0ZW08L0E+CjxERD5TZW5kIGEgbG9nIG1lc3NhZ2UgZnJvbSBWZWxvY2l0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCNsb2dWZWxvY2l0eU1lc3NhZ2UoaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9nVmVsb2NpdHlNZXNzYWdlKGludCwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sIj5FdmVudEhhbmRsaW5nVGVzdENhc2U8L0E+CjxERD5oYW5kbGVyIGZvciBMb2dTeXN0ZW0gaW50ZXJmYWNlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXh0ZXJuYWxMb2dnZXJUZXN0Lmh0bWwjbG9nVmVsb2NpdHlNZXNzYWdlKGludCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZ1ZlbG9jaXR5TWVzc2FnZShpbnQsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FeHRlcm5hbExvZ2dlclRlc3QuaHRtbCI+RXh0ZXJuYWxMb2dnZXJUZXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3Nsb2FkZXJDaGFuZ2VUZXN0Lmh0bWwjbG9nVmVsb2NpdHlNZXNzYWdlKGludCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZ1ZlbG9jaXR5TWVzc2FnZShpbnQsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc2xvYWRlckNoYW5nZVRlc3QuaHRtbCI+Q2xhc3Nsb2FkZXJDaGFuZ2VUZXN0PC9BPgo8REQ+bWV0aG9kIHRvIGNhdGNoIFZlbG9jaXR5IGxvZyBtZXNzYWdlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNsb2dWTU1lc3NhZ2VJbmZvKGphdmEubGFuZy5TdHJpbmcpIj48Qj5sb2dWTU1lc3NhZ2VJbmZvKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPgo8REQ+bG9jYWxpemF0aW9uIG9mIHRoZSBsb2dnaW5nIGxvZ2ljCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjbG9nVk1NZXNzYWdlV2FybihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9nVk1NZXNzYWdlV2FybihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPmxvY2FsaXphdGlvbiBvZiB0aGUgbG9nZ2luZyBsb2dpYwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNsb2dXaGVuRm91bmQiPjxCPmxvZ1doZW5Gb3VuZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9BPgo8REQ+c3dpdGNoIHRvIHR1cm4gb2ZmIGxvZyBub3RpY2Ugd2hlbiBhIHJlc291cmNlIGlzIGZvdW5kIGZvcgogIHRoZSBmaXJzdCB0aW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwjbG9uZ01ldGhvZChsb25nKSI+PEI+bG9uZ01ldGhvZChsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI2xvb2tpbmdBaGVhZCI+PEI+bG9va2luZ0FoZWFkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW5NZ3JFcnJvci5odG1sI0xPT1BfREVURUNURUQiPjxCPkxPT1BfREVURUNURUQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCI+VG9rZW5NZ3JFcnJvcjwvQT4KPEREPkRldGVjdGVkIChhbmQgYmFpbGVkIG91dCBvZikgYW4gaW5maW5pdGUgbG9vcCBpbiB0aGUgdG9rZW4gbWFuYWdlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjbHBhcmVuIj48Qj5scGFyZW48L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNMUEFSRU4iPjxCPkxQQVJFTjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBOQU1FPSJfTV8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+TTwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL01hY3JvLmh0bWwiPjxCPk1hY3JvPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm8uaHRtbCI+TWFjcm88L0E+LjxERD5NYWNyby5qYXZhCgogIE1hY3JvIGltcGxlbWVudHMgdGhlIG1hY3JvIGRlZmluaXRpb24gZGlyZWN0aXZlIG9mIFZUTC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sI01hY3JvKCkiPjxCPk1hY3JvKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL01hY3JvLmh0bWwiPk1hY3JvPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCNtYWNyb2JvZHkiPjxCPm1hY3JvYm9keTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI21hY3JvQm9keSI+PEI+bWFjcm9Cb2R5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCI+VmVsb2NpbWFjcm9Qcm94eTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sI21hY3JvTGliVmVjIj48Qj5tYWNyb0xpYlZlYzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPnZlY3RvciBvZiB0aGUgbGlicmFyeSBuYW1lcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwjbWFjcm9uYW1lIj48Qj5tYWNyb25hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNtYWNyb05hbWUiPjxCPm1hY3JvTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm9QYXJzZUV4Y2VwdGlvbi5odG1sIj48Qj5NYWNyb1BhcnNlRXhjZXB0aW9uPC9CPjwvQT4gLSBleGNlcHRpb24gb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL01hY3JvUGFyc2VFeGNlcHRpb24uaHRtbCI+TWFjcm9QYXJzZUV4Y2VwdGlvbjwvQT4uPEREPkV4Y2VwdGlvbiB0byBpbmRpY2F0ZSBwcm9ibGVtIGhhcHBlbmVkIHdoaWxlIGNvbnN0cnVjdGluZyAjbWFjcm8oKQoKICBGb3IgaW50ZXJuYWwgdXNlIGluIHBhcnNlciAtIG5vdCB0byBiZSBwYXNzZWQgdG8gYXBwIGxldmVsPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm9QYXJzZUV4Y2VwdGlvbi5odG1sI01hY3JvUGFyc2VFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPk1hY3JvUGFyc2VFeGNlcHRpb24oU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm9QYXJzZUV4Y2VwdGlvbi5odG1sIj5NYWNyb1BhcnNlRXhjZXB0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCNtYWluKGphdmEubGFuZy5TdHJpbmdbXSkiPjxCPm1haW4oU3RyaW5nW10pPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnZlcnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwiPldlYk1hY3JvPC9BPgo8REQ+TWFpbiBob29rIGZvciB0aGUgY29udmVyc2lvbiBwcm9jZXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbXBpbGVyL0NvbXBpbGVyLmh0bWwjbWFpbihqYXZhLmxhbmcuU3RyaW5nW10pIj48Qj5tYWluKFN0cmluZ1tdKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbXBpbGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb21waWxlci9Db21waWxlci5odG1sIj5Db21waWxlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L21pc2MvVGVzdC5odG1sI21haW4oamF2YS5sYW5nLlN0cmluZ1tdKSI+PEI+bWFpbihTdHJpbmdbXSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5taXNjLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9taXNjL1Rlc3QuaHRtbCI+VGVzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3ZpZXcvVGVtcGxhdGVOb2RlVmlldy5odG1sI21haW4oamF2YS5sYW5nLlN0cmluZ1tdKSI+PEI+bWFpbihTdHJpbmdbXSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC52aWV3LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC92aWV3L1RlbXBsYXRlTm9kZVZpZXcuaHRtbCI+VGVtcGxhdGVOb2RlVmlldzwvQT4KPEREPkZvciB0ZXN0aW5nCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sI21ha2VBbHRlcm5hdG9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5tYWtlQWx0ZXJuYXRvcihTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPk1ha2VzIGFuIGFsdGVybmF0b3Igb2JqZWN0IHRoYXQgYWx0ZXJuYXRlcyBiZXR3ZWVuIHR3byB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sI21ha2VBbHRlcm5hdG9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5tYWtlQWx0ZXJuYXRvcihTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyPC9BPgo8REQ+TWFrZXMgYW4gYWx0ZXJuYXRvciBvYmplY3QgdGhhdCBhbHRlcm5hdGVzIGJldHdlZW4gdGhyZWUKIHZhbHVlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjbWFrZUFsdGVybmF0b3IoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPm1ha2VBbHRlcm5hdG9yKFN0cmluZywgU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPk1ha2VzIGFuIGFsdGVybmF0b3Igb2JqZWN0IHRoYXQgYWx0ZXJuYXRlcyBiZXR3ZWVuIGZvdXIgdmFsdWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCNtYWtlQXV0b0FsdGVybmF0b3IoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPm1ha2VBdXRvQWx0ZXJuYXRvcihTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPk1ha2VzIGFuIGFsdGVybmF0b3Igb2JqZWN0IHRoYXQgYWx0ZXJuYXRlcyBiZXR3ZWVuIHR3byB2YWx1ZXMKIGF1dG9tYXRpY2FsbHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI21ha2VNZXRob2RLZXkoamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kKSI+PEI+bWFrZU1ldGhvZEtleShNZXRob2QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwiPkNsYXNzTWFwPC9BPgo8REQ+TWFrZSBhIG1ldGhvZEtleSBmb3IgdGhlIGdpdmVuIG1ldGhvZCB1c2luZwogdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIG5hbWUgYW5kIHRoZQogdHlwZXMgb2YgdGhlIG1ldGhvZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCNtYWtlTWV0aG9kS2V5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3RbXSkiPjxCPm1ha2VNZXRob2RLZXkoU3RyaW5nLCBPYmplY3RbXSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwiPkNsYXNzTWFwPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCNtYWtlU3Vic3RSRShpbnQpIj48Qj5tYWtlU3Vic3RSRShpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udmVydC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCI+V2ViTWFjcm88L0E+CjxERD5NYWtlcyBhIFBlcmwgNSByZWd1bGFyIGV4cHJlc3Npb24gZm9yIHVzZSBieSBPUk8uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCNtYW5hZ2VyIj48Qj5tYW5hZ2VyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sI21hcmtzIj48Qj5tYXJrczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sIj5KSlRQYXJzZXJTdGF0ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1NpbXBsZVBvb2wuaHRtbCNtYXgiPjxCPm1heDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU2ltcGxlUG9vbC5odG1sIj5TaW1wbGVQb29sPC9BPgo8REQ+bWF4IGFtb3VudCBvZiBvYmplY3RzIHRvIGJlIG1hbmFnZWQKICBzZXQgdmlhIENUT1IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjbWF4TmV4dENoYXJJbmQiPjxCPm1heE5leHRDaGFySW5kPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNtZSgpIj48Qj5tZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRDYXJ0cmlkZ2UuaHRtbCNtZWVoIj48Qj5tZWVoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuZXZlbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRDYXJ0cmlkZ2UuaHRtbCI+RXZlbnRDYXJ0cmlkZ2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVGVtcGxhdGUuaHRtbCNtZXJnZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCwgamF2YS5pby5Xcml0ZXIpIj48Qj5tZXJnZShDb250ZXh0LCBXcml0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9UZW1wbGF0ZS5odG1sIj5UZW1wbGF0ZTwvQT4KPEREPlRoZSBBU1Qgbm9kZSBzdHJ1Y3R1cmUgaXMgbWVyZ2VkIHdpdGggdGhlCiBjb250ZXh0IHRvIHByb2R1Y2UgdGhlIGZpbmFsIG91dHB1dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwjbWVyZ2VUZW1wbGF0ZShqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dCwgamF2YS5pby5Xcml0ZXIpIj48Qj5tZXJnZVRlbXBsYXRlKFN0cmluZywgQ29udGV4dCwgV3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPm1lcmdlcyBhIHRlbXBsYXRlIGFuZCBwdXRzIHRoZSByZW5kZXJlZCBzdHJlYW0gaW50byB0aGUgd3JpdGVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI21lcmdlVGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQsIGphdmEuaW8uV3JpdGVyKSI+PEI+bWVyZ2VUZW1wbGF0ZShTdHJpbmcsIENvbnRleHQsIFdyaXRlcik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwiPlZlbG9jaXR5PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlCiAgPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNtZXJnZVRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0LCBqYXZhLmlvLldyaXRlcikiPjxDT0RFPlZlbG9jaXR5Lm1lcmdlVGVtcGxhdGUoIFN0cmluZyB0ZW1wbGF0ZU5hbWUsIFN0cmluZyBlbmNvZGluZywKICAgICAgICAgICAgICAgIENvbnRleHQgY29udGV4dCwgV3JpdGVyIHdyaXRlciApPC9DT0RFPjwvQT48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI21lcmdlVGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQsIGphdmEuaW8uV3JpdGVyKSI+PEI+bWVyZ2VUZW1wbGF0ZShTdHJpbmcsIFN0cmluZywgQ29udGV4dCwgV3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPm1lcmdlcyBhIHRlbXBsYXRlIGFuZCBwdXRzIHRoZSByZW5kZXJlZCBzdHJlYW0gaW50byB0aGUgd3JpdGVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI21lcmdlVGVtcGxhdGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQsIGphdmEuaW8uV3JpdGVyKSI+PEI+bWVyZ2VUZW1wbGF0ZShTdHJpbmcsIFN0cmluZywgQ29udGV4dCwgV3JpdGVyKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5tZXJnZXMgYSB0ZW1wbGF0ZSBhbmQgcHV0cyB0aGUgcmVuZGVyZWQgc3RyZWFtIGludG8gdGhlIHdyaXRlcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sI21lcmdlVGVtcGxhdGUob3JnLmFwYWNoZS52ZWxvY2l0eS5UZW1wbGF0ZSwgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+bWVyZ2VUZW1wbGF0ZShUZW1wbGF0ZSwgQ29udGV4dCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPgo8REQ+bWVyZ2VzIHRoZSB0ZW1wbGF0ZSB3aXRoIHRoZSBjb250ZXh0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sI21lc3NhZ2UoamF2YS5pby5GaWxlV3JpdGVyLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bWVzc2FnZShGaWxlV3JpdGVyLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29uZmlndXJhdGlvblRlc3RDYXNlLmh0bWwiPkNvbmZpZ3VyYXRpb25UZXN0Q2FzZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbW1vbnNFeHRQcm9wVGVzdENhc2UuaHRtbCNtZXNzYWdlKGphdmEuaW8uRmlsZVdyaXRlciwgamF2YS5sYW5nLlN0cmluZykiPjxCPm1lc3NhZ2UoRmlsZVdyaXRlciwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbW1vbnNFeHRQcm9wVGVzdENhc2UuaHRtbCI+Q29tbW9uc0V4dFByb3BUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0Fic3RyYWN0RXhlY3V0b3IuaHRtbCNtZXRob2QiPjxCPm1ldGhvZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQWJzdHJhY3RFeGVjdXRvci5odG1sIj5BYnN0cmFjdEV4ZWN1dG9yPC9BPgo8REQ+TWV0aG9kIHRvIGJlIGV4ZWN1dGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwjbWV0aG9kIj48Qj5tZXRob2Q8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNtZXRob2QiPjxCPm1ldGhvZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCNtZXRob2QiPjxCPm1ldGhvZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCI+Q2xhc3NNYXAuTWV0aG9kSW5mbzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNNZXRob2QoKSI+PEI+TWV0aG9kKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBoYXMgeWV0IHRvIGJlIGZ1bGx5IGltcGxlbWVudGVkCiBidXQgd2lsbCBhbGxvdyBhcmJpdHJhcmlseSBuZXN0ZWQgbWV0aG9kCiBjYWxscwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwjbWV0aG9kQnlOYW1lTWFwIj48Qj5tZXRob2RCeU5hbWVNYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCI+TWV0aG9kTWFwPC9BPgo8REQ+S2VlcCB0cmFjayBvZiBhbGwgbWV0aG9kcyB3aXRoIHRoZSBzYW1lIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI21ldGhvZENhY2hlIj48Qj5tZXRob2RDYWNoZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwiPkNsYXNzTWFwPC9BPgo8REQ+Q2FjaGUgb2YgTWV0aG9kcywgb3IgQ0FDSEVfTUlTUywga2V5ZWQgYnkgbWV0aG9kCiBuYW1lIGFuZCBhY3R1YWwgYXJndW1lbnRzIHVzZWQgdG8gZmluZCBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwjbWV0aG9kRXhjZXB0aW9uKGphdmEubGFuZy5DbGFzcywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkV4Y2VwdGlvbikiPjxCPm1ldGhvZEV4Y2VwdGlvbihDbGFzcywgU3RyaW5nLCBFeGNlcHRpb24pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwiPkV2ZW50Q2FydHJpZGdlPC9BPgo8REQ+SW1wbGVtZW50YXRpb24gb2YgTWV0aG9kRXhjZXB0aW9uRXZlbnRIYW5kbGVyICBtZXRob2QKICA8Y29kZT5tZXRob2RFeGNlcHRpb24oKTwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9NZXRob2RFeGNlcHRpb25FdmVudEhhbmRsZXIuaHRtbCNtZXRob2RFeGNlcHRpb24oamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuRXhjZXB0aW9uKSI+PEI+bWV0aG9kRXhjZXB0aW9uKENsYXNzLCBTdHJpbmcsIEV4Y2VwdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L01ldGhvZEV4Y2VwdGlvbkV2ZW50SGFuZGxlci5odG1sIj5NZXRob2RFeGNlcHRpb25FdmVudEhhbmRsZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCNtZXRob2RFeGNlcHRpb24oamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuRXhjZXB0aW9uKSI+PEI+bWV0aG9kRXhjZXB0aW9uKENsYXNzLCBTdHJpbmcsIEV4Y2VwdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCI+RXZlbnRIYW5kbGluZ1Rlc3RDYXNlPC9BPgo8REQ+SGFuZGxlcyBleGNlcHRpb25zIHRocm93biBkdXJpbmcgaW4tdGVtcGxhdGUgbWV0aG9kIGFjY2Vzcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L21pc2MvVGVzdC5odG1sI21ldGhvZEV4Y2VwdGlvbihqYXZhLmxhbmcuQ2xhc3MsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5FeGNlcHRpb24pIj48Qj5tZXRob2RFeGNlcHRpb24oQ2xhc3MsIFN0cmluZywgRXhjZXB0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QubWlzYy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvbWlzYy9UZXN0Lmh0bWwiPlRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L01ldGhvZEV4Y2VwdGlvbkV2ZW50SGFuZGxlci5odG1sIj48Qj5NZXRob2RFeGNlcHRpb25FdmVudEhhbmRsZXI8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9NZXRob2RFeGNlcHRpb25FdmVudEhhbmRsZXIuaHRtbCI+TWV0aG9kRXhjZXB0aW9uRXZlbnRIYW5kbGVyPC9BPi48REQ+Q2FsbGVkIHdoZW4gYSBtZXRob2QgdGhyb3dzIGFuIGV4Y2VwdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbi5odG1sIj48Qj5NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uPC9CPjwvQT4gLSBleGNlcHRpb24gb3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbi5odG1sIj5NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uPC9BPi48REQ+QXBwbGljYXRpb24tbGV2ZWwgZXhjZXB0aW9uIHRocm93biB3aGVuIGEgcmVmZXJlbmNlIG1ldGhvZCBpcyAKICBpbnZva2VkIGFuZCBhbiBleGNlcHRpb24gaXMgdGhyb3duLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uLmh0bWwjTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuVGhyb3dhYmxlLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbihTdHJpbmcsIFRocm93YWJsZSwgU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmV4Y2VwdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uLmh0bWwiPk1ldGhvZEludm9jYXRpb25FeGNlcHRpb248L0E+CjxERD5DVE9SIC0gd3JhcHMgdGhlIHBhc3NlZCBpbiBleGNlcHRpb24gZm9yCiAgZXhhbWluYXRpb24gbGF0ZXIKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdC5odG1sIj48Qj5NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdC5odG1sIj5NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdDwvQT4uPEREPlRlc3RzIGlmIHdlIGNhbiBoYW5kIFZlbG9jaXR5IGFuIGFyYml0cmFyeSBjbGFzcyBmb3IgbG9nZ2luZy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0Lmh0bWwjTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvblRlc3QoKSI+PEI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvblRlc3QoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0Lmh0bWwiPk1ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0PC9BPgo8REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwjbWV0aG9kTWFwIj48Qj5tZXRob2RNYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sIj5DbGFzc01hcDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwiPjxCPk1ldGhvZE1hcDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwiPk1ldGhvZE1hcDwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuQW1iaWd1b3VzRXhjZXB0aW9uLmh0bWwiPjxCPk1ldGhvZE1hcC5BbWJpZ3VvdXNFeGNlcHRpb248L0I+PC9BPiAtIGV4Y2VwdGlvbiBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuQW1iaWd1b3VzRXhjZXB0aW9uLmh0bWwiPk1ldGhvZE1hcC5BbWJpZ3VvdXNFeGNlcHRpb248L0E+LjxERD5zaW1wbGUgZGlzdGluZ3Vpc2hhYmxlIGV4Y2VwdGlvbiwgdXNlZCB3aGVuCiAgd2UgcnVuIGFjcm9zcyBhbWJpZ3VvdXMgb3ZlcmxvYWRpbmc8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLkFtYmlndW91c0V4Y2VwdGlvbi5odG1sI01ldGhvZE1hcC5BbWJpZ3VvdXNFeGNlcHRpb24oKSI+PEI+TWV0aG9kTWFwLkFtYmlndW91c0V4Y2VwdGlvbigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5BbWJpZ3VvdXNFeGNlcHRpb24uaHRtbCI+TWV0aG9kTWFwLkFtYmlndW91c0V4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwjTWV0aG9kTWFwKCkiPjxCPk1ldGhvZE1hcCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sIj5NZXRob2RNYXA8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL01ldGhvZEludm9jYXRpb25FeGNlcHRpb24uaHRtbCNtZXRob2ROYW1lIj48Qj5tZXRob2ROYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbi5odG1sIj5NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTWV0aG9kLmh0bWwjbWV0aG9kTmFtZSI+PEI+bWV0aG9kTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTWV0aG9kLmh0bWwiPkFTVE1ldGhvZDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1Byb3BlcnR5RXhlY3V0b3IuaHRtbCNtZXRob2RVc2VkIj48Qj5tZXRob2RVc2VkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Qcm9wZXJ0eUV4ZWN1dG9yLmh0bWwiPlByb3BlcnR5RXhlY3V0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI01JTExJU19QRVJfU0VDT05EIj48Qj5NSUxMSVNfUEVSX1NFQ09ORDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+VGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSBtaW51dGUsIHVzZWQgdG8gY2FsY3VsYXRlIHRoZQogY2hlY2sgaW50ZXJ2YWwuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjbWluKGludCwgaW50KSI+PEI+bWluKGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD5PdXIgb3duIGxpdHRsZSBtaW4gbWV0aG9kLCB0byBhdm9pZCBsb2FkaW5nCiA8Y29kZT5qYXZhLmxhbmcuTWF0aDwvY29kZT4gaWYgd2UndmUgcnVuIG91dCBvZiBmaWxlCiBkZXNjcmlwdG9ycyBhbmQgd2UncmUgdHJ5aW5nIHRvIHByaW50IGEgc3RhY2sgdHJhY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI01JTlVTIj48Qj5NSU5VUzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NaXNjVGVzdENhc2UuaHRtbCI+PEI+TWlzY1Rlc3RDYXNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01pc2NUZXN0Q2FzZS5odG1sIj5NaXNjVGVzdENhc2U8L0E+LjxERD5UZXN0IGNhc2UgZm9yIGFueSBtaXNjZWxsYW5lb3VzIHN0dWZmLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTWlzY1Rlc3RDYXNlLmh0bWwjTWlzY1Rlc3RDYXNlKCkiPjxCPk1pc2NUZXN0Q2FzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTWlzY1Rlc3RDYXNlLmh0bWwiPk1pc2NUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01pc2NUZXN0Q2FzZS5odG1sI01pc2NUZXN0Q2FzZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+TWlzY1Rlc3RDYXNlKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NaXNjVGVzdENhc2UuaHRtbCI+TWlzY1Rlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjbWsiPjxCPm1rPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvRmlsZVV0aWwuaHRtbCNta2RpcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bWtkaXIoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vdXRpbC9GaWxlVXRpbC5odG1sIj5GaWxlVXRpbDwvQT4KPEREPkNyZWF0ZXMgdGhlIGRpcmVjdG9yeSBzIChhbmQgYW55IHBhcmVudCBkaXJlY3RvcmllcyBuZWVkZWQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjbW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbCI+PEI+bW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD5Ib3cgb2Z0ZW4gdGhlIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgaXMgY2hlY2tlZCAoaW4gc2Vjb25kcykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwjbW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbCI+PEI+bW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sIj5SZXNvdXJjZUxvYWRlcjwvQT4KPEREPlRoaXMgcHJvcGVydHkgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIHRlbXBsYXRlcwogdGhhdCBhcmUgY3JlYXRlZCB3aXRoIHRoaXMgbG9hZGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uay5odG1sI21vZGlmaWNhdGlvblRpbWUiPjxCPm1vZGlmaWNhdGlvblRpbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uay5odG1sIj5WZWxvY2ltYWNyb0ZhY3RvcnkuVHdvbms8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjTU9EVUxVUyI+PEI+TU9EVUxVUzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL01ldGhvZE1hcC5odG1sI01PUkVfU1BFQ0lGSUMiPjxCPk1PUkVfU1BFQ0lGSUM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vTWV0aG9kTWFwLmh0bWwiPk1ldGhvZE1hcDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNNb3JlTGV4aWNhbEFjdGlvbnMoKSI+PEI+TW9yZUxleGljYWxBY3Rpb25zKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNtb3JlUHJlZml4Ij48Qj5tb3JlUHJlZml4PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCNtb3JlU3BlY2lmaWMoamF2YS5sYW5nLkNsYXNzW10sIGphdmEubGFuZy5DbGFzc1tdKSI+PEI+bW9yZVNwZWNpZmljKENsYXNzW10sIENsYXNzW10pPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9NZXRob2RNYXAuaHRtbCI+TWV0aG9kTWFwPC9BPgo8REQ+RGV0ZXJtaW5lcyB3aGljaCBtZXRob2Qgc2lnbmF0dXJlIChyZXByZXNlbnRlZCBieSBhIGNsYXNzIGFycmF5KSBpcyBtb3JlCiBzcGVjaWZpYy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2VEaXJlY3RpdmVFeGNlcHRpb24uaHRtbCNtc2ciPjxCPm1zZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbi5odG1sIj5QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNNVUxUSV9MSU5FX0NPTU1FTlQiPjxCPk1VTFRJX0xJTkVfQ09NTUVOVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aUxvYWRlclRlc3RDYXNlLmh0bWwiPjxCPk11bHRpTG9hZGVyVGVzdENhc2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlMb2FkZXJUZXN0Q2FzZS5odG1sIj5NdWx0aUxvYWRlclRlc3RDYXNlPC9BPi48REQ+TG9hZCB0ZW1wbGF0ZXMgZnJvbSB0aGUgQ2xhc3NwYXRoLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlMb2FkZXJUZXN0Q2FzZS5odG1sI011bHRpTG9hZGVyVGVzdENhc2UoKSI+PEI+TXVsdGlMb2FkZXJUZXN0Q2FzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlMb2FkZXJUZXN0Q2FzZS5odG1sIj5NdWx0aUxvYWRlclRlc3RDYXNlPC9BPgo8REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwiPjxCPk11bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3Q8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sIj5NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0PC9BPi48REQ+TXVsdGlwbGUgcGF0aHMgaW4gdGhlIGZpbGUgcmVzb3VyY2UgbG9hZGVyLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sI011bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3QoKSI+PEI+TXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sIj5NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0PC9BPgo8REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjTXVsdGlwbGljYXRpdmVFeHByZXNzaW9uKCkiPjxCPk11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI01VTFRJUExZIj48Qj5NVUxUSVBMWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBOQU1FPSJfTl8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+TjwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4KPEREPk5hbWUgb2YgdGhlIHJlc291cmNlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5NZXRob2RJbmZvLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCI+Q2xhc3NNYXAuTWV0aG9kSW5mbzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwjbmFtZXNwYWNlIj48Qj5uYW1lc3BhY2U8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwjbmFtZXNwYWNlSGFzaCI+PEI+bmFtZXNwYWNlSGFzaDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlcjwvQT4KPEREPkhhc2ggb2YgbmFtZXNwYWNlIGhhc2hlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCNuYW1lc3BhY2VzT24iPjxCPm5hbWVzcGFjZXNPbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNORVdMSU5FIj48Qj5ORVdMSU5FPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sI25ld1Rva2VuKGludCkiPjxCPm5ld1Rva2VuKGludCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4KPEREPlJldHVybnMgYSBuZXcgVG9rZW4gb2JqZWN0LCBieSBkZWZhdWx0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuSkpDYWxscy5odG1sI25leHQiPjxCPm5leHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLkpKQ2FsbHMuaHRtbCI+UGFyc2VyLkpKQ2FsbHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW4uaHRtbCNuZXh0Ij48Qj5uZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuLmh0bWwiPlRva2VuPC9BPgo8REQ+QSByZWZlcmVuY2UgdG8gdGhlIG5leHQgcmVndWxhciAobm9uLXNwZWNpYWwpIHRva2VuIGZyb20gdGhlIGlucHV0CiBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvRW51bWVyYXRpb25JdGVyYXRvci5odG1sI25leHQoKSI+PEI+bmV4dCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvRW51bWVyYXRpb25JdGVyYXRvci5odG1sIj5FbnVtZXJhdGlvbkl0ZXJhdG9yPC9BPgo8REQ+TW92ZSB0byBuZXh0IGVsZW1lbnQgaW4gdGhlIGFycmF5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCNuZXh0KCkiPjxCPm5leHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCI+QXJyYXlJdGVyYXRvcjwvQT4KPEREPk1vdmUgdG8gbmV4dCBlbGVtZW50IGluIHRoZSBhcnJheS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCNuZXh0Q2hhciI+PEI+bmV4dENoYXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI25leHRDaGVjayI+PEI+bmV4dENoZWNrPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4KPEREPlRoZSBuZXh0IHRpbWUgdGhlIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgd2lsbCBiZSBjaGVja2VkIChpbiAKIG1pbGxpc2Vjb25kcykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNUb2tlbml6ZXIuaHRtbCNuZXh0VG9rZW4oKSI+PEI+bmV4dFRva2VuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzVG9rZW5pemVyLmh0bWwiPkNvbmZpZ3VyYXRpb24uUHJvcGVydGllc1Rva2VuaXplcjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0dldCBuZXh0IHRva2VuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCNuZiI+PEI+bmY8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI05PX0JVRkZFUiI+PEI+Tk9fQlVGRkVSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPmNvbnN0YW50IGluZGljYXRpbmcgdGhhdCB0aGUgV3JpdGVyIGlzIG5vdCBidWZmZXJpbmcgb3V0cHV0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwjTk9fUkVGRVJFTkNFX1ZBTFVFIj48Qj5OT19SRUZFUkVOQ0VfVkFMVUU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCI+RXZlbnRIYW5kbGluZ1Rlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj48Qj5Ob2RlPC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwiPk5vZGU8L0E+LjxERD5BbGwgQVNUIG5vZGVzIG11c3QgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjbm9kZV9jcmVhdGVkIj48Qj5ub2RlX2NyZWF0ZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCI+SkpUUGFyc2VyU3RhdGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCNub2RlQXJpdHkoKSI+PEI+bm9kZUFyaXR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjbm9kZUNyZWF0ZWQoKSI+PEI+bm9kZUNyZWF0ZWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCI+SkpUUGFyc2VyU3RhdGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9leGNlcHRpb24vTm9kZUV4Y2VwdGlvbi5odG1sIj48Qj5Ob2RlRXhjZXB0aW9uPC9CPjwvQT4gLSBleGNlcHRpb24gb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmV4Y2VwdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZXhjZXB0aW9uL05vZGVFeGNlcHRpb24uaHRtbCI+Tm9kZUV4Y2VwdGlvbjwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZXhjZXB0aW9uL05vZGVFeGNlcHRpb24uaHRtbCNOb2RlRXhjZXB0aW9uKGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5Ob2RlKSI+PEI+Tm9kZUV4Y2VwdGlvbihTdHJpbmcsIE5vZGUpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2V4Y2VwdGlvbi9Ob2RlRXhjZXB0aW9uLmh0bWwiPk5vZGVFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPjxCPk5vZGVMaXN0PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4uPEREPlByb3ZpZGVzIGEgY2xhc3MgZm9yIHdyYXBwaW5nIGEgbGlzdCBvZiBKRE9NIG9iamVjdHMgcHJpbWFyaWx5IGZvciB1c2UgaW4gdGVtcGxhdGUKIGVuZ2luZXMgYW5kIG90aGVyIGtpbmRzIG9mIHRleHQgdHJhbnNmb3JtYXRpb24gdG9vbHMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0LkF0dHJpYnV0ZVhNTE91dHB1dHRlci5odG1sIj48Qj5Ob2RlTGlzdC5BdHRyaWJ1dGVYTUxPdXRwdXR0ZXI8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0LkF0dHJpYnV0ZVhNTE91dHB1dHRlci5odG1sIj5Ob2RlTGlzdC5BdHRyaWJ1dGVYTUxPdXRwdXR0ZXI8L0E+LjxERD5BIHNwZWNpYWwgc3ViY2xhc3Mgb2YgWE1MT3V0cHV0dGVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG91dHB1dCAKIEF0dHJpYnV0ZSBub2Rlcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuQXR0cmlidXRlWE1MT3V0cHV0dGVyLmh0bWwjTm9kZUxpc3QuQXR0cmlidXRlWE1MT3V0cHV0dGVyKCkiPjxCPk5vZGVMaXN0LkF0dHJpYnV0ZVhNTE91dHB1dHRlcigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0LkF0dHJpYnV0ZVhNTE91dHB1dHRlci5odG1sIj5Ob2RlTGlzdC5BdHRyaWJ1dGVYTUxPdXRwdXR0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjTm9kZUxpc3QoKSI+PEI+Tm9kZUxpc3QoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPkNyZWF0ZXMgYW4gZW1wdHkgbm9kZSBsaXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNOb2RlTGlzdChvcmcuamRvbS5Eb2N1bWVudCkiPjxCPk5vZGVMaXN0KERvY3VtZW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPkNyZWF0ZXMgYSBub2RlIGxpc3QgdGhhdCBob2xkcyBhIHNpbmdsZSA8Q09ERT5Eb2N1bWVudDwvQ09ERT4gbm9kZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjTm9kZUxpc3Qob3JnLmpkb20uRWxlbWVudCkiPjxCPk5vZGVMaXN0KEVsZW1lbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+Q3JlYXRlcyBhIG5vZGUgbGlzdCB0aGF0IGhvbGRzIGEgc2luZ2xlIDxDT0RFPkVsZW1lbnQ8L0NPREU+IG5vZGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI05vZGVMaXN0KGphdmEudXRpbC5MaXN0KSI+PEI+Tm9kZUxpc3QoTGlzdCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD5DcmVhdGVzIGEgbm9kZSBsaXN0IHRoYXQgaG9sZHMgYSBsaXN0IG9mIG5vZGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNOb2RlTGlzdChqYXZhLnV0aWwuTGlzdCwgYm9vbGVhbikiPjxCPk5vZGVMaXN0KExpc3QsIGJvb2xlYW4pPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+Q3JlYXRlcyBhIG5vZGUgbGlzdCB0aGF0IGhvbGRzIGEgbGlzdCBvZiBub2Rlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjTm9kZUxpc3QoamF2YS5sYW5nLk9iamVjdCkiPjxCPk5vZGVMaXN0KE9iamVjdCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjbm9kZXMiPjxCPm5vZGVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD5UaGUgY29udGFpbmVkIG5vZGVzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjbm9kZXMiPjxCPm5vZGVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCNub2RlVHJlZSI+PEI+bm9kZVRyZWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNub2RlVHJlZSI+PEI+bm9kZVRyZWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNub2RlVHJlZSI+PEI+bm9kZVRyZWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+dGhlIEFTVCBpZiB0aGUgdHlwZSBpcyBzdWNoIHRoYXQgaXQncyBkeW5hbWljIChleC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwjbm9kZVRyZWUiPjxCPm5vZGVUcmVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwiPkFTVFN0cmluZ0xpdGVyYWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlVXRpbHMuaHRtbCI+PEI+Tm9kZVV0aWxzPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGVVdGlscy5odG1sIj5Ob2RlVXRpbHM8L0E+LjxERD5VdGlsaXRpZXMgZm9yIGRlYWxpbmcgd2l0aCB0aGUgQVNUIG5vZGUgc3RydWN0dXJlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZVV0aWxzLmh0bWwjTm9kZVV0aWxzKCkiPjxCPk5vZGVVdGlscygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZVV0aWxzLmh0bWwiPk5vZGVVdGlsczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPjxCPk5vZGVWaWV3TW9kZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4uPEREPlRoaXMgY2xhc3MgaXMgc2ltcGx5IGEgdmlzaXRvciBpbXBsZW1lbnRhdGlvbgogdGhhdCB0cmF2ZXJzZXMgdGhlIEFTVCwgcHJvZHVjZWQgYnkgdGhlIFZlbG9jaXR5CiBwYXJzaW5nIHByb2Nlc3MsIGFuZCBjcmVhdGVzIGEgdmlzdWFsIHN0cnVjdHVyZQogb2YgdGhlIEFTVC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjTm9kZVZpZXdNb2RlKCkiPjxCPk5vZGVWaWV3TW9kZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNOT1JNQUxfUkVGRVJFTkNFIj48Qj5OT1JNQUxfUkVGRVJFTkNFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwiPkFTVFJlZmVyZW5jZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0Jhc2VUZXN0Q2FzZS5odG1sI25vcm1hbGl6ZU5ld2xpbmVzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5ub3JtYWxpemVOZXdsaW5lcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQmFzZVRlc3RDYXNlLmh0bWwiPkJhc2VUZXN0Q2FzZTwvQT4KPEREPk5vcm1hbGl6ZXMgbGluZXMgdG8gYWNjb3VudCBmb3IgcGxhdGZvcm0gZGlmZmVyZW5jZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCNub3JtYWxpemVQYXRoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5ub3JtYWxpemVQYXRoKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5SZXR1cm4gYSBjb250ZXh0LXJlbGF0aXZlIHBhdGgsIGJlZ2lubmluZyB3aXRoIGEgIi8iLCB0aGF0IHJlcHJlc2VudHMKIHRoZSBjYW5vbmljYWwgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWVkIHBhdGggYWZ0ZXIgIi4uIiBhbmQgIi4iIGVsZW1lbnRzCiBhcmUgcmVzb2x2ZWQgb3V0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRDYXJ0cmlkZ2UuaHRtbCNuc2VoIj48Qj5uc2VoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuZXZlbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRDYXJ0cmlkZ2UuaHRtbCI+RXZlbnRDYXJ0cmlkZ2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTnVsbExvZ1N5c3RlbS5odG1sIj48Qj5OdWxsTG9nU3lzdGVtPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTnVsbExvZ1N5c3RlbS5odG1sIj5OdWxsTG9nU3lzdGVtPC9BPi48REQ+TG9nZ2VyIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL051bGxMb2dTeXN0ZW0uaHRtbCNOdWxsTG9nU3lzdGVtKCkiPjxCPk51bGxMb2dTeXN0ZW0oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTnVsbExvZ1N5c3RlbS5odG1sIj5OdWxsTG9nU3lzdGVtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9OdWxsU2V0RXZlbnRIYW5kbGVyLmh0bWwiPjxCPk51bGxTZXRFdmVudEhhbmRsZXI8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9OdWxsU2V0RXZlbnRIYW5kbGVyLmh0bWwiPk51bGxTZXRFdmVudEhhbmRsZXI8L0E+LjxERD5FdmVudCBoYW5kbGVyIDogbGV0cyBhbiBhcHAgYXBwcm92ZSAvIHZldG8KICB3cml0aW5nIGEgbG9nIG1lc3NhZ2Ugd2hlbiBSSFMgb2YgI3NldCgpIGlzIG51bGwuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNudWxsU3RyaW5nIj48Qj5udWxsU3RyaW5nPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI05VTUJFUl9MSVRFUkFMIj48Qj5OVU1CRVJfTElURVJBTDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjTlVNQkVSX09GX1BBUlNFUlMiPjxCPk5VTUJFUl9PRl9QQVJTRVJTPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPlRoZSBkZWZhdWx0IG51bWJlciBvZiBwYXJzZXIgaW5zdGFuY2VzIHRvIGNyZWF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjTnVtYmVyTGl0ZXJhbCgpIj48Qj5OdW1iZXJMaXRlcmFsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNudW1DaGlsZHJlbiI+PEI+bnVtQ2hpbGRyZW48L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI251bU1hY3JvQXJncyI+PEI+bnVtTWFjcm9BcmdzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCI+VmVsb2NpbWFjcm9Qcm94eTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwjbnVtVHJlZUNoaWxkcmVuIj48Qj5udW1UcmVlQ2hpbGRyZW48L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+bnVtYmVyIG9mIGNoaWxkcmVuIGluIG91ciB0cmVlIGlmIGEgcmVmZXJlbmNlCjwvREw+CjxIUj4KPEEgTkFNRT0iX09fIj48IS0tIC0tPjwvQT48SDI+CjxCPk88L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI29iIj48Qj5vYjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI29iakNvbmNhdChqYXZhLnV0aWwuTGlzdCkiPjxCPm9iakNvbmNhdChMaXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwjT0JKRUNUIj48Qj5PQkpFQ1Q8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vQ2xhc3NNYXAuaHRtbCI+Q2xhc3NNYXA8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjT2JqZWN0QXJyYXkoKSI+PEI+T2JqZWN0QXJyYXkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI29iamVjdEFycmF5TWV0aG9kKGphdmEubGFuZy5PYmplY3RbXSkiPjxCPm9iamVjdEFycmF5TWV0aG9kKE9iamVjdFtdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNPTERfSU5JVF9QUk9QU19LRVkiPjxCPk9MRF9JTklUX1BST1BTX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5Vc2Ugb2YgdGhpcyBwcm9wZXJ0aWVzIGtleSBoYXMgYmVlbiBkZXByZWNhdGVkLCBhbmQgd2lsbCBiZQogcmVtb3ZlZCBpbiBWZWxvY2l0eSB2ZXJzaW9uIDEuNS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9HZXRFeGVjdXRvci5odG1sI09MRGV4ZWN1dGUoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj5PTERleGVjdXRlKE9iamVjdCwgSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9HZXRFeGVjdXRvci5odG1sIj5HZXRFeGVjdXRvcjwvQT4KPEREPkV4ZWN1dGUgbWV0aG9kIGFnYWluc3QgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwjb3BlbkRiQ29ubmVjdGlvbigpIj48Qj5vcGVuRGJDb25uZWN0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sIj5EYXRhU291cmNlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5nZXRzIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFzb3VyY2Ugc3BlY2lmaWVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24KICBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sI29wZW5Ob2RlU2NvcGUob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUpIj48Qj5vcGVuTm9kZVNjb3BlKE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sIj5KSlRQYXJzZXJTdGF0ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eTwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5PEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWE8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWE8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LmFwcDwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcDxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50PC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50PEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHM8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHM8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0PC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dDxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnZlcnQ8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb252ZXJ0PEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb248L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb248REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUudmVsb2NpdHkuaW88L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5pbzxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWU8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29tcGlsZXIvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb21waWxlcjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29tcGlsZXI8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZTwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZXhjZXB0aW9uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZXhjZXB0aW9uPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5leGNlcHRpb248REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2c8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZzxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlcjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZTwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGU8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZTxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlcjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3I8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3I8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0PC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkuc2VydmxldDxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3Q8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0PEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvbWlzYy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0Lm1pc2M8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0Lm1pc2M8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlcjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3ZpZXcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC52aWV3PC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC52aWV3PEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudDwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudDxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLnV0aWw8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi51dGlsPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUudmVsb2NpdHkudXRpbDwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWw8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzbG9hZGVyQ2hhbmdlVGVzdC5odG1sI09VVFBVVCI+PEI+T1VUUFVUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3Nsb2FkZXJDaGFuZ2VUZXN0Lmh0bWwiPkNsYXNzbG9hZGVyQ2hhbmdlVGVzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNPVVRQVVRfRU5DT0RJTkciPjxCPk9VVFBVVF9FTkNPRElORzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5FbmNvZGluZyBmb3IgdGhlIG91dHB1dCBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sI09VVFBVVF9QQVRIIj48Qj5PVVRQVVRfUEFUSDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPldoZXJlIHRoZSB0ZXhlbiBvdXRwdXQgd2lsbCBwbGFjZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5BdHRyaWJ1dGVYTUxPdXRwdXR0ZXIuaHRtbCNvdXRwdXQob3JnLmpkb20uQXR0cmlidXRlLCBqYXZhLmlvLldyaXRlcikiPjxCPm91dHB1dChBdHRyaWJ1dGUsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuQXR0cmlidXRlWE1MT3V0cHV0dGVyLmh0bWwiPk5vZGVMaXN0LkF0dHJpYnV0ZVhNTE91dHB1dHRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjb3V0cHV0RGlyZWN0b3J5Ij48Qj5vdXRwdXREaXJlY3Rvcnk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+VGhpcyBpcyB3aGVyZSB0ZXhlbiB3aWxsIHBsYWNlIGFsbCB0aGUgb3V0cHV0CiB0aGF0IGlzIGEgcHJvZHVjdCBvZiB0aGUgZ2VuZXJhdGlvbiBwcm9jZXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNvdXRwdXRFbmNvZGluZyI+PEI+b3V0cHV0RW5jb2Rpbmc8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPlRoaXMgaXMgdGhlIGVuY29kaW5nIGZvciB0aGUgb3V0cHV0IGZpbGUocykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNvdXRwdXRFbmNvZGluZyI+PEI+b3V0cHV0RW5jb2Rpbmc8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+VGhpcyBpcyB0aGUgZW5jb2RpbmcgZm9yIHRoZSBvdXRwdXQgZmlsZShzKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sI291dHB1dEVycm9yVG9TdHJlYW0oamF2YS5pby5Xcml0ZXIsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5vdXRwdXRFcnJvclRvU3RyZWFtKFdyaXRlciwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sIj5JbmNsdWRlPC9BPgo8REQ+UHV0cyBhIG1lc3NhZ2UgdG8gdGhlIHJlbmRlciBvdXRwdXQgc3RyZWFtIGlmIEVSUk9STVNHX1NUQVJUIC8gRU5ECiAgYXJlIHZhbGlkIHByb3BlcnR5IHN0cmluZ3MuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNvdXRwdXRGaWxlIj48Qj5vdXRwdXRGaWxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPlRoaXMgaXMgdGhlIGZpbGUgd2hlcmUgdGhlIGdlbmVyYXRlZCB0ZXh0CiB3aWxsIGJlIHBsYWNlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sI291dHB1dE1zZ0VuZCI+PEI+b3V0cHV0TXNnRW5kPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0luY2x1ZGUuaHRtbCI+SW5jbHVkZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9JbmNsdWRlLmh0bWwjb3V0cHV0TXNnU3RhcnQiPjxCPm91dHB1dE1zZ1N0YXJ0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0luY2x1ZGUuaHRtbCI+SW5jbHVkZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvT3V0cHV0V3JhcHBlci5odG1sI291dHB1dFN0cmluZyhvcmcuamRvbS5FbGVtZW50LCBib29sZWFuKSI+PEI+b3V0cHV0U3RyaW5nKEVsZW1lbnQsIGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL091dHB1dFdyYXBwZXIuaHRtbCI+T3V0cHV0V3JhcHBlcjwvQT4KPEREPlRoaXMgbWV0aG9kIHdhbGtzIGFuIEVsZW1lbnQgdHJlZSBpbnRvIGEgU3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvT3V0cHV0V3JhcHBlci5odG1sIj48Qj5PdXRwdXRXcmFwcGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9PdXRwdXRXcmFwcGVyLmh0bWwiPk91dHB1dFdyYXBwZXI8L0E+LjxERD5UaGlzIGNsYXNzIGV4dGVuZHMgWE1MT3V0cHV0dGVyIGluIG9yZGVyIHRvIHByb3ZpZGUKIGEgd2F5IHRvIHdhbGsgYW4gRWxlbWVudCB0cmVlIGludG8gYSBTdHJpbmcuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL091dHB1dFdyYXBwZXIuaHRtbCNPdXRwdXRXcmFwcGVyKCkiPjxCPk91dHB1dFdyYXBwZXIoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9PdXRwdXRXcmFwcGVyLmh0bWwiPk91dHB1dFdyYXBwZXI8L0E+CjxERD5FbXB0eSBjb25zdHJ1Y3Rvcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI292ZXJyaWRpbmdQcm9wZXJ0aWVzIj48Qj5vdmVycmlkaW5nUHJvcGVydGllczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlRoZXNlIGFyZSB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBsYWlkIGRvd24gb3ZlciB0b3AKIG9mIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgd2hlbiByZXF1ZXN0ZWQuCjwvREw+CjxIUj4KPEEgTkFNRT0iX1BfIj48IS0tIC0tPjwvQT48SDI+CjxCPlA8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE1ldGhvZC5odG1sI3BhcmFtQ291bnQiPjxCPnBhcmFtQ291bnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE1ldGhvZC5odG1sIj5BU1RNZXRob2Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjUGFyYW1ldGVyKCkiPjxCPlBhcmFtZXRlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+VGhpcyBtZXRob2QgaGFzIHlldCB0byBiZSBmdWxseSBpbXBsZW1lbnRlZAogYnV0IHdpbGwgYWxsb3cgYXJiaXRyYXJpbHkgbmVzdGVkIG1ldGhvZAogY2FsbHMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCNwYXJhbWV0ZXJUeXBlcyI+PEI+cGFyYW1ldGVyVHlwZXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5NZXRob2RJbmZvLmh0bWwiPkNsYXNzTWFwLk1ldGhvZEluZm88L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjcGFyZW50Ij48Qj5wYXJlbnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZS5odG1sIj48Qj5QYXJzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlLmh0bWwiPlBhcnNlPC9BPi48REQ+UGx1Z2dhYmxlIGRpcmVjdGl2ZSB0aGF0IGhhbmRsZXMgdGhlIDxjb2RlPiNwYXJzZSgpPC9jb2RlPgogc3RhdGVtZW50IGluIFZUTC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNQQVJTRV9ESVJFQ1RJVkVfTUFYREVQVEgiPjxCPlBBUlNFX0RJUkVDVElWRV9NQVhERVBUSDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5NYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBhbGxvd2VkIGZvciB0aGUgI3BhcnNlIGRpcmVjdGl2ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2UuaHRtbCNQYXJzZSgpIj48Qj5QYXJzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZS5odG1sIj5QYXJzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI3BhcnNlKGphdmEuaW8uUmVhZGVyLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cGFyc2UoUmVhZGVyLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlBhcnNlIHRoZSBpbnB1dCBhbmQgcmV0dXJuIHRoZSByb290IG9mCiBBU1Qgbm9kZSBzdHJ1Y3R1cmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sI3BhcnNlKGphdmEuaW8uUmVhZGVyLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cGFyc2UoUmVhZGVyLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1BhcnNlIHRoZSBpbnB1dCBhbmQgcmV0dXJuIHRoZSByb290IG9mCiBBU1Qgbm9kZSBzdHJ1Y3R1cmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI3BhcnNlKGphdmEuaW8uUmVhZGVyLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cGFyc2UoUmVhZGVyLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+UnVudGltZVNpbmdsZXRvbjwvQT4KPEREPlBhcnNlIHRoZSBpbnB1dCBhbmQgcmV0dXJuIHRoZSByb290IG9mCiBBU1Qgbm9kZSBzdHJ1Y3R1cmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjcGFyc2UoamF2YS5pby5SZWFkZXIsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5wYXJzZShSZWFkZXIsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPlBhcnNlIHRoZSBpbnB1dCBhbmQgcmV0dXJuIHRoZSByb290IG9mCiBBU1Qgbm9kZSBzdHJ1Y3R1cmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI3BhcnNlKGphdmEuaW8uUmVhZGVyLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cGFyc2UoUmVhZGVyLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+VGhpcyB3YXMgYWxzbyBhZGRlZCB0byBhbGxvdyBwYXJzZXJzIHRvIGJlCiByZS11c2FibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjcGFyc2UoamF2YS5pby5SZWFkZXIsIGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pIj48Qj5wYXJzZShSZWFkZXIsIFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+UGFyc2UgdGhlIGlucHV0IGFuZCByZXR1cm4gdGhlIHJvb3Qgb2YgdGhlIEFTVCBub2RlIHN0cnVjdHVyZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjcGFyc2UoamF2YS5pby5SZWFkZXIsIGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pIj48Qj5wYXJzZShSZWFkZXIsIFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UGFyc2UgdGhlIGlucHV0IGFuZCByZXR1cm4gdGhlIHJvb3Qgb2YgdGhlIEFTVCBub2RlIHN0cnVjdHVyZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjcGFyc2UoamF2YS5pby5SZWFkZXIsIGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pIj48Qj5wYXJzZShSZWFkZXIsIFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+UGFyc2UgdGhlIGlucHV0IGFuZCByZXR1cm4gdGhlIHJvb3Qgb2YgdGhlIEFTVCBub2RlIHN0cnVjdHVyZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNwYXJzZShqYXZhLmlvLlJlYWRlciwgamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPjxCPnBhcnNlKFJlYWRlciwgU3RyaW5nLCBib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+UGFyc2UgdGhlIGlucHV0IGFuZCByZXR1cm4gdGhlIHJvb3Qgb2YgdGhlIEFTVCBub2RlIHN0cnVjdHVyZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjcGFyc2UoamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQpIj48Qj5wYXJzZShTdHJpbmcsIENvbnRleHQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+UGFyc2UgdGhlIGNvbnRyb2wgdGVtcGxhdGUgYW5kIG1lcmdlIGl0IHdpdGggdGhlIGNvbnRyb2wKIGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjcGFyc2UoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPnBhcnNlKFN0cmluZywgT2JqZWN0LCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sI3BhcnNlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5wYXJzZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5QYXJzZSBhbiBpbnB1dCBhbmQgd3JpdGUgdGhlIG91dHB1dCB0byBhbiBvdXRwdXQgZmlsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjcGFyc2UoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnBhcnNlKFN0cmluZywgU3RyaW5nLCBTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5QYXJzZSBhbiBpbnB1dCBhbmQgd3JpdGUgdGhlIG91dHB1dCB0byBhbiBvdXRwdXQgZmlsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjcGFyc2UoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnBhcnNlKFN0cmluZywgU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+UGFyc2UgYW4gaW5wdXQgYW5kIHdyaXRlIHRoZSBvdXRwdXQgdG8gYW4gb3V0cHV0IGZpbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlRGlyZWN0aXZlRXhjZXB0aW9uLmh0bWwiPjxCPlBhcnNlRGlyZWN0aXZlRXhjZXB0aW9uPC9CPjwvQT4gLSBleGNlcHRpb24gb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlRGlyZWN0aXZlRXhjZXB0aW9uLmh0bWwiPlBhcnNlRGlyZWN0aXZlRXhjZXB0aW9uPC9BPi48REQ+RXhjZXB0aW9uIGZvciAjcGFyc2UoKSBwcm9ibGVtczxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlRGlyZWN0aXZlRXhjZXB0aW9uLmh0bWwjUGFyc2VEaXJlY3RpdmVFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+UGFyc2VEaXJlY3RpdmVFeGNlcHRpb24oU3RyaW5nLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbi5odG1sIj5QYXJzZURpcmVjdGl2ZUV4Y2VwdGlvbjwvQT4KPEREPkNvbnN0cnVjdG9yCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9QYXJzZUVycm9yRXhjZXB0aW9uLmh0bWwiPjxCPlBhcnNlRXJyb3JFeGNlcHRpb248L0I+PC9BPiAtIGV4Y2VwdGlvbiBvcmcuYXBhY2hlLnZlbG9jaXR5LmV4Y2VwdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9QYXJzZUVycm9yRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXJyb3JFeGNlcHRpb248L0E+LjxERD5BcHBsaWNhdGlvbi1sZXZlbCBleGNlcHRpb24gdGhyb3duIHdoZW4gYSByZXNvdXJjZSBvZiBhbnkgdHlwZQogIGhhcyBhIHN5bnRheCBvciBvdGhlciBlcnJvciB3aGljaCBwcmV2ZW50cyBpdCBmcm9tIGJlaW5nIHBhcnNlZC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vUGFyc2VFcnJvckV4Y2VwdGlvbi5odG1sI1BhcnNlRXJyb3JFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPlBhcnNlRXJyb3JFeGNlcHRpb24oU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmV4Y2VwdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9QYXJzZUVycm9yRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXJyb3JFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCI+PEI+UGFyc2VFeGNlcHRpb248L0I+PC9BPiAtIGV4Y2VwdGlvbiBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCI+UGFyc2VFeGNlcHRpb248L0E+LjxERD5UaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gd2hlbiBwYXJzZSBlcnJvcnMgYXJlIGVuY291bnRlcmVkLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlRXhjZXB0aW9uLmh0bWwjUGFyc2VFeGNlcHRpb24oKSI+PEI+UGFyc2VFeGNlcHRpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCI+UGFyc2VFeGNlcHRpb248L0E+CjxERD5UaGUgZm9sbG93aW5nIGNvbnN0cnVjdG9ycyBhcmUgZm9yIHVzZSBieSB5b3UgZm9yIHdoYXRldmVyCiBwdXJwb3NlIHlvdSBjYW4gdGhpbmsgb2YuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlRXhjZXB0aW9uLmh0bWwjUGFyc2VFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPlBhcnNlRXhjZXB0aW9uKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXhjZXB0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlRXhjZXB0aW9uLmh0bWwjUGFyc2VFeGNlcHRpb24ob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5Ub2tlbiwgaW50W11bXSwgamF2YS5sYW5nLlN0cmluZ1tdKSI+PEI+UGFyc2VFeGNlcHRpb24oVG9rZW4sIGludFtdW10sIFN0cmluZ1tdKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCI+UGFyc2VFeGNlcHRpb248L0E+CjxERD5UaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgYnkgdGhlIG1ldGhvZCAiZ2VuZXJhdGVQYXJzZUV4Y2VwdGlvbiIKIGluIHRoZSBnZW5lcmF0ZWQgcGFyc2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNwYXJzZXIiPjxCPnBhcnNlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj48Qj5QYXJzZXI8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPi48REQ+VGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBhIFZlbG9jaXR5CiB0ZW1wbGF0ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNQQVJTRVJfUE9PTF9TSVpFIj48Qj5QQVJTRVJfUE9PTF9TSVpFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuSkpDYWxscy5odG1sIj48Qj5QYXJzZXIuSkpDYWxsczwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5KSkNhbGxzLmh0bWwiPlBhcnNlci5KSkNhbGxzPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLkpKQ2FsbHMuaHRtbCNQYXJzZXIuSkpDYWxscygpIj48Qj5QYXJzZXIuSkpDYWxscygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuSkpDYWxscy5odG1sIj5QYXJzZXIuSkpDYWxsczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNQYXJzZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5DaGFyU3RyZWFtKSI+PEI+UGFyc2VyKENoYXJTdHJlYW0pPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI1BhcnNlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlclRva2VuTWFuYWdlcikiPjxCPlBhcnNlcihQYXJzZXJUb2tlbk1hbmFnZXIpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI1BhcnNlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+UGFyc2VyKFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5UaGlzIGNvbnN0cnVjdG9yIHdhcyBhZGRlZCB0byBhbGxvdyB0aGUgcmUtdXNlIG9mIHBhcnNlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj48Qj5QYXJzZXJDb25zdGFudHM8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjcGFyc2VyUG9vbCI+PEI+cGFyc2VyUG9vbDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlRoZSBSdW50aW1lIHBhcnNlciBwb29sCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCI+PEI+UGFyc2VyVGVzdENhc2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCI+UGFyc2VyVGVzdENhc2U8L0E+LjxERD5Nb3JlIHNwZWNpZmljIHBhcnNlciB0ZXN0cyB3aGVyZSBqdXN0IHRlbXBsYXRpbmcKICBpc24ndCBlbm91Z2guPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9QYXJzZXJUZXN0Q2FzZS5odG1sI1BhcnNlclRlc3RDYXNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5QYXJzZXJUZXN0Q2FzZShTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCI+UGFyc2VyVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPjxCPlBhcnNlclRva2VuTWFuYWdlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNQYXJzZXJUb2tlbk1hbmFnZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5DaGFyU3RyZWFtKSI+PEI+UGFyc2VyVG9rZW5NYW5hZ2VyKENoYXJTdHJlYW0pPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI1BhcnNlclRva2VuTWFuYWdlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLkNoYXJTdHJlYW0sIGludCkiPjxCPlBhcnNlclRva2VuTWFuYWdlcihDaGFyU3RyZWFtLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRyZWVDb25zdGFudHMuaHRtbCI+PEI+UGFyc2VyVHJlZUNvbnN0YW50czwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUcmVlQ29uc3RhbnRzLmh0bWwiPlBhcnNlclRyZWVDb25zdGFudHM8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+PEI+UGFyc2VyVmlzaXRvcjwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sI3BhcnNlVHJlZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnBhcnNlVHJlZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNwYXJzZVRyZWUoamF2YS5sYW5nLlN0cmluZ1tdKSI+PEI+cGFyc2VUcmVlKFN0cmluZ1tdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+cGFyc2VzIHRoZSBtYWNyby4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRmlsZVJlc291cmNlTG9hZGVyLmh0bWwjcGF0aHMiPjxCPnBhdGhzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0ZpbGVSZXNvdXJjZUxvYWRlci5odG1sIj5GaWxlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD5UaGUgcGF0aHMgdG8gc2VhcmNoIGZvciB0ZW1wbGF0ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjcGVla05vZGUoKSI+PEI+cGVla05vZGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCI+SkpUUGFyc2VyU3RhdGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvUHJpbW9yZGlhbExvZ1N5c3RlbS5odG1sI3BlbmRpbmdNZXNzYWdlcyI+PEI+cGVuZGluZ01lc3NhZ2VzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1ByaW1vcmRpYWxMb2dTeXN0ZW0uaHRtbCI+UHJpbW9yZGlhbExvZ1N5c3RlbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0Jhc2VUZXN0Q2FzZS5odG1sI3BlcmwiPjxCPnBlcmw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0Jhc2VUZXN0Q2FzZS5odG1sIj5CYXNlVGVzdENhc2U8L0E+CjxERD51c2VkIGZvciBub21hbGl6YXRpb24gb2Ygb3V0cHV0IGFuZCBjb21wYXJlIGRhdGEKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sI3BlckxpbmVSRXMiPjxCPnBlckxpbmVSRXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb252ZXJ0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sIj5XZWJNYWNybzwvQT4KPEREPlRoZSByZWdleGVzIHRvIHVzZSBmb3IgbGluZSBieSBsaW5lIHN1YnN0aXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvUGVyc29uLmh0bWwiPjxCPlBlcnNvbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9QZXJzb24uaHRtbCI+UGVyc29uPC9BPi48REQ+UnVkaW1lbnRhcnkgY2xhc3MgdXNlZCBpbiB0aGUgdGVzdGJlZCB0byB0ZXN0CiBpbnRyb3NwZWN0aW9uIHdpdGggc3ViY2xhc3NlcyBvZiBhIHBhcnRpY3VsYXIKIGNsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvUGVyc29uLmh0bWwjUGVyc29uKCkiPjxCPlBlcnNvbigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvUGVyc29uLmh0bWwiPlBlcnNvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNQTFVTIj48Qj5QTFVTPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1NpbXBsZVBvb2wuaHRtbCNwb29sIj48Qj5wb29sPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TaW1wbGVQb29sLmh0bWwiPlNpbXBsZVBvb2w8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwjcG9wQ3VycmVudFRlbXBsYXRlTmFtZSgpIj48Qj5wb3BDdXJyZW50VGVtcGxhdGVOYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwiPkludGVybmFsQ29udGV4dEJhc2U8L0E+CjxERD5yZW1vdmUgdGhlIGN1cnJlbnQgdGVtcGxhdGUgbmFtZSBmcm9tIHN0YWNrCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCNwb3BDdXJyZW50VGVtcGxhdGVOYW1lKCkiPjxCPnBvcEN1cnJlbnRUZW1wbGF0ZU5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwiPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjcG9wQ3VycmVudFRlbXBsYXRlTmFtZSgpIj48Qj5wb3BDdXJyZW50VGVtcGxhdGVOYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0Lmh0bWwjcG9wQ3VycmVudFRlbXBsYXRlTmFtZSgpIj48Qj5wb3BDdXJyZW50VGVtcGxhdGVOYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0Lmh0bWwiPkludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dDwvQT4KPEREPnJlbW92ZSB0aGUgY3VycmVudCB0ZW1wbGF0ZSBuYW1lIGZyb20gc3RhY2sKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCNwb3BOb2RlKCkiPjxCPnBvcE5vZGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCI+SkpUUGFyc2VyU3RhdGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI3BvcHVsYXRlSW5pdGlhbENvbnRleHQob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQpIj48Qj5wb3B1bGF0ZUluaXRpYWxDb250ZXh0KENvbnRleHQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uYW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sIj5UZXhlblRhc2s8L0E+CjxERD5QbGFjZSB1c2VmdWwgb2JqZWN0cyBpbnRvIHRoZSBpbml0aWFsIGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5odG1sI3BvcHVsYXRlTWV0aG9kQ2FjaGUoKSI+PEI+cG9wdWxhdGVNZXRob2RDYWNoZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLmh0bWwiPkNsYXNzTWFwPC9BPgo8REQ+UG9wdWxhdGUgdGhlIE1hcCBvZiBkaXJlY3QgaGl0cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9BcnJheUl0ZXJhdG9yLmh0bWwjcG9zIj48Qj5wb3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCI+QXJyYXlJdGVyYXRvcjwvQT4KPEREPlRoZSBjdXJyZW50IHBvc2l0aW9uIGFuZCBzaXplIGluIHRoZSBhcnJheS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjUFJFX0RJUkVDVElWRSI+PEI+UFJFX0RJUkVDVElWRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjcHJldkNoYXJJc0NSIj48Qj5wcmV2Q2hhcklzQ1I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNwcmV2Q2hhcklzTEYiPjxCPnByZXZDaGFySXNMRjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI1ByaW1hcnlFeHByZXNzaW9uKCkiPjxCPlByaW1hcnlFeHByZXNzaW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvUHJpbW9yZGlhbExvZ1N5c3RlbS5odG1sIj48Qj5Qcmltb3JkaWFsTG9nU3lzdGVtPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvUHJpbW9yZGlhbExvZ1N5c3RlbS5odG1sIj5Qcmltb3JkaWFsTG9nU3lzdGVtPC9BPi48REQ+UHJlLWluaXQgbG9nZ2VyLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1ByaW1vcmRpYWxMb2dTeXN0ZW0uaHRtbCNQcmltb3JkaWFsTG9nU3lzdGVtKCkiPjxCPlByaW1vcmRpYWxMb2dTeXN0ZW0oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvUHJpbW9yZGlhbExvZ1N5c3RlbS5odG1sIj5Qcmltb3JkaWFsTG9nU3lzdGVtPC9BPgo8REQ+ZGVmYXVsdCBDVE9SLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9UZW1wbGF0ZS5odG1sI3Byb2Nlc3MoKSI+PEI+cHJvY2VzcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9UZW1wbGF0ZS5odG1sIj5UZW1wbGF0ZTwvQT4KPEREPmdldHMgdGhlIG5hbWVkIHJlc291cmNlIGFzIGEgc3RyZWFtLCBwYXJzZXMgYW5kIGluaXRzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI3Byb2Nlc3MoKSI+PEI+cHJvY2VzcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+VGhpcyBtZXRob2QgaXMgd2hhdCBzdGFydHMgdGhlIHdob2xlIHBhcnNpbmcKIHByb2Nlc3MuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNwcm9jZXNzKCkiPjxCPnByb2Nlc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+UGVyZm9ybSBhbnkgc3Vic2VxdWVudCBwcm9jZXNzaW5nIHRoYXQgbWlnaHQgbmVlZAogdG8gYmUgZG9uZSBieSBhIHJlc291cmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL0NvbnRlbnRSZXNvdXJjZS5odG1sI3Byb2Nlc3MoKSI+PEI+cHJvY2VzcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvQ29udGVudFJlc291cmNlLmh0bWwiPkNvbnRlbnRSZXNvdXJjZTwvQT4KPEREPlB1bGwgaW4gc3RhdGljIGNvbnRlbnQgYW5kIHN0b3JlIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sI3Byb2Nlc3MoamF2YS5pby5GaWxlLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmlvLkZpbGUsIG9yZy5qZG9tLkRvY3VtZW50KSI+PEI+cHJvY2VzcyhGaWxlLCBTdHJpbmcsIEZpbGUsIERvY3VtZW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD5Qcm9jZXNzIGFuIFhNTCBmaWxlIHVzaW5nIFZlbG9jaXR5CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWZTdGF0ZW1lbnQuaHRtbCNwcm9jZXNzKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuUGFyc2VyVmlzaXRvcikiPjxCPnByb2Nlc3MoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgUGFyc2VyVmlzaXRvcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJZlN0YXRlbWVudC5odG1sIj5BU1RJZlN0YXRlbWVudDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sI3Byb2Nlc3NBbmRSZWdpc3RlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSwgamF2YS5sYW5nLlN0cmluZykiPjxCPnByb2Nlc3NBbmRSZWdpc3RlcihSdW50aW1lU2VydmljZXMsIE5vZGUsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9NYWNyby5odG1sIj5NYWNybzwvQT4KPEREPlVzZWQgYnkgUGFyc2VyLmphdmEgdG8gcHJvY2VzcyBWTXMgd2l0aGluZyB0aGUgcGFyc2luZyBwcm9jZXNzCgogIHByb2Nlc3NBbmRSZWdpc3RlcigpIGRvZXNuJ3QgYWN0dWFsbHkgcmVuZGVyIHRoZSBtYWNybyB0byB0aGUgb3V0cHV0CiAgUHJvY2Vzc2VzIHRoZSBtYWNybyBib2R5IGludG8gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIHVzZWQgYnkgdGhlCiAgVmVsb2NpbWFjcm9Qcm94eSBvYmplY3RzLCBhbmQgaWYgbm90IGN1cnJlbnRseSB1c2VkLCBhZGRzIGl0CiAgdG8gdGhlIG1hY3JvIEZhY3RvcnkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNwcm9qZWN0QXR0cmlidXRlIj48Qj5wcm9qZWN0QXR0cmlidXRlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+dGhlIHByb2plY3RGaWxlPSBhdHRyaWJ1dGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNwcm9qZWN0RmlsZSI+PEI+cHJvamVjdEZpbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD50aGUgRmlsZSBmb3IgdGhlIHByb2plY3QueG1sIGZpbGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNwcm9qZWN0RmlsZUxhc3RNb2RpZmllZCI+PEI+cHJvamVjdEZpbGVMYXN0TW9kaWZpZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD5sYXN0IG1vZGlmaWVkIG9mIHRoZSBwcm9qZWN0IGZpbGUgaWYgaXQgZXhpc3RzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvUHJvcGVydGllc1V0aWwuaHRtbCI+PEI+UHJvcGVydGllc1V0aWw8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4udXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvUHJvcGVydGllc1V0aWwuaHRtbCI+UHJvcGVydGllc1V0aWw8L0E+LjxERD5BIHByb3BlcnR5IHV0aWxpdHkgY2xhc3MgZm9yIHRoZSB0ZXhlbiB0ZXh0L2NvZGUgZ2VuZXJhdG9yCiBVc3VhbGx5IHRoaXMgY2xhc3MgaXMgb25seSB1c2VkIGZyb20gYSBWZWxvY2l0eSBjb250ZXh0LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvUHJvcGVydGllc1V0aWwuaHRtbCNQcm9wZXJ0aWVzVXRpbCgpIj48Qj5Qcm9wZXJ0aWVzVXRpbCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4udXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL3V0aWwvUHJvcGVydGllc1V0aWwuaHRtbCI+UHJvcGVydGllc1V0aWw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Qcm9wZXJ0eUV4ZWN1dG9yLmh0bWwiPjxCPlByb3BlcnR5RXhlY3V0b3I8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUHJvcGVydHlFeGVjdXRvci5odG1sIj5Qcm9wZXJ0eUV4ZWN1dG9yPC9BPi48REQ+UmV0dXJuZWQgdGhlIHZhbHVlIG9mIG9iamVjdCBwcm9wZXJ0eSB3aGVuIGV4ZWN1dGVkLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUHJvcGVydHlFeGVjdXRvci5odG1sI1Byb3BlcnR5RXhlY3V0b3Iob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLlJ1bnRpbWVMb2dnZXIsIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLkludHJvc3BlY3RvciwgamF2YS5sYW5nLkNsYXNzLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+UHJvcGVydHlFeGVjdXRvcihSdW50aW1lTG9nZ2VyLCBJbnRyb3NwZWN0b3IsIENsYXNzLCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUHJvcGVydHlFeGVjdXRvci5odG1sIj5Qcm9wZXJ0eUV4ZWN1dG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sI3Byb3BzIj48Qj5wcm9wczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+RGVmYXVsdCBwcm9wZXJ0aWVzIHVzZWQgYnkgdGV4ZW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sI3Byb3ZpZGVyIj48Qj5wcm92aWRlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sIj5UZW1wbGF0ZVRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNwcm94eUFyZ0hhc2giPjxCPnByb3h5QXJnSGFzaDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNQVUJfU1RBVF9TVFJJTkciPjxCPlBVQl9TVEFUX1NUUklORzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwjcHVzaEN1cnJlbnRUZW1wbGF0ZU5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnB1c2hDdXJyZW50VGVtcGxhdGVOYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwiPkludGVybmFsQ29udGV4dEJhc2U8L0E+CjxERD5zZXQgdGhlIGN1cnJlbnQgdGVtcGxhdGUgbmFtZSBvbiB0b3Agb2Ygc3RhY2sKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI3B1c2hDdXJyZW50VGVtcGxhdGVOYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5wdXNoQ3VycmVudFRlbXBsYXRlTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCNwdXNoQ3VycmVudFRlbXBsYXRlTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cHVzaEN1cnJlbnRUZW1wbGF0ZU5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sIj5WTUNvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQuaHRtbCNwdXNoQ3VycmVudFRlbXBsYXRlTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cHVzaEN1cnJlbnRUZW1wbGF0ZU5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQuaHRtbCI+SW50ZXJuYWxIb3VzZWtlZXBpbmdDb250ZXh0PC9BPgo8REQ+c2V0IHRoZSBjdXJyZW50IHRlbXBsYXRlIG5hbWUgb24gdG9wIG9mIHN0YWNrCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjcHVzaE5vZGUob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUpIj48Qj5wdXNoTm9kZShOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvSkpUUGFyc2VyU3RhdGUuaHRtbCI+SkpUUGFyc2VyU3RhdGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TaW1wbGVQb29sLmh0bWwjcHV0KGphdmEubGFuZy5PYmplY3QpIj48Qj5wdXQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1NpbXBsZVBvb2wuaHRtbCI+U2ltcGxlUG9vbDwvQT4KPEREPkFkZCB0aGUgb2JqZWN0IHRvIHRoZSBwb29sLCBzaWxlbnQgbm90aGluZyBpZiB0aGUgcG9vbCBpcyBmdWxsCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCNwdXQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLlJlc291cmNlKSI+PEI+cHV0KE9iamVjdCwgUmVzb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCI+UmVzb3VyY2VDYWNoZUltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlLmh0bWwjcHV0KGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPnB1dChPYmplY3QsIFJlc291cmNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlLmh0bWwiPlJlc291cmNlQ2FjaGU8L0E+CjxERD5zdG9yZXMgYSBSZXNvdXJjZSBpbiB0aGUgY2FjaGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCNwdXQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnB1dChTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCI+QWJzdHJhY3RDb250ZXh0PC9BPgo8REQ+QWRkcyBhIG5hbWUvdmFsdWUgcGFpciB0byB0aGUgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sI3B1dChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cHV0KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwiPkludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvQ29udGV4dC5odG1sI3B1dChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cHV0KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9Db250ZXh0Lmh0bWwiPkNvbnRleHQ8L0E+CjxERD5BZGRzIGEgbmFtZS92YWx1ZSBwYWlyIHRvIHRoZSBjb250ZXh0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI3B1dChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cHV0KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sIj5WTUNvbnRleHQ8L0E+CjxERD5JbXBsIG9mIHRoZSBDb250ZXh0LnB1dCgpIG1ldGhvZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNwdXQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnB1dChTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+VGVzdCB0aGUgYWJpbGl0eSBvZiB2ZWwgdG8gdXNlIGEgcHV0KGtleSkKIG1ldGhvZCBmb3IgYW55IG9iamVjdCB0eXBlLCBub3QganVzdCBvbmUKIHRoYXQgaW1wbGVtZW50cyB0aGUgTWFwIGludGVyZmFjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sI3B1dEtleSI+PEI+cHV0S2V5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsLmh0bWwiPlViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbDwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9RXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5RPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNRVUlFVF9SRUZFUkVOQ0UiPjxCPlFVSUVUX1JFRkVSRU5DRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBOQU1FPSJfUl8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+UjwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1JCUkFDS0VUIj48Qj5SQlJBQ0tFVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjUkNVUkxZIj48Qj5SQ1VSTFk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI3JlYWRDaGFyKCkiPjxCPnJlYWRDaGFyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvQ2hhclN0cmVhbS5odG1sI3JlYWRDaGFyKCkiPjxCPnJlYWRDaGFyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9DaGFyU3RyZWFtLmh0bWwiPkNoYXJTdHJlYW08L0E+CjxERD5SZXR1cm5zIHRoZSBuZXh0IGNoYXJhY3RlciBmcm9tIHRoZSBzZWxlY3RlZCBpbnB1dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwjcmVhZERhdGEoamF2YS5zcWwuQ29ubmVjdGlvbiwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPnJlYWREYXRhKENvbm5lY3Rpb24sIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4KPEREPlJlYWRzIHRoZSBkYXRhIGZyb20gdGhlIGRhdGFzb3VyY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sI3JlYWRMYXN0TW9kaWZpZWQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLlJlc291cmNlLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cmVhZExhc3RNb2RpZmllZChSZXNvdXJjZSwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4KPEREPkZldGNoZXMgdGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIHJlc291cmNlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLlByb3BlcnRpZXNSZWFkZXIuaHRtbCNyZWFkUHJvcGVydHkoKSI+PEI+cmVhZFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzUmVhZGVyLmh0bWwiPkNvbmZpZ3VyYXRpb24uUHJvcGVydGllc1JlYWRlcjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JlYWQgYSBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2UuaHRtbCNyZWFkeSI+PEI+cmVhZHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvUGFyc2UuaHRtbCI+UGFyc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sI3JlYWxseXVudG91Y2hhYmxlKCkiPjxCPnJlYWxseXVudG91Y2hhYmxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI3JlY3ljbGUoamF2YS5pby5Xcml0ZXIpIj48Qj5yZWN5Y2xlKFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+cmVzZXRzIHRoaXMgY2xhc3Mgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1JFRkVSRU5DRSI+PEI+UkVGRVJFTkNFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNSRUZFUkVOQ0VfVEVSTUlOQVRPUiI+PEI+UkVGRVJFTkNFX1RFUk1JTkFUT1I8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwjUkVGRVJFTkNFX1ZBTFVFIj48Qj5SRUZFUkVOQ0VfVkFMVUU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCI+RXZlbnRIYW5kbGluZ1Rlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI1JlZmVyZW5jZSgpIj48Qj5SZWZlcmVuY2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2V4Y2VwdGlvbi9SZWZlcmVuY2VFeGNlcHRpb24uaHRtbCI+PEI+UmVmZXJlbmNlRXhjZXB0aW9uPC9CPjwvQT4gLSBleGNlcHRpb24gb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmV4Y2VwdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZXhjZXB0aW9uL1JlZmVyZW5jZUV4Y2VwdGlvbi5odG1sIj5SZWZlcmVuY2VFeGNlcHRpb248L0E+LjxERD5FeGNlcHRpb24gdGhyb3duIHdoZW4gYSBiYWQgcmVmZXJlbmNlIGlzIGZvdW5kLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZXhjZXB0aW9uL1JlZmVyZW5jZUV4Y2VwdGlvbi5odG1sI1JlZmVyZW5jZUV4Y2VwdGlvbihqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPlJlZmVyZW5jZUV4Y2VwdGlvbihTdHJpbmcsIE5vZGUpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2V4Y2VwdGlvbi9SZWZlcmVuY2VFeGNlcHRpb24uaHRtbCI+UmVmZXJlbmNlRXhjZXB0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9SZWZlcmVuY2VJbnNlcnRpb25FdmVudEhhbmRsZXIuaHRtbCNyZWZlcmVuY2VJbnNlcnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnJlZmVyZW5jZUluc2VydChTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L1JlZmVyZW5jZUluc2VydGlvbkV2ZW50SGFuZGxlci5odG1sIj5SZWZlcmVuY2VJbnNlcnRpb25FdmVudEhhbmRsZXI8L0E+CjxERD5BIGNhbGwtYmFjayB3aGljaCBpcyBleGVjdXRlZCBkdXJpbmcgVmVsb2NpdHkgbWVyZ2UgYmVmb3JlIGEKIHJlZmVyZW5jZSB2YWx1ZSBpcyBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgc3RyZWFtLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRDYXJ0cmlkZ2UuaHRtbCNyZWZlcmVuY2VJbnNlcnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnJlZmVyZW5jZUluc2VydChTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuZXZlbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvRXZlbnRDYXJ0cmlkZ2UuaHRtbCI+RXZlbnRDYXJ0cmlkZ2U8L0E+CjxERD5JbXBsZW1lbnRhdGlvbiBvZiBSZWZlcmVuY2VJbnNlcnRpb25FdmVudEhhbmRsZXIgbWV0aG9kCiAgPGNvZGU+cmVmZXJlbmNlSW5zZXJ0KCk8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sI3JlZmVyZW5jZUluc2VydChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cmVmZXJlbmNlSW5zZXJ0KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sIj5FdmVudEhhbmRsaW5nVGVzdENhc2U8L0E+CjxERD5FdmVudCBoYW5kbGVyIGZvciB3aGVuIGEgcmVmZXJlbmNlIGlzIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvbWlzYy9UZXN0Lmh0bWwjcmVmZXJlbmNlSW5zZXJ0KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QpIj48Qj5yZWZlcmVuY2VJbnNlcnQoU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5taXNjLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9taXNjL1Rlc3QuaHRtbCI+VGVzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvUmVmZXJlbmNlSW5zZXJ0aW9uRXZlbnRIYW5kbGVyLmh0bWwiPjxCPlJlZmVyZW5jZUluc2VydGlvbkV2ZW50SGFuZGxlcjwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L1JlZmVyZW5jZUluc2VydGlvbkV2ZW50SGFuZGxlci5odG1sIj5SZWZlcmVuY2VJbnNlcnRpb25FdmVudEhhbmRsZXI8L0E+LjxERD5SZWZlcmVuY2UgJ1N0cmVhbSBpbnNlcnRpb24nIGV2ZW50IGhhbmRsZXIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL01ldGhvZEludm9jYXRpb25FeGNlcHRpb24uaHRtbCNyZWZlcmVuY2VOYW1lIj48Qj5yZWZlcmVuY2VOYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbi5odG1sIj5NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjcmVmZXJlbmNlVHlwZSI+PEI+cmVmZXJlbmNlVHlwZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwiPkFTVFJlZmVyZW5jZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNSRUZNT0QyIj48Qj5SRUZNT0QyPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCNSRUZNT0QyX1JQQVJFTiI+PEI+UkVGTU9EMl9SUEFSRU48L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1JFRk1PRElGSUVSIj48Qj5SRUZNT0RJRklFUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjcmVmcmVzaFJlc291cmNlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSwgamF2YS5sYW5nLlN0cmluZykiPjxCPnJlZnJlc2hSZXNvdXJjZShSZXNvdXJjZSwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4KPEREPlRha2VzIGFuIGV4aXN0aW5nIHJlc291cmNlLCBhbmQgJ3JlZnJlc2hlcycgaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwjcmVnaXN0ZXJGcm9tTGliIj48Qj5yZWdpc3RlckZyb21MaWI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjUmVJbml0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuQ2hhclN0cmVhbSkiPjxCPlJlSW5pdChDaGFyU3RyZWFtKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNSZUluaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5DaGFyU3RyZWFtKSI+PEI+UmVJbml0KENoYXJTdHJlYW0pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI1JlSW5pdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLkNoYXJTdHJlYW0sIGludCkiPjxCPlJlSW5pdChDaGFyU3RyZWFtLCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI1JlSW5pdChqYXZhLmlvLklucHV0U3RyZWFtLCBpbnQsIGludCkiPjxCPlJlSW5pdChJbnB1dFN0cmVhbSwgaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI1JlSW5pdChqYXZhLmlvLklucHV0U3RyZWFtLCBpbnQsIGludCwgaW50KSI+PEI+UmVJbml0KElucHV0U3RyZWFtLCBpbnQsIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNSZUluaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5QYXJzZXJUb2tlbk1hbmFnZXIpIj48Qj5SZUluaXQoUGFyc2VyVG9rZW5NYW5hZ2VyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNSZUluaXQoamF2YS5pby5SZWFkZXIsIGludCwgaW50KSI+PEI+UmVJbml0KFJlYWRlciwgaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sI1JlSW5pdChqYXZhLmlvLlJlYWRlciwgaW50LCBpbnQsIGludCkiPjxCPlJlSW5pdChSZWFkZXIsIGludCwgaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI1JlSW5pdFJvdW5kcygpIj48Qj5SZUluaXRSb3VuZHMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCNSZWxhdGlvbmFsRXhwcmVzc2lvbigpIj48Qj5SZWxhdGlvbmFsRXhwcmVzc2lvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvRW51bWVyYXRpb25JdGVyYXRvci5odG1sI3JlbW92ZSgpIj48Qj5yZW1vdmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0VudW1lcmF0aW9uSXRlcmF0b3IuaHRtbCI+RW51bWVyYXRpb25JdGVyYXRvcjwvQT4KPEREPlVuaW1wbGVtZW50ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvQXJyYXlJdGVyYXRvci5odG1sI3JlbW92ZSgpIj48Qj5yZW1vdmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCI+QXJyYXlJdGVyYXRvcjwvQT4KPEREPk5vIG9wLS1tZXJlbHkgYWRkZWQgdG8gc2F0aWZ5IHRoZSA8Y29kZT5JdGVyYXRvcjwvY29kZT4gaW50ZXJmYWNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNyZW1vdmUoaW50KSI+PEI+cmVtb3ZlKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjcmVtb3ZlKGphdmEubGFuZy5PYmplY3QpIj48Qj5yZW1vdmUoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0Fic3RyYWN0Q29udGV4dC5odG1sI3JlbW92ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cmVtb3ZlKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9BYnN0cmFjdENvbnRleHQuaHRtbCI+QWJzdHJhY3RDb250ZXh0PC9BPgo8REQ+UmVtb3ZlcyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGZyb20gdGhlIGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCNyZW1vdmUoamF2YS5sYW5nLk9iamVjdCkiPjxCPnJlbW92ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvSW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGwuaHRtbCI+SW50ZXJuYWxDb250ZXh0QWRhcHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9Db250ZXh0Lmh0bWwjcmVtb3ZlKGphdmEubGFuZy5PYmplY3QpIj48Qj5yZW1vdmUoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9Db250ZXh0Lmh0bWwiPkNvbnRleHQ8L0E+CjxERD5SZW1vdmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCNyZW1vdmUoamF2YS5sYW5nLk9iamVjdCkiPjxCPnJlbW92ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPmltcGwgYmFkbHkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlSW1wbC5odG1sI3JlbW92ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cmVtb3ZlKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlSW1wbC5odG1sIj5SZXNvdXJjZUNhY2hlSW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGUuaHRtbCNyZW1vdmUoamF2YS5sYW5nLk9iamVjdCkiPjxCPnJlbW92ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGUuaHRtbCI+UmVzb3VyY2VDYWNoZTwvQT4KPEREPnJlbW92ZXMgYSBSZXNvdXJjZSBmcm9tIHRoZSBjYWNoZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNyZW1vdmVBbGwoamF2YS51dGlsLkNvbGxlY3Rpb24pIj48Qj5yZW1vdmVBbGwoQ29sbGVjdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sI3JlbW92ZUFuZEh1bXAoamF2YS5sYW5nLlN0cmluZykiPjxCPnJlbW92ZUFuZEh1bXAoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sIj5TdHJpbmdVdGlsczwvQT4KPEREPiAKICAnQ2FtZWxzIEh1bXAnIHJlcGxhY2VtZW50IG9mIHVuZGVyc2NvcmVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjcmVtb3ZlQW5kSHVtcChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cmVtb3ZlQW5kSHVtcChTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD4KICdDYW1lbHMgSHVtcCcgcmVwbGFjZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNyZW1vdmVBdHRyaWJ1dGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnJlbW92ZUF0dHJpYnV0ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwjcmVtb3ZlRXZlbnRIYW5kbGVyKG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LkV2ZW50SGFuZGxlcikiPjxCPnJlbW92ZUV2ZW50SGFuZGxlcihFdmVudEhhbmRsZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwiPkV2ZW50Q2FydHJpZGdlPC9BPgo8REQ+UmVtb3ZlcyBhbiBldmVudCBoYW5kbGVyKHMpIGZyb20gdGhlIENhcnRyaWRnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sI3JlbW92ZVVuZGVyU2NvcmVzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5yZW1vdmVVbmRlclNjb3JlcyhTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwiPlN0cmluZ1V0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHRoZSBvcmcuYXBhY2hlLmNvbW1vbnMudXRpbC5TdHJpbmdVdGlscyBjbGFzcwogaW5zdGVhZC4gIFVzaW5nIGl0cyBmaXJzdExldHRlckNhcHMoKSBtZXRob2QgaW4gY29uanVuY3Rpb24KIHdpdGggYSBTdHJpbmdUb2tlbml6ZXIgd2lsbCBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdC48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI3JlbmRlcihvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgamF2YS5pby5Xcml0ZXIpIj48Qj5yZW5kZXIoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgV3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCI+U2ltcGxlTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VJZlN0YXRlbWVudC5odG1sI3JlbmRlcihvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgamF2YS5pby5Xcml0ZXIpIj48Qj5yZW5kZXIoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgV3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVsc2VJZlN0YXRlbWVudC5odG1sIj5BU1RFbHNlSWZTdGF0ZW1lbnQ8L0E+CjxERD5yZW5kZXJzIHRoZSBibG9jawo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZWREaXJlY3RpdmUuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFc2NhcGVkRGlyZWN0aXZlLmh0bWwiPkFTVEVzY2FwZWREaXJlY3RpdmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXJlY3RpdmUuaHRtbCI+QVNURGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjcmVuZGVyKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmlvLldyaXRlcikiPjxCPnJlbmRlcihJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBXcml0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwiPkFTVFJlZmVyZW5jZTwvQT4KPEREPmdldHMgdGhlIHZhbHVlIG9mIHRoZSByZWZlcmVuY2UgYW5kIG91dHB1dHMgaXQgdG8gdGhlCiAgd3JpdGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sI3JlbmRlcihvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgamF2YS5pby5Xcml0ZXIpIj48Qj5yZW5kZXIoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgV3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sIj5BU1RFc2NhcGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RDb21tZW50Lmh0bWwjcmVuZGVyKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmlvLldyaXRlcikiPjxCPnJlbmRlcihJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBXcml0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQ29tbWVudC5odG1sIj5BU1RDb21tZW50PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUQmxvY2suaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RCbG9jay5odG1sIj5BU1RCbG9jazwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSWZTdGF0ZW1lbnQuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJZlN0YXRlbWVudC5odG1sIj5BU1RJZlN0YXRlbWVudDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRleHQuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUZXh0Lmh0bWwiPkFTVFRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCI+QVNUU2V0RGlyZWN0aXZlPC9BPgo8REQ+cHV0cyB0aGUgdmFsdWUgb2YgdGhlIFJIUyBpbnRvIHRoZSBjb250ZXh0IHVuZGVyIHRoZSBrZXkgb2YgdGhlIExIUwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPnJlbmRlcihJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBXcml0ZXIsIE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9EaXJlY3RpdmUuaHRtbCI+RGlyZWN0aXZlPC9BPgo8REQ+SG93IHRoaXMgZGlyZWN0aXZlIGlzIHRvIGJlIHJlbmRlcmVkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0ZvcmVhY2guaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPnJlbmRlcihJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBXcml0ZXIsIE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwiPkZvcmVhY2g8L0E+CjxERD5yZW5kZXJzIHRoZSAjZm9yZWFjaCgpIGJsb2NrCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNyZW5kZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEuaW8uV3JpdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSkiPjxCPnJlbmRlcihJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBXcml0ZXIsIE5vZGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD5SZW5kZXJzIHRoZSBtYWNybyB1c2luZyB0aGUgY29udGV4dAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9QYXJzZS5odG1sI3JlbmRlcihvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgamF2YS5pby5Xcml0ZXIsIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5Ob2RlKSI+PEI+cmVuZGVyKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFdyaXRlciwgTm9kZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1BhcnNlLmh0bWwiPlBhcnNlPC9BPgo8REQ+aXRlcmF0ZXMgdGhyb3VnaCB0aGUgYXJndW1lbnQgbGlzdCBhbmQgcmVuZGVycyBldmVyeQogIGFyZ3VtZW50IHRoYXQgaXMgYXBwcm9wcmlhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL01hY3JvLmh0bWwjcmVuZGVyKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmlvLldyaXRlciwgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUpIj48Qj5yZW5kZXIoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgV3JpdGVyLCBOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTWFjcm8uaHRtbCI+TWFjcm88L0E+CjxERD5yZW5kZXIoKSBkb2Vzbid0IGRvIGFueXRoaW5nIGluIHRoZSBmaW5hbCBvdXRwdXQgcmVuZGVyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9MaXRlcmFsLmh0bWwjcmVuZGVyKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmlvLldyaXRlciwgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUpIj48Qj5yZW5kZXIoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgV3JpdGVyLCBOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvTGl0ZXJhbC5odG1sIj5MaXRlcmFsPC9BPgo8REQ+VGhyb3cgdGhlIGxpdGVyYWwgcmVuZGl0aW9uIG9mIHRoZSBibG9jayBiZXR3ZWVuCiAjbGl0ZXJhbCgpLyNlbmQgaW50byB0aGUgd3JpdGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9JbmNsdWRlLmh0bWwjcmVuZGVyKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmlvLldyaXRlciwgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUpIj48Qj5yZW5kZXIoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgV3JpdGVyLCBOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvSW5jbHVkZS5odG1sIj5JbmNsdWRlPC9BPgo8REQ+aXRlcmF0ZXMgdGhyb3VnaCB0aGUgYXJndW1lbnQgbGlzdCBhbmQgcmVuZGVycyBldmVyeQogIGFyZ3VtZW50IHRoYXQgaXMgYXBwcm9wcmlhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0luY2x1ZGUuaHRtbCNyZW5kZXJPdXRwdXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLk5vZGUsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBqYXZhLmlvLldyaXRlcikiPjxCPnJlbmRlck91dHB1dChOb2RlLCBJbnRlcm5hbENvbnRleHRBZGFwdGVyLCBXcml0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9JbmNsdWRlLmh0bWwiPkluY2x1ZGU8L0E+CjxERD5kb2VzIHRoZSBhY3R1YWwgcmVuZGVyaW5nIG9mIHRoZSBpbmNsdWRlZCBmaWxlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjcmVwbGFjZUFsbG93ZWQiPjxCPnJlcGxhY2VBbGxvd2VkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPgo8REQ+ZGV0ZXJtaW5lcyBpZiByZXBsYWNlbWVudCBvZiBnbG9iYWwgVk1zIGFyZSBhbGxvd2VkCiAgY29udHJvbGxlZCBieSAgVk1fUEVSTV9BTExPV19JTkxJTkVfUkVQTEFDRV9HTE9CQUwKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNSRVFVRVNUIj48Qj5SRVFVRVNUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuc2VydmxldC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwiPlZlbG9jaXR5U2VydmxldDwvQT4KPEREPlRoZSBjb250ZXh0IGtleSBmb3IgdGhlIEhUVFAgcmVxdWVzdCBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjcmVxdWVzdENsZWFudXAoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UsIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0KSI+PEI+cmVxdWVzdENsZWFudXAoSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlLCBDb250ZXh0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5BIGNsZWFudXAgcm91dGluZSB3aGljaCBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiB0aGUgPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sI2RvUmVxdWVzdChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxDT0RFPlZlbG9jaXR5U2VydmxldC5kb1JlcXVlc3QoSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQ09ERT48L0E+CiAgcHJvY2Vzc2luZyBzZXF1ZW5jZSwgYWxsb3dpbmcgYSBkZXJpdmVkIGNsYXNzIHRvIGRvIHJlc291cmNlCiAgY2xlYW51cCBvciBvdGhlciBlbmQgb2YgcHJvY2VzcyBjeWNsZSB0YXNrcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI3JlcXVpcmVzQ2hlY2tpbmcoKSI+PEI+cmVxdWlyZXNDaGVja2luZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD5JcyBpdCB0aW1lIHRvIGNoZWNrIHRvIHNlZSBpZiB0aGUgcmVzb3VyY2UKIHNvdXJjZSBoYXMgYmVlbiB1cGRhdGVkPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sI3Jlc2V0KCkiPjxCPnJlc2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI3Jlc2V0KCkiPjxCPnJlc2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj48Qj5SZXNvdXJjZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4uPEREPlRoaXMgY2xhc3MgcmVwcmVzZW50IGEgZ2VuZXJhbCB0ZXh0IHJlc291cmNlIHRoYXQKIG1heSBoYXZlIGJlZW4gcmV0cmlldmVkIGZyb20gYW55IG51bWJlciBvZiBwb3NzaWJsZQogc291cmNlcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNSRVNPVVJDRV9DT05URU5UIj48Qj5SRVNPVVJDRV9DT05URU5UPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9BPgo8REQ+QSBzdGF0aWMgY29udGVudCByZXNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCNSRVNPVVJDRV9DT05URU5UIj48Qj5SRVNPVVJDRV9DT05URU5UPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlci5odG1sIj5SZXNvdXJjZU1hbmFnZXI8L0E+CjxERD5BIHN0YXRpYyBjb250ZW50IHJlc291cmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNSRVNPVVJDRV9MT0FERVIiPjxCPlJFU09VUkNFX0xPQURFUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5LZXkgdXNlZCB0byByZXRyaWV2ZSB0aGUgbmFtZXMgb2YgdGhlIHJlc291cmNlIGxvYWRlcnMKIHRvIGJlIHVzZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI1JFU09VUkNFX0xPQURFUl9JREVOVElGSUVSIj48Qj5SRVNPVVJDRV9MT0FERVJfSURFTlRJRklFUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4KPEREPnRva2VuIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGxvYWRlciBpbnRlcm5hbGx5CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1JFU09VUkNFX01BTkFHRVJfQ0FDSEVfQ0xBU1MiPjxCPlJFU09VUkNFX01BTkFHRVJfQ0FDSEVfQ0xBU1M8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1JFU09VUkNFX01BTkFHRVJfQ0xBU1MiPjxCPlJFU09VUkNFX01BTkFHRVJfQ0xBU1M8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1JFU09VUkNFX01BTkFHRVJfTE9HV0hFTkZPVU5EIj48Qj5SRVNPVVJDRV9NQU5BR0VSX0xPR1dIRU5GT1VORDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5jb250cm9scyBpZiB0aGUgZmluZGluZyBvZiBhIHJlc291cmNlIGlzIGxvZ2dlZAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNSRVNPVVJDRV9URU1QTEFURSI+PEI+UkVTT1VSQ0VfVEVNUExBVEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwiPlJlc291cmNlTWFuYWdlckltcGw8L0E+CjxERD5BIHRlbXBsYXRlIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCNSRVNPVVJDRV9URU1QTEFURSI+PEI+UkVTT1VSQ0VfVEVNUExBVEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VyLmh0bWwiPlJlc291cmNlTWFuYWdlcjwvQT4KPEREPkEgdGVtcGxhdGUgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjUmVzb3VyY2UoKSI+PEI+UmVzb3VyY2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGUuaHRtbCI+PEI+UmVzb3VyY2VDYWNoZTwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZS5odG1sIj5SZXNvdXJjZUNhY2hlPC9BPi48REQ+SW50ZXJmYWNlIHRoYXQgZGVmaW5lcyB0aGUgc2hhcGUgb2YgYSBwbHVnZ2FibGUgcmVzb3VyY2UgY2FjaGUKICBmb3IgdGhlIGluY2x1ZGVkIFJlc291cmNlTWFuYWdlcjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCI+PEI+UmVzb3VyY2VDYWNoZUltcGw8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCI+UmVzb3VyY2VDYWNoZUltcGw8L0E+LjxERD5EZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSByZXNvdXJjZSBjYWNoZSBmb3IgdGhlIGRlZmF1bHQKIFJlc291cmNlTWFuYWdlci48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGVJbXBsLmh0bWwjUmVzb3VyY2VDYWNoZUltcGwoKSI+PEI+UmVzb3VyY2VDYWNoZUltcGwoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlQ2FjaGVJbXBsLmh0bWwiPlJlc291cmNlQ2FjaGVJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI3Jlc291cmNlRXhpc3RzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5yZXNvdXJjZUV4aXN0cyhTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPkRldGVybWluZXMgd2hldGhlciBhIHJlc291cmNlIGlzIGFjY2Vzc2FibGUgdmlhIHRoZQogY3VycmVudGx5IGNvbmZpZ3VyZWQgcmVzb3VyY2UgbG9hZGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUZhY3RvcnkuaHRtbCI+PEI+UmVzb3VyY2VGYWN0b3J5PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlRmFjdG9yeS5odG1sIj5SZXNvdXJjZUZhY3Rvcnk8L0E+LjxERD5DbGFzcyByZXNwb25zaWJsZSBmb3IgaW5zdGFudGlhdGluZyA8Y29kZT5SZXNvdXJjZTwvY29kZT4gb2JqZWN0cywKIGdpdmVuIG5hbWUgYW5kIHR5cGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUZhY3RvcnkuaHRtbCNSZXNvdXJjZUZhY3RvcnkoKSI+PEI+UmVzb3VyY2VGYWN0b3J5KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUZhY3RvcnkuaHRtbCI+UmVzb3VyY2VGYWN0b3J5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNyZXNvdXJjZUxvYWRlciI+PEI+cmVzb3VyY2VMb2FkZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+VGhlIHRlbXBsYXRlIGxvYWRlciB0aGF0IGluaXRpYWxseSBsb2FkZWQgdGhlIGlucHV0CiBzdHJlYW0gZm9yIHRoaXMgdGVtcGxhdGUsIGFuZCBrbm93cyBob3cgdG8gY2hlY2sgdGhlCiBzb3VyY2Ugb2YgdGhlIGlucHV0IHN0cmVhbSBmb3IgbW9kaWZpY2F0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sIj48Qj5SZXNvdXJjZUxvYWRlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwiPlJlc291cmNlTG9hZGVyPC9BPi48REQ+VGhpcyBpcyBhYnN0cmFjdCBjbGFzcyB0aGUgYWxsIHRleHQgcmVzb3VyY2UgbG9hZGVycyBzaG91bGQKIGV4dGVuZC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5odG1sI1Jlc291cmNlTG9hZGVyKCkiPjxCPlJlc291cmNlTG9hZGVyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwiPlJlc291cmNlTG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyRmFjdG9yeS5odG1sIj48Qj5SZXNvdXJjZUxvYWRlckZhY3Rvcnk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9SZXNvdXJjZUxvYWRlckZhY3RvcnkuaHRtbCI+UmVzb3VyY2VMb2FkZXJGYWN0b3J5PC9BPi48REQ+RmFjdG9yeSB0byBncmFiIGEgdGVtcGxhdGUgbG9hZGVyLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyRmFjdG9yeS5odG1sI1Jlc291cmNlTG9hZGVyRmFjdG9yeSgpIj48Qj5SZXNvdXJjZUxvYWRlckZhY3RvcnkoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJGYWN0b3J5Lmh0bWwiPlJlc291cmNlTG9hZGVyRmFjdG9yeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNyZXNvdXJjZUxvYWRlckluaXRpYWxpemVyc0FjdGl2ZSI+PEI+cmVzb3VyY2VMb2FkZXJJbml0aWFsaXplcnNBY3RpdmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4KPEREPkVhY2ggbG9hZGVyIG5lZWRzIGEgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yCiBpdHMgaW5pdGlhbGl6YXRpb24sIHRoaXMgZmxhZ3Mga2VlcHMgdHJhY2sgb2Ygd2hldGhlcgogb3Igbm90IHRoZSBjb25maWd1cmF0aW9uIG9iamVjdHMgaGF2ZSBiZWVuIGNyZWF0ZWQKIGZvciB0aGUgcmVzb3VyY2UgbG9hZGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjcmVzb3VyY2VMb2FkZXJzIj48Qj5yZXNvdXJjZUxvYWRlcnM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4KPEREPlRoZSBMaXN0IG9mIHRlbXBsYXRlTG9hZGVycyB0aGF0IHRoZSBSdW50aW1lIHdpbGwKIHVzZSB0byBsb2NhdGUgdGhlIElucHV0U3RyZWFtIHNvdXJjZSBvZiBhIHRlbXBsYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI3Jlc291cmNlTWFuYWdlciI+PEI+cmVzb3VyY2VNYW5hZ2VyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VyLmh0bWwiPjxCPlJlc291cmNlTWFuYWdlcjwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VyLmh0bWwiPlJlc291cmNlTWFuYWdlcjwvQT4uPEREPkNsYXNzIHRvIG1hbmFnZSB0aGUgdGV4dCByZXNvdXJjZSBmb3IgdGhlIFZlbG9jaXR5CiBSdW50aW1lLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIj48Qj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4uPEREPkNsYXNzIHRvIG1hbmFnZSB0aGUgdGV4dCByZXNvdXJjZSBmb3IgdGhlIFZlbG9jaXR5CiBSdW50aW1lLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI1Jlc291cmNlTWFuYWdlckltcGwoKSI+PEI+UmVzb3VyY2VNYW5hZ2VySW1wbCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uLmh0bWwiPjxCPlJlc291cmNlTm90Rm91bmRFeGNlcHRpb248L0I+PC9BPiAtIGV4Y2VwdGlvbiBvcmcuYXBhY2hlLnZlbG9jaXR5LmV4Y2VwdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uLmh0bWwiPlJlc291cmNlTm90Rm91bmRFeGNlcHRpb248L0E+LjxERD5BcHBsaWNhdGlvbi1sZXZlbCBleGNlcHRpb24gdGhyb3duIHdoZW4gYSByZXNvdXJjZSBvZiBhbnkgdHlwZQogIGlzbid0IGZvdW5kIGJ5IHRoZSBWZWxvY2l0eSBlbmdpbmUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24uaHRtbCNSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uKGphdmEubGFuZy5TdHJpbmcpIj48Qj5SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbi5odG1sIj5SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjUkVTUE9OU0UiPjxCPlJFU1BPTlNFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuc2VydmxldC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwiPlZlbG9jaXR5U2VydmxldDwvQT4KPEREPlRoZSBjb250ZXh0IGtleSBmb3IgdGhlIEhUVFAgcmVzcG9uc2Ugb2JqZWN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwjcmVzdWx0Ij48Qj5yZXN1bHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0QmFzZS5odG1sI1JFU1VMVF9ESVIiPjxCPlJFU1VMVF9ESVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0QmFzZS5odG1sIj5UZW1wbGF0ZVRlc3RCYXNlPC9BPgo8REQ+UmVzdWx0cyByZWxhdGl2ZSB0byB0aGUgYnVpbGQgZGlyZWN0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpTG9hZGVyVGVzdENhc2UuaHRtbCNSRVNVTFRfRklMRV9FWFQiPjxCPlJFU1VMVF9GSUxFX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpTG9hZGVyVGVzdENhc2UuaHRtbCI+TXVsdGlMb2FkZXJUZXN0Q2FzZTwvQT4KPEREPkNvbXBhcmlzb24gZmlsZSBleHRlbnNpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sI1JFU1VMVF9GSUxFX0VYVCI+PEI+UkVTVUxUX0ZJTEVfRVhUPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sIj5NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0PC9BPgo8REQ+Q29tcGFyaXNvbiBmaWxlIGV4dGVuc2lvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RCYXNlLmh0bWwjUkVTVUxUX0ZJTEVfRVhUIj48Qj5SRVNVTFRfRklMRV9FWFQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0QmFzZS5odG1sIj5UZW1wbGF0ZVRlc3RCYXNlPC9BPgo8REQ+Q29tcGFyaXNvbiBmaWxlIGV4dGVuc2lvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc3BhdGhSZXNvdXJjZVRlc3QuaHRtbCNSRVNVTFRfRklMRV9FWFQiPjxCPlJFU1VMVF9GSUxFX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sIj5DbGFzc3BhdGhSZXNvdXJjZVRlc3Q8L0E+CjxERD5Db21wYXJpc29uIGZpbGUgZXh0ZW5zaW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5QXBwVGVzdENhc2UuaHRtbCNyZXN1bHQxIj48Qj5yZXN1bHQxPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwiPlZlbG9jaXR5QXBwVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2ltYWNyb1Rlc3RDYXNlLmh0bWwjcmVzdWx0MSI+PEI+cmVzdWx0MTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpbWFjcm9UZXN0Q2FzZS5odG1sIj5WZWxvY2ltYWNyb1Rlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29uZmlndXJhdGlvblRlc3RDYXNlLmh0bWwjUkVTVUxUU19ESVIiPjxCPlJFU1VMVFNfRElSPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29uZmlndXJhdGlvblRlc3RDYXNlLmh0bWwiPkNvbmZpZ3VyYXRpb25UZXN0Q2FzZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1Jlc3VsdHMgZGlyZWN0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpTG9hZGVyVGVzdENhc2UuaHRtbCNSRVNVTFRTX0RJUiI+PEI+UkVTVUxUU19ESVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aUxvYWRlclRlc3RDYXNlLmh0bWwiPk11bHRpTG9hZGVyVGVzdENhc2U8L0E+CjxERD5SZXN1bHRzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sI1JFU1VMVFNfRElSIj48Qj5SRVNVTFRTX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3QuaHRtbCI+TXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdDwvQT4KPEREPlJlc3VsdHMgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9BbmFraWFUZXN0Q2FzZS5odG1sI1JFU1VMVFNfRElSIj48Qj5SRVNVTFRTX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0FuYWtpYVRlc3RDYXNlLmh0bWwiPkFuYWtpYVRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5DbGFzc3BhdGhUZXN0Q2FzZS5odG1sI1JFU1VMVFNfRElSIj48Qj5SRVNVTFRTX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuQ2xhc3NwYXRoVGVzdENhc2UuaHRtbCI+VGV4ZW5DbGFzc3BhdGhUZXN0Q2FzZTwvQT4KPEREPkRpcmVjdG9yeSB3aGVyZSByZXN1bHRzIGFyZSBnZW5lcmF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29tbW9uc0V4dFByb3BUZXN0Q2FzZS5odG1sI1JFU1VMVFNfRElSIj48Qj5SRVNVTFRTX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbW1vbnNFeHRQcm9wVGVzdENhc2UuaHRtbCI+Q29tbW9uc0V4dFByb3BUZXN0Q2FzZTwvQT4KPEREPlJlc3VsdHMgZGlyZWN0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuVGVzdENhc2UuaHRtbCNSRVNVTFRTX0RJUiI+PEI+UkVTVUxUU19ESVI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlblRlc3RDYXNlLmh0bWwiPlRleGVuVGVzdENhc2U8L0E+CjxERD5EaXJlY3Rvcnkgd2hlcmUgcmVzdWx0cyBhcmUgZ2VuZXJhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sI1JFU1VMVFNfRElSIj48Qj5SRVNVTFRTX0RJUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sIj5DbGFzc3BhdGhSZXNvdXJjZVRlc3Q8L0E+CjxERD5SZXN1bHRzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI3JldGFpbkFsbChqYXZhLnV0aWwuQ29sbGVjdGlvbikiPjxCPnJldGFpbkFsbChDb2xsZWN0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCNyaSI+PEI+cmk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCNyaSI+PEI+cmk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwjcmllaCI+PEI+cmllaDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLmV2ZW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL2V2ZW50L0V2ZW50Q2FydHJpZGdlLmh0bWwiPkV2ZW50Q2FydHJpZGdlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU2V0RGlyZWN0aXZlLmh0bWwjcmlnaHQiPjxCPnJpZ2h0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTZXREaXJlY3RpdmUuaHRtbCI+QVNUU2V0RGlyZWN0aXZlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQWJzdHJhY3RFeGVjdXRvci5odG1sI3Jsb2ciPjxCPnJsb2c8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0Fic3RyYWN0RXhlY3V0b3IuaHRtbCI+QWJzdHJhY3RFeGVjdXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vSW50cm9zcGVjdG9yLmh0bWwjcmxvZyI+PEI+cmxvZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rvci5odG1sIj5JbnRyb3NwZWN0b3I8L0E+CjxERD5vdXIgZW5naW5lIHJ1bnRpbWUgc2VydmljZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuaHRtbCNybG9nIj48Qj5ybG9nPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsPC9BPgo8REQ+T3VyIHJ1bnRpbWUgbG9nZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9KSlRQYXJzZXJTdGF0ZS5odG1sI3Jvb3ROb2RlKCkiPjxCPnJvb3ROb2RlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjcm9vdFN0cmluZyI+PEI+cm9vdFN0cmluZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwiPkFTVFJlZmVyZW5jZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNycGFyZW4iPjxCPnJwYXJlbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1JQQVJFTiI+PEI+UlBBUkVOPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNSUEFSRU5IYW5kbGVyKCkiPjxCPlJQQVJFTkhhbmRsZXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPmhhbmRsZXMgdGhlIGRyb3Bkb3duIGxvZ2ljIHdoZW4gZW5jb3VudGVyaW5nIGEgUlBBUkVOCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjcnN2YyI+PEI+cnN2YzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPnJ1bnRpbWUgc2VydmljZXMgZm9yIHRoaXMgaW5zdGFuY2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCNyc3ZjIj48Qj5yc3ZjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sI3JzdmMiPjxCPnJzdmM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlLmh0bWwiPkRpcmVjdGl2ZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwjcnN2YyI+PEI+cnN2YzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwiPlZNUHJveHlBcmc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCNyc3ZjIj48Qj5yc3ZjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZzRKTG9nU3lzdGVtLmh0bWwiPkxvZzRKTG9nU3lzdGVtPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwjcnN2YyI+PEI+cnN2YzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9TaW1wbGVMb2c0SkxvZ1N5c3RlbS5odG1sIj5TaW1wbGVMb2c0SkxvZ1N5c3RlbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Qcmltb3JkaWFsTG9nU3lzdGVtLmh0bWwjcnN2YyI+PEI+cnN2YzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Qcmltb3JkaWFsTG9nU3lzdGVtLmh0bWwiPlByaW1vcmRpYWxMb2dTeXN0ZW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvQXZhbG9uTG9nU3lzdGVtLmh0bWwjcnN2YyI+PEI+cnN2YzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9BdmFsb25Mb2dTeXN0ZW0uaHRtbCI+QXZhbG9uTG9nU3lzdGVtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI3JzdmMiPjxCPnJzdmM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCNyc3ZjIj48Qj5yc3ZjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI3JzdmMiPjxCPnJzdmM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZUltcGwuaHRtbCNyc3ZjIj48Qj5yc3ZjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlSW1wbC5odG1sIj5SZXNvdXJjZUNhY2hlSW1wbDwvQT4KPEREPlJ1bnRpbWUgc2VydmljZXMsIGdlbmVyYWxseSBpbml0aWFsaXplZCBieSB0aGUKIDxjb2RlPmluaXRpYWxpemUoKTwvY29kZT4gbWV0aG9kLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNyc3ZjIj48Qj5yc3ZjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwiPlJlc291cmNlTWFuYWdlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCNyc3ZjIj48Qj5yc3ZjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwiPlJlc291cmNlTG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sI3JzdmMiPjxCPnJzdmM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFySG9sZGVyLmh0bWwiPkphckhvbGRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sI1JVTlQiPjxCPlJVTlQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29uZmlndXJhdGlvblRlc3RDYXNlLmh0bWwjcnVuVGVzdCgpIj48Qj5ydW5UZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db25maWd1cmF0aW9uVGVzdENhc2UuaHRtbCI+Q29uZmlndXJhdGlvblRlc3RDYXNlPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UnVucyB0aGUgdGVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuaHRtbCNydW5UZXN0KCkiPjxCPnJ1blRlc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwjcnVuVGVzdCgpIj48Qj5ydW5UZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwiPlZlbG9jaXR5QXBwVGVzdENhc2U8L0E+CjxERD5SdW5zIHRoZSB0ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01ldGhvZEludm9jYXRpb25FeGNlcHRpb25UZXN0Lmh0bWwjcnVuVGVzdCgpIj48Qj5ydW5UZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdC5odG1sIj5NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdDwvQT4KPEREPlJ1bnMgdGhlIHRlc3QgOgoKICB1c2VzIHRoZSBWZWxvY2l0eSBjbGFzcyB0byBldmFsIGEgc3RyaW5nCiAgd2hpY2ggYWNjZXNzZXMgYSBtZXRob2QgdGhhdCB0aHJvd3MgYW4gCiAgZXhjZXB0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwiPkV2ZW50SGFuZGxpbmdUZXN0Q2FzZTwvQT4KPEREPlJ1bnMgdGhlIHRlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sIj5UZW1wbGF0ZVRlc3RDYXNlPC9BPgo8REQ+UnVucyB0aGUgdGVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aUxvYWRlclRlc3RDYXNlLmh0bWwjcnVuVGVzdCgpIj48Qj5ydW5UZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aUxvYWRlclRlc3RDYXNlLmh0bWwiPk11bHRpTG9hZGVyVGVzdENhc2U8L0E+CjxERD5SdW5zIHRoZSB0ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01pc2NUZXN0Q2FzZS5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTWlzY1Rlc3RDYXNlLmh0bWwiPk1pc2NUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V4dGVybmFsTG9nZ2VyVGVzdC5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXh0ZXJuYWxMb2dnZXJUZXN0Lmh0bWwiPkV4dGVybmFsTG9nZ2VyVGVzdDwvQT4KPEREPlJ1bnMgdGhlIHRlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29udGV4dFNhZmV0eVRlc3RDYXNlLmh0bWwjcnVuVGVzdCgpIj48Qj5ydW5UZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db250ZXh0U2FmZXR5VGVzdENhc2UuaHRtbCI+Q29udGV4dFNhZmV0eVRlc3RDYXNlPC9BPgo8REQ+UnVucyB0aGUgdGVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbmxpbmVTY29wZVZNVGVzdENhc2UuaHRtbCNydW5UZXN0KCkiPjxCPnJ1blRlc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0lubGluZVNjb3BlVk1UZXN0Q2FzZS5odG1sIj5JbmxpbmVTY29wZVZNVGVzdENhc2U8L0E+CjxERD5SdW5zIHRoZSB0ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaW1hY3JvVGVzdENhc2UuaHRtbCNydW5UZXN0KCkiPjxCPnJ1blRlc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaW1hY3JvVGVzdENhc2UuaHRtbCI+VmVsb2NpbWFjcm9UZXN0Q2FzZTwvQT4KPEREPlJ1bnMgdGhlIHRlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdC5odG1sIj5NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0PC9BPgo8REQ+UnVucyB0aGUgdGVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9BbmFraWFUZXN0Q2FzZS5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQW5ha2lhVGVzdENhc2UuaHRtbCI+QW5ha2lhVGVzdENhc2U8L0E+CjxERD5SdW5zIHRoZSB0ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuQ2xhc3NwYXRoVGVzdENhc2UuaHRtbCNydW5UZXN0KCkiPjxCPnJ1blRlc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuQ2xhc3NwYXRoVGVzdENhc2UuaHRtbCI+VGV4ZW5DbGFzc3BhdGhUZXN0Q2FzZTwvQT4KPEREPlJ1bnMgdGhlIHRlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRW5jb2RpbmdUZXN0Q2FzZS5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRW5jb2RpbmdUZXN0Q2FzZS5odG1sIj5FbmNvZGluZ1Rlc3RDYXNlPC9BPgo8REQ+UnVucyB0aGUgdGVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwjcnVuVGVzdCgpIj48Qj5ydW5UZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwiPkNvbW1vbnNFeHRQcm9wVGVzdENhc2U8L0E+CjxERD5SdW5zIHRoZSB0ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwjcnVuVGVzdCgpIj48Qj5ydW5UZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuaHRtbCNydW5UZXN0KCkiPjxCPnJ1blRlc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdDwvQT4KPEREPlJ1bnMgdGhlIHRlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5UZXN0Q2FzZS5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5UZXN0Q2FzZS5odG1sIj5UZXhlblRlc3RDYXNlPC9BPgo8REQ+UnVucyB0aGUgdGVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc3BhdGhSZXNvdXJjZVRlc3QuaHRtbCNydW5UZXN0KCkiPjxCPnJ1blRlc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sIj5DbGFzc3BhdGhSZXNvdXJjZVRlc3Q8L0E+CjxERD5SdW5zIHRoZSB0ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzbG9hZGVyQ2hhbmdlVGVzdC5odG1sI3J1blRlc3QoKSI+PEI+cnVuVGVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3Nsb2FkZXJDaGFuZ2VUZXN0Lmh0bWwiPkNsYXNzbG9hZGVyQ2hhbmdlVGVzdDwvQT4KPEREPlJ1bnMgdGhlIHRlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj48Qj5SdW50aW1lPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCI+UnVudGltZTwvQT4uPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSBSdW50aW1lSW5zdGFuY2Ugb3IgUnVudGltZVNpbmdsZXRvbiBpbnN0ZWFkLjwvST48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNSVU5USU1FX0xPRyI+PEI+UlVOVElNRV9MT0c8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+TG9jYXRpb24gb2YgdGhlIHZlbG9jaXR5IGxvZyBmaWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNSVU5USU1FX0xPR19FUlJPUl9TVEFDS1RSQUNFIj48Qj5SVU5USU1FX0xPR19FUlJPUl9TVEFDS1RSQUNFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPlN0YWNrIHRyYWNlIG91dHB1dCBmb3IgZXJyb3IgbWVzc2FnZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1JVTlRJTUVfTE9HX0lORk9fU1RBQ0tUUkFDRSI+PEI+UlVOVElNRV9MT0dfSU5GT19TVEFDS1RSQUNFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPlN0YWNrIHRyYWNlIG91dHB1dCBmb3IgaW5mbyBtZXNzYWdlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjUlVOVElNRV9MT0dfTE9HU1lTVEVNIj48Qj5SVU5USU1FX0xPR19MT0dTWVNURU08L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+ZXh0ZXJuYWxseSBwcm92aWRlZCBsb2dnZXIKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjUlVOVElNRV9MT0dfTE9HU1lTVEVNX0NMQVNTIj48Qj5SVU5USU1FX0xPR19MT0dTWVNURU1fQ0xBU1M8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+Y2xhc3Mgb2YgbG9nIHN5c3RlbSB0byB1c2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjUlVOVElNRV9MT0dfUkVGRVJFTkNFX0xPR19JTlZBTElEIj48Qj5SVU5USU1FX0xPR19SRUZFUkVOQ0VfTE9HX0lOVkFMSUQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+TG9nZ2luZyBvZiBpbnZhbGlkIHJlZmVyZW5jZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1JVTlRJTUVfTE9HX1dBUk5fU1RBQ0tUUkFDRSI+PEI+UlVOVElNRV9MT0dfV0FSTl9TVEFDS1RSQUNFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPlN0YWNrIHRyYWNlIG91dHB1dCBmb3Igd2FybmluZyBtZXNzYWdlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwjUnVudGltZSgpIj48Qj5SdW50aW1lKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lLmh0bWwiPlJ1bnRpbWU8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPjxCPlJ1bnRpbWVDb25zdGFudHM8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4uPEREPlRoaXMgY2xhc3MgZGVmaW5lcyB0aGUga2V5cyB0aGF0IGFyZSB1c2VkIGluIHRoZSAKIHZlbG9jaXR5LnByb3BlcnRpZXMgZmlsZSBzbyB0aGF0IHRoZXkgY2FuIGJlIHJlZmVyZW5jZWQgYXMgYSBjb25zdGFudAogd2l0aGluIEphdmEgY29kZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI3J1bnRpbWVEaXJlY3RpdmVzIj48Qj5ydW50aW1lRGlyZWN0aXZlczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPlRoaXMgaXMgYSBoYXNodGFibGUgb2YgaW5pdGlhbGl6ZWQgZGlyZWN0aXZlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+PEI+UnVudGltZUluc3RhbmNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+LjxERD5UaGlzIGlzIHRoZSBSdW50aW1lIHN5c3RlbSBmb3IgVmVsb2NpdHkuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNSdW50aW1lSW5zdGFuY2UoKSI+PEI+UnVudGltZUluc3RhbmNlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUxvZ2dlci5odG1sIj48Qj5SdW50aW1lTG9nZ2VyPC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lTG9nZ2VyLmh0bWwiPlJ1bnRpbWVMb2dnZXI8L0E+LjxERD5JbnRlcmZhY2UgZm9yIGludGVybmFsIHJ1bnRpbWUgbG9nZ2luZyBzZXJ2aWNlcyB0aGF0IGFyZSBuZWVkZWQgYnkgdGhlPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+PEI+UnVudGltZVNlcnZpY2VzPC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPi48REQ+SW50ZXJmYWNlIGZvciBpbnRlcm5hbCBydW50aW1lIHNlcnZpY2VzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGUgCiB2YXJpb3VzIGNvbXBvbmVudHMgdy9pbiBWZWxvY2l0eS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCI+PEI+UnVudGltZVNpbmdsZXRvbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+LjxERD5UaGlzIGlzIHRoZSBSdW50aW1lIHN5c3RlbSBmb3IgVmVsb2NpdHkuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwjUnVudGltZVNpbmdsZXRvbigpIj48Qj5SdW50aW1lU2luZ2xldG9uKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBOQU1FPSJfU18iPjwhLS0gLS0+PC9BPjxIMj4KPEI+UzwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjc2F2ZShqYXZhLmlvLk91dHB1dFN0cmVhbSwgamF2YS5sYW5nLlN0cmluZykiPjxCPnNhdmUoT3V0cHV0U3RyZWFtLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1NhdmUgdGhlIHByb3BlcnRpZXMgdG8gdGhlIGdpdmVuIG91dHB1dHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc2xvYWRlckNoYW5nZVRlc3QuaHRtbCNzYXdDYWNoZUR1bXAiPjxCPnNhd0NhY2hlRHVtcDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3Nsb2FkZXJDaGFuZ2VUZXN0Lmh0bWwiPkNsYXNzbG9hZGVyQ2hhbmdlVGVzdDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjc2VsZWN0KGJvb2xlYW4sIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZWxlY3QoYm9vbGVhbiwgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5JZiBzdGF0ZSBpcyB0cnVlIHRoZW4gcmV0dXJuIHRoZSB0cnVlU3RyaW5nLCBlbHNlCiByZXR1cm4gdGhlIGZhbHNlU3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhRWxlbWVudC5odG1sI3NlbGVjdE5vZGVzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZWxlY3ROb2RlcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYUVsZW1lbnQuaHRtbCI+QW5ha2lhRWxlbWVudDwvQT4KPEREPkFwcGxpZXMgYW4gWFBhdGggZXhwcmVzc2lvbiB0byB0aGlzIGVsZW1lbnQgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZwogbm9kZSBsaXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNzZWxlY3ROb2RlcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2VsZWN0Tm9kZXMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4KPEREPkFwcGxpZXMgYW4gWFBhdGggZXhwcmVzc2lvbiB0byB0aGUgbm9kZSBsaXN0IGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcKIG5vZGUgbGlzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjc2VuZEVycm9yKGludCkiPjxCPnNlbmRFcnJvcihpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI3NlbmRFcnJvcihpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZW5kRXJyb3IoaW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI3NlbmRSZWRpcmVjdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2VuZFJlZGlyZWN0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjU0VUX0RJUkVDVElWRSI+PEI+U0VUX0RJUkVDVElWRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjc2V0KGludCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldChpbnQsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNzZXRBZGRNYWNyb1Blcm1pc3Npb24oYm9vbGVhbikiPjxCPnNldEFkZE1hY3JvUGVybWlzc2lvbihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5zZXRzIHRoZSBwZXJtaXNzaW9uIHRvIGFkZCBuZXcgbWFjcm9zCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI3NldEFwcGxpY2F0aW9uQXR0cmlidXRlKGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpIj48Qj5zZXRBcHBsaWNhdGlvbkF0dHJpYnV0ZShPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD4KICBTZXQgdGhlIGFuIEFwcGxpY2F0aW9uQXR0cmlidWUsIHdoaWNoIGlzIGFuIE9iamVjdAogIHNldCBieSB0aGUgYXBwbGljYXRpb24gd2hpY2ggaXMgYWNjZXNzYWJsZSBmcm9tCiAgYW55IGNvbXBvbmVudCBvZiB0aGUgc3lzdGVtIHRoYXQgZ2V0cyBhIFJ1bnRpbWVTZXJ2aWNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwjc2V0QXBwbGljYXRpb25BdHRyaWJ1dGUoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldEFwcGxpY2F0aW9uQXR0cmlidXRlKE9iamVjdCwgT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD4KICBTZXQgdGhlIGFuIEFwcGxpY2F0aW9uQXR0cmlidWUsIHdoaWNoIGlzIGFuIE9iamVjdAogIHNldCBieSB0aGUgYXBwbGljYXRpb24gd2hpY2ggaXMgYWNjZXNzYWJsZSBmcm9tCiAgYW55IGNvbXBvbmVudCBvZiB0aGUgc3lzdGVtIHRoYXQgZ2V0cyBhIFJ1bnRpbWVTZXJ2aWNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNzZXRBcHBsaWNhdGlvbkF0dHJpYnV0ZShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0QXBwbGljYXRpb25BdHRyaWJ1dGUoT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwjc2V0QXJnQXJyYXkoamF2YS5sYW5nLlN0cmluZ1tdKSI+PEI+c2V0QXJnQXJyYXkoU3RyaW5nW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD5zZXRzIHRoZSBhcnJheSBvZiBhcmd1bWVudHMgc3BlY2lmaWVkIGluIHRoZSBtYWNybyBkZWZpbml0aW9uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbnRleHQuaHRtbCNzZXRBdHRyaWJ1dGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldEF0dHJpYnV0ZShTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sI3NldEF1dG9sb2FkKGJvb2xlYW4pIj48Qj5zZXRBdXRvbG9hZChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5zZXQgdGhlIHN3aXRjaCBmb3IgYXV0b21hdGljIHJlbG9hZGluZyBvZgogIGdsb2JhbCBsaWJyYXJ5LWJhc2VkIFZNcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI3NldEJhbmdTdGFydChqYXZhLmxhbmcuSW50ZWdlcikiPjxCPnNldEJhbmdTdGFydChJbnRlZ2VyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNzZXRCYXNlZGlyKGphdmEuaW8uRmlsZSkiPjxCPnNldEJhc2VkaXIoRmlsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+U2V0IHRoZSBiYXNlIGRpcmVjdG9yeS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNzZXRCbGF0aGVyKGJvb2xlYW4pIj48Qj5zZXRCbGF0aGVyKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPnNldCBvdXRwdXQgbWVzc2FnZSBtb2RlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI3NldEJ1ZmZlclNpemUoaW50KSI+PEI+c2V0QnVmZmVyU2l6ZShpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwjc2V0Q2FjaGluZ09uKGJvb2xlYW4pIj48Qj5zZXRDYWNoaW5nT24oYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwiPlJlc291cmNlTG9hZGVyPC9BPgo8REQ+U2V0IHRoZSBjYWNoaW5nIHN0YXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCNzZXRDb25maWd1cmF0aW9uKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb24pIj48Qj5zZXRDb25maWd1cmF0aW9uKENvbmZpZ3VyYXRpb24pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwiPlZlbG9jaXR5RW5naW5lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlCiAgPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCNzZXRFeHRlbmRlZFByb3BlcnRpZXMob3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkV4dGVuZGVkUHJvcGVydGllcykiPjxDT0RFPlZlbG9jaXR5RW5naW5lLnNldEV4dGVuZGVkUHJvcGVydGllcyggRXh0ZW5kZWRQcm9wZXJ0aWVzICApPC9DT0RFPjwvQT48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI3NldENvbmZpZ3VyYXRpb24ob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbikiPjxCPnNldENvbmZpZ3VyYXRpb24oQ29uZmlndXJhdGlvbik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwiPlZlbG9jaXR5PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlCiAgPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCNzZXRFeHRlbmRlZFByb3BlcnRpZXMob3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkV4dGVuZGVkUHJvcGVydGllcykiPjxDT0RFPlZlbG9jaXR5LnNldEV4dGVuZGVkUHJvcGVydGllcyggRXh0ZW5kZWRQcm9wZXJ0aWVzICApPC9DT0RFPjwvQT48L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjc2V0Q29uZmlndXJhdGlvbihvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuRXh0ZW5kZWRQcm9wZXJ0aWVzKSI+PEI+c2V0Q29uZmlndXJhdGlvbihFeHRlbmRlZFByb3BlcnRpZXMpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkFsbG93IGFuIGV4dGVybmFsIHN5c3RlbSB0byBzZXQgYW4gRXh0ZW5kZWRQcm9wZXJ0aWVzCiBvYmplY3QgdG8gdXNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCNzZXRDb25maWd1cmF0aW9uKG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5FeHRlbmRlZFByb3BlcnRpZXMpIj48Qj5zZXRDb25maWd1cmF0aW9uKEV4dGVuZGVkUHJvcGVydGllcyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7QWxsb3cgYW4gZXh0ZXJuYWwgc3lzdGVtIHRvIHNldCBhbiBFeHRlbmRlZFByb3BlcnRpZXMKIG9iamVjdCB0byB1c2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI3NldENvbmZpZ3VyYXRpb24ob3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkV4dGVuZGVkUHJvcGVydGllcykiPjxCPnNldENvbmZpZ3VyYXRpb24oRXh0ZW5kZWRQcm9wZXJ0aWVzKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2luZ2xldG9uLmh0bWwiPlJ1bnRpbWVTaW5nbGV0b248L0E+CjxERD5BbGxvdyBhbiBleHRlcm5hbCBzeXN0ZW0gdG8gc2V0IGFuIEV4dGVuZGVkUHJvcGVydGllcwogb2JqZWN0IHRvIHVzZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCNzZXRDb25maWd1cmF0aW9uKG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5FeHRlbmRlZFByb3BlcnRpZXMpIj48Qj5zZXRDb25maWd1cmF0aW9uKEV4dGVuZGVkUHJvcGVydGllcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4KPEREPkFsbG93IGFuIGV4dGVybmFsIHN5c3RlbSB0byBzZXQgYW4gRXh0ZW5kZWRQcm9wZXJ0aWVzCiBvYmplY3QgdG8gdXNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNzZXRDb250ZW50TGVuZ3RoKGludCkiPjxCPnNldENvbnRlbnRMZW5ndGgoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sI3NldENvbnRlbnRUeXBlKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+c2V0Q29udGVudFR5cGUoSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD5TZXRzIHRoZSBjb250ZW50IHR5cGUgb2YgdGhlIHJlc3BvbnNlLCBkZWZhdWx0aW5nIHRvIDxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCNkZWZhdWx0Q29udGVudFR5cGUiPjxDT0RFPlZlbG9jaXR5U2VydmxldC5kZWZhdWx0Q29udGVudFR5cGU8L0NPREU+PC9BPiBpZiBub3Qgb3ZlcnJpZGVuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNzZXRDb250ZW50VHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Q29udGVudFR5cGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPlJlY29yZHMgdGhlIGNoYXJhY3RlciBlbmNvZGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjc2V0Q29udGV4dChvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnNldENvbnRleHQoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI3NldENvbnRleHRQcm9wZXJ0aWVzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRDb250ZXh0UHJvcGVydGllcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uYW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sIj5UZXhlblRhc2s8L0E+CjxERD5TZXQgdGhlIGNvbnRleHQgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUKIGZlZCBpbnRvIHRoZSBpbml0aWFsIGNvbnRleHQgYmUgdGhlCiBnZW5lcmF0aW5nIHByb2Nlc3Mgc3RhcnRzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjc2V0Q29udHJvbFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRDb250cm9sVGVtcGxhdGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+W1JFUVVJUkVEXSBTZXQgdGhlIGNvbnRyb2wgdGVtcGxhdGUgZm9yIHRoZQogZ2VuZXJhdGluZyBwcm9jZXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCNzZXRDdXJyZW50UmVzb3VyY2Uob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLlJlc291cmNlKSI+PEI+c2V0Q3VycmVudFJlc291cmNlKFJlc291cmNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEJhc2UuaHRtbCI+SW50ZXJuYWxDb250ZXh0QmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsQ29udGV4dEFkYXB0ZXJJbXBsLmh0bWwjc2V0Q3VycmVudFJlc291cmNlKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5SZXNvdXJjZSkiPjxCPnNldEN1cnJlbnRSZXNvdXJjZShSZXNvdXJjZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbC5odG1sIj5JbnRlcm5hbENvbnRleHRBZGFwdGVySW1wbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI3NldEN1cnJlbnRSZXNvdXJjZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuUmVzb3VyY2UpIj48Qj5zZXRDdXJyZW50UmVzb3VyY2UoUmVzb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sI3NldEN1cnJlbnRSZXNvdXJjZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuUmVzb3VyY2UpIj48Qj5zZXRDdXJyZW50UmVzb3VyY2UoUmVzb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L0ludGVybmFsSG91c2VrZWVwaW5nQ29udGV4dC5odG1sIj5JbnRlcm5hbEhvdXNla2VlcGluZ0NvbnRleHQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI3NldERhdGEoamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldERhdGEoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+U2V0IGFyYml0cmFyeSBkYXRhIG9iamVjdCB0aGF0IG1pZ2h0IGJlIHVzZWQKIGJ5IHRoZSByZXNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjc2V0RGF0ZUhlYWRlcihqYXZhLmxhbmcuU3RyaW5nLCBsb25nKSI+PEI+c2V0RGF0ZUhlYWRlcihTdHJpbmcsIGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI3NldERlYnVnU3RyZWFtKGphdmEuaW8uUHJpbnRTdHJlYW0pIj48Qj5zZXREZWJ1Z1N0cmVhbShQcmludFN0cmVhbSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sIj5QYXJzZXJUb2tlbk1hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCNzZXREZWZhdWx0UHJvcGVydGllcygpIj48Qj5zZXREZWZhdWx0UHJvcGVydGllcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPkluaXRpYWxpemVzIHRoZSBWZWxvY2l0eSBSdW50aW1lIHdpdGggcHJvcGVydGllcyBmaWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNzZXREZWZhdWx0UHJvcHMoKSI+PEI+c2V0RGVmYXVsdFByb3BzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5TZXQgZGVmYXVsdCBwcm9wZXJ0aWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sI3NldERlc3RkaXIoamF2YS5pby5GaWxlKSI+PEI+c2V0RGVzdGRpcihGaWxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD5TZXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSBWU0wgcmVzdWx0CiBmaWxlcyBzaG91bGQgYmUgY29waWVkIHRvCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI1NldERpcmVjdGl2ZSgpIj48Qj5TZXREaXJlY3RpdmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwiPlBhcnNlcjwvQT4KPEREPkN1cnJlbnRseSBzdXBwb3J0IGJvdGggdHlwZXMgb2Ygc2V0IDoKICAgI3NldCggZXhwciApCiAgICNzZXQgZXhwcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVERpcmVjdGl2ZS5odG1sI3NldERpcmVjdGl2ZU5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldERpcmVjdGl2ZU5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVERpcmVjdGl2ZS5odG1sIj5BU1REaXJlY3RpdmU8L0E+CjxERD5TZXRzIHRoZSBkaXJlY3RpdmUgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjc2V0RGlyZWN0aXZlcyhqYXZhLnV0aWwuSGFzaHRhYmxlKSI+PEI+c2V0RGlyZWN0aXZlcyhIYXNodGFibGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+VGhpcyBtZXRob2Qgc2V0cyB0aGUgZGlyZWN0aXZlcyBIYXNodGFibGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sI3NldEVuY29kaW5nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRFbmNvZGluZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD5zZXQgdGhlIGVuY29kaW5nIG9mIHRoaXMgcmVzb3VyY2UKICBmb3IgZXhhbXBsZSwgIklTTy04ODU5LTEiCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI3NldEV4dGVuZGVkUHJvcGVydGllcyhvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuRXh0ZW5kZWRQcm9wZXJ0aWVzKSI+PEI+c2V0RXh0ZW5kZWRQcm9wZXJ0aWVzKEV4dGVuZGVkUHJvcGVydGllcyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD5TZXQgYW4gZW50aXJlIGNvbmZpZ3VyYXRpb24gYXQgb25jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwjc2V0RXh0ZW5kZWRQcm9wZXJ0aWVzKG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5FeHRlbmRlZFByb3BlcnRpZXMpIj48Qj5zZXRFeHRlbmRlZFByb3BlcnRpZXMoRXh0ZW5kZWRQcm9wZXJ0aWVzKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5TZXQgYW4gZW50aXJlIGNvbmZpZ3VyYXRpb24gYXQgb25jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNzZXRFeHRlbnNpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEV4dGVuc2lvbihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPkFsbG93IHBlb3BsZSB0byBzZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZXh0ZW5zaW9uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI3NldEZpcnN0VG9rZW4ob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5Ub2tlbikiPjxCPnNldEZpcnN0VG9rZW4oVG9rZW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvblRlc3QuaHRtbCNzZXRGb28oamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZvbyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvblRlc3QuaHRtbCI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvblRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sI3NldEZyb21MaWJyYXJ5KGJvb2xlYW4pIj48Qj5zZXRGcm9tTGlicmFyeShib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI3NldEhlYWRlcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SGVhZGVyKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbi5odG1sI3NldEluY2x1ZGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEluY2x1ZGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtTZXRzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBmb3IgaW5jbHVkaW5nIG90aGVyIHByb3BlcnRpZXMgZmlsZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI3NldEluZm8oaW50KSI+PEI+c2V0SW5mbyhpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI3NldEluZm8oaW50KSI+PEI+c2V0SW5mbyhpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGUuaHRtbCI+Tm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNzZXRJbnB1dEVuY29kaW5nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJbnB1dEVuY29kaW5nKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5TZXQgdGhlIGlucHV0ICh0ZW1wbGF0ZSkgZW5jb2RpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNzZXRJbnB1dEVuY29kaW5nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJbnB1dEVuY29kaW5nKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPlNldCB0aGUgaW5wdXQgKHRlbXBsYXRlKSBlbmNvZGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjc2V0SW50SGVhZGVyKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPnNldEludEhlYWRlcihTdHJpbmcsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjc2V0SW52YWxpZCgpIj48Qj5zZXRJbnZhbGlkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlLmh0bWwjc2V0SW52YWxpZCgpIj48Qj5zZXRJbnZhbGlkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNzZXRMYXN0TW9kaWZpZWQobG9uZykiPjxCPnNldExhc3RNb2RpZmllZChsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+U2V0IHRoZSBsYXN0IG1vZGlmaWVkIHRpbWUgZm9yIHRoaXMKIHRlbXBsYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sI3NldExhc3RNb2RpZmllZENoZWNrKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRMYXN0TW9kaWZpZWRDaGVjayhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPlR1cm4gb24vb2ZmIGxhc3QgbW9kaWZpZWQgY2hlY2tpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjc2V0TGl0ZXJhbChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TGl0ZXJhbChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwiPkFTVFJlZmVyZW5jZTwvQT4KPEREPlJvdXRpbmUgdG8gYWxsb3cgdGhlIGxpdGVyYWwgcmVwcmVzZW50YXRpb24gdG8gYmUKICBleHRlcm5hbGx5IG92ZXJyaWRkZW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI3NldExvY2FsZShqYXZhLnV0aWwuTG9jYWxlKSI+PEI+c2V0TG9jYWxlKExvY2FsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvRGlyZWN0aXZlLmh0bWwjc2V0TG9jYXRpb24oaW50LCBpbnQpIj48Qj5zZXRMb2NhdGlvbihpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0RpcmVjdGl2ZS5odG1sIj5EaXJlY3RpdmU8L0E+CjxERD5BbGxvd3MgdGhlIHRlbXBsYXRlIGxvY2F0aW9uIHRvIGJlIHNldAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwjc2V0TWFjcm9ib2R5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRNYWNyb2JvZHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+U2V0cyB0aGUgb3JpZ25hbCBtYWNybyBib2R5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjc2V0TW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbChsb25nKSI+PEI+c2V0TW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbChsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+U2V0IHRoZSBtb2RpZmljYXRpb24gY2hlY2sgaW50ZXJ2YWwuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmh0bWwjc2V0TW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbChsb25nKSI+PEI+c2V0TW9kaWZpY2F0aW9uQ2hlY2tJbnRlcnZhbChsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaHRtbCI+UmVzb3VyY2VMb2FkZXI8L0E+CjxERD5TZXQgdGhlIGludGVydmFsIGF0IHdoaWNoIHRoZSBJbnB1dFN0cmVhbSBzb3VyY2UKIHNob3VsZCBiZSBjaGVja2VkIGZvciBtb2RpZmljYXRpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD5zZXRzIHRoZSBkaXJlY3RpdmUgbmFtZSBvZiB0aGlzIFZNCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4KPEREPlNldCB0aGUgbmFtZSBvZiB0aGlzIHJlc291cmNlLCBmb3IgZXhhbXBsZQogdGVzdC52bS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI3NldE5hbWVzcGFjZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZXNwYWNlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCI+VmVsb2NpbWFjcm9Qcm94eTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI3NldE5hbWVzcGFjZVVzYWdlKGJvb2xlYW4pIj48Qj5zZXROYW1lc3BhY2VVc2FnZShib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD5wdWJsaWMgc3dpdGNoIHRvIGxldCBleHRlcm5hbCB1c2VyIG9mIG1hbmFnZXIgdG8gY29udHJvbCBuYW1lc3BhY2UKICB1c2FnZSBpbmRlcCBvZiBwcm9wZXJ0aWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwjc2V0Tm9kZVRyZWUob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlNpbXBsZU5vZGUpIj48Qj5zZXROb2RlVHJlZShTaW1wbGVOb2RlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNzZXRPYmplY3Qob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIsIGphdmEubGFuZy5PYmplY3QpIj48Qj5zZXRPYmplY3QoSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+SW52b2tlZCBieSBWTUNvbnRleHQgd2hlbiBDb250ZXh0LnB1dCgpIGlzIGNhbGxlZCBmb3IgYSBwcm94aWVkIHJlZmVyZW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI3NldE91dHB1dERpcmVjdG9yeShqYXZhLmlvLkZpbGUpIj48Qj5zZXRPdXRwdXREaXJlY3RvcnkoRmlsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPltSRVFVSVJFRF0gU2V0IHRoZSBvdXRwdXQgZGlyZWN0b3J5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNzZXRPdXRwdXRFbmNvZGluZyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T3V0cHV0RW5jb2RpbmcoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPlNldCB0aGUgb3V0cHV0IGVuY29kaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjc2V0T3V0cHV0RW5jb2RpbmcoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE91dHB1dEVuY29kaW5nKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPlNldCB0aGUgb3V0cHV0IGVuY29kaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjc2V0T3V0cHV0RmlsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T3V0cHV0RmlsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uYW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sIj5UZXhlblRhc2s8L0E+CjxERD5bUkVRVUlSRURdIFNldCB0aGUgb3V0cHV0IGZpbGUgZm9yIHRoZQogZ2VuZXJhdGlvbiBwcm9jZXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCNzZXRPdXRwdXRQYXRoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPdXRwdXRQYXRoKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5TZXQgdGhlIG91dHB1dCBwYXRoIGZvciB0aGUgZ2VuZXJhdGVkCiBvdXRwdXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjc2V0UHJvamVjdEZpbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb2plY3RGaWxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+QWxsb3cgcGVvcGxlIHRvIHNldCB0aGUgcGF0aCB0byB0aGUgcHJvamVjdC54bWwgZmlsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwiPlZlbG9jaXR5RW5naW5lPC9BPgo8REQ+U2V0IGEgVmVsb2NpdHkgUnVudGltZSBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldFByb3BlcnR5KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+VmVsb2NpdHk8L0E+CjxERD5TZXQgYSBWZWxvY2l0eSBSdW50aW1lIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+QWxsb3dzIGFuIGV4dGVybmFsIHN5c3RlbSB0byBzZXQgYSBwcm9wZXJ0eSBpbgogdGhlIFZlbG9jaXR5IFJ1bnRpbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7QWxsb3dzIGFuIGV4dGVybmFsIHN5c3RlbSB0byBzZXQgYSBwcm9wZXJ0eSBpbgogdGhlIFZlbG9jaXR5IFJ1bnRpbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+QWxsb3dzIGFuIGV4dGVybmFsIHN5c3RlbSB0byBzZXQgYSBwcm9wZXJ0eSBpbgogdGhlIFZlbG9jaXR5IFJ1bnRpbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldFByb3BlcnR5KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lU2VydmljZXMuaHRtbCI+UnVudGltZVNlcnZpY2VzPC9BPgo8REQ+QWxsb3dzIGFuIGV4dGVybmFsIHN5c3RlbSB0byBzZXQgYSBwcm9wZXJ0eSBpbgogdGhlIFZlbG9jaXR5IFJ1bnRpbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldFByb3BlcnR5KFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtTZXQgYSBwcm9wZXJ0eSwgdGhpcyB3aWxsIHJlcGxhY2UgYW55IHByZXZpb3VzbHkKIHNldCB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uLmh0bWwjc2V0UmVmZXJlbmNlTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UmVmZXJlbmNlTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuZXhjZXB0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL01ldGhvZEludm9jYXRpb25FeGNlcHRpb24uaHRtbCI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbjwvQT4KPEREPlNldHMgdGhlIHJlZmVyZW5jZSBuYW1lIHRoYXQgdGhyZXcgdGhpcyBleGNlcHRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCNzZXRSZWdpc3RlckZyb21MaWIoYm9vbGVhbikiPjxCPnNldFJlZ2lzdGVyRnJvbUxpYihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCNzZXRSZXBsYWNlbWVudFBlcm1pc3Npb24oYm9vbGVhbikiPjxCPnNldFJlcGxhY2VtZW50UGVybWlzc2lvbihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5zZXRzIHRoZSBwZXJtaXNzaW9uIGZvciBhbGxvd2luZyBhZGRNYWNybygpIGNhbGxzIHRvIAogICAgcmVwbGFjZSBleGlzdGluZyBWTSdzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCNzZXRSZXNvdXJjZUxvYWRlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLlJlc291cmNlTG9hZGVyKSI+PEI+c2V0UmVzb3VyY2VMb2FkZXIoUmVzb3VyY2VMb2FkZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD5TZXQgdGhlIHRlbXBsYXRlIGxvYWRlciBmb3IgdGhpcyB0ZW1wbGF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuaHRtbCNzZXRSdW50aW1lTG9nZ2VyKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lTG9nZ2VyKSI+PEI+c2V0UnVudGltZUxvZ2dlcihSdW50aW1lTG9nZ2VyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwiPlViZXJzcGVjdEltcGw8L0E+CjxERD5TZXRzIHRoZSBydW50aW1lIGxvZ2dlciAtIHRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueXRoaW5nCiAgZWxzZSBiZXNpZGVzIGluaXQoKSBhcyB0byBnZXQgdGhlIGxvZ2dlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdExvZ2dhYmxlLmh0bWwjc2V0UnVudGltZUxvZ2dlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZUxvZ2dlcikiPjxCPnNldFJ1bnRpbWVMb2dnZXIoUnVudGltZUxvZ2dlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdExvZ2dhYmxlLmh0bWwiPlViZXJzcGVjdExvZ2dhYmxlPC9BPgo8REQ+U2V0cyB0aGUgbG9nZ2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwjc2V0UnVudGltZVNlcnZpY2VzKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48Qj5zZXRSdW50aW1lU2VydmljZXMoUnVudGltZVNlcnZpY2VzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjc2V0U3RhdGUoamF2YS5sYW5nLkJvb2xlYW4pIj48Qj5zZXRTdGF0ZShCb29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwjc2V0U3RhdHVzKGludCkiPjxCPnNldFN0YXR1cyhpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sI3NldFN0YXR1cyhpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTdGF0dXMoaW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZS5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjc2V0U3R5bGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFN0eWxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+QWxsb3cgcGVvcGxlIHRvIHNldCB0aGUgcGF0aCB0byB0aGUgLnZzbCBmaWxlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjc2V0VGVtcGxhdGVMb2NhbElubGluZShib29sZWFuKSI+PEI+c2V0VGVtcGxhdGVMb2NhbElubGluZShib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5zZXRzIHBlcm1pc3Npb24gdG8gaGF2ZSBWTXMgbG9jYWwgaW4gc2NvcGUgdG8gdGhlaXIgZGVjbGFyaW5nIHRlbXBsYXRlCiAgbm90ZSB0aGF0IHRoaXMgaXMgcmVhbGx5IHRha2VuIGNhcmUgb2YgaW4gdGhlIFZNTWFuYWdlciBjbGFzcywgYnV0CiAgd2UgbmVlZCBpdCBoZXJlIGZvciBnYXRpbmcgcHVycG9zZXMgaW4gYWRkVk0KICBldmVudHVhbGx5LCBJIHdpbGwgc2xpZGUgdGhpcyBhbGwgaW50byB0aGUgbWFuYWdlciwgbWF5YmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLmh0bWwjc2V0VGVtcGxhdGVMb2NhbElubGluZVZNKGJvb2xlYW4pIj48Qj5zZXRUZW1wbGF0ZUxvY2FsSW5saW5lVk0oYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjc2V0VGVtcGxhdGVQYXRoKGphdmEuaW8uRmlsZSkiPjxCPnNldFRlbXBsYXRlUGF0aChGaWxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD5TZXQgdGhlIHBhdGggdG8gdGhlIHRlbXBsYXRlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjc2V0VGVtcGxhdGVQYXRoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUZW1wbGF0ZVBhdGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPlNldCB0aGUgdGVtcGxhdGUgcGF0aCwgd2hlcmUgVGV4ZW4gd2lsbCBsb29rCiBmb3IgVmVsb2NpdHkgdGVtcGxhdGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwjc2V0VGVtcGxhdGVQYXRoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUZW1wbGF0ZVBhdGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+W1JFUVVJUkVEXSBTZXQgdGhlIHBhdGggd2hlcmUgVmVsb2NpdHkgd2lsbCBsb29rCiBmb3IgdGVtcGxhdGVzIHVzaW5nIHRoZSBmaWxlIHRlbXBsYXRlCiBsb2FkZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjc2V0VGl0bGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFRpdGxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNzZXR1cCgpIj48Qj5zZXR1cCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwiPlZNUHJveHlBcmc8L0E+CjxERD5kb2VzIHRoZSBob3VzZWtlZXBpbmcgdXBvbiBjcmVhdGlvbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sI3NldFVwKCkiPjxCPnNldFVwKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RDYXNlLmh0bWwiPlRlbXBsYXRlVGVzdENhc2U8L0E+CjxERD5TZXRzIHVwIHRoZSB0ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuQ2xhc3NwYXRoVGVzdENhc2UuaHRtbCNzZXRVcCgpIj48Qj5zZXRVcCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5DbGFzc3BhdGhUZXN0Q2FzZS5odG1sIj5UZXhlbkNsYXNzcGF0aFRlc3RDYXNlPC9BPgo8REQ+U2V0cyB1cCB0aGUgdGVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlblRlc3RDYXNlLmh0bWwjc2V0VXAoKSI+PEI+c2V0VXAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuVGVzdENhc2UuaHRtbCI+VGV4ZW5UZXN0Q2FzZTwvQT4KPEREPlNldHMgdXAgdGhlIHRlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCNzZXR1cChvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnNldHVwKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI3NldHVwTWFjcm8oamF2YS5sYW5nLlN0cmluZ1tdLCBpbnRbXSkiPjxCPnNldHVwTWFjcm8oU3RyaW5nW10sIGludFtdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+YmFzaWMgVk0gc2V0dXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZlbG9jaW1hY3JvUHJveHkuaHRtbCNzZXR1cFByb3h5QXJncyhqYXZhLmxhbmcuU3RyaW5nW10sIGludFtdKSI+PEI+c2V0dXBQcm94eUFyZ3MoU3RyaW5nW10sIGludFtdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCNzZXRVc2VDbGFzc3BhdGgoYm9vbGVhbikiPjxCPnNldFVzZUNsYXNzcGF0aChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+U2V0IHRoZSB1c2Ugb2YgdGhlIGNsYXNzcGF0aCBpbiBsb2NhdGluZyB0ZW1wbGF0ZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCNzZXRWYWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldFZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCI+QVNUUmVmZXJlbmNlPC9BPgo8REQ+U2V0cyB0aGUgdmFsdWUgb2YgYSBjb21wbGV4IHJlZmVyZW5jZSAoc29tZXRoaW5nIGxpa2UgJGZvby5iYXIpCiAgQ3VycmVudGx5IHVzZWQgYnkgQVNUU2V0UmVmZXJlbmNlKCkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjc2V0VmVsb2NpdHlFbmdpbmUob3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuVmVsb2NpdHlFbmdpbmUpIj48Qj5zZXRWZWxvY2l0eUVuZ2luZShWZWxvY2l0eUVuZ2luZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5TZXQgdGhlIHZlbG9jaXR5IGVuZ2luZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCNzZXRWZWxvY2l0eVByb3BlcnRpZXNGaWxlKGphdmEuaW8uRmlsZSkiPjxCPnNldFZlbG9jaXR5UHJvcGVydGllc0ZpbGUoRmlsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+QWxsb3cgcGVvcGxlIHRvIHNldCB0aGUgcGF0aCB0byB0aGUgdmVsb2NpdHkucHJvcGVydGllcyBmaWxlCiBUaGlzIGZpbGUgaXMgZm91bmQgcmVsYXRpdmUgdG8gdGhlIHBhdGggd2hlcmUgdGhlIEpWTSB3YXMgcnVuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCNzZXRXcml0ZXIoamF2YS5pby5Xcml0ZXIpIj48Qj5zZXRXcml0ZXIoV3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLk1ldGhvZFByb3ZpZGVyLmh0bWwjc2hvcnRNZXRob2Qoc2hvcnQpIj48Qj5zaG9ydE1ldGhvZChzaG9ydCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlci5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZS5NZXRob2RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvTnVsbFNldEV2ZW50SGFuZGxlci5odG1sI3Nob3VsZExvZ09uTnVsbFNldChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2hvdWxkTG9nT25OdWxsU2V0KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuZXZlbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvZXZlbnQvTnVsbFNldEV2ZW50SGFuZGxlci5odG1sIj5OdWxsU2V0RXZlbnRIYW5kbGVyPC9BPgo8REQ+Q2FsbGVkIHdoZW4gdGhlIFJIUyBvZiBhICNzZXQoKSBpcyBudWxsLCB3aGljaCB3aWxsIHJlc3VsdAogIGluIGEgbnVsbCBMSFMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9FdmVudENhcnRyaWRnZS5odG1sI3Nob3VsZExvZ09uTnVsbFNldChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2hvdWxkTG9nT25OdWxsU2V0KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5ldmVudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9ldmVudC9FdmVudENhcnRyaWRnZS5odG1sIj5FdmVudENhcnRyaWRnZTwvQT4KPEREPkltcGxlbWVudGF0aW9uIG9mIE51bGxTZXRFdmVudEhhbmRsZXIgbWV0aG9kCiAgPGNvZGU+c2hvdWxkTG9nT25OdWxsU2V0KCk8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sI3Nob3VsZExvZ09uTnVsbFNldChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2hvdWxkTG9nT25OdWxsU2V0KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sIj5FdmVudEhhbmRsaW5nVGVzdENhc2U8L0E+CjxERD5FdmVudCBoYW5kbGVyIGZvciB3aGVuIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKICBhICNzZXQoKSBkaXJlY3RpdmUgaXMgbnVsbCwgd2hpY2ggcmVzdWx0cyBpbiAKICBhIGxvZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L21pc2MvVGVzdC5odG1sI3Nob3VsZExvZ09uTnVsbFNldChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2hvdWxkTG9nT25OdWxsU2V0KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QubWlzYy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvbWlzYy9UZXN0Lmh0bWwiPlRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db25maWd1cmF0aW9uVGVzdENhc2UuaHRtbCNzaG93SXRlcmF0b3IoamF2YS5pby5GaWxlV3JpdGVyLCBqYXZhLnV0aWwuSXRlcmF0b3IpIj48Qj5zaG93SXRlcmF0b3IoRmlsZVdyaXRlciwgSXRlcmF0b3IpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29uZmlndXJhdGlvblRlc3RDYXNlLmh0bWwiPkNvbmZpZ3VyYXRpb25UZXN0Q2FzZTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbW1vbnNFeHRQcm9wVGVzdENhc2UuaHRtbCNzaG93SXRlcmF0b3IoamF2YS5pby5GaWxlV3JpdGVyLCBqYXZhLnV0aWwuSXRlcmF0b3IpIj48Qj5zaG93SXRlcmF0b3IoRmlsZVdyaXRlciwgSXRlcmF0b3IpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29tbW9uc0V4dFByb3BUZXN0Q2FzZS5odG1sIj5Db21tb25zRXh0UHJvcFRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCNzaG93Tm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNob3dOb2RlKE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgdGhlIHR5cGUgb2Ygbm9kZXMgYW5kIG9wdGlvbmFsbHkgdGhlCiBmaXJzdCB0b2tlbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNzaG93UGVyc29uKG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci5QZXJzb24pIj48Qj5zaG93UGVyc29uKFBlcnNvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjc2hvd1N0YWNrVHJhY2UoKSI+PEI+c2hvd1N0YWNrVHJhY2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5BZGRlZCB0aGlzIHRvIGNoZWNrIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbgogaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRyeWluZyB0byBnZXQgcHJvcGVydGllcyBmcm9tIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjc2hvd1Rva2VucyI+PEI+c2hvd1Rva2VuczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db25maWd1cmF0aW9uVGVzdENhc2UuaHRtbCNzaG93VmVjdG9yKGphdmEuaW8uRmlsZVdyaXRlciwgamF2YS51dGlsLlZlY3RvcikiPjxCPnNob3dWZWN0b3IoRmlsZVdyaXRlciwgVmVjdG9yKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sIj5Db25maWd1cmF0aW9uVGVzdENhc2U8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwjc2hvd1ZlY3RvcihqYXZhLmlvLkZpbGVXcml0ZXIsIGphdmEudXRpbC5WZWN0b3IpIj48Qj5zaG93VmVjdG9yKEZpbGVXcml0ZXIsIFZlY3Rvcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwiPkNvbW1vbnNFeHRQcm9wVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvTG9nNEpMb2dTeXN0ZW0uaHRtbCNzaHV0ZG93bigpIj48Qj5zaHV0ZG93bigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2c0SkxvZ1N5c3RlbS5odG1sIj5Mb2c0SkxvZ1N5c3RlbTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0Nsb3NlIGFsbCBkZXN0aW5hdGlvbnMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvU2ltcGxlTG9nNEpMb2dTeXN0ZW0uaHRtbCNzaHV0ZG93bigpIj48Qj5zaHV0ZG93bigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9TaW1wbGVMb2c0SkxvZ1N5c3RlbS5odG1sIj5TaW1wbGVMb2c0SkxvZ1N5c3RlbTwvQT4KPEREPkNsb3NlIGFsbCBkZXN0aW5hdGlvbnMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjc2h1dGRvd24oKSI+PEI+c2h1dGRvd24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPlByb3Blcmx5IHNodXQgZG93biB0aGUgZ2VuZXJhdG9yLCByaWdodCBub3cKIHRoaXMgaXMgc2ltcGx5IGZsdXNoaW5nIGFuZCBjbG9zaW5nIHRoZSBmaWxlCiB3cml0ZXJzIHRoYXQgd2UgaGF2ZSBiZWVuIGhvbGRpbmcgb24gdG8uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwiPjxCPlNpbXBsZUxvZzRKTG9nU3lzdGVtPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvU2ltcGxlTG9nNEpMb2dTeXN0ZW0uaHRtbCI+U2ltcGxlTG9nNEpMb2dTeXN0ZW08L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiBhIHNpbXBsZSBsb2c0aiBzeXN0ZW0gdGhhdCB3aWxsIGVpdGhlcgogIGxhdGNoIG9udG8gYW4gZXhpc3RpbmcgY2F0ZWdvcnksIG9yIGp1c3QgZG8gYSBzaW1wbGUKICByb2xsaW5nIGZpbGUgbG9nLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1NpbXBsZUxvZzRKTG9nU3lzdGVtLmh0bWwjU2ltcGxlTG9nNEpMb2dTeXN0ZW0oKSI+PEI+U2ltcGxlTG9nNEpMb2dTeXN0ZW0oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUubG9nLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvU2ltcGxlTG9nNEpMb2dTeXN0ZW0uaHRtbCI+U2ltcGxlTG9nNEpMb2dTeXN0ZW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPjxCPlNpbXBsZU5vZGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjU2ltcGxlTm9kZShpbnQpIj48Qj5TaW1wbGVOb2RlKGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjU2ltcGxlTm9kZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlBhcnNlciwgaW50KSI+PEI+U2ltcGxlTm9kZShQYXJzZXIsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TaW1wbGVQb29sLmh0bWwiPjxCPlNpbXBsZVBvb2w8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU2ltcGxlUG9vbC5odG1sIj5TaW1wbGVQb29sPC9BPi48REQ+U2ltcGxlIG9iamVjdCBwb29sLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU2ltcGxlUG9vbC5odG1sI1NpbXBsZVBvb2woaW50KSI+PEI+U2ltcGxlUG9vbChpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU2ltcGxlUG9vbC5odG1sIj5TaW1wbGVQb29sPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1NJTkdMRV9MSU5FX0NPTU1FTlQiPjxCPlNJTkdMRV9MSU5FX0NPTU1FTlQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNzaW5nbGVMZXZlbFJlZiI+PEI+c2luZ2xlTGV2ZWxSZWY8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+dGhlICdkZS1kb2xsYXJlZCcgcmVmZXJlbmNlIGlmIHdlIGFyZSBhIHJlZiBidXQgZG9uJ3QgaGF2ZSBhIG1ldGhvZCBhdHRhY2hlZAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL0FycmF5SXRlcmF0b3IuaHRtbCNzaXplIj48Qj5zaXplPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9BcnJheUl0ZXJhdG9yLmh0bWwiPkFycmF5SXRlcmF0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwjc2l6ZSgpIj48Qj5zaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjU2tpcExleGljYWxBY3Rpb25zKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuVG9rZW4pIj48Qj5Ta2lwTGV4aWNhbEFjdGlvbnMoVG9rZW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI3NvdXJjZUluaXRpYWxpemVyTGlzdCI+PEI+c291cmNlSW5pdGlhbGl6ZXJMaXN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwiPlJlc291cmNlTWFuYWdlckltcGw8L0E+CjxERD5UaGlzIGlzIGEgbGlzdCBvZiB0aGUgdGVtcGxhdGUgaW5wdXQgc3RyZWFtIHNvdXJjZQogaW5pdGlhbGl6ZXJzLCBiYXNpY2FsbHkgcHJvcGVydGllcyBmb3IgYSBwYXJ0aWN1bGFyCiB0ZW1wbGF0ZSBzdHJlYW0gc291cmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNzb3VyY2VJbml0aWFsaXplck1hcCI+PEI+c291cmNlSW5pdGlhbGl6ZXJNYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+UmVzb3VyY2VNYW5hZ2VySW1wbDwvQT4KPEREPlRoaXMgaXMgYSBtYXAgb2YgcHVibGljIG5hbWUgb2YgdGhlIHRlbXBsYXRlCiBzdHJlYW0gc291cmNlIHRvIGl0J3MgaW5pdGlhbGl6ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCNzb3VyY2V0ZW1wbGF0ZSI+PEI+c291cmNldGVtcGxhdGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5Lmh0bWwiPlZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwjc3AiPjxCPnNwPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL0pKVFBhcnNlclN0YXRlLmh0bWwiPkpKVFBhcnNlclN0YXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlRXhjZXB0aW9uLmh0bWwjc3BlY2lhbENvbnN0cnVjdG9yIj48Qj5zcGVjaWFsQ29uc3RydWN0b3I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCI+UGFyc2VFeGNlcHRpb248L0E+CjxERD5UaGlzIHZhcmlhYmxlIGRldGVybWluZXMgd2hpY2ggY29uc3RydWN0b3Igd2FzIHVzZWQgdG8gY3JlYXRlCiB0aGlzIG9iamVjdCBhbmQgdGhlcmVieSBhZmZlY3RzIHRoZSBzZW1hbnRpY3Mgb2YgdGhlCiAiZ2V0TWVzc2FnZSIgbWV0aG9kIChzZWUgYmVsb3cpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGVVdGlscy5odG1sI3NwZWNpYWxUZXh0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuVG9rZW4pIj48Qj5zcGVjaWFsVGV4dChUb2tlbik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZVV0aWxzLmh0bWwiPk5vZGVVdGlsczwvQT4KPEREPkNvbGxlY3QgYWxsIHRoZSA8U1BFQ0lBTF9UT0tFTj5zIHRoYXQKIGFyZSBjYXJyaWVkIGFsb25nIHdpdGggYSB0b2tlbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW4uaHRtbCNzcGVjaWFsVG9rZW4iPjxCPnNwZWNpYWxUb2tlbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4KPEREPlRoaXMgZmllbGQgaXMgdXNlZCB0byBhY2Nlc3Mgc3BlY2lhbCB0b2tlbnMgdGhhdCBvY2N1ciBwcmlvciB0byB0aGlzCiB0b2tlbiwgYnV0IGFmdGVyIHRoZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcgcmVndWxhciAobm9uLXNwZWNpYWwpIHRva2VuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjc3BsaXQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPnNwbGl0KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sIj5TdHJpbmdVdGlsczwvQT4KPEREPkNyZWF0ZSBhIHN0cmluZyBhcnJheSBmcm9tIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBkZWxpbQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjc3RhY2tUcmFjZShqYXZhLmxhbmcuVGhyb3dhYmxlKSI+PEI+c3RhY2tUcmFjZShUaHJvd2FibGUpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwiPlN0cmluZ1V0aWxzPC9BPgo8REQ+UmV0dXJucyB0aGUgb3V0cHV0IG9mIHByaW50U3RhY2tUcmFjZSBhcyBhIFN0cmluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwjc3RhdGUiPjxCPnN0YXRlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9TaW1wbGVOb2RlLmh0bWwiPlNpbXBsZU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNzdGF0ZSI+PEI+c3RhdGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCNzdGF0ZWludCI+PEI+c3RhdGVpbnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjU3RhdGVtZW50KCkiPjxCPlN0YXRlbWVudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+VGhlc2UgYXJlIHRoZSB0eXBlcyBvZiBzdGF0ZW1lbnRzIHRoYXQKIGFyZSBhY2NlcHRhYmxlIGluIFZlbG9jaXR5IHRlbXBsYXRlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjc3RhdGVTdGFjayI+PEI+c3RhdGVTdGFjazwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlclRva2VuTWFuYWdlci5odG1sI3N0YXRlU3RhY2tQb3AoKSI+PEI+c3RhdGVTdGFja1BvcCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+cHVzaGVzIHRoZSBjdXJyZW50IHN0YXRlIG9udG8gdGhlICdzdGF0ZSBzdGFjaycsCiAgYW5kIG1haW50YWlucyB0aGUgcGFyZW5zIGNvdW50cwogIHB1YmxpYyBiZWNhdXNlIHdlIG5lZWQgaXQgaW4gUEQgJiBWTSBoYW5kbGluZwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNzdGF0ZVN0YWNrUHVzaCgpIj48Qj5zdGF0ZVN0YWNrUHVzaCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCI+UGFyc2VyVG9rZW5NYW5hZ2VyPC9BPgo8REQ+cG9wcyBhIHN0YXRlIG9mZiB0aGUgc3RhY2ssIGFuZCByZXN0b3JlcyBwYXJlbiBjb3VudHMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW5NZ3JFcnJvci5odG1sI1NUQVRJQ19MRVhFUl9FUlJPUiI+PEI+U1RBVElDX0xFWEVSX0VSUk9SPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbk1nckVycm9yLmh0bWwiPlRva2VuTWdyRXJyb3I8L0E+CjxERD5BbiBhdHRlbXB0IHdhc3MgbWFkZSB0byBjcmVhdGUgYSBzZWNvbmQgaW5zdGFuY2Ugb2YgYSBzdGF0aWMgdG9rZW4gbWFuYWdlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjc3RhdGljRmxhZyI+PEI+c3RhdGljRmxhZzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwjc3RhdGljT2JqZWN0Ij48Qj5zdGF0aWNPYmplY3Q8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+cmVmZXJlbmNlIGZvciB0aGUgb2JqZWN0IGlmIHdlIHByb3h5IGZvciBhIHN0YXRpYyBhcmcgbGlrZSBhbiBOdW1iZXJMaXRlcmFsCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1NUT1BfRElSRUNUSVZFIj48Qj5TVE9QX0RJUkVDVElWRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjU3RvcFN0YXRlbWVudCgpIj48Qj5TdG9wU3RhdGVtZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBjb3JyZXNwb25kcyB0byB0aGUgI3N0b3AKIGRpcmVjdGl2ZSB3aGljaCBqdXN0IHNpbXVsYXRlcyBhbmQgRU9GCiBzbyB0aGF0IHBhcnNpbmcgc3RvcHMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1NUUklOR19MSVRFUkFMIj48Qj5TVFJJTkdfTElURVJBTDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjU3RyaW5nTGl0ZXJhbCgpIj48Qj5TdHJpbmdMaXRlcmFsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sI3N0cmluZ1N1YnN0aXR1dGlvbihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuSGFzaHRhYmxlKSI+PEI+c3RyaW5nU3Vic3RpdHV0aW9uKFN0cmluZywgSGFzaHRhYmxlKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sIj5TdHJpbmdVdGlsczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjc3RyaW5nU3Vic3RpdHV0aW9uKGphdmEubGFuZy5TdHJpbmcsIGphdmEudXRpbC5NYXApIj48Qj5zdHJpbmdTdWJzdGl0dXRpb24oU3RyaW5nLCBNYXApPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwiPlN0cmluZ1V0aWxzPC9BPgo8REQ+UGVyZm9ybSBhIHNlcmllcyBvZiBzdWJzdGl0dXRpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwiPjxCPlN0cmluZ1V0aWxzPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwiPlN0cmluZ1V0aWxzPC9BPi48REQ+VGhpcyBjbGFzcyBwcm92aWRlcyBzb21lIG1ldGhvZHMgZm9yIGR5bmFtaWNhbGx5CiBpbnZva2luZyBtZXRob2RzIGluIG9iamVjdHMsIGFuZCBzb21lIHN0cmluZwogbWFuaXB1bGF0aW9uIG1ldGhvZHMgdXNlZCBieSB0b3JxdWUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sI1N0cmluZ1V0aWxzKCkiPjxCPlN0cmluZ1V0aWxzKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9TdHJpbmdVdGlscy5odG1sIj5TdHJpbmdVdGlsczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sI3N0eWxlIj48Qj5zdHlsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPnRoZSBzdHlsZT0gYXR0cmlidXRlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjc3R5bGVGaWxlIj48Qj5zdHlsZUZpbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD50aGUgRmlsZSB0byB0aGUgc3R5bGUgZmlsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sI3N0eWxlU2hlZXRMYXN0TW9kaWZpZWQiPjxCPnN0eWxlU2hlZXRMYXN0TW9kaWZpZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwiPkFuYWtpYVRhc2s8L0E+CjxERD5sYXN0IG1vZGlmaWVkIG9mIHRoZSBzdHlsZSBzaGVldAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL1N0cmluZ1V0aWxzLmh0bWwjc3ViKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5zdWIoU3RyaW5nLCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvU3RyaW5nVXRpbHMuaHRtbCI+U3RyaW5nVXRpbHM8L0E+CjxERD5SZXBsYWNlcyBhbGwgaW5zdGFuY2VzIG9mIG9sZFN0cmluZyB3aXRoIG5ld1N0cmluZyBpbiBsaW5lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCNzdWJMaXN0KGludCwgaW50KSI+PEI+c3ViTGlzdChpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCNzdWJzZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPnN1YnNldChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5jb25maWd1cmF0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCI+Q29uZmlndXJhdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NyZWF0ZSBhIENvbmZpZ3VyYXRpb25zIG9iamVjdCB0aGF0IGlzIGEgc3Vic2V0CiBvZiB0aGlzIG9uZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db25maWd1cmF0aW9uVGVzdENhc2UuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sIj5Db25maWd1cmF0aW9uVGVzdENhc2U8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTIuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMi5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTI8L0E+CjxERD5HZXQgdGhlIGNvbnRhaW5pbmcgPGNvZGU+VGVzdFN1aXRlPC9jb2RlPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwiPlZlbG9jaXR5QXBwVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9QYXJzZXJUZXN0Q2FzZS5odG1sI3N1aXRlKCkiPjxCPnN1aXRlKCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCI+UGFyc2VyVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZTMuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5odG1sIj5JbnRyb3NwZWN0b3JUZXN0Q2FzZTM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uVGVzdC5odG1sI3N1aXRlKCkiPjxCPnN1aXRlKCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvTWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvblRlc3QuaHRtbCI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvblRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FdmVudEhhbmRsaW5nVGVzdENhc2UuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sIj5FdmVudEhhbmRsaW5nVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RDYXNlLmh0bWwiPlRlbXBsYXRlVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aUxvYWRlclRlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aUxvYWRlclRlc3RDYXNlLmh0bWwiPk11bHRpTG9hZGVyVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NaXNjVGVzdENhc2UuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L01pc2NUZXN0Q2FzZS5odG1sIj5NaXNjVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FeHRlcm5hbExvZ2dlclRlc3QuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V4dGVybmFsTG9nZ2VyVGVzdC5odG1sIj5FeHRlcm5hbExvZ2dlclRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db250ZXh0U2FmZXR5VGVzdENhc2UuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbnRleHRTYWZldHlUZXN0Q2FzZS5odG1sIj5Db250ZXh0U2FmZXR5VGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbmxpbmVTY29wZVZNVGVzdENhc2UuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0lubGluZVNjb3BlVk1UZXN0Q2FzZS5odG1sIj5JbmxpbmVTY29wZVZNVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2ltYWNyb1Rlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2ltYWNyb1Rlc3RDYXNlLmh0bWwiPlZlbG9jaW1hY3JvVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwiPk11bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9BbmFraWFUZXN0Q2FzZS5odG1sI3N1aXRlKCkiPjxCPnN1aXRlKCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQW5ha2lhVGVzdENhc2UuaHRtbCI+QW5ha2lhVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlbkNsYXNzcGF0aFRlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlbkNsYXNzcGF0aFRlc3RDYXNlLmh0bWwiPlRleGVuQ2xhc3NwYXRoVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FbmNvZGluZ1Rlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FbmNvZGluZ1Rlc3RDYXNlLmh0bWwiPkVuY29kaW5nVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwiPkNvbW1vbnNFeHRQcm9wVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5odG1sI3N1aXRlKCkiPjxCPnN1aXRlKCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2U8L0E+CjxERD5HZXQgdGhlIGNvbnRhaW5pbmcgPGNvZGU+VGVzdFN1aXRlPC9jb2RlPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlblRlc3RDYXNlLmh0bWwjc3VpdGUoKSI+PEI+c3VpdGUoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlblRlc3RDYXNlLmh0bWwiPlRleGVuVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc3BhdGhSZXNvdXJjZVRlc3QuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sIj5DbGFzc3BhdGhSZXNvdXJjZVRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc2xvYWRlckNoYW5nZVRlc3QuaHRtbCNzdWl0ZSgpIj48Qj5zdWl0ZSgpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzbG9hZGVyQ2hhbmdlVGVzdC5odG1sIj5DbGFzc2xvYWRlckNoYW5nZVRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwjU3dpdGNoVG8oaW50KSI+PEI+U3dpdGNoVG8oaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9UXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5UPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwjdGFibGVOYW1lIj48Qj50YWJsZU5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uay5odG1sI3RlbXBsYXRlIj48Qj50ZW1wbGF0ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5LlR3b25rLmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uazwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9UZW1wbGF0ZS5odG1sIj48Qj5UZW1wbGF0ZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1RlbXBsYXRlLmh0bWwiPlRlbXBsYXRlPC9BPi48REQ+VGhpcyBjbGFzcyBpcyB1c2VkIGZvciBjb250cm9sbGluZyBhbGwgdGVtcGxhdGUKIG9wZXJhdGlvbnMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjVEVNUExBVEVfUEFUSCI+PEI+VEVNUExBVEVfUEFUSDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwiPkdlbmVyYXRvcjwvQT4KPEREPldoZXJlIHRoZSB2ZWxvY2l0eSB0ZW1wbGF0ZXMgbGl2ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVGVtcGxhdGUuaHRtbCNUZW1wbGF0ZSgpIj48Qj5UZW1wbGF0ZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9UZW1wbGF0ZS5odG1sIj5UZW1wbGF0ZTwvQT4KPEREPkRlZmF1bHQgY29uc3RydWN0b3IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2ltYWNyb1Rlc3RDYXNlLmh0bWwjdGVtcGxhdGUxIj48Qj50ZW1wbGF0ZTE8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaW1hY3JvVGVzdENhc2UuaHRtbCI+VmVsb2NpbWFjcm9UZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9EYXRhU291cmNlUmVzb3VyY2VMb2FkZXIuaHRtbCN0ZW1wbGF0ZUNvbHVtbiI+PEI+dGVtcGxhdGVDb2x1bW48L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRGF0YVNvdXJjZVJlc291cmNlTG9hZGVyLmh0bWwiPkRhdGFTb3VyY2VSZXNvdXJjZUxvYWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCN0ZW1wbGF0ZUV4aXN0cyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+dGVtcGxhdGVFeGlzdHMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPkRldGVybWluZXMgaWYgYSB0ZW1wbGF0ZSBpcyBhY2Nlc3NhYmxlIHZpYSB0aGUgY3VycmVudGx5IAogICBjb25maWd1cmVkIHJlc291cmNlIGxvYWRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sI3RlbXBsYXRlRXhpc3RzKGphdmEubGFuZy5TdHJpbmcpIj48Qj50ZW1wbGF0ZUV4aXN0cyhTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSByZXNvdXJjZUV4aXN0cyhTdHJpbmcpIGluc3RlYWQuPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sI3RlbXBsYXRlTG9jYWwiPjxCPnRlbXBsYXRlTG9jYWw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5zZXRzIGlmIHRlbXBsYXRlLWxvY2FsIG5hbWVzcGFjZSBpbiB1c2VkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbmZvLmh0bWwjdGVtcGxhdGVOYW1lIj48Qj50ZW1wbGF0ZU5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9JbmZvLmh0bWwiPkluZm88L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwjdGVtcGxhdGVOYW1lU3RhY2siPjxCPnRlbXBsYXRlTmFtZVN0YWNrPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9JbnRlcm5hbENvbnRleHRCYXNlLmh0bWwiPkludGVybmFsQ29udGV4dEJhc2U8L0E+CjxERD5UZW1wbGF0ZSBuYW1lIHN0YWNrLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3ZpZXcvVGVtcGxhdGVOb2RlVmlldy5odG1sIj48Qj5UZW1wbGF0ZU5vZGVWaWV3PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3Qudmlldy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3Qvdmlldy9UZW1wbGF0ZU5vZGVWaWV3Lmh0bWwiPlRlbXBsYXRlTm9kZVZpZXc8L0E+LjxERD5TaW1wbGUgY2xhc3MgZm9yIGR1bXBpbmcgdGhlIEFTVCBmb3IgYSB0ZW1wbGF0ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3ZpZXcvVGVtcGxhdGVOb2RlVmlldy5odG1sI1RlbXBsYXRlTm9kZVZpZXcoamF2YS5sYW5nLlN0cmluZykiPjxCPlRlbXBsYXRlTm9kZVZpZXcoU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3Qudmlldy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3Qvdmlldy9UZW1wbGF0ZU5vZGVWaWV3Lmh0bWwiPlRlbXBsYXRlTm9kZVZpZXc8L0E+CjxERD5EZWZhdWx0IGNvbnN0cnVjdG9yOiBzZXRzIHVwIHRoZSBWZWxvY2l0eQogUnVudGltZSwgY3JlYXRlcyB0aGUgdmlzaXRvciBmb3IgdHJhdmVyc2luZwogdGhlIG5vZGUgc3RydWN0dXJlIGFuZCB0aGVuIHByb2R1Y2VzIHRoZQogdmlzdWFsIHJlcHJlc2VudGF0aW9uIGJ5IHRoZSB2aXNpdGF0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sI3RlbXBsYXRlUGF0aCI+PEI+dGVtcGxhdGVQYXRoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sIj5BbmFraWFUYXNrPC9BPgo8REQ+dGhlIHRlbXBsYXRlIHBhdGgKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI3RlbXBsYXRlUGF0aCI+PEI+dGVtcGxhdGVQYXRoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi5hbnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9hbnQvVGV4ZW5UYXNrLmh0bWwiPlRleGVuVGFzazwvQT4KPEREPlRoaXMgaXMgd2hlcmUgVmVsb2NpdHkgd2lsbCBsb29rIGZvciB0ZW1wbGF0ZXMKIHVzaW5nIHRoZSBmaWxlIHRlbXBsYXRlIGxvYWRlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvRmlsZVJlc291cmNlTG9hZGVyLmh0bWwjdGVtcGxhdGVQYXRocyI+PEI+dGVtcGxhdGVQYXRoczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL2xvYWRlci9GaWxlUmVzb3VyY2VMb2FkZXIuaHRtbCI+RmlsZVJlc291cmNlTG9hZGVyPC9BPgo8REQ+VXNlZCB0byBtYXAgdGhlIHBhdGggdGhhdCBhIHRlbXBsYXRlIHdhcyBmb3VuZCBvbgogc28gdGhhdCB3ZSBjYW4gcHJvcGVybHkgY2hlY2sgdGhlIG1vZGlmaWNhdGlvbgogdGltZXMgb2YgdGhlIGZpbGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdEJhc2UuaHRtbCI+PEI+VGVtcGxhdGVUZXN0QmFzZTwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0QmFzZS5odG1sIj5UZW1wbGF0ZVRlc3RCYXNlPC9BPi48REQ+VGhpcyBpcyBhIGJhc2UgaW50ZXJmYWNlIHRoYXQgY29udGFpbnMgYSBidW5jaCBvZiBzdGF0aWMgZmluYWwKIHN0cmluZ3MgdGhhdCBhcmUgb2YgdXNlIHdoZW4gdGVzdGluZyB0ZW1wbGF0ZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RDYXNlLmh0bWwiPjxCPlRlbXBsYXRlVGVzdENhc2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sIj5UZW1wbGF0ZVRlc3RDYXNlPC9BPi48REQ+RWFzaWx5IGFkZCB0ZXN0IGNhc2VzIHdoaWNoIGV2YWx1YXRlIHRlbXBsYXRlcyBhbmQgY2hlY2sgdGhlaXIgb3V0cHV0LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sI1RlbXBsYXRlVGVzdENhc2UoamF2YS5sYW5nLlN0cmluZykiPjxCPlRlbXBsYXRlVGVzdENhc2UoU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdENhc2UuaHRtbCI+VGVtcGxhdGVUZXN0Q2FzZTwvQT4KPEREPkNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0U3VpdGUuaHRtbCI+PEI+VGVtcGxhdGVUZXN0U3VpdGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0U3VpdGUuaHRtbCI+VGVtcGxhdGVUZXN0U3VpdGU8L0E+LjxERD5UZXN0IHN1aXRlIGZvciBUZW1wbGF0ZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RTdWl0ZS5odG1sI1RlbXBsYXRlVGVzdFN1aXRlKCkiPjxCPlRlbXBsYXRlVGVzdFN1aXRlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RTdWl0ZS5odG1sIj5UZW1wbGF0ZVRlc3RTdWl0ZTwvQT4KPEREPkNyZWF0ZXMgYW4gaW5zdGFjZSBvZiB0aGUgQXBhY2hlIFZlbG9jaXR5IHRlc3Qgc3VpdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvbWlzYy9UZXN0Lmh0bWwiPjxCPlRlc3Q8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5taXNjLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9taXNjL1Rlc3QuaHRtbCI+VGVzdDwvQT4uPEREPlRoaXMgY2xhc3MgdGhlIHRlc3RiZWQgZm9yIFZlbG9jaXR5LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW5saW5lU2NvcGVWTVRlc3RDYXNlLmh0bWwjVEVTVF9DQVNFX05BTUUiPjxCPlRFU1RfQ0FTRV9OQU1FPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW5saW5lU2NvcGVWTVRlc3RDYXNlLmh0bWwiPklubGluZVNjb3BlVk1UZXN0Q2FzZTwvQT4KPEREPlRoZSBuYW1lIG9mIHRoaXMgdGVzdCBjYXNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdEJhc2UuaHRtbCNURVNUX0NBU0VfUFJPUEVSVElFUyI+PEI+VEVTVF9DQVNFX1BST1BFUlRJRVM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0QmFzZS5odG1sIj5UZW1wbGF0ZVRlc3RCYXNlPC9BPgo8REQ+UHJvcGVydGllcyBmaWxlIHRoYXQgbGlzdHMgd2hpY2ggdGVtcGxhdGUgdGVzdHMgdG8gcnVuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sI1RFU1RfQ09ORklHIj48Qj5URVNUX0NPTkZJRzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NvbmZpZ3VyYXRpb25UZXN0Q2FzZS5odG1sIj5Db25maWd1cmF0aW9uVGVzdENhc2U8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUZXN0IGNvbmZpZ3VyYXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9Db21tb25zRXh0UHJvcFRlc3RDYXNlLmh0bWwjVEVTVF9DT05GSUciPjxCPlRFU1RfQ09ORklHPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ29tbW9uc0V4dFByb3BUZXN0Q2FzZS5odG1sIj5Db21tb25zRXh0UHJvcFRlc3RDYXNlPC9BPgo8REQ+VGVzdCBjb25maWd1cmF0aW9uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvbWlzYy9UZXN0Lmh0bWwjVGVzdChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+VGVzdChTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0Lm1pc2MuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L21pc2MvVGVzdC5odG1sIj5UZXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCN0ZXN0QXJncygpIj48Qj50ZXN0QXJncygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCI+UGFyc2VyVGVzdENhc2U8L0E+CjxERD5UZXN0IHRvIHNlZSBpZiBkb24ndCB0b2xlcmFnZSBwYXNzaW5nIHdvcmQgdG9rZW5zIGluIGFueXRoaW5nIGJ1dCB0aGUKICAwdGggYXJnIHRvICNtYWNybygpIGFuZCB0aGUgMXRoIGFyZyB0byBmb3JlYWNoKCkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb24uaHRtbCN0ZXN0Qm9vbGVhbihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+dGVzdEJvb2xlYW4oU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuY29uZmlndXJhdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb248L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUZXN0IHdoZXRoZXIgdGhlIHN0cmluZyByZXByZXNlbnQgYnkgdmFsdWUgbWFwcyB0byBhIGJvb2xlYW4KIHZhbHVlIG9yIG5vdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXN0Q2xhc3Nsb2FkZXIuaHRtbCN0ZXN0Y2xhc3MiPjxCPnRlc3RjbGFzczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1Rlc3RDbGFzc2xvYWRlci5odG1sIj5UZXN0Q2xhc3Nsb2FkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXN0Q2xhc3Nsb2FkZXIuaHRtbCI+PEI+VGVzdENsYXNzbG9hZGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1Rlc3RDbGFzc2xvYWRlci5odG1sIj5UZXN0Q2xhc3Nsb2FkZXI8L0E+LjxERD5TaW1wbGUgKHJlYWwgc2ltcGxlLi4uKSBjbGFzc2xvYWRlciB0aGF0IGRlcGVuZHMKICBvbiBhIEZvby5jbGFzcyBiZWluZyBsb2NhdGVkIGluIHRoZSBjbGFzc2xvYWRlcgogIGRpcmVjdG9yeSB1bmRlciB0ZXN0PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXN0Q2xhc3Nsb2FkZXIuaHRtbCNUZXN0Q2xhc3Nsb2FkZXIoKSI+PEI+VGVzdENsYXNzbG9hZGVyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXN0Q2xhc3Nsb2FkZXIuaHRtbCI+VGVzdENsYXNzbG9hZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCN0ZXN0RXF1YWxzKCkiPjxCPnRlc3RFcXVhbHMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1BhcnNlclRlc3RDYXNlLmh0bWwiPlBhcnNlclRlc3RDYXNlPC9BPgo8REQ+VGVzdCB0byBtYWtlIHN1cmUgdGhhdCB1c2luZyAnPScgaW4gI2lmKCkgdGhyb3dzIGEgUEVFCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvUGFyc2VyVGVzdENhc2UuaHRtbCN0ZXN0TWFjcm8oKSI+PEI+dGVzdE1hY3JvKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9QYXJzZXJUZXN0Q2FzZS5odG1sIj5QYXJzZXJUZXN0Q2FzZTwvQT4KPEREPlRlc3QgdG8gc2VlIGlmIHdlIGZvcmNlIHRoZSBmaXJzdCBhcmcgdG8gI21hY3JvKCkgdG8gYmUgYSB3b3JkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0U3VpdGUuaHRtbCN0ZXN0UHJvcGVydGllcyI+PEI+dGVzdFByb3BlcnRpZXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RlbXBsYXRlVGVzdFN1aXRlLmh0bWwiPlRlbXBsYXRlVGVzdFN1aXRlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPjxCPlRlc3RQcm92aWRlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPi48REQ+VGhpcyBjbGFzcyBpcyB1c2VkIGJ5IHRoZSB0ZXN0YmVkLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwjVGVzdFByb3ZpZGVyKCkiPjxCPlRlc3RQcm92aWRlcigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5wcm92aWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvcHJvdmlkZXIvVGVzdFByb3ZpZGVyLmh0bWwiPlRlc3RQcm92aWRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlMy5odG1sI3Rlc3RTaW1wbGUoKSI+PEI+dGVzdFNpbXBsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UzLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlMzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuQ2xhc3NwYXRoVGVzdENhc2UuaHRtbCI+PEI+VGV4ZW5DbGFzc3BhdGhUZXN0Q2FzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZXhlbkNsYXNzcGF0aFRlc3RDYXNlLmh0bWwiPlRleGVuQ2xhc3NwYXRoVGVzdENhc2U8L0E+LjxERD5UaGlzIGlzIGEgdGVzdCBjYXNlIGZvciBUZXhlbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuQ2xhc3NwYXRoVGVzdENhc2UuaHRtbCNUZXhlbkNsYXNzcGF0aFRlc3RDYXNlKCkiPjxCPlRleGVuQ2xhc3NwYXRoVGVzdENhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuQ2xhc3NwYXRoVGVzdENhc2UuaHRtbCI+VGV4ZW5DbGFzc3BhdGhUZXN0Q2FzZTwvQT4KPEREPkNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+PEI+VGV4ZW5UYXNrPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPi48REQ+QW4gYW50IHRhc2sgZm9yIGdlbmVyYXRpbmcgb3V0cHV0IGJ5IHVzaW5nIFZlbG9jaXR5PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sI1RleGVuVGFzaygpIj48Qj5UZXhlblRhc2soKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRleGVuLmFudC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCI+VGV4ZW5UYXNrPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5UZXN0Q2FzZS5odG1sIj48Qj5UZXhlblRlc3RDYXNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1RleGVuVGVzdENhc2UuaHRtbCI+VGV4ZW5UZXN0Q2FzZTwvQT4uPEREPlRoaXMgaXMgYSB0ZXN0IGNhc2UgZm9yIFRleGVuLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5UZXN0Q2FzZS5odG1sI1RleGVuVGVzdENhc2UoKSI+PEI+VGV4ZW5UZXN0Q2FzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGV4ZW5UZXN0Q2FzZS5odG1sIj5UZXhlblRlc3RDYXNlPC9BPgo8REQ+Q3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjVEVYVCI+PEI+VEVYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjVGV4dCgpIj48Qj5UZXh0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IgYWxsb3dpbmcKIGFsbCBub24tZ3JhbW1hciB0ZXh0IHRvIHBhc3MgdGhyb3VnaAogdW5zY2F0aGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI3RoZUFQTFJ1bGVzKCkiPjxCPnRoZUFQTFJ1bGVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sI3RoZUphciI+PEI+dGhlSmFyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sIj5KYXJIb2xkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rpb25DYWNoZURhdGEuaHRtbCN0aGluZ3kiPjxCPnRoaW5neTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0ludHJvc3BlY3Rpb25DYWNoZURhdGEuaHRtbCI+SW50cm9zcGVjdGlvbkNhY2hlRGF0YTwvQT4KPEREPk9iamVjdCB0byBwYWlyIHdpdGggY2xhc3MgLSBjdXJyZW50bHkgZWl0aGVyIGEgTWV0aG9kIG9yIAogIEFic3RyYWN0RXhlY3V0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvRXZlbnRIYW5kbGluZ1Rlc3RDYXNlLmh0bWwjdGhyb3dFeGNlcHRpb24oKSI+PEI+dGhyb3dFeGNlcHRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V2ZW50SGFuZGxpbmdUZXN0Q2FzZS5odG1sIj5FdmVudEhhbmRsaW5nVGVzdENhc2U8L0E+CjxERD5zaWxseSBtZXRob2QgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIHRvIHRlc3QKICB0aGUgbWV0aG9kIGludm9jYXRpb24gZXhjZXB0aW9uIGV2ZW50IGhhbmRsaW5nCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sI3RpbWVzdGFtcENvbHVtbiI+PEI+dGltZXN0YW1wQ29sdW1uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0RhdGFTb3VyY2VSZXNvdXJjZUxvYWRlci5odG1sIj5EYXRhU291cmNlUmVzb3VyY2VMb2FkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCN0aXRsZSI+PEI+dGl0bGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QucHJvdmlkZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sIj5UZXN0UHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aUxvYWRlclRlc3RDYXNlLmh0bWwjVE1QTF9GSUxFX0VYVCI+PEI+VE1QTF9GSUxFX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpTG9hZGVyVGVzdENhc2UuaHRtbCI+TXVsdGlMb2FkZXJUZXN0Q2FzZTwvQT4KPEREPlZUTCBmaWxlIGV4dGVuc2lvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9NdWx0aXBsZUZpbGVSZXNvdXJjZVBhdGhUZXN0Lmh0bWwjVE1QTF9GSUxFX0VYVCI+PEI+VE1QTF9GSUxFX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L011bHRpcGxlRmlsZVJlc291cmNlUGF0aFRlc3QuaHRtbCI+TXVsdGlwbGVGaWxlUmVzb3VyY2VQYXRoVGVzdDwvQT4KPEREPlZUTCBmaWxlIGV4dGVuc2lvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RCYXNlLmh0bWwjVE1QTF9GSUxFX0VYVCI+PEI+VE1QTF9GSUxFX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RCYXNlLmh0bWwiPlRlbXBsYXRlVGVzdEJhc2U8L0E+CjxERD5WVEwgZmlsZSBleHRlbnNpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvQ2xhc3NwYXRoUmVzb3VyY2VUZXN0Lmh0bWwjVE1QTF9GSUxFX0VYVCI+PEI+VE1QTF9GSUxFX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzcGF0aFJlc291cmNlVGVzdC5odG1sIj5DbGFzc3BhdGhSZXNvdXJjZVRlc3Q8L0E+CjxERD5WVEwgZmlsZSBleHRlbnNpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI3RvQXJyYXkoKSI+PEI+dG9BcnJheSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9Ob2RlTGlzdC5odG1sI3RvQXJyYXkoamF2YS5sYW5nLk9iamVjdFtdKSI+PEI+dG9BcnJheShPYmplY3RbXSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjdG9rZW4iPjxCPnRva2VuPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW4uaHRtbCI+PEI+VG9rZW48L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4uPEREPkRlc2NyaWJlcyB0aGUgaW5wdXQgdG9rZW4gc3RyZWFtLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI3Rva2VuX3NvdXJjZSI+PEI+dG9rZW5fc291cmNlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW4uaHRtbCNUb2tlbigpIj48Qj5Ub2tlbigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCN0b2tlbkJlZ2luIj48Qj50b2tlbkJlZ2luPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VFeGNlcHRpb24uaHRtbCN0b2tlbkltYWdlIj48Qj50b2tlbkltYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXhjZXB0aW9uPC9BPgo8REQ+VGhpcyBpcyBhIHJlZmVyZW5jZSB0byB0aGUgInRva2VuSW1hZ2UiIGFycmF5IG9mIHRoZSBnZW5lcmF0ZWQKIHBhcnNlciB3aXRoaW4gd2hpY2ggdGhlIHBhcnNlIGVycm9yIG9jY3VycmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCN0b2tlbkltYWdlIj48Qj50b2tlbkltYWdlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwiPlBhcnNlckNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJUb2tlbk1hbmFnZXIuaHRtbCNUb2tlbkxleGljYWxBY3Rpb25zKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuVG9rZW4pIj48Qj5Ub2tlbkxleGljYWxBY3Rpb25zKFRva2VuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyVG9rZW5NYW5hZ2VyLmh0bWwiPlBhcnNlclRva2VuTWFuYWdlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL05vZGVVdGlscy5odG1sI3Rva2VuTGl0ZXJhbChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLlRva2VuKSI+PEI+dG9rZW5MaXRlcmFsKFRva2VuKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9Ob2RlVXRpbHMuaHRtbCI+Tm9kZVV0aWxzPC9BPgo8REQ+Y29tcGxldGUgbm9kZSBsaXRlcmFsCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCI+PEI+VG9rZW5NZ3JFcnJvcjwvQj48L0E+IC0gZXJyb3Igb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCI+VG9rZW5NZ3JFcnJvcjwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCNUb2tlbk1nckVycm9yKCkiPjxCPlRva2VuTWdyRXJyb3IoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW5NZ3JFcnJvci5odG1sIj5Ub2tlbk1nckVycm9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCNUb2tlbk1nckVycm9yKGJvb2xlYW4sIGludCwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcsIGNoYXIsIGludCkiPjxCPlRva2VuTWdyRXJyb3IoYm9vbGVhbiwgaW50LCBpbnQsIGludCwgU3RyaW5nLCBjaGFyLCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbk1nckVycm9yLmh0bWwiPlRva2VuTWdyRXJyb3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW5NZ3JFcnJvci5odG1sI1Rva2VuTWdyRXJyb3IoamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+VG9rZW5NZ3JFcnJvcihTdHJpbmcsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1Rva2VuTWdyRXJyb3IuaHRtbCI+VG9rZW5NZ3JFcnJvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhRWxlbWVudC5odG1sI3RvU3RyaW5nKCkiPjxCPnRvU3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhRWxlbWVudC5odG1sIj5BbmFraWFFbGVtZW50PC9BPgo8REQ+UmV0dXJucyB0aGUgWE1MIHNlcmlhbGl6ZWQgZm9ybSBvZiB0aGlzIGVsZW1lbnQsIGFzIHByb2R1Y2VkIGJ5IHRoZSBkZWZhdWx0CiA8Q09ERT5YTUxPdXRwdXR0ZXI8L0NPREU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvTm9kZUxpc3QuaHRtbCN0b1N0cmluZygpIj48Qj50b1N0cmluZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPgo8REQ+VGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGNvbmNhdGVuYXRpb24gb2Ygc3RyaW5nIAogcmVwcmVzZW50YXRpb25zIG9mIGl0cyBub2Rlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QWx0ZXJuYXRvci5odG1sI3RvU3RyaW5nKCkiPjxCPnRvU3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBbHRlcm5hdG9yLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QWx0ZXJuYXRvcjwvQT4KPEREPlJldHVybnMgdGhlIGN1cnJlbnQgYWx0ZXJuYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBdXRvQWx0ZXJuYXRvci5odG1sI3RvU3RyaW5nKCkiPjxCPnRvU3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBdXRvQWx0ZXJuYXRvci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUF1dG9BbHRlcm5hdG9yPC9BPgo8REQ+UmV0dXJucyB0aGUgY3VycmVudCBhbHRlcm5hdGUsIGFuZCBhdXRvbWF0aWNhbGx5IGFsdGVybmF0ZXMKIHRvIHRoZSBuZXh0IGFsdGVybmF0ZSBpbiBpdHMgc2VxdWVuY2UgKHRyaWdnZWQgdXBvbgogcmVuZGVyaW5nKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVG9rZW4uaHRtbCN0b1N0cmluZygpIj48Qj50b1N0cmluZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9Ub2tlbi5odG1sIj5Ub2tlbjwvQT4KPEREPlJldHVybnMgdGhlIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3Byb3ZpZGVyL1Rlc3RQcm92aWRlci5odG1sI3RvU3RyaW5nKCkiPjxCPnRvU3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LnByb3ZpZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9wcm92aWRlci9UZXN0UHJvdmlkZXIuaHRtbCI+VGVzdFByb3ZpZGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sI3RvU3RyaW5nKGphdmEubGFuZy5TdHJpbmcpIj48Qj50b1N0cmluZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCN0b3VjaCgpIj48Qj50b3VjaCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+CjxERD4nVG91Y2gnIHRoaXMgdGVtcGxhdGUgYW5kIHRoZXJlYnkgcmVzZXR0aW5nCiB0aGUgbmV4dENoZWNrIGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvVHJlZVdhbGtlci5odG1sI3RyZWVXYWxrKG9yZy5qZG9tLkVsZW1lbnQsIGphdmEudXRpbC5Db2xsZWN0aW9uKSI+PEI+dHJlZVdhbGsoRWxlbWVudCwgQ29sbGVjdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvVHJlZVdhbGtlci5odG1sIj5UcmVlV2Fsa2VyPC9BPgo8REQ+QSByZWN1cnNpdmUgbWV0aG9kIHRvIHdhbGsgdGhlIEVsZW1lbnQgdHJlZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL1RyZWVXYWxrZXIuaHRtbCI+PEI+VHJlZVdhbGtlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvVHJlZVdhbGtlci5odG1sIj5UcmVlV2Fsa2VyPC9BPi48REQ+VGhpcyBjbGFzcyBhbGxvd3MgeW91IHRvIHdhbGsgYSB0cmVlIG9mIEpET00gRWxlbWVudCBvYmplY3RzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9UcmVlV2Fsa2VyLmh0bWwjVHJlZVdhbGtlcigpIj48Qj5UcmVlV2Fsa2VyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvVHJlZVdhbGtlci5odG1sIj5UcmVlV2Fsa2VyPC9BPgo8REQ+RW1wdHkgY29uc3RydWN0b3IKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyQ29uc3RhbnRzLmh0bWwjVFJVRSI+PEI+VFJVRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sIj5QYXJzZXJDb25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjVHJ1ZSgpIj48Qj5UcnVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sIj5QYXJzZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCN0cnlVcGNhc3RpbmcoamF2YS5sYW5nLkNsYXNzKSI+PEI+dHJ5VXBjYXN0aW5nKENsYXNzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9DbGFzc01hcC5NZXRob2RJbmZvLmh0bWwiPkNsYXNzTWFwLk1ldGhvZEluZm88L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+dHlwZSBvZiBhcmcgSSB3aWxsIGhhdmUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9JbnRyb3NwZWN0b3JUZXN0Q2FzZS5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0ludHJvc3BlY3RvclRlc3RDYXNlLmh0bWwiPkludHJvc3BlY3RvclRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjwvREw+CjxIUj4KPEEgTkFNRT0iX1VfIj48IS0tIC0tPjwvQT48SDI+CjxCPlU8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9Gb3JlYWNoLmh0bWwjdWJlckluZm8iPjxCPnViZXJJbmZvPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL0ZvcmVhY2guaHRtbCI+Rm9yZWFjaDwvQT4KPEREPmltbXV0YWJsZSwgc28gY3JlYXRlIGluIGluaXQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJZGVudGlmaWVyLmh0bWwjdWJlckluZm8iPjxCPnViZXJJbmZvPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RJZGVudGlmaWVyLmh0bWwiPkFTVElkZW50aWZpZXI8L0E+CjxERD5UaGlzIGlzIHJlYWxseSBpbW11dGFibGUgYWZ0ZXIgdGhlIGluaXQsIHNvIGtlZXAgb25lIGZvciB0aGlzIG5vZGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RSZWZlcmVuY2UuaHRtbCN1YmVySW5mbyI+PEI+dWJlckluZm88L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCN1YmVyU3BlY3QiPjxCPnViZXJTcGVjdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwiPlJ1bnRpbWVJbnN0YW5jZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0Lmh0bWwiPjxCPlViZXJzcGVjdDwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdC5odG1sIj5VYmVyc3BlY3Q8L0E+LjxERD4nRmVkZXJhdGVkJyBpbnRyb3NwZWN0aW9uL3JlZmxlY3Rpb24gaW50ZXJmYWNlIHRvIGFsbG93IHRoZSBpbnRyb3NwZWN0aW9uCiAgYmVoYXZpb3IgaW4gVmVsb2NpdHkgdG8gYmUgY3VzdG9taXplZC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNVQkVSU1BFQ1RfQ0xBU1NOQU1FIj48Qj5VQkVSU1BFQ1RfQ0xBU1NOQU1FPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPmtleSBuYW1lIGZvciB1YmVyc3BlY3Rvcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5odG1sIj48Qj5VYmVyc3BlY3RJbXBsPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwiPlViZXJzcGVjdEltcGw8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiBVYmVyc3BlY3QgdG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBpbnRyb3NwZWN0aXZlCiAgZnVuY3Rpb25hbGl0eSBvZiBWZWxvY2l0eTxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGwuaHRtbCI+PEI+VWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbC5odG1sI1ViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsKSI+PEI+VWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsKFViZXJzcGVjdEltcGwpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbC5odG1sI1ViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQWJzdHJhY3RFeGVjdXRvcikiPjxCPlViZXJzcGVjdEltcGwuVmVsR2V0dGVySW1wbChVYmVyc3BlY3RJbXBsLCBBYnN0cmFjdEV4ZWN1dG9yKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxHZXR0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCI+PEI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9BPi48REQ+SW1wbGVtZW50YXRpb24gb2YgVmVsTWV0aG9kPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sI1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsKSI+PEI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsKFViZXJzcGVjdEltcGwpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sI1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsLCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QpIj48Qj5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwoVWJlcnNwZWN0SW1wbCwgTWV0aG9kKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwuaHRtbCI+PEI+VWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsPC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sI1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsKSI+PEI+VWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsKFViZXJzcGVjdEltcGwpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sI1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5WZWxNZXRob2QpIj48Qj5VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwoVWJlcnNwZWN0SW1wbCwgVmVsTWV0aG9kKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwuaHRtbCNVYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwob3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uVWJlcnNwZWN0SW1wbCwgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uVmVsTWV0aG9kLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+VWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsKFViZXJzcGVjdEltcGwsIFZlbE1ldGhvZCwgU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGwuaHRtbCI+VWJlcnNwZWN0SW1wbC5WZWxTZXR0ZXJJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwjVWJlcnNwZWN0SW1wbCgpIj48Qj5VYmVyc3BlY3RJbXBsKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RMb2dnYWJsZS5odG1sIj48Qj5VYmVyc3BlY3RMb2dnYWJsZTwvQj48L0E+IC0gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdExvZ2dhYmxlLmh0bWwiPlViZXJzcGVjdExvZ2dhYmxlPC9BPi48REQ+TWFya2VyIGludGVyZmFjZSB0byBsZXQgYW4gdWJlcnNwZWN0b3IgaW5kaWNhdGUgaXQgY2FuIGFuZCB3YW50cyB0bwogIGxvZwoKICBUaGFua3MgdG8gUGF1bG8gZm9yIHRoZSBzdWdnZXN0aW9uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjVW5hcnlFeHByZXNzaW9uKCkiPjxCPlVuYXJ5RXhwcmVzc2lvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjVU5CT1VOREVEX0JVRkZFUiI+PEI+VU5CT1VOREVEX0JVRkZFUjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD5jb25zdGFudCBpbmRpY2F0aW5nIHRoYXQgdGhlIFdyaXRlciBpcyBidWZmZXJlZCBhbmQgaXMgdW5ib3VuZGVkOyAKIHRoaXMgaXMgdXNlZCBpbiBCb2R5Q29udGVudAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNVTktOT1dOX1BSRUZJWCI+PEI+VU5LTk9XTl9QUkVGSVg8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UuTWV0aG9kUHJvdmlkZXIuaHRtbCN1bnRvdWNoYWJsZSgpIj48Qj51bnRvdWNoYWJsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvSW50cm9zcGVjdG9yVGVzdENhc2UuTWV0aG9kUHJvdmlkZXIuaHRtbCI+SW50cm9zcGVjdG9yVGVzdENhc2UuTWV0aG9kUHJvdmlkZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCN1cGNhc3QiPjxCPnVwY2FzdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL0NsYXNzTWFwLk1ldGhvZEluZm8uaHRtbCI+Q2xhc3NNYXAuTWV0aG9kSW5mbzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNVcGRhdGVMaW5lQ29sdW1uKGNoYXIpIj48Qj5VcGRhdGVMaW5lQ29sdW1uKGNoYXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvbG9hZGVyL0phckhvbGRlci5odG1sI3VybHBhdGgiPjxCPnVybHBhdGg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9sb2FkZXIvSmFySG9sZGVyLmh0bWwiPkphckhvbGRlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwjdXNhZ2UoKSI+PEI+dXNhZ2UoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb252ZXJ0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sIj5XZWJNYWNybzwvQT4KPEREPkhvdyB0byB1c2UgdGhpcyBsaXR0bGUgcHVwcHkgOi0pCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL2FudC9UZXhlblRhc2suaHRtbCN1c2VDbGFzc3BhdGgiPjxCPnVzZUNsYXNzcGF0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uYW50LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vYW50L1RleGVuVGFzay5odG1sIj5UZXhlblRhc2s8L0E+CjxERD5Qcm9wZXJ0eSB3aGljaCBjb250cm9scyB3aGV0aGVyIHRoZSBjbGFzc3BhdGgKIHdpbGwgYmUgdXNlZCB3aGVuIHRyeWluZyB0byBsb2NhdGUgdGVtcGxhdGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WTVByb3h5QXJnLmh0bWwjdXNlcmNvbnRleHQiPjxCPnVzZXJjb250ZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCI+Vk1Qcm94eUFyZzwvQT4KPEREPm5vdCB1c2VkIGluIHRoaXMgaW1wbCA6IGNhcnJpZXMgdGhlIGFwcHJvcHJpYXRlIHVzZXIgY29udGV4dAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI3VzaW5nTmFtZXNwYWNlcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+dXNpbmdOYW1lc3BhY2VzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9BPgo8REQ+ZGV0ZXJtaW5lcyBpZiBjdXJyZW50bHkgdXNpbmcgbmFtZXNwYWNlcy4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfVl8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+VjwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXNjYXBlLmh0bWwjdmFsIj48Qj52YWw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVzY2FwZS5odG1sIj5BU1RFc2NhcGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RUcnVlLmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVHJ1ZS5odG1sIj5BU1RUcnVlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURmFsc2UuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sIj5BU1RGYWxzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCI+QVNUTnVtYmVyTGl0ZXJhbDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1NpbXBsZU5vZGUuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvU2ltcGxlTm9kZS5odG1sIj5TaW1wbGVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR1ROb2RlLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdUTm9kZS5odG1sIj5BU1RHVE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBbmROb2RlLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFuZE5vZGUuaHRtbCI+QVNUQW5kTm9kZTwvQT4KPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVExFTm9kZS5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RMRU5vZGUuaHRtbCI+QVNUTEVOb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURGl2Tm9kZS5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1REaXZOb2RlLmh0bWwiPkFTVERpdk5vZGU8L0E+CjxERD5jb21wdXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RMVE5vZGUuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTFROb2RlLmh0bWwiPkFTVExUTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE11bE5vZGUuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTXVsTm9kZS5odG1sIj5BU1RNdWxOb2RlPC9BPgo8REQ+Y29tcHV0ZXMgdGhlIHByb2R1Y3Qgb2YgdGhlIHR3byBhcmdzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFRydWUuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUVHJ1ZS5odG1sIj5BU1RUcnVlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURXhwcmVzc2lvbi5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RFeHByZXNzaW9uLmh0bWwiPkFTVEV4cHJlc3Npb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdWJ0cmFjdE5vZGUuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUU3VidHJhY3ROb2RlLmh0bWwiPkFTVFN1YnRyYWN0Tm9kZTwvQT4KPEREPmNvbXB1dGVzIHRoZSB2YWx1ZSBvZiB0aGUgc3VidHJhY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUUmVmZXJlbmNlLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFJlZmVyZW5jZS5odG1sIj5BU1RSZWZlcmVuY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RGYWxzZS5odG1sIj5BU1RGYWxzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE51bWJlckxpdGVyYWwuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTnVtYmVyTGl0ZXJhbC5odG1sIj5BU1ROdW1iZXJMaXRlcmFsPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNURVFOb2RlLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEVRTm9kZS5odG1sIj5BU1RFUU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RBZGROb2RlLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEFkZE5vZGUuaHRtbCI+QVNUQWRkTm9kZTwvQT4KPEREPmNvbXB1dGVzIHRoZSBzdW0gb2YgdGhlIHR3byBub2Rlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPYmplY3RBcnJheS5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPYmplY3RBcnJheS5odG1sIj5BU1RPYmplY3RBcnJheTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE9yTm9kZS5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RPck5vZGUuaHRtbCI+QVNUT3JOb2RlPC9BPgo8REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvTm9kZS5odG1sIj5Ob2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUSW50ZWdlclJhbmdlLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEludGVnZXJSYW5nZS5odG1sIj5BU1RJbnRlZ2VyUmFuZ2U8L0E+CjxERD5kb2VzIHRoZSByZWFsIHdvcmsuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTm90Tm9kZS5odG1sI3ZhbHVlKG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyKSI+PEI+dmFsdWUoSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1ROb3ROb2RlLmh0bWwiPkFTVE5vdE5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RTdHJpbmdMaXRlcmFsLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVFN0cmluZ0xpdGVyYWwuaHRtbCI+QVNUU3RyaW5nTGl0ZXJhbDwvQT4KPEREPnJlbmRlcnMgdGhlIHZhbHVlIG9mIHRoZSBzdHJpbmcgbGl0ZXJhbAogIElmIHRoZSBwcm9wZXJ0aWVzIGFsbG93LCBhbmQgdGhlIHN0cmluZyBsaXRlcmFsIGNvbnRhaW5zIGEgJCBvciBhICMKICB0aGUgbGl0ZXJhbCBpcyByZW5kZXJlZCBhZ2FpbnN0IHRoZSBjb250ZXh0CiAgT3RoZXJ3aXNlLCB0aGUgc3RyaW5nbGl0IGlzIHJldHVybmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVE1vZE5vZGUuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTW9kTm9kZS5odG1sIj5BU1RNb2ROb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUR0VOb2RlLmh0bWwjdmFsdWUob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkludGVybmFsQ29udGV4dEFkYXB0ZXIpIj48Qj52YWx1ZShJbnRlcm5hbENvbnRleHRBZGFwdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVEdFTm9kZS5odG1sIj5BU1RHRU5vZGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RORU5vZGUuaHRtbCN2YWx1ZShvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPnZhbHVlKEludGVybmFsQ29udGV4dEFkYXB0ZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvQVNUTkVOb2RlLmh0bWwiPkFTVE5FTm9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvQW5ha2lhVGFzay5odG1sI3ZlIj48Qj52ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPnRoZSBWZWxvY2l0eUVuZ2luZSBpbnN0YW5jZSB0byB1c2UKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9FeHRlcm5hbExvZ2dlclRlc3QuaHRtbCN2ZSI+PEI+dmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0V4dGVybmFsTG9nZ2VyVGVzdC5odG1sIj5FeHRlcm5hbExvZ2dlclRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9DbGFzc2xvYWRlckNoYW5nZVRlc3QuaHRtbCN2ZSI+PEI+dmU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L0NsYXNzbG9hZGVyQ2hhbmdlVGVzdC5odG1sIj5DbGFzc2xvYWRlckNoYW5nZVRlc3Q8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjdmUiPjxCPnZlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXhlbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3RleGVuL0dlbmVyYXRvci5odG1sIj5HZW5lcmF0b3I8L0E+CjxERD5WZWxvY2l0eSBlbmdpbmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVGVtcGxhdGVUZXN0Q2FzZS5odG1sI3ZlYyI+PEI+dmVjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9UZW1wbGF0ZVRlc3RDYXNlLmh0bWwiPlRlbXBsYXRlVGVzdENhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvUGFyc2VyLmh0bWwjdmVsY2hhcnN0cmVhbSI+PEI+dmVsY2hhcnN0cmVhbTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCI+PEI+VmVsTWV0aG9kPC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwiPlZlbE1ldGhvZDwvQT4uPEREPk1ldGhvZCB1c2VkIGZvciByZWd1bGFyIG1ldGhvZCBpbnZvY2F0aW9uCgogICAgJGZvby5iYXIoKTxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPjxCPlZlbG9jaW1hY3JvRmFjdG9yeTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5PC9BPi48REQ+VmVsb2NpbWFjcm9GYWN0b3J5LmphdmEKCiAgIG1hbmFnZXMgdGhlIHNldCBvZiBWTXMgaW4gYSBydW5uaW5nIFZlbG9jaXR5IGVuZ2luZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uay5odG1sIj48Qj5WZWxvY2ltYWNyb0ZhY3RvcnkuVHdvbms8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5LlR3b25rLmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uazwvQT4uPEREPnNtYWxsIGNvbnRpbmVyIGNsYXNzIHRvIGhvbGQgdGhlIGR1cGxlCiBvZiBhIHRlbXBsYXRlIGFuZCBtb2RpZmljYXRpb24gdGltZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uay5odG1sI1ZlbG9jaW1hY3JvRmFjdG9yeS5Ud29uayhvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuVmVsb2NpbWFjcm9GYWN0b3J5KSI+PEI+VmVsb2NpbWFjcm9GYWN0b3J5LlR3b25rKFZlbG9jaW1hY3JvRmFjdG9yeSk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuVHdvbmsuaHRtbCI+VmVsb2NpbWFjcm9GYWN0b3J5LlR3b25rPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwjVmVsb2NpbWFjcm9GYWN0b3J5KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48Qj5WZWxvY2ltYWNyb0ZhY3RvcnkoUnVudGltZVNlcnZpY2VzKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvRmFjdG9yeS5odG1sIj5WZWxvY2ltYWNyb0ZhY3Rvcnk8L0E+CjxERD5DVE9SIDogcmVxdWlyZXMgYSBydW50aW1lIHNlcnZpY2VzIGZyb20gbm93CiAgb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+PEI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXI8L0E+LjxERD5NYW5hZ2VzIFZNcyBpbiBuYW1lc3BhY2VzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCI+PEI+VmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnkuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyLk1hY3JvRW50cnk8L0E+LjxERD53cmFwcGVyIGNsYXNzIGZvciBob2xkaW5nIFZNIGluZm9ybWF0aW9uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sI1ZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5WZWxvY2ltYWNyb01hbmFnZXIsIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5WZWxvY2ltYWNyb01hbmFnZXIsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmdbXSwgamF2YS5sYW5nLlN0cmluZykiPjxCPlZlbG9jaW1hY3JvTWFuYWdlci5NYWNyb0VudHJ5KFZlbG9jaW1hY3JvTWFuYWdlciwgVmVsb2NpbWFjcm9NYW5hZ2VyLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nW10sIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeS5odG1sIj5WZWxvY2ltYWNyb01hbmFnZXIuTWFjcm9FbnRyeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1ZlbG9jaW1hY3JvTWFuYWdlci5odG1sI1ZlbG9jaW1hY3JvTWFuYWdlcihvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+VmVsb2NpbWFjcm9NYW5hZ2VyKFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb01hbmFnZXIuaHRtbCI+VmVsb2NpbWFjcm9NYW5hZ2VyPC9BPgo8REQ+QWRkcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byB0aGUgaGFzaC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj48Qj5WZWxvY2ltYWNyb1Byb3h5PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sIj5WZWxvY2ltYWNyb1Byb3h5PC9BPi48REQ+VmVsb2NpbWFjcm9Qcm94eS5qYXZhCgogICBhIHByb3h5IERpcmVjdGl2ZS1kZXJpdmVkIG9iamVjdCB0byBmaXQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3RpdmUgc3lzdGVtPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVmVsb2NpbWFjcm9Qcm94eS5odG1sI1ZlbG9jaW1hY3JvUHJveHkoKSI+PEI+VmVsb2NpbWFjcm9Qcm94eSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5kaXJlY3RpdmUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2RpcmVjdGl2ZS9WZWxvY2ltYWNyb1Byb3h5Lmh0bWwiPlZlbG9jaW1hY3JvUHJveHk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2ltYWNyb1Rlc3RDYXNlLmh0bWwiPjxCPlZlbG9jaW1hY3JvVGVzdENhc2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpbWFjcm9UZXN0Q2FzZS5odG1sIj5WZWxvY2ltYWNyb1Rlc3RDYXNlPC9BPi48REQ+VGhpcyBjbGFzcyB0ZXN0cyBzdHJhbmdlIFZlbG9jaW1hY3JvIGlzc3Vlcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaW1hY3JvVGVzdENhc2UuaHRtbCNWZWxvY2ltYWNyb1Rlc3RDYXNlKCkiPjxCPlZlbG9jaW1hY3JvVGVzdENhc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaW1hY3JvVGVzdENhc2UuaHRtbCI+VmVsb2NpbWFjcm9UZXN0Q2FzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHkuaHRtbCI+PEI+VmVsb2NpdHk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwiPlZlbG9jaXR5PC9BPi48REQ+VGhpcyBjbGFzcyBwcm92aWRlcyAgc2VydmljZXMgdG8gdGhlIGFwcGxpY2F0aW9uCiBkZXZlbG9wZXIsIHN1Y2ggYXMgOgogCiAgU2ltcGxlIFZlbG9jaXR5IFJ1bnRpbWUgZW5naW5lIGluaXRpYWxpemF0aW9uIG1ldGhvZHMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwjVmVsb2NpdHkoKSI+PEI+VmVsb2NpdHkoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5QXBwVGVzdENhc2UuaHRtbCI+PEI+VmVsb2NpdHlBcHBUZXN0Q2FzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eUFwcFRlc3RDYXNlLmh0bWwiPlZlbG9jaXR5QXBwVGVzdENhc2U8L0E+LjxERD5UaGlzIGNsYXNzIGlzIGludGVuZGVkIHRvIHRlc3QgdGhlIGFwcC5WZWxvY2l0eS5qYXZhIGNsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlBcHBUZXN0Q2FzZS5odG1sI1ZlbG9jaXR5QXBwVGVzdENhc2UoKSI+PEI+VmVsb2NpdHlBcHBUZXN0Q2FzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlBcHBUZXN0Q2FzZS5odG1sIj5WZWxvY2l0eUFwcFRlc3RDYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj48Qj5WZWxvY2l0eUNoYXJTdHJlYW08L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCI+VmVsb2NpdHlDaGFyU3RyZWFtPC9BPi48REQ+QW4gaW1wbGVtZW50YXRpb24gb2YgaW50ZXJmYWNlIENoYXJTdHJlYW0sIHdoZXJlIHRoZSBzdHJlYW0gaXMgYXNzdW1lZCB0bwogY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMgKHdpdGhvdXQgdW5pY29kZSBwcm9jZXNzaW5nKS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNWZWxvY2l0eUNoYXJTdHJlYW0oamF2YS5pby5JbnB1dFN0cmVhbSwgaW50LCBpbnQpIj48Qj5WZWxvY2l0eUNoYXJTdHJlYW0oSW5wdXRTdHJlYW0sIGludCwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNWZWxvY2l0eUNoYXJTdHJlYW0oamF2YS5pby5JbnB1dFN0cmVhbSwgaW50LCBpbnQsIGludCkiPjxCPlZlbG9jaXR5Q2hhclN0cmVhbShJbnB1dFN0cmVhbSwgaW50LCBpbnQsIGludCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1ZlbG9jaXR5Q2hhclN0cmVhbS5odG1sIj5WZWxvY2l0eUNoYXJTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwjVmVsb2NpdHlDaGFyU3RyZWFtKGphdmEuaW8uUmVhZGVyLCBpbnQsIGludCkiPjxCPlZlbG9jaXR5Q2hhclN0cmVhbShSZWFkZXIsIGludCwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9WZWxvY2l0eUNoYXJTdHJlYW0uaHRtbCNWZWxvY2l0eUNoYXJTdHJlYW0oamF2YS5pby5SZWFkZXIsIGludCwgaW50LCBpbnQpIj48Qj5WZWxvY2l0eUNoYXJTdHJlYW0oUmVhZGVyLCBpbnQsIGludCwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvVmVsb2NpdHlDaGFyU3RyZWFtLmh0bWwiPlZlbG9jaXR5Q2hhclN0cmVhbTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCI+PEI+VmVsb2NpdHlDb250ZXh0PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwiPlZlbG9jaXR5Q29udGV4dDwvQT4uPEREPkdlbmVyYWwgcHVycG9zZSBpbXBsZW1lbnRpb24gb2YgdGhlIGFwcGxpY2F0aW9uIENvbnRleHQgCiAgaW50ZXJmYWNlIGZvciBnZW5lcmFsIGFwcGxpY2F0aW9uIHVzZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCNWZWxvY2l0eUNvbnRleHQoKSI+PEI+VmVsb2NpdHlDb250ZXh0KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1ZlbG9jaXR5Q29udGV4dC5odG1sIj5WZWxvY2l0eUNvbnRleHQ8L0E+CjxERD5DcmVhdGVzIGEgbmV3IGluc3RhbmNlICh3aXRoIG5vIGlubmVyIGNvbnRleHQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCNWZWxvY2l0eUNvbnRleHQob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQpIj48Qj5WZWxvY2l0eUNvbnRleHQoQ29udGV4dCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1ZlbG9jaXR5Q29udGV4dC5odG1sIj5WZWxvY2l0eUNvbnRleHQ8L0E+CjxERD5DaGFpbmluZyBjb25zdHJ1Y3RvciwgdXNlZCB3aGVuIHlvdSB3YW50IHRvIAogIHdyYXAgYSBjb250ZXh0IGluIGFub3RoZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1ZlbG9jaXR5Q29udGV4dC5odG1sI1ZlbG9jaXR5Q29udGV4dChqYXZhLnV0aWwuTWFwKSI+PEI+VmVsb2NpdHlDb250ZXh0KE1hcCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L1ZlbG9jaXR5Q29udGV4dC5odG1sIj5WZWxvY2l0eUNvbnRleHQ8L0E+CjxERD5DcmVhdGVzIGEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIHN0b3JhZ2UgKGFuZCBubyBpbm5lcgogIGNvbnRleHQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9WZWxvY2l0eUNvbnRleHQuaHRtbCNWZWxvY2l0eUNvbnRleHQoamF2YS51dGlsLk1hcCwgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQpIj48Qj5WZWxvY2l0eUNvbnRleHQoTWFwLCBDb250ZXh0KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvVmVsb2NpdHlDb250ZXh0Lmh0bWwiPlZlbG9jaXR5Q29udGV4dDwvQT4KPEREPkluaXRpYWxpemVzIGludGVybmFsIHN0b3JhZ2UgKG5ldmVyIHRvIDxjb2RlPm51bGw8L2NvZGU+KSwgYW5kCiAgaW5uZXIgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5RW5naW5lLmh0bWwiPjxCPlZlbG9jaXR5RW5naW5lPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4uPEREPgogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNlcGFyYXRlIG5ldy1hYmxlIGluc3RhbmNlIG9mIHRoZQogVmVsb2NpdHkgdGVtcGxhdGUgZW5naW5lLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI1ZlbG9jaXR5RW5naW5lKCkiPjxCPlZlbG9jaXR5RW5naW5lKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvVmVsb2NpdHlFbmdpbmUuaHRtbCI+VmVsb2NpdHlFbmdpbmU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1ZlbG9jaXR5RXhjZXB0aW9uLmh0bWwiPjxCPlZlbG9jaXR5RXhjZXB0aW9uPC9CPjwvQT4gLSBleGNlcHRpb24gb3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vVmVsb2NpdHlFeGNlcHRpb24uaHRtbCI+VmVsb2NpdHlFeGNlcHRpb248L0E+LjxERD5CYXNlIGNsYXNzIGZvciBWZWxvY2l0eSBleGNlcHRpb25zIHRocm93biB0byB0aGUgCiAgYXBwbGljYXRpb24gbGF5ZXIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1ZlbG9jaXR5RXhjZXB0aW9uLmh0bWwjVmVsb2NpdHlFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPlZlbG9jaXR5RXhjZXB0aW9uKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5leGNlcHRpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vVmVsb2NpdHlFeGNlcHRpb24uaHRtbCI+VmVsb2NpdHlFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPjxCPlZlbG9jaXR5Rm9ybWF0dGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4uPEREPkZvcm1hdHRpbmcgdG9vbCBmb3IgaW5zZXJ0aW5nIGludG8gdGhlIFZlbG9jaXR5IFdlYkNvbnRleHQuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9sb2cvVmVsb2NpdHlGb3JtYXR0ZXIuaHRtbCI+PEI+VmVsb2NpdHlGb3JtYXR0ZXI8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3IuaHRtbCI+PEI+VmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBbHRlcm5hdG9yPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3IuaHRtbCI+VmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBbHRlcm5hdG9yPC9BPi48REQ+Q2xhc3MgdGhhdCByZXR1cm5zIGFsdGVybmF0aW5nIHZhbHVlcyBpbiBhIHRlbXBsYXRlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3IuaHRtbCNWZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3Iob3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuVmVsb2NpdHlGb3JtYXR0ZXIsIGphdmEubGFuZy5TdHJpbmdbXSkiPjxCPlZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QWx0ZXJuYXRvcihWZWxvY2l0eUZvcm1hdHRlciwgU3RyaW5nW10pPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QWx0ZXJuYXRvci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUFsdGVybmF0b3I8L0E+CjxERD5Db25zdHJ1Y3RvciB0YWtlcyBhbiBhcnJheSBvZiBTdHJpbmdzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBdXRvQWx0ZXJuYXRvci5odG1sIj48Qj5WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUF1dG9BbHRlcm5hdG9yPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUF1dG9BbHRlcm5hdG9yLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QXV0b0FsdGVybmF0b3I8L0E+LjxERD5BcyBWZWxvY2l0eUFsdGVybmF0b3IsIGJ1dCBjYWxscyA8Y29kZT5hbHRlcm5hdGUoKTwvY29kZT4KIGF1dG9tYXRpY2FsbHkgb24gcmVuZGVyaW5nIGluIGEgdGVtcGxhdGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLlZlbG9jaXR5QXV0b0FsdGVybmF0b3IuaHRtbCNWZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUF1dG9BbHRlcm5hdG9yKG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLnRvb2xzLlZlbG9jaXR5Rm9ybWF0dGVyLCBqYXZhLmxhbmcuU3RyaW5nW10pIj48Qj5WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUF1dG9BbHRlcm5hdG9yKFZlbG9jaXR5Rm9ybWF0dGVyLCBTdHJpbmdbXSk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAudG9vbHMuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hcHAvdG9vbHMvVmVsb2NpdHlGb3JtYXR0ZXIuVmVsb2NpdHlBdXRvQWx0ZXJuYXRvci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlci5WZWxvY2l0eUF1dG9BbHRlcm5hdG9yPC9BPgo8REQ+Q29uc3RydWN0b3IgdGFrZXMgYW4gYXJyYXkgb2YgU3RyaW5ncy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL3Rvb2xzL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjVmVsb2NpdHlGb3JtYXR0ZXIob3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQpIj48Qj5WZWxvY2l0eUZvcm1hdHRlcihDb250ZXh0KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC50b29scy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC90b29scy9WZWxvY2l0eUZvcm1hdHRlci5odG1sIj5WZWxvY2l0eUZvcm1hdHRlcjwvQT4KPEREPkNvbnN0cnVjdG9yIG5lZWRzIGEgYmFja3BvaW50ZXIgdG8gdGhlIGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwjVmVsb2NpdHlGb3JtYXR0ZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPlZlbG9jaXR5Rm9ybWF0dGVyKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmxvZy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL1ZlbG9jaXR5Rm9ybWF0dGVyLmh0bWwiPlZlbG9jaXR5Rm9ybWF0dGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9BbmFraWFUYXNrLmh0bWwjdmVsb2NpdHlQcm9wZXJ0aWVzRmlsZSI+PEI+dmVsb2NpdHlQcm9wZXJ0aWVzRmlsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL0FuYWtpYVRhc2suaHRtbCI+QW5ha2lhVGFzazwvQT4KPEREPnRoZSBmaWxlIHRvIGdldCB0aGUgdmVsb2NpdHkgcHJvcGVydGllcyBmaWxlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwiPjxCPlZlbG9jaXR5U2VydmxldDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5zZXJ2bGV0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0PC9BPi48REQ+QmFzZSBjbGFzcyB3aGljaCBzaW1wbGlmaWVzIHRoZSB1c2Ugb2YgVmVsb2NpdHkgd2l0aCBTZXJ2bGV0cy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sI1ZlbG9jaXR5U2VydmxldCgpIj48Qj5WZWxvY2l0eVNlcnZsZXQoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnNlcnZsZXQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9zZXJ2bGV0L1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lmh0bWwiPjxCPlZlbG9jaXR5U2VydmxldFRlc3Q8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0PC9BPi48REQ+VGVzdHMgb3VyIFZlbG9jaXR5U2VydmxldCBpbXBsZW1lbnRhdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+PEI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2U8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCNWZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tIdHRwU2VydmxldFJlc3BvbnNlKCkiPjxCPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja0h0dHBTZXJ2bGV0UmVzcG9uc2UuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrSHR0cFNlcnZsZXRSZXNwb25zZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWcuaHRtbCI+PEI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbmZpZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29uZmlnLmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWc8L0E+LjxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWcuaHRtbCNWZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29uZmlnKCkiPjxCPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb25maWcuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrU2VydmxldENvbmZpZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPjxCPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0PC9BPi48REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sI1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0KCkiPjxCPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1NlcnZsZXRDb250ZXh0KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS50ZXN0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tTZXJ2bGV0Q29udGV4dDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1ZlbG9jaXR5U2VydmxldC5odG1sIj48Qj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tWZWxvY2l0eVNlcnZsZXQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1ZlbG9jaXR5U2VydmxldDwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0Lmh0bWwjVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0KG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC5WZWxvY2l0eVNlcnZsZXRUZXN0KSI+PEI+VmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0KFZlbG9jaXR5U2VydmxldFRlc3QpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGVzdC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvVmVsb2NpdHlTZXJ2bGV0VGVzdC5Nb2NrVmVsb2NpdHlTZXJ2bGV0Lmh0bWwiPlZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1ZlbG9jaXR5U2VydmxldDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuaHRtbCNWZWxvY2l0eVNlcnZsZXRUZXN0KCkiPjxCPlZlbG9jaXR5U2VydmxldFRlc3QoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuaHRtbCI+VmVsb2NpdHlTZXJ2bGV0VGVzdDwvQT4KPEREPkRlZmF1bHQgY29uc3RydWN0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPjxCPlZlbG9jaXR5V3JpdGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiBhIGZhc3QgV3JpdGVyLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjVmVsb2NpdHlXcml0ZXIoaW50LCBib29sZWFuKSI+PEI+VmVsb2NpdHlXcml0ZXIoaW50LCBib29sZWFuKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD5wcml2YXRlIGNvbnN0cnVjdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI1ZlbG9jaXR5V3JpdGVyKGphdmEuaW8uV3JpdGVyKSI+PEI+VmVsb2NpdHlXcml0ZXIoV3JpdGVyKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmlvLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCI+VmVsb2NpdHlXcml0ZXI8L0E+CjxERD5DcmVhdGUgYSBidWZmZXJlZCBjaGFyYWN0ZXItb3V0cHV0IHN0cmVhbSB0aGF0IHVzZXMgYSBkZWZhdWx0LXNpemVkCiBvdXRwdXQgYnVmZmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI1ZlbG9jaXR5V3JpdGVyKGphdmEuaW8uV3JpdGVyLCBpbnQsIGJvb2xlYW4pIj48Qj5WZWxvY2l0eVdyaXRlcihXcml0ZXIsIGludCwgYm9vbGVhbik8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+Q3JlYXRlIGEgbmV3IGJ1ZmZlcmVkIGNoYXJhY3Rlci1vdXRwdXQgc3RyZWFtIHRoYXQgdXNlcyBhbiBvdXRwdXQKIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gc2l6ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbFByb3BlcnR5R2V0Lmh0bWwiPjxCPlZlbFByb3BlcnR5R2V0PC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlHZXQuaHRtbCI+VmVsUHJvcGVydHlHZXQ8L0E+LjxERD5JbnRlcmZhY2UgZGVmaW5pbmcgYSAnZ2V0dGVyJy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsUHJvcGVydHlTZXQuaHRtbCI+PEI+VmVsUHJvcGVydHlTZXQ8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxQcm9wZXJ0eVNldC5odG1sIj5WZWxQcm9wZXJ0eVNldDwvQT4uPEREPkludGVyZmFjZSB1c2VkIGZvciBzZXR0aW5nIHZhbHVlcyB0aGF0IGFwcGVhciB0byBiZSBwcm9wZXJ0aWVzIGluCiAgVmVsb2NpdHkuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGVzdC9WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tWZWxvY2l0eVNlcnZsZXQuaHRtbCN2aXNpYmxlU2V0Q29udGVudFR5cGUoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj52aXNpYmxlU2V0Q29udGVudFR5cGUoSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L1ZlbG9jaXR5U2VydmxldFRlc3QuTW9ja1ZlbG9jaXR5U2VydmxldC5odG1sIj5WZWxvY2l0eVNlcnZsZXRUZXN0Lk1vY2tWZWxvY2l0eVNlcnZsZXQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEFkZE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RBZGROb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUQWRkTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEFkZE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RBZGROb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUQWRkTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RBZGROb2RlICggKyApCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RBbmROb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUQW5kTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEFuZE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RBbmROb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUQW5kTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEFuZE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUQW5kTm9kZSAoICYmICkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEFzc2lnbm1lbnQsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RBc3NpZ25tZW50LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUQXNzaWdubWVudCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEFzc2lnbm1lbnQsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RBc3NpZ25tZW50LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUQXNzaWdubWVudCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RBc3NpZ25tZW50IG5vZGUgKCA9ICkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEJsb2NrLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUQmxvY2ssIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RCbG9jaywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEJsb2NrLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUQmxvY2ssIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RCbG9jaywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RCbG9jayBub2RlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RDb21tZW50LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUQ29tbWVudCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVENvbW1lbnQsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RDb21tZW50LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1REaXJlY3RpdmUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1REaXJlY3RpdmUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1REaXJlY3RpdmUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1REaXJlY3RpdmUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1REaXJlY3RpdmUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1REaXJlY3RpdmUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNURGl2Tm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVERpdk5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1REaXZOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNURGl2Tm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVERpdk5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1REaXZOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVERpdk5vZGUgKCAvICkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEVsc2VJZlN0YXRlbWVudCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEVsc2VJZlN0YXRlbWVudCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEVsc2VJZlN0YXRlbWVudCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEVsc2VJZlN0YXRlbWVudCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEVsc2VJZlN0YXRlbWVudCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEVsc2VJZlN0YXRlbWVudCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RFbHNlSWZTdGF0ZW1lbnQgbm9kZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNURWxzZVN0YXRlbWVudCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEVsc2VTdGF0ZW1lbnQsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RFbHNlU3RhdGVtZW50LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNURWxzZVN0YXRlbWVudCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEVsc2VTdGF0ZW1lbnQsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RFbHNlU3RhdGVtZW50LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVEVsc2VTdGF0ZW1lbnQgbm9kZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNURVFOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNURVFOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNURVFOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNURVFOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNURVFOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNURVFOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVEVRTm9kZSAoID09ICkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEV4cHJlc3Npb24sIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RFeHByZXNzaW9uLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNURXhwcmVzc2lvbiwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEV4cHJlc3Npb24sIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RFeHByZXNzaW9uLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNURXhwcmVzc2lvbiwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RFeHByZXNzaW9uIG5vZGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVEZhbHNlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNURmFsc2UsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RGYWxzZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVEZhbHNlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNURmFsc2UsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RGYWxzZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RGYWxzZSBub2RlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RHRU5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RHRU5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RHRU5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RHRU5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RHRU5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RHRU5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUR0VOb2RlICggPj0gKQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUR1ROb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUR1ROb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUR1ROb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUR1ROb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUR1ROb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUR1ROb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVEdUTm9kZSAoID4gKQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUSWRlbnRpZmllciwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVElkZW50aWZpZXIsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RJZGVudGlmaWVyLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUSWRlbnRpZmllciwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVElkZW50aWZpZXIsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RJZGVudGlmaWVyLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVElkZW50aWZpZXIgbm9kZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUSWZTdGF0ZW1lbnQsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RJZlN0YXRlbWVudCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVElmU3RhdGVtZW50LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUSWZTdGF0ZW1lbnQsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RJZlN0YXRlbWVudCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVElmU3RhdGVtZW50LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVElmU3RhdGVtZW50IG5vZGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVExFTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVExFTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVExFTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVExFTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVExFTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVExFTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RMRU5vZGUgKCA8PSApCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RMVE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RMVE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RMVE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RMVE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RMVE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RMVE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUTFROb2RlICggPCApCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RNZXRob2QsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RNZXRob2QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RNZXRob2QsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RNZXRob2QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RNZXRob2QsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RNZXRob2QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUTWV0aG9kIG5vZGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVE1vZE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RNb2ROb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUTW9kTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVE1vZE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RNb2ROb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUTW9kTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RNb2ROb2RlICggJSApCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RNdWxOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUTXVsTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVE11bE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RNdWxOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUTXVsTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVE11bE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUTXVsTm9kZSAoICogKQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUTkVOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUTkVOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUTkVOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUTkVOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUTkVOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUTkVOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVE5FTm9kZSAoICE9ICkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVE5vdE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1ROb3ROb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUTm90Tm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVE5vdE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1ROb3ROb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUTm90Tm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1ROb3ROb2RlICggISApCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1ROdW1iZXJMaXRlcmFsLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUTnVtYmVyTGl0ZXJhbCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVE51bWJlckxpdGVyYWwsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1ROdW1iZXJMaXRlcmFsLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUTnVtYmVyTGl0ZXJhbCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVE51bWJlckxpdGVyYWwsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUTnVtYmVyTGl0ZXJhbCBub2RlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RPYmplY3RBcnJheSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVE9iamVjdEFycmF5LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUT2JqZWN0QXJyYXksIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RPYmplY3RBcnJheSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVE9iamVjdEFycmF5LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUT2JqZWN0QXJyYXksIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUT3JOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUT3JOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUT3JOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUT3JOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUT3JOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUT3JOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGFuIEFTVE9yTm9kZSAoIHx8ICkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVHByb2Nlc3MsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1Rwcm9jZXNzLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCI+UGFyc2VyVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUcHJvY2VzcywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVHByb2Nlc3MsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1Rwcm9jZXNzLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUcHJvY2VzcywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1Rwcm9jZXNzIG5vZGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFJlZmVyZW5jZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFJlZmVyZW5jZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFJlZmVyZW5jZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFJlZmVyZW5jZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFJlZmVyZW5jZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFJlZmVyZW5jZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+RGlzcGxheSBhbiBBU1RSZWZlcmVuY2Ugbm9kZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvVk1SZWZlcmVuY2VNdW5nZVZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUUmVmZXJlbmNlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUUmVmZXJlbmNlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL1ZNUmVmZXJlbmNlTXVuZ2VWaXNpdG9yLmh0bWwiPlZNUmVmZXJlbmNlTXVuZ2VWaXNpdG9yPC9BPgo8REQ+VmlzaXRvciBtZXRob2QgLSBpZiB0aGUgbGl0ZXJhbCBpcyByaWdodCwgd2lsbAogIHNldCB0aGUgbGl0ZXJhbCBpbiB0aGUgQVNUUmVmZXJlbmNlIG5vZGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFNldERpcmVjdGl2ZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFNldERpcmVjdGl2ZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFNldERpcmVjdGl2ZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFNldERpcmVjdGl2ZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFNldERpcmVjdGl2ZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFNldERpcmVjdGl2ZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCI+Tm9kZVZpZXdNb2RlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RTdHJpbmdMaXRlcmFsLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUU3RyaW5nTGl0ZXJhbCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFN0cmluZ0xpdGVyYWwsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RTdHJpbmdMaXRlcmFsLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUU3RyaW5nTGl0ZXJhbCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFN0cmluZ0xpdGVyYWwsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUU3RyaW5nTGl0ZXJhbCBub2RlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RTdWJ0cmFjdE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RTdWJ0cmFjdE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RTdWJ0cmFjdE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RTdWJ0cmFjdE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RTdWJ0cmFjdE5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RTdWJ0cmFjdE5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUU3VidHJhY3ROb2RlICggLSApCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RUZXh0LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUVGV4dCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFRleHQsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RUZXh0LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUVGV4dCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFRleHQsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUVGV4dCBub2RlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RUcnVlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUVHJ1ZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFRydWUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RUcnVlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUVHJ1ZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFRydWUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPkRpc3BsYXkgYW4gQVNUVHJ1ZSBub2RlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5BU1RXb3JkLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoQVNUV29yZCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9QYXJzZXJWaXNpdG9yLmh0bWwiPlBhcnNlclZpc2l0b3I8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLkFTVFdvcmQsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChBU1RXb3JkLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL0Jhc2VWaXNpdG9yLmh0bWwiPkJhc2VWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9Ob2RlVmlld01vZGUuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuQVNUV29yZCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KEFTVFdvcmQsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwiPk5vZGVWaWV3TW9kZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL1BhcnNlclZpc2l0b3IuaHRtbCN2aXNpdChvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucGFyc2VyLm5vZGUuU2ltcGxlTm9kZSwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnZpc2l0KFNpbXBsZU5vZGUsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL25vZGUvUGFyc2VyVmlzaXRvci5odG1sIj5QYXJzZXJWaXNpdG9yPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3Zpc2l0KG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIubm9kZS5TaW1wbGVOb2RlLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+dmlzaXQoU2ltcGxlTm9kZSwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUudmlzaXRvci48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sIj5CYXNlVmlzaXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvTm9kZVZpZXdNb2RlLmh0bWwjdmlzaXQob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLlNpbXBsZU5vZGUsIGphdmEubGFuZy5PYmplY3QpIj48Qj52aXNpdChTaW1wbGVOb2RlLCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL05vZGVWaWV3TW9kZS5odG1sIj5Ob2RlVmlld01vZGU8L0E+CjxERD5EaXNwbGF5IGEgU2ltcGxlTm9kZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L3ZpZXcvVGVtcGxhdGVOb2RlVmlldy5odG1sI3Zpc2l0b3IiPjxCPnZpc2l0b3I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3Qudmlldy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3Qvdmlldy9UZW1wbGF0ZU5vZGVWaWV3Lmh0bWwiPlRlbXBsYXRlTm9kZVZpZXc8L0E+CjxERD5WaXNpdG9yIHVzZWQgdG8gdHJhdmVyc2UgdGhlIEFTVCBub2RlIHN0cnVjdHVyZQogYW5kIHByb2R1Y2UgYSB2aXN1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlCiBub2RlIHN0cnVjdHVyZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sI3ZtIj48Qj52bTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sIj5VYmVyc3BlY3RJbXBsLlZlbFNldHRlckltcGw8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjVk1fQ09OVEVYVF9MT0NBTFNDT1BFIj48Qj5WTV9DT05URVhUX0xPQ0FMU0NPUEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+c3dpdGNoIGZvciBsb2NhbCBjb250ZXh0IGluIFZNIDogZGVmYXVsdCBmYWxzZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwjVk1fRVhUIj48Qj5WTV9FWFQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb252ZXJ0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udmVydC9XZWJNYWNyby5odG1sIj5XZWJNYWNybzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNWTV9MSUJSQVJZIj48Qj5WTV9MSUJSQVJZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCI+UnVudGltZUNvbnN0YW50czwvQT4KPEREPk5hbWUgb2YgbG9jYWwgVmVsb2NpbWFjcm8gbGlicmFyeSB0ZW1wbGF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwjVk1fTElCUkFSWV9BVVRPUkVMT0FEIj48Qj5WTV9MSUJSQVJZX0FVVE9SRUxPQUQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+c3dpdGNoIGZvciBhdXRvbG9hZGluZyBsaWJyYXJ5LXNvdXJjZWQgVk1zIChmb3IgZGV2ZWxvcG1lbnQpCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1ZNX01FU1NBR0VTX09OIj48Qj5WTV9NRVNTQUdFU19PTjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5Td2l0Y2ggZm9yIFZNIGJsYXRoZXIgOiBkZWZhdWx0IHRydWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1ZNX1BFUk1fQUxMT1dfSU5MSU5FIj48Qj5WTV9QRVJNX0FMTE9XX0lOTElORTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5ib29sZWFuICh0cnVlL2ZhbHNlKSBkZWZhdWx0IHRydWUgOiBhbGxvdyAKIGlubGluZSAoaW4tdGVtcGxhdGUpIG1hY3JvIGRlZmluaXRpb25zCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1ZNX1BFUk1fQUxMT1dfSU5MSU5FX1JFUExBQ0VfR0xPQkFMIj48Qj5WTV9QRVJNX0FMTE9XX0lOTElORV9SRVBMQUNFX0dMT0JBTDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5ib29sZWFuICh0cnVlL2ZhbHNlKSBkZWZhdWx0IGZhbHNlIDogYWxsb3cgaW5saW5lIAogKGluLXRlbXBsYXRlKSBtYWNybyBkZWZpbml0aW9ucyB0byByZXBsYWNlIGV4aXN0aW5nCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sI1ZNX1BFUk1fSU5MSU5FX0xPQ0FMIj48Qj5WTV9QRVJNX0lOTElORV9MT0NBTDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lQ29uc3RhbnRzLmh0bWwiPlJ1bnRpbWVDb25zdGFudHM8L0E+CjxERD5Td2l0Y2ggZm9yIGZvcmNpbmcgaW5saW5lIG1hY3JvcyB0byBiZSBsb2NhbCA6IGRlZmF1bHQgZmFsc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPjxCPlZNQ29udGV4dDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPi48REQ+VGhpcyBpcyBhIHNwZWNpYWwsIGludGVybmFsLXVzZS1vbmx5IGNvbnRleHQgaW1wbGVtZW50YXRpb24gdG8gYmUKICB1c2VkIGZvciB0aGUgbmV3IFZlbG9jaW1hY3JvIGltcGxlbWVudGF0aW9uLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwjVk1Db250ZXh0KG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5JbnRlcm5hbENvbnRleHRBZGFwdGVyLCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZVNlcnZpY2VzKSI+PEI+Vk1Db250ZXh0KEludGVybmFsQ29udGV4dEFkYXB0ZXIsIFJ1bnRpbWVTZXJ2aWNlcyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvY29udGV4dC9WTUNvbnRleHQuaHRtbCI+Vk1Db250ZXh0PC9BPgo8REQ+Q1RPUiwgd3JhcHMgYW4gSUNBCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUluc3RhbmNlLmh0bWwjdm1GYWN0b3J5Ij48Qj52bUZhY3Rvcnk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVJbnN0YW5jZS5odG1sIj5SdW50aW1lSW5zdGFuY2U8L0E+CjxERD5WZWxvY2ltYWNyb0ZhY3Rvcnkgb2JqZWN0IHRvIG1hbmFnZSBWTXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9WZWxvY2ltYWNyb0ZhY3RvcnkuaHRtbCN2bU1hbmFnZXIiPjxCPnZtTWFuYWdlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvVmVsb2NpbWFjcm9GYWN0b3J5Lmh0bWwiPlZlbG9jaW1hY3JvRmFjdG9yeTwvQT4KPEREPlZNTWFuYWdlciA6IGRlYWwgd2l0aCBuYW1lc3BhY2UgbWFuYWdlbWVudAogIGFuZCBhY3R1YWxseSBrZWVwcyBhbGwgdGhlIFZNIGRlZmluaXRpb25zCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCI+PEI+Vk1Qcm94eUFyZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCI+Vk1Qcm94eUFyZzwvQT4uPEREPlRoZSBmdW5jdGlvbiBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3h5IGZvciB0aGUgY2FsbGluZyBwYXJhbWV0ZXIgdG8gdGhlIFZNLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCNWTVByb3h5QXJnKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxCPlZNUHJveHlBcmcoUnVudGltZVNlcnZpY2VzLCBTdHJpbmcsIFN0cmluZywgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuZGlyZWN0aXZlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sIj5WTVByb3h5QXJnPC9BPgo8REQ+Y3RvciBmb3IgY3VycmVudCBpbXBsIAoKICB0YWtlcyB0aGUgcmVmZXJlbmNlIGxpdGVyYWwgd2UgYXJlIHByb3h5aW5nIGZvciwgdGhlIGxpdGVyYWwgCiAgdGhlIFZNIHdlIGFyZSBmb3IgaXMgY2FsbGVkIHdpdGguLi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9kaXJlY3RpdmUvVk1Qcm94eUFyZy5odG1sI1ZNUHJveHlBcmcob3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS5WTVByb3h5QXJnLCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuSW50ZXJuYWxDb250ZXh0QWRhcHRlcikiPjxCPlZNUHJveHlBcmcoVk1Qcm94eUFyZywgSW50ZXJuYWxDb250ZXh0QWRhcHRlcik8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLmRpcmVjdGl2ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvZGlyZWN0aXZlL1ZNUHJveHlBcmcuaHRtbCI+Vk1Qcm94eUFyZzwvQT4KPEREPm5vdCB1c2VkIGluIGN1cnJlbnQgaW1wbAoKICBDb25zdHJ1Y3RvciBmb3IgYWx0ZXJuYXRlIGltcGwgd2hlcmUgVmVsUHJveHkgY2xhc3Mgd291bGQgbWFrZSBuZXcKICBWTVByb3h5QXJnIG9iamVjdHMsIGFuZCB1c2UgdGhpcyBjb250cnVjdG9yIHRvIGF2b2lkIHJlcGFyc2luZyB0aGUgCiAgcmVmZXJlbmNlIGFyZ3MKCiAgdGhhdCBpbXBsIGFsc28gaGFkIHRoZSBWTVByb3h5QXJnIGNhcnJ5IGl0J3MgY29udGV4dAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI3ZtcHJveHloYXNoIj48Qj52bXByb3h5aGFzaDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPmNvbnRhaW5lciBmb3Igb3VyIFZNUHJveHkgT2JqZWN0cwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvVk1SZWZlcmVuY2VNdW5nZVZpc2l0b3IuaHRtbCI+PEI+Vk1SZWZlcmVuY2VNdW5nZVZpc2l0b3I8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS52aXNpdG9yLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL1ZNUmVmZXJlbmNlTXVuZ2VWaXNpdG9yLmh0bWwiPlZNUmVmZXJlbmNlTXVuZ2VWaXNpdG9yPC9BPi48REQ+VGhpcyBjbGFzcyBpcyBhIHZpc2l0b3IgdXNlZCBieSB0aGUgVk0gcHJveHkgdG8gY2hhbmdlIHRoZSAKICBsaXRlcmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVmZXJlbmNlIGluIGEgVk0uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS92aXNpdG9yL1ZNUmVmZXJlbmNlTXVuZ2VWaXNpdG9yLmh0bWwjVk1SZWZlcmVuY2VNdW5nZVZpc2l0b3IoamF2YS51dGlsLk1hcCkiPjxCPlZNUmVmZXJlbmNlTXVuZ2VWaXNpdG9yKE1hcCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvVk1SZWZlcmVuY2VNdW5nZVZpc2l0b3IuaHRtbCI+Vk1SZWZlcmVuY2VNdW5nZVZpc2l0b3I8L0E+CjxERD5DVE9SIC0gdGFrZXMgYSBtYXAgb2YgYXJncyB0byByZWZlcmVuY2UKPC9ETD4KPEhSPgo8QSBOQU1FPSJfV18iPjwhLS0gLS0+PC9BPjxIMj4KPEI+VzwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvbG9nL0xvZ1N5c3RlbS5odG1sI1dBUk5fSUQiPjxCPldBUk5fSUQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5sb2cuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL2xvZy9Mb2dTeXN0ZW0uaHRtbCI+TG9nU3lzdGVtPC9BPgo8REQ+UHJlZml4IGZvciB3YXJuaW5nIG1lc3NhZ2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVDb25zdGFudHMuaHRtbCNXQVJOX1BSRUZJWCI+PEI+V0FSTl9QUkVGSVg8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUNvbnN0YW50cy5odG1sIj5SdW50aW1lQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sI3dhcm4oamF2YS5sYW5nLk9iamVjdCkiPjxCPndhcm4oT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eUVuZ2luZS5odG1sIj5WZWxvY2l0eUVuZ2luZTwvQT4KPEREPkxvZyBhIHdhcm5pbmcgbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYXBwL1ZlbG9jaXR5Lmh0bWwjd2FybihqYXZhLmxhbmcuT2JqZWN0KSI+PEI+d2FybihPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FwcC9WZWxvY2l0eS5odG1sIj5WZWxvY2l0eTwvQT4KPEREPkxvZyBhIHdhcm5pbmcgbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCN3YXJuKGphdmEubGFuZy5PYmplY3QpIj48Qj53YXJuKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9SdW50aW1lSW5zdGFuY2UuaHRtbCI+UnVudGltZUluc3RhbmNlPC9BPgo8REQ+TG9nIGEgd2FybmluZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVMb2dnZXIuaHRtbCN3YXJuKGphdmEubGFuZy5PYmplY3QpIj48Qj53YXJuKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZUxvZ2dlci5odG1sIj5SdW50aW1lTG9nZ2VyPC9BPgo8REQ+TG9nIGEgd2FybmluZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWUuaHRtbCN3YXJuKGphdmEubGFuZy5PYmplY3QpIj48Qj53YXJuKE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZS5odG1sIj5SdW50aW1lPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7TG9nIGEgd2FybmluZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTaW5nbGV0b24uaHRtbCN3YXJuKGphdmEubGFuZy5PYmplY3QpIj48Qj53YXJuKE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNpbmdsZXRvbi5odG1sIj5SdW50aW1lU2luZ2xldG9uPC9BPgo8REQ+TG9nIGEgd2FybmluZyBtZXNzYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwiPjxCPldlYk1hY3JvPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnZlcnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwiPldlYk1hY3JvPC9BPi48REQ+VGhpcyBjbGFzcyB3aWxsIGNvbnZlcnQgYSBXZWJNYWNybyB0ZW1wbGF0ZSB0bwogYSBWZWxvY2l0eSB0ZW1wbGF0ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwjV2ViTWFjcm8oKSI+PEI+V2ViTWFjcm8oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnZlcnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwiPldlYk1hY3JvPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1dISVRFU1BBQ0UiPjxCPldISVRFU1BBQ0U8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCNXTV9FWFQiPjxCPldNX0VYVDwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnZlcnQuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb252ZXJ0L1dlYk1hY3JvLmh0bWwiPldlYk1hY3JvPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlckNvbnN0YW50cy5odG1sI1dPUkQiPjxCPldPUkQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXJDb25zdGFudHMuaHRtbCI+UGFyc2VyQ29uc3RhbnRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcGFyc2VyL1BhcnNlci5odG1sI1dvcmQoKSI+PEI+V29yZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5wYXJzZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9QYXJzZXIuaHRtbCI+UGFyc2VyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9NZXRob2RJbnZvY2F0aW9uRXhjZXB0aW9uLmh0bWwjd3JhcHBlZCI+PEI+d3JhcHBlZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuZXhjZXB0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL01ldGhvZEludm9jYXRpb25FeGNlcHRpb24uaHRtbCI+TWV0aG9kSW52b2NhdGlvbkV4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9jb250ZXh0L1ZNQ29udGV4dC5odG1sI3dyYXBwZWRDb250ZXh0Ij48Qj53cmFwcGVkQ29udGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnRleHQvVk1Db250ZXh0Lmh0bWwiPlZNQ29udGV4dDwvQT4KPEREPmNvbnRleHQgdGhhdCB3ZSBhcmUgd3JhcHBpbmcKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvaW8vVmVsb2NpdHlXcml0ZXIuaHRtbCN3cml0ZShjaGFyW10pIj48Qj53cml0ZShjaGFyW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPldyaXRlIGFuIGFycmF5IG9mIGNoYXJhY3RlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwjd3JpdGUoY2hhcltdLCBpbnQsIGludCkiPjxCPndyaXRlKGNoYXJbXSwgaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPldyaXRlIGEgcG9ydGlvbiBvZiBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI3dyaXRlKGludCkiPjxCPndyaXRlKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+V3JpdGUgYSBzaW5nbGUgY2hhcmFjdGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI3dyaXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj53cml0ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuaW8uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sIj5WZWxvY2l0eVdyaXRlcjwvQT4KPEREPldyaXRlIGEgc3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI3dyaXRlKGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KSI+PEI+d3JpdGUoU3RyaW5nLCBpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+V3JpdGUgYSBwb3J0aW9uIG9mIGEgU3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9pby9WZWxvY2l0eVdyaXRlci5odG1sI3dyaXRlciI+PEI+d3JpdGVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5pby48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2lvL1ZlbG9jaXR5V3JpdGVyLmh0bWwiPlZlbG9jaXR5V3JpdGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvdmlzaXRvci9CYXNlVmlzaXRvci5odG1sI3dyaXRlciI+PEI+d3JpdGVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnZpc2l0b3IuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Zpc2l0b3IvQmFzZVZpc2l0b3IuaHRtbCI+QmFzZVZpc2l0b3I8L0E+CjxERD5Xcml0ZXIgdXNlZCBhcyB0aGUgb3V0cHV0IHNpbmsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvc2VydmxldC9WZWxvY2l0eVNlcnZsZXQuaHRtbCN3cml0ZXJQb29sIj48Qj53cml0ZXJQb29sPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuc2VydmxldC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3NlcnZsZXQvVmVsb2NpdHlTZXJ2bGV0Lmh0bWwiPlZlbG9jaXR5U2VydmxldDwvQT4KPEREPkNhY2hlIG9mIHdyaXRlcnMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvdGV4ZW4vR2VuZXJhdG9yLmh0bWwjd3JpdGVycyI+PEI+d3JpdGVyczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkudGV4ZW4uPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXhlbi9HZW5lcmF0b3IuaHRtbCI+R2VuZXJhdG9yPC9BPgo8REQ+S2VlcCB0cmFjayBvZiB0aGUgZmlsZSB3cml0ZXJzIHVzZWQgZm9yIG91dHB1dHRpbmcKIHRvIGZpbGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS90ZXN0L21pc2MvVGVzdC5odG1sI3dyaXRlclN0YWNrIj48Qj53cml0ZXJTdGFjazwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LnRlc3QubWlzYy48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L3Rlc3QvbWlzYy9UZXN0Lmh0bWwiPlRlc3Q8L0E+CjxERD5DYWNoZSBvZiB3cml0ZXJzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCN3cml0ZVRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj53cml0ZVRlbXBsYXRlKFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuY29udmVydC48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2NvbnZlcnQvV2ViTWFjcm8uaHRtbCI+V2ViTWFjcm88L0E+CjxERD5Xcml0ZSBvdXQgdGhlIGNvbnZlcnRlZCB0ZW1wbGF0ZSB0byB0aGUgZ2l2ZW4gbmFtZWQgZmlsZQogYW5kIGJhc2UgZGlyZWN0b3J5Lgo8L0RMPgo8SFI+CjxBIE5BTUU9Il9YXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5YPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL1hQYXRoQ2FjaGUuaHRtbCNYUEFUSF9DQUNIRSI+PEI+WFBBVEhfQ0FDSEU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhDYWNoZS5odG1sIj5YUGF0aENhY2hlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9YUGF0aENhY2hlLmh0bWwiPjxCPlhQYXRoQ2FjaGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL1hQYXRoQ2FjaGUuaHRtbCI+WFBhdGhDYWNoZTwvQT4uPEREPlByb3ZpZGVzIGEgY2FjaGUgZm9yIFhQYXRoIGV4cHJlc3Npb25zLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9YUGF0aENhY2hlLmh0bWwjWFBhdGhDYWNoZSgpIj48Qj5YUGF0aENhY2hlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5hbmFraWEuPEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhDYWNoZS5odG1sIj5YUGF0aENhY2hlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9YUGF0aFRvb2wuaHRtbCI+PEI+WFBhdGhUb29sPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnZlbG9jaXR5LmFuYWtpYS48QSBIUkVGPSJvcmcvYXBhY2hlL3ZlbG9jaXR5L2FuYWtpYS9YUGF0aFRvb2wuaHRtbCI+WFBhdGhUb29sPC9BPi48REQ+VGhpcyBjbGFzcyBhZGRzIGFuIGVudHJ5cG9pbnQgaW50byBYUGF0aCBmdW5jdGlvbmFsaXR5LAogZm9yIEFuYWtpYS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9hbmFraWEvWFBhdGhUb29sLmh0bWwjWFBhdGhUb29sKCkiPjxCPlhQYXRoVG9vbCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvYW5ha2lhL1hQYXRoVG9vbC5odG1sIj5YUGF0aFRvb2w8L0E+CjxERD5Db25zdHJ1Y3RvciBkb2VzIG5vdGhpbmcsIGFzIHRoaXMgaXMgbW9zdGx5CiBqdXN0IG9iamVjdGlmaWVkIHN0YXRpYyBtZXRob2RzCjwvREw+CjxIUj4KPEEgTkFNRT0iX1pfIj48IS0tIC0tPjwvQT48SDI+CjxCPlo8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3BhcnNlci9ub2RlL0FTVENvbW1lbnQuaHRtbCNaSUxDSCI+PEI+WklMQ0g8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnBhcnNlci5ub2RlLjxBIEhSRUY9Im9yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9wYXJzZXIvbm9kZS9BU1RDb21tZW50Lmh0bWwiPkFTVENvbW1lbnQ8L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBIUkVGPSIjX0FfIj5BPC9BPiA8QSBIUkVGPSIjX0JfIj5CPC9BPiA8QSBIUkVGPSIjX0NfIj5DPC9BPiA8QSBIUkVGPSIjX0RfIj5EPC9BPiA8QSBIUkVGPSIjX0VfIj5FPC9BPiA8QSBIUkVGPSIjX0ZfIj5GPC9BPiA8QSBIUkVGPSIjX0dfIj5HPC9BPiA8QSBIUkVGPSIjX0hfIj5IPC9BPiA8QSBIUkVGPSIjX0lfIj5JPC9BPiA8QSBIUkVGPSIjX0pfIj5KPC9BPiA8QSBIUkVGPSIjX0tfIj5LPC9BPiA8QSBIUkVGPSIjX0xfIj5MPC9BPiA8QSBIUkVGPSIjX01fIj5NPC9BPiA8QSBIUkVGPSIjX05fIj5OPC9BPiA8QSBIUkVGPSIjX09fIj5PPC9BPiA8QSBIUkVGPSIjX1BfIj5QPC9BPiA8QSBIUkVGPSIjX1FfIj5RPC9BPiA8QSBIUkVGPSIjX1JfIj5SPC9BPiA8QSBIUkVGPSIjX1NfIj5TPC9BPiA8QSBIUkVGPSIjX1RfIj5UPC9BPiA8QSBIUkVGPSIjX1VfIj5VPC9BPiA8QSBIUkVGPSIjX1ZfIj5WPC9BPiA8QSBIUkVGPSIjX1dfIj5XPC9BPiA8QSBIUkVGPSIjX1hfIj5YPC9BPiA8QSBIUkVGPSIjX1pfIj5aPC9BPiAKPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+CjxUUj4KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDwvVFI+CjwvVEFCTEU+CjwvVEQ+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgo8L0VNPgo8L1REPgo8L1RSPgoKPFRSPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgombmJzcDtQUkVWJm5ic3A7CiZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSJpbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iaW5kZXgtYWxsLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgpDb3B5cmlnaHQgqSAyMDAyIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgo8L0JPRFk+CjwvSFRNTD4K