PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTkgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgU3RlcFBhdHRlcm4NCjwvVElUTEU+DQo8TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+DQo8L0hFQUQ+DQo8Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+DQoNCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4NCjxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4NCjxUUj4NCjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4NCjxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPg0KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TdGVwUGF0dGVybi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPC9UUj4NCjwvVEFCTEU+DQo8L1REPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+DQo8L0VNPg0KPC9URD4NCjwvVFI+DQoNCjxUUj4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9VbmlvblBhdHRlcm4uaHRtbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsNCiZuYnNwOzxBIEhSRUY9IlN0ZXBQYXR0ZXJuLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5hcGFjaGUueHBhdGgucGF0dGVybnMuTm9kZVRlc3QiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+DQo8SDI+DQo8Rk9OVCBTSVpFPSItMSI+DQpvcmcuYXBhY2hlLnhwYXRoLnBhdHRlcm5zPC9GT05UPg0KPEJSPg0KQ2xhc3MgIFN0ZXBQYXR0ZXJuPC9IMj4NCjxQUkU+DQpqYXZhLmxhbmcuT2JqZWN0DQogIHwNCiAgKy0tPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwiPm9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbjwvQT4NCiAgICAgICAgfA0KICAgICAgICArLS08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwiPm9yZy5hcGFjaGUueHBhdGgucGF0dGVybnMuTm9kZVRlc3Q8L0E+DQogICAgICAgICAgICAgIHwNCiAgICAgICAgICAgICAgKy0tPEI+b3JnLmFwYWNoZS54cGF0aC5wYXR0ZXJucy5TdGVwUGF0dGVybjwvQj4NCjwvUFJFPg0KPERMPg0KPERUPjxCPkRpcmVjdCBLbm93biBTdWJjbGFzc2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvQ29udGV4dE1hdGNoU3RlcFBhdHRlcm4uaHRtbCI+Q29udGV4dE1hdGNoU3RlcFBhdHRlcm48L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL0Z1bmN0aW9uUGF0dGVybi5odG1sIj5GdW5jdGlvblBhdHRlcm48L0E+PC9ERD4NCjwvREw+DQo8SFI+DQo8REw+DQo8RFQ+cHVibGljIGNsYXNzIDxCPlN0ZXBQYXR0ZXJuPC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCI+Tm9kZVRlc3Q8L0E+PERUPmltcGxlbWVudHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL1N1YkNvbnRleHRMaXN0Lmh0bWwiPlN1YkNvbnRleHRMaXN0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uT3duZXIuaHRtbCI+RXhwcmVzc2lvbk93bmVyPC9BPjwvREw+DQoNCjxQPg0KVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2luZ2xlIHBhdHRlcm4gbWF0Y2ggc3RlcC4NCjxQPg0KPERMPg0KPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL3NlcmlhbGl6ZWQtZm9ybS5odG1sI29yZy5hcGFjaGUueHBhdGgucGF0dGVybnMuU3RlcFBhdHRlcm4iPlNlcmlhbGl6ZWQgRm9ybTwvQT48RFQ+PEI+VXNhZ2U6PC9CPjxERD48aT48Zm9udCBzaXplPSItMSIgY29sb3I9IiMwMEZGMDAiPiAqKkZvciBhZHZhbmNlZCB1c2Ugb25seSoqPC9mb250PjwvaT48L0REPgo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPFA+DQo8IS0tID09PT09PT09IElOTkVSIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJmaWVsZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmFwYWNoZS54cGF0aC5wYXR0ZXJucy5Ob2RlVGVzdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+DQo8VEQ+PEI+RmllbGRzIGluaGVyaXRlZCBmcm9tIGNsYXNzIG9yZy5hcGFjaGUueHBhdGgucGF0dGVybnMuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sIj5Ob2RlVGVzdDwvQT48L0I+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjU0NPUkVfTk9ERVRFU1QiPlNDT1JFX05PREVURVNUPC9BPiwgIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX05PTkUiPlNDT1JFX05PTkU8L0E+LCAgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjU0NPUkVfTlNXSUxEIj5TQ09SRV9OU1dJTEQ8L0E+LCAgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjU0NPUkVfT1RIRVIiPlNDT1JFX09USEVSPC9BPiwgIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX1FOQU1FIj5TQ09SRV9RTkFNRTwvQT4sICANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTSE9XX0JZRlVOQ1RJT04iPlNIT1dfQllGVU5DVElPTjwvQT4sICANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTVVBQT1JUU19QUkVfU1RSSVBQSU5HIj5TVVBQT1JUU19QUkVfU1RSSVBQSU5HPC9BPiwgIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1dJTEQiPldJTEQ8L0E+PC9DT0RFPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPg0KPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjU3RlcFBhdHRlcm4oaW50LCBpbnQsIGludCkiPlN0ZXBQYXR0ZXJuPC9BPjwvQj4oaW50Jm5ic3A7d2hhdFRvU2hvdywKICAgICAgICAgICAgaW50Jm5ic3A7YXhpcywKICAgICAgICAgICAgaW50Jm5ic3A7YXhpc0ZvclByZWRpY2F0ZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbnN0cnVjdCBhIFN0ZXBQYXR0ZXJuIHRoYXQgZG9lc24ndCB0ZXN0IGZvciBub2RlIG5hbWVzLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9TdGVwUGF0dGVybi5odG1sI1N0ZXBQYXR0ZXJuKGludCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpIj5TdGVwUGF0dGVybjwvQT48L0I+KGludCZuYnNwO3doYXRUb1Nob3csCiAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lc3BhY2UsCiAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lLAogICAgICAgICAgICBpbnQmbmJzcDtheGlzLAogICAgICAgICAgICBpbnQmbmJzcDtheGlzRm9yUHJlZGljYXRlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uc3RydWN0IGEgU3RlcFBhdHRlcm4gdGhhdCB0ZXN0cyBmb3IgbmFtZXNwYWNlcyBhbmQgbm9kZSBuYW1lcy48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDsNCjwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9TdGVwUGF0dGVybi5odG1sI2NhbGNTY29yZSgpIj5jYWxjU2NvcmU8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTdGF0aWMgY2FsYyBvZiBtYXRjaCBzY29yZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjY2FsY1RhcmdldFN0cmluZygpIj5jYWxjVGFyZ2V0U3RyaW5nPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2FsY3VsYXRlIHRoZSBsb2NhbCBuYW1lIG9yIHBzdWVkbyBuYW1lIG9mIHRoZSBub2RlIHRoYXQgdGhpcyBwYXR0ZXJuIHdpbGwgdGVzdCwKIGZvciBoYXNoIHRhYmxlIGxvb2t1cCBvcHRpbWl6YXRpb24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9TdGVwUGF0dGVybi5odG1sI2NhbGxWaXNpdG9ycyhvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb25Pd25lciwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aFZpc2l0b3IpIj5jYWxsVmlzaXRvcnM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Pd25lci5odG1sIj5FeHByZXNzaW9uT3duZXI8L0E+Jm5ic3A7b3duZXIsCiAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoVmlzaXRvci5odG1sIj5YUGF0aFZpc2l0b3I8L0E+Jm5ic3A7dmlzaXRvcik8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvU3RlcFBhdHRlcm4uaHRtbCNjYW5UcmF2ZXJzZU91dHNpZGVTdWJ0cmVlKCkiPmNhblRyYXZlcnNlT3V0c2lkZVN1YnRyZWU8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZWxsIGlmIHRoaXMgZXhwcmVzc2lvbiBvciBpdCdzIHN1YmV4cHJlc3Npb25zIGNhbiB0cmF2ZXJzZSBvdXRzaWRlCiB0aGUgY3VycmVudCBzdWJ0cmVlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvU3RlcFBhdHRlcm4uaHRtbCNkZWVwRXF1YWxzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbikiPmRlZXBFcXVhbHM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCI+RXhwcmVzc2lvbjwvQT4mbmJzcDtleHByKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvU3RlcFBhdHRlcm4uaHRtbCNleGVjdXRlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+ZXhlY3V0ZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0V4ZWN1dGUgdGhpcyBwYXR0ZXJuIHN0ZXAsIGluY2x1ZGluZyBwcmVkaWNhdGVzLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgaW50KSI+ZXhlY3V0ZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCwKICAgICAgICBpbnQmbmJzcDtjdXJyZW50Tm9kZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0V4ZWN1dGUgdGhpcyBwYXR0ZXJuIHN0ZXAsIGluY2x1ZGluZyBwcmVkaWNhdGVzLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgaW50LCBvcmcuYXBhY2hlLnhtbC5kdG0uRFRNLCBpbnQpIj5leGVjdXRlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0LAogICAgICAgIGludCZuYnNwO2N1cnJlbnROb2RlLAogICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL2R0bS9EVE0uaHRtbCI+RFRNPC9BPiZuYnNwO2R0bSwKICAgICAgICBpbnQmbmJzcDtleHBUeXBlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RXhlY3V0ZSBhbiBleHByZXNzaW9uIGluIHRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQsIGFuZCByZXR1cm4gdGhlCiByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9TdGVwUGF0dGVybi5odG1sI2ZpeHVwVmFyaWFibGVzKGphdmEudXRpbC5WZWN0b3IsIGludCkiPmZpeHVwVmFyaWFibGVzPC9BPjwvQj4oamF2YS51dGlsLlZlY3RvciZuYnNwO3ZhcnMsCiAgICAgICAgICAgICAgIGludCZuYnNwO2dsb2JhbHNTaXplKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpeHVwIHZhcmlhYmxlcyBmcm9tIFFOYW1lcyB0byBzdGFjayBmcmFtZQogaW5kZXhlcyBhdCBzdHlsZXNoZWV0IGJ1aWxkIHRpbWUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0QXhpcygpIj5nZXRBeGlzPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2V0IHRoZSBheGlzIHRoYXQgdGhpcyBzdGVwIGZvbGxvd3MuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sIj5FeHByZXNzaW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0RXhwcmVzc2lvbigpIj5nZXRFeHByZXNzaW9uPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0TGFzdFBvcyhvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmdldExhc3RQb3M8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXQgdGhlIGNvdW50IG9mIHRoZSBub2RlcyB0aGF0IG1hdGNoIHRoZSB0ZXN0LCB3aGljaCBpcyB0aGUgcHJveGltaXR5CiBwb3NpdGlvbiBvZiB0aGUgbGFzdCBub2RlIHRoYXQgY2FuIHBhc3MgdGhpcyB0ZXN0IGluIHRoZSBzdWIgY29udGV4dAogc2VsZWN0aW9uLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtkb3VibGU8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9TdGVwUGF0dGVybi5odG1sI2dldE1hdGNoU2NvcmUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCkiPmdldE1hdGNoU2NvcmU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgICAgaW50Jm5ic3A7Y29udGV4dCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgbWF0Y2ggc2NvcmUgb2YgdGhlIGdpdmVuIG5vZGUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sIj5FeHByZXNzaW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0UHJlZGljYXRlKGludCkiPmdldFByZWRpY2F0ZTwvQT48L0I+KGludCZuYnNwO2kpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXQgYSBwcmVkaWNhdGUgZXhwcmVzc2lvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvU3RlcFBhdHRlcm4uaHRtbCNnZXRQcmVkaWNhdGVDb3VudCgpIj5nZXRQcmVkaWNhdGVDb3VudDwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgbnVtYmVyIG9mIHByZWRpY2F0ZXMgZm9yIHRoaXMgbWF0Y2ggcGF0dGVybiBzdGVwLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCI+RXhwcmVzc2lvbjwvQT5bXTwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0UHJlZGljYXRlcygpIj5nZXRQcmVkaWNhdGVzPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0IHRoZSBsaXN0IG9mIHByZWRpY2F0ZSBleHByZXNzaW9ucyBmb3IgdGhpcyBwYXR0ZXJuIHN0ZXAuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0UHJveGltaXR5UG9zaXRpb24ob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5nZXRQcm94aW1pdHlQb3NpdGlvbjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgcHJveGltaXR5IHBvc2l0aW9uIGluZGV4IG9mIHRoZSBjdXJyZW50IG5vZGUgYmFzZWQgb24gdGhpcwogbm9kZSB0ZXN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwiPlN0ZXBQYXR0ZXJuPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0UmVsYXRpdmVQYXRoUGF0dGVybigpIj5nZXRSZWxhdGl2ZVBhdGhQYXR0ZXJuPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2V0IHRoZSByZWZlcmVuY2UgdG8gbm9kZXRlc3QgYW5kIHByZWRpY2F0ZSBmb3IKIHBhcmVudCBvciBhbmNlc3Rvci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwjZ2V0VGFyZ2V0U3RyaW5nKCkiPmdldFRhcmdldFN0cmluZzwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgbG9jYWwgbmFtZSBvciBwc3VlZG8gbmFtZSBvZiB0aGUgbm9kZSB0aGF0IHRoaXMgcGF0dGVybiB3aWxsIHRlc3QsCiBmb3IgaGFzaCB0YWJsZSBsb29rdXAgb3B0aW1pemF0aW9uLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvU3RlcFBhdHRlcm4uaHRtbCNzZXRBeGlzKGludCkiPnNldEF4aXM8L0E+PC9CPihpbnQmbmJzcDtheGlzKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0IHRoZSBheGlzIHRoYXQgdGhpcyBzdGVwIHNob3VsZCBmb2xsb3cuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9TdGVwUGF0dGVybi5odG1sI3NldEV4cHJlc3Npb24ob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uKSI+c2V0RXhwcmVzc2lvbjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sIj5FeHByZXNzaW9uPC9BPiZuYnNwO2V4cCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvU3RlcFBhdHRlcm4uaHRtbCNzZXRQcmVkaWNhdGVzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbltdKSI+c2V0UHJlZGljYXRlczwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sIj5FeHByZXNzaW9uPC9BPltdJm5ic3A7cHJlZGljYXRlcyk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldCB0aGUgcHJlZGljYXRlcyBmb3IgdGhpcyBtYXRjaCBwYXR0ZXJuIHN0ZXAuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9TdGVwUGF0dGVybi5odG1sI3NldFJlbGF0aXZlUGF0aFBhdHRlcm4ob3JnLmFwYWNoZS54cGF0aC5wYXR0ZXJucy5TdGVwUGF0dGVybikiPnNldFJlbGF0aXZlUGF0aFBhdHRlcm48L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwiPlN0ZXBQYXR0ZXJuPC9BPiZuYnNwO2V4cHIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXQgdGhlIHJlZmVyZW5jZSB0byBub2RldGVzdCBhbmQgcHJlZGljYXRlIGZvcgogcGFyZW50IG9yIGFuY2VzdG9yLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvU3RlcFBhdHRlcm4uaHRtbCN0b1N0cmluZygpIj50b1N0cmluZzwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgc3RyaW5nIHJlcHJlc2VuZW50YXRpb24gb2YgdGhpcyBzdGVwIGZvciBkaWFnbm9zdGljIHB1cnBvc2VzLjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmFwYWNoZS54cGF0aC5wYXR0ZXJucy5Ob2RlVGVzdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+DQo8VEQ+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBvcmcuYXBhY2hlLnhwYXRoLnBhdHRlcm5zLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCI+Tm9kZVRlc3Q8L0E+PC9CPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI2RlYnVnV2hhdFRvU2hvdyhpbnQpIj5kZWJ1Z1doYXRUb1Nob3c8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNnZXREZWZhdWx0U2NvcmUoKSI+Z2V0RGVmYXVsdFNjb3JlPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjZ2V0TG9jYWxOYW1lKCkiPmdldExvY2FsTmFtZTwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI2dldE5hbWVzcGFjZSgpIj5nZXROYW1lc3BhY2U8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNnZXROb2RlVHlwZVRlc3QoaW50KSI+Z2V0Tm9kZVR5cGVUZXN0PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjZ2V0U3RhdGljU2NvcmUoKSI+Z2V0U3RhdGljU2NvcmU8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNnZXRXaGF0VG9TaG93KCkiPmdldFdoYXRUb1Nob3c8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNpbml0Tm9kZVRlc3QoaW50KSI+aW5pdE5vZGVUZXN0PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjaW5pdE5vZGVUZXN0KGludCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPmluaXROb2RlVGVzdDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI3NldExvY2FsTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TG9jYWxOYW1lPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjc2V0TmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj5zZXROYW1lc3BhY2U8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNzZXRTdGF0aWNTY29yZShvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE51bWJlcikiPnNldFN0YXRpY1Njb3JlPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjc2V0V2hhdFRvU2hvdyhpbnQpIj5zZXRXaGF0VG9TaG93PC9BPjwvQ09ERT48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbiI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+DQo8VEQ+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBvcmcuYXBhY2hlLnhwYXRoLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sIj5FeHByZXNzaW9uPC9BPjwvQj48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2FzSXRlcmF0b3Iob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCkiPmFzSXRlcmF0b3I8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2FzSXRlcmF0b3JSYXcob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCkiPmFzSXRlcmF0b3JSYXc8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2FzTm9kZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmFzTm9kZTwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjYXNzZXJ0aW9uKGJvb2xlYW4sIGphdmEubGFuZy5TdHJpbmcpIj5hc3NlcnRpb248L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2Jvb2wob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5ib29sPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNlcnJvcihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdFtdKSI+ZXJyb3I8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4ZWN1dGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGJvb2xlYW4pIj5leGVjdXRlPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNleGVjdXRlQ2hhcnNUb0NvbnRlbnRIYW5kbGVyKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBvcmcueG1sLnNheC5Db250ZW50SGFuZGxlcikiPmV4ZWN1dGVDaGFyc1RvQ29udGVudEhhbmRsZXI8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4cHJBZGRDaGlsZChvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb25Ob2RlLCBpbnQpIj5leHByQWRkQ2hpbGQ8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4cHJHZXRDaGlsZChpbnQpIj5leHByR2V0Q2hpbGQ8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4cHJHZXROdW1DaGlsZHJlbigpIj5leHByR2V0TnVtQ2hpbGRyZW48L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4cHJHZXRQYXJlbnQoKSI+ZXhwckdldFBhcmVudDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwclNldFBhcmVudChvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb25Ob2RlKSI+ZXhwclNldFBhcmVudDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZ2V0Q29sdW1uTnVtYmVyKCkiPmdldENvbHVtbk51bWJlcjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZ2V0RXhwcmVzc2lvbk93bmVyKCkiPmdldEV4cHJlc3Npb25Pd25lcjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZ2V0TGluZU51bWJlcigpIj5nZXRMaW5lTnVtYmVyPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRQdWJsaWNJZCgpIj5nZXRQdWJsaWNJZDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZ2V0U3lzdGVtSWQoKSI+Z2V0U3lzdGVtSWQ8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2lzTm9kZXNldEV4cHIoKSI+aXNOb2Rlc2V0RXhwcjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjaXNTdGFibGVOdW1iZXIoKSI+aXNTdGFibGVOdW1iZXI8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI251bShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPm51bTwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjd2FybihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdFtdKSI+d2FybjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjeHN0cihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPnhzdHI8L0E+PC9DT0RFPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+DQo8VEQ+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+ZXF1YWxzLCANCmdldENsYXNzLCANCmhhc2hDb2RlLCANCm5vdGlmeSwgDQpub3RpZnlBbGwsIA0Kd2FpdCwgDQp3YWl0LCANCndhaXQ8L0NPREU+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7DQo8UD4NCg0KPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iY29uc3RydWN0b3JfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+Q29uc3RydWN0b3IgRGV0YWlsPC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQoNCjxBIE5BTUU9IlN0ZXBQYXR0ZXJuKGludCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpTdGVwUGF0dGVybjwvSDM+DQo8UFJFPg0KcHVibGljIDxCPlN0ZXBQYXR0ZXJuPC9CPihpbnQmbmJzcDt3aGF0VG9TaG93LAogICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lLAogICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7YXhpcywKICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2F4aXNGb3JQcmVkaWNhdGUpPC9QUkU+DQo8REw+DQo8REQ+Q29uc3RydWN0IGEgU3RlcFBhdHRlcm4gdGhhdCB0ZXN0cyBmb3IgbmFtZXNwYWNlcyBhbmQgbm9kZSBuYW1lcy48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT53aGF0VG9TaG93PC9DT0RFPiAtIEJpdCBzZXQgZGVmaW5lZCBtYWlubHkgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVGaWx0ZXIuaHRtbCI+PENPREU+Tm9kZUZpbHRlcjwvQ09ERT48L0E+LjxERD48Q09ERT5uYW1lc3BhY2U8L0NPREU+IC0gVGhlIG5hbWVzcGFjZSB0byBiZSB0ZXN0ZWQuPEREPjxDT0RFPm5hbWU8L0NPREU+IC0gVGhlIGxvY2FsIG5hbWUgdG8gYmUgdGVzdGVkLjxERD48Q09ERT5heGlzPC9DT0RFPiAtIFRoZSBBeGlzIGZvciB0aGlzIHRlc3QsIG9uZSBvZiBvZiBBeGVzLkFOQ0VTVE9ST1JTRUxGLCBldGMuPEREPjxDT0RFPmF4aXNGb3JQcmVkaWNhdGU8L0NPREU+IC0gTm8gbG9uZ2VyIHVzZWQuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJTdGVwUGF0dGVybihpbnQsIGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KU3RlcFBhdHRlcm48L0gzPg0KPFBSRT4NCnB1YmxpYyA8Qj5TdGVwUGF0dGVybjwvQj4oaW50Jm5ic3A7d2hhdFRvU2hvdywKICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2F4aXMsCiAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtheGlzRm9yUHJlZGljYXRlKTwvUFJFPg0KPERMPg0KPEREPkNvbnN0cnVjdCBhIFN0ZXBQYXR0ZXJuIHRoYXQgZG9lc24ndCB0ZXN0IGZvciBub2RlIG5hbWVzLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPndoYXRUb1Nob3c8L0NPREU+IC0gQml0IHNldCBkZWZpbmVkIG1haW5seSBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUZpbHRlci5odG1sIj48Q09ERT5Ob2RlRmlsdGVyPC9DT0RFPjwvQT4uPEREPjxDT0RFPmF4aXM8L0NPREU+IC0gVGhlIEF4aXMgZm9yIHRoaXMgdGVzdCwgb25lIG9mIG9mIEF4ZXMuQU5DRVNUT1JPUlNFTEYsIGV0Yy48REQ+PENPREU+YXhpc0ZvclByZWRpY2F0ZTwvQ09ERT4gLSBObyBsb25nZXIgdXNlZC48L0RMPg0KPC9ERD4NCjwvREw+DQoNCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0iY2FsY1RhcmdldFN0cmluZygpIj48IS0tIC0tPjwvQT48SDM+DQpjYWxjVGFyZ2V0U3RyaW5nPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5jYWxjVGFyZ2V0U3RyaW5nPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+Q2FsY3VsYXRlIHRoZSBsb2NhbCBuYW1lIG9yIHBzdWVkbyBuYW1lIG9mIHRoZSBub2RlIHRoYXQgdGhpcyBwYXR0ZXJuIHdpbGwgdGVzdCwKIGZvciBoYXNoIHRhYmxlIGxvb2t1cCBvcHRpbWl6YXRpb24uPEREPjxETD4NCjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2NvbXBpbGVyL1BzdWVkb05hbWVzLmh0bWwiPjxDT0RFPlBzdWVkb05hbWVzPC9DT0RFPjwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldFRhcmdldFN0cmluZygpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRUYXJnZXRTdHJpbmc8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFRhcmdldFN0cmluZzwvQj4oKTwvUFJFPg0KPERMPg0KPEREPkdldCB0aGUgbG9jYWwgbmFtZSBvciBwc3VlZG8gbmFtZSBvZiB0aGUgbm9kZSB0aGF0IHRoaXMgcGF0dGVybiB3aWxsIHRlc3QsCiBmb3IgaGFzaCB0YWJsZSBsb29rdXAgb3B0aW1pemF0aW9uLjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmxvY2FsIG5hbWUgb3IgcHN1ZWRvIG5hbWUgb2YgdGhlIG5vZGUuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvY29tcGlsZXIvUHN1ZWRvTmFtZXMuaHRtbCI+PENPREU+UHN1ZWRvTmFtZXM8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZml4dXBWYXJpYWJsZXMoamF2YS51dGlsLlZlY3RvciwgaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZml4dXBWYXJpYWJsZXM8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmZpeHVwVmFyaWFibGVzPC9CPihqYXZhLnV0aWwuVmVjdG9yJm5ic3A7dmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7Z2xvYmFsc1NpemUpPC9QUkU+DQo8REw+DQo8REQ+VGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpeHVwIHZhcmlhYmxlcyBmcm9tIFFOYW1lcyB0byBzdGFjayBmcmFtZQogaW5kZXhlcyBhdCBzdHlsZXNoZWV0IGJ1aWxkIHRpbWUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFyczwvQ09ERT4gLSBMaXN0IG9mIFFOYW1lcyB0aGF0IGNvcnJlc3BvbmQgdG8gdmFyaWFibGVzLiAgVGhpcyBsaXN0CiBzaG91bGQgYmUgc2VhcmNoZWQgYmFja3dhcmRzIGZvciB0aGUgZmlyc3QgcXVhbGlmaWVkIG5hbWUgdGhhdAogY29ycmVzcG9uZHMgdG8gdGhlIHZhcmlhYmxlIHJlZmVyZW5jZSBxbmFtZS4gIFRoZSBwb3NpdGlvbiBvZiB0aGUKIFFOYW1lIGluIHRoZSB2ZWN0b3IgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHZlY3RvciB3aWxsIGJlIGl0cyBwb3NpdGlvbgogaW4gdGhlIHN0YWNrIGZyYW1lIChidXQgdmFyaWFibGVzIGFib3ZlIHRoZSBnbG9iYWxzVG9wIHZhbHVlIHdpbGwgbmVlZAogdG8gYmUgb2Zmc2V0IHRvIHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lKS48REQ+PENPREU+Z2xvYmFsc1NpemU8L0NPREU+IC0gVGhlIG51bWJlciBvZiB2YXJpYWJsZXMgaW4gdGhlIGdsb2JhbCB2YXJpYWJsZSBhcmVhLjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjZml4dXBWYXJpYWJsZXMoamF2YS51dGlsLlZlY3RvciwgaW50KSI+Zml4dXBWYXJpYWJsZXM8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCI+Tm9kZVRlc3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRSZWxhdGl2ZVBhdGhQYXR0ZXJuKG9yZy5hcGFjaGUueHBhdGgucGF0dGVybnMuU3RlcFBhdHRlcm4pIj48IS0tIC0tPjwvQT48SDM+DQpzZXRSZWxhdGl2ZVBhdGhQYXR0ZXJuPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRSZWxhdGl2ZVBhdGhQYXR0ZXJuPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwiPlN0ZXBQYXR0ZXJuPC9BPiZuYnNwO2V4cHIpPC9QUkU+DQo8REw+DQo8REQ+U2V0IHRoZSByZWZlcmVuY2UgdG8gbm9kZXRlc3QgYW5kIHByZWRpY2F0ZSBmb3IKIHBhcmVudCBvciBhbmNlc3Rvci48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5leHByPC9DT0RFPiAtIFRoZSByZWxhdGl2ZSBwYXR0ZXJuIGV4cHJlc3Npb24uPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRSZWxhdGl2ZVBhdGhQYXR0ZXJuKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFJlbGF0aXZlUGF0aFBhdHRlcm48L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1N0ZXBQYXR0ZXJuLmh0bWwiPlN0ZXBQYXR0ZXJuPC9BPiA8Qj5nZXRSZWxhdGl2ZVBhdGhQYXR0ZXJuPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSByZWZlcmVuY2UgdG8gbm9kZXRlc3QgYW5kIHByZWRpY2F0ZSBmb3IKIHBhcmVudCBvciBhbmNlc3Rvci48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgcmVsYXRpdmUgcGF0dGVybiBleHByZXNzaW9uLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0UHJlZGljYXRlcygpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRQcmVkaWNhdGVzPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwiPkV4cHJlc3Npb248L0E+W10gPEI+Z2V0UHJlZGljYXRlczwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlNldCB0aGUgbGlzdCBvZiBwcmVkaWNhdGUgZXhwcmVzc2lvbnMgZm9yIHRoaXMgcGF0dGVybiBzdGVwLjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPkxpc3Qgb2YgZXhwcmVzc2lvbiBvYmplY3RzLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iY2FuVHJhdmVyc2VPdXRzaWRlU3VidHJlZSgpIj48IS0tIC0tPjwvQT48SDM+DQpjYW5UcmF2ZXJzZU91dHNpZGVTdWJ0cmVlPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5jYW5UcmF2ZXJzZU91dHNpZGVTdWJ0cmVlPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+VGVsbCBpZiB0aGlzIGV4cHJlc3Npb24gb3IgaXQncyBzdWJleHByZXNzaW9ucyBjYW4gdHJhdmVyc2Ugb3V0c2lkZQogdGhlIGN1cnJlbnQgc3VidHJlZS4KCiBOT1RFOiBBbmNlc3RvcnMgdGVzdHMgd2l0aCBwcmVkaWNhdGVzIGFyZSBwcm9ibGVtYXRpYywgYW5kIHdpbGwgcmVxdWlyZQogc3BlY2lhbCB0cmVhdG1lbnQuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHJ1ZSBpZiB0cmF2ZXJzYWwgb3V0c2lkZSB0aGUgY29udGV4dCBub2RlJ3Mgc3VidHJlZSBjYW4gb2NjdXIuPERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2NhblRyYXZlcnNlT3V0c2lkZVN1YnRyZWUoKSI+Y2FuVHJhdmVyc2VPdXRzaWRlU3VidHJlZTwvQT4gaW4gY2xhc3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwiPkV4cHJlc3Npb248L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRQcmVkaWNhdGUoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0UHJlZGljYXRlPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwiPkV4cHJlc3Npb248L0E+IDxCPmdldFByZWRpY2F0ZTwvQj4oaW50Jm5ic3A7aSk8L1BSRT4NCjxETD4NCjxERD5HZXQgYSBwcmVkaWNhdGUgZXhwcmVzc2lvbi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pPC9DT0RFPiAtIFRoZSBpbmRleCBvZiB0aGUgcHJlZGljYXRlLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSBwcmVkaWNhdGUgZXhwcmVzc2lvbi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldFByZWRpY2F0ZUNvdW50KCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFByZWRpY2F0ZUNvdW50PC9IMz4NCjxQUkU+DQpwdWJsaWMgZmluYWwgaW50IDxCPmdldFByZWRpY2F0ZUNvdW50PC9CPigpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBudW1iZXIgb2YgcHJlZGljYXRlcyBmb3IgdGhpcyBtYXRjaCBwYXR0ZXJuIHN0ZXAuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG51bWJlciBvZiBwcmVkaWNhdGVzIGZvciB0aGlzIG1hdGNoIHBhdHRlcm4gc3RlcC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldFByZWRpY2F0ZXMob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uW10pIj48IS0tIC0tPjwvQT48SDM+DQpzZXRQcmVkaWNhdGVzPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRQcmVkaWNhdGVzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCI+RXhwcmVzc2lvbjwvQT5bXSZuYnNwO3ByZWRpY2F0ZXMpPC9QUkU+DQo8REw+DQo8REQ+U2V0IHRoZSBwcmVkaWNhdGVzIGZvciB0aGlzIG1hdGNoIHBhdHRlcm4gc3RlcC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wcmVkaWNhdGVzPC9DT0RFPiAtIEFuIGFycmF5IG9mIGV4cHJlc3Npb25zIHRoYXQgZGVmaW5lIHByZWRpY2F0ZXMKICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHN0ZXAuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJjYWxjU2NvcmUoKSI+PCEtLSAtLT48L0E+PEgzPg0KY2FsY1Njb3JlPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5jYWxjU2NvcmU8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5TdGF0aWMgY2FsYyBvZiBtYXRjaCBzY29yZS48REQ+PERMPg0KPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJleGVjdXRlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpleGVjdXRlPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT4gPEI+ZXhlY3V0ZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0LAogICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2N1cnJlbnROb2RlKQogICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+RXhlY3V0ZSB0aGlzIHBhdHRlcm4gc3RlcCwgaW5jbHVkaW5nIHByZWRpY2F0ZXMuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eGN0eHQ8L0NPREU+IC0gWFBhdGggcnVudGltZSBjb250ZXh0LjxERD48Q09ERT5jdXJyZW50Tm9kZTwvQ09ERT4gLSBUaGUgY3VycmVudCBub2RlIGNvbnRleHQuPERUPjxCPlJldHVybnM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjU0NPUkVfTk9ERVRFU1QiPjxDT0RFPk5vZGVUZXN0LlNDT1JFX05PREVURVNUPC9DT0RFPjwvQT4sCiAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTQ09SRV9OT05FIj48Q09ERT5Ob2RlVGVzdC5TQ09SRV9OT05FPC9DT0RFPjwvQT4sCiAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTQ09SRV9OU1dJTEQiPjxDT0RFPk5vZGVUZXN0LlNDT1JFX05TV0lMRDwvQ09ERT48L0E+LAogICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjU0NPUkVfUU5BTUUiPjxDT0RFPk5vZGVUZXN0LlNDT1JFX1FOQU1FPC9DT0RFPjwvQT4sIG9yCiAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTQ09SRV9PVEhFUiI+PENPREU+Tm9kZVRlc3QuU0NPUkVfT1RIRVI8L0NPREU+PC9BPi48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI2V4ZWN1dGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCkiPmV4ZWN1dGU8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCI+Tm9kZVRlc3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJleGVjdXRlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPg0KZXhlY3V0ZTwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+IDxCPmV4ZWN1dGU8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCkKICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkV4ZWN1dGUgdGhpcyBwYXR0ZXJuIHN0ZXAsIGluY2x1ZGluZyBwcmVkaWNhdGVzLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhjdHh0PC9DT0RFPiAtIFhQYXRoIHJ1bnRpbWUgY29udGV4dC48RFQ+PEI+UmV0dXJuczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTQ09SRV9OT0RFVEVTVCI+PENPREU+Tm9kZVRlc3QuU0NPUkVfTk9ERVRFU1Q8L0NPREU+PC9BPiwKICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX05PTkUiPjxDT0RFPk5vZGVUZXN0LlNDT1JFX05PTkU8L0NPREU+PC9BPiwKICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX05TV0lMRCI+PENPREU+Tm9kZVRlc3QuU0NPUkVfTlNXSUxEPC9DT0RFPjwvQT4sCiAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTQ09SRV9RTkFNRSI+PENPREU+Tm9kZVRlc3QuU0NPUkVfUU5BTUU8L0NPREU+PC9BPiwgb3IKICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX09USEVSIj48Q09ERT5Ob2RlVGVzdC5TQ09SRV9PVEhFUjwvQ09ERT48L0E+LjxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiAtICZuYnNwOzxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmV4ZWN1dGU8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCI+Tm9kZVRlc3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJleGVjdXRlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQsIG9yZy5hcGFjaGUueG1sLmR0bS5EVE0sIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmV4ZWN1dGU8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPiA8Qj5leGVjdXRlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7Y3VycmVudE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvZHRtL0RUTS5odG1sIj5EVE08L0E+Jm5ic3A7ZHRtLAogICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2V4cFR5cGUpCiAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5FeGVjdXRlIGFuIGV4cHJlc3Npb24gaW4gdGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dCwgYW5kIHJldHVybiB0aGUKIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT54Y3R4dDwvQ09ERT4gLSBUaGUgWFBhdGggcnVudGltZSBjb250ZXh0LjxERD48Q09ERT5jdXJyZW50Tm9kZTwvQ09ERT4gLSBUaGUgY3VycmVudE5vZGUuPEREPjxDT0RFPmR0bTwvQ09ERT4gLSBUaGUgRFRNIG9mIHRoZSBjdXJyZW50IG5vZGUuPEREPjxDT0RFPmV4cFR5cGU8L0NPREU+IC0gVGhlIGV4cGFuZGVkIHR5cGUgSUQgb2YgdGhlIGN1cnJlbnQgbm9kZS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24gaW4gdGhlIGZvcm0gb2YgYSA8Y29kZT5YT2JqZWN0PC9jb2RlPi48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSBpZiBhIHJ1bnRpbWUgZXhjZXB0aW9uCiAgICAgICAgIG9jY3Vycy48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI2V4ZWN1dGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCwgb3JnLmFwYWNoZS54bWwuZHRtLkRUTSwgaW50KSI+ZXhlY3V0ZTwvQT4gaW4gY2xhc3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sIj5Ob2RlVGVzdDwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldFByb3hpbWl0eVBvc2l0aW9uKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0UHJveGltaXR5UG9zaXRpb248L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+Z2V0UHJveGltaXR5UG9zaXRpb248L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCk8L1BSRT4NCjxETD4NCjxERD5HZXQgdGhlIHByb3hpbWl0eSBwb3NpdGlvbiBpbmRleCBvZiB0aGUgY3VycmVudCBub2RlIGJhc2VkIG9uIHRoaXMKIG5vZGUgdGVzdC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvU3ViQ29udGV4dExpc3QuaHRtbCNnZXRQcm94aW1pdHlQb3NpdGlvbihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmdldFByb3hpbWl0eVBvc2l0aW9uPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL1N1YkNvbnRleHRMaXN0Lmh0bWwiPlN1YkNvbnRleHRMaXN0PC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eGN0eHQ8L0NPREU+IC0gWFBhdGggcnVudGltZSBjb250ZXh0LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHByb3hpbWl0eSBwb3NpdGlvbiBpbmRleCBvZiB0aGUgY3VycmVudCBub2RlIGJhc2VkIG9uIHRoZQogICAgICAgICBub2RlIHRlc3QuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRMYXN0UG9zKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0TGFzdFBvczwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5nZXRMYXN0UG9zPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBjb3VudCBvZiB0aGUgbm9kZXMgdGhhdCBtYXRjaCB0aGUgdGVzdCwgd2hpY2ggaXMgdGhlIHByb3hpbWl0eQogcG9zaXRpb24gb2YgdGhlIGxhc3Qgbm9kZSB0aGF0IGNhbiBwYXNzIHRoaXMgdGVzdCBpbiB0aGUgc3ViIGNvbnRleHQKIHNlbGVjdGlvbi4gIEluIFhTTFQgMS1iYXNlZCBpbmRleGluZywgdGhpcyBjb3VudCBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QKIG5vZGUuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL1N1YkNvbnRleHRMaXN0Lmh0bWwjZ2V0TGFzdFBvcyhvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmdldExhc3RQb3M8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvU3ViQ29udGV4dExpc3QuaHRtbCI+U3ViQ29udGV4dExpc3Q8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT54Y3R4dDwvQ09ERT4gLSBYUGF0aCBydW50aW1lIGNvbnRleHQuPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgY291bnQgb2YgdGhlIG5vZGVzIHRoYXQgbWF0Y2ggdGhlIHRlc3QuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJ0b1N0cmluZygpIj48IS0tIC0tPjwvQT48SDM+DQp0b1N0cmluZzwvSDM+DQo8UFJFPg0KcHVibGljIGphdmEubGFuZy5TdHJpbmcgPEI+dG9TdHJpbmc8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5HZXQgdGhlIHN0cmluZyByZXByZXNlbmVudGF0aW9uIG9mIHRoaXMgc3RlcCBmb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5BIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHN0ZXAsIGJ1aWx0IGJ5IHJldmVyc2UtZW5naW5lZXJpbmcgCiB0aGUgY29udGFpbmVkIGluZm8uPERUPjxCPk92ZXJyaWRlczo8L0I+PEREPnRvU3RyaW5nIGluIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldE1hdGNoU2NvcmUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldE1hdGNoU2NvcmU8L0gzPg0KPFBSRT4NCnB1YmxpYyBkb3VibGUgPEI+Z2V0TWF0Y2hTY29yZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7Y29udGV4dCkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBtYXRjaCBzY29yZSBvZiB0aGUgZ2l2ZW4gbm9kZS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT54Y3R4dDwvQ09ERT4gLSBUaGUgWFBhdGggcnVudGltZSBjb250ZXh0LjxERD48Q09ERT5jb250ZXh0PC9DT0RFPiAtIFRoZSBub2RlIHRvIGJlIHRlc3RlZC48RFQ+PEI+UmV0dXJuczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTQ09SRV9OT0RFVEVTVCI+PENPREU+Tm9kZVRlc3QuU0NPUkVfTk9ERVRFU1Q8L0NPREU+PC9BPiwKICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX05PTkUiPjxDT0RFPk5vZGVUZXN0LlNDT1JFX05PTkU8L0NPREU+PC9BPiwKICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX05TV0lMRCI+PENPREU+Tm9kZVRlc3QuU0NPUkVfTlNXSUxEPC9DT0RFPjwvQT4sCiAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNTQ09SRV9RTkFNRSI+PENPREU+Tm9kZVRlc3QuU0NPUkVfUU5BTUU8L0NPREU+PC9BPiwgb3IKICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sI1NDT1JFX09USEVSIj48Q09ERT5Ob2RlVGVzdC5TQ09SRV9PVEhFUjwvQ09ERT48L0E+LjxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiAtICZuYnNwOzwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic2V0QXhpcyhpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpzZXRBeGlzPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRBeGlzPC9CPihpbnQmbmJzcDtheGlzKTwvUFJFPg0KPERMPg0KPEREPlNldCB0aGUgYXhpcyB0aGF0IHRoaXMgc3RlcCBzaG91bGQgZm9sbG93LjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmF4aXM8L0NPREU+IC0gVGhlIEF4aXMgZm9yIHRoaXMgdGVzdCwgb25lIG9mIG9mIEF4ZXMuQU5DRVNUT1JPUlNFTEYsIGV0Yy48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldEF4aXMoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0QXhpczwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5nZXRBeGlzPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBheGlzIHRoYXQgdGhpcyBzdGVwIGZvbGxvd3MuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIEF4aXMgZm9yIHRoaXMgdGVzdCwgb25lIG9mIG9mIEF4ZXMuQU5DRVNUT1JPUlNFTEYsIGV0Yy48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImNhbGxWaXNpdG9ycyhvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb25Pd25lciwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aFZpc2l0b3IpIj48IS0tIC0tPjwvQT48SDM+DQpjYWxsVmlzaXRvcnM8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmNhbGxWaXNpdG9yczwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uT3duZXIuaHRtbCI+RXhwcmVzc2lvbk93bmVyPC9BPiZuYnNwO293bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aFZpc2l0b3IuaHRtbCI+WFBhdGhWaXNpdG9yPC9BPiZuYnNwO3Zpc2l0b3IpPC9QUkU+DQo8REw+DQo8REQ+PERMPg0KPERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvTm9kZVRlc3QuaHRtbCNjYWxsVmlzaXRvcnMob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uT3duZXIsIG9yZy5hcGFjaGUueHBhdGguWFBhdGhWaXNpdG9yKSI+Y2FsbFZpc2l0b3JzPC9BPiBpbiBjbGFzcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwiPk5vZGVUZXN0PC9BPjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoVmlzaXRhYmxlLmh0bWwjY2FsbFZpc2l0b3JzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbk93bmVyLCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoVmlzaXRvcikiPjxDT0RFPlhQYXRoVmlzaXRhYmxlLmNhbGxWaXNpdG9ycyhFeHByZXNzaW9uT3duZXIsIFhQYXRoVmlzaXRvcik8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0RXhwcmVzc2lvbigpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRFeHByZXNzaW9uPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwiPkV4cHJlc3Npb248L0E+IDxCPmdldEV4cHJlc3Npb248L0I+KCk8L1BSRT4NCjxETD4NCjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk93bmVyLmh0bWwjZ2V0RXhwcmVzc2lvbigpIj5nZXRFeHByZXNzaW9uPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uT3duZXIuaHRtbCI+RXhwcmVzc2lvbk93bmVyPC9BPjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Pd25lci5odG1sI2dldEV4cHJlc3Npb24oKSI+PENPREU+RXhwcmVzc2lvbk93bmVyLmdldEV4cHJlc3Npb24oKTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRFeHByZXNzaW9uKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbikiPjwhLS0gLS0+PC9BPjxIMz4NCnNldEV4cHJlc3Npb248L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnNldEV4cHJlc3Npb248L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sIj5FeHByZXNzaW9uPC9BPiZuYnNwO2V4cCk8L1BSRT4NCjxETD4NCjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk93bmVyLmh0bWwjc2V0RXhwcmVzc2lvbihvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb24pIj5zZXRFeHByZXNzaW9uPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uT3duZXIuaHRtbCI+RXhwcmVzc2lvbk93bmVyPC9BPjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Pd25lci5odG1sI3NldEV4cHJlc3Npb24ob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uKSI+PENPREU+RXhwcmVzc2lvbk93bmVyLnNldEV4cHJlc3Npb24oRXhwcmVzc2lvbik8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZGVlcEVxdWFscyhvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb24pIj48IS0tIC0tPjwvQT48SDM+DQpkZWVwRXF1YWxzPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5kZWVwRXF1YWxzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCI+RXhwcmVzc2lvbjwvQT4mbmJzcDtleHByKTwvUFJFPg0KPERMPg0KPEREPjxETD4NCjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwjZGVlcEVxdWFscyhvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb24pIj5kZWVwRXF1YWxzPC9BPiBpbiBjbGFzcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwiPk5vZGVUZXN0PC9BPjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNkZWVwRXF1YWxzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbikiPjxDT0RFPkV4cHJlc3Npb24uZGVlcEVxdWFscyhFeHByZXNzaW9uKTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPg0KPEhSPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU3RlcFBhdHRlcm4uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9wYXR0ZXJucy9Ob2RlVGVzdC5odG1sIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsNCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcGF0dGVybnMvVW5pb25QYXR0ZXJuLmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7DQombmJzcDs8QSBIUkVGPSJTdGVwUGF0dGVybi5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCiAgU1VNTUFSWTogJm5ic3A7SU5ORVImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuYXBhY2hlLnhwYXRoLnBhdHRlcm5zLk5vZGVUZXN0Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KREVUQUlMOiAmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4NCg0KPEhSPg0KQ29weXJpZ2h0IKkgMjAwNiBBcGFjaGUgWE1MIFByb2plY3QuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo8L0JPRFk+DQo8L0hUTUw+DQo=