PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KCjwhLS0KTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQpvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQp0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCiJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLApzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgoiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCnNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKdW5kZXIgdGhlIExpY2Vuc2UuCi0tPgo8cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+ICAKICA8Z3JvdXBJZD5ucGFuZGF5PC9ncm91cElkPiAgCiAgPGFydGlmYWN0SWQ+bnBhbmRheS1wcm9qZWN0PC9hcnRpZmFjdElkPiAgCiAgPHBhY2thZ2luZz5wb208L3BhY2thZ2luZz4gIAogIDx2ZXJzaW9uPjEuMC4yPC92ZXJzaW9uPiAgCiAgPG5hbWU+bnBhbmRheS1wcm9qZWN0PC9uYW1lPiAgCiAgPG1haWxpbmdMaXN0cz4gCiAgICA8bWFpbGluZ0xpc3Q+IAogICAgICA8bmFtZT5OUGFuZGF5IERldiBMaXN0PC9uYW1lPiAgCiAgICAgIDxwb3N0Pm5wYW5kYXlAZGlzY3Vzc2lvbnMuY29kZXBsZXguY29tPC9wb3N0PiAgCiAgICAgIDxvdGhlckFyY2hpdmVzPiAKICAgICAgICA8b3RoZXJBcmNoaXZlPmh0dHA6Ly9uMi5uYWJibGUuY29tL05QYW5kYXktRGlzY3Vzc2lvbnMtZjE2NTcxMzEuaHRtbDwvb3RoZXJBcmNoaXZlPiAKICAgICAgPC9vdGhlckFyY2hpdmVzPiAKICAgIDwvbWFpbGluZ0xpc3Q+ICAKICA8L21haWxpbmdMaXN0cz4gIAogIDxzY20+IAogICAgPHVybD5odHRwczovL25wYW5kYXkuc3ZuLmNvZGVwbGV4LmNvbS9zdm4vPC91cmw+ICAKICAgIDxjb25uZWN0aW9uPnNjbTpzdm46aHR0cHM6Ly9ucGFuZGF5LnN2bi5jb2RlcGxleC5jb20vc3ZuLzwvY29ubmVjdGlvbj4gIAogICAgPGRldmVsb3BlckNvbm5lY3Rpb24+c2NtOnN2bjpodHRwczovL25wYW5kYXkuc3ZuLmNvZGVwbGV4LmNvbS9zdm4vPC9kZXZlbG9wZXJDb25uZWN0aW9uPiAgCiAgICA8dGFnPlJFTF8wXzlfU05BUFNIT1Q8L3RhZz4gCiAgPC9zY20+ICAKICA8b3JnYW5pemF0aW9uPiAKICAgIDxuYW1lPk5QYW5kYXk8L25hbWU+ICAKICAgIDx1cmw+aHR0cDovL2NvZGVwbGV4LmNvbS9ucGFuZGF5PC91cmw+IAogIDwvb3JnYW5pemF0aW9uPiAgCiAgPGlzc3VlTWFuYWdlbWVudD4gCiAgICA8c3lzdGVtPkNvZGVwbGV4IElzc3VlIFRyYWNrZXI8L3N5c3RlbT4gIAogICAgPHVybD5odHRwOi8vd3d3LmNvZGVwbGV4LmNvbS9ucGFuZGF5L1dvcmtJdGVtL0xpc3QuYXNweDwvdXJsPiAKICA8L2lzc3VlTWFuYWdlbWVudD4gIAogIDxsaWNlbnNlcz4gCiAgICA8bGljZW5zZT4gCiAgICAgIDxuYW1lPkFwYWNoZSAyLjA8L25hbWU+ICAKICAgICAgPHVybD5MSUNFTlNFLnR4dDwvdXJsPiAKICAgIDwvbGljZW5zZT4gCiAgPC9saWNlbnNlcz4gIAogIDxkZXZlbG9wZXJzPiAKICAgIDxkZXZlbG9wZXI+IAogICAgICA8bmFtZT5CcmV0dCBQb3J0ZXI8L25hbWU+ICAKICAgICAgPGlkPmJyZXR0cG9ydGVyPC9pZD4gIAogICAgICA8ZW1haWw+YnJldHRAYXBhY2hlLm9yZzwvZW1haWw+ICAKICAgICAgPHJvbGVzPiAKICAgICAgICA8cm9sZT5jb29yZGluYXRvcjwvcm9sZT4gIAogICAgICA8L3JvbGVzPiAKICAgIDwvZGV2ZWxvcGVyPiAgCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+TWVsdmluIFNlbWJyYW5vPC9uYW1lPiAgCiAgICAgIDxpZD5tZWx2aW5zZW1icmFubzwvaWQ+ICAKICAgICAgPGVtYWlsPm1lbHZpbnNlbWJyYW5vQGdtYWlsLmNvbTwvZW1haWw+ICAKICAgICAgPHJvbGVzPiAKICAgICAgICA8cm9sZT5jb29yZGluYXRvcjwvcm9sZT4gIAogICAgICA8L3JvbGVzPiAKICAgIDwvZGV2ZWxvcGVyPiAgCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+TGVvcG9sZG8gQWdkZXBwYTwvbmFtZT4gIAogICAgICA8aWQ+bGFnZGVwcGE8L2lkPiAgCiAgICAgIDxlbWFpbD5sYWdkZXBwYUBleGlzdC5jb208L2VtYWlsPiAgCiAgICAgIDxyb2xlcz4gCiAgICAgICAgPHJvbGU+ZGV2ZWxvcGVyPC9yb2xlPiAgCiAgICAgIDwvcm9sZXM+IAogICAgPC9kZXZlbG9wZXI+ICAKICAgIDxkZXZlbG9wZXI+IAogICAgICA8bmFtZT5KYW4gQW5jYWphczwvbmFtZT4gIAogICAgICA8aWQ+amFuY2FqYXM8L2lkPiAgCiAgICAgIDxlbWFpbD5qYW5jYWphc0BleGlzdC5jb208L2VtYWlsPiAgCiAgICAgIDxyb2xlcz4gCiAgICAgICAgPHJvbGU+ZGV2ZWxvcGVyPC9yb2xlPiAgCiAgICAgIDwvcm9sZXM+IAogICAgPC9kZXZlbG9wZXI+ICAKICAgIDxkZXZlbG9wZXI+IAogICAgICA8bmFtZT5Kb2UgT2NhYmE8L25hbWU+ICAKICAgICAgPGlkPmpvY2FiYTwvaWQ+ICAKICAgICAgPGVtYWlsPmpvY2FiYUBleGlzdC5jb208L2VtYWlsPiAgCiAgICAgIDxyb2xlcz4gCiAgICAgICAgPHJvbGU+ZGV2ZWxvcGVyPC9yb2xlPiAgCiAgICAgIDwvcm9sZXM+IAogICAgPC9kZXZlbG9wZXI+ICAKICAgIDxkZXZlbG9wZXI+IAogICAgICA8bmFtZT5TaGVpbiBFcm5hY2lvPC9uYW1lPiAgCiAgICAgIDxpZD5zZXJuYWNpbzwvaWQ+ICAKICAgICAgPGVtYWlsPnNlcm5hY2lvQGV4aXN0LmNvbTwvZW1haWw+ICAKICAgICAgPHJvbGVzPiAKICAgICAgICA8cm9sZT5kZXZlbG9wZXI8L3JvbGU+ICAKICAgICAgPC9yb2xlcz4gCiAgICA8L2RldmVsb3Blcj4gIAogICAgPGRldmVsb3Blcj4gCiAgICAgIDxuYW1lPkPpZHJpYzwvbmFtZT4gIAogICAgICA8aWQ+bWltaWw8L2lkPiAgCiAgICAgIDxyb2xlcz4gCiAgICAgICAgPHJvbGU+ZGV2ZWxvcGVyPC9yb2xlPiAgCiAgICAgIDwvcm9sZXM+IAogICAgPC9kZXZlbG9wZXI+ICAKICAgIDxkZXZlbG9wZXI+IAogICAgICA8bmFtZT5NYXJpY29yIEJhY2xheTwvbmFtZT4gIAogICAgICA8aWQ+bWJhY2xheTwvaWQ+ICAKICAgICAgPGVtYWlsPm1iYWNsYXlAZXhpc3QuY29tPC9lbWFpbD4gIAogICAgICA8cm9sZXM+IAogICAgICAgIDxyb2xlPlFBPC9yb2xlPiAgCiAgICAgIDwvcm9sZXM+IAogICAgPC9kZXZlbG9wZXI+ICAKICAgIDwhLS1FbWVyaXR1cyBDb21taXR0ZXJzLS0+CiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+U2hhbmUgSXNiZWxsPC9uYW1lPiAgCiAgICAgIDxpZD5zaXNiZWxsPC9pZD4gIAogICAgICA8ZW1haWw+c2lzYmVsbEBhcGFjaGUub3JnPC9lbWFpbD4gIAogICAgICA8dXJsPmh0dHA6Ly9qcm9sbGVyLmNvbS9wYWdlL3JhbmRvbTc8L3VybD4gIAogICAgPC9kZXZlbG9wZXI+ICAgICAgCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+RXZhbiBXb3JsZXk8L25hbWU+ICAKICAgICAgPGlkPmV3b3JsZXk8L2lkPiAgCiAgICAgIDxlbWFpbD5ld29ybGV5QGFwYWNoZS5vcmc8L2VtYWlsPiAgCiAgICA8L2RldmVsb3Blcj4gICAgICAgIAogICAgPCEtLUVtZXJpdHVzIENvbW1pdHRlcnMtLT4KICA8L2RldmVsb3BlcnM+ICAKICA8bW9kdWxlcz4gCiAgICA8bW9kdWxlPmNvbXBvbmVudHM8L21vZHVsZT4gIAogICAgPG1vZHVsZT5hcmNoZXR5cGVzPC9tb2R1bGU+ICAKICAgIDxtb2R1bGU+cGx1Z2luczwvbW9kdWxlPiAgCiAgPC9tb2R1bGVzPiAgCiAgPHJlcG9zaXRvcmllcz4gCiAgICA8cmVwb3NpdG9yeT4gCiAgICAgIDxpZD5hcGFjaGUub3JnPC9pZD4gIAogICAgICA8bmFtZT5NYXZlbiBTbmFwc2hvdHM8L25hbWU+ICAKICAgICAgPHVybD5odHRwOi8vcGVvcGxlLmFwYWNoZS5vcmcvcmVwby9tMi1zbmFwc2hvdC1yZXBvc2l0b3J5PC91cmw+ICAKICAgICAgPHJlbGVhc2VzPiAKICAgICAgICA8ZW5hYmxlZD5mYWxzZTwvZW5hYmxlZD4gCiAgICAgIDwvcmVsZWFzZXM+ICAKICAgICAgPHNuYXBzaG90cz4gCiAgICAgICAgPGVuYWJsZWQ+dHJ1ZTwvZW5hYmxlZD4gCiAgICAgIDwvc25hcHNob3RzPiAKICAgIDwvcmVwb3NpdG9yeT4gIAogICAgPHJlcG9zaXRvcnk+IAogICAgICA8aWQ+Y29kZWhhdXMtc25hcHNob3QtcmVwbzwvaWQ+ICAKICAgICAgPG5hbWU+Q29kZWhhdXMgU25hcHNob3QgUmVwbzwvbmFtZT4gIAogICAgICA8dXJsPmh0dHA6Ly9zbmFwc2hvdHMucmVwb3NpdG9yeS5jb2RlaGF1cy5vcmc8L3VybD4gIAogICAgICA8cmVsZWFzZXM+IAogICAgICAgIDxlbmFibGVkPmZhbHNlPC9lbmFibGVkPiAKICAgICAgPC9yZWxlYXNlcz4gCiAgICA8L3JlcG9zaXRvcnk+IAogIDwvcmVwb3NpdG9yaWVzPiAgCiAgPGJ1aWxkPiAKICAgIDxleHRlbnNpb25zPiAKICAgICAgPGV4dGVuc2lvbj4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi53YWdvbjwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPndhZ29uLXNzaC1leHRlcm5hbDwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPjEuMC1iZXRhLTI8L3ZlcnNpb24+IAogICAgICA8L2V4dGVuc2lvbj4gIAogICAgICA8ZXh0ZW5zaW9uPiAKICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLndhZ29uPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+d2Fnb24td2ViZGF2PC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+MS4wLWJldGEtMjwvdmVyc2lvbj4gCiAgICAgIDwvZXh0ZW5zaW9uPiAKICAgIDwvZXh0ZW5zaW9ucz4gIAogICAgPHBsdWdpbnM+IAogICAgICA8cGx1Z2luPiAKICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1qYXZhZG9jLXBsdWdpbjwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDxjb25maWd1cmF0aW9uPiAKICAgICAgICAgIDxhZ2dyZWdhdGU+dHJ1ZTwvYWdncmVnYXRlPiAKICAgICAgICA8L2NvbmZpZ3VyYXRpb24+IAogICAgICA8L3BsdWdpbj4gIAogICAgICA8cGx1Z2luPiAKICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hc3NlbWJseS1wbHVnaW48L2FydGlmYWN0SWQ+ICAKICAgICAgICA8aW5oZXJpdGVkPmZhbHNlPC9pbmhlcml0ZWQ+ICAKICAgICAgICA8Y29uZmlndXJhdGlvbj4gCiAgICAgICAgICA8ZGVzY3JpcHRvcj5zcmMvYXNzZW1ibHkvc3JjLnhtbDwvZGVzY3JpcHRvcj4gIAogICAgICAgICAgPG91dHB1dERpcmVjdG9yeT50YXJnZXQ8L291dHB1dERpcmVjdG9yeT4gCiAgICAgICAgICA8ZmluYWxOYW1lPm5wYW5kYXk8L2ZpbmFsTmFtZT4KICAgICAgICA8L2NvbmZpZ3VyYXRpb24+IAogICAgICAgIDxleGVjdXRpb25zPiAKICAgICAgICAgIDxleGVjdXRpb24+IAogICAgICAgICAgICA8aWQ+bWFrZS1hc3NlbWJseTwvaWQ+ICAKICAgICAgICAgICAgPHBoYXNlPnBhY2thZ2U8L3BoYXNlPiAgCiAgICAgICAgICAgIDxnb2Fscz4gCiAgICAgICAgICAgICAgPGdvYWw+c2luZ2xlPC9nb2FsPiAKICAgICAgICAgICAgPC9nb2Fscz4gCiAgICAgICAgICA8L2V4ZWN1dGlvbj4gCiAgICAgICAgPC9leGVjdXRpb25zPiAKICAgICAgPC9wbHVnaW4+ICAKICAgICAgPHBsdWdpbj4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPiAgCiAgICAgICAgPGNvbmZpZ3VyYXRpb24+IAogICAgICAgICAgPHNvdXJjZT4xLjU8L3NvdXJjZT4gIAogICAgICAgICAgPHRhcmdldD4xLjU8L3RhcmdldD4gCiAgICAgICAgPC9jb25maWd1cmF0aW9uPiAKICAgICAgPC9wbHVnaW4+IAogICAgPC9wbHVnaW5zPiAgCiAgICA8cGx1Z2luTWFuYWdlbWVudD4gCiAgICAgIDxwbHVnaW5zPiAKICAgICAgICA8cGx1Z2luPiAKICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5tb2RlbGxvPC9ncm91cElkPiAgCiAgICAgICAgICA8YXJ0aWZhY3RJZD5tb2RlbGxvLW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4gIAogICAgICAgICAgPHZlcnNpb24+MS4wLWFscGhhLTEzPC92ZXJzaW9uPiAgCiAgICAgICAgICA8ZXhlY3V0aW9ucz4gCiAgICAgICAgICAgIDxleGVjdXRpb24+IAogICAgICAgICAgICAgIDxnb2Fscz4gCiAgICAgICAgICAgICAgICA8Z29hbD54cHAzLXJlYWRlcjwvZ29hbD4gIAogICAgICAgICAgICAgICAgPGdvYWw+amF2YTwvZ29hbD4gCiAgICAgICAgICAgICAgPC9nb2Fscz4gCiAgICAgICAgICAgIDwvZXhlY3V0aW9uPiAgCiAgICAgICAgICAgIDxleGVjdXRpb24+IAogICAgICAgICAgICAgIDxpZD5zaXRlPC9pZD4gIAogICAgICAgICAgICAgIDxwaGFzZT5wcmUtc2l0ZTwvcGhhc2U+ICAKICAgICAgICAgICAgICA8Z29hbHM+IAogICAgICAgICAgICAgICAgPGdvYWw+eGRvYzwvZ29hbD4gCiAgICAgICAgICAgICAgPC9nb2Fscz4gCiAgICAgICAgICAgIDwvZXhlY3V0aW9uPiAKICAgICAgICAgIDwvZXhlY3V0aW9ucz4gCiAgICAgICAgPC9wbHVnaW4+IAogICAgICA8L3BsdWdpbnM+IAogICAgPC9wbHVnaW5NYW5hZ2VtZW50PiAKICA8L2J1aWxkPiAgCiAgPGRlcGVuZGVuY2llcz4gCiAgICA8ZGVwZW5kZW5jeT4gCiAgICAgIDxncm91cElkPm9yZy5lYXN5bW9jazwvZ3JvdXBJZD4gIAogICAgICA8YXJ0aWZhY3RJZD5lYXN5bW9jazwvYXJ0aWZhY3RJZD4gIAogICAgICA8dmVyc2lvbj4yLjA8L3ZlcnNpb24+ICAKICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPiAKICAgIDwvZGVwZW5kZW5jeT4gIAogICAgPGRlcGVuZGVuY3k+IAogICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4gIAogICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4gIAogICAgICA8dmVyc2lvbj4zLjguMTwvdmVyc2lvbj4gIAogICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+IAogICAgPC9kZXBlbmRlbmN5PiAKICA8L2RlcGVuZGVuY2llcz4gIAogIDxwcm9wZXJ0aWVzPiAKICAgIDxtYXZlblZlcnNpb24+Mi4wLjk8L21hdmVuVmVyc2lvbj4gIAogICAgPGpldHR5VmVyc2lvbj42LjEuNTwvamV0dHlWZXJzaW9uPiAgCiAgICA8eGZpcmVWZXJzaW9uPjEuMi41PC94ZmlyZVZlcnNpb24+IAogIDwvcHJvcGVydGllcz4gIAogIDxkZXBlbmRlbmN5TWFuYWdlbWVudD4gCiAgICA8ZGVwZW5kZW5jaWVzPiAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW48L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1wcm9qZWN0PC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+JHttYXZlblZlcnNpb259PC92ZXJzaW9uPiAKICAgICAgPC9kZXBlbmRlbmN5PiAgCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY29yZTwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7bWF2ZW5WZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbjwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWFydGlmYWN0PC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+JHttYXZlblZlcnNpb259PC92ZXJzaW9uPiAKICAgICAgPC9kZXBlbmRlbmN5PiAgCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tcGx1Z2luLWFwaTwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7bWF2ZW5WZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLnhmaXJlPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+eGZpcmUtcGxleHVzPC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+JHt4ZmlyZVZlcnNpb259PC92ZXJzaW9uPiAKICAgICAgPC9kZXBlbmRlbmN5PiAgCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMueGZpcmU8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD54ZmlyZS1qYXZhNTwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7eGZpcmVWZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLm1vcnRiYXkuamV0dHk8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5qZXR0eTwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7amV0dHlWZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLm1vcnRiYXkuamV0dHk8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5qZXR0eS1lbWJlZGRlZDwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7amV0dHlWZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLm1vcnRiYXkuamV0dHk8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5zZXJ2bGV0LWFwaS0yLjU8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4ke2pldHR5VmVyc2lvbn08L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm5ldC5zZi5reG1sPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+a3htbDI8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4yLjEuODwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+eG1scHVsbDwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPnhtbHB1bGw8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4xLjEuMy40YTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLnBsZXh1czwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPnBsZXh1cy1hcmNoaXZlcjwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPjEuMC1hbHBoYS05PC92ZXJzaW9uPiAKICAgICAgPC9kZXBlbmRlbmN5PiAgCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMucGxleHVzPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+cGxleHVzLXV0aWxzPC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+MS40LjU8L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5wbGV4dXM8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5wbGV4dXMtY29udGFpbmVyLWRlZmF1bHQ8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4xLjAtYWxwaGEtMzI8L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5wbGV4dXM8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5wbGV4dXMtY29tcG9uZW50LWFwaTwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPjEuMC1hbHBoYS0zMjwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLnBsZXh1czwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPnBsZXh1cy1jbGFzc3dvcmxkczwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPjEuMi1hbHBoYS0xMDwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gCiAgICA8L2RlcGVuZGVuY2llcz4gCiAgPC9kZXBlbmRlbmN5TWFuYWdlbWVudD4gIAo8L3Byb2plY3Q+Cg==