PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTMgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgRXh0ZW5zaW9ucw0KPC9USVRMRT4NCjxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4NCjwvSEVBRD4NCjxCT0RZIEJHQ09MT1I9IndoaXRlIj4NCg0KPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPg0KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPg0KPFRSPg0KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPg0KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+DQogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0V4dGVuc2lvbnMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9saWIvRXhzbHRTdHJpbmdzLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9saWIvTm9kZUluZm8uaHRtbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsNCiZuYnNwOzxBIEhSRUY9IkV4dGVuc2lvbnMuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUj4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQo8IS0tID09PT09PT09PT09IEVORCBPRiBOQVZCQVIgPT09PT09PT09PT0gLS0+DQoNCjxIUj4NCjwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4NCjxIMj4NCjxGT05UIFNJWkU9Ii0xIj4NCm9yZy5hcGFjaGUueGFsYW4ubGliPC9GT05UPg0KPEJSPg0KQ2xhc3MgIEV4dGVuc2lvbnM8L0gyPg0KPFBSRT4NCmphdmEubGFuZy5PYmplY3QNCiAgfA0KICArLS08Qj5vcmcuYXBhY2hlLnhhbGFuLmxpYi5FeHRlbnNpb25zPC9CPg0KPC9QUkU+DQo8SFI+DQo8REw+DQo8RFQ+cHVibGljIGNsYXNzIDxCPkV4dGVuc2lvbnM8L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDwvREw+DQoNCjxQPg0KVGhpcyBjbGFzcyBjb250YWlucyBtYW55IG9mIHRoZSBYYWxhbi1zdXBwbGllZCBleHRlbnNpb25zLgogSXQgaXMgYWNjZXNzZWQgYnkgc3BlY2lmeWluZyBhIG5hbWVzcGFjZSBVUkkgYXMgZm9sbG93czoKIDxwcmU+CiAgICB4bWxuczp4YWxhbj0iaHR0cDovL3htbC5hcGFjaGUub3JnL3hhbGFuIgogPC9wcmU+DQo8UD4NCjxETD4NCjxEVD48Qj5Vc2FnZTo8L0I+PEREPjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8UD4NCjwhLS0gPT09PT09PT0gSU5ORVIgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9saWIvRXh0ZW5zaW9ucy5odG1sI2NoZWNrRW52aXJvbm1lbnQob3JnLmFwYWNoZS54YWxhbi5leHRlbnNpb25zLkV4cHJlc3Npb25Db250ZXh0KSI+Y2hlY2tFbnZpcm9ubWVudDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHByZXNzaW9uQ29udGV4dC5odG1sIj5FeHByZXNzaW9uQ29udGV4dDwvQT4mbmJzcDtteUNvbnRleHQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gYSBOb2RlIG9mIGJhc2ljIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSAKIEVudmlyb25tZW50Q2hlY2sgdXRpbGl0eSBhYm91dCB0aGUgSmF2YSBlbnZpcm9ubWVudC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vbGliL0V4dGVuc2lvbnMuaHRtbCNkaWZmZXJlbmNlKG9yZy53M2MuZG9tLk5vZGVMaXN0LCBvcmcudzNjLmRvbS5Ob2RlTGlzdCkiPmRpZmZlcmVuY2U8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtubDEsCiAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+Jm5ic3A7bmwyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBub2RlLXNldHMuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2xpYi9FeHRlbnNpb25zLmh0bWwjZGlzdGluY3Qob3JnLnczYy5kb20uTm9kZUxpc3QpIj5kaXN0aW5jdDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiZuYnNwO25sKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBub2RlLXNldCBjb250YWluaW5nIGRpc3RpbmN0IHN0cmluZyB2YWx1ZXMuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vbGliL0V4dGVuc2lvbnMuaHRtbCNldmFsdWF0ZShvcmcuYXBhY2hlLnhhbGFuLmV4dGVuc2lvbnMuRXhwcmVzc2lvbkNvbnRleHQsIGphdmEubGFuZy5TdHJpbmcpIj5ldmFsdWF0ZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHByZXNzaW9uQ29udGV4dC5odG1sIj5FeHByZXNzaW9uQ29udGV4dDwvQT4mbmJzcDtteUNvbnRleHQsCiAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt4cGF0aEV4cHIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgYXJndW1lbnQgYXMgYSBzdHJpbmcgY29udGFpbmluZwogYW4gWFBhdGggZXhwcmVzc2lvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+c3RhdGljJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2xpYi9FeHRlbnNpb25zLmh0bWwjaGFzU2FtZU5vZGVzKG9yZy53M2MuZG9tLk5vZGVMaXN0LCBvcmcudzNjLmRvbS5Ob2RlTGlzdCkiPmhhc1NhbWVOb2RlczwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiZuYnNwO25sMSwKICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiZuYnNwO25sMik8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdHJ1ZSBpZiBib3RoIG5vZGUtc2V0cyBjb250YWluIHRoZSBzYW1lIHNldCBvZiBub2Rlcy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vbGliL0V4dGVuc2lvbnMuaHRtbCNpbnRlcnNlY3Rpb24ob3JnLnczYy5kb20uTm9kZUxpc3QsIG9yZy53M2MuZG9tLk5vZGVMaXN0KSI+aW50ZXJzZWN0aW9uPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+Jm5ic3A7bmwxLAogICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+Jm5ic3A7bmwyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW50ZXJzZWN0aW9uIG9mIHR3byBub2RlLXNldHMuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sIj5Ob2RlU2V0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2xpYi9FeHRlbnNpb25zLmh0bWwjbm9kZXNldChvcmcuYXBhY2hlLnhhbGFuLmV4dGVuc2lvbnMuRXhwcmVzc2lvbkNvbnRleHQsIGphdmEubGFuZy5PYmplY3QpIj5ub2Rlc2V0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4cHJlc3Npb25Db250ZXh0Lmh0bWwiPkV4cHJlc3Npb25Db250ZXh0PC9BPiZuYnNwO215UHJvY2Vzc29yLAogICAgICAgIGphdmEubGFuZy5PYmplY3QmbmJzcDtydGYpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBpcyBhbiBleHRlbnNpb24gdGhhdCBpbXBsZW1lbnRzIGFzIGEgWGFsYW4gZXh0ZW5zaW9uCiB0aGUgbm9kZS1zZXQgZnVuY3Rpb24gYWxzbyBmb3VuZCBpbiB4dCBhbmQgc2F4b24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2xpYi9FeHRlbnNpb25zLmh0bWwjdG9rZW5pemUoamF2YS5sYW5nLlN0cmluZykiPnRva2VuaXplPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3RvVG9rZW5pemUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgTm9kZVNldCBjb250YWluaW5nIG9uZSB0ZXh0IG5vZGUgZm9yIGVhY2ggdG9rZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9saWIvRXh0ZW5zaW9ucy5odG1sI3Rva2VuaXplKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj50b2tlbml6ZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt0b1Rva2VuaXplLAogICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZGVsaW1zKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIE5vZGVTZXQgY29udGFpbmluZyBvbmUgdGV4dCBub2RlIGZvciBlYWNoIHRva2VuIGluIHRoZSBmaXJzdCBhcmd1bWVudC48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPg0KPFREPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPmVxdWFscywgDQpnZXRDbGFzcywgDQpoYXNoQ29kZSwgDQpub3RpZnksIA0Kbm90aWZ5QWxsLCANCnRvU3RyaW5nLCANCndhaXQsIA0Kd2FpdCwgDQp3YWl0PC9DT0RFPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPFA+DQoNCjwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KDQo8QSBOQU1FPSJub2Rlc2V0KG9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9ucy5FeHByZXNzaW9uQ29udGV4dCwgamF2YS5sYW5nLk9iamVjdCkiPjwhLS0gLS0+PC9BPjxIMz4NCm5vZGVzZXQ8L0gzPg0KPFBSRT4NCnB1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwiPk5vZGVTZXQ8L0E+IDxCPm5vZGVzZXQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHByZXNzaW9uQ29udGV4dC5odG1sIj5FeHByZXNzaW9uQ29udGV4dDwvQT4mbmJzcDtteVByb2Nlc3NvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdCZuYnNwO3J0Zik8L1BSRT4NCjxETD4NCjxERD5UaGlzIG1ldGhvZCBpcyBhbiBleHRlbnNpb24gdGhhdCBpbXBsZW1lbnRzIGFzIGEgWGFsYW4gZXh0ZW5zaW9uCiB0aGUgbm9kZS1zZXQgZnVuY3Rpb24gYWxzbyBmb3VuZCBpbiB4dCBhbmQgc2F4b24uCiBJZiB0aGUgYXJndW1lbnQgaXMgYSBSZXN1bHQgVHJlZSBGcmFnbWVudCwgdGhlbiA8Y29kZT5ub2Rlc2V0PC9jb2RlPgogcmV0dXJucyBhIG5vZGUtc2V0IGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgcm9vdCBub2RlIGFzIGRlc2NyaWJlZCBpbgogc2VjdGlvbiAxMS4xIG9mIHRoZSBYU0xUIDEuMCBSZWNvbW1lbmRhdGlvbi4gIElmIHRoZSBhcmd1bWVudCBpcyBhCiBub2RlLXNldCwgPGNvZGU+bm9kZXNldDwvY29kZT4gcmV0dXJucyBhIG5vZGUtc2V0LiAgSWYgdGhlIGFyZ3VtZW50CiBpcyBhIHN0cmluZywgbnVtYmVyLCBvciBib29sZWFuLCB0aGVuIDxjb2RlPm5vZGVzZXQ8L2NvZGU+IHJldHVybnMKIGEgbm9kZS1zZXQgY29uc2lzdGluZyBvZiBhIHNpbmdsZSByb290IG5vZGUgd2l0aCBhIHNpbmdsZSB0ZXh0IG5vZGUKIGNoaWxkIHRoYXQgaXMgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBYUGF0aCBzdHJpbmcoKSBmdW5jdGlvbiBvbiB0aGUKIHBhc3NlZCBwYXJhbWV0ZXIuICBJZiB0aGUgYXJndW1lbnQgaXMgYW55dGhpbmcgZWxzZSwgdGhlbiBhIG5vZGUtc2V0CiBpcyByZXR1cm5lZCBjb25zaXN0aW5nIG9mIGEgc2luZ2xlIHJvb3Qgbm9kZSB3aXRoIGEgc2luZ2xlIHRleHQgbm9kZQogY2hpbGQgdGhhdCBpcyB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGphdmEgPGNvZGU+dG9TdHJpbmcoKTwvY29kZT4KIG1ldGhvZCBvbiB0aGUgcGFzc2VkIGFyZ3VtZW50LgogTW9zdCBvZiB0aGUKIGFjdHVhbCB3b3JrIGhlcmUgaXMgZG9uZSBpbiA8Y29kZT5NZXRob2RSZXNvbHZlcjwvY29kZT4gYW5kCiA8Y29kZT5YUlRyZWVGcmFnPC9jb2RlPi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5teVByb2Nlc3NvcjwvQ09ERT4gLSBDb250ZXh0IHBhc3NlZCBieSB0aGUgZXh0ZW5zaW9uIHByb2Nlc3NvcjxERD48Q09ERT5ydGY8L0NPREU+IC0gQXJndW1lbnQgaW4gdGhlIHN0eWxlc2hlZXQgdG8gdGhlIG5vZGVzZXQgZXh0ZW5zaW9uIGZ1bmN0aW9uCgogTkVFRFNET0MgKCRvYmplY3ROYW1lJCkgQHJldHVybjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaW50ZXJzZWN0aW9uKG9yZy53M2MuZG9tLk5vZGVMaXN0LCBvcmcudzNjLmRvbS5Ob2RlTGlzdCkiPjwhLS0gLS0+PC9BPjxIMz4NCmludGVyc2VjdGlvbjwvSDM+DQo8UFJFPg0KcHVibGljIHN0YXRpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4gPEI+aW50ZXJzZWN0aW9uPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtubDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiZuYnNwO25sMik8L1BSRT4NCjxETD4NCjxERD5SZXR1cm5zIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIG5vZGUtc2V0cy48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ubDE8L0NPREU+IC0gTm9kZUxpc3QgZm9yIGZpcnN0IG5vZGUtc2V0PEREPjxDT0RFPm5sMjwvQ09ERT4gLSBOb2RlTGlzdCBmb3Igc2Vjb25kIG5vZGUtc2V0PERUPjxCPlJldHVybnM6PC9CPjxERD5hIE5vZGVMaXN0IGNvbnRhaW5pbmcgdGhlIG5vZGVzIGluIG5sMSB0aGF0IGFyZSBhbHNvIGluIG5sMgoKIE5vdGU6IFRoZSB1c2FnZSBvZiB0aGlzIGV4dGVuc2lvbiBmdW5jdGlvbiBpbiB0aGUgeGFsYW4gbmFtZXNwYWNlIAogaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiBpbiB0aGUgRVhTTFQgc2V0cyBleHRlbnNpb24KIChodHRwOi8vZXhzbHQub3JnL3NldHMpLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZGlmZmVyZW5jZShvcmcudzNjLmRvbS5Ob2RlTGlzdCwgb3JnLnczYy5kb20uTm9kZUxpc3QpIj48IS0tIC0tPjwvQT48SDM+DQpkaWZmZXJlbmNlPC9IMz4NCjxQUkU+DQpwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiA8Qj5kaWZmZXJlbmNlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtubDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtubDIpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBub2RlLXNldHMuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bmwxPC9DT0RFPiAtIE5vZGVMaXN0IGZvciBmaXJzdCBub2RlLXNldDxERD48Q09ERT5ubDI8L0NPREU+IC0gTm9kZUxpc3QgZm9yIHNlY29uZCBub2RlLXNldDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBOb2RlTGlzdCBjb250YWluaW5nIHRoZSBub2RlcyBpbiBubDEgdGhhdCBhcmUgbm90IGluIG5sMgogCiBOb3RlOiBUaGUgdXNhZ2Ugb2YgdGhpcyBleHRlbnNpb24gZnVuY3Rpb24gaW4gdGhlIHhhbGFuIG5hbWVzcGFjZSAKIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gaW4gdGhlIEVYU0xUIHNldHMgZXh0ZW5zaW9uCiAoaHR0cDovL2V4c2x0Lm9yZy9zZXRzKS48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImRpc3RpbmN0KG9yZy53M2MuZG9tLk5vZGVMaXN0KSI+PCEtLSAtLT48L0E+PEgzPg0KZGlzdGluY3Q8L0gzPg0KPFBSRT4NCnB1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+IDxCPmRpc3RpbmN0PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtubCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm5zIG5vZGUtc2V0IGNvbnRhaW5pbmcgZGlzdGluY3Qgc3RyaW5nIHZhbHVlcy48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ubDwvQ09ERT4gLSBOb2RlTGlzdCBmb3Igbm9kZS1zZXQ8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgTm9kZUxpc3Qgd2l0aCBub2RlcyBmcm9tIG5sIGNvbnRhaW5pbmcgZGlzdGluY3Qgc3RyaW5nIHZhbHVlcy4KIEluIG90aGVyIHdvcmRzLCBpZiBtb3JlIHRoYW4gb25lIG5vZGUgaW4gbmwgY29udGFpbnMgdGhlIHNhbWUgc3RyaW5nIHZhbHVlLAogb25seSBpbmNsdWRlIHRoZSBmaXJzdCBzdWNoIG5vZGUgZm91bmQuCgogTm90ZTogVGhlIHVzYWdlIG9mIHRoaXMgZXh0ZW5zaW9uIGZ1bmN0aW9uIGluIHRoZSB4YWxhbiBuYW1lc3BhY2UgCiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIGluIHRoZSBFWFNMVCBzZXRzIGV4dGVuc2lvbgogKGh0dHA6Ly9leHNsdC5vcmcvc2V0cykuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJoYXNTYW1lTm9kZXMob3JnLnczYy5kb20uTm9kZUxpc3QsIG9yZy53M2MuZG9tLk5vZGVMaXN0KSI+PCEtLSAtLT48L0E+PEgzPg0KaGFzU2FtZU5vZGVzPC9IMz4NCjxQUkU+DQpwdWJsaWMgc3RhdGljIGJvb2xlYW4gPEI+aGFzU2FtZU5vZGVzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtubDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+Jm5ic3A7bmwyKTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdHJ1ZSBpZiBib3RoIG5vZGUtc2V0cyBjb250YWluIHRoZSBzYW1lIHNldCBvZiBub2Rlcy48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ubDE8L0NPREU+IC0gTm9kZUxpc3QgZm9yIGZpcnN0IG5vZGUtc2V0PEREPjxDT0RFPm5sMjwvQ09ERT4gLSBOb2RlTGlzdCBmb3Igc2Vjb25kIG5vZGUtc2V0PERUPjxCPlJldHVybnM6PC9CPjxERD50cnVlIGlmIG5sMSBhbmQgbmwyIGNvbnRhaW4gZXhhY3RseSB0aGUgc2FtZSBzZXQgb2Ygbm9kZXMuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJldmFsdWF0ZShvcmcuYXBhY2hlLnhhbGFuLmV4dGVuc2lvbnMuRXhwcmVzc2lvbkNvbnRleHQsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpldmFsdWF0ZTwvSDM+DQo8UFJFPg0KcHVibGljIHN0YXRpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPiA8Qj5ldmFsdWF0ZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4cHJlc3Npb25Db250ZXh0Lmh0bWwiPkV4cHJlc3Npb25Db250ZXh0PC9BPiZuYnNwO215Q29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt4cGF0aEV4cHIpCiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24uaHRtbCI+U0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBhcmd1bWVudCBhcyBhIHN0cmluZyBjb250YWluaW5nCiBhbiBYUGF0aCBleHByZXNzaW9uLiAgVXNlZCB3aGVyZSB0aGUgWFBhdGggZXhwcmVzc2lvbiBpcyBub3Qga25vd24gdW50aWwKIHJ1bi10aW1lLiAgVGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGFzIGlmIHRoZSBydW4tdGltZSB2YWx1ZSBvZiB0aGUKIGFyZ3VtZW50IGFwcGVhcmVkIGluIHBsYWNlIG9mIHRoZSBldmFsdWF0ZSBmdW5jdGlvbiBjYWxsIGF0IGNvbXBpbGUgdGltZS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5teUNvbnRleHQ8L0NPREU+IC0gYW4gPGNvZGU+RXhwcmVzc2lvbkNvbnRleHQ8L2NvZGU+IHBhc3NlZCBpbiBieSB0aGUKICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIG1lY2hhbmlzbS4gIFRoaXMgbXVzdCBiZSBhbiBYUGF0aENvbnRleHQuPEREPjxDT0RFPnhwYXRoRXhwcjwvQ09ERT4gLSBUaGUgWFBhdGggZXhwcmVzc2lvbiB0byBiZSBldmFsdWF0ZWQuPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgWE9iamVjdCByZXN1bHRpbmcgZnJvbSBldmFsdWF0aW5nIHRoZSBYUGF0aDxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24uaHRtbCI+U0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uPC9BPiAtIE5vdGU6IFRoZSB1c2FnZSBvZiB0aGlzIGV4dGVuc2lvbiBmdW5jdGlvbiBpbiB0aGUgeGFsYW4gbmFtZXNwYWNlIAogaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiBpbiB0aGUgRVhTTFQgZHluYW1pYyBleHRlbnNpb24KIChodHRwOi8vZXhzbHQub3JnL2R5bmFtaWMpLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0idG9rZW5pemUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCnRva2VuaXplPC9IMz4NCjxQUkU+DQpwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiA8Qj50b2tlbml6ZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3RvVG9rZW5pemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2RlbGltcyk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm5zIGEgTm9kZVNldCBjb250YWluaW5nIG9uZSB0ZXh0IG5vZGUgZm9yIGVhY2ggdG9rZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LgogRGVsaW1pdGVycyBhcmUgc3BlY2lmaWVkIGluIHRoZSBzZWNvbmQgYXJndW1lbnQuCiBUb2tlbnMgYXJlIGRldGVybWluZWQgYnkgYSBjYWxsIHRvIDxjb2RlPlN0cmluZ1Rva2VuaXplcjwvY29kZT4uCiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gZW1wdHkgc3RyaW5nIG9yIGNvbnRhaW5zIG9ubHkgZGVsaW1pdGVycywgdGhlIHJlc3VsdAogd2lsbCBiZSBhbiBlbXB0eSBOb2RlU2V0LgoKIENvbnRyaWJ1dGVkIHRvIFhhbGFuSjEgYnkgPGEgaHJlZj0ibWFpbHRvOmJlbm9pdC5jZXJyaW5hQHdyaXRlbWUuY29tIj5CZW5vaXQgQ2VycmluYTwvYT4uPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dG9Ub2tlbml6ZTwvQ09ERT4gLSBUaGUgc3RyaW5nIHRvIGJlIHNwbGl0IGludG8gdGV4dCB0b2tlbnMuPEREPjxDT0RFPmRlbGltczwvQ09ERT4gLSBUaGUgZGVsaW1pdGVycyB0byB1c2UuPERUPjxCPlJldHVybnM6PC9CPjxERD5hIE5vZGVTZXQgYXMgZGVzY3JpYmVkIGFib3ZlLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0idG9rZW5pemUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCnRva2VuaXplPC9IMz4NCjxQUkU+DQpwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiA8Qj50b2tlbml6ZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3RvVG9rZW5pemUpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyBhIE5vZGVTZXQgY29udGFpbmluZyBvbmUgdGV4dCBub2RlIGZvciBlYWNoIHRva2VuIGluIHRoZSBmaXJzdCBhcmd1bWVudC4KIERlbGltaXRlcnMgYXJlIHdoaXRlc3BhY2UuICBUaGF0IGlzLCB0aGUgZGVsaW1pdGVycyB0aGF0IGFyZSB1c2VkIGFyZSB0YWIgKCYjeDA5KSwKIGxpbmVmZWVkICgmI3gwQSksIHJldHVybiAoJiN4MEQpLCBhbmQgc3BhY2UgKCYjeDIwKS4KIFRva2VucyBhcmUgZGV0ZXJtaW5lZCBieSBhIGNhbGwgdG8gPGNvZGU+U3RyaW5nVG9rZW5pemVyPC9jb2RlPi4KIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBlbXB0eSBzdHJpbmcgb3IgY29udGFpbnMgb25seSBkZWxpbWl0ZXJzLCB0aGUgcmVzdWx0CiB3aWxsIGJlIGFuIGVtcHR5IE5vZGVTZXQuCgogQ29udHJpYnV0ZWQgdG8gWGFsYW5KMSBieSA8YSBocmVmPSJtYWlsdG86YmVub2l0LmNlcnJpbmFAd3JpdGVtZS5jb20iPkJlbm9pdCBDZXJyaW5hPC9hPi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT50b1Rva2VuaXplPC9DT0RFPiAtIFRoZSBzdHJpbmcgdG8gYmUgc3BsaXQgaW50byB0ZXh0IHRva2Vucy48RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgTm9kZVNldCBhcyBkZXNjcmliZWQgYWJvdmUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJjaGVja0Vudmlyb25tZW50KG9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9ucy5FeHByZXNzaW9uQ29udGV4dCkiPjwhLS0gLS0+PC9BPjxIMz4NCmNoZWNrRW52aXJvbm1lbnQ8L0gzPg0KPFBSRT4NCnB1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiA8Qj5jaGVja0Vudmlyb25tZW50PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXhwcmVzc2lvbkNvbnRleHQuaHRtbCI+RXhwcmVzc2lvbkNvbnRleHQ8L0E+Jm5ic3A7bXlDb250ZXh0KTwvUFJFPg0KPERMPg0KPEREPlJldHVybiBhIE5vZGUgb2YgYmFzaWMgZGVidWdnaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIAogRW52aXJvbm1lbnRDaGVjayB1dGlsaXR5IGFib3V0IHRoZSBKYXZhIGVudmlyb25tZW50LgoKIDxwPlNpbXBseSBjYWxscyB0aGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi94c2x0L0Vudmlyb25tZW50Q2hlY2suaHRtbCI+PENPREU+RW52aXJvbm1lbnRDaGVjazwvQ09ERT48L0E+CiB1dGlsaXR5IHRvIGdyYWIgaW5mbyBhYm91dCB0aGUgSmF2YSBlbnZpcm9ubWVudCBhbmQgQ0xBU1NQQVRILCAKIGV0Yy4sIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlc3VsdGluZyBOb2RlLiAgU3R5bGVzaGVldHMgY2FuIAogdGhlbiBtYW5pdXBsYXRlIHRoaXMgZGF0YSBvciBzaW1wbHkgeHNsOmNvcHktb2YgdGhlIE5vZGUuICBOb3RlIAogdGhhdCB3ZSBmaXJzdCBhdHRlbXB0IHRvIGxvYWQgdGhlIG1vcmUgYWR2YW5jZWQgCiBvcmcuYXBhY2hlLmVudi5XaGljaCB1dGlsaXR5IGJ5IHJlZmxlY3Rpb247IG9ubHkgaWYgdGhhdCBmYWlscyAKIHRvIHdlIHN0aWxsIHVzZSB0aGUgaW50ZXJuYWwgdmVyc2lvbi4gIFdoaWNoIGlzIGF2YWlsYWJsZSBmcm9tIAogPGEgaHJlZj0iaHR0cDovL3htbC5hcGFjaGUub3JnL2NvbW1vbnMvIj5odHRwOi8veG1sLmFwYWNoZS5vcmcvY29tbW9ucy88L2E+LjwvcD4KCiA8cD5XZSB0aHJvdyBhIFdyYXBwZWRSdW50aW1lRXhjZXB0aW9uIGluIHRoZSB1bmxpa2VseSBjYXNlIAogdGhhdCByZWFkaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGVudmlyb25tZW50IHRocm93cyB1cyBhbiAKIGV4Y2VwdGlvbi4gKElzIHRoaXMgcmVhbGx5IHRoZSBiZXN0IHRoaW5nIHRvIGRvPyk8L3A+PEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bXlDb250ZXh0PC9DT0RFPiAtIGFuIDxjb2RlPkV4cHJlc3Npb25Db250ZXh0PC9jb2RlPiBwYXNzZWQgaW4gYnkgdGhlCiAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiBtZWNoYW5pc20uICBUaGlzIG11c3QgYmUgYW4gWFBhdGhDb250ZXh0LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBOb2RlIGFzIGRlc2NyaWJlZCBhYm92ZS48L0RMPg0KPC9ERD4NCjwvREw+DQo8IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+DQo8SFI+DQoNCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4NCjxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4NCjxUUj4NCjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4NCjxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPg0KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9FeHRlbnNpb25zLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8L1RSPg0KPC9UQUJMRT4NCjwvVEQ+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4NCjwvRU0+DQo8L1REPg0KPC9UUj4NCg0KPFRSPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vbGliL0V4c2x0U3RyaW5ncy5odG1sIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsNCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vbGliL05vZGVJbmZvLmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7DQombmJzcDs8QSBIUkVGPSJFeHRlbnNpb25zLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KREVUQUlMOiAmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQpDb3B5cmlnaHQgqSAyMDA2IEFwYWNoZSBYTUwgUHJvamVjdC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCjwvQk9EWT4NCjwvSFRNTD4NCg==