PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KPCEtLSBzYXZlZCBmcm9tIHVybD0oMDA0MClodHRwOi8vd3d3Lm9wZW5hZnMub3JnL2RsL2xpY2Vuc2UxMC5odG1sIC0tPgo8SFRNTD48SEVBRD48VElUTEU+SUJNIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wPC9USVRMRT4KPE1FVEEgY29udGVudD0iSUJNIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIiBuYW1lPUFCU1RSQUNUPgo8TUVUQSBjb250ZW50PSJJQk0gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAiIG5hbWU9REVTQ1JJUFRJT04+CjxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPE1FVEEgY29udGVudD0iTVNIVE1MIDYuMDAuMjgwMC4xNDkxIiBuYW1lPUdFTkVSQVRPUj48L0hFQUQ+CjxCT0RZIHRleHQ9IzAwMDAwMCBiZ0NvbG9yPSNmZmZmZmYgbGVmdE1hcmdpbj0yIHRvcE1hcmdpbj0yIG1hcmdpbmhlaWdodD0iMiIgCm1hcmdpbndpZHRoPSIyIj4KPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYm9yZGVyPTA+CiAgPFRCT0RZPgogIDxUUj4KICAgIDxURCB3aWR0aD01IHJvd1NwYW49Mj48U1BBQ0VSIHdpZHRoPSI1IiB0eXBlPSJibG9jayI+PC9URD4KICAgIDxURCB2QWxpZ249dG9wPjxCUj48Rk9OVCBmYWNlPSJIRUxWRVRJQ0EsIEhFTFYsIEFSSUFMIiBzaXplPSsxPklCTSBQdWJsaWMgCiAgICAgIExpY2Vuc2UgVmVyc2lvbiAxLjA8L0ZPTlQ+IDxGT05UIGZhY2U9IkhFTFZFVElDQSwgSEVMViwgQVJJQUwiIHNpemU9LTE+CiAgICAgIDxQPjxGT05UIHNpemU9Mj5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIgVEhFIFRFUk1TIE9GIAogICAgICBUSElTIElCTSBQVUJMSUMgTElDRU5TRSAoIkFHUkVFTUVOVCIpLiBBTlkgVVNFLCBSRVBST0RVQ1RJT04gT1IgCiAgICAgIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFIE9GIFRISVMgCiAgICAgIEFHUkVFTUVOVC48L0ZPTlQ+IAogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPgogICAgICA8UD48Rk9OVCBzaXplPTI+PEI+MS4gREVGSU5JVElPTlM8L0I+PC9GT05UPiAKICAgICAgPFA+PEZPTlQgc2l6ZT0yPiJDb250cmlidXRpb24iIG1lYW5zOiA8L0ZPTlQ+CiAgICAgIDxVTD48Rk9OVCBzaXplPTI+YSkgaW4gdGhlIGNhc2Ugb2YgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyAKICAgICAgICBDb3Jwb3JhdGlvbiAoIklCTSIpLCB0aGUgT3JpZ2luYWwgUHJvZ3JhbSwgYW5kIDwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmIpIGluIHRoZSBjYXNlIG9mIGVhY2ggQ29udHJpYnV0b3IsIDwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmkpIGNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmlpKSBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9GT05UPjwvVUw+CiAgICAgIDxVTD48Rk9OVCBzaXplPTI+d2hlcmUgc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gCiAgICAgICAgb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZCBieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIAogICAgICAgIDwvRk9OVD48Rk9OVCBzaXplPTI+QSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvciBpZiBpdCAKICAgICAgICB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbiAKICAgICAgICBzdWNoIENvbnRyaWJ1dG9yJ3MgYmVoYWxmLiA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPkNvbnRyaWJ1dGlvbnMgZG8gbm90IAogICAgICAgIGluY2x1ZGUgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIHdoaWNoOiAoaSkgYXJlIHNlcGFyYXRlIG1vZHVsZXMgb2YgCiAgICAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgUHJvZ3JhbSB1bmRlciB0aGVpciBvd24gCiAgICAgICAgbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgCiAgICAgICAgUHJvZ3JhbS48L0ZPTlQ+PC9VTD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPiJDb250cmlidXRvciIgbWVhbnMgSUJNIGFuZCBhbnkgb3RoZXIgZW50aXR5IHRoYXQgCiAgICAgIGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLjwvRk9OVD4gCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPiJMaWNlbnNlZCBQYXRlbnRzICIgbWVhbiBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgYSAKICAgICAgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlIG9yIHNhbGUgb2YgaXRzIAogICAgICBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L0ZPTlQ+CiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPiJPcmlnaW5hbCBQcm9ncmFtIiBtZWFucyB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgCiAgICAgIHNvZnR3YXJlIGFjY29tcGFueWluZyB0aGlzIEFncmVlbWVudCBhcyByZWxlYXNlZCBieSBJQk0sIGluY2x1ZGluZyBzb3VyY2UgCiAgICAgIGNvZGUsIG9iamVjdCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uLCBpZiBhbnkuPC9GT05UPiAKICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD48Rk9OVCBzaXplPTI+IlByb2dyYW0iIG1lYW5zIHRoZSBPcmlnaW5hbCBQcm9ncmFtIAogICAgICBhbmQgQ29udHJpYnV0aW9ucy48L0ZPTlQ+IAogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPgogICAgICA8UD48Rk9OVCBzaXplPTI+IlJlY2lwaWVudCIgbWVhbnMgYW55b25lIHdobyByZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciAKICAgICAgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLjwvRk9OVD4gCiAgICAgIDxQPjxGT05UIHNpemU9Mj48Qj48L0I+PC9GT05UPgogICAgICA8UD48Rk9OVCBzaXplPTI+PEI+Mi4gR1JBTlQgT0YgUklHSFRTPC9CPjwvRk9OVD4gCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj5hKSA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPlN1YmplY3QgdG8gCiAgICAgICAgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHM8L0ZPTlQ+PEZPTlQgCiAgICAgICAgc2l6ZT0yPiBSZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgCiAgICAgICAgbGljZW5zZSB0bzxGT05UIGNvbG9yPSNmZjAwMDA+IDwvRk9OVD48L0ZPTlQ+PEZPTlQgc2l6ZT0yPnJlcHJvZHVjZSwgCiAgICAgICAgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCAKICAgICAgICBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCAKICAgICAgICBhbmQgc3VjaCBkZXJpdmF0aXZlIHdvcmtzLCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUgCmZvcm0uPC9GT05UPjwvVUw+CiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PC9GT05UPjwvVUw+CiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj5iKSBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIAogICAgICAgIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIDwvRk9OVD48Rk9OVCBzaXplPTI+UmVjaXBpZW50IAogICAgICAgIGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxGT05UIGNvbG9yPSMwMDgwMDA+IDwvRk9OVD48L0ZPTlQ+PEZPTlQgCiAgICAgICAgc2l6ZT0yPnJveWFsdHktZnJlZSBwYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgCiAgICAgICAgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0IGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiAKICAgICAgICBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIAogICAgICAgIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGFuZCAKICAgICAgICB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZCBieSB0aGUgCiAgICAgICAgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbiAKICAgICAgICB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IAogICAgICAgIGFwcGx5IHRvIGFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyAKICAgICAgICBoYXJkd2FyZSBwZXIgc2UgaXMgbGljZW5zZWQgaGVyZXVuZGVyLiA8L0ZPTlQ+PC9VTD4KICAgICAgPFVMPjxGT05UIHNpemU9Mj48L0ZPTlQ+PC9VTD4KICAgICAgPFVMPjxGT05UIHNpemU9Mj5jKSBSZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIAogICAgICAgIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzIENvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcyAKICAgICAgICBhcmUgcHJvdmlkZWQgYnkgYW55IENvbnRyaWJ1dG9yIHRoYXQgdGhlIFByb2dyYW0gZG9lcyBub3QgaW5mcmluZ2UgdGhlIAogICAgICAgIHBhdGVudCBvciBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG9mIGFueSBvdGhlciBlbnRpdHkuIEVhY2ggCiAgICAgICAgQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50IGZvciBjbGFpbXMgYnJvdWdodCBieSAKICAgICAgICBhbnkgb3RoZXIgZW50aXR5IGJhc2VkIG9uIGluZnJpbmdlbWVudCBvZiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIAogICAgICAgIG9yIG90aGVyd2lzZS4gQXMgYSBjb25kaXRpb24gdG8gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGFuZCBsaWNlbnNlcyAKICAgICAgICBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eSB0byAKICAgICAgICBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZiBhbnkuIEZvciAKICAgICAgICBleGFtcGxlLCBpZiBhIHRoaXJkIHBhcnR5IHBhdGVudCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRvIGFsbG93IFJlY2lwaWVudCAKICAgICAgICB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIAogICAgICAgIHRoYXQgbGljZW5zZSBiZWZvcmUgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtLjwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPjwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmQpIEVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgCiAgICAgICAgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0IHJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IAogICAgICAgIHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4gdGhpcyBBZ3JlZW1lbnQuIDwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPjwvRk9OVD48L1VMPgogICAgICA8UD48Rk9OVCBzaXplPTI+PEI+My4gUkVRVUlSRU1FTlRTPC9CPjwvRk9OVD4gCiAgICAgIDxQPjxGT05UIHNpemU9Mj48Qj48L0I+QSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gCiAgICAgIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L0ZPTlQ+IAoKICAgICAgPFVMPjxGT05UIHNpemU9Mj5hKSBpdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIAogICAgICAgIEFncmVlbWVudDsgYW5kPC9GT05UPjwvVUw+CiAgICAgIDxVTD48Rk9OVCBzaXplPTI+YikgaXRzIGxpY2Vuc2UgYWdyZWVtZW50OjwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmkpIGVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyAKICAgICAgICBhbGwgd2FycmFudGllcyBhbmQgY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgCiAgICAgICAgb3IgY29uZGl0aW9ucyBvZiB0aXRsZSBhbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciAKICAgICAgICBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7IAogICAgICAgIDwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmlpKSBlZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyAKICAgICAgICBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgCiAgICAgICAgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoIGFzIGxvc3QgcHJvZml0czsgPC9GT05UPjwvVUw+CiAgICAgIDxVTD48Rk9OVCBzaXplPTI+aWlpKSBzdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIAogICAgICAgIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0IENvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIAogICAgICAgIHBhcnR5OyBhbmQ8L0ZPTlQ+PC9VTD4KICAgICAgPFVMPjxGT05UIHNpemU9Mj5pdikgc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIAogICAgICAgIGF2YWlsYWJsZSBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZCBpbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IAogICAgICAgIGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciAKICAgICAgICBzb2Z0d2FyZSBleGNoYW5nZS48Rk9OVCBjb2xvcj0jMDAwMGZmPiA8L0ZPTlQ+PEZPTlQgCiAgICAgICAgY29sb3I9I2ZmMDAwMD48L0ZPTlQ+PC9GT05UPjwvVUw+CiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PEZPTlQgY29sb3I9I2ZmMDAwMD48L0ZPTlQ+PC9GT05UPjxGT05UIAogICAgICBzaXplPTI+PC9GT05UPjwvVUw+CiAgICAgIDxQPjxGT05UIHNpemU9Mj5XaGVuIHRoZSBQcm9ncmFtIGlzIG1hZGUgYXZhaWxhYmxlIGluIHNvdXJjZSBjb2RlIAogICAgICBmb3JtOjwvRk9OVD4gCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+YSkgaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kIAogICAgICAgIDwvRk9OVD48L1VMPgogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmIpIGEgY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCAKICAgICAgICBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L0ZPTlQ+PC9VTD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxGT05UIGNvbG9yPSMwMDAwZmY+PC9GT05UPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxGT05UIGNvbG9yPSMwMDAwZmY+PC9GT05UPjwvRk9OVD48Rk9OVCBzaXplPTI+RWFjaCAKICAgICAgQ29udHJpYnV0b3IgbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW4gYSBjb25zcGljdW91cyBsb2NhdGlvbiBpbiB0aGUgCiAgICAgIFByb2dyYW06IDwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFVMPjxGT05UIHNpemU9Mj5Db3B5cmlnaHQgqTxGT05UIGNvbG9yPSNmZjAwMDA+IDwvRk9OVD48Rk9OVCAKICAgICAgICBjb2xvcj1ncmVlbj57ZGF0ZSBoZXJlfTwvRk9OVD48L0ZPTlQ+PEZPTlQgc2l6ZT0yPiwgSW50ZXJuYXRpb25hbCAKICAgICAgICBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAKPC9GT05UPjwvVUw+CiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+CiAgICAgIDxQPjxGT05UIHNpemU9Mj5JbiBhZGRpdGlvbiwgZWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUgCiAgICAgIG9yaWdpbmF0b3Igb2YgaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzIAogICAgICBzdWJzZXF1ZW50IFJlY2lwaWVudHMgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4gCiAgICAgIDwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxCPjQuIENPTU1FUkNJQUwgRElTVFJJQlVUSU9OPC9CPjwvRk9OVD4gCiAgICAgIDxQPjxGT05UIHNpemU9Mj5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkgYWNjZXB0IGNlcnRhaW4gCiAgICAgIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMgYW5kIHRoZSAKICAgICAgbGlrZS4gV2hpbGUgdGhpcyBsaWNlbnNlIGlzIGludGVuZGVkIHRvIGZhY2lsaXRhdGUgdGhlIGNvbW1lcmNpYWwgdXNlIG9mIAogICAgICB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgCiAgICAgIHByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwgCiAgICAgIGxpYWJpbGl0eSBmb3Igb3RoZXIgQ29udHJpYnV0b3JzLiBUaGVyZWZvcmUsIGlmIGEgQ29udHJpYnV0b3IgaW5jbHVkZXMgdGhlIAogICAgICBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgiQ29tbWVyY2lhbCAKICAgICAgQ29udHJpYnV0b3IiKSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyIAogICAgICBDb250cmlidXRvciAoIkluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIikgYWdhaW5zdCBhbnkgbG9zc2VzLCBkYW1hZ2VzIGFuZCAKICAgICAgY29zdHMgKGNvbGxlY3RpdmVseSAiTG9zc2VzIikgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyIAogICAgICBsZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciAKICAgICAgdG8gdGhlIGV4dGVudCBjYXVzZWQgYnkgdGhlIGFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCAKICAgICAgQ29udHJpYnV0b3IgaW4gY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSAKICAgICAgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSAKICAgICAgdG8gYW55IGNsYWltcyBvciBMb3NzZXMgcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCAKICAgICAgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlciB0byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciAKICAgICAgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCAKICAgICAgY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB0byBjb250cm9sLCBhbmQgY29vcGVyYXRlIAogICAgICB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQgYW55IHJlbGF0ZWQgc2V0dGxlbWVudCAKICAgICAgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlIGluIGFueSBzdWNoIAogICAgICBjbGFpbSBhdCBpdHMgb3duIGV4cGVuc2UuPC9GT05UPiAKICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPkZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlIFByb2dyYW0gaW4gYSAKICAgICAgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhIAogICAgICBDb21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyAKICAgICAgcGVyZm9ybWFuY2UgY2xhaW1zLCBvciBvZmZlcnMgd2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QgWCwgdGhvc2UgCiAgICAgIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgCiAgICAgIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzIHNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIAogICAgICBoYXZlIHRvIGRlZmVuZCBjbGFpbXMgYWdhaW5zdCB0aGUgb3RoZXIgQ29udHJpYnV0b3JzIHJlbGF0ZWQgdG8gdGhvc2UgCiAgICAgIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEgY291cnQgcmVxdWlyZXMgYW55IG90aGVyIAogICAgICBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIAogICAgICBtdXN0IHBheSB0aG9zZSBkYW1hZ2VzLjwvRk9OVD4gCiAgICAgIDxQPjxGT05UIHNpemU9Mj48Rk9OVCBjb2xvcj0jMDAwMGZmPjwvRk9OVD48L0ZPTlQ+CiAgICAgIDxQPjxGT05UIHNpemU9Mj48Rk9OVCBjb2xvcj0jMDAwMGZmPjwvRk9OVD48L0ZPTlQ+PEZPTlQgc2l6ZT0yPjxCPjUuIE5PIAogICAgICBXQVJSQU5UWTwvQj48L0ZPTlQ+IAogICAgICA8UD48Rk9OVCBzaXplPTI+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUyBBR1JFRU1FTlQsIFRIRSAKICAgICAgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyAKICAgICAgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIEFOWSAKICAgICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgT1IgCiAgICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpczwvRk9OVD48Rk9OVCBzaXplPTI+IAogICAgICBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgYW5kIAogICAgICBkaXN0cmlidXRpbmcgPC9GT05UPjxGT05UIHNpemU9Mj50aGUgUHJvZ3JhbTwvRk9OVD48Rk9OVCBzaXplPTI+IGFuZCAKICAgICAgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcyAKICAgICAgQWdyZWVtZW50PC9GT05UPjxGT05UIHNpemU9Mj4sIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCAKICAgICAgY29zdHMgb2YgcHJvZ3JhbSBlcnJvcnMsIGNvbXBsaWFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGRhbWFnZSB0byBvciAKICAgICAgbG9zcyBvZiBkYXRhLCA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPnByb2dyYW1zIG9yIGVxdWlwbWVudCwgYW5kIAogICAgICB1bmF2YWlsYWJpbGl0eSBvciBpbnRlcnJ1cHRpb24gb2Ygb3BlcmF0aW9uczwvRk9OVD48Rk9OVCBzaXplPTI+LiAKICAgICAgPC9GT05UPjxGT05UIHNpemU9Mj48L0ZPTlQ+CiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+CiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+PEZPTlQgc2l6ZT0yPjxCPjYuIERJU0NMQUlNRVIgT0YgCiAgICAgIExJQUJJTElUWTwvQj48L0ZPTlQ+IAogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIAogICAgICBBR1JFRU1FTlQsIE5FSVRIRVIgUkVDSVBJRU5UIE5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSAKICAgICAgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgCiAgICAgIERBTUFHRVMgKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIAogICAgICBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAKICAgICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIAogICAgICBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCAKICAgICAgSEVSRVVOREVSLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L0ZPTlQ+IAogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj48L0ZPTlQ+CiAgICAgIDxQPjxGT05UIHNpemU9Mj48Qj43LiBHRU5FUkFMPC9CPjwvRk9OVD4gCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+PEZPTlQgc2l6ZT0yPklmIGFueSBwcm92aXNpb24gb2YgdGhpcyBBZ3JlZW1lbnQgaXMgCiAgICAgIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhcHBsaWNhYmxlIGxhdywgaXQgc2hhbGwgbm90IGFmZmVjdCB0aGUgCiAgICAgIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgCiAgICAgIEFncmVlbWVudCwgYW5kIHdpdGhvdXQgZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIAogICAgICBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlIG1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2ggCiAgICAgIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9GT05UPiAKICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPklmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYSAKICAgICAgQ29udHJpYnV0b3Igd2l0aCByZXNwZWN0IHRvIGEgcGF0ZW50IGFwcGxpY2FibGUgdG8gc29mdHdhcmUgKGluY2x1ZGluZyBhIAogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzIAogICAgICBncmFudGVkIGJ5IHRoYXQgQ29udHJpYnV0b3IgdG8gc3VjaCBSZWNpcGllbnQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgc2hhbGwgCiAgICAgIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIEluIGFkZGl0aW9uLCBJZiAKICAgICAgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSAKICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgCiAgICAgIChleGNsdWRpbmcgY29tYmluYXRpb25zIG9mIHRoZSBQcm9ncmFtIHdpdGggb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIAogICAgICBpbmZyaW5nZXMgc3VjaCBSZWNpcGllbnQncyBwYXRlbnQocyksIHRoZW4gc3VjaCBSZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCAKICAgICAgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgCiAgICAgIGZpbGVkLiA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4KICAgICAgPFA+PEZPTlQgc2l6ZT0yPkFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgc2hhbGwgCiAgICAgIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yIAogICAgICBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzIG5vdCBjdXJlIHN1Y2ggZmFpbHVyZSBpbiBhIAogICAgICByZWFzb25hYmxlIHBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgCiAgICAgIGFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIAogICAgICBjZWFzZSB1c2UgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBhcyBzb29uIGFzIHJlYXNvbmFibHkgCiAgICAgIHByYWN0aWNhYmxlLiBIb3dldmVyLCBSZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IAogICAgICBsaWNlbnNlcyBncmFudGVkIGJ5IFJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgCiAgICAgIHN1cnZpdmUuIDwvRk9OVD48Rk9OVCBzaXplPTI+PC9GT05UPgogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPgogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj5JQk0gbWF5IHB1Ymxpc2ggbmV3IHZlcnNpb25zIAogICAgICAoaW5jbHVkaW5nIHJldmlzaW9ucykgb2YgdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIEVhY2ggbmV3IAogICAgICB2ZXJzaW9uIG9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAKICAgICAgVGhlIFByb2dyYW0gKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gCiAgICAgIHRoZSB2ZXJzaW9uIG9mIHRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgCiAgICAgIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YgdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCAKICAgICAgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAoaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IAogICAgICB2ZXJzaW9uLiBObyBvbmUgb3RoZXIgdGhhbiBJQk0gaGFzIHRoZSByaWdodCB0byBtb2RpZnkgdGhpcyAKICAgICAgQWdyZWVtZW50PC9GT05UPjxGT05UIHNpemU9Mj4uIDwvRk9OVD48Rk9OVCBzaXplPTI+RXhjZXB0IGFzIGV4cHJlc3NseSAKICAgICAgc3RhdGVkIGluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgCiAgICAgIGxpY2Vuc2VzIHRvIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgCiAgICAgIEFncmVlbWVudCwgd2hldGhlciBleHByZXNzbHksIDwvRk9OVD48Rk9OVCBzaXplPTI+YnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIAogICAgICBvciBvdGhlcndpc2U8L0ZPTlQ+PEZPTlQgc2l6ZT0yPi48L0ZPTlQ+PEZPTlQgc2l6ZT0yPiBBbGwgcmlnaHRzIGluIHRoZSAKICAgICAgUHJvZ3JhbSBub3QgZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvRk9OVD4gCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+CiAgICAgIDxQPjxGT05UIHNpemU9Mj5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUgU3RhdGUgb2YgTmV3IAogICAgICBZb3JrIGFuZCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGxhd3Mgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYS4gCiAgICAgIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcyBBZ3JlZW1lbnQgCiAgICAgIG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLjwvRk9OVD48Rk9OVCBzaXplPTI+IAogICAgICBFYWNoIHBhcnR5IHdhaXZlcyBpdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uIAogICAgICA8L0ZPTlQ+PC9QPjwvRk9OVD48L1REPjwvVFI+PC9UQk9EWT48L1RBQkxFPjwvQk9EWT48L0hUTUw+Cg==