PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4NCjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwNDApaHR0cDovL3d3dy5vcGVuYWZzLm9yZy9kbC9saWNlbnNlMTAuaHRtbCAtLT4NCjxIVE1MPjxIRUFEPjxUSVRMRT5JQk0gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjA8L1RJVExFPg0KPE1FVEEgY29udGVudD0iSUJNIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIiBuYW1lPUFCU1RSQUNUPg0KPE1FVEEgY29udGVudD0iSUJNIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIiBuYW1lPURFU0NSSVBUSU9OPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPg0KPE1FVEEgY29udGVudD0iTVNIVE1MIDYuMDAuMjgwMC4xNDkxIiBuYW1lPUdFTkVSQVRPUj48L0hFQUQ+DQo8Qk9EWSB0ZXh0PSMwMDAwMDAgYmdDb2xvcj0jZmZmZmZmIGxlZnRNYXJnaW49MiB0b3BNYXJnaW49MiBtYXJnaW5oZWlnaHQ9IjIiIA0KbWFyZ2lud2lkdGg9IjIiPg0KPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYm9yZGVyPTA+DQogIDxUQk9EWT4NCiAgPFRSPg0KICAgIDxURCB3aWR0aD01IHJvd1NwYW49Mj48U1BBQ0VSIHdpZHRoPSI1IiB0eXBlPSJibG9jayI+PC9URD4NCiAgICA8VEQgdkFsaWduPXRvcD48QlI+PEZPTlQgZmFjZT0iSEVMVkVUSUNBLCBIRUxWLCBBUklBTCIgc2l6ZT0rMT5JQk0gUHVibGljIA0KICAgICAgTGljZW5zZSBWZXJzaW9uIDEuMDwvRk9OVD4gPEZPTlQgZmFjZT0iSEVMVkVUSUNBLCBIRUxWLCBBUklBTCIgc2l6ZT0tMT4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIgVEhFIFRFUk1TIE9GIA0KICAgICAgVEhJUyBJQk0gUFVCTElDIExJQ0VOU0UgKCJBR1JFRU1FTlQiKS4gQU5ZIFVTRSwgUkVQUk9EVUNUSU9OIE9SIA0KICAgICAgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UgT0YgVEhJUyANCiAgICAgIEFHUkVFTUVOVC48L0ZPTlQ+IA0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj48Qj4xLiBERUZJTklUSU9OUzwvQj48L0ZPTlQ+IA0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPiJDb250cmlidXRpb24iIG1lYW5zOiA8L0ZPTlQ+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmEpIGluIHRoZSBjYXNlIG9mIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgDQogICAgICAgIENvcnBvcmF0aW9uICgiSUJNIiksIHRoZSBPcmlnaW5hbCBQcm9ncmFtLCBhbmQgPC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmIpIGluIHRoZSBjYXNlIG9mIGVhY2ggQ29udHJpYnV0b3IsIDwvRk9OVD48L1VMPg0KICAgICAgPFVMPjxGT05UIHNpemU9Mj5pKSBjaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQ8L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+aWkpIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbTs8L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+d2hlcmUgc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gDQogICAgICAgIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUgZGlzdHJpYnV0ZWQgYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLiANCiAgICAgICAgPC9GT05UPjxGT05UIHNpemU9Mj5BIENvbnRyaWJ1dGlvbiAnb3JpZ2luYXRlcycgZnJvbSBhIENvbnRyaWJ1dG9yIGlmIGl0IA0KICAgICAgICB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbiANCiAgICAgICAgc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gPC9GT05UPjxGT05UIHNpemU9Mj5Db250cmlidXRpb25zIGRvIG5vdCANCiAgICAgICAgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiANCiAgICAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgUHJvZ3JhbSB1bmRlciB0aGVpciBvd24gDQogICAgICAgIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIA0KICAgICAgICBQcm9ncmFtLjwvRk9OVD48L1VMPg0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj4iQ29udHJpYnV0b3IiIG1lYW5zIElCTSBhbmQgYW55IG90aGVyIGVudGl0eSB0aGF0IA0KICAgICAgZGlzdHJpYnV0ZXMgdGhlIFByb2dyYW0uPC9GT05UPiANCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj4iTGljZW5zZWQgUGF0ZW50cyAiIG1lYW4gcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgDQogICAgICBDb250cmlidXRvciB3aGljaCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSB1c2Ugb3Igc2FsZSBvZiBpdHMgDQogICAgICBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+Ik9yaWdpbmFsIFByb2dyYW0iIG1lYW5zIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSANCiAgICAgIHNvZnR3YXJlIGFjY29tcGFueWluZyB0aGlzIEFncmVlbWVudCBhcyByZWxlYXNlZCBieSBJQk0sIGluY2x1ZGluZyBzb3VyY2UgDQogICAgICBjb2RlLCBvYmplY3QgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiwgaWYgYW55LjwvRk9OVD4gDQogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPg0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD48Rk9OVCBzaXplPTI+IlByb2dyYW0iIG1lYW5zIHRoZSBPcmlnaW5hbCBQcm9ncmFtIA0KICAgICAgYW5kIENvbnRyaWJ1dGlvbnMuPC9GT05UPiANCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+IlJlY2lwaWVudCIgbWVhbnMgYW55b25lIHdobyByZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciANCiAgICAgIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L0ZPTlQ+IA0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxCPjwvQj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+PEI+Mi4gR1JBTlQgT0YgUklHSFRTPC9CPjwvRk9OVD4gDQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPjwvRk9OVD48Rk9OVCBzaXplPTI+YSkgPC9GT05UPjxGT05UIHNpemU9Mj5TdWJqZWN0IHRvIA0KICAgICAgICB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50czwvRk9OVD48Rk9OVCANCiAgICAgICAgc2l6ZT0yPiBSZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgDQogICAgICAgIGxpY2Vuc2UgdG88Rk9OVCBjb2xvcj0jZmYwMDAwPiA8L0ZPTlQ+PC9GT05UPjxGT05UIHNpemU9Mj5yZXByb2R1Y2UsIA0KICAgICAgICBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIA0KICAgICAgICBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCANCiAgICAgICAgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlIA0KZm9ybS48L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPjwvRk9OVD48Rk9OVCBzaXplPTI+YikgU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyANCiAgICAgICAgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgPC9GT05UPjxGT05UIHNpemU9Mj5SZWNpcGllbnQgDQogICAgICAgIGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxGT05UIGNvbG9yPSMwMDgwMDA+IDwvRk9OVD48L0ZPTlQ+PEZPTlQgDQogICAgICAgIHNpemU9Mj5yb3lhbHR5LWZyZWUgcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIA0KICAgICAgICBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgQ29udHJpYnV0aW9uIG9mIA0KICAgICAgICBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIA0KICAgICAgICBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgDQogICAgICAgIHRoZSBQcm9ncmFtIGlmLCBhdCB0aGUgdGltZSB0aGUgQ29udHJpYnV0aW9uIGlzIGFkZGVkIGJ5IHRoZSANCiAgICAgICAgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbiANCiAgICAgICAgdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCANCiAgICAgICAgYXBwbHkgdG8gYW55IG90aGVyIGNvbWJpbmF0aW9ucyB3aGljaCBpbmNsdWRlIHRoZSBDb250cmlidXRpb24uIE5vIA0KICAgICAgICBoYXJkd2FyZSBwZXIgc2UgaXMgbGljZW5zZWQgaGVyZXVuZGVyLiA8L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmMpIFJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgDQogICAgICAgIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzIENvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcyANCiAgICAgICAgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvciB0aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSANCiAgICAgICAgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2YgYW55IG90aGVyIGVudGl0eS4gRWFjaCANCiAgICAgICAgQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50IGZvciBjbGFpbXMgYnJvdWdodCBieSANCiAgICAgICAgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyANCiAgICAgICAgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kIGxpY2Vuc2VzIA0KICAgICAgICBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eSB0byANCiAgICAgICAgc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgDQogICAgICAgIGV4YW1wbGUsIGlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IA0KICAgICAgICB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIA0KICAgICAgICB0aGF0IGxpY2Vuc2UgYmVmb3JlIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS48L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmQpIEVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgDQogICAgICAgIGhhcyBzdWZmaWNpZW50IGNvcHlyaWdodCByaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudCANCiAgICAgICAgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbiB0aGlzIEFncmVlbWVudC4gPC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPjwvRk9OVD48L1VMPg0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxCPjMuIFJFUVVJUkVNRU5UUzwvQj48L0ZPTlQ+IA0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxCPjwvQj5BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSANCiAgICAgIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L0ZPTlQ+IA0KDQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmEpIGl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgDQogICAgICAgIEFncmVlbWVudDsgYW5kPC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmIpIGl0cyBsaWNlbnNlIGFncmVlbWVudDo8L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+aSkgZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIA0KICAgICAgICBhbGwgd2FycmFudGllcyBhbmQgY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgDQogICAgICAgIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUgYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgDQogICAgICAgIGNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgDQogICAgICAgIDwvRk9OVD48L1VMPg0KICAgICAgPFVMPjxGT05UIHNpemU9Mj5paSkgZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgDQogICAgICAgIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCANCiAgICAgICAgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoIGFzIGxvc3QgcHJvZml0czsgPC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmlpaSkgc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyANCiAgICAgICAgQWdyZWVtZW50IGFyZSBvZmZlcmVkIGJ5IHRoYXQgQ29udHJpYnV0b3IgYWxvbmUgYW5kIG5vdCBieSBhbnkgb3RoZXIgDQogICAgICAgIHBhcnR5OyBhbmQ8L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+aXYpIHN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyANCiAgICAgICAgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kIGluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgDQogICAgICAgIGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciANCiAgICAgICAgc29mdHdhcmUgZXhjaGFuZ2UuPEZPTlQgY29sb3I9IzAwMDBmZj4gPC9GT05UPjxGT05UIA0KICAgICAgICBjb2xvcj0jZmYwMDAwPjwvRk9OVD48L0ZPTlQ+PC9VTD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+PEZPTlQgY29sb3I9I2ZmMDAwMD48L0ZPTlQ+PC9GT05UPjxGT05UIA0KICAgICAgc2l6ZT0yPjwvRk9OVD48L1VMPg0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlIGNvZGUgDQogICAgICBmb3JtOjwvRk9OVD4gDQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmEpIGl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZCANCiAgICAgICAgPC9GT05UPjwvVUw+DQogICAgICA8VUw+PEZPTlQgc2l6ZT0yPmIpIGEgY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCANCiAgICAgICAgY29weSBvZiB0aGUgUHJvZ3JhbS4gPC9GT05UPjwvVUw+DQogICAgICA8UD48Rk9OVCBzaXplPTI+PEZPTlQgY29sb3I9IzAwMDBmZj48L0ZPTlQ+PC9GT05UPg0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxGT05UIGNvbG9yPSMwMDAwZmY+PC9GT05UPjwvRk9OVD48Rk9OVCBzaXplPTI+RWFjaCANCiAgICAgIENvbnRyaWJ1dG9yIG11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluIGEgY29uc3BpY3VvdXMgbG9jYXRpb24gaW4gdGhlIA0KICAgICAgUHJvZ3JhbTogPC9GT05UPg0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxVTD48Rk9OVCBzaXplPTI+Q29weXJpZ2h0IKk8Rk9OVCBjb2xvcj0jZmYwMDAwPiA8L0ZPTlQ+PEZPTlQgDQogICAgICAgIGNvbG9yPWdyZWVuPntkYXRlIGhlcmV9PC9GT05UPjwvRk9OVD48Rk9OVCBzaXplPTI+LCBJbnRlcm5hdGlvbmFsIA0KICAgICAgICBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiANCjwvRk9OVD48L1VMPg0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj5JbiBhZGRpdGlvbiwgZWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUgDQogICAgICBvcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cyANCiAgICAgIHN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUgQ29udHJpYnV0aW9uLiANCiAgICAgIDwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+PEI+NC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT048L0I+PC9GT05UPiANCiAgICAgIDxQPjxGT05UIHNpemU9Mj5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkgYWNjZXB0IGNlcnRhaW4gDQogICAgICByZXNwb25zaWJpbGl0aWVzIHdpdGggcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzIGFuZCB0aGUgDQogICAgICBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2Ugb2YgDQogICAgICB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgDQogICAgICBwcm9kdWN0IG9mZmVyaW5nIHNob3VsZCBkbyBzbyBpbiBhIG1hbm5lciB3aGljaCBkb2VzIG5vdCBjcmVhdGUgcG90ZW50aWFsIA0KICAgICAgbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUgDQogICAgICBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgiQ29tbWVyY2lhbCANCiAgICAgIENvbnRyaWJ1dG9yIikgaGVyZWJ5IGFncmVlcyB0byBkZWZlbmQgYW5kIGluZGVtbmlmeSBldmVyeSBvdGhlciANCiAgICAgIENvbnRyaWJ1dG9yICgiSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IiKSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kIA0KICAgICAgY29zdHMgKGNvbGxlY3RpdmVseSAiTG9zc2VzIikgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyIA0KICAgICAgbGVnYWwgYWN0aW9ucyBicm91Z2h0IGJ5IGEgdGhpcmQgcGFydHkgYWdhaW5zdCB0aGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgDQogICAgICB0byB0aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIA0KICAgICAgQ29udHJpYnV0b3IgaW4gY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSANCiAgICAgIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZy4gVGhlIG9ibGlnYXRpb25zIGluIHRoaXMgc2VjdGlvbiBkbyBub3QgYXBwbHkgDQogICAgICB0byBhbnkgY2xhaW1zIG9yIExvc3NlcyByZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIA0KICAgICAgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlciB0byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciANCiAgICAgIG11c3Q6IGEpIHByb21wdGx5IG5vdGlmeSB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiB3cml0aW5nIG9mIHN1Y2ggDQogICAgICBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgDQogICAgICB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQgYW55IHJlbGF0ZWQgc2V0dGxlbWVudCANCiAgICAgIG5lZ290aWF0aW9ucy4gVGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG1heSBwYXJ0aWNpcGF0ZSBpbiBhbnkgc3VjaCANCiAgICAgIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS48L0ZPTlQ+IA0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj5Gb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZSBQcm9ncmFtIGluIGEgDQogICAgICBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIFByb2R1Y3QgWC4gVGhhdCBDb250cmlidXRvciBpcyB0aGVuIGEgDQogICAgICBDb21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyANCiAgICAgIHBlcmZvcm1hbmNlIGNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIA0KICAgICAgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IncyANCiAgICAgIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzIHNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIA0KICAgICAgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlIG90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIA0KICAgICAgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzLCBhbmQgaWYgYSBjb3VydCByZXF1aXJlcyBhbnkgb3RoZXIgDQogICAgICBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIA0KICAgICAgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L0ZPTlQ+IA0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjxGT05UIGNvbG9yPSMwMDAwZmY+PC9GT05UPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj48Rk9OVCBjb2xvcj0jMDAwMGZmPjwvRk9OVD48L0ZPTlQ+PEZPTlQgc2l6ZT0yPjxCPjUuIE5PIA0KICAgICAgV0FSUkFOVFk8L0I+PC9GT05UPiANCiAgICAgIDxQPjxGT05UIHNpemU9Mj5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIEFHUkVFTUVOVCwgVEhFIA0KICAgICAgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyANCiAgICAgIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgDQogICAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBPUiANCiAgICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpczwvRk9OVD48Rk9OVCBzaXplPTI+IA0KICAgICAgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCANCiAgICAgIGRpc3RyaWJ1dGluZyA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPnRoZSBQcm9ncmFtPC9GT05UPjxGT05UIHNpemU9Mj4gYW5kIA0KICAgICAgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcyANCiAgICAgIEFncmVlbWVudDwvRk9OVD48Rk9OVCBzaXplPTI+LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSByaXNrcyBhbmQgDQogICAgICBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywgY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIA0KICAgICAgbG9zcyBvZiBkYXRhLCA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPnByb2dyYW1zIG9yIGVxdWlwbWVudCwgYW5kIA0KICAgICAgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnM8L0ZPTlQ+PEZPTlQgc2l6ZT0yPi4gDQogICAgICA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj48Qj42LiBESVNDTEFJTUVSIE9GIA0KICAgICAgTElBQklMSVRZPC9CPjwvRk9OVD4gDQogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIA0KICAgICAgQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgDQogICAgICBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCANCiAgICAgIERBTUFHRVMgKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIA0KICAgICAgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgDQogICAgICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgDQogICAgICBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCANCiAgICAgIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuPC9GT05UPiANCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj48Qj43LiBHRU5FUkFMPC9CPjwvRk9OVD4gDQogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIA0KICAgICAgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFwcGxpY2FibGUgbGF3LCBpdCBzaGFsbCBub3QgYWZmZWN0IHRoZSANCiAgICAgIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgDQogICAgICBBZ3JlZW1lbnQsIGFuZCB3aXRob3V0IGZ1cnRoZXIgYWN0aW9uIGJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCANCiAgICAgIHByb3Zpc2lvbiBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUgbWluaW11bSBleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VjaCANCiAgICAgIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9GT05UPiANCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+SWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhIA0KICAgICAgQ29udHJpYnV0b3Igd2l0aCByZXNwZWN0IHRvIGEgcGF0ZW50IGFwcGxpY2FibGUgdG8gc29mdHdhcmUgKGluY2x1ZGluZyBhIA0KICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCksIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyANCiAgICAgIGdyYW50ZWQgYnkgdGhhdCBDb250cmlidXRvciB0byBzdWNoIFJlY2lwaWVudCB1bmRlciB0aGlzIEFncmVlbWVudCBzaGFsbCANCiAgICAgIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIEluIGFkZGl0aW9uLCBJZiANCiAgICAgIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgDQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiANCiAgICAgIChleGNsdWRpbmcgY29tYmluYXRpb25zIG9mIHRoZSBQcm9ncmFtIHdpdGggb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIA0KICAgICAgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2ggUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgDQogICAgICB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyANCiAgICAgIGZpbGVkLiA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+QWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCBzaGFsbCANCiAgICAgIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yIA0KICAgICAgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSANCiAgICAgIHJlYXNvbmFibGUgcGVyaW9kIG9mIHRpbWUgYWZ0ZXIgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBub25jb21wbGlhbmNlLiBJZiANCiAgICAgIGFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIA0KICAgICAgY2Vhc2UgdXNlIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IA0KICAgICAgcHJhY3RpY2FibGUuIEhvd2V2ZXIsIFJlY2lwaWVudCdzIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFuZCBhbnkgDQogICAgICBsaWNlbnNlcyBncmFudGVkIGJ5IFJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgDQogICAgICBzdXJ2aXZlLiA8L0ZPTlQ+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj48L0ZPTlQ+DQogICAgICA8UD48Rk9OVCBzaXplPTI+PC9GT05UPjxGT05UIHNpemU9Mj5JQk0gbWF5IHB1Ymxpc2ggbmV3IHZlcnNpb25zIA0KICAgICAgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mIHRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLiBFYWNoIG5ldyANCiAgICAgIHZlcnNpb24gb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIA0KICAgICAgVGhlIFByb2dyYW0gKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gDQogICAgICB0aGUgdmVyc2lvbiBvZiB0aGUgQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIA0KICAgICAgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZiB0aGUgQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IA0KICAgICAgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAoaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IA0KICAgICAgdmVyc2lvbi4gTm8gb25lIG90aGVyIHRoYW4gSUJNIGhhcyB0aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgDQogICAgICBBZ3JlZW1lbnQ8L0ZPTlQ+PEZPTlQgc2l6ZT0yPi4gPC9GT05UPjxGT05UIHNpemU9Mj5FeGNlcHQgYXMgZXhwcmVzc2x5IA0KICAgICAgc3RhdGVkIGluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgDQogICAgICBsaWNlbnNlcyB0byB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIA0KICAgICAgQWdyZWVtZW50LCB3aGV0aGVyIGV4cHJlc3NseSwgPC9GT05UPjxGT05UIHNpemU9Mj5ieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgDQogICAgICBvciBvdGhlcndpc2U8L0ZPTlQ+PEZPTlQgc2l6ZT0yPi48L0ZPTlQ+PEZPTlQgc2l6ZT0yPiBBbGwgcmlnaHRzIGluIHRoZSANCiAgICAgIFByb2dyYW0gbm90IGV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFyZSByZXNlcnZlZC48L0ZPTlQ+IA0KICAgICAgPFA+PEZPTlQgc2l6ZT0yPjwvRk9OVD4NCiAgICAgIDxQPjxGT05UIHNpemU9Mj5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUgU3RhdGUgb2YgTmV3IA0KICAgICAgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EuIA0KICAgICAgTm8gcGFydHkgdG8gdGhpcyBBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbiB1bmRlciB0aGlzIEFncmVlbWVudCANCiAgICAgIG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLjwvRk9OVD48Rk9OVCBzaXplPTI+IA0KICAgICAgRWFjaCBwYXJ0eSB3YWl2ZXMgaXRzIHJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLiANCiAgICAgIDwvRk9OVD48L1A+PC9GT05UPjwvVEQ+PC9UUj48L1RCT0RZPjwvVEFCTEU+PC9CT0RZPjwvSFRNTD4NCg==