PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY29tLmlibS5oZWxwLmRvYy9zd2dfaW5mb19jb21tb24uY3NzIiAvPgo8dGl0bGU+Q3JlYXRpbmcgYSBzdGF0aWMgV2ViIHByb2plY3Q8L3RpdGxlPgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4KICAgIGZ1bmN0aW9uIHBvcHVwX3dpbmRvdyggdXJsLCBpZCwgd2lkdGgsIGhlaWdodCApCiAgICB7CiAgICAgIHBvcHVwID0gd2luZG93Lm9wZW4oIHVybCwgaWQsICd0b29sYmFyPW5vLHNjcm9sbGJhcnM9bm8sbG9jYXRpb249bm8sc3RhdHVzYmFyPW5vLG1lbnViYXI9bm8scmVzaXphYmxlPW5vLHdpZHRoPScgKyB3aWR0aCArICcsaGVpZ2h0PScgKyBoZWlnaHQgKyAnLGxlZnQ9LHRvcD0nICk7CiAgICAgIHBvcHVwLmZvY3VzKCk7CiAgICB9Cjwvc2NyaXB0PjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHNyYz0iaGVscC9saXZlSGVscC5qcyI+PC9zY3JpcHQ+PC9oZWFkPgo8Ym9keSBpZD0idHdjcmVzdGEiPjxhIG5hbWU9InR3Y3Jlc3RhIj48IS0tIC0tPjwvYT4KCjxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkNyZWF0aW5nIGEgc3RhdGljIFdlYiBwcm9qZWN0PC9oMT4KPGRpdj48cD4gSW4gdGhlIHdvcmtiZW5jaCwgeW91IGNyZWF0ZSBhbmQgbWFpbnRhaW4gcmVzb3VyY2VzIGZvciBXZWIgYXBwbGljYXRpb25zCgppbiBXZWIgcHJvamVjdHMuIElmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIHN0YXRpYywgY29udGVudC1iYXNlZCBXZWIgYXBwbGljYXRpb24KCnRoYXQgY29udGFpbnMgbm8gZHluYW1pYyBlbGVtZW50cywgc3VjaCBhcyBKU1AgZmlsZXMgb3Igc2VydmxldHMsIHVzZSB0aGUgPHNwYW4+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV3CgpTdGF0aWMgV2ViIFByb2plY3Q8L3NwYW4+PC9zcGFuPiB3aXphcmQuIElmIHlvdSBsYXRlciBkZWNpZGUgdGhhdCB5b3Ugd2FudAoKdG8gYWRkIGR5bmFtaWMgZWxlbWVudHMgdG8gdGhpcyBwcm9qZWN0LCB5b3UgY2FuIDxhIGhyZWY9InR3cGNudnJ0Lmh0bWwiPmNvbnZlcnQgdGhlIHByb2plY3QgdG8gYSBkeW5hbWljIFdlYiBwcm9qZWN0PC9hPi48L3A+CjxwPiBOb3RlCgp0aGF0IHN0YXRpYyB3ZWIgcHJvamVjdHMgd2lsbCBub3QgcnVuIGluIHRoZSBwcm92aWRlZCBXZWJTcGhlcmU8c3VwPq48L3N1cD4gdGVzdCBlbnZpcm9ubWVudHMsCgpidXQgdGhlc2UgcHJvamVjdHMgY2FuIGJlIHByZXZpZXdlZCBpbiBhIGJyb3dzZXIgZGlyZWN0bHkgZnJvbSB0aGUgd29ya3NwYWNlLgoKIDwvcD4KPHA+VG8gY3JlYXRlIGEgbmV3IHN0YXRpYyBXZWIgcHJvamVjdCwgb3BlbiB0aGUgV2ViIHBlcnNwZWN0aXZlIGFuZCBjb21wbGV0ZQoKdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+CjwvZGl2Pgo8b2w+PGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPlNlbGVjdCA8c3BhbiBjbGFzcz0ibWVudWNhc2NhZGUiPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbGU8L3NwYW4+ICZndDsgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV3PC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlN0YXRpYyBXZWIgUHJvamVjdDwvc3Bhbj48L3NwYW4+LiA8L3NwYW4+IDxwPlRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5OZXcKClN0YXRpYyBXZWIgUHJvamVjdDwvc3Bhbj4gd2l6YXJkIGFwcGVhcnMuPC9wPgo8L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+UHJvdmlkZSBhIG5hbWUgZm9yIHRoZSBXZWIgcHJvamVjdC48L3NwYW4+IDxwPjwvcD4KPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPkFjY2VwdCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+UHJvamVjdCBsb2NhdGlvbjwvc3Bhbj4gZmllbGQKCih0aGlzIGlzIHdoZXJlIHlvdXIgcHJvamVjdCBpcyBzdG9yZWQgaW4geW91ciBmaWxlIHN5c3RlbSksIG9yIGNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkJyb3dzZTwvc3Bhbj4gdG8KCmNob29zZSBhIGxvY2F0aW9uIGZyb20gdGhlIGZpbGUgc3lzdGVtLjwvc3Bhbj4KPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPllvdSBoYXZlIHR3byBvcHRpb25zIHRvIHByb2NlZWQ6IDwvc3Bhbj4gPHVsPjxsaT5JZiB5b3Ugd2FudCB0byBhY2NlcHQgdGhlIGRlZmF1bHRzIGFzc29jaWF0ZWQgd2l0aCBhIHN0YXRpYyBXZWIgcHJvamVjdCwKc2VsZWN0IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbmlzaDwvc3Bhbj4gLjwvbGk+CjxsaT5JZiB5b3Ugd2FudCB0byBzcGVjaWZ5IG9yIGN1c3RvbWl6ZSB0aGUgcHJvamVjdCBvcHRpb25zLCBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV4dDwvc3Bhbj4uClRoZSBmb2xsb3dpbmcgc3RlcCBhc3N1bWVzIHlvdSBoYXZlIGNob3NlbiB0aGlzIG9wdGlvbi48L2xpPgo8L3VsPgogPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPlNlbGVjdCBvbmUgb3IgbW9yZSBvZiB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViIFByb2plY3QgZmVhdHVyZXM8L3NwYW4+LiA8L3NwYW4+IDxwPlRoZSBkZWZhdWx0IHNlbGVjdHMgdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRlZmF1bHQgc3R5bGUgc2hlZXQgKENTUyk8L3NwYW4+IGNoZWNrCmJveCwgd2hpY2ggY3JlYXRlcyBhIGRlZmF1bHQgQ1NTIGZpbGUgKGNhbGxlZCBNYXN0ZXIuY3NzKSBmb3IgdGhlIHByb2plY3QuPC9wPgo8L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+U2VsZWN0IDxiPk5leHQ8L2I+LCBhbmQgdGhlbiBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+VXNlIGEgZGVmYXVsdCBQYWdlCgpUZW1wbGF0ZSBmb3IgdGhlIFdlYiBTaXRlPC9zcGFuPiBpZiB5b3Ugd2FudCB5b3VyIGVudGlyZSBXZWIgc2l0ZSB0bwoKc2hhcmUgYSBjb21tb24gcGFnZSB0ZW1wbGF0ZS48L3NwYW4+IDxwPklmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlCgpzYW1wbGUgdGVtcGxhdGVzIHByb3ZpZGVkLCBzZWxlY3QgPGI+U2FtcGxlIFBhZ2UgVGVtcGxhdGU8L2I+IGFuZCB0aGVuIGNob29zZQoKb25lIG9mIHRoZSB0ZW1wbGF0ZXMgc2hvd24gaW4gdGhlIDxiPlRodW1ibmFpbDwvYj4gYm94LiBJZiB5b3Ugd2FudCB0byB1c2UKCmEgdGVtcGxhdGUgb2YgeW91ciBvd24sIHNlbGVjdCA8Yj5Vc2VyLWRlZmluZWQgUGFnZSBUZW1wbGF0ZTwvYj4gYW5kIHRoZW4KCmNsaWNrIDxiPkJyb3dzZTwvYj4gdG8gc2VsZWN0IHRoZSB0ZW1wbGF0ZSBmcm9tIHRoZSBmaWxlIHN5c3RlbS4gPC9wPgo8L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+Q2xpY2sgPGI+RmluaXNoPC9iPi4gVGhlIHdpemFyZCBjcmVhdGVzIGFuIGVtcHR5IHByb2plY3QgY29udGFpbmluZwoKdGhlIGFwcHJvcHJpYXRlIGZvbGRlciBzdHJ1Y3R1cmUsIHdoaWNoIHlvdSBjYW4gc2VlIGluIHRoZSBQcm9qZWN0IEV4cGxvcmVyLjwvc3Bhbj48L2xpPgo8L29sPgo8ZGl2IGNsYXNzPSJza2lwc3BhY2UiPjxwPllvdSBjYW4gbm93IGJlZ2luIGNyZWF0aW5nIG9yIGltcG9ydGluZyBjb250ZW50IGZvciB5b3VyIFdlYiBwcm9qZWN0Cgp1c2luZyBXZWIgcmVzb3VyY2UgZWRpdG9ycywgdGhlCgpOZXcgRmlsZSB3aXphcmRzLCBvciB0aGUgSW1wb3J0IHdpemFyZHMgYXZhaWxhYmxlIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbGU8L3NwYW4+IG1lbnUuPC9wPgo8L2Rpdj4KPGRpdj48cD48YiBjbGFzcz0icmVsY29uY2VwdHNoZCI+UmVsYXRlZCBjb25jZXB0czwvYj48YnIgLz4KPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LndlYnRvb2xzY29yZS5kb2MudXNlci90b3BpY3MvY2NzdGF0aWMuaHRtbCI+U3RhdGljIFdlYiBQcm9qZWN0czwvYT48YnIgLz4KPC9wPgo8cD48YiBjbGFzcz0icmVsdGFza3NoZCI+UmVsYXRlZCB0YXNrczwvYj48YnIgLz4KPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LnB1Ymxpc2hpbmcuc2VydmVyLnVpLmRvYy51c2VyL3RvcGljcy90c3RhdHNydi5odG1sIj5QdWJsaXNoaW5nIHN0YXRpYyBXZWIgcHJvamVjdHMgdG8gYSBzdGF0aWMgV2ViIHB1Ymxpc2hpbmcKCnNlcnZlcjwvYT48YnIgLz4KPC9wPgo8L2Rpdj4KCQk8cD4KCQkoQykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDA1LiBBbGwgUmlnaHRzIFJlc2VydmVkLjwvcD4KPC9ib2R5Pgo8L2h0bWw+