PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+CjwhLS1OZXdQYWdlLS0+CjxIVE1MPgo8SEVBRD4KPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBGcmkgQXVnIDIyIDAzOjQzOjU0IEVEVCAyMDAzIC0tPgo8VElUTEU+Cm9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYyAoQXBhY2hlIFN0cnV0cyBBUEkgRG9jdW1lbnRhdGlvbikKPC9USVRMRT4KPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYyBwYWNrYWdlIj4KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgo8L0hFQUQ+CjxTQ1JJUFQ+CmZ1bmN0aW9uIGFzZCgpCnsKcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMgKEFwYWNoZSBTdHJ1dHMgQVBJIERvY3VtZW50YXRpb24pIjsKfQo8L1NDUklQVD4KPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0iYXNkKCk7Ij4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTMgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPC9UUj4KPC9UQUJMRT4KPC9URD4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+CjwvRU0+CjwvVEQ+CjwvVFI+Cgo8VFI+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5QUkVWIFBBQ0tBR0U8L0I+PC9BPiZuYnNwOwombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbmVzdGVkL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5ORVhUIFBBQ0tBR0U8L0I+PC9BPjwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOwo8U0NSSVBUPgogIDwhLS0KICBpZih3aW5kb3c9PXRvcCkgewogICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiIFRBUkdFVD0iIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7CiAgfQogIC8vLS0+CjwvU0NSSVBUPgo8Tk9TQ1JJUFQ+CjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgo8L05PU0NSSVBUPgo8L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgo8SDI+ClBhY2thZ2Ugb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljCjwvSDI+ClRoZSAic3RydXRzLWxvZ2ljIiB0YWcgbGlicmFyeSBjb250YWlucyB0YWdzIHRoYXQgYXJlIHVzZWZ1bCBpbiBtYW5hZ2luZwpjb25kaXRpb25hbCBnZW5lcmF0aW9uIG9mIG91dHB1dCB0ZXh0LCBsb29waW5nIG92ZXIgb2JqZWN0IGNvbGxlY3Rpb25zCmZvciByZXBldGl0aXZlIGdlbmVyYXRpb24gb2Ygb3V0cHV0IHRleHQsIGFuZCBhcHBsaWNhdGlvbiBmbG93IG1hbmFnZW1lbnQuCjxQPgo8Qj5TZWU6PC9CPgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxBIEhSRUY9IiNwYWNrYWdlX2Rlc2NyaXB0aW9uIj48Qj5EZXNjcmlwdGlvbjwvQj48L0E+CjxQPgoKPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4KPEI+Q2xhc3MgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSJDb21wYXJlVGFnQmFzZS5odG1sIj5Db21wYXJlVGFnQmFzZTwvQT48L0I+PC9URD4KPFREPkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbXBhcmlzb24gdGFncy48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9IkNvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+PC9CPjwvVEQ+CjxURD5BYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgdmFyaW91cyBjb25kaXRpb25hbCBldmFsdWF0aW9uIHRhZ3MuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSJFbXB0eVRhZy5odG1sIj5FbXB0eVRhZzwvQT48L0I+PC9URD4KPFREPkV2YWx1dGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZQogaXMgZW1wdHkgZm9yIHRoaXMgcmVxdWVzdC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9IkVxdWFsVGFnLmh0bWwiPkVxdWFsVGFnPC9BPjwvQj48L1REPgo8VEQ+RXZhbHVhdGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YXJpYWJsZQogYW5kIHZhbHVlIGFyZSBlcXVhbC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9IkZvcndhcmRUYWcuaHRtbCI+Rm9yd2FyZFRhZzwvQT48L0I+PC9URD4KPFREPlBlcmZvcm0gYSBmb3J3YXJkIG9yIHJlZGlyZWN0IHRvIGEgcGFnZSB0aGF0IGlzIGxvb2tlZCB1cCBpbiB0aGUKIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIG91ciBhcHBsaWNhdGlvbi48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9IkdyZWF0ZXJFcXVhbFRhZy5odG1sIj5HcmVhdGVyRXF1YWxUYWc8L0E+PC9CPjwvVEQ+CjxURD5FdmFsdWF0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlCiBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9IkdyZWF0ZXJUaGFuVGFnLmh0bWwiPkdyZWF0ZXJUaGFuVGFnPC9BPjwvQj48L1REPgo8VEQ+RXZhbHVhdGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YXJpYWJsZQogaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQgdmFsdWUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSJJdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+PC9CPjwvVEQ+CjxURD5DdXN0b20gdGFnIHRoYXQgaXRlcmF0ZXMgdGhlIGVsZW1lbnRzIG9mIGEgY29sbGVjdGlvbiwgd2hpY2ggY2FuIGJlCiBlaXRoZXIgYW4gYXR0cmlidXRlIG9yIHRoZSBwcm9wZXJ0eSBvZiBhbiBhdHRyaWJ1dGUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSJJdGVyYXRlVGVpLmh0bWwiPkl0ZXJhdGVUZWk8L0E+PC9CPjwvVEQ+CjxURD5JbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5UYWdFeHRyYUluZm88L2NvZGU+IGZvciB0aGUgPGI+aXRlcmF0ZTwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iTGVzc0VxdWFsVGFnLmh0bWwiPkxlc3NFcXVhbFRhZzwvQT48L0I+PC9URD4KPFREPkV2YWx1YXRlIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnIGlmIHRoZSBzcGVjaWZpZWQgdmFyaWFibGUKIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iTGVzc1RoYW5UYWcuaHRtbCI+TGVzc1RoYW5UYWc8L0E+PC9CPjwvVEQ+CjxURD5FdmFsdWF0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlCiBpcyBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ik1hdGNoVGFnLmh0bWwiPk1hdGNoVGFnPC9BPjwvQj48L1REPgo8VEQ+RXZhbHV0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlCiBpcyBhIHN1YnN0cmluZyBvZiB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iTWVzc2FnZXNOb3RQcmVzZW50VGFnLmh0bWwiPk1lc3NhZ2VzTm90UHJlc2VudFRhZzwvQT48L0I+PC9URD4KPFREPkV2YWx1dGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZQogaXMgbm90IHByZXNlbnQgZm9yIHRoaXMgcmVxdWVzdC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ik1lc3NhZ2VzUHJlc2VudFRhZy5odG1sIj5NZXNzYWdlc1ByZXNlbnRUYWc8L0E+PC9CPjwvVEQ+CjxURD5FdmFsdXRlIHRvIDxjb2RlPnRydWU8L2NvZGU+IGlmIGFuIDxjb2RlPkFjdGlvbk1lc3NhZ2VzPC9jb2RlPiBjbGFzcyBvciBhCiBjbGFzcyB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gPGNvZGU+QWN0aW9uTWVzc2FnZXM8L2NvZGU+IGNsYXNzIGlzIGluCiByZXF1ZXN0IHNjb3BlIHVuZGVyIHRoZSBzcGVjaWZpZWQga2V5IGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgbWVzc2FnZSBpbiB0aGUKIGNsYXNzIG9yIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iTm90RW1wdHlUYWcuaHRtbCI+Tm90RW1wdHlUYWc8L0E+PC9CPjwvVEQ+CjxURD5FdmFsdXRlIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUKIGlzIG5vdCBlbXB0eSBmb3IgdGhpcyByZXF1ZXN0LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iTm90RXF1YWxUYWcuaHRtbCI+Tm90RXF1YWxUYWc8L0E+PC9CPjwvVEQ+CjxURD5FdmFsdWF0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlCiBhbmQgdmFsdWUgYXJlIG5vdCBlcXVhbC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ik5vdE1hdGNoVGFnLmh0bWwiPk5vdE1hdGNoVGFnPC9BPjwvQj48L1REPgo8VEQ+RXZhbHV0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlCiBpcyBub3QgYSBzdWJzdHJpbmcgb2YgdGhlIHNwZWNpZmllZCB2YXJpYWJsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ik5vdFByZXNlbnRUYWcuaHRtbCI+Tm90UHJlc2VudFRhZzwvQT48L0I+PC9URD4KPFREPkV2YWx1dGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZQogaXMgbm90IHByZXNlbnQgZm9yIHRoaXMgcmVxdWVzdC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9IlByZXNlbnRUYWcuaHRtbCI+UHJlc2VudFRhZzwvQT48L0I+PC9URD4KPFREPkV2YWx1dGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZQogaXMgcHJlc2VudCBmb3IgdGhpcyByZXF1ZXN0LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+PC9CPjwvVEQ+CjxURD5HZW5lcmF0ZSBhIFVSTC1lbmNvZGVkIHJlZGlyZWN0IHRvIHRoZSBzcGVjaWZpZWQgVVJJLjwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwoKPFA+CjxBIE5BTUU9InBhY2thZ2VfZGVzY3JpcHRpb24iPjwhLS0gLS0+PC9BPjxIMj4KUGFja2FnZSBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMgRGVzY3JpcHRpb24KPC9IMj4KCjxQPgo8cD5UaGUgInN0cnV0cy1sb2dpYyIgdGFnIGxpYnJhcnkgY29udGFpbnMgdGFncyB0aGF0IGFyZSB1c2VmdWwgaW4gbWFuYWdpbmcKY29uZGl0aW9uYWwgZ2VuZXJhdGlvbiBvZiBvdXRwdXQgdGV4dCwgbG9vcGluZyBvdmVyIG9iamVjdCBjb2xsZWN0aW9ucwpmb3IgcmVwZXRpdGl2ZSBnZW5lcmF0aW9uIG9mIG91dHB1dCB0ZXh0LCBhbmQgYXBwbGljYXRpb24gZmxvdyBtYW5hZ2VtZW50Lgo8L3A+CjxhIG5hbWU9ImRvYy5EZXNjcmlwdGlvbiI+PC9hPgogICAgCjxwPiAgPC9wPgo8ZGl2IGFsaWduPSJDZW50ZXIiPiA8YSBocmVmPSIjZG9jLkludHJvZHVjdGlvbiI+W0ludHJvZHVjdGlvbl08L2E+CiA8YSBocmVmPSIjZG9jLkZ1bmN0aW9uYWxpdHkiPltMb2dpYyAgIEZ1bmN0aW9uYWxpdHldPC9hPgogPGEgaHJlZj0iI2RvYy5Qcm9wZXJ0aWVzIj5bTG9naWMgUHJvcGVydGllc108L2E+CiA8YSBocmVmPSIjZG9jLkV4YW1wbGVzIj5bTG9naWMgICBFeGFtcGxlc108L2E+CiA8L2Rpdj4KICAgCjxwPjwvcD4KICAgIAo8aHIgLz0iIj4gPGEgbmFtZT0iZG9jLkludHJvIj48L2E+CiAKPGgzPkludHJvZHVjdGlvbjxhIG5hbWU9ImRvYy5JbnRyb2R1Y3Rpb24iPjwvYT4KPC9oMz4KICAgIAo8cD4gICAgIFRoZSBMb2dpYyBsaWJyYXJ5IHN1cHBsaWVzIHRhZ3MgdGhhdCBhcmUgdXNlZnVsIGZvciBtYW5pcHVsYXRpbmcKcHJlc2VudGF0aW9uIGxvZ2ljICAgICB3aXRob3V0IHRoZSB1c2Ugb2Ygc2NyaXB0bGV0cy48L3A+CjxwPjxicj4KPC9wPgo8ZGl2IGFsaWduPSJDZW50ZXIiPjxpbWcgc3JjPSJkb2MtZmlsZXMvbG9naWNVTUwuZ2lmIiBhbHQ9IkxvZ2ljIFRhZyBVTUwiID4KPGJyPgogICA8L2Rpdj4KPHA+PC9wPgogICA8YSBuYW1lPSJkb2MuRnVuY3Rpb25hbGl0eSI+PC9hPgogCjxoMz5Mb2dpYyBUYWcgRnVuY3Rpb25hbGl0eTxhIG5hbWU9ImRvYy5GdW5jdGlvbmFsaXR5Ij48L2E+CjwvaDM+CiAKPHA+IFRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBsb2dpYyB0YWdzIGNhbiBiZSBkaXZpZGVkIGludG8gZm91ciBncm91cHM6PC9wPgogCjxwPjxiPlZhbHVlIENvbXBhcmlzb25zIC08L2I+IFRoZSBwdXJwb3NlIG9mIHRoZXNlIHRhZ3MgaXMgdG8gcHJpbnQgb3V0IHRoZQpib2R5ICAgb2YgdGhlIHRhZyBpZiB0aGUgY29tcGFyaXNvbiBldmFsdWF0ZXMgdG8gPGk+dHJ1ZS4gPC9pPjwvcD4KIAo8dWw+CiAgIDxsaT48Yj48YSBocmVmPSIuLi8uLi8uLi8uLi8uLi8uLi91c2VyR3VpZGUvc3RydXRzLWxvZ2ljLmh0bWwjZXF1YWwiPmVxdWFsLDwvYT4KIDxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uLy4uL3VzZXJHdWlkZS9zdHJ1dHMtbG9naWMuaHRtbCNub3RFcXVhbCI+bm90RXF1YWw8L2E+CiAgICA8L2I+ICAgPC9saT4KICAgPGxpPjxiPjxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uLy4uL3VzZXJHdWlkZS9zdHJ1dHMtbG9naWMuaHRtbCNncmVhdGVyRXF1YWwiPmdyZWF0ZXJFcXVhbDwvYT4KLCA8YSBocmVmPSIuLi8uLi8uLi8uLi8uLi8uLi91c2VyR3VpZGUvc3RydXRzLWxvZ2ljLmh0bWwjbGVzc0VxdWFsIj5sZXNzRXF1YWw8L2E+CiAgICA8L2I+PC9saT4KICAgPGxpPjxiPjxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uLy4uL3VzZXJHdWlkZS9zdHJ1dHMtbG9naWMuaHRtbCNncmVhdGVyVGhhbiI+Z3JlYXRlclRoYW48L2E+Ciw8YSBocmVmPSIuLi8uLi8uLi8uLi8uLi8uLi91c2VyR3VpZGUvc3RydXRzLWxvZ2ljLmh0bWwjbGVzc1RoYW4iPiAgICAgbGVzc1RoYW48L2E+CiAgICA8L2I+PC9saT4KIAo8L3VsPgogCjxwPjxiPlN1YnN0cmluZyBNYXRjaGluZyAtPC9iPiBUaGUgcHVycG9zZSBvZiB0aGVzZSB0YWdzIGlzIHRvIG1hdGNoIHN1YnN0cmluZ3MgCiAgaW5zaWRlIG9mIG90aGVyIFN0cmluZ3M8L3A+CiAKPHVsPgogICA8bGk+PGI+PGEgaHJlZj0iLi4vLi4vLi4vLi4vLi4vLi4vdXNlckd1aWRlL3N0cnV0cy1sb2dpYy5odG1sI21hdGNoIj5tYXRjaDwvYT4KLCA8YSBocmVmPSIuLi8uLi8uLi8uLi8uLi8uLi91c2VyR3VpZGUvc3RydXRzLWxvZ2ljLmh0bWwjbm90TWF0Y2giPm5vdE1hdGNoPC9hPgogICAgPC9iPjwvbGk+CiAKPC91bD4KIAo8cD48Yj5QcmVzZW50YXRpb24gTG9jYXRpb24gLTwvYj4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgdGFncyBpcyB0byBjaGFuZ2UKdGhlIGxvY2F0aW9uICAgb2YgdGhlIHByZXNlbnRhdGlvbiBwYWdlPC9wPgogCjx1bD4KICAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uLy4uL3VzZXJHdWlkZS9zdHJ1dHMtbG9naWMuaHRtbCNmb3J3YXJkIj48Yj5mb3J3YXJkPC9iPjwvYT4KICA8L2xpPgogICA8bGk+PGEgaHJlZj0iLi4vLi4vLi4vLi4vLi4vLi4vdXNlckd1aWRlL3N0cnV0cy1sb2dpYy5odG1sI3JlZGlyZWN0Ij48Yj5yZWRpcmVjdDwvYj48L2E+CiAgPC9saT4KIAo8L3VsPgogCjxwPjxiPkNvbGxlY3Rpb24gVXRpbGl0aWVzIC08L2I+VGhlIHB1cnBvc2Ugb2YgdGhlc2UgdGFncyBpcyB0byBoYW5kbGUgQ29sbGVjdGlvbnM8L3A+CiAKPHVsPgogICA8bGk+PGEgaHJlZj0iLi4vLi4vLi4vLi4vLi4vLi4vdXNlckd1aWRlL3N0cnV0cy1sb2dpYy5odG1sI2l0ZXJhdGUiPjxiPml0ZXJhdGU8L2I+PC9hPgogPC9saT4KIAo8L3VsPgogCjxoMz5Mb2dpYyBUYWcgUHJvcGVydGllczxhIG5hbWU9ImRvYy5Qcm9wZXJ0aWVzIj48L2E+CjwvaDM+CiAKPHA+RWFjaCBvZiB0aGUgZm91ciBncm91cHMgb2YgbG9naWMgdGFncyBoYXZlIGEgY29tbW9uIHNldCBvZiBhdHRyaWJ1dGVzCmFzc29jaWF0ZWQgICB3aXRoIHRoZW0uIDo8L3A+CiAKPGJsb2NrcXVvdGU+ICAgCiAgPHA+PGI+VmFsdWUgQ29tcGFyaXNvbnM8L2I+IChlcXVhbCwgbm90RXF1YWwsIGdyZWF0ZXJFcXVhbCwgbGVzc0VxdWFsLApncmVhdGVyVGhhbiwgICAgIGxlc3NUaGFuLCBwcmVzZW50LCBub3RQcmVzZW50KTwvcD4KICAgCiAgPHA+RWFjaCBvZiB0aGUgdmFsdWUgY29tcGFyaXNvbiB0YWdzIHRha2VzIGEgPGk+dmFsdWU8L2k+IGFuZCBjb21wYXJlcwppdCB0byAgICAgdGhlIHZhbHVlIG9mIGEgY29tcGFyaXNvbiBhdHRyaWJ1dGUuIElmIHRoZSB2YWx1ZSBnaXZlbiBjYW4gYmUKc3VjY2Vzc2Z1bGx5ICAgICBjb252ZXJ0ZWQgdG8gYSA8aT5mbG9hdDwvaT4gb3IgPGk+ZG91YmxlPC9pPiwgdGhlbiBhIG51bWJlcgpjb21wYXJpc29uIGlzICAgICBwZXJmb3JtZWQgb24gdGhlIHZhbHVlIGdpdmVuIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGNvbXBhcmlzb24KYXR0cmlidXRlLiBPdGhlcndpc2UgICAgIGEgU3RyaW5nIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkLiBZb3UgaGF2ZSB0byBzcGVjaWZ5Cm9uZSBvZiB0aGUgY29tcGFyaXNvbiAgICAgYXR0cmlidXRlczogPGk+Y29va2llPC9pPiwgPGk+aGVhZGVyPC9pPiwgPGk+cGFyYW1ldGVyPC9pPgosIDxpPnByb3BlcnR5PC9pPiAgICAgb3IgPGk+bmFtZS4gPC9pPkZvciBlYWNoIG9mIHRoZSBleGFtcGxlcywgdGhlIHRhZyAiPGk+CnNvbWVDb21wYXJpc29uVGFnIjwvaT5jYW4gICAgIGJlIHJlcGxhY2VkIGJ5IGFueSBvZiB0aGUgdmFsdWUgY29tcGFyaXNvbgp0YWdzLjwvcD4KICAgCiAgPHVsPgogICAgIDxsaT52YWx1ZSAtIHRoZSB2YWx1ZSB0byB3aGljaCB0aGlzIHRhZyBpcyBnb2luZyB0byBjb21wYXJlLCB1c2VkIGluCmNvbmp1bmN0aW9uICAgICAgIHdpdGggb25lIG9mIHRoZSBjb21wYXJpc29uIGF0dHJpYnV0ZXM6IDxpPmNvb2tpZTwvaT4sIDxpPgpoZWFkZXI8L2k+LCA8aT5wYXJhbWV0ZXI8L2k+LCAgICAgICA8aT5hbmQgcHJvcGVydHk8L2k+IGFuZC9vciA8aT5uYW1lLiA8L2k+PC9saT4KICAgICA8bGk+Y29va2llIC0gdGhlIG5hbWUgb2YgdGhlIGNvb2tpZSB0byBjb21wYXJlIHRvIDxpPnZhbHVlPC9pPiAgICAgCiAKICAgICAgPHVsPgogICAgICAgICA8bGk+ZXhhbXBsZTogICAgICAgICAgIAogICAgICAgICAgPHByZT4mbHQ7bG9naWM6PGk+c29tZUNvbXBhcmlzb25UYWc8L2k+IHZhbHVlPSJzb21lVXNlck5hbWUiIGNvb2tpZT0idXNlck5hbWUiJmd0Ozxicj4gIFVzZXIgTG9nZ2VkIEluPGJyPiZsdDsvbG9naWM6PGk+c29tZUNvbXBhcmlzb25UYWc8L2k+Jmd0Ozxicj48L3ByZT4KICAgICAgICAgPC9saT4KICAgICAgIAogICAgICA8L3VsPgogICAgIDwvbGk+CiAgICAgPGxpPmhlYWRlciAtIHRoZSBuYW1lIG9mIHRoZSBIVFRQIGhlYWRlciB0byBjb21wYXJlIHRvIDxpPnZhbHVlPC9pPiAKICAgICAKICAgICAgPHVsPgogICAgICAgICA8bGk+ZXhhbXBsZTogICAgICAgICAgIAogICAgICAgICAgPHByZT4mbHQ7bG9naWM6PGk+c29tZUNvbXBhcmlzb25UYWc8L2k+IHZhbHVlPSJlbl9VUyIgaGVhZGVyPSJBY2NlcHQtTGFuZ3VhZ2UiJmd0Ozxicj4gIFdlbGNvbWUgRW5nbGlzaC1zcGVha2luZyBVc2VyKjxicj4mbHQ7L2xvZ2ljOjxpPnNvbWVDb21wYXJpc29uVGFnPC9pPiZndDs8YnI+PC9wcmU+CiAgICAgICAgIDwvbGk+CiAgICAgICAgIDxsaT4gICAgICAgICAgIAogICAgICAgICAgPHA+Kk5vdGU6IFNlZSB0aGUgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIG9uIDxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uLy4uL3VzZXJHdWlkZS9idWlsZGluZ192aWV3Lmh0bWwjaTE4biI+CkludGVybmF0aW9uYWxpemVkICAgICAgICAgICAgIE1lc3NhZ2VzPC9hPgogdG8gZG8gdGhpbmdzIGxpa2UgdGhpcyBiZXR0ZXIuPC9wPgogICAgICAgICA8L2xpPgogICAgICAgCiAgICAgIDwvdWw+CiAgICAgPC9saT4KICAgICA8bGk+bmFtZSAtIHRoZSB2YXJpYWJsZSB0byBiZSBjb21wYXJlZCB0byA8aT52YWx1ZTwvaT4gaXMgdGhlIEpTUCBiZWFuCnNwZWNpZmllZCAgICAgICBieSB0aGlzIGF0dHJpYnV0ZSwgaWYgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCwgb3IgdGhlIHZhbHVlCm9mIHRoZSBzcGVjaWZpZWQgICAgICAgcHJvcGVydHkgb2YgdGhpcyBiZWFuLCBpZiBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQuIAogICAgIAogICAgICA8dWw+CiAgICAgICAgIDxsaT5leGFtcGxlOiAgICAgICAgICAgCiAgICAgICAgICA8cHJlPiZsdDslPGJyPiAgU3RyaW5nIHRlc3RTdHJpbmcgPSAicGFudGFsb25lcyI7PGJyPiAgcGFnZUNvbnRleHQuc2V0QXR0cmlidXRlKCJ0ZXN0U3RyaW5nIiwgdGVzdFN0cmluZywgUGFnZUNvbnRleHQuUEFHRV9TQ09QRSk7PGJyPiUmZ3Q7PGJyPiZsdDtqc3A6dXNlQmVhbiBpZD0idGVzdFN0cmluZyIgc2NvcGU9InBhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciIC8mZ3Q7PGJyPiZsdDtsb2dpYzo8aT5zb21lQ29tcGFyaXNvblRhZzwvaT4gbmFtZT0idGVzdFN0cmluZyIgdmFsdWU9InBhbnRhbG9uZXMiJmd0Ozxicj4gIFVzdGVkIHRpZW5lIHBhbnRhbG9uZXMhPGJyPiZsdDsvbG9naWM6PGk+c29tZUNvbXBhcmlzb248L2k+Jmd0Ozxicj48L3ByZT4KICAgICAgICAgPC9saT4KICAgICAgIAogICAgICA8L3VsPgogICAgIDwvbGk+CiAgICAgPGxpPnBhcmFtZXRlciAtIHRoZSBuYW1lIG9mIHRoZSByZXF1ZXN0IHBhcmFtZXRlciB0byBjb21wYXJlIHRvIDxpPnZhbHVlPC9pPgogICAgICAgCiAgICAgIDx1bD4KICAgICAgICAgPGxpPmV4YW1wbGU6ICAgICAgICAgICAKICAgICAgICAgIDxwcmU+Jmx0O2xvZ2ljOjxpPnNvbWVDb21wYXJpc29uVGFnPC9pPiB2YWx1ZT0iIiBwYXJhbWV0ZXI9InVzZXJuYW1lIiZndDs8YnI+ICBFcnJvcjogYSB1c2VybmFtZSBtdXN0IGJlIHNwZWNpZmllZDxicj4mbHQ7L2xvZ2ljOjxpPnNvbWVDb21wYXJpc29uVGFnPC9pPiZndDs8YnI+PC9wcmU+CiAgICAgICAgIDwvbGk+CiAgICAgICAKICAgICAgPC91bD4KICAgICA8L2xpPgogICAgIDxsaT5wcm9wZXJ0eSAtIHRoZSB2YXJpYWJsZSB0byBiZSBjb21wYXJlZCB3aXRoIDxpPnZhbHVlPC9pPiBpcyB0aGUKcHJvcGVydHkgICAgICAgKG9mIHRoZSBiZWFuIHNwZWNpZmllZCBieSB0aGUgbmFtZSBhdHRyaWJ1dGUpIHNwZWNpZmllZCBieQp0aGlzIGF0dHJpYnV0ZS4gICAgICAgVGhlIHByb3BlcnR5IHJlZmVyZW5jZSBjYW4gYmUgc2ltcGxlLCBuZXN0ZWQsIGFuZC9vcgppbmRleGVkLiA8aT5wcm9wZXJ0eTwvaT4gICAgICAgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIDxpPm5hbWU8L2k+IHRvCnNwZWNpZnkgYSBwcm9wZXJ0eSBpbiB0aGUgYmVhbiAgICAgICBzcGVjaWZpZWQgYnkgPGk+bmFtZTwvaT4uIEZvciB0aGUgdHlwZQpvZiBzeW50YXggdXNlZCBmb3IgcHJvcGVydHksIHNlZSAgICAgICB0aGUgdXNlcnMgZ3VpZGUgb24gdGhlIEJlYW4gVGFncy48L2xpPgogICAgIDxsaT5zY29wZSAtIHRoZSBiZWFuIHNjb3BlIHdpdGhpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBiZWFuIG5hbWVkCmJ5IHRoZSAgICAgICBuYW1lIHByb3BlcnR5LCBvciAiYW55IHNjb3BlIiBpZiBub3Qgc3BlY2lmaWVkLiBQb3NzaWJsZSB2YWx1ZXMKYXJlICJwYWdlIiwgICAgICAgInJlcXVlc3QiLCAic2Vzc2lvbiIsICJhcHBsaWNhdGlvbiIsIG9yICJhbnkgICAgICAgc2NvcGUiCiAgICA8L2xpPgogICAKICA8L3VsPgogICAKICA8cD48Yj5TdWJzdHJpbmcgTWF0Y2hpbmc8L2I+IChtYXRjaCwgbm90TWF0Y2gpPC9wPgogICAKICA8cD5UaGUgc3Vic3RyaW5nIG1hdGNoaW5nIHRhZ3MgdGFrZSBhbGwgdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSB2YWx1ZQpjb21wYXJpc29uICAgICB0YWdzLiBZb3UgY29tcGFyZSB0aGUgU3RyaW5nIHNwZWNpZmllZCBieSA8aT52YWx1ZTwvaT4gdG8KYW55IG9mIHRoZSBjb21wYXJpc29uICAgICB2YWx1ZXMgeW91IGdpdmUgaXQsIHNwZWNpZmllZCBieSA8aT5jb29raWU8L2k+LAogIDxpPmhlYWRlcjwvaT4sIDxpPnBhcmFtZXRlcjwvaT4sICAgICA8aT5wcm9wZXJ0eTwvaT4gb3IgPGk+bmFtZS48L2k+IE5vdGUKdGhhdCBpbiB0aGUgZXhhbXBsZXMsIDxpPm1hdGNoVGFnPC9pPiAgICAgY29ycmVzcG9uZHMgZWl0aGVyIHRoZSA8aT5tYXRjaAogIDwvaT5vciA8aT5ub3RNYXRjaDwvaT4gdGFnLiBNYXRjaGluZyB0YWdzICAgICBhbHNvIGhhdmUgYW4gYWRkaXRpb25hbCA8aT4KbG9jYXRpb248L2k+IGF0dHJpYnV0ZSBhZGRlZDo8L3A+CiAgIAogIDx1bD4KICAgICA8bGk+bG9jYXRpb24gLSBoYXMgdHdvIHBvc3NpYmxlIHZhbHVlcywgInN0YXJ0IiBhbmQgImVuZCIuICAgICAgIElmCiJzdGFydCIsIHRoZSBzdWJzdHJpbmcgaXMgYXR0ZW1wdGVkIHRvIGJlIG1hdGNoZWQgYXQgdGhlIGJlZ2lubmluZyAgICAgIApvZiB0aGUgU3RyaW5nLCBpZiAiZW5kIiwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIGF0dGVtcHRlZCB0byBiZSAgICAgICBtYXRjaGVkCnRvIHRoZSBlbmQgb2YgdGhlIFN0cmluZyAgICAgICAKICAgICAgPHVsPgogICAgICAgICA8bGk+ZXhhbXBsZTogICAgICAgICAgIAogICAgICAgICAgPHByZT4mbHQ7bG9naWM6PGk+bWF0Y2hUYWc8L2k+IHBhcmFtZXRlcj0iYWN0aW9uIiB2YWx1ZT0icHJvY2Vzc0xvZ2luIiBsb2NhdGlvbj0ic3RhcnQiJmd0Ozxicj4gIFByb2Nlc3NpbmcgTG9naW4uLi4uPGJyPiZsdDsvbG9naWM6PGk+bWF0Y2hUYWc8L2k+Jmd0Ozxicj48YnI+SW4gdGhpcyBleGFtcGxlLCBhIHJlcXVlc3QgcGFyYW1ldGVyICJhY3Rpb24iIHdhcyBjb21wYXJlZCB0byBzZWUgaWY8YnI+aXRzIHZhbHVlIHN0YXJ0ZWQgd2l0aCB0aGUgU3RyaW5nICJwcm9jZXNzTG9naW4iLiBJbiB0aGlzIGNhc2UsPGJyPjxpPm1hdGNoVGFnPC9pPiB3b3VsZCBoYXZlIHRvIGJlICZsdDtsb2dpYzptYXRjaCZndDsuPGJyPjwvcHJlPgogICAgICAgICA8L2xpPgogICAgICAgCiAgICAgIDwvdWw+CiAgICAgPC9saT4KICAgCiAgPC91bD4KICAgCiAgPHA+PGI+UHJlc2VudGF0aW9uIExvY2F0aW9uPC9iPiAoZm9yd2FyZCwgcmVkaXJlY3QpPC9wPgogICAKICA8cD5UaGUgPGk+cmVkaXJlY3Q8L2k+IHRhZyBpcyByZXNwb3NpYmxlIGZvciBzZW5kaW5nIGEgcmUtZGlyZWN0IHRvIHRoZQpjbGllbnQncyAgICAgYnJvd3NlciwgY29tcGxldGUgd2l0aCBVUkwtcmV3cml0aW5nIGlmIGl0J3Mgc3VwcG9ydGVkIGJ5IHRoZQpjb250YWluZXIuIEl0cyAgICAgYXR0cmlidXRlcyBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSBTdHJ1dHMgSFRNTCA8YSBocmVmPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHJ1dHMtaHRtbC5odG1sI2xpbmsiPjxjb2RlPgpsaW5rPC9jb2RlPjwvYT4KICAgICB0YWcuIFRoZSBiYXNlIFVSTCBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIHdoaWNoIG9mIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAKICAgIHlvdSBzcGVjaWZ5ICh5b3UgbXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIG9mIHRoZW0pOjwvcD4KICAgCiAgPHVsPgogICAgIDxsaT4gZm9yd2FyZCAtIFVzZSB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgYXMgdGhlIG5hbWUgb2YgYSBnbG9iYWwKQWN0aW9uRm9yd2FyZCAgICAgICB0byBiZSBsb29rZWQgdXAsIGFuZCB1c2UgdGhlIGNvbnRleHQtcmVsYXRpdmUgVVJJIGZvdW5kCnRoZXJlLiA8L2xpPgogICAgIDxsaT5ocmVmIC0gVXNlIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB1bmNoYW5nZWQuIDwvbGk+CiAgICAgPGxpPnBhZ2UgLSBVc2UgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGFzIGEgY29udGV4dC1yZWxhdGl2ZSBVUkksCmFuZCAgICAgICBnZW5lcmF0ZSBhIHNlcnZlci1yZWxhdGl2ZSBVUkkgYnkgaW5jbHVkaW5nIHRoZSBjb250ZXh0IHBhdGguIDwvbGk+CiAgIAogIDwvdWw+CiAgIAogIDxwPlRoZSA8aT5mb3J3YXJkPC9pPiB0YWcgaXMgcmVzcG9uc2libGUgZm9yIGVpdGhlciByZWRpcmVjdGluZyBvciBmb3J3YXJkaW5nIAogICAgdG8gYSBzcGVjaWZpZWQgZ2xvYmFsIGFjdGlvbiBmb3J3YXJkLiBUbyBkZWZpbmUgYSBnbG9iYWwgQWN0aW9uRm9yd2FyZCwKc2VlICAgICBUaGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vLi4vLi4vdXNlckd1aWRlL2J1aWxkaW5nX2NvbnRyb2xsZXIuaHRtbCNjb25maWciPgpBY3Rpb24gICAgIE1hcHBpbmdzIENvbmZpZ3VyYXRpb24gRmlsZTwvYT4KLiBZb3UgY2FuIHNwZWNpZnkgd2hldGhlciB0aGUgZm9yd2FyZCByZS1kaXJlY3RzICAgICBvciBmb3J3YXJkcyB3aGVuIGV4ZWN1dGVkCmluIHRoZSBjb25maWcgZmlsZS4gVGhlIGZvcndhcmQgdGFnIGhhcyBvbmUgYXR0cmlidXRlOjwvcD4KICAgCiAgPHVsPgogICAgIDxsaT5uYW1lIC0gVGhlIGxvZ2ljYWwgbmFtZSBvZiB0aGUgQWN0aW9uRm9yd2FyZCB0byB1c2U8L2xpPgogICAKICA8L3VsPgogICAKICA8cD48Yj5Db2xsZWN0aW9uIFV0aWxpdGllczwvYj4gKGl0ZXJhdGUpPC9wPgogICAKICA8cD5UaGUgPGk+aXRlcmF0ZTwvaT4gdGFnIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgaXRzIGJvZHkgY29udGVudApvbmNlICAgICBmb3IgZXZlcnkgZWxlbWVudCBpbnNpZGUgb2YgdGhlIHNwZWNpZmllZCBDb2xsZWN0aW9uLiBUaGVyZSBpcyBvbmUKcmVxdWlyZWQgICAgIGF0dHJpYnV0ZTo8L3A+CiAgIAogIDx1bD4KICAgICA8bGk+aWQgLSBUaGUgbmFtZSBvZiBhIHBhZ2Ugc2NvcGUgSlNQIGJlYW4gdGhhdCB3aWxsIGNvbnRhaW4gdGhlIGN1cnJlbnQKZWxlbWVudCAgICAgICBvZiB0aGUgY29sbGVjdGlvbiBvbiBlYWNoIGl0ZXJhdGlvbjwvbGk+CiAgIAogIDwvdWw+CiAgIAogIDxwPlRoZSBvdGhlciBhdHRyaWJ1dGVzIGFsbG93IGZvciBtb3JlIGZsZXhpYmlsaXR5IG9uIHdoaWNoIENvbGxlY3Rpb24KdG8gaXRlcmF0ZSAgICAgYW5kIGhvdyB0byBkbyBpdDo8L3A+CiAgIAogIDx1bD4KICAgICA8bGk+Y29sbGVjdGlvbiAtIGEgcnVudGltZSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgQ29sbGVjdGlvbgp0byBiZSAgICAgICBpdGVyYXRlZCAgICAgICAKICAgICAgPHVsPgogICAgICAgICA8bGk+ZXhhbXBsZTogICAgICAgICAgIAogICAgICAgICAgPHByZT4mbHQ7JTxicj4gIGphdmEudXRpbC5WZWN0b3IgdmVjdG9yID0gbmV3IGphdmEudXRpbC5WZWN0b3IoKTs8YnI+ICB2ZWN0b3IuYWRkKG5ldyBJbnRlZ2VyKDEyKSk7PGJyPiAgdmVjdG9yLmFkZChuZXcgSW50ZWdlcig1KSk7PGJyPiAlJmd0Ozxicj48L3ByZT4KICAgICAgICAgPC9saT4KICAgICAgIAogICAgICA8L3VsPgogICAgIDwvbGk+CiAgIAogIDwvdWw+CiAgIAogIDxibG9ja3F1b3RlPiAgICAgCiAgICA8YmxvY2txdW90ZT4gICAgICAgCiAgICAgIDxwcmU+Jmx0O2xvZ2ljOml0ZXJhdGUgaWQ9Im15Q29sbGVjdGlvbkVsZW1lbnQiIGNvbGxlY3Rpb249IiZsdDslPSB2ZWN0b3IgJSZndDsiJmd0Ozxicj48aT4gRG8gc29tZXRoaW5nIHdpdGggbXlDb2xsZWN0aW9uRWxlbWVudDwvaT4KJmx0Oy9sb2dpYzppdGVyYXRlJmd0Owo8L3ByZT4KICAgICA8L2Jsb2NrcXVvdGU+CiAgIDwvYmxvY2txdW90ZT4KICAgCiAgICAgIDx1bD4KICAgICA8bGk+bGVuZ3RoIC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgKGZyb20gdGhlIHVuZGVybHlpbmcgY29sbGVjdGlvbikgCiAgICAgIHRvIGJlIGl0ZXJhdGVkIHRocm91Z2ggb24gdGhpcyBwYWdlLiBUaGlzIGNhbiBiZSBlaXRoZXIgYW4gaW50ZWdlcgp0aGF0ICAgICAgIGRpcmVjdGx5IGV4cHJlc3NlcyB0aGUgZGVzaXJlZCB2YWx1ZSwgb3IgdGhlIG5hbWUgb2YgYSBKU1AgYmVhbgooaW4gYW55ICAgICAgIHNjb3BlKSBvZiB0eXBlIGphdmEubGFuZy5JbnRlZ2VyIHRoYXQgZGVmaW5lcyB0aGUgZGVzaXJlZCB2YWx1ZS4KSWYgbm90ICAgICAgIHByZXNlbnQsIHRoZXJlIHdpbGwgYmUgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zCnBlcmZvcm1lZDwvbGk+CiAgICAgPGxpPm5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgSlNQIGJlYW4gY29udGFpbmluZyB0aGUgY29sbGVjdGlvbiB0byBiZQppdGVyYXRlZCAgICAgICAoaWYgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCksIG9yIHRoZSBKU1AgYmVhbiB3aG9zZSBwcm9wZXJ0eQpnZXR0ZXIgcmV0dXJucyAgICAgICB0aGUgY29sbGVjdGlvbiB0byBiZSBpdGVyYXRlZCAoaWYgcHJvcGVydHkgaXMgc3BlY2lmaWVkKS4gCiAgICAgIAogICAgICAgICAgPHVsPgogICAgICAgICA8bGk+ZXhhbXBsZTogICAgICAgICAgIAogICAgICAgICAgICAgIDxwcmU+Jmx0OyU8YnI+CiAgICBqYXZhLnV0aWwuQXJyYXlMaXN0IGxpc3QgPSBuZXcgamF2YS51dGlsLkFycmF5TGlzdCgpOwogICAgbGlzdC5hZGQoIkZpcnN0Iik7CiAgICBsaXN0LmFkZCgiU2Vjb25kIik7CiAgICBsaXN0LmFkZCgiVGhpcmQiKTsKICAgIGxpc3QuYWRkKCJGb3VydGgiKTsKICAgIGxpc3QuYWRkKCJGaWZ0aCIpOwogICAgcGFnZUNvbnRleHQuc2V0QXR0cmlidXRlKCJsaXN0IiwgbGlzdCwgUGFnZUNvbnRleHQuUEFHRV9TQ09QRSk7CiUmZ3Q7CgombHQ7bG9naWM6aXRlcmF0ZSBpZD0ibXlDb2xsZWN0aW9uRWxlbWVudCIgbmFtZT0ibGlzdCImZ3Q7CiAgPGk+RG8gc29tZXRoaW5nIHdpdGggbXlDb2xsZWN0aW9uRWxlbWVudDwvaT4KJmx0Oy9sb2dpYzppdGVyYXRlJmd0OzwvcHJlPgogICAgICAgICA8L2xpPgogICAgICAgCiAgICAgICAgICA8L3VsPgogICAgIDwvbGk+CiAgICAgPGxpPm9mZnNldCAtIFRoZSB6ZXJvLXJlbGF0aXZlIGluZGV4IG9mIHRoZSBzdGFydGluZyBwb2ludCBhdCB3aGljaAplbnRyaWVzICAgICAgIGZyb20gdGhlIHVuZGVybHlpbmcgY29sbGVjdGlvbiB3aWxsIGJlIGl0ZXJhdGVkIHRocm91Z2guIFRoaXMKY2FuIGJlIGVpdGhlciAgICAgICBhbiBpbnRlZ2VyIHRoYXQgZGlyZWN0bHkgZXhwcmVzc2VzIHRoZSBkZXNpcmVkIHZhbHVlLApvciB0aGUgbmFtZSBvZiBhIEpTUCAgICAgICBiZWFuIChpbiBhbnkgc2NvcGUpIG9mIHR5cGUgamF2YS5sYW5nLkludGVnZXIKdGhhdCBkZWZpbmVzIHRoZSBkZXNpcmVkIHZhbHVlLiAgICAgICBJZiBub3QgcHJlc2VudCwgemVybyBpcyBhc3N1bWVkIChtZWFuaW5nCnRoYXQgdGhlIGNvbGxlY3Rpb24gd2lsbCBiZSBpdGVyYXRlZCAgICAgICBmcm9tIHRoZSBiZWdpbm5pbmcuIDwvbGk+CiAgICAgPGxpPnByb3BlcnR5IC0gTmFtZSBvZiB0aGUgcHJvcGVydHksIG9mIHRoZSBKU1AgYmVhbiBzcGVjaWZpZWQgYnkgbmFtZSwKd2hvc2UgICAgICAgZ2V0dGVyIHJldHVybnMgdGhlIGNvbGxlY3Rpb24gdG8gYmUgaXRlcmF0ZWQuIFNlZSB0aGUgdXNlcidzCmd1aWRlIGZvciB0aGUgICAgICAgYmVhbiB0YWcgbGlicmFyeSBmb3IgdGhlIHN5bnRheCBvZiB0aGUgcHJvcGVydHkgYXR0cmlidXRlPC9saT4KICAgICA8bGk+c2NvcGUgLSBUaGUgYmVhbiBzY29wZSB3aXRoaW4gd2hpY2ggdG8gc2VhcmNoIGZvciB0aGUgYmVhbiBuYW1lZApieSB0aGUgICAgICAgbmFtZSBwcm9wZXJ0eSwgb3IgImFueSBzY29wZSIgaWYgbm90IHNwZWNpZmllZC4gUG9zc2libGUgdmFsdWVzCmFyZSAicGFnZSIsICAgICAgICJyZXF1ZXN0IiwgInNlc3Npb24iLCAiYXBwbGljYXRpb24iLCBvciAiYW55ICAgICAgIHNjb3BlIgogICAgICAgIDwvbGk+CiAgICAgPGxpPnR5cGUgLSBGdWxseSBxdWFsaWZpZWQgSmF2YSBjbGFzcyBuYW1lIG9mIHRoZSBlbGVtZW50IHRvIGJlIGV4cG9zZWQKdGhyb3VnaCAgICAgICB0aGUgSlNQIGJlYW4gbmFtZWQgZnJvbSB0aGUgaWQgYXR0cmlidXRlLiBJZiBub3QgcHJlc2VudCwgbm8KdHlwZSBjb252ZXJzaW9ucyAgICAgICB3aWxsIGJlIHBlcmZvcm1lZC4gTk9URTogVGhlIGFjdHVhbCBlbGVtZW50cyBvZiB0aGUKY29sbGVjdGlvbiBtdXN0IGJlIGFzc2lnbm1lbnQtY29tcGF0aWJsZSAgICAgICB3aXRoIHRoaXMgY2xhc3MsIG9yIGEgcmVxdWVzdAp0aW1lIENsYXNzQ2FzdEV4Y2VwdGlvbiB3aWxsIG9jY3VyLiAgICAgICAKICAgICAgICAgIDx1bD4KICAgICAgICAgPGxpPmV4YW1wbGU6ICAgICAgICAgICAKICAgICAgICAgICAgICA8cHJlPiZsdDslICAgIGphdmEudXRpbC5BcnJheUxpc3QgbGlzdCA9IG5ldyBqYXZhLnV0aWwuQXJyYXlMaXN0KCk7PGJyPmxpc3QuYWRkKCJGaXJzdCIpOzxicj5saXN0LmFkZCgiU2Vjb25kIik7PGJyPmxpc3QuYWRkKCJUaGlyZCIpOzxicj5saXN0LmFkZCgiRm91cnRoIik7PGJyPmxpc3QuYWRkKCJGaWZ0aCIpOzxicj4gICAgcGFnZUNvbnRleHQuc2V0QXR0cmlidXRlKCJsaXN0IiwgbGlzdCwgUGFnZUNvbnRleHQuUEFHRV9TQ09QRSk7PGJyPiAlJmd0Ozxicj48YnI+Jmx0O2xvZ2ljOml0ZXJhdGUgaWQ9Im15Q29sbGVjdGlvbkVsZW1lbnQiIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciJmd0Ozxicj4gIDxpPkRvIHNvbWV0aGluZyB3aXRoIG15Q29sbGVjdGlvbkVsZW1lbnQ8L2k+CiZsdDsvbG9naWM6aXRlcmF0ZSZndDs8L3ByZT4KICAgICAgICAgPC9saT4KICAgICAgIAogICAgICAgICAgPC91bD4KICAgICA8L2xpPgogICAKICAgICAgPC91bD4KIDwvYmxvY2txdW90ZT4KIAogICAgICA8aDM+TG9naWMgRXhhbXBsZXM8L2gzPgogCiAgICAgIDxibG9ja3F1b3RlPiAgIAogICAgICAgIDxwPjxiPlZhbHVlIENvbXBhcmlzb25zPC9iPjwvcD4KICAgCiAgICAgICAgPGJsb2NrcXVvdGU+ICAgICAKICAgICAgICAgIDxwPjx1PjwvdT48dT48L3U+PHU+TG9naWMgRXF1aXZhbGVuY2UgVGFncyAoZXF1YWwsIG5vdEVxdWFsLCBncmVhdGVyRXF1YWwsIAogICAgICBsZXNzRXF1YWwsIGxlc3NUaGFuLCBncmVhdGVyVGhhbik8L3U+PC9wPgogICAgIAogICAgICAgICAgPGJsb2NrcXVvdGU+ICAgICAgIAogICAgICAgICAgICA8cD5Zb3UgY2FuIGNvbXBhcmUgdGhlc2UgdGFncyB0byB0aGUgIj09IiwgIiE9IiAsIiZndDs9IiwgICAKICAgICAiJmx0Oz0iLCAiJmx0OyIsIGFuZCAiJmd0OyJsb2dpYyBvcGVyYXRvcnMgICAgICAgICBpbiBtb3N0IGxhbmd1YWdlcy4KVGhlaXIgdXNhZ2UgaXMgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCBmb3IgbnVtYmVycy4gICAgICAgICBGb3IgYW4gZXhhbXBsZSwKd2UnbGwgY3JlYXRlIGEgc21hbGwgIkd1ZXNzIFRoYXQgTnVtYmVyIiBnYW1lICAgICAgICAgdGhhdCB1c2VzIHJlcXVlc3QgcGFyYW1ldGVycwpmcm9tIGEgZm9ybSBpbnB1dCB0byBwbGF5LiBUaGUgbnVtYmVyIHdpbGwgICAgICAgICBiZSBoYXJkY29kZWQgYXMgIjciLCBiZWNhdXNlCnRoaXMgaXMganVzdCBhbiBleGFtcGxlLiBOb3RlIHRoYXQgICAgICAgICB0aGlzIGlzIGFjdHVhbGx5IHB1dHRpbmcgYXBwbGljYXRpb24KbG9naWMgaW5zaWRlIG9mIGpzcCBwYWdlcywgYW5kIGlzbid0ICAgICAgICAgdGhlIHJlY29tbWVuZGVkIGRldmVsb3BtZW50Cm1ldGhvZCBmb3IgU3RydXRzLiBJdCdzIGp1c3QgYW4gZWFzeSB3YXkgdG8gICAgICAgICBzaG93IGhvdyB0aGVzZSB0YWdzIGFyZQp1c2VkOjwvcD4KICAgICAgIAogICAgICAgICAgICA8cD5UaGUgZmlyc3Qgc3RlcCBpcyB0byBkZXZlbG9wIHRoZSBmb3JtIHRoYXQgd2lsbCBjYWxsIG9uIHRoZQpwcm9jZXNzaW5nICAgICAgICAganNwIHBhZ2UuIFRoaXMgZm9ybSB3aWxsIHVzZSB0aGUgIkdFVCIgbWV0aG9kIHNvIHRoYXQKeW91IGNhbiAgICAgICAgIHNlZSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXIgaW4gdGhlIFVSTC4gVGhlIFBPU1QgbWV0aG9kIGNhbgphbHNvIGJlIHVzZWQgICAgICAgICB3aXRoIG5vIHByb2JsZW0gb3IgY2hhbmdlcy48L3A+CiAgICAgICAKICAgICAgICAgICAgPHA+W251bWJlckd1ZXNzLmpzcF08L3A+CiAKICAgICAgICAgICAgPHByZT4mbHQ7Zm9ybSBhY3Rpb249Im51bWJlclByb2Nlc3MuanNwIiBtZXRob2Q9IkdFVCImZ3Q7PGJyPlBsZWFzZSBFbnRlciBhIE51bWJlciBGcm9tIDEtMTA6ICZsdDtpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJudW1iZXIiIC8mZ3Q7Jmx0O2JyIC8mZ3Q7PGJyPiAgJmx0O2NlbnRlciZndDs8YnI+ICAgICZsdDtpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Ikd1ZXNzIE51bWJlciIgLyZndDs8YnI+ICAmbHQ7L2NlbnRlciZndDs8YnI+Jmx0Oy9mb3JtJmd0Ozxicj48L3ByZT4KICAgICAgIFRoZSBuZXh0IHN0ZXAgaXMgdG8gY3JlYXRlIHRoZSBwcm9jZXNzaW5nIHBhZ2UuIEl0IHVzZXMgdGhlIHN0cnV0cy1sb2dpYyAKICAgICAgdGFnbGliLiBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB0aGlzIHRhZyBsaWJyYXJ5IHVwIGluIHlvdXIgYXBwbGljYXRpb24gCiAgICAgIHRvIHVzZSwgc2VlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uLy4uL3VzZXJHdWlkZS9idWlsZGluZ19jb250cm9sbGVyLmh0bWwjZGRfY29uZmlnIj4KVGhlICAgICAgIFdlYiBBcHBsaWNhdGlvbiBEZXBsb3ltZW50IERlc2NyaXB0b3I8L2E+CiAgICAgICAgCiAgICAgICAgICAgIDxwPltudW1iZXJQcm9jZXNzLmpzcF08L3A+CiAKICAgICAgICAgICAgPHByZT4mbHQ7JUAgcGFnZSBsYW5ndWFnZT0iamF2YSIgJSZndDs8YnI+Jmx0OyVAIHRhZ2xpYiB1cmk9Ii9XRUItSU5GL3N0cnV0cy1sb2dpYy50bGQiIHByZWZpeD0ibG9naWMiICUmZ3Q7PGJyPjwvcHJlPgogCiAgICAgICAgICAgIDxwcmU+Jmx0OyEtLSBJcyB0aGUgbnVtYmVyIGd1ZXNzIHJpZ2h0PyAtLSZndDs8YnI+Jmx0O2xvZ2ljOmVxdWFsIHBhcmFtZXRlcj0ibnVtYmVyIiB2YWx1ZT0iNyImZ3Q7PGJyPiAgWW91IGd1ZXNzZWQgcmlnaHQhIFlvdSB3aW4gYSBoaWdoIHNwZWVkIGJsZW5kZXIhPGJyPiZsdDsvbG9naWM6ZXF1YWwmZ3Q7PGJyPjwvcHJlPgogCiAgICAgICAgICAgIDxwcmU+Jmx0OyEtLSBJZiB0aGUgbnVtYmVyIGd1ZXNzZWQgd2FzIHdyb25nIC0tJmd0Ozxicj4mbHQ7bG9naWM6bm90RXF1YWwgcGFyYW1ldGVyPSJudW1iZXIiIHZhbHVlPSI3IiZndDs8YnI+ICAmbHQ7IS0tIExlc3MgVGhhbiAtLSZndDs8YnI+ICAmbHQ7bG9naWM6bGVzc1RoYW4gcGFyYW1ldGVyPSJudW1iZXIiIHZhbHVlPSI3IiZndDs8YnI+ICAgICAgICAgQSBsaXR0bGUgaGlnaGVyLi4uPGJyPiAgJmx0Oy9sb2dpYzpsZXNzVGhhbiZndDs8YnI+ICAmbHQ7IS0tIEdyZWF0ZXIgVGhhbiAtLSZndDs8YnI+ICAmbHQ7bG9naWM6Z3JlYXRlclRoYW4gcGFyYW1ldGVyPSJudW1iZXIiIHZhbHVlPSI3IiZndDs8YnI+ICAgICAgICAgQSBsaXR0bGUgbG93ZXIuLi48YnI+ICAmbHQ7L2xvZ2ljOmdyZWF0ZXJUaGFuJmd0Ozxicj4mbHQ7L2xvZ2ljOm5vdEVxdWFsJmd0Ozxicj48L3ByZT4KICAgICAgIAogICAgICAgICAgICA8cD5CYXNpY2FsbHksIHRoZSBudW1iZXJQcm9jZXNzLmpzcCBwYWdlIHVzZXMgdGhlIGVxdWFsIHRhZyB0bwpjaGVjayBpZiAgICAgICAgIHRoZSBndWVzcyBpcyA3LCBhbmQgaWYgc28sIHByaW50cyBvdXQgYSBjb25ncmF0dWxhdG9yeSBtZXNzYWdlLgpJZiB0aGUgICAgICAgICBudW1iZXIgaXNuJ3QgZXF1YWwsIHNwZWNpZmllZCBieSB0aGUgdXNlIG9mIHRoZSAmbHQ7bG9naWM6bm90RXF1YWwmZ3Q7IAogICAgICAgIHRhZywgaXQgdXNlcyB0aGUgZ3JlYXRlclRoYW4gYW5kIGxlc3NUaGFuIHRhZ3MgdG8gY2hlY2sgaWYgdGhlIG51bWJlciAKICAgICAgICBpcyBoaWdoZXIgb3IgbG93ZXIgdGhhbiA3LCBhbmQgcHJpbnRzIG91dCBhIGhpbnQuIEFzIHNhaWQgYmVmb3JlLAp0aGlzICAgICAgICAgaXMgYSBob3JyaWJseSBkZXNpZ25lZCBzbWFsbCBhcHBsaWNhdGlvbiwgd2l0aCBubyB2YWxpZGl0eSBjaGVja3MKb24gdGhlICAgICAgICAgbnVtYmVyIGlucHV0LCBidXQgc2hvd3MgdGhlIGJhc2ljIHVzYWdlIG9mIHRoZSBsb2dpYyBlcXVhbAp0YWdzPC9wPgogICAgICAgCiAgICAgICAgICAgIDxwPkZvciBTdHJpbmcgY29tcGFyaXNvbnMsIHRoZSBlcXVhbCB0YWdzIHVzZSB0aGUgamF2YS5sYW5nLlN0cmluZy5jb21wYXJlVG8oKSAKICAgICAgICBtZXRob2QuIFNlZSB0aGUgamF2YWRvY3Mgb24gdGhlIGNvbXBhcmVUbygpIG1ldGhvZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiwgCiAgICAgICAgbG9jYXRlZCA8YSBocmVmPSJodHRwOi8vd3d3LmphdmFzb2Z0LmNvbS9wcm9kdWN0cy9qZGsvMS4yL2RvY3MvYXBpL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb21wYXJlVG8lMjhqYXZhLmxhbmcuT2JqZWN0JTI5Ij4KaGVyZTwvYT4KLjwvcD4KICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgCiAgICAgICAgICAgIDxwPjx1Pk1hdGNoIGFuZCBQcmVzZW50IFRhZ3MgKG1hdGNoLCBub3RNYXRjaCwgcHJlc2VudCwgbm90UHJlc2VudCk8L3U+PC9wPgogICAgIAogICAgICAgICAgICA8YmxvY2txdW90ZT4gICAgICAgCiAgICAgICAgICAgICAgPHA+WW91IHVzZSB0aGUgbWF0Y2ggdGFncyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBwcmVzZW50IHRhZ3MKaW4gb3JkZXIgICAgICAgICB0byBkbyBzdWJzdHJpbmcgbWF0Y2hlcy4gRm9yIGFuIGV4YW1wbGUgdXNpbmcgdGhpcyB3ZSdsbAp1c2UgaGVhZGVycywgICAgICAgICBzcGVjaWZpY2FsbHkgdGhlICJSZWZlcmVyIiBoZWFkZXIuIFRoZSBIVFRQIHJlZmVyZXIKaGVhZGVyIGdpdmVzICAgICAgICAgdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgdGhhdCByZWZlcnMgdG8gdGhlIHJlcXVlc3RlZApVUkwuIFdlJ2xsIHVzZSB0aGlzICAgICAgICAgdG8gY2hlY2sgaWYgdGhlIHVzZXIgaXMgY29taW5nIGZyb20gYSBsaW5rIHNwZWNpZmllZApieSBhIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbSI+R29vZ2xlPC9hPgogICAgICAgICBzZWFyY2gsIGFuZCBvZmZlciBhIHBlcnNvbmFsaXplZCBncmVldGluZywgZnJpZ2h0ZW5pbmcgdXNlcnMgdGhhdApmaW5kICAgICAgICAgb3VyIHNpdGUgdGhyb3VnaCB0aGUgc2VhcmNoIGVuZ2luZSB3aXRoIG91ciBhbWF6aW5nIGludGltYXRlCmtub3dsZWRnZSAgICAgICAgIG9mIHRoZWlyIGJyb3dzaW5nIGhhYml0czo8L3A+CiAgICAgICAKICAgICAgICAgICAgICA8cD5bc25lYWt5LmpzcF08L3A+CiAgICAgICAKICAgICAgICAgICAgICA8cHJlPiZsdDslQCBwYWdlIGxhbmd1YWdlPSJqYXZhIiAlJmd0Ozxicj4mbHQ7JUAgdGFnbGliIHVyaT0iL1dFQi1JTkYvc3RydXRzLWxvZ2ljLnRsZCIgcHJlZml4PSJsb2dpYyIgJSZndDs8YnI+PGJyPjxicj4mbHQ7IS0tIENoZWNrIHRvIHNlZSBpZiB0aGUgIlJlZmVyZXIiIGhlYWRlciBpcyBwcmVzZW50IC0tJmd0Ozxicj4mbHQ7bG9naWM6cHJlc2VudCBoZWFkZXI9IlJlZmVyZXIiJmd0Ozxicj4gICZsdDtsb2dpYzptYXRjaCBoZWFkZXI9IlJlZmVyZXIiIHZhbHVlPSJnb29nbGUuY29tIiZndDs8YnI+ICAgIEkgc2VlIHlvdSBmb3VuZCBvdXIgc2l0ZSB0aHJvdWdoIEdvb2dsZS4uLiBpbnRlcmVzdGluZy48YnI+ICAmbHQ7L2xvZ2ljOm1hdGNoJmd0Ozxicj4gICZsdDtsb2dpYzpub3RNYXRjaCBoZWFkZXI9IlJlZmVyZXIiIHZhbHVlPSJnb29nbGUuY29tIiZndDs8YnI+ICAgIFdlbGNvbWUgdG8gdGhlIHNpdGUsIHdlJ3JlIHNlY3JldGx5IGxvZ2dpbmcgd2hhdCBzaXRlIHlvdSBjYW1lIGZyb20sPGJyPiAgICBiZWNhdXNlIHdlJ3JlIHNoYWR5Li4uPGJyPiAgJmx0Oy9sb2dpYzpub3RNYXRjaCZndDs8YnI+Jmx0Oy9sb2dpYzpwcmVzZW50Jmd0Ozxicj48YnI+Jmx0OyEtLSBJZiB0aGUgaGVhZGVyIGlzIG5vdCBwcmVzZW50IC0tJmd0Ozxicj4mbHQ7bG9naWM6bm90UHJlc2VudCBoZWFkZXI9IlJlZmVyZXIiJmd0Ozxicj4gIEhpLCB3ZWxjb21lIHRvIG91ciBzaXRlLiAgUGxlYXNlIGZpbGwgb3V0IG91cjxicj4gICZsdDthIGhyZWY9Im5vbkV4aXN0YW50Rm9ybS5qc3AiJmd0O0Zvcm0mbHQ7L2EmZ3Q7IGFuZDxicj4gIHRlbGwgdXMgd2hlcmUgeW91J3JlIGNvbWluZyBmcm9tLjxicj4mbHQ7L2xvZ2ljOm5vdFByZXNlbnQmZ3Q7PC9wcmU+CiAgICAgICAKICAgICAgICAgICAgICA8cD5Ob3RlOiBBbm90aGVyIGludGVyZXN0aW5nIHVzYWdlIG9mIHRoZXNlIHRhZ3MgYW5kIGhlYWRlcnMKd291bGQgYmUgdG8gICAgICAgICB1c2UgdGhlICJVc2VyLUFnZW50IiBoZWFkZXIgdG8gZGlzcGxheSBicm93c2VyLXNwZWNpZmljCmphdmFzY3JpcHQuPC9wPgogICAgIDwvYmxvY2txdW90ZT4KICAgPC9ibG9ja3F1b3RlPgogICAKICAgICAgICAgICAgICA8cD48Yj5Db2xsZWN0aW9uIFV0aWxpdGllcyAoaXRlcmF0ZSk8L2I+PC9wPgogICAKICAgICAgICAgICAgICA8YmxvY2txdW90ZT4gICAgIAogICAgICAgICAgICAgICAgPHA+Rm9yIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlICZsdDtsb2dpYzppdGVyYXRlJmd0OyB0YWcsCndlJ2xsIHVzZSBvbmUgb2YgICAgICAgdGhlIHByZXZpb3VzIGV4YW1wbGVzIGdpdmVuLCBpbiBpdCdzIGVudGlyZXR5LiBUaGlzCmV4YW1wbGUgdXNlcyB0aGUgJmx0O2JlYW46d3JpdGUmZ3Q7ICAgICAgIHRhZyBmcm9tIHRoZSBCZWFuIFRhZyBMaWJyYXJ5LApzZWUgdGhlIFVzZXIncyBHdWlkZSBvbiB0aGUgYmVhbiB0YWcgbGlicmFyeSAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgppdCdzIHVzYWdlOjwvcD4KICAgICAKICAgICAgICAgICAgICAgIDxwPltpdGVyYXRlLmpzcF08L3A+CiAKICAgICAgICAgICAgICAgIDxwcmU+Jmx0OyVAIHBhZ2UgbGFuZ3VhZ2U9ImphdmEiICUmZ3Q7PGJyPiZsdDslQCB0YWdsaWIgdXJpPSIvV0VCLUlORi9zdHJ1dHMtYmVhbi50bGQiIHByZWZpeD0iYmVhbiIgJSZndDs8YnI+Jmx0OyVAIHRhZ2xpYiB1cmk9Ii9XRUItSU5GL3N0cnV0cy1sb2dpYy50bGQiIHByZWZpeD0ibG9naWMiICUmZ3Q7PGJyPjwvcHJlPgogCiAgICAgICAgICAgICAgICA8cHJlPiZsdDslPGJyPmphdmEudXRpbC5BcnJheUxpc3QgbGlzdCA9IG5ldyBqYXZhLnV0aWwuQXJyYXlMaXN0KCk7PGJyPiAgbGlzdC5hZGQoIkZpcnN0Iik7PGJyPiAgbGlzdC5hZGQoIlNlY29uZCIpOzxicj4gIGxpc3QuYWRkKCJUaGlyZCIpOzxicj4gIGxpc3QuYWRkKCJGb3VydGgiKTs8YnI+ICBsaXN0LmFkZCgiRmlmdGgiKTs8YnI+ICBwYWdlQ29udGV4dC5zZXRBdHRyaWJ1dGUoImxpc3QiLCBsaXN0LCBQYWdlQ29udGV4dC5QQUdFX1NDT1BFKTs8YnI+JSZndDs8YnI+PGJyPiZsdDtsb2dpYzppdGVyYXRlIGlkPSJteUNvbGxlY3Rpb25FbGVtZW50IiBuYW1lPSJsaXN0IiZndDs8YnI+ICBFbGVtZW50IFZhbHVlOiAmbHQ7YmVhbjp3cml0ZSBuYW1lPSJteUNvbGxlY3Rpb25FbGVtZW50IiAvJmd0OyZsdDticiAvJmd0Ozxicj4mbHQ7L2xvZ2ljOml0ZXJhdGUmZ3Q7PC9wcmU+CiA8L2Jsb2NrcXVvdGU+CiA8L2Jsb2NrcXVvdGU+CjxQPgoKPFA+CjxIUj4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTMgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPC9UUj4KPC9UQUJMRT4KPC9URD4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+CjwvRU0+CjwvVEQ+CjwvVFI+Cgo8VFI+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5QUkVWIFBBQ0tBR0U8L0I+PC9BPiZuYnNwOwombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbmVzdGVkL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5ORVhUIFBBQ0tBR0U8L0I+PC9BPjwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOwo8U0NSSVBUPgogIDwhLS0KICBpZih3aW5kb3c9PXRvcCkgewogICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiIFRBUkdFVD0iIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7CiAgfQogIC8vLS0+CjwvU0NSSVBUPgo8Tk9TQ1JJUFQ+CjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgo8L05PU0NSSVBUPgo8L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgpDb3B5cmlnaHQgqSAyMDAwLTIwMDMgLSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgo8L0JPRFk+CjwvSFRNTD4K