PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBGcmFtZXNldC8vRU4iImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvZnJhbWVzZXQuZHRkIj4KPCEtLU5ld1BhZ2UtLT4KPEhUTUw+CjxIRUFEPgo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFdlZCBBcHIgMTQgMDg6MjY6MzQgRURUIDIwMDQgLS0+CjxUSVRMRT4KVmVsb2NpdHkgMS40IEFQSTogQ2xhc3MgIFJlc291cmNlTWFuYWdlckltcGwKPC9USVRMRT4KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgo8L0hFQUQ+CjxCT0RZIEJHQ09MT1I9IndoaXRlIj4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPC9UUj4KPC9UQUJMRT4KPC9URD4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+CjwvRU0+CjwvVEQ+CjwvVFI+Cgo8VFI+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUZhY3RvcnkuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgpERVRBSUw6ICZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxIUj4KPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgo8SDI+CjxGT05UIFNJWkU9Ii0xIj4Kb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlPC9GT05UPgo8QlI+CkNsYXNzICBSZXNvdXJjZU1hbmFnZXJJbXBsPC9IMj4KPFBSRT4KamF2YS5sYW5nLk9iamVjdAogIHwKICArLS08Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuUmVzb3VyY2VNYW5hZ2VySW1wbDwvQj4KPC9QUkU+CjxETD4KPERUPjxCPkFsbCBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCI+UmVzb3VyY2VNYW5hZ2VyPC9BPjwvREQ+CjwvREw+CjxIUj4KPERMPgo8RFQ+cHVibGljIGNsYXNzIDxCPlJlc291cmNlTWFuYWdlckltcGw8L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDxEVD5pbXBsZW1lbnRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCI+UmVzb3VyY2VNYW5hZ2VyPC9BPjwvREw+Cgo8UD4KQ2xhc3MgdG8gbWFuYWdlIHRoZSB0ZXh0IHJlc291cmNlIGZvciB0aGUgVmVsb2NpdHkKIFJ1bnRpbWUuCjxQPgo8REw+CjxEVD48Qj5WZXJzaW9uOiA8L0I+PEREPiRJZDogUmVzb3VyY2VNYW5hZ2VySW1wbC5qYXZhLHYgMS43LjQuMSAyMDA0LzAzLzAzIDIzOjIzOjAxIGdlaXJtIEV4cCAkPC9ERD4KPERUPjxCPkF1dGhvcjogPC9CPjxERD48YSBocmVmPSJtYWlsdG86anZhbnp5bEBhcGFjaGUub3JnIj5KYXNvbiB2YW4gWnlsPC9hPiwgPGEgaHJlZj0ibWFpbHRvOnBhdWxvLmdhc3BhckBrcmFua2lrb20uZGUiPlBhdWxvIEdhc3BhcjwvYT4sIDxhIGhyZWY9Im1haWx0bzpnZWlybUBvcHRvbmxpbmUubmV0Ij5HZWlyIE1hZ251c3NvbiBKci48L2E+PC9ERD4KPC9ETD4KPEhSPgoKPFA+CjwhLS0gPT09PT09PT0gSU5ORVIgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4KCgo8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Cgo8QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4KPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZUNhY2hlLmh0bWwiPlJlc291cmNlQ2FjaGU8L0E+PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNnbG9iYWxDYWNoZSI+Z2xvYmFsQ2FjaGU8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7T2JqZWN0IGltcGxlbWVudGluZyBSZXNvdXJjZUNhY2hlIHRvIAogIGJlIG91ciByZXNvdXJjZSBtYW5hZ2VyJ3MgUmVzb3VyY2UgY2FjaGUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJpdmF0ZSAmbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNsb2dXaGVuRm91bmQiPmxvZ1doZW5Gb3VuZDwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtzd2l0Y2ggdG8gdHVybiBvZmYgbG9nIG5vdGljZSB3aGVuIGEgcmVzb3VyY2UgaXMgZm91bmQgZm9yCiAgdGhlIGZpcnN0IHRpbWUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNSRVNPVVJDRV9DT05URU5UIj5SRVNPVVJDRV9DT05URU5UPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Egc3RhdGljIGNvbnRlbnQgcmVzb3VyY2UuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJpdmF0ZSBzdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNSRVNPVVJDRV9MT0FERVJfSURFTlRJRklFUiI+UkVTT1VSQ0VfTE9BREVSX0lERU5USUZJRVI8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7dG9rZW4gdXNlZCB0byBpZGVudGlmeSB0aGUgbG9hZGVyIGludGVybmFsbHk8L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI1JFU09VUkNFX1RFTVBMQVRFIj5SRVNPVVJDRV9URU1QTEFURTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHRlbXBsYXRlIHJlc291cmNlcy48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcml2YXRlICZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI3Jlc291cmNlTG9hZGVySW5pdGlhbGl6ZXJzQWN0aXZlIj5yZXNvdXJjZUxvYWRlckluaXRpYWxpemVyc0FjdGl2ZTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFYWNoIGxvYWRlciBuZWVkcyBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvcgogaXRzIGluaXRpYWxpemF0aW9uLCB0aGlzIGZsYWdzIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIKIG9yIG5vdCB0aGUgY29uZmlndXJhdGlvbiBvYmplY3RzIGhhdmUgYmVlbiBjcmVhdGVkCiBmb3IgdGhlIHJlc291cmNlIGxvYWRlcnMuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO2phdmEudXRpbC5BcnJheUxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI3Jlc291cmNlTG9hZGVycyI+cmVzb3VyY2VMb2FkZXJzPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBMaXN0IG9mIHRlbXBsYXRlTG9hZGVycyB0aGF0IHRoZSBSdW50aW1lIHdpbGwKIHVzZSB0byBsb2NhdGUgdGhlIElucHV0U3RyZWFtIHNvdXJjZSBvZiBhIHRlbXBsYXRlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI3JzdmMiPnJzdmM8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJpdmF0ZSAmbmJzcDtqYXZhLnV0aWwuQXJyYXlMaXN0PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNzb3VyY2VJbml0aWFsaXplckxpc3QiPnNvdXJjZUluaXRpYWxpemVyTGlzdDwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGlzIGEgbGlzdCBvZiB0aGUgdGVtcGxhdGUgaW5wdXQgc3RyZWFtIHNvdXJjZQogaW5pdGlhbGl6ZXJzLCBiYXNpY2FsbHkgcHJvcGVydGllcyBmb3IgYSBwYXJ0aWN1bGFyCiB0ZW1wbGF0ZSBzdHJlYW0gc291cmNlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByaXZhdGUgJm5ic3A7amF2YS51dGlsLkhhc2h0YWJsZTwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjc291cmNlSW5pdGlhbGl6ZXJNYXAiPnNvdXJjZUluaXRpYWxpemVyTWFwPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaXMgYSBtYXAgb2YgcHVibGljIG5hbWUgb2YgdGhlIHRlbXBsYXRlCiBzdHJlYW0gc291cmNlIHRvIGl0J3MgaW5pdGlhbGl6ZXIuPC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7CjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KCjxBIE5BTUU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5Db25zdHJ1Y3RvciBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjUmVzb3VyY2VNYW5hZ2VySW1wbCgpIj5SZXNvdXJjZU1hbmFnZXJJbXBsPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7CjwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4KPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByaXZhdGUgJm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjYXNzZW1ibGVSZXNvdXJjZUxvYWRlckluaXRpYWxpemVycygpIj5hc3NlbWJsZVJlc291cmNlTG9hZGVySW5pdGlhbGl6ZXJzPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyB3aWxsIHByb2R1Y2UgYSBMaXN0IG9mIEhhc2h0YWJsZXMsIGVhY2gKIGhhc2h0YWJsZSBjb250YWlucyB0aGUgaW50aWFsaXphdGlvbiBpbmZvIGZvcgogYSBwYXJ0aWN1bGFyIHJlc291cmNlIGxvYWRlci48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNnZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZykiPmdldExvYWRlck5hbWVGb3JSZXNvdXJjZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtyZXNvdXJjZU5hbWUpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtEZXRlcm1pbmVzIGlzIGEgdGVtcGxhdGUgZXhpc3RzLCBhbmQgcmV0dXJucyBuYW1lIG9mIHRoZSBsb2FkZXIgdGhhdCAKICBwcm92aWRlcyBpdC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNnZXRSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5nZXRSZXNvdXJjZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtyZXNvdXJjZU5hbWUsCiAgICAgICAgICAgIGludCZuYnNwO3Jlc291cmNlVHlwZSk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwjZ2V0UmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+Z2V0UmVzb3VyY2UoU3RyaW5nIHJlc291cmNlTmFtZSwgaW50IHJlc291cmNlVHlwZSwgCiAgICAgICAgICBTdHJpbmcgZW5jb2RpbmcgKTwvQ09ERT48L0E+PC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI2dldFJlc291cmNlKGphdmEubGFuZy5TdHJpbmcsIGludCwgamF2YS5sYW5nLlN0cmluZykiPmdldFJlc291cmNlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3Jlc291cmNlTmFtZSwKICAgICAgICAgICAgaW50Jm5ic3A7cmVzb3VyY2VUeXBlLAogICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW5jb2RpbmcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXRzIHRoZSBuYW1lZCByZXNvdXJjZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCNpbml0aWFsaXplKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj5pbml0aWFsaXplPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+Jm5ic3A7cnMpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJbml0aWFsaXplIHRoZSBSZXNvdXJjZU1hbmFnZXIuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI2xvYWRSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5TdHJpbmcpIj5sb2FkUmVzb3VyY2U8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cmVzb3VyY2VOYW1lLAogICAgICAgICAgICAgaW50Jm5ic3A7cmVzb3VyY2VUeXBlLAogICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2VuY29kaW5nKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TG9hZHMgYSByZXNvdXJjZSBmcm9tIHRoZSBjdXJyZW50IHNldCBvZiByZXNvdXJjZSBsb2FkZXJzPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI3JlZnJlc2hSZXNvdXJjZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuUmVzb3VyY2UsIGphdmEubGFuZy5TdHJpbmcpIj5yZWZyZXNoUmVzb3VyY2U8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2UuaHRtbCI+UmVzb3VyY2U8L0E+Jm5ic3A7cmVzb3VyY2UsCiAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW5jb2RpbmcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUYWtlcyBhbiBleGlzdGluZyByZXNvdXJjZSwgYW5kICdyZWZyZXNoZXMnIGl0LjwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KPFREPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREPjxDT0RFPjxjbGluaXQ+LCBjbG9uZSwgZXF1YWxzLCBmaW5hbGl6ZSwgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgcmVnaXN0ZXJOYXRpdmVzLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgo8L1RSPgo8L1RBQkxFPgombmJzcDsKPFA+Cgo8IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+Cgo8QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPgo8Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8QSBOQU1FPSJSRVNPVVJDRV9URU1QTEFURSI+PCEtLSAtLT48L0E+PEgzPgpSRVNPVVJDRV9URU1QTEFURTwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgaW50IDxCPlJFU09VUkNFX1RFTVBMQVRFPC9CPjwvUFJFPgo8REw+CjxERD5BIHRlbXBsYXRlIHJlc291cmNlcy48L0RMPgo8SFI+Cgo8QSBOQU1FPSJSRVNPVVJDRV9DT05URU5UIj48IS0tIC0tPjwvQT48SDM+ClJFU09VUkNFX0NPTlRFTlQ8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5SRVNPVVJDRV9DT05URU5UPC9CPjwvUFJFPgo8REw+CjxERD5BIHN0YXRpYyBjb250ZW50IHJlc291cmNlLjwvREw+CjxIUj4KCjxBIE5BTUU9IlJFU09VUkNFX0xPQURFUl9JREVOVElGSUVSIj48IS0tIC0tPjwvQT48SDM+ClJFU09VUkNFX0xPQURFUl9JREVOVElGSUVSPC9IMz4KPFBSRT4KcHJpdmF0ZSBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5SRVNPVVJDRV9MT0FERVJfSURFTlRJRklFUjwvQj48L1BSRT4KPERMPgo8REQ+dG9rZW4gdXNlZCB0byBpZGVudGlmeSB0aGUgbG9hZGVyIGludGVybmFsbHk8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnbG9iYWxDYWNoZSI+PCEtLSAtLT48L0E+PEgzPgpnbG9iYWxDYWNoZTwvSDM+CjxQUkU+CnByb3RlY3RlZCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VDYWNoZS5odG1sIj5SZXNvdXJjZUNhY2hlPC9BPiA8Qj5nbG9iYWxDYWNoZTwvQj48L1BSRT4KPERMPgo8REQ+T2JqZWN0IGltcGxlbWVudGluZyBSZXNvdXJjZUNhY2hlIHRvIAogIGJlIG91ciByZXNvdXJjZSBtYW5hZ2VyJ3MgUmVzb3VyY2UgY2FjaGUuPC9ETD4KPEhSPgoKPEEgTkFNRT0icmVzb3VyY2VMb2FkZXJzIj48IS0tIC0tPjwvQT48SDM+CnJlc291cmNlTG9hZGVyczwvSDM+CjxQUkU+CnByb3RlY3RlZCBqYXZhLnV0aWwuQXJyYXlMaXN0IDxCPnJlc291cmNlTG9hZGVyczwvQj48L1BSRT4KPERMPgo8REQ+VGhlIExpc3Qgb2YgdGVtcGxhdGVMb2FkZXJzIHRoYXQgdGhlIFJ1bnRpbWUgd2lsbAogdXNlIHRvIGxvY2F0ZSB0aGUgSW5wdXRTdHJlYW0gc291cmNlIG9mIGEgdGVtcGxhdGUuPC9ETD4KPEhSPgoKPEEgTkFNRT0ic291cmNlSW5pdGlhbGl6ZXJMaXN0Ij48IS0tIC0tPjwvQT48SDM+CnNvdXJjZUluaXRpYWxpemVyTGlzdDwvSDM+CjxQUkU+CnByaXZhdGUgamF2YS51dGlsLkFycmF5TGlzdCA8Qj5zb3VyY2VJbml0aWFsaXplckxpc3Q8L0I+PC9QUkU+CjxETD4KPEREPlRoaXMgaXMgYSBsaXN0IG9mIHRoZSB0ZW1wbGF0ZSBpbnB1dCBzdHJlYW0gc291cmNlCiBpbml0aWFsaXplcnMsIGJhc2ljYWxseSBwcm9wZXJ0aWVzIGZvciBhIHBhcnRpY3VsYXIKIHRlbXBsYXRlIHN0cmVhbSBzb3VyY2UuIFRoZSBvcmRlciBpbiB0aGlzIGxpc3QKIHJlZmxlY3RzIG51bWJlcmluZyBvZiB0aGUgcHJvcGVydGllcyBpLmUuCgogPGxvYWRlci1pZD4ucmVzb3VyY2UubG9hZGVyLjxwcm9wZXJ0eT4gPSA8dmFsdWU+PC9ETD4KPEhSPgoKPEEgTkFNRT0ic291cmNlSW5pdGlhbGl6ZXJNYXAiPjwhLS0gLS0+PC9BPjxIMz4Kc291cmNlSW5pdGlhbGl6ZXJNYXA8L0gzPgo8UFJFPgpwcml2YXRlIGphdmEudXRpbC5IYXNodGFibGUgPEI+c291cmNlSW5pdGlhbGl6ZXJNYXA8L0I+PC9QUkU+CjxETD4KPEREPlRoaXMgaXMgYSBtYXAgb2YgcHVibGljIG5hbWUgb2YgdGhlIHRlbXBsYXRlCiBzdHJlYW0gc291cmNlIHRvIGl0J3MgaW5pdGlhbGl6ZXIuIFRoaXMgaXMgc28KIHRoYXQgY2xpZW50cyBvZiB2ZWxvY2l0eSBjYW4gc2V0IHByb3BlcnRpZXMgb2YKIGEgdGVtcGxhdGUgc291cmNlIHN0cmVhbSB3aXRoIGl0cyBwdWJsaWMgbmFtZS4KIFNvIGZvciBleGFtcGxlLCBhIGNsaWVudCBjb3VsZCBzZXQgdGhlIAogRmlsZS5yZXNvdXJjZS5wYXRoIHByb3BlcnR5IGFuZCB0aGlzIHdvdWxkCiBjaGFuZ2UgdGhlIHJlc291cmNlLnBhdGggcHJvcGVydHkgZm9yIHRoZQogZmlsZSB0ZW1wbGF0ZSBzdHJlYW0gc291cmNlLjwvREw+CjxIUj4KCjxBIE5BTUU9InJlc291cmNlTG9hZGVySW5pdGlhbGl6ZXJzQWN0aXZlIj48IS0tIC0tPjwvQT48SDM+CnJlc291cmNlTG9hZGVySW5pdGlhbGl6ZXJzQWN0aXZlPC9IMz4KPFBSRT4KcHJpdmF0ZSBib29sZWFuIDxCPnJlc291cmNlTG9hZGVySW5pdGlhbGl6ZXJzQWN0aXZlPC9CPjwvUFJFPgo8REw+CjxERD5FYWNoIGxvYWRlciBuZWVkcyBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvcgogaXRzIGluaXRpYWxpemF0aW9uLCB0aGlzIGZsYWdzIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIKIG9yIG5vdCB0aGUgY29uZmlndXJhdGlvbiBvYmplY3RzIGhhdmUgYmVlbiBjcmVhdGVkCiBmb3IgdGhlIHJlc291cmNlIGxvYWRlcnMuPC9ETD4KPEhSPgoKPEEgTkFNRT0ibG9nV2hlbkZvdW5kIj48IS0tIC0tPjwvQT48SDM+CmxvZ1doZW5Gb3VuZDwvSDM+CjxQUkU+CnByaXZhdGUgYm9vbGVhbiA8Qj5sb2dXaGVuRm91bmQ8L0I+PC9QUkU+CjxETD4KPEREPnN3aXRjaCB0byB0dXJuIG9mZiBsb2cgbm90aWNlIHdoZW4gYSByZXNvdXJjZSBpcyBmb3VuZCBmb3IKICB0aGUgZmlyc3QgdGltZS48L0RMPgo8SFI+Cgo8QSBOQU1FPSJyc3ZjIj48IS0tIC0tPjwvQT48SDM+CnJzdmM8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL1J1bnRpbWVTZXJ2aWNlcy5odG1sIj5SdW50aW1lU2VydmljZXM8L0E+IDxCPnJzdmM8L0I+PC9QUkU+CjxETD4KPC9ETD4KCjwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KCjxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KCjxBIE5BTUU9IlJlc291cmNlTWFuYWdlckltcGwoKSI+PCEtLSAtLT48L0E+PEgzPgpSZXNvdXJjZU1hbmFnZXJJbXBsPC9IMz4KPFBSRT4KcHVibGljIDxCPlJlc291cmNlTWFuYWdlckltcGw8L0I+KCk8L1BSRT4KPERMPgo8L0RMPgoKPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgoKPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8QSBOQU1FPSJpbml0aWFsaXplKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj48IS0tIC0tPjwvQT48SDM+CmluaXRpYWxpemU8L0gzPgo8UFJFPgpwdWJsaWMgdm9pZCA8Qj5pbml0aWFsaXplPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvUnVudGltZVNlcnZpY2VzLmh0bWwiPlJ1bnRpbWVTZXJ2aWNlczwvQT4mbmJzcDtycykKICAgICAgICAgICAgICAgIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uPC9QUkU+CjxETD4KPEREPkluaXRpYWxpemUgdGhlIFJlc291cmNlTWFuYWdlci48REQ+PERMPgo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCNpbml0aWFsaXplKG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5SdW50aW1lU2VydmljZXMpIj5pbml0aWFsaXplPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCI+UmVzb3VyY2VNYW5hZ2VyPC9BPjwvQ09ERT48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJhc3NlbWJsZVJlc291cmNlTG9hZGVySW5pdGlhbGl6ZXJzKCkiPjwhLS0gLS0+PC9BPjxIMz4KYXNzZW1ibGVSZXNvdXJjZUxvYWRlckluaXRpYWxpemVyczwvSDM+CjxQUkU+CnByaXZhdGUgdm9pZCA8Qj5hc3NlbWJsZVJlc291cmNlTG9hZGVySW5pdGlhbGl6ZXJzPC9CPigpPC9QUkU+CjxETD4KPEREPlRoaXMgd2lsbCBwcm9kdWNlIGEgTGlzdCBvZiBIYXNodGFibGVzLCBlYWNoCiBoYXNodGFibGUgY29udGFpbnMgdGhlIGludGlhbGl6YXRpb24gaW5mbyBmb3IKIGEgcGFydGljdWxhciByZXNvdXJjZSBsb2FkZXIuIFRoaXMgSGFzdGFibGUKIHdpbGwgYmUgcGFzc2VkIGluIHdoZW4gaW5pdGlhbGl6aW5nIHRoZQogdGhlIHRlbXBsYXRlIGxvYWRlci48REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZXRSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CmdldFJlc291cmNlPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZS5odG1sIj5SZXNvdXJjZTwvQT4gPEI+Z2V0UmVzb3VyY2U8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtyZXNvdXJjZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtyZXNvdXJjZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uLmh0bWwiPlJlc291cmNlTm90Rm91bmRFeGNlcHRpb248L0E+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vUGFyc2VFcnJvckV4Y2VwdGlvbi5odG1sIj5QYXJzZUVycm9yRXhjZXB0aW9uPC9BPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5FeGNlcHRpb248L1BSRT4KPERMPgo8REQ+R2V0cyB0aGUgbmFtZWQgcmVzb3VyY2UuICBSZXR1cm5lZCBjbGFzcyB0eXBlIGNvcnJlc3BvbmRzIHRvIHNwZWNpZmllZCB0eXBlCiAoaS5lLiA8Y29kZT5UZW1wbGF0ZTwvY29kZT4gdG8gPGNvZGU+UkVTT1VSQ0VfVEVNUExBVEU8L2NvZGU+KS48REQ+PERMPgo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvcnVudGltZS9yZXNvdXJjZS9SZXNvdXJjZU1hbmFnZXIuaHRtbCNnZXRSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5TdHJpbmcpIj5nZXRSZXNvdXJjZTwvQT48L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VyLmh0bWwiPlJlc291cmNlTWFuYWdlcjwvQT48L0NPREU+PC9ETD4KPC9ERD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXNvdXJjZU5hbWU8L0NPREU+IC0gVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIHRvIHJldHJpZXZlLjxERD48Q09ERT5yZXNvdXJjZVR5cGU8L0NPREU+IC0gVGhlIHR5cGUgb2YgcmVzb3VyY2UgKDxjb2RlPlJFU09VUkNFX1RFTVBMQVRFPC9jb2RlPiwKICAgICAgICAgICAgICAgICAgICAgPGNvZGU+UkVTT1VSQ0VfQ09OVEVOVDwvY29kZT4sIGV0Yy4pLjxERD48Q09ERT5lbmNvZGluZzwvQ09ERT4gLSBUaGUgY2hhcmFjdGVyIGVuY29kaW5nIHRvIHVzZS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlJlc291cmNlIHdpdGggdGhlIHRlbXBsYXRlIHBhcnNlZCBhbmQgcmVhZHkuPERUPjxCPlRocm93czo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24uaHRtbCI+UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGVtcGxhdGUgbm90IGZvdW5kCiAgICAgICAgICBmcm9tIGFueSBhdmFpbGFibGUgc291cmNlLjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9QYXJzZUVycm9yRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXJyb3JFeGNlcHRpb248L0E+PC9DT0RFPiAtIGlmIHRlbXBsYXRlIGNhbm5vdCBiZSBwYXJzZWQgZHVlCiAgICAgICAgICB0byBzeW50YXggKG9yIG90aGVyKSBlcnJvci48REQ+PENPREU+amF2YS5sYW5nLkV4Y2VwdGlvbjwvQ09ERT4gLSBpZiBhIHByb2JsZW0gaW4gcGFyc2U8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJsb2FkUmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgpsb2FkUmVzb3VyY2U8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPiA8Qj5sb2FkUmVzb3VyY2U8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtyZXNvdXJjZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7cmVzb3VyY2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtlbmNvZGluZykKICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uLmh0bWwiPlJlc291cmNlTm90Rm91bmRFeGNlcHRpb248L0E+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1BhcnNlRXJyb3JFeGNlcHRpb24uaHRtbCI+UGFyc2VFcnJvckV4Y2VwdGlvbjwvQT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLkV4Y2VwdGlvbjwvUFJFPgo8REw+CjxERD5Mb2FkcyBhIHJlc291cmNlIGZyb20gdGhlIGN1cnJlbnQgc2V0IG9mIHJlc291cmNlIGxvYWRlcnM8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnJlc291cmNlTmFtZTwvQ09ERT4gLSBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdG8gcmV0cmlldmUuPEREPjxDT0RFPnJlc291cmNlVHlwZTwvQ09ERT4gLSBUaGUgdHlwZSBvZiByZXNvdXJjZSAoPGNvZGU+UkVTT1VSQ0VfVEVNUExBVEU8L2NvZGU+LAogICAgICAgICAgICAgICAgICAgICA8Y29kZT5SRVNPVVJDRV9DT05URU5UPC9jb2RlPiwgZXRjLikuPEREPjxDT0RFPmVuY29kaW5nPC9DT0RFPiAtIFRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gdXNlLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+UmVzb3VyY2Ugd2l0aCB0aGUgdGVtcGxhdGUgcGFyc2VkIGFuZCByZWFkeS48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbi5odG1sIj5SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBpZiB0ZW1wbGF0ZSBub3QgZm91bmQKICAgICAgICAgIGZyb20gYW55IGF2YWlsYWJsZSBzb3VyY2UuPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1BhcnNlRXJyb3JFeGNlcHRpb24uaHRtbCI+UGFyc2VFcnJvckV4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGVtcGxhdGUgY2Fubm90IGJlIHBhcnNlZCBkdWUKICAgICAgICAgIHRvIHN5bnRheCAob3Igb3RoZXIpIGVycm9yLjxERD48Q09ERT5qYXZhLmxhbmcuRXhjZXB0aW9uPC9DT0RFPiAtIGlmIGEgcHJvYmxlbSBpbiBwYXJzZTwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InJlZnJlc2hSZXNvdXJjZShvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UuUmVzb3VyY2UsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CnJlZnJlc2hSZXNvdXJjZTwvSDM+CjxQUkU+CnByb3RlY3RlZCB2b2lkIDxCPnJlZnJlc2hSZXNvdXJjZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPiZuYnNwO3Jlc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2VuY29kaW5nKQogICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9leGNlcHRpb24vUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbi5odG1sIj5SZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uPC9BPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1BhcnNlRXJyb3JFeGNlcHRpb24uaHRtbCI+UGFyc2VFcnJvckV4Y2VwdGlvbjwvQT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuRXhjZXB0aW9uPC9QUkU+CjxETD4KPEREPlRha2VzIGFuIGV4aXN0aW5nIHJlc291cmNlLCBhbmQgJ3JlZnJlc2hlcycgaXQuICBUaGlzCiAgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgdGhlIHNvdXJjZSBvZiB0aGUgcmVzb3VyY2UgaXMgY2hlY2tlZAogIGZvciBjaGFuZ2VzIGFjY29yZGluZyB0byBzb21lIGNhY2hlL2NoZWNrIGFsZ29yaXRobQogIGFuZCBpZiB0aGUgcmVzb3VyY2UgY2hhbmdlZCwgdGhlbiB0aGUgcmVzb3VyY2UgZGF0YSBpcwogIHJlbG9hZGVkIGFuZCByZS1wYXJzZWQuPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXNvdXJjZTwvQ09ERT4gLSByZXNvdXJjZSB0byByZWZyZXNoPERUPjxCPlRocm93czo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24uaHRtbCI+UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGVtcGxhdGUgbm90IGZvdW5kCiAgICAgICAgICBmcm9tIGN1cnJlbnQgc291cmNlIGZvciB0aGlzIFJlc291cmNlPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1BhcnNlRXJyb3JFeGNlcHRpb24uaHRtbCI+UGFyc2VFcnJvckV4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGVtcGxhdGUgY2Fubm90IGJlIHBhcnNlZCBkdWUKICAgICAgICAgIHRvIHN5bnRheCAob3Igb3RoZXIpIGVycm9yLjxERD48Q09ERT5qYXZhLmxhbmcuRXhjZXB0aW9uPC9DT0RFPiAtIGlmIGEgcHJvYmxlbSBpbiBwYXJzZTwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImdldFJlc291cmNlKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KZ2V0UmVzb3VyY2U8L0gzPgo8UFJFPgpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlLmh0bWwiPlJlc291cmNlPC9BPiA8Qj5nZXRSZXNvdXJjZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3Jlc291cmNlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3Jlc291cmNlVHlwZSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24uaHRtbCI+UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbjwvQT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9QYXJzZUVycm9yRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXJyb3JFeGNlcHRpb248L0E+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLkV4Y2VwdGlvbjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UKICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VySW1wbC5odG1sI2dldFJlc291cmNlKGphdmEubGFuZy5TdHJpbmcsIGludCwgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPmdldFJlc291cmNlKFN0cmluZyByZXNvdXJjZU5hbWUsIGludCByZXNvdXJjZVR5cGUsIAogICAgICAgICAgU3RyaW5nIGVuY29kaW5nICk8L0NPREU+PC9BPjwvST4KPFA+CjxERD5HZXRzIHRoZSBuYW1lZCByZXNvdXJjZS4gIFJldHVybmVkIGNsYXNzIHR5cGUgY29ycmVzcG9uZHMgdG8gc3BlY2lmaWVkIHR5cGUKIChpLmUuIDxjb2RlPlRlbXBsYXRlPC9jb2RlPiB0byA8Y29kZT5SRVNPVVJDRV9URU1QTEFURTwvY29kZT4pLjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVzb3VyY2VOYW1lPC9DT0RFPiAtIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSB0byByZXRyaWV2ZS48REQ+PENPREU+cmVzb3VyY2VUeXBlPC9DT0RFPiAtIFRoZSB0eXBlIG9mIHJlc291cmNlICg8Y29kZT5SRVNPVVJDRV9URU1QTEFURTwvY29kZT4sCiAgICAgICAgICAgICAgICAgICAgIDxjb2RlPlJFU09VUkNFX0NPTlRFTlQ8L2NvZGU+LCBldGMuKS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlJlc291cmNlIHdpdGggdGhlIHRlbXBsYXRlIHBhcnNlZCBhbmQgcmVhZHkuPERUPjxCPlRocm93czo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvZXhjZXB0aW9uL1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24uaHRtbCI+UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGVtcGxhdGUgbm90IGZvdW5kCiAgICAgICAgICBmcm9tIGFueSBhdmFpbGFibGUgc291cmNlLjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L2V4Y2VwdGlvbi9QYXJzZUVycm9yRXhjZXB0aW9uLmh0bWwiPlBhcnNlRXJyb3JFeGNlcHRpb248L0E+PC9DT0RFPiAtIGlmIHRlbXBsYXRlIGNhbm5vdCBiZSBwYXJzZWQgZHVlCiAgICAgICAgICB0byBzeW50YXggKG9yIG90aGVyKSBlcnJvci48REQ+PENPREU+amF2YS5sYW5nLkV4Y2VwdGlvbjwvQ09ERT4gLSBpZiBhIHByb2JsZW0gaW4gcGFyc2U8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2UoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KZ2V0TG9hZGVyTmFtZUZvclJlc291cmNlPC9IMz4KPFBSRT4KcHVibGljIGphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TG9hZGVyTmFtZUZvclJlc291cmNlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cmVzb3VyY2VOYW1lKTwvUFJFPgo8REw+CjxERD5EZXRlcm1pbmVzIGlzIGEgdGVtcGxhdGUgZXhpc3RzLCBhbmQgcmV0dXJucyBuYW1lIG9mIHRoZSBsb2FkZXIgdGhhdCAKICBwcm92aWRlcyBpdC4gIFRoaXMgaXMgYSBzbGlnaHRseSBsZXNzIGhva2V5IHdheSB0byBzdXBwb3J0CiAgdGhlIFZlbG9jaXR5LnRlbXBsYXRlRXhpc3RzKCkgdXRpbGl0eSBtZXRob2QsIHdoaWNoIHdhcyBicm9rZW4KICB3aGVuIHBlci10ZW1wbGF0ZSBlbmNvZGluZyB3YXMgaW50cm9kdWNlZC4gIFdlIGNhbiByZXZpc2l0IHRoaXMuPEREPjxETD4KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3J1bnRpbWUvcmVzb3VyY2UvUmVzb3VyY2VNYW5hZ2VyLmh0bWwjZ2V0TG9hZGVyTmFtZUZvclJlc291cmNlKGphdmEubGFuZy5TdHJpbmcpIj5nZXRMb2FkZXJOYW1lRm9yUmVzb3VyY2U8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlTWFuYWdlci5odG1sIj5SZXNvdXJjZU1hbmFnZXI8L0E+PC9DT0RFPjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVzb3VyY2VOYW1lPC9DT0RFPiAtIE5hbWUgb2YgdGVtcGxhdGUgb3IgY29udGVudCByZXNvdXJjZTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+Y2xhc3MgbmFtZSBvZiBsb2FkZXIgdGhhbiBjYW4gcHJvdmlkZSBpdDwvREw+CjwvREQ+CjwvREw+CjwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KPEhSPgoKPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+CjxUUj4KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1Jlc291cmNlTWFuYWdlckltcGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8L1RSPgo8L1RBQkxFPgo8L1REPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KPC9FTT4KPC9URD4KPC9UUj4KCjxUUj4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS9ydW50aW1lL3Jlc291cmNlL1Jlc291cmNlRmFjdG9yeS5odG1sIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDs8QSBIUkVGPSJSZXNvdXJjZU1hbmFnZXJJbXBsLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CkRFVEFJTDogJm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgpDb3B5cmlnaHQgqSAyMDAyIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgo8L0JPRFk+CjwvSFRNTD4K