PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+CjwhLS1OZXdQYWdlLS0+CjxIVE1MPgo8SEVBRD4KPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBGcmkgQXVnIDIyIDAzOjQ0OjEwIEVEVCAyMDAzIC0tPgo8VElUTEU+CkR5bmFBY3Rpb25Gb3JtQ2xhc3MgKEFwYWNoZSBTdHJ1dHMgQVBJIERvY3VtZW50YXRpb24pCjwvVElUTEU+CjxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uRHluYUFjdGlvbkZvcm1DbGFzcyxEeW5hQWN0aW9uRm9ybUNsYXNzIGNsYXNzIj4KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgo8L0hFQUQ+CjxTQ1JJUFQ+CmZ1bmN0aW9uIGFzZCgpCnsKcGFyZW50LmRvY3VtZW50LnRpdGxlPSJEeW5hQWN0aW9uRm9ybUNsYXNzIChBcGFjaGUgU3RydXRzIEFQSSBEb2N1bWVudGF0aW9uKSI7Cn0KPC9TQ1JJUFQ+CjxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9ImFzZCgpOyI+Cgo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+CjxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4KPFRSPgo8VEQgQ09MU1BBTj0zIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+CjxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPgogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDwvVFI+CjwvVEFCTEU+CjwvVEQ+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgo8L0VNPgo8L1REPgo8L1RSPgoKPFRSPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm0uaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9FeGNlcHRpb25IYW5kbGVyLmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDs8QSBIUkVGPSJEeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDsKPFNDUklQVD4KICA8IS0tCiAgaWYod2luZG93PT10b3ApIHsKICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwogIH0KICAvLy0tPgo8L1NDUklQVD4KPE5PU0NSSVBUPgo8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KPC9OT1NDUklQVD4KPC9GT05UPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgpERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+CjxIMj4KPEZPTlQgU0laRT0iLTEiPgpvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb248L0ZPTlQ+CjxCUj4KQ2xhc3MgRHluYUFjdGlvbkZvcm1DbGFzczwvSDI+CjxQUkU+CmphdmEubGFuZy5PYmplY3QKICB8CiAgKy0tPEI+b3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkR5bmFBY3Rpb25Gb3JtQ2xhc3M8L0I+CjwvUFJFPgo8REw+CjxEVD48Qj5BbGwgSW1wbGVtZW50ZWQgSW50ZXJmYWNlczo8L0I+IDxERD5vcmcuYXBhY2hlLmNvbW1vbnMuYmVhbnV0aWxzLkR5bmFDbGFzcywgamF2YS5pby5TZXJpYWxpemFibGU8L0REPgo8L0RMPgo8SFI+CjxETD4KPERUPnB1YmxpYyBjbGFzcyA8Qj5EeW5hQWN0aW9uRm9ybUNsYXNzPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8RFQ+aW1wbGVtZW50cyBvcmcuYXBhY2hlLmNvbW1vbnMuYmVhbnV0aWxzLkR5bmFDbGFzcywgamF2YS5pby5TZXJpYWxpemFibGU8L0RMPgoKPFA+CjxwPkltcGxlbWVudGF0aW9uIG9mIDxjb2RlPkR5bmFDbGFzczwvY29kZT4gZm9yCiA8Y29kZT5EeW5hQWN0aW9uRm9ybTwvY29kZT4gY2xhc3NlcyB0aGF0IGFsbG93IGRldmVsb3BlcnMgdG8gZGVmaW5lCiBBY3Rpb25Gb3JtcyB3aXRob3V0IGhhdmluZyB0byBpbmRpdmlkdWFsbHkgY29kZSBhbGwgb2YgdGhlIGNsYXNzZXMuCiA8c3Ryb25nPk5PVEU8L3N0cm9uZz4gLSBUaGlzIGNsYXNzIGlzIG9ubHkgdXNlZCBpbiB0aGUgaW50ZXJuYWwKIGltcGxlbWVudGF0aW9uIG9mIGR5bmFtaWMgYWN0aW9uIGZvcm0gYmVhbnMuICBBcHBsaWNhdGlvbnMgbmV2ZXIgbmVlZAogdG8gY29uc3VsdCB0aGlzIGRvY3VtZW50YXRpb24uPC9wPgo8UD4KCjxQPgo8REw+CjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KICA8REQ+U3RydXRzIDEuMTwvREQ+CjxEVD48Qj5WZXJzaW9uOjwvQj48L0RUPgogIDxERD4kUmV2aXNpb246IDEuMSAkICREYXRlJDwvREQ+CjxEVD48Qj5BdXRob3I6PC9CPjwvRFQ+CiAgPEREPkNyYWlnIE1jQ2xhbmFoYW48L0REPgo8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9zZXJpYWxpemVkLWZvcm0uaHRtbCIgVEFSR0VUPSJvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uRHluYUFjdGlvbkZvcm1DbGFzcyI+U2VyaWFsaXplZCBGb3JtPC9BPjwvREw+CjxIUj4KCjxQPgo8IS0tID09PT09PT09IE5FU1RFRCBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPgoKCjwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7amF2YS5sYW5nLkNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0R5bmFBY3Rpb25Gb3JtQ2xhc3MuaHRtbCNiZWFuQ2xhc3MiPmJlYW5DbGFzczwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgPGNvZGU+RHluYUFjdGlvbkZvcm08L2NvZGU+IGltcGxlbWVudGF0aW9uIDxjb2RlPkNsYXNzPC9jb2RlPiB3aGljaAogd2Ugd2lsbCB1c2UgdG8gY3JlYXRlIG5ldyBiZWFuIGluc3RhbmNlcy48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjY29uZmlnIj5jb25maWc8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZvcm0gYmVhbiBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGlzIGNsYXNzLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCBzdGF0aWMmbmJzcDtqYXZhLnV0aWwuSGFzaE1hcDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjZHluYUNsYXNzZXMiPmR5bmFDbGFzc2VzPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzZXQgb2YgPGNvZGU+RHluYUFjdGlvbkZvcm1DbGFzczwvY29kZT4gaW5zdGFuY2VzIHRoYXQgaGF2ZQogZXZlciBiZWVuIGNyZWF0ZWQsIGtleWVkIGJ5IHRoZSBmb3JtIGJlYW4gbmFtZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgc3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjbG9jayI+bG9jazwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbG9ja2FibGUgb2JqZWN0IHdlIGNhbiBzeW5jaHJvbml6ZSBvbiwgZXZlbiBpZiBkeW5hQ2xhc3NlcwogaXMgbnVsbCw8L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjbmFtZSI+bmFtZTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgImR5bmFtaWMgY2xhc3MgbmFtZSIgZm9yIHRoaXMgPGNvZGU+RHluYUNsYXNzPC9jb2RlPi48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7b3JnLmFwYWNoZS5jb21tb25zLmJlYW51dGlscy5EeW5hUHJvcGVydHlbXTwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjcHJvcGVydGllcyI+cHJvcGVydGllczwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2V0IG9mIGR5bmFtaWMgcHJvcGVydGllcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgRHluYUNsYXNzLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDtqYXZhLnV0aWwuSGFzaE1hcDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjcHJvcGVydGllc01hcCI+cHJvcGVydGllc01hcDwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2V0IG9mIGR5bmFtaWMgcHJvcGVydGllcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgRHluYUNsYXNzLAoga2V5ZWQgYnkgdGhlIHByb3BlcnR5IG5hbWUuPC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7CjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KCjxBIE5BTUU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5Db25zdHJ1Y3RvciBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcml2YXRlIDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjRHluYUFjdGlvbkZvcm1DbGFzcyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuRm9ybUJlYW5Db25maWcpIj5EeW5hQWN0aW9uRm9ybUNsYXNzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbnN0cnVjdCBhIG5ldyBEeW5hQWN0aW9uRm9ybUNsYXNzIGZvciB0aGUgc3BlY2lmaWVkIGZvcm0gYmVhbgogY29uZmlndXJhdGlvbi48L1REPgo8L1RSPgo8L1RBQkxFPgombmJzcDsKPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgoKPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjY2xlYXIoKSI+Y2xlYXI8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDbGVhciBvdXIgY2FjaGUgb2YgRHluYUFjdGlvbkZvcm1DbGFzcyBpbnN0YW5jZXMuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0R5bmFBY3Rpb25Gb3JtQ2xhc3MuaHRtbCI+RHluYUFjdGlvbkZvcm1DbGFzczwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sI2NyZWF0ZUR5bmFBY3Rpb25Gb3JtQ2xhc3Mob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkZvcm1CZWFuQ29uZmlnKSI+Y3JlYXRlRHluYUFjdGlvbkZvcm1DbGFzczwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3JtQmVhbkNvbmZpZy5odG1sIj5Gb3JtQmVhbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDcmVhdGUgKGlmIG5lY2Vzc2FyeSkgYW5kIHJldHVybiBhIG5ldyA8Y29kZT5EeW5hQWN0aW9uRm9ybUNsYXNzPC9jb2RlPgogaW5zdGFuY2UgZm9yIHRoZSBzcGVjaWZpZWQgZm9ybSBiZWFuIGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO2phdmEubGFuZy5DbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9EeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwjZ2V0QmVhbkNsYXNzKCkiPmdldEJlYW5DbGFzczwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3Mgd2UgYXJlIHVzaW5nIHRvIGNvbnN0cnVjdCBuZXcKIGluc3RhbmNlcywgcmUtaW50cm9zcGVjdGluZyBvdXIgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPjxDT0RFPkZvcm1CZWFuQ29uZmlnPC9DT0RFPjwvQT4gaWYgbmVjZXNzYXJ5CiAodGhhdCBpcywgYWZ0ZXIgYmVpbmcgZGVzZXJpYWxpemVkLCBzaW5jZSA8Y29kZT5iZWFuQ2xhc3M8L2NvZGU+IGlzCiBtYXJrZWQgdHJhbnNpZW50LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO29yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuRHluYVByb3BlcnR5W108L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sI2dldER5bmFQcm9wZXJ0aWVzKCkiPmdldER5bmFQcm9wZXJ0aWVzPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIGFuIGFycmF5IG9mIDxjb2RlPkR5bmFQcm9wZXJ0eTwvY29kZT5zIGZvciB0aGUgcHJvcGVydGllcwogY3VycmVudGx5IGRlZmluZWQgaW4gdGhpcyBEeW5hQ2xhc3MuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7b3JnLmFwYWNoZS5jb21tb25zLmJlYW51dGlscy5EeW5hUHJvcGVydHk8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sI2dldER5bmFQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0RHluYVByb3BlcnR5PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LCBpZiBpdCBleGlzdHM7CiBvdGhlcndpc2UsIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0R5bmFBY3Rpb25Gb3JtQ2xhc3MuaHRtbCNnZXROYW1lKCkiPmdldE5hbWU8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBEeW5hQ2xhc3MgKGFuYWxvZ291cyB0byB0aGUKIDxjb2RlPmdldE5hbWUoKTwvY29kZT4gbWV0aG9kIG9mIDxjb2RlPmphdmEubGFuZy5DbGFzczwvY29kZSksIHdoaWNoCiBhbGxvd3MgdGhlIHNhbWUgPGNvZGU+RHluYUNsYXNzPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBjbGFzcyB0byBzdXBwb3J0CiBkaWZmZXJlbnQgZHluYW1pYyBjbGFzc2VzLCB3aXRoIGRpZmZlcmVudCBzZXRzIG9mIHByb3BlcnRpZXMuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sI2ludHJvc3BlY3Qob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkZvcm1CZWFuQ29uZmlnKSI+aW50cm9zcGVjdDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3JtQmVhbkNvbmZpZy5odG1sIj5Gb3JtQmVhbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJbnRyb3NwZWN0IG91ciBmb3JtIGJlYW4gY29uZmlndXJhdGlvbiB0byBpZGVudGlmeSB0aGUgc3VwcG9ydGVkCiBwcm9wZXJ0aWVzLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO29yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuRHluYUJlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sI25ld0luc3RhbmNlKCkiPm5ld0luc3RhbmNlPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7SW5zdGFudGlhdGUgYW5kIHJldHVybiBhIG5ldyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm0uaHRtbCI+PENPREU+RHluYUFjdGlvbkZvcm08L0NPREU+PC9BPiBpbnN0YW5jZSwKIGFzc29jaWF0ZWQgd2l0aCB0aGlzIDxjb2RlPkR5bmFBY3Rpb25Gb3JtQ2xhc3M8L2NvZGU+LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sI3RvU3RyaW5nKCkiPnRvU3RyaW5nPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVuZGVyIGEgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LjwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KPFREPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREPjxDT0RFPmNsb25lLCBlcXVhbHMsIGZpbmFsaXplLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB3YWl0LCB3YWl0LCB3YWl0PC9DT0RFPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwo8UD4KCjwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9ImZpZWxkX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPkZpZWxkIERldGFpbDwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KCjxBIE5BTUU9ImJlYW5DbGFzcyI+PCEtLSAtLT48L0E+PEgzPgpiZWFuQ2xhc3M8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgdHJhbnNpZW50IGphdmEubGFuZy5DbGFzcyA8Qj5iZWFuQ2xhc3M8L0I+PC9QUkU+CjxETD4KPEREPlRoZSA8Y29kZT5EeW5hQWN0aW9uRm9ybTwvY29kZT4gaW1wbGVtZW50YXRpb24gPGNvZGU+Q2xhc3M8L2NvZGU+IHdoaWNoCiB3ZSB3aWxsIHVzZSB0byBjcmVhdGUgbmV3IGJlYW4gaW5zdGFuY2VzLgo8UD4KPERMPgo8L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJjb25maWciPjwhLS0gLS0+PC9BPjxIMz4KY29uZmlnPC9IMz4KPFBSRT4KcHJvdGVjdGVkIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3JtQmVhbkNvbmZpZy5odG1sIj5Gb3JtQmVhbkNvbmZpZzwvQT4gPEI+Y29uZmlnPC9CPjwvUFJFPgo8REw+CjxERD5UaGUgZm9ybSBiZWFuIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoaXMgY2xhc3MuCjxQPgo8REw+CjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9Im5hbWUiPjwhLS0gLS0+PC9BPjxIMz4KbmFtZTwvSDM+CjxQUkU+CnByb3RlY3RlZCBqYXZhLmxhbmcuU3RyaW5nIDxCPm5hbWU8L0I+PC9QUkU+CjxETD4KPEREPlRoZSAiZHluYW1pYyBjbGFzcyBuYW1lIiBmb3IgdGhpcyA8Y29kZT5EeW5hQ2xhc3M8L2NvZGU+Lgo8UD4KPERMPgo8L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJwcm9wZXJ0aWVzIj48IS0tIC0tPjwvQT48SDM+CnByb3BlcnRpZXM8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgb3JnLmFwYWNoZS5jb21tb25zLmJlYW51dGlscy5EeW5hUHJvcGVydHlbXSA8Qj5wcm9wZXJ0aWVzPC9CPjwvUFJFPgo8REw+CjxERD5UaGUgc2V0IG9mIGR5bmFtaWMgcHJvcGVydGllcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgRHluYUNsYXNzLgo8UD4KPERMPgo8L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJwcm9wZXJ0aWVzTWFwIj48IS0tIC0tPjwvQT48SDM+CnByb3BlcnRpZXNNYXA8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgamF2YS51dGlsLkhhc2hNYXAgPEI+cHJvcGVydGllc01hcDwvQj48L1BSRT4KPERMPgo8REQ+VGhlIHNldCBvZiBkeW5hbWljIHByb3BlcnRpZXMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIER5bmFDbGFzcywKIGtleWVkIGJ5IHRoZSBwcm9wZXJ0eSBuYW1lLiAgSW5kaXZpZHVhbCBkZXNjcmlwdG9yIGluc3RhbmNlcyB3aWxsCiBiZSB0aGUgc2FtZSBpbnN0YW5jZXMgYXMgdGhvc2UgaW4gdGhlIDxjb2RlPnByb3BlcnRpZXM8L2NvZGU+IGxpc3QuCjxQPgo8REw+CjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImR5bmFDbGFzc2VzIj48IS0tIC0tPjwvQT48SDM+CmR5bmFDbGFzc2VzPC9IMz4KPFBSRT4KcHJvdGVjdGVkIHN0YXRpYyB0cmFuc2llbnQgamF2YS51dGlsLkhhc2hNYXAgPEI+ZHluYUNsYXNzZXM8L0I+PC9QUkU+CjxETD4KPEREPlRoZSBzZXQgb2YgPGNvZGU+RHluYUFjdGlvbkZvcm1DbGFzczwvY29kZT4gaW5zdGFuY2VzIHRoYXQgaGF2ZQogZXZlciBiZWVuIGNyZWF0ZWQsIGtleWVkIGJ5IHRoZSBmb3JtIGJlYW4gbmFtZS4KPFA+CjxETD4KPC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0ibG9jayI+PCEtLSAtLT48L0E+PEgzPgpsb2NrPC9IMz4KPFBSRT4KcHJvdGVjdGVkIHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmxvY2s8L0I+PC9QUkU+CjxETD4KPEREPlRoZSBsb2NrYWJsZSBvYmplY3Qgd2UgY2FuIHN5bmNocm9uaXplIG9uLCBldmVuIGlmIGR5bmFDbGFzc2VzCiBpcyBudWxsLAo8UD4KPERMPgo8L0RMPgo8L0RMPgoKPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgoKPEEgTkFNRT0iY29uc3RydWN0b3JfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4KPEI+Q29uc3RydWN0b3IgRGV0YWlsPC9CPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0iRHluYUFjdGlvbkZvcm1DbGFzcyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuRm9ybUJlYW5Db25maWcpIj48IS0tIC0tPjwvQT48SDM+CkR5bmFBY3Rpb25Gb3JtQ2xhc3M8L0gzPgo8UFJFPgpwcml2YXRlIDxCPkR5bmFBY3Rpb25Gb3JtQ2xhc3M8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3JtQmVhbkNvbmZpZy5odG1sIj5Gb3JtQmVhbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPkNvbnN0cnVjdCBhIG5ldyBEeW5hQWN0aW9uRm9ybUNsYXNzIGZvciB0aGUgc3BlY2lmaWVkIGZvcm0gYmVhbgogY29uZmlndXJhdGlvbi4gIFRoaXMgY29uc3RydWN0b3IgaXMgcHJpdmF0ZTsgRHluYUFjdGlvbkZvcm1DbGFzcwogaW5zdGFuY2VzIHdpbGwgYmUgY3JlYXRlZCBhcyBuZWVkZWQgdmlhIGNhbGxzIHRvIHRoZQogc3RhdGljIDxjb2RlPmNyZWF0ZUR5bmFBY3Rpb25Gb3JtQ2xhc3MoKTwvY29kZT4gbWV0aG9kLgo8UD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gVGhlIEZvcm1CZWFuQ29uZmlnIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIHByb3BlcnRpZXMKICBvZiB0aGUgYmVhbiB0byBiZSBjcmVhdGVkCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGUgYmVhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcwogIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgRHluYUFjdGlvbkZvcm0gKG9yIGEgc3ViY2xhc3MKICBvZiBEeW5hQWN0aW9uRm9ybSk8L0RMPgoKPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgoKPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8QSBOQU1FPSJnZXROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KZ2V0TmFtZTwvSDM+CjxQUkU+CnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldE5hbWU8L0I+KCk8L1BSRT4KPERMPgo8REQ+UmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgRHluYUNsYXNzIChhbmFsb2dvdXMgdG8gdGhlCiA8Y29kZT5nZXROYW1lKCk8L2NvZGU+IG1ldGhvZCBvZiA8Y29kZT5qYXZhLmxhbmcuQ2xhc3M8L2NvZGUpLCB3aGljaAogYWxsb3dzIHRoZSBzYW1lIDxjb2RlPkR5bmFDbGFzczwvY29kZT4gaW1wbGVtZW50YXRpb24gY2xhc3MgdG8gc3VwcG9ydAogZGlmZmVyZW50IGR5bmFtaWMgY2xhc3Nlcywgd2l0aCBkaWZmZXJlbnQgc2V0cyBvZiBwcm9wZXJ0aWVzLgo8UD4KPEREPjxETD4KPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcuYXBhY2hlLmNvbW1vbnMuYmVhbnV0aWxzLkR5bmFDbGFzczwvQ09ERT48L0RMPgo8L0REPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZXREeW5hUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KZ2V0RHluYVByb3BlcnR5PC9IMz4KPFBSRT4KcHVibGljIG9yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuRHluYVByb3BlcnR5IDxCPmdldER5bmFQcm9wZXJ0eTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9QUkU+CjxETD4KPEREPlJldHVybiBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcHJvcGVydHksIGlmIGl0IGV4aXN0czsKIG90aGVyd2lzZSwgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+Lgo8UD4KPEREPjxETD4KPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldER5bmFQcm9wZXJ0eTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuRHluYUNsYXNzPC9DT0RFPjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bmFtZTwvQ09ERT4gLSBOYW1lIG9mIHRoZSBkeW5hbWljIHByb3BlcnR5IGZvciB3aGljaCBhIGRlc2NyaXB0b3IKICBpcyByZXF1ZXN0ZWQKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9DT0RFPiAtIGlmIG5vIHByb3BlcnR5IG5hbWUgaXMgc3BlY2lmaWVkPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZ2V0RHluYVByb3BlcnRpZXMoKSI+PCEtLSAtLT48L0E+PEgzPgpnZXREeW5hUHJvcGVydGllczwvSDM+CjxQUkU+CnB1YmxpYyBvcmcuYXBhY2hlLmNvbW1vbnMuYmVhbnV0aWxzLkR5bmFQcm9wZXJ0eVtdIDxCPmdldER5bmFQcm9wZXJ0aWVzPC9CPigpPC9QUkU+CjxETD4KPEREPjxwPlJldHVybiBhbiBhcnJheSBvZiA8Y29kZT5EeW5hUHJvcGVydHk8L2NvZGU+cyBmb3IgdGhlIHByb3BlcnRpZXMKIGN1cnJlbnRseSBkZWZpbmVkIGluIHRoaXMgRHluYUNsYXNzLiAgSWYgbm8gcHJvcGVydGllcyBhcmUgZGVmaW5lZCwgYQogemVyby1sZW5ndGggYXJyYXkgd2lsbCBiZSByZXR1cm5lZC48L3A+CgogPHA+PHN0cm9uZz5GSVhNRTwvc3Ryb25nPiAtIFNob3VsZCB3ZSByZWFsbHkgYmUgaW1wbGVtZW50aW5nCiA8Y29kZT5nZXRCZWFuSW5mbygpPC9jb2RlPiBpbnN0ZWFkLCB3aGljaCByZXR1cm5zIHByb3BlcnR5IGRlc2NyaXB0b3JzCiBhbmQgYSBidW5jaCBvZiBvdGhlciBzdHVmZj88L3A+CjxQPgo8REQ+PERMPgo8RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0RHluYVByb3BlcnRpZXM8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcuYXBhY2hlLmNvbW1vbnMuYmVhbnV0aWxzLkR5bmFDbGFzczwvQ09ERT48L0RMPgo8L0REPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJuZXdJbnN0YW5jZSgpIj48IS0tIC0tPjwvQT48SDM+Cm5ld0luc3RhbmNlPC9IMz4KPFBSRT4KcHVibGljIG9yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuRHluYUJlYW4gPEI+bmV3SW5zdGFuY2U8L0I+KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uPC9QUkU+CjxETD4KPEREPjxwPkluc3RhbnRpYXRlIGFuZCByZXR1cm4gYSBuZXcgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0R5bmFBY3Rpb25Gb3JtLmh0bWwiPjxDT0RFPkR5bmFBY3Rpb25Gb3JtPC9DT0RFPjwvQT4gaW5zdGFuY2UsCiBhc3NvY2lhdGVkIHdpdGggdGhpcyA8Y29kZT5EeW5hQWN0aW9uRm9ybUNsYXNzPC9jb2RlPi4gIFRoZQogcHJvcGVydGllcyBvZiB0aGUgcmV0dXJuZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0R5bmFBY3Rpb25Gb3JtLmh0bWwiPjxDT0RFPkR5bmFBY3Rpb25Gb3JtPC9DT0RFPjwvQT4gd2lsbCBoYXZlIGJlZW4KIGluaXRpYWxpemVkIHRvIHRoZSBkZWZhdWx0IHZhbHVlcyBzcGVjaWZpZWQgaW4gdGhlIGZvcm0gYmVhbgogY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi48L3A+CjxQPgo8REQ+PERMPgo8RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+bmV3SW5zdGFuY2U8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcuYXBhY2hlLmNvbW1vbnMuYmVhbnV0aWxzLkR5bmFDbGFzczwvQ09ERT48L0RMPgo8L0REPgo8REQ+PERMPgoKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGUgQ2xhc3Mgb3IgdGhlIGFwcHJvcHJpYXRlCiAgY29uc3RydWN0b3IgaXMgbm90IGFjY2Vzc2libGUKPEREPjxDT0RFPmphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgQ2xhc3MgcmVwcmVzZW50cyBhbiBhYnN0cmFjdAogIGNsYXNzLCBhbiBhcnJheSBjbGFzcywgYSBwcmltaXRpdmUgdHlwZSwgb3Igdm9pZDsgb3IgaWYgaW5zdGFudGlhdGlvbgogIGZhaWxzIGZvciBzb21lIG90aGVyIHJlYXNvbjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InRvU3RyaW5nKCkiPjwhLS0gLS0+PC9BPjxIMz4KdG9TdHJpbmc8L0gzPgo8UFJFPgpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj50b1N0cmluZzwvQj4oKTwvUFJFPgo8REw+CjxERD5SZW5kZXIgYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCjxQPgo8REQ+PERMPgo8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PENPREU+dG9TdHJpbmc8L0NPREU+IGluIGNsYXNzIDxDT0RFPmphdmEubGFuZy5PYmplY3Q8L0NPREU+PC9ETD4KPC9ERD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iY2xlYXIoKSI+PCEtLSAtLT48L0E+PEgzPgpjbGVhcjwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgdm9pZCA8Qj5jbGVhcjwvQj4oKTwvUFJFPgo8REw+CjxERD5DbGVhciBvdXIgY2FjaGUgb2YgRHluYUFjdGlvbkZvcm1DbGFzcyBpbnN0YW5jZXMuCjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJjcmVhdGVEeW5hQWN0aW9uRm9ybUNsYXNzKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5Gb3JtQmVhbkNvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4KY3JlYXRlRHluYUFjdGlvbkZvcm1DbGFzczwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0R5bmFBY3Rpb25Gb3JtQ2xhc3MuaHRtbCI+RHluYUFjdGlvbkZvcm1DbGFzczwvQT4gPEI+Y3JlYXRlRHluYUFjdGlvbkZvcm1DbGFzczwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L1BSRT4KPERMPgo8REQ+Q3JlYXRlIChpZiBuZWNlc3NhcnkpIGFuZCByZXR1cm4gYSBuZXcgPGNvZGU+RHluYUFjdGlvbkZvcm1DbGFzczwvY29kZT4KIGluc3RhbmNlIGZvciB0aGUgc3BlY2lmaWVkIGZvcm0gYmVhbiBjb25maWd1cmF0aW9uIGluc3RhbmNlLgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gVGhlIEZvcm1CZWFuQ29uZmlnIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIHByb3BlcnRpZXMKICBvZiB0aGUgYmVhbiB0byBiZSBjcmVhdGVkCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGUgYmVhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcwogIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgRHluYUFjdGlvbkZvcm0gKG9yIGEgc3ViY2xhc3MKICBvZiBEeW5hQWN0aW9uRm9ybSk8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZXRCZWFuQ2xhc3MoKSI+PCEtLSAtLT48L0E+PEgzPgpnZXRCZWFuQ2xhc3M8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgamF2YS5sYW5nLkNsYXNzIDxCPmdldEJlYW5DbGFzczwvQj4oKTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzIHdlIGFyZSB1c2luZyB0byBjb25zdHJ1Y3QgbmV3CiBpbnN0YW5jZXMsIHJlLWludHJvc3BlY3Rpbmcgb3VyIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3JtQmVhbkNvbmZpZy5odG1sIj48Q09ERT5Gb3JtQmVhbkNvbmZpZzwvQ09ERT48L0E+IGlmIG5lY2Vzc2FyeQogKHRoYXQgaXMsIGFmdGVyIGJlaW5nIGRlc2VyaWFsaXplZCwgc2luY2UgPGNvZGU+YmVhbkNsYXNzPC9jb2RlPiBpcwogbWFya2VkIHRyYW5zaWVudC4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImludHJvc3BlY3Qob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkZvcm1CZWFuQ29uZmlnKSI+PCEtLSAtLT48L0E+PEgzPgppbnRyb3NwZWN0PC9IMz4KPFBSRT4KcHJvdGVjdGVkIHZvaWQgPEI+aW50cm9zcGVjdDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L1BSRT4KPERMPgo8REQ+SW50cm9zcGVjdCBvdXIgZm9ybSBiZWFuIGNvbmZpZ3VyYXRpb24gdG8gaWRlbnRpZnkgdGhlIHN1cHBvcnRlZAogcHJvcGVydGllcy4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y29uZmlnPC9DT0RFPiAtIFRoZSBGb3JtQmVhbkNvbmZpZyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBwcm9wZXJ0aWVzCiAgb2YgdGhlIGJlYW4gdG8gYmUgY3JlYXRlZAo8RFQ+PEI+VGhyb3dzOjwvQj4KPEREPjxDT0RFPmphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L0NPREU+IC0gaWYgdGhlIGJlYW4gaW1wbGVtZW50YXRpb24gY2xhc3MKICBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IER5bmFBY3Rpb25Gb3JtIChvciBhIHN1YmNsYXNzCiAgb2YgRHluYUFjdGlvbkZvcm0pPC9ETD4KPC9ERD4KPC9ETD4KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgo8SFI+Cgo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+CjxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4KPFRSPgo8VEQgQ09MU1BBTj0zIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+CjxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPgogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRHluYUFjdGlvbkZvcm1DbGFzcy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDwvVFI+CjwvVEFCTEU+CjwvVEQ+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgo8L0VNPgo8L1REPgo8L1RSPgoKPFRSPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRHluYUFjdGlvbkZvcm0uaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9FeGNlcHRpb25IYW5kbGVyLmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDs8QSBIUkVGPSJEeW5hQWN0aW9uRm9ybUNsYXNzLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDsKPFNDUklQVD4KICA8IS0tCiAgaWYod2luZG93PT10b3ApIHsKICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwogIH0KICAvLy0tPgo8L1NDUklQVD4KPE5PU0NSSVBUPgo8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KPC9OT1NDUklQVD4KPC9GT05UPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgpERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgpDb3B5cmlnaHQgqSAyMDAwLTIwMDMgLSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgo8L0JPRFk+CjwvSFRNTD4K