PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPjxodG1sPjxoZWFkPjx0aXRsZT5BcGFjaGUgUmFtcGFydC9DIC0gTWFudWFsPC90aXRsZT48c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwiPgogICAgICAgICAgQGltcG9ydCB1cmwoIi4uL3N0eWxlL21hdmVuLWJhc2UuY3NzIik7CiAgICAgICAgICAKCQkJICAgIEBpbXBvcnQgdXJsKCIuLi9zdHlsZS9tYXZlbi1jbGFzc2ljLmNzcyIpOzwvc3R5bGU+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9zdHlsZS9wcmludC5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0icHJpbnQiPjwvbGluaz48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj48L21ldGE+PC9oZWFkPjxib2R5IGNsYXNzPSJjb21wb3NpdGUiPjxkaXYgaWQ9ImJhbm5lciI+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyIgaWQ9Im9yZ2FuaXphdGlvbkxvZ28iPjxpbWcgYWx0PSJBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiIgc3JjPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvaW1hZ2VzL2FzZi1sb2dvLmdpZiI+PC9pbWc+PC9hPjxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL3JhbXBhcnQvYyIgaWQ9InByb2plY3RMb2dvIj48aW1nIGFsdD0iQXBhY2hlIFJhbXBhcnQvQyIgc3JjPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9yYW1wYXJ0L2MvaW1hZ2VzL3JhbXBhcnRjX2xvZ28uanBnIj48L2ltZz48L2E+PGRpdiBjbGFzcz0iY2xlYXIiPjxocj48L2hyPjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImJyZWFkY3J1bWJzIj48ZGl2IGNsYXNzPSJ4bGVmdCI+CiAgICAgICAgICAgICAgICAJTGFzdCBwdWJsaXNoZWQ6IDEzIE1heSAyMDA5CiAgICAgICAgICAgICAgICAgIHwgRG9jIGZvciAxLjMuMDwvZGl2PjxkaXYgY2xhc3M9InhyaWdodCI+PC9kaXY+PGRpdiBjbGFzcz0iY2xlYXIiPjxocj48L2hyPjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImxlZnRDb2x1bW4iPjxkaXYgaWQ9Im5hdmNvbHVtbiI+PGRpdiBpZD0ibWVudUFwYWNoZV9SYW1wYXJ0X0MiPjxoNT5BcGFjaGUgUmFtcGFydC9DPC9oNT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9pbmRleC5odG1sIj5BcGFjaGUgUmFtcGFydC9DIEhvbWU8L2E+PC9saT48bGkgY2xhc3M9ImV4cGFuZGVkIj48YSBocmVmPSIuLi9kb3dubG9hZC5jZ2kiPkRvd25sb2FkIFJhbXBhcnQvQzwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9kb3dubG9hZC5jZ2kiPlJlbGVhc2VzPC9hPjwvbGk+PC91bD48L2xpPjxsaSBjbGFzcz0iZXhwYW5kZWQiPjxhIGhyZWY9Ii4uL2RvY3MvaW5kZXguaHRtbCI+RG9jdW1lbnRhdGlvbjwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9kb2NzL2luc3RhbGxhdGlvbmd1aWRlLmh0bWwiPkluc3RhbGxhdGlvbiBHdWlkZTwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vZG9jcy9yYW1wYXJ0Y19tYW51YWwuaHRtbCI+UmFtcGFydC9DIG1hbnVhbDwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vZG9jcy9jb25maWd1cmF0aW9ucy5odG1sIj5Db25maWd1cmF0aW9ucyBndWlkZTwvYT48L2xpPjwvdWw+PC9saT48bGkgY2xhc3M9ImV4cGFuZGVkIj48YSBocmVmPSIuLi9saXN0c19pc3N1ZXMuaHRtbCI+R2V0IEludm9sdmVkPC9hPjx1bD48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL2xpc3RzX2lzc3Vlcy5odG1sIj5NYWlsaW5nIExpc3RzICZhbXA7IElzc3VlIFRyYWNraW5nPC9hPjwvbGk+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9zdm4uaHRtbCI+Q2hlY2tvdXQgU291cmNlIENvZGU8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vY29kaW5nX2NvbnZlbnRpb25zLmh0bWwiPkRldmVsb3BlciBHdWlkZWxpbmVzPC9hPjx1bD48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL2NvZGluZ19jb252ZW50aW9ucy5odG1sIj5Db2RpbmcgQ29udmVudGlvbjwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vdmVyc2lvbmluZy5odG1sIj5WZXJzaW9ubmluZzwvYT48L2xpPjwvdWw+PC9saT48bGkgY2xhc3M9ImV4cGFuZGVkIj48YSBocmVmPSIuLi90ZWFtLWxpc3QuaHRtbCI+UHJvamVjdCBJbmZvcm1hdGlvbjwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi90ZWFtLWxpc3QuaHRtbCI+UHJvamVjdCBUZWFtPC9hPjwvbGk+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSJodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld2N2cy5jZ2kvd2Vic2VydmljZXMvcmFtcGFydC90cnVuay9jLyIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPlNvdXJjZSBDb2RlPC9hPjwvbGk+PC91bD48L2xpPjwvdWw+PC9kaXY+PGEgaHJlZj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvIiB0aXRsZT0iQnVpbHQgYnkgTWF2ZW4iIGlkPSJwb3dlcmVkQnkiPjxpbWcgYWx0PSJCdWlsdCBieSBNYXZlbiIgc3JjPSIuLi9pbWFnZXMvbG9nb3MvbWF2ZW4tYnV0dG9uLTEucG5nIj48L2ltZz48L2E+PC9kaXY+PC9kaXY+PGRpdiBpZD0iYm9keUNvbHVtbiI+PGRpdiBjbGFzcz0iY29udGVudEJveCI+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iUHJlYW1ibGUiPjwvYT48aDI+UHJlYW1ibGU8L2gyPjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW4iPlRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgdG8gYmUgYSByZWZlcmVuY2UKbWFudWFsIGZvciA8YSBocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9yYW1wYXJ0L2MiIGNsYXNzPSJleHRlcm5hbExpbmsiIHRpdGxlPSJFeHRlcm5hbCBMaW5rIj5BcGFjaGUgUmFtcGFydC9DPC9hPi48L3A+PHA+Rm9yIGZ1cnRoZXIgZGV0YWlscyBvbiBBeGlzMi9DIHBsZWFzZSByZWZlciB0aGUgPGEgaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvYXhpczIvYy9kb2NzL2F4aXMyY19tYW51YWwuaHRtbCIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPkFwYWNoZSBBeGlzMi9DIG1hbnVhbDwvYT48L3A+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iU2ltcGxpZmllZF9BcmNoaXRlY3R1cmUiPjwvYT48aDI+U2ltcGxpZmllZCBBcmNoaXRlY3R1cmU8L2gyPjxwPkluIGEgdmVyeSBzaW1wbGUgdmlldywgUmFtcGFydC9DIGNvbnNpc3RzIG9mIGEgY29yZSBtb2R1bGUgYW5kIHBhY2thZ2VzCnJlbGF0ZWQgdG8gV1MtU2VjdXJpdHkgYW5kIFdTLVNlY3VyaXR5IFBvbGljeS4gRm9yIFhNTC1FbmNyeXB0aW9uIGFuZApTaWduYXR1cmUgUmFtcGFydC9DIHVzZXMgT01YTUxTZWN1cml0eS4gQm90aCBSYW1wYXJ0L0MgYW5kIE9NWE1MU2VjdXJpdHkgdXNlcyA8YSBocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzMi9jL2RvY3Mvb21fdHV0b3JpYWwuaHRtbCIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPkFwYWNoZSBBWElPTTwvYT4gYW5kCkF4aXMyLVV0aWwgbGlicmFyaWVzLiBPcGVuU1NMIGlzIHVzZWQgYXMgdGhlIGNyeXB0byBsaWJyYXJ5IGluCk9NWE1MU2VjdXJpdHkuPC9wPjxpbWcgc3JjPSJmaWxlcy9yYW1wYXJ0X3NpbXBsZV9hcmNoaS5wbmciIGFsdD0iIj48L2ltZz48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48YSBuYW1lPSJJbnRlcmZhY2Vfd2l0aF9BeGlzMl9DIj48L2E+PGgyPkludGVyZmFjZSB3aXRoIEF4aXMyL0M8L2gyPjxwPlRoZSBpbnRlcmZhY2UgYmV0d2VlbiBSYW1wYXJ0L0MgYW5kIEFwYWNoZSBBeGlzMi9DIGVuZ2luZSBpcyB0aGUgUmFtcGFydAptb2R1bGUgY2FsbGVkIG1vZF9yYW1wYXJ0LiBUaGUgbW9kdWxlIGhhcyB0d28gaGFuZGxlcnMsIG9uZSBmb3IgdGhlIGluZmxvdwphbmQgYW5vdGhlciBmb3IgdGhlIG91dGZsb3cgb2YgdGhlIEF4aXMyL0MgZW5naW5lLiBSYW1wYXJ0L0MgZGlyZWN0cyBtZXNzYWdlcwp0byBpdCdzIG90aGVyIGNvbXBvbmVudHMgZm9yIGZ1cnRoZXIgc2VjdXJpdHkgcmVsYXRlZCBwcm9jZXNzaW5nIHVzaW5nIHRoZXNlCmhhbmRsZXJzLiA8L3A+PHA+SGFuZGxlcnMgYXJlIGEgd2F5IG9mIGV4dGVuZGluZyBjYXBhYmlsaXRpZXMgb2YgdGhlIGNvcmUgZW5naW5lLiBPbmNlIHRoZQpBeGlzMi9DIGVuZ2luZSBjYWxscyB0aGUgaW52b2tlKCkgbWV0aG9kIG9mIHRoZSBoYW5kbGVyLCB0aGUgbW9kdWxlIGNhbiBkbwp0aGUgbmVjZXNzYXJ5IHByb2Nlc3Npbmcgb3ZlciB0aGUgU09BUCBtZXNzYWdlLiBSYW1wYXJ0L0MgdXNlIHRoaXMgbWVjaGFuaXNtCnRvIGJ1aWxkL3Byb2Nlc3Mgc2VjdXJpdHkgcmVsYXRlZCBTT0FQIGhlYWRlcnMuPC9wPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9Ikluc2lkZV9SYW1wYXJ0X0MiPjwvYT48aDI+SW5zaWRlIFJhbXBhcnQvQzwvaDI+PHA+CkZvbGxvd2luZyBpcyBhIGRldGFpbGVkIGFyY2hpdGVjdHVyZSBkaWFncmFtIG9mIFJhbXBhcnQvQwo8L3A+PHA+PGltZyBzcmM9ImZpbGVzL3JhbXBhcnRfYXJjaGkucG5nIiBhbHQ9IiI+PC9pbWc+PC9wPjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IlJhbXBhcnRfRW5naW5lIj48L2E+PGgzPlJhbXBhcnQgRW5naW5lPC9oMz48cD5SYW1wYXJ0IGVuZ2luZSBpcyB0aGUgaGVhcnQgb2YgUmFtcGFydC9DLiBJdCBzZXRzIHNlY3VyaXR5IHBvbGljaWVzIHRoYXQKZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgUmFtcGFydC9DIG1lc3NhZ2UgcHJvY2Vzc2luZy4gVGhlc2UgcG9saWNpZXMgYXJlCnVzdWFsbHkgcmVhZCBmcm9tIGEgc2VsZWN0ZWQgcG9saWN5LnhtbCBmaWxlIGRlcGVuZGluZyBvbiB0aGUgbWVzc2FnZSBmbG93LAp3aGljaCBjb250YWlucyBhIHNldCBvZiBwb2xpY3kgYXNzZXJ0aW9ucy48L3A+PC9kaXY+PGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iUHJvY2Vzc29yc19hbmRfQnVpbGRlcnMiPjwvYT48aDM+UHJvY2Vzc29ycyBhbmQgQnVpbGRlcnM8L2gzPjxwPlJhbXBhcnQvQyBwcm9jZXNzZXMgaW5jb21pbmcgU09BUCBtZXNzYWdlIHVzaW5nIGl0J3MgcHJvY2Vzc29ycy4gVGhlcmUgYXJlCnR3byBwcm9jZXNzb3JzIGluIFJhbXBhcnQvQy48L3A+PG9sPgogIDxsaT48c3Ryb25nPlNlY3VyaXR5IEhlYWRlciBQcm9jZXNzb3I8L3N0cm9uZz4gOiBQcm9jZXNzZXMgc2VjdXJpdHkgaGVhZGVyCiAgICBvZiB0aGUgaW5jb21pbmcgbWVzc2FnZSBhbmQgbWFrZSBkZWNpc2lvbnMgdXBvbiBzZWN1cml0eSBjbGFpbXMgYW5kIHRoZQogICAgc2VjdXJpdHkgcG9saWNpZXMuPC9saT4KICA8bGk+PHN0cm9uZz5Ub2tlbiBQcm9jZXNzb3I8L3N0cm9uZz4gOiBQcm9jZXNzZXMgdG9rZW4gY2xhaW1zIHN1Y2ggYXMKICAgIGJpbmFyeSBzZWN1cml0eSB0b2tlbi48L2xpPgo8L29sPjxwPgpTaW1pbGFyIHRvIHByb2Nlc3NlcywgUmFtcGFydC9DIHVzZXMgdHdvIGJ1aWxkZXJzIHRoYXQgYnVpbGRzIG91dGdvaW5nCm1lc3NhZ2VzLgo8b2w+Cgk8bGk+PHN0cm9uZz5TZWN1cml0eSBIZWFkZXIgQnVpbGRlcjwvc3Ryb25nPiA6IEJ1aWxkcyBTZWN1cml0eSBoZWFkZXJzIG9mIGFuIG91dGdvaW5nCiAgICBtZXNzYWdlIGRlcGVuZGluZyBvbiBzZWN1cml0eSBwb2xpY2llcy48L2xpPgoJPGxpPjxzdHJvbmc+VG9rZW4gQnVpbGRlcjwvc3Ryb25nPiA6IEJ1aWxkcyB0b2tlbiBjbGFpbXMgc3VjaCBhcyBiaW5hcnkgc2VjdXJpdHkgdG9rZW4uPC9saT4KPC9vbD4KVGhlc2UgYnVpbGRlcnMgYW5kIHByb2Nlc3NlcyBhc3NlbWJsZSBvdGhlciBjb21wb25lbnRzIHN1Y2ggYXMgZW5jcnlwdGlvbiwKc2lnbmF0dXJlLCBVc2VybmFtZVRva2VuIHRvZ2V0aGVyLiBEZWNpc2lvbnMgYXJlIHRha2VuIGluIHRoZXNlIHByb2Nlc3Nlcwp3b3VsZCByZXN1bHQgaW4gZnVydGhlciBwcm9jZXNzaW5nIG9mIHRoZSBtZXNzYWdlIG9yIHRocm93aW5nIG9mIGEgIFNPQVAKZmF1bHQuCgo8L3A+PC9kaXY+PGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iUG9saWN5Ij48L2E+PGgzPlBvbGljeTwvaDM+PHA+VGhlIHBvbGljeSBtb2R1bGUgb2YgUmFtcGFydC9DIGFjdHMgYXMgdGhlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIGluClJhbXBhcnQvQy4gVGhlIHBvbGljeSBtb2R1bGUgaGFzIGEgc2V0IG9mIG1vZGVscyB0aGF0IHJlcHJlc2VudHMgYXNzZXJ0aW9ucy4KQWxzbyB0aGVyZSBhcmUgc2V0IG9mIGJ1aWxkZXJzIHRoYXQgYnVpbGRzIHRoZXNlIG1vZGVscy4gPGJyPjwvYnI+CjwvcD48cD5SYW1wYXJ0L0MgaXMgY29uZmlndXJlZCB1c2luZyBwb2xpY3kgYXNzZXJ0aW9ucyBkZWZpbmVkIGluIFdTLVNlY3VyaXR5ClBvbGljeSBzcGVjaWZpY2F0aW9uICgxLjEgb3IgMS4yKS4gVGhlc2UgcG9saWNpZXMgYXJlIGRlZmluZWQgaW4gcG9saWN5LnhtbCBmaWxlcy4KVGhlIGNsaWVudCBzaWRlIHBvbGljaWVzIGFyZSBkZWZpbmVkIGluIGEgc2VwZXJhdGUgcG9saWN5LnhtbCBmaWxlIGxvY2F0ZWQgaW4gdGhlIGNsaWVudCdzIHJlcG9zaXRvcnkuClRoZSBzZXJ2aWNlJ3MgcG9saWNpZXMgYXJlIGRlZmluZWQgaW4gdGhlIHNlcnZpY2VzLnhtbCBmaWxlLgoKPC9wPjwvZGl2PjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IlJhbXBhcnRfdXRpbGl0aWVzIj48L2E+PGgzPlJhbXBhcnQgdXRpbGl0aWVzPC9oMz48cD5SYW1wYXJ0IHV0aWxpdGllcyBncm91cHMgZGlmZmVyZW50IGVudGl0aWVzIHRoYXQgY2F0ZXIgZm9yIGRpZmZlcmVudApwdXJwb3Nlcy4gIEZvbGxvd2luZyBpcyBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIG1ham9yIGNvbXBvbmVudHMgaW5zaWRlCnV0aWxpdGllczwvcD48dWw+CiAgPGxpPjxzdHJvbmc+UmFtcGFydCBjb250ZXh0Ojwvc3Ryb25nPiBLZWVwcyBjb25maWd1cmF0aW9ucyBmb3IgUmFtcGFydC9DLgogICAgVGhpcyBpbmNsdWRlcyBjZXJ0aWZpY2F0ZXMsIGtleXMsIHBhc3N3b3JkcywgcG9saWNpZXMgZXRjLjwvbGk+CiAgPGxpPjxzdHJvbmc+VXNlcm5hbWVUb2tlbjogPC9zdHJvbmc+UHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvCiAgICBidWlsZC9wcm9jZXNzIGEgVXNlcm5hbWVUb2tlbi48L2xpPgogIDxsaT48c3Ryb25nPlRpbWVzdGFtcFRva2VuOiA8L3N0cm9uZz5Qcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8KICAgIGJ1aWxkL3Byb2Nlc3MgIGEgVGltZXN0YW1wVG9rZW4uPC9saT4KICA8bGk+PHN0cm9uZz5BdXRoZW50aWNhdGlvbiBwcm92aWRlcjogPC9zdHJvbmc+VGhlIGludGVyZmFjZSBmb3IKICAgIGF1dGhlbnRpY2F0aW9uIG1vZHVsZXMgdGhhdCBjYW4gYmUgcGx1Z2dlZCBpbnRvIFJhbXBhcnQvQy4gVGhpcyBhbGxvd3MKICAgIHVzZXJzIHRvIGRlZmluZSB0aGVpciBvd24gcnVsZXMgZm9yIHByb2Nlc3NpbmcgdXNlciBuYW1lIC8gcGFzc3dvcmRzLjwvbGk+CiAgPGxpPjxzdHJvbmc+Q3JlZGVudGlhbHMgcHJvdmlkZXI6IDwvc3Ryb25nPkFuIGludGVyZmFjZSBmb3IgYSBjcmVkZW50aWFscwogICAgbW9kdWxlIHRvIGJlIHBsdWdnZWQgaW4uIFVzZXJzIGNhbiBwcm92aWRlIGN1c3RvbSB1c2VyIG5hbWUvcGFzc3dvcmQKICAgIHBhaXJzIHRvIGJ1aWxkIHVzZXIgbmFtZSB0b2tlbnMuPC9saT4KICA8bGk+PHN0cm9uZz5QYXNzd29yZCBjYWxsYmFja3M6IDwvc3Ryb25nPkFuIGludGVyZmFjZSBmb3IgdXNlcnMgdG8gcHJvdmlkZQogICAgcGFzc3dvcmQgZm9yIGEgZ2l2ZW4gdXNlciBuYW1lLjwvbGk+CjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iT01YTUxTZWN1cml0eSI+PC9hPjxoMj5PTVhNTFNlY3VyaXR5PC9oMj48cD5Gb3IgWE1MIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMgUmFtcGFydC9DIHVzZXMgT01YTUxTZWN1cml0eSwgd2hpY2ggaXMgYQpsaWJyYXJ5IHdyaXR0ZW4gb24gdG9wIG9mIEFwYWNoZSBBWElPTS4gSWYgYSBwYXJ0aWN1bGFyIFNPQVAgbWVzc2FnZSBuZWVkcyB0bwpiZSBlbmNyeXB0ZWQgb3Igc2lnbmVkLCBSYW1wYXJ0L0MgZ2V0IHRoZSB3b3JrIGRvbmUgdGhyb3VnaCB0aGUKT01YTUxTZWN1cml0eS4gRm9sbG93aW5nIGFyZSB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIE9NWE1MU2VjdXJpdHkuPC9wPjxvbD4KICA8bGk+PHN0cm9uZz5YTUwtRW5jcnlwdGlvbiAvIERlY3J5cHRpb246PC9zdHJvbmc+IFRoaXMgaW5jbHVkZXMgc3ltbWV0cmljCiAgICBhbmQgYXN5bW1ldHJpYyBlbmNyeXB0aW9ucy4gVXN1YWxseSBkYXRhIGlzIGVuY3J5cHRlZCB1c2luZyBhIHN5bW1ldHJpYwogICAga2V5IChvciBhIHNlc3Npb24ga2V5KSB3aGljaCBpcyBhZ2FpbiBlbmNyeXB0ZWQgdXNpbmcgYW4gYXN5bW1ldHJpYwogICAgYWxnb3JpdGhtIHVzaW5nIGEgcHVibGljIGtleS48L2xpPgogIDxsaT48c3Ryb25nPlhNTC1TaWduYXR1cmUgIC8gVmVyaWZpY2F0aW9uOjwvc3Ryb25nPiBBbGxvd3Mgb25lIG9yIG1vcmUgcGFydAogICAgb2YgYW4gWE1MIGRvY3VtZW50IHRvIGJlIHNpZ25lZCB1c2luZyBhIHByaXZhdGUga2V5LiBBbHNvIGFsbG93cyB0aGVzZQogICAgc2lnbmVkIHBhcnRzIHRvIGJlIHZlcmlmaWVkLjwvbGk+CiAgPGxpPjxzdHJvbmc+S2V5IG1hbmFnZW1lbnQ6PC9zdHJvbmc+IFRvIGxvYWQgWDUwOSBjZXJ0aWZpY2F0ZXMsIFByaXZhdGUKICAgIGtleXMgZXRjLCB0aGUgS2V5IG1hbmFnZW1lbnQgaW50ZXJmYWNlIHByb3ZpZGUgYSBzZXJpZXMgb2YgZnVuY3Rpb25zLgogICAgS2V5cyBtaWdodCBiZSBzdG9yZWQgaW4gUEVNIGZpbGVzLCBQS0NTMTIga2V5IHN0b3JlcyBvciBjYW4gYmUgaW4gc3RyaW5nCiAgICBidWZmZXJzLjwvbGk+CiAgPGxpPjxzdHJvbmc+Q2Fub25pY2FsaXphdGlvbjo8L3N0cm9uZz4gUHJvdmlkZSBDYW5vbmljYWxpemF0aW9uIChDMTROKQogICAgdHJhbnNmb3JtIHN1cHBvcnQuPC9saT4KICA8bGk+PHN0cm9uZz5DcmVhdGluZy9Qcm9jZXNzaW5nIHRva2Vuczo8L3N0cm9uZz4gVGhlcmUgYXJlIG51bWJlciBvZiBYTUwKICAgIGVsZW1lbnRzIHRoYXQgYXJlIGludHJvZHVjZWQgYnkgc2VjdXJpdHkgc3BlY2lmaWNhdGlvbnMuIFRoZSB0b2tlbiBiYXNlCiAgICBpbiBPTVhNTFNlY3VyaXR5IHByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyB0byBjcmVhdGUvcHJvY2VzcyBzdWNoCiAgZWxlbWVudHMuPC9saT4KPC9vbD48cD5Gb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyB0aGUgYXJjaGl0ZWN0dXJlIG9mIE9NWE1MU2VjdXJpdHk8L3A+PGltZyBzcmM9ImZpbGVzL294c19hcmNoaS5wbmciIGFsdD0iIj48L2ltZz48cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluIj5QbGVhc2Ugc2VuZCB5b3VyIGZlZWRiYWNrIHRvIHRoZSBBcGFjaGUgQXhpczIvQwpkZXZlbG9wZXIgbWFpbGluZyBsaXN0ICg8YSBocmVmPSJtYWlsdG86cmFtcGFydC1jLWRldkB3cy5hcGFjaGUub3JnIj5yYW1wYXJ0LWMtZGV2QHdzLmFwYWNoZS5vcmc8L2E+KS4gU3Vic2NyaXB0aW9uCmRldGFpbHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgPGEgaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvcmFtcGFydC9jL2xpc3RzX2lzc3Vlcy5odG1sIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+UmFtcGFydCBzaXRlPC9hPi48L3A+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2xlYXIiPjxocj48L2hyPjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+PGRpdiBjbGFzcz0ieHJpZ2h0Ij6pIDIwMDUtMjAwOSwgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb248L2Rpdj48ZGl2IGNsYXNzPSJjbGVhciI+PGhyPjwvaHI+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4=