PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vb3JnLmVjbGlwc2UucGxhdGZvcm0uZG9jLnVzZXIvYm9vay5jc3MiIC8+Cjx0aXRsZT5JbXBvcnRpbmcgY2xhc3MgZmlsZXMgdG8gV2ViIHByb2plY3RzPC90aXRsZT4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+CiAgICBmdW5jdGlvbiBwb3B1cF93aW5kb3coIHVybCwgaWQsIHdpZHRoLCBoZWlnaHQgKQogICAgewogICAgICBwb3B1cCA9IHdpbmRvdy5vcGVuKCB1cmwsIGlkLCAndG9vbGJhcj1ubyxzY3JvbGxiYXJzPW5vLGxvY2F0aW9uPW5vLHN0YXR1c2Jhcj1ubyxtZW51YmFyPW5vLHJlc2l6YWJsZT1ubyx3aWR0aD0nICsgd2lkdGggKyAnLGhlaWdodD0nICsgaGVpZ2h0ICsgJyxsZWZ0PSx0b3A9JyApOwogICAgICBwb3B1cC5mb2N1cygpOwogICAgfQo8L3NjcmlwdD48c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiBzcmM9ImhlbHAvbGl2ZUhlbHAuanMiPjwvc2NyaXB0PjwvaGVhZD4KPGJvZHkgaWQ9InRlaW1wY2xhc3MiPjxhIG5hbWU9InRlaW1wY2xhc3MiPjwhLS0gLS0+PC9hPgoKPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+SW1wb3J0aW5nIGNsYXNzIGZpbGVzIHRvIFdlYiBwcm9qZWN0czwvaDE+CjxkaXY+PGRpdiBjbGFzcz0ic2tpcHNwYWNlIj4gPHA+WW91IGNhbiB1c2UgdGhlIEltcG9ydCB3aXphcmQgdG8gYWRkIC5jbGFzcyBmaWxlcyB0byBhIFdlYiBwcm9qZWN0LgoKV2l0aCB0aGUgd2l6YXJkLCB5b3UgY2FuIGltcG9ydCB0aGUgY2xhc3MgZmlsZXMgZnJvbSB0aGUgZGlyZWN0b3J5IHN5c3RlbQoKb3IgZnJvbSBhIEpBUiBmaWxlIG9yIFpJUCBmaWxlLiBBZnRlciB5b3UgY2hvb3NlIHRoZSBjbGFzcyBmaWxlcyB0aGF0IHlvdQoKd2FudCB0byBpbXBvcnQsIHRoZSB3aXphcmQgY3JlYXRlcyBhbiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5pbXBvcnRlZF9jbGFzc2VzPC9zcGFuPiBmb2xkZXIsCgppbXBvcnRzIHRoZSBzcGVjaWZpZWQgY2xhc3MgZmlsZXMgdG8gdGhhdCBmb2xkZXIsIGFuZCBhZGRzIHRoZSBmb2xkZXIgdG8gdGhlCgpkZWZhdWx0IGNsYXNzcGF0aC4gWW91IGNhbiBuYXZpZ2F0ZSB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+aW1wb3J0ZWRfY2xhc3Nlczwvc3Bhbj4gZm9sZGVyCgppbiB0aGUgUHJvamVjdCBFeHBsb3JlciB2aWV3LjwvcD4KPHA+PGltZyBzcmM9Ii4uL2ltYWdlcy9ud2luLmdpZiIgYWx0PSJGb3IgV2luZG93cyIgLz4gWW91IGNhbiBkcmFnIGFuZCBkcm9wIGNsYXNzIGZpbGVzIGZyb20gdGhlIFdpbmRvd3M8c3VwPq48L3N1cD4gRXhwbG9yZXIKCm9yIGRlc2t0b3AgdG8gdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPmltcG9ydGVkX2NsYXNzZXM8L3NwYW4+IGZvbGRlciBpbiB0aGUgUHJvamVjdAoKTmF2aWdhdG9yIHZpZXcuPC9wPgo8cD5UbyBpbXBvcnQgY2xhc3MgZmlsZXMgdG8gYSBXZWIgcHJvamVjdCB1c2luZyB0aGUgd2l6YXJkOjwvcD4KPC9kaXY+CjxvbD48bGk+PHNwYW4+UmlnaHQtY2xpY2sgeW91ciBXZWIgcHJvamVjdCBhbmQgc2VsZWN0IDxzcGFuIGNsYXNzPSJtZW51Y2FzY2FkZSI+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+SW1wb3J0PC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkltcG9ydCBDbGFzcyBGaWxlcyAuLi48L3NwYW4+PC9zcGFuPiBmcm9tIHRoZSBwb3AtdXAgbWVudS4gVGhlIEltcG9ydCB3aXphcmQgb3BlbnMuPC9zcGFuPjwvbGk+CjxsaT48c3Bhbj5TcGVjaWZ5IHdoZXRoZXIgeW91IHdhbnQgdG8gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+SW1wb3J0IGZyb20gZGlyZWN0b3J5PC9zcGFuPiBvciA8c3BhbiBjbGFzcz0idWljb250cm9sIj5JbXBvcnQKCmZyb20gWklQIG9yIEpBUjwvc3Bhbj4gYW5kIGNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+Ljwvc3Bhbj48L2xpPgo8bGk+PHNwYW4+RGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91IGFyZSBpbXBvcnRpbmcgZnJvbSBhIGRpcmVjdG9yeSBvciBKQVIKCmZpbGUgb3IgWklQIGZpbGUsIGluIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Tb3VyY2U8L3NwYW4+IGZpZWxkIGVudGVyIHRoZSBmdWxsCgpwYXRoIG9mIHRoZSBkaXJlY3RvcnksIFpJUCBmaWxlLCBvciBKQVIgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSAuY2xhc3MgZmlsZXMKCnRoYXQgeW91IHdhbnQgdG8gaW1wb3J0LiBZb3UgY2FuIGNsaWNrIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Ccm93c2U8L3NwYW4+IGJ1dHRvbgoKdG8gbG9jYXRlIHRoZSBkaXJlY3Rvcnkgb3IgZmlsZSBvbiB5b3VyIHN5c3RlbS48L3NwYW4+PC9saT4KPGxpPjxzcGFuPlNlbGVjdCB0aGUgY2xhc3MgZmlsZXMgdGhhdCB5b3Ugd2FudCB0byBpbXBvcnQuPC9zcGFuPjwvbGk+CjxsaT48c3Ryb25nPk9wdGlvbmFsOiA8L3N0cm9uZz48c3Bhbj5JZiB5b3UgaGF2ZSBwcmV2aW91c2x5IGltcG9ydGVkIGNsYXNzIGZpbGVzCgphbmQgZG8gbm90IHdhbnQgdG8gYmUgd2FybmVkIGFib3V0IG92ZXJ3cml0aW5nIHJlc291cmNlcyB3aXRoIHRoZSBzYW1lIG5hbWVzLAoKc2VsZWN0IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk92ZXJ3cml0ZSBleGlzdGluZyByZXNvdXJjZXMgd2l0aG91dCB3YXJuaW5nPC9zcGFuPi48L3NwYW4+PC9saT4KPGxpPjxzcGFuPkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbmlzaDwvc3Bhbj4uIFRoZSB3aXphcmQgaW1wb3J0cyB0aGUgLmNsYXNzCgpmaWxlcyB0byB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+aW1wb3J0ZWRfY2xhc3Nlczwvc3Bhbj4gZm9sZGVyLjwvc3Bhbj48L2xpPgo8L29sPgo8L2Rpdj4KPHA+CgkJKEMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwNS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KPC9wPgo8L2JvZHk+CjwvaHRtbD4=