PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPjxodG1sPjxoZWFkPjx0aXRsZT5BcGFjaGUgQXhpczIvQyAtIEFwYWNoZSBBeGlzMi9DIC0gTWFudWFsPC90aXRsZT48c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwiPgogICAgICAgICAgQGltcG9ydCB1cmwoIi4uL3N0eWxlL21hdmVuLWJhc2UuY3NzIik7CiAgICAgICAgICAKCQkJICAgIEBpbXBvcnQgdXJsKCIuLi9zdHlsZS9tYXZlbi1jbGFzc2ljLmNzcyIpOzwvc3R5bGU+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9zdHlsZS9wcmludC5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0icHJpbnQiPjwvbGluaz48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj48L21ldGE+PC9oZWFkPjxib2R5IGNsYXNzPSJjb21wb3NpdGUiPjxkaXYgaWQ9ImJhbm5lciI+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyIgaWQ9Im9yZ2FuaXphdGlvbkxvZ28iPjxpbWcgYWx0PSJBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiIgc3JjPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvaW1hZ2VzL2FzZi1sb2dvLmdpZiI+PC9pbWc+PC9hPjxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2MiIGlkPSJwcm9qZWN0TG9nbyI+PGltZyBhbHQ9IkFwYWNoZSBBeGlzMi9DIiBzcmM9Imh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2ltYWdlcy9heGlzLmpwZyI+PC9pbWc+PC9hPjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJicmVhZGNydW1icyI+PGRpdiBjbGFzcz0ieGxlZnQiPgogICAgICAgICAgICAgICAgCUxhc3QgcHVibGlzaGVkOiAxNyBBcHJpbCAyMDA5CiAgICAgICAgICAgICAgICAgIHwgRG9jIGZvciAxLjYuMDwvZGl2PjxkaXYgY2xhc3M9InhyaWdodCI+PC9kaXY+PGRpdiBjbGFzcz0iY2xlYXIiPjxocj48L2hyPjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImxlZnRDb2x1bW4iPjxkaXYgaWQ9Im5hdmNvbHVtbiI+PGRpdiBpZD0ibWVudUFwYWNoZV9BeGlzMl9DIj48aDU+QXBhY2hlIEF4aXMyL0M8L2g1Pjx1bD48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL2luZGV4Lmh0bWwiPkFwYWNoZSBBeGlzMi9DIEhvbWU8L2E+PC9saT48bGkgY2xhc3M9ImV4cGFuZGVkIj48YSBocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzMi9jL2Rvd25sb2FkLmNnaSIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPkRvd25sb2FkIEF4aXMyL0M8L2E+PHVsPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvYXhpczIvYy9kb3dubG9hZC5jZ2kiIGNsYXNzPSJleHRlcm5hbExpbmsiIHRpdGxlPSJFeHRlcm5hbCBMaW5rIj5SZWxlYXNlczwvYT48L2xpPjwvdWw+PC9saT48bGkgY2xhc3M9ImV4cGFuZGVkIj48YSBocmVmPSIuLi9kb2NzL2luZGV4Lmh0bWwiPkRvY3VtZW50YXRpb248L2E+PHVsPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vZG9jcy9pbnN0YWxsYXRpb25ndWlkZS5odG1sIj5JbnN0YWxsYXRpb24gR3VpZGU8L2E+PC9saT48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL2RvY3MvYXhpczJjX21hbnVhbC5odG1sIj5BeGlzMi9DIG1hbnVhbDwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vZG9jcy9mYXEuaHRtbCI+QXhpczIvQyBGQVE8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vbGlzdHNfaXNzdWVzLmh0bWwiPkdldCBJbnZvbHZlZDwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9saXN0c19pc3N1ZXMuaHRtbCI+TWFpbGluZyBMaXN0cyAmYW1wOyBJc3N1ZSBUcmFja2luZzwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vc3ZuLmh0bWwiPkNoZWNrb3V0IFNvdXJjZSBDb2RlPC9hPjwvbGk+PC91bD48L2xpPjxsaSBjbGFzcz0iZXhwYW5kZWQiPjxhIGhyZWY9Ii4uL2NvZGluZ19jb252ZW50aW9ucy5odG1sIj5EZXZlbG9wZXIgR3VpZGVsaW5lczwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9jb2RpbmdfY29udmVudGlvbnMuaHRtbCI+Q29kaW5nIENvbnZlbnRpb248L2E+PC9saT48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL3ZlcnNpb25pbmcuaHRtbCI+VmVyc2lvbm5pbmc8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vdGVhbS1saXN0Lmh0bWwiPlByb2plY3QgSW5mb3JtYXRpb248L2E+PHVsPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vdGVhbS1saXN0Lmh0bWwiPlByb2plY3QgVGVhbTwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXdjdnMuY2dpL3dlYnNlcnZpY2VzL2F4aXMyL3RydW5rL2MvIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+U291cmNlIENvZGU8L2E+PC9saT48L3VsPjwvbGk+PC91bD48L2Rpdj48YSBocmVmPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy8iIHRpdGxlPSJCdWlsdCBieSBNYXZlbiIgaWQ9InBvd2VyZWRCeSI+PGltZyBhbHQ9IkJ1aWx0IGJ5IE1hdmVuIiBzcmM9Ii4uL2ltYWdlcy9sb2dvcy9tYXZlbi1idXR0b24tMS5wbmciPjwvaW1nPjwvYT48L2Rpdj48L2Rpdj48ZGl2IGlkPSJib2R5Q29sdW1uIj48ZGl2IGNsYXNzPSJjb250ZW50Qm94Ij48ZGl2IGNsYXNzPSJzZWN0aW9uIj48YSBuYW1lPSJQcmVhbWJsZSI+PC9hPjxoMj5QcmVhbWJsZTwvaDI+PHAgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPlRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQKdG8gYmUgYSByZWZlcmVuY2UKbWFudWFsIGZvciA8YSBocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzMi9jIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+QXBhY2hlCkF4aXMyL0M8L2E+LiBUaGlzCm1hbnVhbCBkZXRhaWxzIGhvdyBBeGlzMi9DIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYW5kIGNvbnN1bWUgV2ViCnNlcnZpY2VzLjwvcD48cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+UGxlYXNlIHNlbmQgeW91ciBmZWVkYmFjawp0byB0aGUgQXBhY2hlIEF4aXMyL0MKZGV2ZWxvcGVyIG1haWxpbmcgbGlzdCAoPGEgaHJlZj0ibWFpbHRvOmMtZGV2QGF4aXMuYXBhY2hlLm9yZyI+Yy1kZXZAYXhpcy5hcGFjaGUub3JnPC9hPikuClN1YnNjcmlwdGlvbgpkZXRhaWxzIGFyZSBhdmFpbGFibGUgb24gdGhlIDxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2MvbWFpbC1saXN0cy5odG1sIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+QXBhY2hlCkF4aXMyL0Mgd2Vic2l0ZTwvYT4uPC9wPjxwPlRoaXMgZG9jdW1lbnQgdXNlcyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zOjwvcD48dWw+CjxsaT5UaGUgZGlyZWN0b3J5IGVhY2ggcGFja2FnZSBpcyBpbnN0YWxsZWQgaW4gaXMgZ2l2ZW4gd2l0aCBhbgoiX0lOU1RBTExfRElSIiBzdWZmaXggdG8gdGhlIHBhY2thZ2UgbmFtZS4gRm9yIGV4YW1wbGUsIHRoZSBwYXRoIGluCndoaWNoIExpYnhtbDIgaXMgaW5zdGFsbGVkIGlzIHJlZmVycmVkIHRvIGFzIExJQlhNTDJfSU5TVEFMTF9ESVI8L2xpPgo8L3VsPjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IkF4aXMyX0NfTWFudWFsXy1fQ29udGVudHMiPjwvYT4KPGgyPkF4aXMyL0MgTWFudWFsIC0gQ29udGVudHM8L2gyPgo8b2w+CjxsaT48YSBocmVmPSIjcXVpY2tfc3RhcnQiPlF1aWNrIFN0YXJ0IEd1aWRlPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjcmVwb19mb2xkZXIiPlJlcG9zaXRvcnkgRm9sZGVyPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjc3ZjX2FwaSI+U2VydmljZSBBUEk8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNjbGllbnRfYXBpIj5DbGllbnQgQVBJPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjcmVzdCI+UkVTVDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI210b20iPk1UT008L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNlbmdhZ2luZ19tb2R1bGUiPkVuZ2FnaW5nIGEgTW9kdWxlPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjd3NfYWRkcmVzc2luZyI+V1MtQWRkcmVzc2luZzwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI3dyaXRpbmdfbW9kdWxlIj5Xcml0aW5nIGEgTW9kdWxlPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjc2ltcGxlX2F4aXNfc2VydmVyIj5TaW1wbGUgQXhpcwpTZXJ2ZXI8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNtb2RfYXhpczIiPkRlcGxveWluZyB3aXRoIEFwYWNoZTIKSFRUUCBXZWIgU2VydmVyPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjSUlTIj5EZXBsb3lpbmcgd2l0aCBNaWNyb3NvZnQgSUlTClNlcnZlcjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI3NzbF9jbGllbnQiPlVzaW5nIFNTTCBDbGllbnQ8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNwcm94eSI+VXNpbmcgUHJveHkgU3VwcG9ydDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI3Byb3h5X2F1dGgiPlVzaW5nIFByb3h5CkF1dGhlbnRpY2F0aW9uIFN1cHBvcnQ8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNodHRwX2F1dGgiPlVzaW5nIEhUVFAgQXV0aGVudGljYXRpb24KU3VwcG9ydDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI3dzZGwyYyI+V1NETDJDIFRvb2w8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiN0Y3B0cmFucyI+VENQIFRyYW5zcG9ydDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2FtcXB0cmFucyI+QU1RUCBUcmFuc3BvcnQ8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNhcmNoaXZlIj5BcmNoaXZlIEJhc2VkIERlcGxveW1lbnQ8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiN0Y3Btb24iPlRDUE1vbiBUb29sPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjYXBwQSI+QXBwZW5kaXggQSAtIGF4aXMyLnhtbDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2FwcEIiPkFwcGVuZGl4IEIgLSBzZXJ2aWNlcy54bWw8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNhcHBDIj5BcHBlbmRpeCBDIC0gbW9kdWxlLnhtbDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2FwcEQiPkFwcGVuZGl4IEQgLSBzZXJ2aWNlIGNsaWVudApvcHRpb25zPC9hPjwvbGk+Cjwvb2w+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJxdWlja19zdGFydCI+PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iMV9fUXVpY2tfU3RhcnRfR3VpZGUiPjwvYT4KPGgyPjEuIFF1aWNrIFN0YXJ0IEd1aWRlPC9oMj4KPHA+VGhpcyBzZWN0aW9uIGlzIGFpbWVkIHRvIGhlbHAgeW91IGdldCBhIFdlYiBzZXJ2aWNlIHJ1bm5pbmcgaW4KYSBzaG9ydAp0aW1lIHVzaW5nIEF4aXMyL0MsIGFuZCBjb25zdW1lIHRoYXQgc2VydmljZSB1c2luZyBhbiBBeGlzMi9DIGNsaWVudC48L3A+CjxwPkZpcnN0LCA8YSBocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzMi9jL2Rvd25sb2FkLmNnaSIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPmRvd25sb2FkPC9hPgp0aGUgbGF0ZXN0IGJpbmFyeSByZWxlYXNlIGZyb20gQXBhY2hlIEF4aXMyL0MuIE9uY2UgeW91IGRvd25sb2FkIHRoZQpjb3JyZWN0CmJpbmFyeSB0aGF0IHN1aXRzIHlvdXIgcGxhdGZvcm0sIGFsbCB0aGF0IHlvdSByZXF1aXJlIHRvIGdldCBpdCBydW5uaW5nCmlzIHRvCmV4dHJhY3QgdGhlIHBhY2thZ2UgdG8gYSBmb2xkZXIgb2YgeW91ciBjaG9pY2UsIGFuZCBzZXQgdGhlIEFYSVMyQ19IT01FCmVudmlyb25tZW50IHZhcmlhYmxlIHRvIHBvaW50IHRvIHRoaXMgZXh0cmFjdGVkIGZvbGRlci4gRm9yIExpbnV4LCB5b3UKbWF5CmhhdmUgdG8gc2V0IHRoZSBMRF9MSUJSQVJZX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgbGliCmZvbGRlciAoZS5nLiBhZGQgJEFYSVMyQ19IT01FL2xpYikuIEZvciBNUyBXaW5kb3dzLCB5b3Ugd2lsbCBoYXZlIHRvCmFkZCB0aGUKbGliIGZvbGRlciB0byB5b3VyIFBBVEggdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgQXhpczIvQyBETExzIHRvIHlvdXIKcGF0aC48L3A+CjxwPk5vdyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBkaXJlY3RvcnkgdG8gdGhlIGJpbgpmb2xkZXIgb2YgdGhlCmV4dHJhY3RlZCBmb2xkZXIsIGFuZCBydW4gdGhlIHNpbXBsZSBheGlzIHNlcnZlciBpbiBvbmUgY29tbWFuZCBzaGVsbC4KVGhlbgpjaGFuZ2UgdGhlIGRpcmVjdG9yeSB0byBzYW1wbGVzL2JpbiBpbiBhbm90aGVyIGNvbW1hbmQgc2hlbGwgYW5kIHJ1bgphbnkgb2YKdGhlIHNhbXBsZXMgdGhlcmUgKHlvdSBtYXkgaGF2ZSB0byBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbgp0aGlzIG5ldwpzaGVsbCBhcyB3ZWxsKS4gUGxlYXNlIHNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvYXhpczIvYy9kb2NzL2luc3RhbGxhdGlvbmd1aWRlLmh0bWwiIGNsYXNzPSJleHRlcm5hbExpbmsiIHRpdGxlPSJFeHRlcm5hbCBMaW5rIj5pbnN0YWxsYXRpb24KZ3VpZGU8L2E+IGZvciBtb3JlIGRldGFpbHMuPC9wPgo8cD5PbmNlIHlvdSBoYXZlIEF4aXMyL0MgdXAgYW5kIHJ1bm5pbmcgc3VjY2Vzc2Z1bGx5LCB5b3UgY2FuCnN0YXJ0IHdyaXRpbmcKeW91ciBvd24gc2VydmljZXMgYW5kIGNsaWVudHMuIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZXhwbGFpbiBob3cgdG8Kd3JpdGUKeW91ciBmaXJzdCBzZXJ2aWNlIGFuZCBjbGllbnQgd2l0aCBBeGlzMi9DLjwvcD4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8xX0hlbGxvX1NlcnZpY2UiPjwvYT4KPGgzPjEuMSBIZWxsbyBTZXJ2aWNlPC9oMz4KPHA+TGV0J3Mgc2VlIGhvdyB5b3UgY2FuIHdyaXRlIHlvdXIgZmlyc3QgV2ViIHNlcnZpY2Ugd2l0aApBeGlzMi9DIGFuZCBob3cgdG8KZGVwbG95IGl0LjwvcD4KPHA+VGhlIGZpcnN0IHNlcnZpY2UgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUgaXMgbmFtZWQgImhlbGxvIgp3aXRoIGEKc2luZ2xlIG9wZXJhdGlvbiBuYW1lZCAiZ3JlZXQiIGluIHRoZSBzZXJ2aWNlLiBUaGlzICJncmVldCIgb3BlcmF0aW9uLAp3aGVuCmludm9rZWQgYnkgdGhlIGNsaWVudCwgd2lsbCBleHBlY3QgdGhlIGNsaWVudCB0byBzZW5kIGEgZ3JlZXRpbmcgaW4gdGhlCnJlcXVlc3QsIGFuZCBpbiB0dXJuIHNlbmQgYSBncmVldGluZyBpbiB0aGUgcmVzcG9uc2UuIEZvbGxvd2luZyBhcmUKZXhhbXBsZXMKb2YgWE1MIHBheWxvYWRzIGV4Y2hhbmdlZCBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2aWNlOjwvcD4KPHA+UmVxdWVzdDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+ICZsdDtncmVldCZndDs8YnI+PC9icj4gSGVsbG8gU2VydmljZSE8YnI+PC9icj4gJmx0O2dyZWV0Jmd0Ozxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+UmVzcG9uc2U6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiAmbHQ7Z3JlZXRSZXNwb25zZSZndDs8YnI+PC9icj4gSGVsbG8gQ2xpZW50ITxicj48L2JyPiAmbHQ7Z3JlZXRSZXNwb25zZSZndDs8YnI+PC9icj48L3ByZT4KPC9kaXY+Cjxicj48L2JyPgo8cD5UaGUgc3RlcHMgdG8gYmUgZm9sbG93ZWQgd2hlbiBpbXBsZW1lbnRpbmcgYSBzZXJ2aWNlIHdpdGgKQXhpczIvQwppbmNsdWRlOjwvcD4KPG9sPgo8bGk+PGI+SW1wbGVtZW50IHRoZSBmdW5jdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUKb3BlcmF0aW9ucyBvZiB0aGUgc2VydmljZS48L2I+IDxicj48L2JyPgpJbiBvdXIgc2FtcGxlLCB3ZSB3aWxsIGhhdmUgb25lIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyB0aGUgImdyZWV0IgpvcGVyYXRpb24uIDxicj48L2JyPgpXZSB3aWxsIG5hbWUgdGhhdCBmdW5jdGlvbiA8Y29kZT5heGlzMl9oZWxsb19ncmVldDwvY29kZT4uPC9saT4KPGxpPjxiPkltcGxlbWVudCB0aGUgZnVuY3Rpb25zIGRlZmluZWQgYnkgdGhlIDxjb2RlPmF4aXMyX3N2Y19za2VsZXRvbjwvY29kZT4KaW50ZXJmYWNlPC9iPjxicj48L2JyPgo8Y29kZT5heGlzMl9zdmNfc2tlbGV0b248L2NvZGU+IGludGVyZmFjZSBleHBlY3RzIHRoZQpmdW5jdGlvbnMgPGNvZGU+aW5pdDwvY29kZT4sIDxjb2RlPmludm9rZTwvY29kZT4sCjxjb2RlPm9uX2ZhdWx0PC9jb2RlPiBhbmQgPGNvZGU+ZnJlZTwvY29kZT4KdG8gYmUgaW1wbGVtZW50ZWQgYnkgb3VyIHNlcnZpY2UuPGJyPjwvYnI+CkluIG91ciBzYW1wbGUsIHdlIHdvdWxkIGltcGxlbWVudCB0aG9zZSBhbmQgbmFtZSB0aGVtIGFzIDxjb2RlPmhlbGxvX2luaXQ8L2NvZGU+LAo8Y29kZT5oZWxsb19pbnZva2U8L2NvZGU+LCA8Y29kZT5oZWxsb19vbl9mYXVsdDwvY29kZT4KYW5kIDxjb2RlPmhlbGxvX2ZyZWU8L2NvZGU+IHJlc3BlY3RpdmVseS48YnI+PC9icj4KPC9saT4KPGxpPjxiPkltcGxlbWVudCB0aGUgY3JlYXRlIGZ1bmN0aW9uLCB0aGF0IHdvdWxkIGNyZWF0ZQphbiBpbnN0YW5jZSBvZiB0aGUgc2VydmljZSBza2VsZXRvbjwvYj48YnI+PC9icj4KVGhlIGNyZWF0ZSBmdW5jdGlvbiB3b3VsZCBjcmVhdGUgYW4gYXhpczJfc3ZjX3NrZWxldG9uIGFuZCBhc3NpZ24gdGhlCnJlc3BlY3RpdmUgZnVuY3Rpb24gcG9pbnRlcnMgdG8gbWFwIHRoZSBheGlzMl9zdmNfc2tlbGV0b24gaW50ZXJmYWNlIHRvCm91ciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gbWV0aG9kcyBleHBsYWluZWQgaW4gdGhlIGFib3ZlIHN0ZXAuPGJyPjwvYnI+CjwvbGk+CjxsaT48Yj5JbXBsZW1lbnQgYXhpczJfZ2V0X2luc3RhbmNlIGFuZApheGlzMl9yZW1vdmVfaW5zdGFuY2UgZnVuY3Rpb25zPC9iPjxicj48L2JyPgpUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gY3JlYXRlIGFuZCBkZXN0cm95IHNlcnZpY2UgaW5zdGFuY2VzIGJ5IHRoZQplbmdpbmUsIGFuZCBlYWNoIHNlcnZpY2UgbXVzdCBkZWZpbmUgdGhlc2UgZnVuY3Rpb25zLjxicj48L2JyPgo8L2xpPgo8bGk+PGI+V3JpdGUgdGhlIHNlcnZpY2VzLnhtbCBmaWxlIGZvciB0aGUgc2VydmljZTwvYj48YnI+PC9icj4KVGhlIHNlcnZpY2VzLnhtbCBmaWxlIGFjdHMgYXMgdGhlIGRlcGxveW1lbnQgZGVzY3JpcHRvciBmaWxlIGZvciB0aGUKc2VydmljZS4gQXMgdGhlIGJhcmUgbWluaW11bSwgd2UgbmVlZCB0byBjb25maWd1cmUgdGhlIHNlcnZpY2UgbmFtZSwKb3BlcmF0aW9ucywgYW5kIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlIG5hbWUgY29udGFpbmluZyB0aGUgc2VydmljZQppbXBsZW1lbnRhdGlvbiBpbiB0aGlzIGZpbGUuPGJyPjwvYnI+CkFzIHByZXZpb3VzbHkgZGVjaWRlZCwgd2Ugd2lsbCBuYW1lIHRoZSBzZXJ2aWNlICJoZWxsbyIsIHRoZSBvcGVyYXRpb24KImdyZWV0IiBhbmQgdGhlIHNoYXJlZCBsaWJyYXJ5IGxpYmhlbGxvLnNvIG9uIExpbnV4IGFuZCBoZWxsby5kbGwgb24gTVMKV2luZG93cy48YnI+PC9icj4KPC9saT4KPC9vbD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjFfMV8xX09wZXJhdGlvbl9JbXBsZW1lbnRhdGlvbiI+PC9hPgo8aDM+MS4xLjEgT3BlcmF0aW9uIEltcGxlbWVudGF0aW9uPC9oMz4KPHA+TG9vayBmb3IgdGhlIDxjb2RlPmF4aXMyX2hlbGxvX2dyZWV0PC9jb2RlPgpmdW5jdGlvbiBpbiB0aGUgPGEgaHJlZj0iaGVsbG8vc2VydmljZS9oZWxsb19zdmMuYy5odG1sIj5oZWxsb19zdmMuYzwvYT4Kc291cmNlIGZpbGUuPC9wPgo8cD5UaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIGJ1c2luZXNzIGxvZ2ljIGZvciB0aGUgZ3JlZXQKb3BlcmF0aW9uLiBXZQp3aWxsIGJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW52b2tlCmZ1bmN0aW9uLgpCYXNpY2FsbHksIHRoaXMgZnVuY3Rpb24gcmVjZWl2ZXMgdGhlIHJlcXVlc3QgcGF5bG9hZCBhcyBhbgo8Y29kZT5heGlvbV9ub2RlPC9jb2RlPiwgcHJvY2VzcyBpdCB0byB1bmRlcnN0YW5kIHRoZQpyZXF1ZXN0IGxvZ2ljLCBhbmQKcHJlcGFyZXMgdGhlIHJlc3BvbnNlIGFzIGFuIDxjb2RlPmF4aW9tX25vZGU8L2NvZGU+IGFuZApyZXR1cm5zIHRoYXQuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8xXzJfU2tlbGV0b25fQ3JlYXRlX01ldGhvZCI+PC9hPgo8aDM+MS4xLjIgU2tlbGV0b24gQ3JlYXRlIE1ldGhvZDwvaDM+CjxwPkxvb2sgZm9yIHRoZSA8Y29kZT5heGlzMl9oZWxsb19jcmVhdGU8L2NvZGU+CmZ1bmN0aW9uIGluIHRoZSA8YSBocmVmPSJoZWxsby9zZXJ2aWNlL2hlbGxvX3N2Yy5jLmh0bWwiPmhlbGxvX3N2Yy5jPC9hPgpzb3VyY2UgZmlsZS48L3A+CjxwPlRoZSBjcmVhdGUgZnVuY3Rpb24gY3JlYXRlcyBhbmQgcmV0dXJucyBhIG5ldwo8Y29kZT5heGlzMl9zdmNfc2tlbGV0b248L2NvZGU+IGluc3RhbmNlLiBUaGUgbW9zdAppbXBvcnRhbnQgYXNwZWN0IHRvIG5vdGUKYWJvdXQgdGhpcyBmdW5jdGlvbiBpcyB0aGUgZnVuY3Rpb24gcG9pbnRlciBhc3NpZ25tZW50cy4gVGhleSBhcmUgdXNlZAp0byBtYXAKdGhlIGludGVyZmFjZSBvcGVyYXRpb25zIHRvIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyBvZiB0aGUKaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgZG9uZSBieSBhc3NpZ25pbmcgdGhlIG9wcyBtZW1iZXIgb2YgdGhlIHNlcnZpY2UKc2tlbGV0b24gdG8gdGhlIGFkZHJlc3Mgb2YgdGhlIG9wcyBzdHJ1Y3QgdmFyaWFibGUuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8xXzNfSW52b2tpbmdfT3BlcmF0aW9uX0ltcGxlbWVudGF0aW9uIj48L2E+CjxoMz4xLjEuMyBJbnZva2luZyBPcGVyYXRpb24gSW1wbGVtZW50YXRpb248L2gzPgo8cD5UaGUgaW52b2tlIG1ldGhvZCBvZiB0aGUgc2VydmljZSBza2VsZXRvbiBpcyB0aGUgcG9pbnQgb2YKZW50cnkgZm9yCmludm9raW5nIHRoZSBvcGVyYXRpb25zLiBIZW5jZSBpbiBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludm9rZQpmdW5jdGlvbiwKd2UgaGF2ZSB0byBkZWZpbmUgaG93IHRoZSBvcGVyYXRpb25zIGFyZSB0byBiZSBjYWxsZWQuPC9wPgo8cD5Mb29rIGZvciB0aGUgPGNvZGU+aGVsbG9faW52b2tlPC9jb2RlPiBmdW5jdGlvbgppbiB0aGUgPGEgaHJlZj0iaGVsbG8vc2VydmljZS9oZWxsb19zdmMuYy5odG1sIj5oZWxsb19zdmMuYzwvYT4Kc291cmNlIGZpbGUuPC9wPgo8cD5JbiBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIDxjb2RlPmhlbGxvX2ludm9rZTwvY29kZT4sCndlIGNhbGwgdGhlCmZ1bmN0aW9uIGltcGxlbWVudGluZyB0aGUgZ3JlZXQgb3BlcmF0aW9uLiBBcyB3ZSBoYXZlIG9ubHkgb25lCm9wZXJhdGlvbiwgdGhlCnRhc2sgaXMgc2ltcGxlIGhlcmUuIElmIHdlIGhhZCBtdWx0aXBsZSBvcGVyYXRpb25zLCB3ZSB3aWxsIGhhdmUgdG8KbG9vayBpbnRvCnRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgbWVzc2FnZSBjb250ZXh0IHRvIG1hcCBpdCB0byB0aGUgZXhhY3QKb3BlcmF0aW9uLiA8YnI+PC9icj4KVGhlIEF4aXMyL0MgZW5naW5lIHdpbGwgY2FsbCB0aGUgaW52b2tlIG1ldGhvZCB3aXRoIGFuCjxjb2RlPmF4aW9tX25vZGU8L2NvZGU+LCBjb250YWluaW5nIHRoZSByZXF1ZXN0IHBheWxvYWQsCmFuZAo8Y29kZT5heGlzMl9tc2dfY3R4PC9jb2RlPiBpbnN0YW5jZSwgY29udGFpbmluZyB0aGUgbWVzc2FnZQpjb250ZXh0CmluZm9ybWF0aW9uLCBpbiBhZGRpdGlvbiB0byB0aGUgc2VydmljZSBza2VsZXRvbiBhbmQgdGhlIGVudmlyb25tZW50CnBvaW50ZXJzLiBXZSBjYW4gdXNlIHRoZSBtZXNzYWdlIGNvbnRleHQgdG8gZXh0cmFjdCB3aGF0ZXZlcgppbmZvcm1hdGlvbiB3ZQpkZWVtIG5lY2Vzc2FyeSB0aGF0IGlzIHJlbGF0ZWQgdG8gdGhlIGluY29taW5nIG1lc3NhZ2UuIFRoZSBBeGlzMi9DCmVuZ2luZQpleHBlY3RzIHRoZSBpbnZva2UgbWV0aG9kIHRvIHJldHVybiBhIHBvaW50ZXIgdG8gYW4gPGNvZGU+YXhpb21fbm9kZTwvY29kZT4sCnJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2UgcGF5bG9hZC48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxXzFfNF9GdWxsX1NvdXJjZSI+PC9hPgo8aDM+MS4xLjQgRnVsbCBTb3VyY2U8L2gzPgo8cD5IZXJlIGlzIHRoZSBjb21wbGV0ZSBzb3VyY2UgY29kZSBmb3IgdGhlIHNlcnZpY2UgOiA8YSBocmVmPSJoZWxsby9zZXJ2aWNlL2hlbGxvX3N2Yy5jLmh0bWwiPmhlbGxvX3N2Yy5jPC9hPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjFfMV81X1NlcnZpY2VfRGVzY3JpcHRvciI+PC9hPgo8aDM+MS4xLjUgU2VydmljZSBEZXNjcmlwdG9yPC9oMz4KPHA+VGhlIHNlcnZpY2VzLnhtbCBmaWxlIGNvbnRhaW5zIGRldGFpbHMgb24gdGhlIHNlcnZpY2UgdGhhdAp3b3VsZCBiZSByZWFkCmJ5IHRoZSBBeGlzMi9DIGRlcGxveW1lbnQgZW5naW5lIGR1cmluZyBzZXJ2ZXIgc3RhcnQgdXAgdGltZS4gVGhlCmZvbGxvd2luZwpzaG93cyB0aGUgY29udGVudHMgZm9yIHRoZSBzZXJ2aWNlcy54bWwgZmlsZSBmb3IgdGhlIGhlbGxvIHNlcnZpY2UuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiZsdDtzZXJ2aWNlIG5hbWU9ImhlbGxvIiZndDs8YnI+PC9icj4gJmx0O3BhcmFtZXRlciBuYW1lPSJTZXJ2aWNlQ2xhc3MiIGxvY2tlZD0ieHNkOmZhbHNlIiZndDtoZWxsbyZsdDsvcGFyYW1ldGVyJmd0Ozxicj48L2JyPiAmbHQ7ZGVzY3JpcHRpb24mZ3Q7PGJyPjwvYnI+IFF1aWNrIHN0YXJ0IGd1aWRlIGhlbGxvIHNlcnZpY2Ugc2FtcGxlLjxicj48L2JyPiAmbHQ7L2Rlc2NyaXB0aW9uJmd0Ozxicj48L2JyPiAmbHQ7b3BlcmF0aW9uIG5hbWU9ImdyZWV0Ii8mZ3Q7PGJyPjwvYnI+Jmx0Oy9zZXJ2aWNlJmd0Ozxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+VGhlIHNlcnZpY2UgY29uZmlndXJhdGlvbiBzaG93biBhYm92ZSBzcGVjaWZpZXMgdGhhdCB0aGUgbmFtZQpvZiB0aGUKc2VydmljZSBpcyBoZWxsby4gPGJyPjwvYnI+ClRoZSB2YWx1ZSBvZiB0aGUgIlNlcnZpY2VDbGFzcyIsICJoZWxsbyIgaW4gdGhpcyBjYXNlLCB3aWxsIGJlIG1hcHBlZAp0byB0aGUKc2VydmljZSBpbXBsZW1lbnRhdGlvbiBieSB0aGUgZGVwbG95bWVudCBlbmdpbmUgYXMgbGliaGVsbG8uc28gb24gTGludXgKb3IKaGVsbG8uZGxsIG9uIE1TIFdpbmRvd3MuIFRoZSBkZXNjcmlwdGlvbiBlbGVtZW50IGNvbnRhaW5zIGEgYnJpZWYKZGVzY3JpcHRpb24Kb2YgdGhlIHNlcnZpY2UuIDxicj48L2JyPgpUaGVyZSBjYW4gYmUgb25lIG9yIG1vcmUgb3BlcmF0aW9uIGVsZW1lbnRzLiBGb3IgdGhpcyBzYW1wbGUsIHdlIG9ubHkKaGF2ZQpvbmUgb3BlcmF0aW9uLCB3aXRoIHRoZSBuYW1lICJncmVldCIuPGJyPjwvYnI+CjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjFfMV82X0NvbXBpbGluZ190aGVfU2VydmljZSI+PC9hPgo8aDM+MS4xLjYgQ29tcGlsaW5nIHRoZSBTZXJ2aWNlPC9oMz4KPHA+WW91IGNhbiBjb21waWxlIHRoZSBzZXJ2aWNlIHNhbXBsZSBhcyBzaG93biBiZWxvdy48L3A+CjxwPk9uIExpbnV4OjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5nY2MgLXNoYXJlZCAtb2xpYmhlbGxvLnNvIC1JJEFYSVMyQ19IT01FL2luY2x1ZGUvYXhpczItMS42LjAvIC1MJEFYSVMyQ19IT01FL2xpYiAtbGF4dXRpbCAtbGF4aXMyX2F4aW9tIC1sYXhpczJfcGFyc2VyIC1sYXhpczJfZW5naW5lIC1scHRocmVhZCAtbGF4aXMyX2h0dHBfc2VuZGVyIC1sYXhpczJfaHR0cF9yZWNlaXZlciBoZWxsb19zdmMuYzxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+T24gTVMgV2luZG93czo8L3A+CjxwPnRvIGNvbXBpbGUsPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmNsLmV4ZSAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiQVhJUzJfREVDTEFSRV9FWFBPUlQiIC9EICJBWElTMl9TVlJfTVVMVElfVEhSRUFERUQiIC93IC9ub2xvZ28gL0kgJUFYSVMyQ19IT01FJVxpbmNsdWRlIC9jIGhlbGxvX3N2Yy5jPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD50byBsaW5rLDwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5saW5rLmV4ZSAvbm9sb2dvIC9MSUJQQVRIOiVBWElTMkNfSE9NRSVcbGliIGF4dXRpbC5saWIgYXhpb20ubGliIGF4aXMyX3BhcnNlci5saWIgYXhpczJfZW5naW5lLmxpYiAvRExMIC9PVVQ6aGVsbG8uZGxsICoub2JqPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8xXzdfRGVwbG95aW5nX3RoZV9TZXJ2aWNlIj48L2E+CjxoMz4xLjEuNyBEZXBsb3lpbmcgdGhlIFNlcnZpY2U8L2gzPgo8cD5UbyBtYWtlIHRoZSBzZXJ2aWNlIGF2YWlsYWJsZSB0byBiZSBjb25zdW1lZCBieSB0aGUgY2xpZW50cywKd2UgaGF2ZSB0bwpkZXBsb3kgdGhlIHNlcnZpY2UuIFRvIGRlcGxveSB0aGUgc2VydmljZSwgeW91IGhhdmUgdG8gY3JlYXRlIGEgZm9sZGVyCm5hbWVkCidoZWxsbycgaW4gdGhlIEFYSVMyQ19IT01FL3NlcnZpY2VzIGZvbGRlciwgYW5kIGNvcHkgdGhlIHNlcnZpY2VzLnhtbApmaWxlCmFuZCB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZSAobGliaGVsbG8uc28gb24gTGludXggb3IgaGVsbG8uZGxsIG9uIE1TCldpbmRvd3MpCmludG8gdGhhdCBmb2xkZXIuPC9wPgo8cD5UbyB2ZXJpZnkgdGhhdCB5b3VyIHNlcnZpY2UgaGFzIGJlZW4gY29ycmVjdGx5IGRlcGxveWVkLCB5b3UKY2FuIHN0YXJ0IHRoZQpzaW1wbGUgYXhpcyBzZXJ2ZXIgYW5kIHRoZW4gYnJvd3NlIHRoZSBsaXN0IG9mIGRlcGxveWVkIHNlcnZpY2VzIHVzaW5nCmEgV2ViCmJyb3dzZXIuIFRvIHN0YXJ0IHRoZSBzaW1wbGUgYXhpcyBzZXJ2ZXIsIHlvdSBjYW4gZ28gdG8gdGhlCkFYSVMyQ19IT01FL2Jpbgpmb2xkZXIgYW5kIHJ1biB0aGUgZXhlY3V0YWJsZSBheGlzMl9odHRwX3NlcnZlci4gVGhlIGRlZmF1bHQgVVJMIHRoYXQKeW91IGNhbgp0ZXN0IHRoZSBzZXJ2aWNlIGxpc3Qgd2l0aCBpcyA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjkwOTAvYXhpczIvc2VydmljZXMiIGNsYXNzPSJleHRlcm5hbExpbmsiIHRpdGxlPSJFeHRlcm5hbCBMaW5rIj5odHRwOi8vbG9jYWxob3N0OjkwOTAvYXhpczIvc2VydmljZXM8L2E+LgpZb3Ugc2hvdWxkIGdldCBhbiBlbnRyeSBmb3IgdGhlIGhlbGxvIHNlcnZpY2Ugb24gdGhlIHBhZ2UgdGhhdCBpcwpkaXNwbGF5ZWQuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8xXzhfUHJvdmlkaW5nX2FfV1NETF9mb3JfdGhlX1NlcnZpY2UiPjwvYT4KPGgzPjEuMS44IFByb3ZpZGluZyBhIFdTREwgZm9yIHRoZSBTZXJ2aWNlPC9oMz4KPHA+QXhpczIvQyBkb2VzIG5vdCBzdXBwb3J0IGR5bmFtaWMgV1NETCBnZW5lcmF0aW9uLiBIb3dldmVyLCBpdAppcyBwb3NzaWJsZSB0byBhdHRhY2ggdGhlIGNvbnRyYWN0IHlvdSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBzZXJ2aWNlCnNrZWxldG9uLCB0byB0aGUgcmVzcGVjdGl2ZSBzZXJ2aWNlLiBUaGlzIGNhbiBiZSBkb25lIGluIHR3byB3YXlzLjwvcD4KPG9sPgo8bGk+QWRkaW5nIHRoZSBXU0RMIGZpbGUgdG8gdGhlIGZvbGRlciBpbiB3aGljaCB0aGUgc2VydmljZSBETEwKaXMgZm91bmQuCjwvbGk+CjxsaT5Qcm92aWRpbmcgdGhlIHBhdGggb2YgdGhlIFdTREwgZmlsZSBpbiB0aGUgc2VydmljZXMueG1sLgo8L2xpPgo8L29sPgo8cD5JZiB5b3UgY2hvb3NlIHRoZSBmaXJzdCBvcHRpb24sIHlvdSB3aWxsIGhhdmUgdG8gY29weSB0aGUgV1NETApmaWxlIHRvIHRoZSBmb2xkZXIgaW4gd2hpY2ggdGhlIHNlcnZpY2UgRExMIGlzIGZvdW5kLiBUaGUgbmFtZSBvZiB0aGUKV1NETCBmaWxlIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgc2VydmljZS4gQW5kLCBpZiB5b3UgY2hvb3NlIHRoZQpzZWNvbmQgb3B0aW9uLCB5b3Ugd2lsbCBoYXZlIHRvIG1ha2UgdXNlIG9mIHRoZSA8Yj48Y29kZT53c2RsX3BhdGg8L2NvZGU+PC9iPgpwYXJhbWV0ZXIgaW4gdGhlIHNlcnZpY2VzLnhtbCBmaWxlLiBNb3JlIGluZm8gb24gaG93IHRoaXMgY2FuIGJlIGRvbmUKaXMgZm91bmQgdW5kZXIgdGhlIDxhIGhyZWY9IiNhcHBCIj5zZXJ2aWNlcy54bWw8L2E+CnNlY3Rpb24uPC9wPgo8cD5BbiBleGFtcGxlIG9mIHRoZSBzZWNvbmQgb3B0aW9uIGNhbiBiZSBmb3VuZCB0aGUgc2VydmljZXMueG1sCm9mIHRoZSA8Yj5lY2hvPC9iPiBzYW1wbGUgc2VydmljZSwgd2hpY2ggaXMgY29tbWVudGVkLiBBbgpleGFtcGxlIG9mIHRoZSBmaXJzdCBvcHRpb24gaW4gdXNlIGlzIHNlZW4gaW4gdGhlIDxiPkNhbGN1bGF0b3I8L2I+CnNhbXBsZSBzZXJ2aWNlLjwvcD4KPHA+VGhlIHN0YXRpYyBXU0RMIGZpbGUgY2FuIGJlIGFjY2Vzc2VkIGJ5IGFwcGVuZGluZyA8Y29kZT4/d3NkbDwvY29kZT4KdG8gdGhlIHNlcnZpY2UgZW5kLXBvaW50LiBZb3UgY2FuIHZpZXcgdGhlIFdTREwgcHJvdmlkZWQgZm9yIHRoZQpDYWxjdWxhdG9yIHNhbXBsZSwgYnkgcG9pbnRpbmcgdG8gPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo5MDkwL2F4aXMyL3NlcnZpY2VzL0NhbGN1bGF0b3I/d3NkbCIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPmh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC9heGlzMi9zZXJ2aWNlcy9DYWxjdWxhdG9yP3dzZGw8L2E+LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjFfMl9IZWxsb19DbGllbnQiPjwvYT4KPGgzPjEuMiBIZWxsbyBDbGllbnQ8L2gzPgo8cD5Ob3cgdGhhdCB5b3Uga25vdyBob3cgdG8gd3JpdGUgYSBzZXJ2aWNlIHdpdGggQXhpczIvQywgbGV0J3MKc2VlIGhvdyB0bwp3cml0ZSBhIGNsaWVudCB0byBjb25zdW1lIHRoYXQgc2VydmljZS4gVGhlIHJlcXVlc3QgcGF5bG9hZCB0aGF0IHRoZQpjbGllbnQKd2lsbCBiZSBzZW5kaW5nIHRvIHRoZSBzZXJ2aWNlIHdhcyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uClRoZQpjbGllbnQgaGFzIHRvIHByZXBhcmUgdGhlIHBheWxvYWQsIHNlbmQgaXQgdG8gdGhlIHNlcnZpY2UsIGFuZCB0aGVuCnJlY2VpdmUKYW5kIHByb2Nlc3MgdGhlIHJlc3BvbnNlLjwvcD4KPHA+VGhlIHN0ZXBzIHRvIGJlIGZvbGxvd2VkIHdoZW4gaW1wbGVtZW50aW5nIGEgY2xpZW50IHdpdGgKQXhpczIvQzo8L3A+CjxvbD4KPGxpPjxiPkNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgdG8gYmUgdXNlZCBieSB0aGUgY2xpZW50LjwvYj4KPGJyPjwvYnI+CkVhY2ggZnVuY3Rpb24gaW4gQXhpczIvQyB0YWtlcyBhIHBvaW50ZXIgdG8gdGhlIGVudmlyb25tZW50IGluc3RhbmNlCnRoYXQgZW5jYXBzdWxhdGVzIHRoZSBtZW1vcnkgYWxsb2NhdG9yLCBlcnJvciBoYW5kbGVyLCBhbmQgbG9nZ2luZyBhbmQKdGhyZWFkaW5nIG1lY2hhbmlzbXMuIFRoZSA8Y29kZT5heHV0aWxfZW52X2NyZWF0ZV9hbGw8L2NvZGU+Cm1ldGhvZCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBkZWZhdWx0LCByZWFkeSB0byB1c2UgZW52aXJvbm1lbnQKaW5zdGFuY2UuPGJyPjwvYnI+CjwvbGk+CjxsaT48Yj5DcmVhdGUgYW4gb3B0aW9ucyBpbnN0YW5jZSwgYW5kIHNldCBvcHRpb25zPC9iPi48YnI+PC9icj4KVGhlPGNvZGU+IGF4aXMyX29wdGlvbnM8L2NvZGU+IHN0cnVjdCBjYW4gYmUgdXNlZCB0byBzZXQKdGhlIGNsaWVudCBzaWRlIG9wdGlvbnMuIEZvciBleGFtcGxlLCB3ZSBjYW4gdXNlIG9wdGlvbnMgdG8gc2V0IHRoZQplbmRwb2ludCBhZGRyZXNzIG9mIHRoZSBzZXJ2aWNlIHRvIGJlIGNvbnN1bWVkIGJ5IHRoZSBjbGllbnQuPC9saT4KPGxpPjxiPkNyZWF0ZSBhIHNlcnZpY2UgY2xpZW50IGluc3RhbmNlLCBnaXZpbmcgdGhlCmNsaWVudCByZXBvc2l0b3J5IGZvbGRlciBhcyBhIHBhcmFtZXRlci48L2I+PGJyPjwvYnI+ClRoZTxjb2RlPiBheGlzMl9zdmNfY2xpZW50PC9jb2RlPiBzdHJ1Y3QgaXMgbWVhbnQgdG8gYmUKdXNlZCBieSB0aGUgdXNlcnMgdG8gY29uc3VtZSBXZWIgc2VydmljZXMuIEl0IHByb3ZpZGVzIGFuIGVhc3kgdG8gdXNlCkFQSS4gU2VydmljZSBjbGllbnQgY3JlYXRlIG1ldGhvZCB0YWtlcyB0aGUgbG9jYXRpb24gb2YgdGhlIHJlcG9zaXRvcnkKYXMgYSBwYXJhbWV0ZXIuIEZvciB0aGUgcHVycG9zZSBvZiBvdXIgc2FtcGxlLCB5b3UgY2FuIHVzZSB0aGUKQVhJUzJDX0hPTUUgYXMgdGhlIHJlcG9zaXRvcnkuIFRoZSBjb25jZXB0IG9mIDxhIGhyZWY9IiNyZXBvX2ZvbGRlciI+cmVwb3NpdG9yeTwvYT4KaXMgZXhwbGFpbmVkIGluIGRldGFpbCBpbiBhIGxhdGVyIHNlY3Rpb24uPGJyPjwvYnI+CjwvbGk+CjxsaT48Yj5TZXQgb3B0aW9ucyB0byBzZXJ2aWNlIGNsaWVudCBpbnN0YW5jZTwvYj48YnI+PC9icj4KVGhlIG9wdGlvbnMgY3JlYXRlZCBpbiBhbiBlYXJsaWVyIHN0ZXAgaGF2ZSB0byBiZSBzZXQgb24gdGhlIHNlcnZpY2UKY2xpZW50LCBpbmRpY2F0aW5nIHRoZSBvcHRpb25zIHRoYXQgYXJlIG1lYW50IHRvIGJlIHVzZWQgYnkgdGhlIHNlcnZpY2UKY2xpZW50Ljxicj48L2JyPgo8L2xpPgo8bGk+PGI+U2VuZCB0aGUgcmVxdWVzdCBhbmQgcmVjZWl2ZSB0aGUgcmVzcG9uc2U8L2I+PGJyPjwvYnI+ClRoZSBzZXJ2aWNlIGNsaWVudCdzIDxjb2RlPmF4aXMyX3N2Y19jbGllbnRfc2VuZF9yZWNlaXZlPC9jb2RlPgptZXRob2QgY2FuIGJlIHVzZWQgdG8gaW52b2tlIHRoZSBzZW5kIHJlY2VpdmUgb3BlcmF0aW9uIG9uIHRoZSBzZXJ2aWNlCmNsaWVudCBpbnN0YW5jZS48YnI+PC9icj4KVGhlIHNlbmQgcmVjZWl2ZSBvcGVyYXRpb24gdGFrZXMgdGhlIHJlcXVlc3QgcGF5bG9hZCBhcyBhbiA8Y29kZT5heGlvbV9ub2RlPC9jb2RlPgphbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgcGF5bG9hZCBhcyBhbiA8Y29kZT5heGlvbV9ub2RlPC9jb2RlPi48L2xpPgo8bGk+PGI+UHJvY2VzcyB0aGUgcmVzcG9uc2U8L2I+PGJyPjwvYnI+ClByb2Nlc3MgdGhlIHJlc3BvbnNlIGluIGxpbmUgd2l0aCB0aGUgY2xpZW50IGJ1c2luZXNzIGxvZ2ljLjwvbGk+Cjwvb2w+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxXzJfMV9DcmVhdGluZ19hbmRfU2V0dGluZ19PcHRpb25zIj48L2E+CjxoMz4xLjIuMSBDcmVhdGluZyBhbmQgU2V0dGluZyBPcHRpb25zPC9oMz4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4gb3B0aW9ucyA9IGF4aXMyX29wdGlvbnNfY3JlYXRlKGVudik7PGJyPjwvYnI+IGFkZHJlc3MgPSAiaHR0cDovL2xvY2FsaG9zdDo5MDkwL2F4aXMyL3NlcnZpY2VzL2hlbGxvIjs8YnI+PC9icj4gZW5kcG9pbnRfcmVmID0gYXhpczJfZW5kcG9pbnRfcmVmX2NyZWF0ZShlbnYsIGFkZHJlc3MpOzxicj48L2JyPiBheGlzMl9vcHRpb25zX3NldF90byhvcHRpb25zLCBlbnYsIGVuZHBvaW50X3JlZik7PGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5JbiB0aGUgYWJvdmUgc2VjdGlvbiBvZiBjb2RlLCBhbiA8Y29kZT5heGlzMl9vcHRpb25zPC9jb2RlPgppbnN0YW5jZSBpcwpjcmVhdGVkIGZpcnN0LiBUaGVuIGFuIGVuZHBvaW50IHJlZmVyZW5jZSBpbnN0YW5jZSBpcyBjcmVhdGVkIHdpdGggdGhlCmFkZHJlc3Mgb2YgdGhlIGxvY2F0aW9uIG9mIHRoZSBzZXJ2aWNlLiBGaW5hbGx5LCB0aGUgY3JlYXRlZCBlbmRwb2ludAppcyBzZXQKYXMgdGhlICJ0byIgYWRkcmVzcyBvZiB0aGUgb3B0aW9ucy4gVGhlICJ0byIgYWRkcmVzcyBpbmRpY2F0ZXMgd2hlcmUKdGhlCnJlcXVlc3Qgc2hvdWxkIGJlIHNlbnQgdG8uPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8yXzJfVXNpbmdfU2VydmljZV9DbGllbnQiPjwvYT4KPGgzPjEuMi4yIFVzaW5nIFNlcnZpY2UgQ2xpZW50PC9oMz4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4gc3ZjX2NsaWVudCA9IGF4aXMyX3N2Y19jbGllbnRfY3JlYXRlKGVudiwgY2xpZW50X2hvbWUpOzxicj48L2JyPiBheGlzMl9zdmNfY2xpZW50X3NldF9vcHRpb25zKHN2Y19jbGllbnQsIGVudiwgb3B0aW9ucyk7PGJyPjwvYnI+IHBheWxvYWQgPSBidWlsZF9vbV9yZXF1ZXN0KGVudik7PGJyPjwvYnI+IHJldF9ub2RlID0gYXhpczJfc3ZjX2NsaWVudF9zZW5kX3JlY2VpdmUoc3ZjX2NsaWVudCwgZW52LCBwYXlsb2FkKTs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPkFmdGVyIGNyZWF0aW5nIGFuZCBwcmVwYXJpbmcgdGhlIG9wdGlvbnMsIHRoZSBuZXh0IHN0ZXAgaXMgdG8KY3JlYXRlIGEKc2VydmljZSBjbGllbnQgaW5zdGFuY2UgYW5kIHVzZSBpdCB0byBzZW5kIHRoZSByZXF1ZXN0IGFuZCByZWNlaXZlIHRoZQpyZXNwb25zZS4gVGhlIGNvZGUgZnJhZ21lbnQgZ2l2ZW4gYWJvdmUgc2hvd3MgaG93IG9wdGlvbnMgY2FuIGJlIHNldCBvbgp0b3AKb2YgdGhlIHNlcnZpY2UgY2xpZW50IGFuZCBob3cgdG8gaW52b2tlIHRoZSBzZW5kIHJlY2VpdmUgb3BlcmF0aW9uIHdpdGgKYQpyZXF1ZXN0IHBheWxvYWQuIE9uY2UgdGhlIHJlc3BvbnNlIGlzIHJlY2VpdmVkLCB0aGUgcmVzcG9uc2UgcGF5bG9hZAp3aWxsIGJlCnN0b3JlZCBpbiB0aGUgPGNvZGU+cmV0X25vZGU8L2NvZGU+LCB3aGljaCBpcyBhIHBvaW50ZXIgdG8KYW4KPGNvZGU+YXhpb21fbm9kZTwvY29kZT4gdGhhdCBjYW4gYmUgdXNlZCB0byBwcm9jZXNzIHRoZQpyZXNwb25zZSBmdXJ0aGVyLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjFfMl8zX0Z1bGxfU291cmNlIj48L2E+CjxoMz4xLjIuMyBGdWxsIFNvdXJjZTwvaDM+CjxwPkhlcmUgaXMgdGhlIGNvbXBsZXRlIHNvdXJjZSBjb2RlIGZvciB0aGUgY2xpZW50IDogPGEgaHJlZj0iaGVsbG8vY2xpZW50L2hlbGxvLmMuaHRtbCI+aGVsbG8uYzwvYT48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxXzJfNF9Db21waWxpbmdfdGhlX0NsaWVudCI+PC9hPgo8aDM+MS4yLjQgQ29tcGlsaW5nIHRoZSBDbGllbnQ8L2gzPgo8cD5Zb3UgY2FuIGNvbXBpbGUgdGhlIGNsaWVudCBzYW1wbGUgYXMgc2hvd24gYmVsb3cuPC9wPgo8cD5PbiBMaW51eDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+Z2NjIC1vIGhlbGxvIC1JJEFYSVMyQ19IT01FL2luY2x1ZGUvYXhpczItMS42LjAvIC1MJEFYSVMyQ19IT01FL2xpYiAtbGF4dXRpbCAtbGF4aXMyX2F4aW9tIC1sYXhpczJfcGFyc2VyIC1sYXhpczJfZW5naW5lIC1scHRocmVhZCAtbGF4aXMyX2h0dHBfc2VuZGVyIC1sYXhpczJfaHR0cF9yZWNlaXZlciBoZWxsby5jIC1sZGwgLVdsLC0tcnBhdGggLVdsLCRBWElTMkNfSE9NRS9saWI8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPk9uIE1TIFdpbmRvd3M6PC9wPgo8cD50byBjb21waWxlLDwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5jbC5leGUgL25vbG9nbyAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvSSAlQVhJUzJDX0hPTUUlXGluY2x1ZGUgL2MgaGVsbG8uYzxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+dG8gbGluayw8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+bGluay5leGUgL0xJQlBBVEg6JUFYSVMyQ19IT01FJVxsaWIgYXh1dGlsLmxpYiBheGlvbS5saWIgYXhpczJfcGFyc2VyLmxpYiBheGlzMl9lbmdpbmUubGliIC9PVVQ6aGVsbG8uZXhlICoub2JqPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8yXzVfUnVubmluZ190aGVfQ2xpZW50Ij48L2E+CjxoMz4xLjIuNSBSdW5uaW5nIHRoZSBDbGllbnQ8L2gzPgo8cD5UbyBydW4gdGhlIGNsaWVudCwgbWFrZSBzdXJlIHlvdSBzdGFydCB0aGUgc2ltcGxlIGF4aXMgc2VydmVyCmFuZCB0aGVuIHJ1bgp0aGUgaGVsbG8gZXhlY3V0YWJsZS48L3A+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJyZXBvX2ZvbGRlciI+PC9hPjwvcD4KPC9kaXY+CjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IjJfX1JlcG9zaXRvcnlfRm9sZGVyIj48L2E+CjxoMj4yLiBSZXBvc2l0b3J5IEZvbGRlcjwvaDI+CjxwPlJlcG9zaXRvcnkgaXMgYSBmb2xkZXIgd2hlcmUgYWxsIEF4aXMyL0MgcmVsYXRlZApjb25maWd1cmF0aW9ucyBhcyB3ZWxsIGFzCnNlcnZpY2VzIGFuZCBtb2R1bGVzIGFyZSBsb2NhdGVkLiBUaGUgZm9sbG93aW5nIHNob3dzIHRoZSBmb2xkZXIKc3RydWN0dXJlIG9mCnRoZSByZXBvc2l0b3J5OjwvcD4KPGltZyBzcmM9ImltYWdlcy9heGlzMmNfcmVwby5naWYiIGFsdD0iIj48L2ltZz4KPHA+SGVyZSB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeSBmb2xkZXIgaXMgYXhpczJjX3JlcG8uIEluIHlvdXIKc3lzdGVtLCB5b3UKY2FuIHNwZWNpZnkgYW55IGZvbGRlciBuYW1lIG9mIHlvdXIgY2hvaWNlLiBUaGVyZSBhcmUgdGhyZWUgc3ViIGZvbGRlcnMKYXZhaWxhYmxlIGluIHRoZSByZXBvc2l0b3J5LiBJbiBhZGRpdGlvbiB0byB0aGF0LCB0aGUgYXhpczIueG1sCmNvbmZpZ3VyYXRpb24KZmlsZSBpcyBhbHNvIGxvY2F0ZWQgaW4gdGhlIHJlcG9zaXRvcnkuIFRoZSBmb2xsb3dpbmcgdGFibGUgZGVzY3JpYmVzCnRoZQpwdXJwb3NlIG9mIHRoZSByZXBvc2l0b3J5IGNvbnRlbnRzLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPkF4aXMyL0MgUmVwb3NpdG9yeSBDb250ZW50czwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPkZvbGRlci9GaWxlIE5hbWU8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+CjxwPmxpYjwvcD4KPC90ZD48dGQ+CjxwPlRoZSBsaWIgZm9sZGVyIGNvbnRhaW5zIHRoZSBsaWJyYXJpZXMgcmVxdWlyZWQgdG8gcnVuCnRoZSBBeGlzMi9DIGVuZ2luZS4gV2hpbGUgeW91IGNhbiBhZmZvcmQgdG8gaGF2ZSB0aGUgc2hhcmVkIGxpYnMgb2YKQXhpczIvQyBpbiBhIGxvY2F0aW9uIG9mIHlvdXIgY2hvaWNlLCB0aGUgZHluYW1pY2FsbHkgbG9hZGVkIHNoYXJlZApsaWJzLCBwYXJzZXIsIHRyYW5zcG9ydCByZWNlaXZlciBhbmQgdHJhbnNwb3J0IHNlbmRlciBoYXMgdG8gYmUgaW4gdGhlCnJlcG9zaXRvcnkgbGliIGZvbGRlci4gPGJyPjwvYnI+Ckl0IGlzIG1hbmRhdG9yeSB0aGF0IHRoZSBsaWIgZm9sZGVyIGlzIHRoZXJlIGluIHRoZSByZXBvc2l0b3J5LjwvcD4KPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD4KPHA+bW9kdWxlcyBbb3B0aW9uYWxdPC9wPgo8L3RkPjx0ZD4KPHA+VGhlIG1vZHVsZXMgZm9sZGVyIGNvbnRhaW5zIHRoZSBtb2R1bGVzIGRlcGxveWVkIHdpdGgKQXhpczIvQy4gRWFjaCBtb2R1bGUgZGVwbG95ZWQgd2lsbCBoYXZlIGl0cyBvd24gc3ViIGZvbGRlciBpbnNpZGUgdGhlCm1vZHVsZXMgZm9sZGVyLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGFkZHJlc3NpbmcgbW9kdWxlIGlzIGRlcGxveWVkLCB0aGVuCnRoZXJlIHdpbGwgYmUgYSBzdWIgZm9sZGVyIG5hbWVkIGFkZHJlc3NpbmcgaW5zaWRlIHRoZSBtb2R1bGVzIGZvbGRlcgpvZiB0aGUgcmVwb3NpdG9yeS48YnI+PC9icj4KQXQgZGVwbG95bWVudCwgdGhlIEF4aXMyL0MgZGVwbG95bWVudCBlbmdpbmUgd291bGQgdHJhdmVyc2UgdGhlIG1vZHVsZXMKZm9sZGVycyB0byBmaW5kIG91dCB3aGF0IG1vZHVsZXMgYXJlIGF2YWlsYWJsZS48YnI+PC9icj4KVGhlIG1vZHVsZXMgZm9sZGVyIGlzIG9wdGlvbmFsLiBJZiBpdCBpcyBlbXB0eSBvciBub24tZXhpc3RlbnQsIHRoYXQKbWVhbnMgdGhhdCB0aGVyZSBhcmUgbm8gZGVwbG95ZWQgbW9kdWxlcy48L3A+CjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+CjxwPnNlcnZpY2VzIFtvcHRpb25hbF08L3A+CjwvdGQ+PHRkPgo8cD5UaGUgc2VydmljZXMgZm9sZGVyIGNvbnRhaW5zIHRoZSBzZXJ2aWNlcyBkZXBsb3llZCB3aXRoCkF4aXMyL0MuIEVhY2ggc2VydmljZSBkZXBsb3llZCB3aWxsIGhhdmUgaXRzIG93biBzdWIgZm9sZGVyIGluc2lkZSB0aGUKc2VydmljZXMgZm9sZGVyLCBvciBsaXZlIGluc2lkZSBvbmUgb2YgdGhlIHN1YiBmb2xkZXJzLjxicj48L2JyPgpBdCBkZXBsb3ltZW50LCB0aGUgQXhpczIvQyBkZXBsb3ltZW50IGVuZ2luZSB3aWxsIHRyYXZlcnNlIHRoZSBzZXJ2aWNlcwpmb2xkZXJzIHRvIGZpbmQgb3V0IHdoYXQgc2VydmljZXMgYXJlIGF2YWlsYWJsZS48YnI+PC9icj4KVGhlIHNlcnZpY2VzIGZvbGRlciBpcyBvcHRpb25hbC4gSWYgaXQgaXMgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LCB0aGF0Cm1lYW5zIHRoYXQgdGhlcmUgYXJlIG5vIGRlcGxveWVkIHNlcnZpY2VzLjwvcD4KPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD4KPHA+YXhpczIueG1sPC9wPgo8L3RkPjx0ZD4KPHA+VGhlIGF4aXMyLnhtbCBmaWxlIGlzIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgb2YgQXhpczIvQy48YnI+PC9icj4KVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBtYW5kYXRvcnkgYW5kIG11c3QgaGF2ZSB0aGUgbmFtZSBheGlzMi54bWwuCkl0IGlzIHNhZmUgdG8gY29uc2lkZXIgeW91ciBBeGlzMi9DIHJlcG9zaXRvcnkgdG8gYmUgdGhlIGZvbGRlciBpbgp3aGljaCB5b3UgaGF2ZSB0aGUgYXhpczIueG1sIGZpbGUuPC9wPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+Qm90aCBjbGllbnRzIGFzIHdlbGwgYXMgdGhlIHNlcnZpY2VzIHdyaXR0ZW4gdXNpbmcgQXhpczIvQyBjYW4KdXNlIHRoZQpzYW1lIHJlcG9zaXRvcnkuIEhvd2V2ZXIgeW91IGNhbiB1c2Ugb25lIHJlcG9zaXRvcnkgZm9yIHRoZSBzZXJ2ZXIgc2lkZQphbmQKYW5vdGhlciBvbmUgZm9yIHRoZSBjbGllbnQgc2lkZS4gVGhlIHNlcnZpY2VzIGZvbGRlciBpcyB1c2VkIG9ubHkgd2hlbgp0aGUKcmVwb3NpdG9yeSBpcyB1c2VkIGJ5IHRoZSBzZXJ2ZXIgc2lkZS4gV2hlbiB0aGUgcmVwb3NpdG9yeSBpcyB1c2VkIGJ5CnRoZQpjbGllbnQsIHRoZSBzZXJ2aWNlcyBmb2xkZXIsIGlmIHByZXNlbnQsIHdpbGwgbm90IGJlIHVzZWQuPC9wPgo8cD5UaGUgQXhpczIvQyBiaW5hcnkgZGlzdHJpYnV0aW9uLCB3aGVuIGV4dHJhY3RlZCwgY2FuIGJlCmNvbnNpZGVyZWQgYXMKcmVhZHkgZm9yIHVzZSBhcyB5b3VyIHJlcG9zaXRvcnkgZm9sZGVyLiBJZiB5b3UgYXJlIGJ1aWxkaW5nIEF4aXMyL0MKZnJvbSB0aGUKc291cmNlIGRpc3RyaWJ1dGlvbiwgd2hlbiB5b3UgYnVpbGQgdGhlIHNvdXJjZSwgaW5jbHVkaW5nIHRoZSBzYW1wbGVzLAp0aGUKaW5zdGFsbGF0aW9uIGRlc3RpbmF0aW9uIHdpbGwgYmUgcmVhZHkgZm9yIHVzZSBhcyB5b3VyIHJlcG9zaXRvcnkKZm9sZGVyLjwvcD4KPHA+VGhlIHNpbXBsZSBheGlzIHNlcnZlciAodGhhdCBpcyBheGlzMl9odHRwX3NlcnZlciBiaW5hcnkpLCB0aGUKY2xpZW50CnNhbXBsZXMsIGFuZCB0aGUgSFRUUEQgbW9kdWxlIChBeGlzMiBBcGFjaGUyIG1vZHVsZSkgcmVxdWlyZSB0aGUKcmVwb3NpdG9yeQpmb2xkZXIgdG8gYmUgc3BlY2lmaWVkIGluIG9yZGVyIHRvIHJ1biBjb3JyZWN0bHkuPC9wPgo8cD48L3A+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjJfMV9Nb2R1bGVfRm9sZGVycyI+PC9hPgo8aDM+Mi4xIE1vZHVsZSBGb2xkZXJzPC9oMz4KPHA+QXMgZGVzY3JpYmVkIGVhcmxpZXIsIGFsbCB0aGUgbW9kdWxlcyBhcmUgcGxhY2VkIGluc2lkZSB0aGUKbW9kdWxlcyBmb2xkZXIKb2YgdGhlIHJlcG9zaXRvcnksIGFuZCBlYWNoIG1vZHVsZSB3aWxsIGhhdmUgaXRzIG93biBzdWIgZm9sZGVyIHdpdGhpbgp0aGUKbW9kdWxlcyBmb2xkZXIuPGJyPjwvYnI+ClRoZSBmb2xkZXIgaW4gd2hpY2ggYSBtb2R1bGUgaXMgcGxhY2VkIG11c3QgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZQptb2R1bGUKbmFtZS4gRm9yIGV4YW1wbGUsIHRoZSBhZGRyZXNzaW5nIG1vZHVsZSB3aWxsIGJlIHBsYWNlZCBpbiBhIHN1YiBmb2xkZXIKbmFtZWQKYWRkcmVzc2luZy48YnI+PC9icj4KPC9wPgo8cD5JbnNpZGUgdGhlIGZvbGRlciBjb3JyZXNwb25kaW5nIHRvIGEgbW9kdWxlLCB0aGUgc2hhcmVkCmxpYnJhcnkKaW1wbGVtZW50aW5nIHRoZSBtb2R1bGUgYW5kIHRoZSBtb2R1bGUgY29uZmlndXJhdGlvbiBmaWxlLCBtb2R1bGUueG1sLAppcwpwbGFjZWQuIEl0IGlzIGEgbXVzdCB0aGF0IHRoZXNlIHR3byBmaWxlcyBhcmUgcHJlc2VudCBpbnNpZGUgZWFjaApmb2xkZXIKcmVwcmVzZW50aW5nIGEgbW9kdWxlLiBUaGUgbW9kdWxlLnhtbCBmaWxlIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZQpkZXBsb3ltZW50IGVuZ2luZSB0byBmaW5kIG91dCBtb2R1bGUgc3BlY2lmaWMgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUKbW9kdWxlCm5hbWUsIHNldCBvZiBoYW5kbGVycywgdGhlIGZsb3dzIGludG8gd2hpY2ggdGhvc2UgaGFuZGxlcnMgYXJlIHRvIGJlCmFkZGVkLApldGMuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMl8yX1NlcnZpY2VfRm9sZGVycyI+PC9hPgo8aDM+Mi4yIFNlcnZpY2UgRm9sZGVyczwvaDM+CjxwPkFsbCB0aGUgc2VydmljZXMgYXJlIHBsYWNlZCBpbnNpZGUgdGhlIHNlcnZpY2VzIGZvbGRlciBvZiB0aGUKcmVwb3NpdG9yeSwKYW5kIGVhY2ggc2VydmljZSB3aWxsIGJlIGluIG9uZSBvZiB0aGUgc3ViIGZvbGRlcnMgd2l0aGluIHRoZSBzZXJ2aWNlcwpmb2xkZXIuIEF4aXMyL0MgaGFzIGEgY29uY2VwdCBjYWxsZWQgc2VydmljZSBncm91cHMsIHdoZXJlIHRoZXJlIGNhbiBiZQpvbmUKb3IgbW9yZSBzZXJ2aWNlcyBpbnNpZGUgYSBzZXJ2aWNlIGdyb3VwLiBBIHNpbmdsZSBzdGFuZCBhbG9uZSBzZXJ2aWNlCmlzCmFzc2lnbmVkIGEgc2VydmljZSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhhdCBvZiB0aGUgc2VydmljZSBieQp0aGUKQXhpczIvQyBlbmdpbmUgZm9yIHRoZSBwdXJwb3NlIG9mIGVhc3kgaGFuZGxpbmcuIFRoZXJlZm9yZSB0aGUgc3ViCmZvbGRlcnMgaW4KdGhlIHNlcnZpY2VzIGZvbGRlciBjb3JyZXNwb25kIHRvIHRoZSBzZXJ2aWNlIGdyb3Vwcy48L3A+CjxwPkEgc2VydmljZSwgaWYgZGVwbG95ZWQgYXMgYSBzdGFuZCBhbG9uZSBzZXJ2aWNlLCB3aWxsIHJlc2lkZQppbnNpZGUgYQpmb2xkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoYXQgb2YgdGhlIHNlcnZpY2UuIEZvciBleGFtcGxlLCB0aGUgZWNobwpzZXJ2aWNlIHdpbGwgYmUgcGxhY2VkIGluIGEgc3ViIGZvbGRlciBuYW1lZCBlY2hvLiBUaGUgc2hhcmVkIGxpYnJhcnkKaW1wbGVtZW50aW5nIHRoZSBzZXJ2aWNlIGFuZCB0aGUgc2VydmljZSBjb25maWd1cmF0aW9uIGZpbGUsIHRoZQpzZXJ2aWNlcy54bWwsIHdpbGwgYmUgcGxhY2VkIGluc2lkZSB0aGUgZm9sZGVyIGNvcnJlc3BvbmRpbmcgdG8gYQpzZXJ2aWNlLgpHaXZlbiB0aGUgZmFjdCB0aGF0IHRoZSBlbmdpbmUgdHJlYXRzIHRoZSBmb2xkZXJzIHRvIHJlcHJlc2VudCBzZXJ2aWNlCmdyb3VwcwphbmQgbm90IGEgc2luZ2xlIHNlcnZpY2UsIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgY2FsbGVkCnNlcnZpY2VzLnhtbC4KSG93ZXZlciwgeW91IGNhbiBhbHdheXMgcGxhY2UgYSBzaW5nbGUgc2VydmljZSBpbnNpZGUgYSBzaW5nbGUgZm9sZGVyLAp3aGljaAppcyB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2UuPC9wPgo8cD5FYWNoIHN1YiBmb2xkZXIgd2l0aGluIHRoZSBzZXJ2aWNlcyBmb2xkZXIgc2hvdWxkIGhhdmUgYXQKbGVhc3Qgb25lIHNoYXJlZApsaWIgaW1wbGVtZW50aW5nIGEgc2VydmljZSBhbmQgYSBzZXJ2aWNlcy54bWwgZmlsZS4gSWYgaXQgaXMgYSByZWFsCnNlcnZpY2UKZ3JvdXAsIHRoZXJlIHdpbGwgYmUgbXVsdGlwbGUgc2hhcmVkIGxpYnMsIHlldCB0aGVyZSBpcyBvbmx5IG9uZQpzZXJ2aWNlcy54bWwKZmlsZSBjb25maWd1cmluZyBhbGwgdGhvc2Ugc2VydmljZXMuIFRoZSBzZXJ2aWNlcy54bWwgZmlsZSBpcyBwcm9jZXNzZWQKYnkKdGhlIGRlcGxveW1lbnQgZW5naW5lIHRvIGZpbmQgb3V0IHRoZSBzZXJ2aWNlIGdyb3VwIGFuZCB0aGUgc2VydmljZQpzcGVjaWZpYwppbmZvcm1hdGlvbiBzdWNoIGFzIHRoZSBzZXJ2aWNlIGdyb3VwIG5hbWUsIHNlcnZpY2UgbmFtZSwgdGhlIHNldCBvZgpvcGVyYXRpb25zIGZvciBlYWNoIHNlcnZpY2UsIGV0Yy48L3A+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJzdmNfYXBpIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iM19fU2VydmljZV9BUEkiPjwvYT4KPGgyPjMuIFNlcnZpY2UgQVBJPC9oMj4KPHA+V2UgaGF2ZSBhbHJlYWR5IHNlZW4gaG93IHRvIHdyaXRlIGEgc2VydmljZSBpbiB0aGUgUXVpY2sgU3RhcnQKR3VpZGUKc2VjdGlvbiBvZiB0aGlzIG1hbnVhbC4gVGhpcyBzZWN0aW9uIGNvdmVycyB0aGUgc2VydmljZSBBUEkgb2YgQXhpczIvQwppbgptb3JlIGRldGFpbC48L3A+CjxwPjxjb2RlPmF4aXMyX3N2Y19za2VsZXRvbjwvY29kZT4gaXMgYW4gaW50ZXJmYWNlLgpBeGlzMi9DIGRvZXMgbm90IHByb3ZpZGUKYW55IGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkKb2YKdGhlIHNlcnZpY2UgaW1wbGVtZW50ZXIgdG8gaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLiBUbyBpbXBsZW1lbnQgdGhlCmludGVyZmFjZSwgeW91IHNob3VsZCBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9ucyBhZGhlcmluZyB0byB0aGUgZnVuY3Rpb24KcG9pbnRlciBzaWduYXR1cmVzIG9mIHRoZSBtZW1iZXJzIG9mIHRoZSA8Y29kZT5heGlzMl9zdmNfc2tlbGV0b25fb3BzPC9jb2RlPgpzdHJ1Y3QuIFRoZW4sIGEgY3JlYXRlIGZ1bmN0aW9uIHNob3VsZCBiZSB3cml0dGVuIHRvIGNyZWF0ZSBhbgo8Y29kZT5heGlzMl9zdmNfc2tlbGV0b248L2NvZGU+IGluc3RhbmNlLCBhbmQgYXNzaWduIHRoZQppbXBsZW1lbnRpbmcKZnVuY3Rpb25zIHRvIHRoZSBtZW1iZXJzIG9mIHRoZSBvcHMgbWVtYmVyIG9mIHNlcnZpY2Ugc2tlbGV0b24uPC9wPgo8cD5UaGUgZm9sbG93aW5nIHRhYmxlIGRldGFpbHMgdGhlIHNpZ25hdHVyZXMgb2YgdGhlIGZ1bmN0aW9uCnBvaW50ZXIgbWVtYmVycwpvZiB0aGUgPGNvZGU+YXhpczJfc3ZjX3NrZWxldG9uPC9jb2RlPiBzdHJ1Y3QgaW1wbGVtZW50ZWQKYnkgYSBzZXJ2aWNlLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPkZ1bmN0aW9uIFNpZ25hdHVyZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD4KPHByZT5pbnQgKEFYSVMyX0NBTEwgKjxicj48L2JyPiBpbml0KShheGlzMl9zdmNfc2tlbGV0b25fdCAqc3ZjX3NrZWxldG9uLDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKmVudik7PC9wcmU+CjwvdGQ+PHRkPkluaXRpYWxpemVzIHRoZSBzZXJ2aWNlIHNrZWxldG9uIG9iamVjdCBpbnN0YW5jZS4gVGhlCkF4aXMyL0MgZW5naW5lIGluaXRpYWxpemVzIGEgc2VydmljZSBza2VsZXRvbiBpbnN0YW5jZSBvbmNlIHBlcgpkZXBsb3llZCBzZXJ2aWNlLCBkdXJpbmcgdGhlIGZpcnN0IHJlcXVlc3QgbWFkZSB0byB0aGUgc2VydmljZS48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkIHdpZHRoPSI0MTAiPgo8cHJlPmF4aW9tX25vZGVfdCAqKEFYSVMyX0NBTEwqPGJyPjwvYnI+IGludm9rZSApKCBheGlzMl9zdmNfc2tlbGV0b25fdCAqc3ZjX3NrZWxpLDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKmVudiw8YnI+PC9icj4gYXhpb21fbm9kZV90ICpub2RlLDxicj48L2JyPiBheGlzMl9tc2dfY3R4X3QgKm1zZ19jdHgpOzwvcHJlPgo8L3RkPjx0ZD5JbnZva2VzIHRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uLiBZb3UgaGF2ZSB0bwppbXBsZW1lbnQgdGhlIGxvZ2ljIHRvIGNhbGwgdGhlIGNvcnJlY3QgZnVuY3Rpb25zIGluIHRoaXMgbWV0aG9kIGJhc2VkCm9uIHRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24gYmVpbmcgaW52b2tlZC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPgo8cHJlPmF4aW9tX25vZGVfdCAqKEFYSVMyX0NBTEwqPGJyPjwvYnI+IG9uX2ZhdWx0KSg8YnI+PC9icj4gYXhpczJfc3ZjX3NrZWxldG9uX3QgKnN2Y19za2VsaSw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICplbnYsPGJyPjwvYnI+IGF4aW9tX25vZGVfdCAqbm9kZSk7PC9wcmU+CjwvdGQ+PHRkPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgZW5naW5lIGlmIGEgZmF1bHQgaXMKZGV0ZWN0ZWQuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD4KPHByZT5heGlzMl9zdGF0dXNfdCAoQVhJUzJfQ0FMTCAqPGJyPjwvYnI+IGZyZWUgKSggYXhpczJfc3ZjX3NrZWxldG9uX3QgKnN2Y19za2VsaSw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICplbnYpOzwvcHJlPgo8L3RkPjx0ZD5GcmVlcyB0aGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZS48L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPGJyPjwvYnI+CjxwPlRoZXJlIGFyZSB0d28gbW9yZSBtZXRob2RzIHRoYXQgYSBzZXJ2aWNlIHNob3VsZCBpbXBsZW1lbnQuCk9uY2UgYSBzZXJ2aWNlCmlzIGRlcGxveWVkLCB0aGUgbWVzc2FnZSByZWNlaXZlciBvZiB0aGUgQXhpczIvQyBlbmdpbmUgaGFzIHRvIGNyZWF0ZSBhCnNlcnZpY2UgaW5zdGFuY2UgYXQgcnVuIHRpbWUgZm9yIHRoZSBwdXJwb3NlIG9mIGludm9raW5nIGl0LiBGb3IgdGhpcywKaXQKbG9va3MgZm9yIGEgbWV0aG9kIG5hbWVkIDxjb2RlPmF4aXMyX2NyZWF0ZV9pbnN0YW5jZTwvY29kZT4KYW5kIGNhbGxzIGl0IG9uCnRoZSBzZXJ2aWNlIHNoYXJlZCBsaWJyYXJ5LiBUaGUgZW5naW5lIGFsc28gbG9va3MgZm9yIGEgZnVuY3Rpb24gbmFtZWQKPGNvZGU+YXhpczJfcmVtb3ZlX2luc3RhbmNlPC9jb2RlPiBpbiB0aGUgc2hhcmVkIGxpYnJhcnkKZm9yIGNsZWFuIHVwCnB1cnBvc2VzLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPkZ1bmN0aW9uIFNpZ25hdHVyZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD4KPHByZT5BWElTMl9FWFBPUlQgaW50PGJyPjwvYnI+YXhpczJfZ2V0X2luc3RhbmNlKDxicj48L2JyPiBheGlzMl9zdmNfc2tlbGV0b25fdCAqKiBpbnN0LDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKiBlbnYpOzwvcHJlPgo8L3RkPjx0ZD5DcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBzZXJ2aWNlLiBZb3UgaGF2ZSB0bwppbXBsZW1lbnQgdGhlIGxvZ2ljIG9mIGNyZWF0aW5nIHRoZSBzZXJ2aWNlIG9iamVjdCwgYWxsb2NhdGluZyBtZW1vcnkKZXRjLiBpbiB0aGlzIG1ldGhvZC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkIHdpZHRoPSI0MTAiPgo8cHJlPkFYSVMyX0VYUE9SVCBpbnQ8YnI+PC9icj5heGlzMl9yZW1vdmVfaW5zdGFuY2UoPGJyPjwvYnI+IGF4aXMyX3N2Y19za2VsZXRvbl90ICogaW5zdCw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICogZW52KTs8L3ByZT4KPC90ZD48dGQ+UmVtb3ZlcyB0aGUgaW5zdGFuY2Ugb2YgdGhlIHNlcnZpY2UuIERvIGFueSBjbGVhbmluZy11cAphbmQgZGVhbGxvY2F0aW9ucyBoZXJlLjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8YnI+PC9icj4KPHA+Tm90ZSB0aGF0IHNlcnZpY2Ugb2JqZWN0IGluc3RhbnRpYXRpb24gaGFwcGVucyBvbmNlIHBlcgpzZXJ2aWNlLiBXaGVuIHRoZQpmaXJzdCByZXF1ZXN0IGlzIHJlY2VpdmVkIGJ5IHRoZSBzZXJ2aWNlLCBhIHNlcnZpY2Ugc2tlbGV0b24gaW5zdGFuY2UKaXMKY3JlYXRlZCBhbmQgaW5pdGlhbGl6ZWQuIFRoZSBzYW1lIG9iamVjdCBpbnN0YW5jZSB3aWxsIGJlIHJlLXVzZWQgYnkKdGhlCnN1YnNlcXVlbnQgcmVxdWVzdHMuPC9wPgo8cD5Zb3UgY2FuIGZpbmQgYW4gZXhhbXBsZSBvbiBob3cgdG8gaW1wbGVtZW50IHRoZSBzZXJ2aWNlCnNrZWxldG9uIGludGVyZmFjZQppbiB0aGUgPGEgaHJlZj0iaGVsbG8vc2VydmljZS9oZWxsb19zdmMuYy5odG1sIj5oZWxsb19zdmMuYzwvYT4Kc291cmNlIGZpbGUsCndoaWNoIGlzIHRoZSBleGFtcGxlIHVzZWQgaW4gdGhlIDxhIGhyZWY9IiNxdWlja19zdGFydCI+UXVpY2sKU3RhcnQKR3VpZGU8L2E+LiBNb3JlIGFkdmFuY2VkIHNhbXBsZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBzYW1wbGVzCmZvbGRlciBvZiB0aGUKQXhpczIvQyBkaXN0cmlidXRpb24uPC9wPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0iY2xpZW50X2FwaSI+PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iNF9fQ2xpZW50X0FQSSI+PC9hPgo8aDI+NC4gQ2xpZW50IEFQSTwvaDI+CjxwPlRoZSBwcmltYXJ5IGNsaWVudCBBUEkgdG8gYmUgdXNlZCB3aXRoIEF4aXMyL0MgaXMKPGNvZGU+YXhpczJfc3ZjX2NsaWVudDwvY29kZT4sIHRoZSBzZXJ2aWNlIGNsaWVudCBBUEkuIFRoaXMKaXMgbWVhbnQgdG8gYmUgYW4KZWFzeSB0byB1c2UgQVBJIGZvciBjb25zdW1pbmcgc2VydmljZXMuIElmIHlvdSB3YW50IHRvIGRvIG1vcmUgY29tcGxleAp0YXNrcywKc3VjaCBhcyBpbnZva2luZyBhIGNsaWVudCBpbnNpZGUgYSBtb2R1bGUsIG9yIHdyYXAgdGhlIGNsaWVudCBBUEkgd2l0aAphbm90aGVyIGludGVyZmFjZSwgeW91IG1heSBuZWVkIHRvIHVzZSA8Y29kZT5heGlzMl9vcF9jbGllbnQ8L2NvZGU+LAp0aGUKb3BlcmF0aW9uIGNsaWVudCBBUEkuIEZvciBtb3N0IG9mIHRoZSB1c2UgY2FzZXMsIHRoZSBzZXJ2aWNlIGNsaWVudCBBUEkKaXMKc3VmZmljaWVudC48L3A+CjxwPlRoZSBiZWhhdmlvciBvZiB0aGUgc2VydmljZSBjbGllbnQgY2FuIGJlIGZpbmUgdHVuZWQgd2l0aCB0aGUKb3B0aW9ucwpwYXNzZWQgdG8gdGhlIHNlcnZpY2UgY2xpZW50LiBZb3UgY2FuIHNldCB0aGUgb3B0aW9ucyBieSBjcmVhdGluZyBhbgo8Y29kZT5heGlzMl9vcHRpb25zPC9jb2RlPiBpbnN0YW5jZS4gVGhlIGJhcmUgbWluaW11bSB0aGF0CnlvdSBuZWVkIHRvIHNldCBpcwp0aGUgZW5kcG9pbnQgVVJJIHRvIHdoaWNoIHRoZSByZXF1ZXN0IGlzIHRvIGJlIHNlbnQuIEFuIGV4YW1wbGUgb2YgdGhpcwp3YXMKZ2l2ZW4gaW4gdGhlIDxhIGhyZWY9IiNxdWlja19zdGFydCI+UXVpY2sgU3RhcnQgR3VpZGUKc2VjdGlvbjwvYT4uPC9wPgo8cD5UaGUgc2VydmljZSBjbGllbnQgaW50ZXJmYWNlIHNlcnZlcyBhcyB0aGUgcHJpbWFyeSBjbGllbnQKaW50ZXJmYWNlIGZvcgpjb25zdW1pbmcgc2VydmljZXMuIFlvdSBjYW4gc2V0IHRoZSBvcHRpb25zIHRvIGJlIHVzZWQgYnkgdGhlIHNlcnZpY2UKY2xpZW50CmFuZCB0aGVuIGludm9rZSBhbiBvcGVyYXRpb24gb24gYSBnaXZlbiBzZXJ2aWNlLiBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzCm9mCmludm9raW5nIGEgc2VydmljZSBvcGVyYXRpb24uIFRoZSBtZXRob2Qgb2YgaW52b2tpbmcgYW4gb3BlcmF0aW9uCmRlcGVuZHMgb24KMyB0aGluZ3MuIFRoZXkgYXJlLDwvcD4KPG9sPgo8bGk+VGhlIE1lc3NhZ2UgRXhjaGFuZ2UgUGF0dGVybiAoTUVQKTwvbGk+CjxsaT5TeW5jaHJvbm91cy9Bc3luY2hyb25vdXMgYmVoYXZpb3IgKEJsb2NraW5nL05vbi1CbG9ja2luZyk8L2xpPgo8bGk+VHdvLXdheSBvciBvbmUtd2F5IHRyYW5zcG9ydDwvbGk+Cjwvb2w+CjxwPk1hbnkgc2VydmljZSBvcGVyYXRpb24gaW52b2NhdGlvbiBzY2VuYXJpb3MgY2FuIGJlIG9idGFpbmVkIGJ5CmNvbWJpbmluZwp0aGUgYWJvdmUgdGhyZWUgZmFjdG9ycy4gVGhlIHNlcnZpY2UgY2xpZW50IGludGVyZmFjZSBwcm92aWRlcyB0aGUKbmVjZXNzYXJ5CkFQSSBjYWxscyB0byBhY2hpZXZlIHRoaXMuPC9wPgo8cD5EZWNpZGluZyB0aGUgTWVzc2FnZSBFeGNoYW5nZSBQYXR0ZXJuIChNRVApPC9wPgo8cD5UaGVyZSBhcmUgMiBtZXNzYWdlIGV4Y2hhbmdlIHBhdHRlcm5zLjwvcD4KPG9sPgo8bGk+T3V0LU9ubHk8L2xpPgo8bGk+T3V0LUluPC9saT4KPC9vbD4KPHA+SW4gdGhlIE91dC1Pbmx5IE1FUCwgdGhlIGNsaWVudCBkb2Vzbid0IGV4cGVjdCBhIHJlcGx5IGZyb20KdGhlIHNlcnZlci4KVGhlIHNlcnZpY2UgY2xpZW50IHByb3ZpZGVzIHR3byBtZXRob2RzIG9mIHVzaW5nIHRoZSBPdXQtT25seSBNRVAuPC9wPgo8cD48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5GdW5jdGlvbiBTaWduYXR1cmU8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+CjxwcmU+QVhJUzJfRVhURVJOIHZvaWQgQVhJUzJfQ0FMTDxicj48L2JyPiBheGlzMl9zdmNfY2xpZW50X2ZpcmVfYW5kX2ZvcmdldCg8YnI+PC9icj4gYXhpczJfc3ZjX2NsaWVudF90ICogc3ZjX2NsaWVudCw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICogZW52LDxicj48L2JyPiBjb25zdCBheGlvbV9ub2RlX3QgKiBwYXlsb2FkKTs8L3ByZT4KPC90ZD48dGQ+U2VuZHMgYSBtZXNzYWdlIGFuZCBmb3JnZXRzIGFib3V0IGl0LiBUaGlzIG1ldGhvZCBpcwp1c2VkIHRvIGludGVyYWN0IHdpdGggYSBzZXJ2aWNlIG9wZXJhdGlvbiB3aG9zZSBNRVAgaXMgSW4tT25seS4gVGhlcmUKaXMgbm8gd2F5IG9mIGdldHRpbmcgYW4gZXJyb3IgZnJvbSB0aGUgc2VydmljZSB1c2luZyB0aGlzIG1ldGhvZC4KSG93ZXZlciwgeW91IG1heSBzdGlsbCBnZXQgY2xpZW50LXNpZGUgZXJyb3JzLCBzdWNoIGFzIGhvc3QgdW5rbm93bi48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkIHdpZHRoPSI0MTAiPgo8cHJlPkFYSVMyX0VYVEVSTiBheGlzMl9zdGF0dXNfdCBBWElTMl9DQUxMPGJyPjwvYnI+IGF4aXMyX3N2Y19jbGllbnRfc2VuZF9yb2J1c3QoPGJyPjwvYnI+IGF4aXMyX3N2Y19jbGllbnRfdCAqIHN2Y19jbGllbnQsPGJyPjwvYnI+IGNvbnN0IGF4dXRpbF9lbnZfdCAqIGVudiw8YnI+PC9icj4gY29uc3QgYXhpb21fbm9kZV90ICogcGF5bG9hZCk7PC9wcmU+CjwvdGQ+PHRkPlRoaXMgbWV0aG9kIHRvbyBpcyB1c2VkIHRvIGludGVyYWN0IHdpdGggYSBzZXJ2aWNlCm9wZXJhdGlvbiB3aG9zZSBNRVAgaXMgSW4tT25seS4gSG93ZXZlciwgdW5saWtlIDxjb2RlPmF4aXMyX3N2Y19jbGllbnRfZmlyZV9hbmRfZm9yZ2V0PC9jb2RlPiwKdGhpcyBmdW5jdGlvbiByZXBvcnRzIGFuIGVycm9yIGJhY2sgdG8gdGhlIGNhbGxlciBpZiBhIGZhdWx0IHRyaWdnZXJzCm9uIHRoZSBzZXJ2ZXIgc2lkZS48YnI+PC9icj4KV2hlbiB1c2luZyBPdXQtSW4gTUVQLCB0aGUgY2xpZW50IGV4cGVjdHMgYSByZXBseSBmcm9tIHRoZSBzZXJ2ZXIuIDxjb2RlPmF4aXMyX3N2Y19jbGllbnRfc2VuZF9yZWNlaXZlPC9jb2RlPgphbmQgPGNvZGU+IGF4aXMyX3N2Y19jbGllbnRfc2VuZF9yZWNlaXZlX25vbl9ibG9ja2luZzwvY29kZT5mdW5jdGlvbnMKc3VwcG9ydCB0aGlzIE1FUDwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+CjxwcmU+IEFYSVMyX0VYVEVSTiBheGlvbV9ub2RlX3QgKkFYSVMyX0NBTEw8YnI+PC9icj4gYXhpczJfc3ZjX2NsaWVudF9zZW5kX3JlY2VpdmUoPGJyPjwvYnI+IGF4aXMyX3N2Y19jbGllbnRfdCAqIHN2Y19jbGllbnQsPGJyPjwvYnI+IGNvbnN0IGF4dXRpbF9lbnZfdCAqIGVudiw8YnI+PC9icj4gY29uc3QgYXhpb21fbm9kZV90ICogcGF5bG9hZCk7PC9wcmU+CjwvdGQ+PHRkPlRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCBhIHNlcnZpY2UKb3BlcmF0aW9uIHdob3NlIE1FUCBpcyBJbi1PdXQuIEl0IHNlbmRzIGFuIFhNTCByZXF1ZXN0IGFuZCByZWNlaXZlcyBhbgpYTUwgcmVzcG9uc2UuPGJyPjwvYnI+ClJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBBWElPTSBub2RlIHJlcHJlc2VudGluZyB0aGUgWE1MIHJlc3BvbnNlLiBUaGlzCm1ldGhvZCBibG9ja3MgdGhlIGNsaWVudCB1bnRpbCB0aGUgcmVzcG9uc2UgYXJyaXZlcy48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPgo8cHJlPkFYSVMyX0VYVEVSTiB2b2lkIEFYSVMyX0NBTEw8YnI+PC9icj4gYXhpczJfc3ZjX2NsaWVudF9zZW5kX3JlY2VpdmVfbm9uX2Jsb2NraW5nKDxicj48L2JyPiBheGlzMl9zdmNfY2xpZW50X3QgKiBzdmNfY2xpZW50LDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKiBlbnYsPGJyPjwvYnI+IGNvbnN0IGF4aW9tX25vZGVfdCAqIHBheWxvYWQsPGJyPjwvYnI+IGF4aXMyX2NhbGxiYWNrX3QgKiBjYWxsYmFjayk7PC9wcmU+CjwvdGQ+PHRkPlRoaXMgbWV0aG9kIHRvbywgaXMgdXNlZCB0byBpbnRlcmFjdCB3aXRoIGEgc2VydmljZQpvcGVyYXRpb24gd2hvc2UgTUVQIGlzIEluLU91dC4gSXQgc2VuZHMgYW4gWE1MIHJlcXVlc3QgYW5kIHJlY2VpdmVzIGFuClhNTCByZXNwb25zZSwgYnV0IHRoZSBjbGllbnQgZG9lcyBub3QgYmxvY2sgZm9yIHRoZSByZXNwb25zZS48YnI+PC9icj4KSW4gdGhpcyBtZXRob2QsIHRoZSBjbGllbnQgZG9lcyBub3QgYmxvY2sgZm9yIHRoZSByZXNwb25zZSwgYnV0IGluc3RlYWQKaXQgZXhwZWN0cyB0aGUgdXNlciB0byBzZXQgYSBjYWxsIGJhY2sgdG8gY2FwdHVyZSB0aGUgcmVzcG9uc2UuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+Cjxicj48L2JyPgo8cD5QbGVhc2UgaGF2ZSBhIGxvb2sgYXQgdGhlIDxjb2RlPmF4aXMyX3N2Y19jbGllbnQuaDwvY29kZT4KaGVhZGVyIGZpbGUgZm9yCm1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGFib3ZlIG1lbnRpb25lZCBmdW5jdGlvbnMsIGFzIHdlbGwgYXMgdGhlaXIKc3lub255bXMKdGhhdCBhY2NlcHQgYW4gb3BlcmF0aW9uJ3MgcXVhbGlmaWVkIG5hbWUuPC9wPgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSI0XzFfU3luY2hyb25vdXNfdnNfX0FzeW5jaHJvbm91c19CZWhhdmlvcl9fQmxvY2tpbmdfTm9uLUJsb2NraW5nXyI+PC9hPgo8aDM+NC4xIFN5bmNocm9ub3VzIHZzLiBBc3luY2hyb25vdXMgQmVoYXZpb3IKKEJsb2NraW5nL05vbi1CbG9ja2luZyk8L2gzPgo8cD5UaGlzIHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNsaWVudCB3b3VsZCBibG9jayBmb3IgdGhlCnJlc3BvbnNlCihzeW5jaHJvbm91cykgb3IgcmV0dXJuIGltbWVkaWF0ZWx5IGV4cGVjdGluZyB0aGUgcmVzcG9uc2UgdG8gYmUKaGFuZGxlZCBieSBhCmNhbGxiYWNrIChhc3luY2hyb25vdXMsIGluIG90aGVyIHdvcmRzIG5vbi1ibG9ja2luZykgaW4gYW4gT3V0LUluIE1FUApzY2VuYXJpby48YnI+PC9icj4KPGNvZGU+YXhpczJfc3ZjX2NsaWVudF9zZW5kX3JlY2VpdmU8L2NvZGU+IG9wZXJhdGVzIGluCnN5bmNocm9ub3VzIG1vZGUsCndoZXJlYXMgPGNvZGU+YXhpczJfc3ZjX2NsaWVudF9zZW5kX3JlY2VpdmVfbm9uX2Jsb2NraW5nPC9jb2RlPgpvcGVyYXRlcyBpbgphc3luY2hyb25vdXMgbW9kZS48YnI+PC9icj4KPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iNF8yX1R3by1XYXlfb3JfT25lLVdheV9UcmFuc3BvcnQiPjwvYT4KPGgzPjQuMiBUd28tV2F5IG9yIE9uZS1XYXkgVHJhbnNwb3J0PC9oMz4KPHA+SWYgdGhlIHRyYW5zcG9ydCBpcyB0d28td2F5LCB0aGVuIG9ubHkgb25lIGNoYW5uZWwgaXMgdXNlZCwKd2hpY2ggbWVhbnMKdGhlIHJlcXVlc3QgaXMgc2VudCBhbmQgdGhlIHJlc3BvbnNlIGlzIHJlY2VpdmVkIG9uIHRoZSBzYW1lIGNoYW5uZWwuCklmIHRoZQp0cmFuc3BvcnQgaXMgb25lLXdheSwgdGhlbiB0aGUgcmVxdWVzdCBpcyBzZW50IG9uIG9uZSBjaGFubmVsIGFuZCB0aGUKcmVzcG9uc2UgaXMgcmVjZWl2ZWQgb24gYSBzZXBhcmF0ZSBjaGFubmVsLjxicj48L2JyPgpJZiB3ZSB3YW50IHRvIHVzZSBhIHNlcGFyYXRlIGNoYW5uZWwgZm9yIHRoZSByZXNwb25zZSwgYSBzZXBhcmF0ZQpsaXN0ZW5lcgpoYXMgdG8gYmUgc3RhcnRlZCB0byByZWNlaXZlIHRoZSByZXNwb25zZSwgVGhpcyBjYW4gYmUgZG9uZSBieSBzZXR0aW5nCnRoZQpzZXBhcmF0ZSBsaXN0ZW5lciBvcHRpb24gdG8gVHJ1ZSB1c2luZyB0aGUKPGNvZGU+YXhpczJfb3B0aW9uc19zZXRfdXNlX3NlcGFyYXRlX2xpc3RlbmVyPC9jb2RlPgpmdW5jdGlvbiBhYm92ZSB0aGUKb3B0aW9ucy48L3A+CjxwPlBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgPGNvZGU+ZWNob19ibG9ja2luZ19kdWFsPC9jb2RlPgpzYW1wbGUgdG8gc2VlCmhvdyB0byBzZXQgdGhlIHNlcGFyYXRlIGNoYW5uZWwgb3B0aW9uLjwvcD4KPHA+UGxlYXNlIHNlZSA8YSBocmVmPSIjYXBwRCI+QXBwZW5kaXggRDwvYT4KZm9yIGZ1cnRoZXIgZGV0YWlscyBvbiBzZXR0aW5nCm9wdGlvbnMuPC9wPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0icmVzdCI+PC9hPjwvcD4KPC9kaXY+CjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IjVfX1JFU1QiPjwvYT4KPGgyPjUuIFJFU1Q8L2gyPgo8cD5BeGlzMi9DIGNvbWVzIHdpdGggcGxhaW4gb2xkIFhNTCAoUE9YKSBsaWtlIFJFU1Qgc3VwcG9ydC4gQQpnaXZlbiBzZXJ2aWNlCmNhbiBiZSBleHBvc2VkIGJvdGggYXMgYSBTT0FQIHNlcnZpY2UgYXMgd2VsbCBhcyBhIFJFU1Qgc2VydmljZS4gQnkKZGVmYXVsdCwKeW91ciBzZXJ2aWNlIHdpbGwgc3VwcG9ydCBTT0FQIGFzIHdlbGwgYXMgUkVTVCwgaG93ZXZlciwgeW91ciBzZXJ2aWNlCm9wZXJhdGlvbnMKd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBmb3IgU09BUC4gSW4gb3JkZXIgdG8gZW5hYmxlIFJFU1QgZm9yIHlvdXIKb3BlcmF0aW9ucyB5b3UKbmVlZCB0byBhZGQgb25lIG9yIG1vcmUgcGFyYW1ldGVycyB1bmRlciB5b3VyIG9wZXJhdGlvbiwgaW4gdGhlIDxhIGhyZWY9IiNhcHBCIj5zZXJ2aWNlcy54bWw8L2E+LgpJZiB5b3Ugd2FudCB0byBjb25zdW1lIFdlYiBzZXJ2aWNlcyB1c2luZyBSRVNUIHN0eWxlIGNhbGxzLCB5b3UgY2FuIHVzZQp0aGUgSFRUUApQT1NUIG1ldGhvZCwgdGhlIEhUVFAgR0VUIG1ldGhvZCwgdGhlIEhUVFAgSEVBRCBtZXRob2QsIHRoZSBIVFRQIFBVVAptZXRob2Qgb3IKdGhlIEhUVFAgREVMRVRFIG1ldGhvZC48YnI+PC9icj4KPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSI1XzFfUkVTVF9jbGllbnQiPjwvYT4KPGgzPjUuMSBSRVNUIG9uIENsaWVudCBTaWRlPC9oMz4KPHA+VGhlIGZvbGxvd2luZyBleGFtcGxlIGNvZGUgZnJhZ21lbnQgc2hvd3MgaG93IHRvIHNldCB1cCBhCmNsaWVudCBlbmFibGluZyBhIFJFU1Qgc3R5bGUKaW52b2NhdGlvbi48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfb3B0aW9uc19zZXRfZW5hYmxlX3Jlc3Qob3B0aW9ucywgZW52LCBBWElTMl9UUlVFKTs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPllvdSBjYW4gdXNlIHRoZSBzYW1lIGNvZGUgdGhhdCB5b3UgdXNlIHdpdGggYSBTT0FQIGNhbGwsIGFuZApkbyBSRVNUIHN0eWxlCmludm9jYXRpb24gYnkganVzdCBlbmFibGluZyBSRVNUIHVzaW5nIHRoZSBvcHRpb24gc2V0dGluZyBzaG93biBhYm92ZS48L3A+CjxwPlRoZSBkZWZhdWx0IEhUVFAgbWV0aG9kIHVzZWQgd2l0aCBSRVNUIGlzIEhUVFAgUE9TVC4gSWYgeW91Cm5lZWQgdG8gY2hhbmdlCml0IHRvIHRoZSBIVFRQIEdFVCBtZXRob2QsIHRoZSBmb2xsb3dpbmcgbmVlZHMgdG8gYmUgZG9uZS48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfb3B0aW9uc19zZXRfaHR0cF9tZXRob2Qob3B0aW9ucywgZW52LCBBWElTMl9IVFRQX0dFVCk7PGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5TaW1pbGFybHkgeW91IGNhbiB1c2UgQVhJWDJfSFRUUF9IRUFEIHRvIGNoYW5nZSBpdCB0byB0aGUgSFRUUApIRUFEIG1ldGhvZCwKb3IgQVhJWDJfSFRUUF9QVVQgdG8gY2hhbmdlIGl0IHRvIHRoZSBIVFRQIFBVVCBtZXRob2QsIG9yCkFYSVgyX0hUVFBfREVMRVRFIHRvIGNoYW5nZSBpdAp0byB0aGUgSFRUUCBERUxFVEUgbWV0aG9kLiA8L3A+CjxwPlBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgPGNvZGU+ZWNob19yZXN0PC9jb2RlPgpzYW1wbGUgZm9yIGEgY29tcGxldGUKc291cmNlIGNvZGUgb24gaG93IHRvIHVzZSBSRVNULjxicj48L2JyPgo8L3A+CjwvZGl2PjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjVfMl9SRVNUX3NlcnZlciI+PC9hPgo8aDM+NS4yIFJFU1Qgb24gU2VydmVyIFNpZGU8L2gzPgo8cD5Zb3UgYmFzaWNhbGx5IG5lZWQgdG8gYWRkIHRoZSBSRVNUIExvY2F0aW9uLCBhbmQgdGhlIFJFU1QKTWV0aG9kIHBhcmFtZXRlcnMgdG8gdGhlIDxhIGhyZWY9IiNhcHBCIj5zZXJ2aWNlcy54bWw8L2E+CnRvIGVuYWJsZSBSRVNUIGluIGEgc2VydmljZSBvcGVyYXRpb24uIFRoZSBSRVNUIGxvY2F0aW9uIGlzIHRoZQp0ZW1wbGF0ZSB0aGF0IG5lZWRzIHRvIGJlIG1hdGNoZWQKdG8gZmluZCB5b3VyIG9wZXJhdGlvbiwgYW5kIHRoZSBSRVNUIE1ldGhvZCBpcyB0aGUgSFRUUCBNZXRob2QKYXNzb2NpYXRlZCB3aXRoIHRoZSBzZXJ2aWNlLgpOb3RlIHRoYXQgdGhlIFJFU1QgTWV0aG9kIGlzIG9wdGlvbmFsIGZvciBlYWNoIG9wZXJhdGlvbi4gSWYgbm8gUkVTVApNZXRob2QgaXMgc3BlY2lmaWVkLCBQT1NULAp3aWxsIGJlIGFzc3VtZWQuIE9wdGlvbmFsbHkgeW91IG1heSBzcGVjaWZ5IHRoZSBkZWZhdWx0IFJFU1QgTWV0aG9kIGZvcgphbGwgb3BlcmF0aW9ucyBhdCB0aGUgc2VydmljZQpsZXZlbC4gVGhlbiwgaWYgeW91IGhhdmVuJ3Qgc3BlY2lmaWVkIGEgUkVTVCBNZXRob2QgZm9yIHlvdXIgb3BlcmF0aW9uLAp0aGUgZGVmYXVsdCBSRVNUIE1ldGhvZApzcGVjaWZpZWQgd2lsbCBiZSBhc3N1bWVkIGluc3RlYWQgb2YgUE9TVC4gUGxlYXNlIGhhdmUgYSBsb29rIGF0IHRoZSA8Y29kZT5lY2hvPC9jb2RlPgpzYW1wbGUKc2VydmljZSBmb3IgYSBjb21wbGV0ZSBzb3VyY2UgY29kZSBvbiBob3cgdG8gc2V0IHVwIFJFU1QuIFNob3duIGJlbG93CmlzIGFuIGV4YW1wbGUsIG9uIGhvdyB0bwpjb25maWd1cmUgdGhlIDxjb2RlPmxvY2F0ZTwvY29kZT4gb3BlcmF0aW9uIHRvIHdvcmsgd2l0aApIVFRQIEdFVCBvbiBSRVNULjxicj48L2JyPgo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+Jmx0O29wZXJhdGlvbiBuYW1lPSJsb2NhdGUiJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9IlJFU1RNZXRob2QiJmd0O0dFVCZsdDsvcGFyYW1ldGVyJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9IlJFU1RMb2NhdGlvbiImZ3Q7bG9jYXRpb24ve2xhdH0ve2xvbmd9Jmx0Oy9wYXJhbWV0ZXImZ3Q7PGJyPjwvYnI+Jmx0Oy9vcGVyYXRpb24mZ3Q7PGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5UaGUgY29ycmVzcG9uZGluZyByZXF1ZXN0IHdvdWxkIGxvb2sgbGlrZSwgPGNvZGU+aHR0cDovL3d3dy5zYW1wbGUub3JnL3NlcnZpY2UvbG9jYXRpb24vMzROLzExOFc8L2NvZGU+LAp3aGljaCB3b3VsZCByZXR1cm4gTG9zIEFuZ2VsZXMsIENhbGlmb3JuaWEuIEluIGhlcmUsIHRoZSBwb3J0aW9uIDxjb2RlPmxvY2F0aW9uPC9jb2RlPgppcyBmaXhlZCBhbmQgPGNvZGU+bGF0PC9jb2RlPiBhbmQgPGNvZGU+bG9uZzwvY29kZT4KYXJlIG9wdGlvbmFsIHBhcmFtZXRlcnMgd2hpY2ggd2lsbCBiZSBjYXB0dXJlZCB0byB0aGUgcGF5bG9hZC4KPGJyPjwvYnI+CjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iNV8zX1JFU1RfYW5kX1NPQVBfZm9yX3NhbWVfb3BlcmF0aW9uIj48L2E+CjxoMz41LjMgUkVTVCBhbmQgU09BUCBmb3IgU2FtZSBPcGVyYXRpb248L2gzPgo8cD5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGVuYWJsZSBhIHNpbmdsZSBzZXJ2aWNlIG9wZXJhdGlvbiBmb3IKU09BUCBhcyB3ZWxsIGFzIFJFU1QuIFRoaXMgY2FuIGJlIGRvbmUgYnkgc3BlY2lmeWluZyBhIFJFU1QgTG9jYXRpb24KdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBvcGVyYXRpb24gbmFtZS4gVGhlIDxjb2RlPmxvY2F0ZTwvY29kZT4Kb3BlcmF0aW9uIGlzIGFuIGV4YW1wbGUgdG8gc3VjaCBhIGNhc2UuIFRodXMsIGZvciBhIFNPQVAgaW52b2NhdGlvbiwKeW91IG5lZWQgdG8gdXNlIDxjb2RlPmh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zZXJ2aWNlL2xvY2F0ZTwvY29kZT4sCmFzIHRoZSBlbmQgcG9pbnQgb3IgV1MtQWRkcmVzc2luZyBBY3Rpb24uPC9wPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0ibXRvbSI+PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iNl9fTVRPTSI+PC9hPgo8aDI+Ni4gTVRPTTwvaDI+CjxwPkF4aXMyL0MgYWxsb3dzIHlvdSB0byBzZW5kIGFuZCByZWNlaXZlIGJpbmFyeSBkYXRhIHdpdGggU09BUAptZXNzYWdlcwp1c2luZyBNVE9NL1hPUCBjb252ZW50aW9ucy4gV2hlbiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgYXR0YWNobWVudHMsIHlvdQpoYXZlCnRvIHVzZSB0aGUgc2VydmljZSBjbGllbnQgKDxjb2RlPmF4aXMyX3N2Y19jbGllbnQ8L2NvZGU+KQpBUEkgdG8gcGVyZm9ybSB0aGUKc2VuZCBhbmQgcmVjZWl2ZSBvcGVyYXRpb25zLCBhbmQgcHJvdmlkZSBvciBjb25zdW1lIGJpbmFyeSBkYXRhIGluCnJlbGF0aW9uCnRvIHRoZSBBWElPTSBwYXlsb2Fkcy48L3A+CjxwPkluIG9yZGVyIHRvIHNlbmQgYSBiaW5hcnkgYXR0YWNobWVudCwgeW91IG5lZWQgdG8gYnVpbGQgdGhlCkFYSU9NIHBheWxvYWQKYW5kIGF0dGFjaCB0aGUgZGF0YSBoYW5kbGVyIHdpdGggYmluYXJ5IGNvbnRlbnQgdG8gdGhlIHBheWxvYWQuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiZsdDtzb2FwZW52OkJvZHkmZ3Q7PGJyPjwvYnI+ICZsdDtuczE6bXRvbVNhbXBsZSB4bWxuczpuczE9Imh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2Mvc2FtcGxlcy9tdG9tIiZndDs8YnI+PC9icj4gJmx0O25zMTpmaWxlTmFtZSZndDt0ZXN0LmpwZyZsdDsvbnMxOmZpbGVOYW1lJmd0Ozxicj48L2JyPiAmbHQ7bnMxOmltYWdlJmd0Ozxicj48L2JyPiAmbHQ7eG9wOkluY2x1ZGUgeG1sbnM6eG9wPSJodHRwOi8vd3d3LnczLm9yZy8yMDA0LzA4L3hvcC9pbmNsdWRlIiA8YnI+PC9icj4gaHJlZj0iY2lkOjEuZjM5OTI0OGUtOGIzOS0xZGIxLTMxMjQtMDAxNWM1M2RlMmU1QGFwYWNoZS5vcmciJmd0OyZsdDsveG9wOkluY2x1ZGUmZ3Q7PGJyPjwvYnI+ICZsdDsvbnMxOmltYWdlJmd0Ozxicj48L2JyPiAmbHQ7L25zMTptdG9tU2FtcGxlJmd0Ozxicj48L2JyPiZsdDsvc29hcGVudjpCb2R5Jmd0Ozxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+SW4gdGhlIGFib3ZlIHNhbXBsZSBwYXlsb2FkIHNob3duLCB3ZSBwbGFjZSBvdXIgaW1hZ2UgZmlsZSBhcwp0ZXh0IHdpdGhpbgphbiBpbWFnZSBlbGVtZW50PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmltYWdlX29tX2VsZSA9IGF4aW9tX2VsZW1lbnRfY3JlYXRlKGVudiwgbXRvbV9vbV9ub2RlLCAiaW1hZ2UiLCBuczEsICZhbXA7aW1hZ2Vfb21fbm9kZSk7PGJyPjwvYnI+ZGF0YV9oYW5kbGVyID0gYXhpb21fZGF0YV9oYW5kbGVyX2NyZWF0ZShlbnYsIGltYWdlX25hbWUsICJpbWFnZS9qcGVnIik7PGJyPjwvYnI+ZGF0YV90ZXh0ID0gYXhpb21fdGV4dF9jcmVhdGVfd2l0aF9kYXRhX2hhbmRsZXIoZW52LCBpbWFnZV9vbV9ub2RlLCBkYXRhX2hhbmRsZXIsICZhbXA7ZGF0YV9vbV9ub2RlKTs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPldoZW4gc2VuZGluZyBhdHRhY2htZW50cywgeW91IGNhbiBjb25maWd1cmUgdGhlIGNsaWVudCBlaXRoZXIKdG8gc2VuZCB0aGUKYXR0YWNobWVudCBpbiB0aGUgb3B0aW1pemVkIGZvcm1hdCBvciBub24tb3B0aW1pemVkIGZvcm1hdC48L3A+CjxwPlRvIGRvIHRoaXMsIHNldCB0aGUgb3B0aW9uIDxjb2RlPmF4aXMyX29wdGlvbnNfc2V0X2VuYWJsZV9tdG9tKG9wdGlvbnMsCmVudiwgQVhJUzJfVFJVRSk7PC9jb2RlPm9yIHRoZSBzZXR0aW5nCjxjb2RlPiZsdDtlbmFibGVNdG9tJmd0O3RydWUmbHQ7L2VuYWJsZU10b20mZ3Q7IDwvY29kZT5pbgpheGlzMi54bWw8L3A+CjxwPklmIGVuYWJsZU1UT00gaXMgc2V0IHRvIFRydWUsIHRoZSBhdHRhY2htZW50IGlzIHNlbnQgYXMgaXQgaXMsCm91dCBvZiB0aGUKU09BUCBib2R5LCB1c2luZyBNSU1FIGhlYWRlcnMuIEFsc28gdGhlIHBheWxvYWQgd2lsbCBoYXZlIGFuClhPUDpJbmNsdWRlCmVsZW1lbnQsIHJlZmVycmluZyB0byB0aGUgTUlNRSBwYXJ0IHRoYXQgY29udGFpbnMgdGhlIGJpbmFyeQphdHRhY2htZW50LgpTZW5kaW5nIHRoZSBhdHRhY2htZW50IGFzIGl0IGlzLCBpbiBwdXJlIGJpbmFyeSBmb3JtYXQsIGlzIGNhbGxlZApiaW5hcnkKb3B0aW1pemVkIGZvcm1hdC4gSW4gdGhlIGNhc2Ugb2YgYmluYXJ5IG5vbi1vcHRpbWl6ZWQgZm9ybWF0LCB3aGVyZQplbmFibGVNVE9NIGlzIEZhbHNlLCB0aGUgYXR0YWNobWVudCBjb250ZW50IGlzIHNlbnQgaW4gdGhlIHBheWxvYWQKaXRzZWxmLCBhcwphIGJhc2U2NCBlbmNvZGVkIHN0cmluZy48L3A+PGgzPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjYuMSBVc2luZyBNVE9NIENhbGxiYWNrczwvc3Bhbj48L2gzPkF4aXMyL0MKQ2FuIHNlbmQgYW5kIHJlY2VpdmUgdmVyeSBsYXJnZSBhdHRhY2htZW50cyB3aXRoIGEgdmVyeSBsb3cgbWVtb3J5IGZvb3QKcHJpbnQuIFVzZXIgY2FuIHNwZWNpZnkgY2FsbGJhY2tzIHRvIGxvYWQgYXR0YWNobWVudHMgYmVmb3JlIHNlbmRpbmcKYW5kIHN0b3JlIGF0dGFjaG1lbnRzIHdoaWxlIHJlY2lldmluZy48YnI+PC9icj48aDQ+Ni4xLjEgU2VuZGVyIHNpZGUgQ2FsbGJhY2s8L2g0PlRoZSBhdHRhY2htZW50IGNhbiBiZSBsb2FkZWQgZnJvbSBhbnkgZGF0YSBzb3VyY2UuIFVzZXIgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGNhbGxiYWNrIHVzaW5nIDxhIGhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvd2Vic2VydmljZXMvYXhpczIvdHJ1bmsvYy9heGlvbS9pbmNsdWRlL2F4aW9tX210b21fc2VuZGluZ19jYWxsYmFjay5oIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+YXhpb21fbXRvbV9zZW5kaW5nX2NhbGxiYWNrLmg8L2E+LiBBIKBzYW1wbGUgQ2FsbGJhY2sgY2FuIGJlIGZvdW5kIDxhIGhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvd2Vic2VydmljZXMvYXhpczIvdHJ1bmsvYy9zYW1wbGVzL210b21fc2VuZGluZ19jYWxsYmFjay9tdG9tX3NlbmRpbmdfY2FsbGJhY2suYyIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPmhlcmU8L2E+LiBGb2xsb3dpbmcgaXMgd2hhdCBuZWVkIHRvIGJlIGRvbmUgd2l0aCBkYXRhX2hhbmRsZXIgaW4gdGhlIGNhc2Ugb2YgYSBjYWxsYmFjay48YnI+PC9icj6gPGJyPjwvYnI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Ij5kYXRhX2hhbmRsZXIgPSBheGlvbV9kYXRhX2hhbmRsZXJfY3JlYXRlKGVudiwgTlVMTCygY29udGVudC10eXBlKTs8L3NwYW4+PGJyIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+PC9icj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsiPmF4aW9tX2RhdGFfaGFuZGxlcl9zZXRfZGF0YV9oYW5kbGVyX3R5cGUoZGF0YV9oYW5kbGVyLCBlbnYsIEFYSU9NX0RBVEFfSEFORExFUl9UWVBFX0NBTExCQUNLKTs8L3NwYW4+PGJyIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+PC9icj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsiPmF4aW9tX2RhdGFfaGFuZGxlcl9zZXRfdXNlcl9wYXJhbShkYXRhX2hhbmRsZXIsIGVudiwgKHZvaWQgKil1c2VyX3BhcmFtKTs8L3NwYW4+PHA+dXNlcl9wYXJhbQppcyBvZiBhbnkgdHlwZSB3aGljaCB0aGUgdXNlciBzaG91bGQga25vdyBob3cgdG8gaGFuZGxlIGZyb20gdGhlCmNhbGxiYWNrLiBUaGUgcGF0aCB0byB0aGUgaW1wbGVtZW50ZWQgY2FsbGJhY2sgc2hvdWxkIGJlIHNwZWNpZmllZCBpbgp0aGUgYXhpczIueG1sIGFzIGZvbGxvd3MuPC9wPjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+Jmx0O3BhcmFtZXRlciBuYW1lPSJNVE9NU2VuZGluZ0NhbGxiYWNrIiBsb2NrZWQ9ImZhbHNlIiZndDsvcGF0aC90by90aGUvYXR0YWNobWVudF9zZW5kaW5nX2NhbGxiYWNrJmx0Oy9wYXJhbWV0ZXImZ3Q7PC9zcGFuPjwvcD48aDQ+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+Ni4xLjIgUmVjZWl2ZXIgc2lkZSBjYWxsYmFjazwvc3Bhbj48L2g0PjxwPkZvcgpsYXJnZSBhdHRhY2htZW50cyB1c2VycyBjYW4gc3BlY2lmeSB0aGVtIHRvIGJlIGNhY2hlZCBlaXRoZXIgdG8gYSBmaWxlCm9yIHRvIGEgYW55IHN0b3JhZ2UuIEluIG9yZGVyIHRvIGVuYWJsZSBjYWNoaW5nIHVzZXIgc2hvdWxkIHNldCBlaXRoZXIgImF0dGFjaG1lbnREaXIiIG9yICJNVE9NQ2FjaGluZ0NhbGxiYWNrPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Ij48L3NwYW4+IgpwYXJhbWV0ZXJzIGluIHRoZSBheGlzMi54bWwuIElmIGJvdGggYXJlIHNldCB0aGUgY2FsbGJhY2sgd2lsbCBiZSB1c2VkLgpJZiBub3RoaW5nIGlzIHNldCBhdHRhY2htZW50IHdpbGwgcmVzaWRlIGluIG1lbW9yeS6gPC9wPjxwPkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNwZWNpZnlpbmcgdGhlIGF0dGFjaG1lbnREaXIuPC9wPjxwIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+Jmx0O3BhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50RElSIiBsb2NrZWQ9ImZhbHNlIiZndDsvcGF0aC90by90aGUvZGlyLyZsdDsvcGFyYW1ldGVyJmd0OzwvcD48cD5TbyB0aGUgYXR0YWNobWVudHMgd2lsbCBiZSBzYXZlZAppbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSB1c2luZyB0aGUgYXR0YWNobWVudCBjb250ZW50IGlkIGFzIHRoZSBmaWxlCm5hbWUuPC9wPjxwPkluIHRoZSBjYWxsYmFjayBjYXNlIHRoZSBjYWxsYmFjayBzaG91bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgPGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi93ZWJzZXJ2aWNlcy9heGlzMi90cnVuay9jL2F4aW9tL2luY2x1ZGUvYXhpb21fbXRvbV9jYWNoaW5nX2NhbGxiYWNrLmgiIGNsYXNzPSJleHRlcm5hbExpbmsiIHRpdGxlPSJFeHRlcm5hbCBMaW5rIj5heGlvbV9tdG9tX2NhY2hpbmdfY2FsbGJhY2suaDwvYT4uIFRoZSBmb2xsb3dpbmcgcGFyYW10ZXIgd2lsbCBlbmJhbGUgdGhlIGNhY2hpbmcgY2FsbGJhY2suPC9wPjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+Jmx0O3BhcmFtZXRlciBuYW1lPSJNVE9NQ2FjaGluZ0NhbGxiYWNrIiBsb2NrZWQ9ImZhbHNlIiZndDsvcGF0aC90by90aGUvYXR0YWNobWVudF9jYWNoaW5nX2NhbGxiYWNrJmx0Oy9wYXJhbWV0ZXImZ3Q7PC9zcGFuPjwvcD5BIHNhbXBsZSBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgPGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi93ZWJzZXJ2aWNlcy9heGlzMi90cnVuay9jL3NhbXBsZXMvbXRvbV9jYWNoaW5nX2NhbGxiYWNrL210b21fY2FjaGluZ19jYWxsYmFjay5jIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+aGVyZTwvYT4uPHA+QXhpczIvQwphbGxvd3OgdG8gc2V0IHRoZSBjYWNoaW5nIHRocmVzaG9sZC4gVGhlIGRlZmF1bHQgaXMgMU1CLiBGb3IKZXhhbXBsZSB0byBjYWNoZSBhdHRhY2htZW50cyB3aGljaCBhcmUgZ3JlYXRlciB0aGFuIDEwTUIgaW4gc2l6ZSB1c2VyCm5lZWQgdG8gYWRkIHRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlIGluIGF4aXMyLnhtbC48L3A+PHA+IDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+Jmx0O3BhcmFtZXRlciBuYW1lPSJNVE9NQnVmZmVyU2l6ZSIgbG9ja2VkPSJmYWxzZSImZ3Q7MTAmbHQ7L3BhcmFtZXRlciZndDs8L3NwYW4+PC9wPjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+PC9zcGFuPlRoaXMgd2lsbCBnaXZlIHRoZSBjb250cm9sIHRvIHRoZSB1c2VycyB0byB1c2UgdGhlIGF2YWlsYmFsZSBtZW1vcnkgZXZlbiB3aXRoIGxhcmdlciBhdHRhY2htZW50cy48L3A+PHA+V2hlbiB0aGUgYXR0YWNobWVudCBpcyBjYWNoZWQgdGhlIHVsdGltYXRlIHJlY2VpdmVyIGNhbiBhbHdheXMgaWRlbnRpZnkgaXQgYnkgY2FsbGluZyAsPC9wPjxwIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyI+aWYgKGF4aW9tX2RhdGFfaGFuZGxlcl9nZXRfY2FjaGVkKGRhdGFfaGFuZGxlciwgZW52KSk8YnI+PC9icj57PGJyPjwvYnI+oKCgIC8qIGxvZ2ljIGZvciBhdHRhY2htZW50IGhhbmRsaW5nICovPGJyPjwvYnI+fTwvcD4KPHA+VGhlIGxvZ2ljIG9uIGhvdyB0byBoYW5kbGUgdGhlIGF0dGFjaG1lbnQgd2lsbCBkZXBlbmQgb24gdGhlIG1lY2hhbmlzbSB3aGljaCBpcyB1c2VkIHRvIGNhY2hlZCB0aGUgYXR0YWNobWVudC48L3A+PHA+UGxlYXNlIGhhdmUgYSBsb29rIGF0IHRoZSBNVE9NIHJlbGF0ZWQgc2FtcGxlcyBpbiB0aGUgQXhpczIvQyBzYW1wbGVzIGRpcmVjdG9yeS48L3A+PGJyPjwvYnI+Cgo8cD48YSBuYW1lPSJlbmdhZ2luZ19tb2R1bGUiPjwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IjdfX0VuZ2FnaW5nX2FfTW9kdWxlIj48L2E+CjxoMj43LiBFbmdhZ2luZyBhIE1vZHVsZTwvaDI+CjxwPkEgbW9kdWxlIGlzIGEgc2V0IG9mIGhhbmRsZXJzIHRoYXQgaGVscHMgdG8gZXh0ZW5kIHRoZSBtZXNzYWdlCnByb2Nlc3NpbmcKYmVoYXZpb3Igb2YgdGhlIEF4aXMyL0MgZW5naW5lLiBNb2R1bGVzIGhhdmUgdGhlIGNvbmNlcHRzIG9mIGJlaW5nCkF2YWlsYWJsZQphbmQgRW5nYWdlZCBhc3NvY2lhdGVkIHdpdGggdGhlbS4gQXZhaWxhYmxlIG1lYW5zIG1vZHVsZXMgYXJlIGRlcGxveWVkCmluIHRoZQpzeXN0ZW0gYnV0IG5vdCBhY3RpdmF0ZWQuIFRoZXkgd2lsbCBiZSBhY3RpdmF0ZWQgb25seSBhZnRlciBiZWluZwplbmdhZ2VkLgpFdmVyeSBtb2R1bGUgY29tZXMgd2l0aCBpdHMgb3duIG1vZHVsZS54bWwgZmlsZSAuIFRoaXMgbW9kdWxlLnhtbCBmaWxlCnNwZWNpZmllcyB0aGUgbW9kdWxlIHNwZWNpZmljIGhhbmRsZXJzIGFuZCB0aGUgcGhhc2VzIGludG8gd2hpY2ggdGhlCmhhbmRsZXJzCmFyZSB0byBiZSBwbGFjZWQgaW4gdGhlIGhhbmRsZXIgY2hhaW4uIFNvbWUgb2YgdGhlIG1vZHVsZSBzcGVjaWZpYwpoYW5kbGVycwptYXkgYmUgcHV0IGludG8gc3lzdGVtIHByZWRlZmluZWQgcGhhc2VzLiBJbiB0aGF0IGNhc2UsIHRoZSBtb2R1bGUueG1sCmZpbGUKc2hvdWxkIHNwZWNpZnkgd2hlcmUgdG8gcHV0IHRoZSBoYW5kbGVycyByZWxhdGl2ZSB0byB0aGUgb3RoZXJzIGluIHRoYXQKcGhhc2UuIFNvbWV0aW1lcyBhIG1vZHVsZSBtYXkgZGVmaW5lIGl0cyBvd24gcGhhc2UuIEluIHRoYXQgY2FzZSwgc29tZQpvZiB0aGUKbW9kdWxlIHNwZWNpZmljIGhhbmRsZXJzIG1heSBiZSBwdXQgaW50byB0aGF0IHBoYXNlLiBUaGUgaGFuZGxlcnMgYWRkZWQKdG8KdGhlIHN5c3RlbSBwcmVkZWZpbmVkIHBoYXNlcyAoZ2xvYmFsIGhhbmRsZXJzKSBhcmUgaW52b2tlZCBmb3IgZXZlcnkKbWVzc2FnZQp0aGF0IGNvbWVzIHRvIG9yIGdvZXMgb3V0IGZyb20gdGhlIHN5c3RlbS4gVGhlIGhhbmRsZXJzIGluIHRoZSBtb2R1bGUKc3BlY2lmaWMgcGhhc2UgYXJlIGludm9rZWQgb25seSBmb3IgdGhlIG1lc3NhZ2VzIGludm9raW5nIHRoZQpvcGVyYXRpb25zIHRoYXQKZW5nYWdlIHRoYXQgbW9kdWxlLiBFbmdhZ2luZyBhIG1vZHVsZSBtZWFucyBjb3JyZWN0bHkgYWRkaW5nIHRoZQpoYW5kbGVycyBvZgphIHBhcnRpY3VsYXIgbW9kdWxlIHRvIG9uZSBvciBtb3JlIHBoYXNlcy4gT25jZSB0aGUgbW9kdWxlIGlzIGVuZ2FnZWQsCnRoZQpoYW5kbGVycyBhbmQgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBhZGRlZCB0byB0aGUKZW50aXR5CnRoYXQgZW5nYWdlZCB0aGVtLjwvcD4KPHA+QmVmb3JlIGVuZ2FnaW5nIGEgbW9kdWxlLCB0aGUgZm9sbG93aW5nIHN0ZXBzIGhhdmUgdG8gYmUKZm9sbG93ZWQuPC9wPgo8b2w+CjxsaT5Xcml0ZSB0aGUgbW9kdWxlLnhtbCBmaWxlPC9saT4KPGxpPlBhY2thZ2UgdGhlIG1vZHVsZSBsaWJyYXJpZXMgYW5kIHRoZSBtb2R1bGUueG1sIGludG8gYQpmb2xkZXIgd2hpY2ggaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIG1vZHVsZTwvbGk+CjxsaT5EZXBsb3kgdGhlIGZvbGRlciBpbiBBWElTMkNfSU5TVEFMTF9ESVIvbW9kdWxlczwvbGk+CjxsaT5BZGQgdGhlIG1vZHVsZSBzcGVjaWZpYyBwaGFzZXMgaW4gdGhlIGF4aXMyLnhtbCBmaWxlPC9saT4KPC9vbD4KPHA+VGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGVuZ2FnaW5nIGEgc2FtcGxlIG1vZHVsZSBjYWxsZWQKdGhlIGxvZ2dpbmcKbW9kdWxlIHdpdGggQXhpczIvQzo8L3A+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjdfMV9Xcml0aW5nX3RoZV9tb2R1bGVfeG1sX0ZpbGUiPjwvYT4KPGgzPjcuMSBXcml0aW5nIHRoZSBtb2R1bGUueG1sIEZpbGU8L2gzPgo8cD5JbiB0aGUgbW9kdWxlLnhtbCBmaWxlLCB0aGUgaGFuZGxlcnMgb2YgdGhlIG1vZHVsZSBhbmQgdGhlCnBoYXNlcyB0byB3aGljaAp0aGV5IGFyZSB0byBiZSBhZGRlZCBoYXZlIHRvIGJlIHNwZWNpZmllZC4gQmVsb3cgaXMgdGhlIG1vZHVsZS54bWwgZmlsZQpvZgp0aGUgc2FtcGxlIGxvZ2dpbmcgbW9kdWxlLjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4gJmx0O21vZHVsZSBuYW1lPSJsb2dnaW5nIiBjbGFzcz0iYXhpczJfbW9kX2xvZyImZ3Q7PGJyPjwvYnI+ICZsdDtpbmZsb3cmZ3Q7PGJyPjwvYnI+ICZsdDtoYW5kbGVyIG5hbWU9IkxvZ2dpbmdJbkhhbmRsZXIiIGNsYXNzPSJheGlzMl9tb2RfbG9nIiZndDs8YnI+PC9icj4gJmx0O29yZGVyIHBoYXNlPSJQcmVEaXNwYXRjaCIvJmd0Ozxicj48L2JyPiAmbHQ7L2hhbmRsZXImZ3Q7PGJyPjwvYnI+ICZsdDsvaW5mbG93Jmd0Ozxicj48L2JyPiAmbHQ7b3V0ZmxvdyZndDs8YnI+PC9icj4gJmx0O2hhbmRsZXIgbmFtZT0iTG9nZ2luZ091dEhhbmRsZXIiIGNsYXNzPSJheGlzMl9tb2RfbG9nIiZndDs8YnI+PC9icj4gJmx0O29yZGVyIHBoYXNlPSJNZXNzYWdlT3V0Ii8mZ3Q7PGJyPjwvYnI+ICZsdDsvaGFuZGxlciZndDs8YnI+PC9icj4gJmx0Oy9vdXRmbG93Jmd0Ozxicj48L2JyPiAmbHQ7T3V0ZmF1bHRmbG93Jmd0Ozxicj48L2JyPiAmbHQ7aGFuZGxlciBuYW1lPSJMb2dnaW5nT3V0SGFuZGxlciIgY2xhc3M9ImF4aXMyX21vZF9sb2ciJmd0Ozxicj48L2JyPiAmbHQ7b3JkZXIgcGhhc2U9Ik1lc3NhZ2VPdXQiLyZndDs8YnI+PC9icj4gJmx0Oy9oYW5kbGVyJmd0Ozxicj48L2JyPiAmbHQ7L091dGZhdWx0ZmxvdyZndDs8YnI+PC9icj4gJmx0Oy9tb2R1bGUmZ3Q7PGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5JbiB0aGUgYWJvdmUgc2hvd24gbW9kdWxlIGNvbmZpZ3VyYXRpb24gZmlsZSwgdGhlIG5hbWUgb2YgdGhlCm1vZHVsZSBpcwpsb2dnaW5nLiBUaGVyZSBhcmUgdHdvIGhhbmRsZXJzIGluIHRoaXMgbW9kdWxlLCB0aGUgTG9nZ2luZ0luSGFuZGxlcgphbmQgdGhlCkxvZ2dpbmdPdXRIYW5kbGVyLiBUaGUgTG9nZ2luZ0luSGFuZGxlciBpcyBwbGFjZWQgaW50byB0aGUgUHJlRGlzcGF0Y2gKcGhhc2UKb2YgdGhlIGluIGZsb3cuIFRoZSBMb2dnaW5nT3V0SGFuZGxlciBpcyBwbGFjZWQgaW50byB0aGUgTWVzc2FnZU91dApwaGFzZSBvZgpib3RoIHRoZSBvdXQgZmxvdyBhbmQgdGhlIGZhdWx0IG91dCBmbG93LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjdfMl9QYWNrYWdpbmdfYW5kX0RlcGxveWluZ190aGVfTW9kdWxlIj48L2E+CjxoMz43LjIgUGFja2FnaW5nIGFuZCBEZXBsb3lpbmcgdGhlIE1vZHVsZTwvaDM+CjxwPlRoZSBhYm92ZSBtb2R1bGUueG1sIGZpbGUgc2hvdWxkIGJlIGNvcGllZCB0byBhIGZvbGRlciBuYW1lZAoibG9nZ2luZyIKKGJlY2F1c2UgdGhlIG1vZHVsZSBuYW1lIGlzICJsb2dnaW5nIikgaW5zaWRlIHRoZQpBWElTMkNfSU5TVEFMTF9ESVIvbW9kdWxlcwpmb2xkZXIuIFRoZSBtb2R1bGUgbGlicmFyaWVzIGNvbnRhaW5pbmcgdGhlIGhhbmRsZXIgaW1wbGVtZW50YXRpb24Kc2hvdWxkCmFsc28gYmUgY29waWVkIHRvIHRoZSBzYW1lIGZvbGRlci4gQWNjb3JkaW5nIHRvIHRoZSBtb2R1bGUueG1sIGZpbGUKc2hvd24KYWJvdmUsIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlIHNob3VsZCBiZQpsaWJheGlzMl9tb2RfbG9nLnNvIG9uCkxpbnV4IGFuZCBheGlzMl9tb2RfbG9nLmRsbCBvbiBNUyBXaW5kb3dzLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjdfM19BZGRpbmdfTW9kdWxlX1NwZWNpZmljX1BoYXNlc190b190aGVfYXhpczJfeG1sX0ZpbGUiPjwvYT4KPGgzPjcuMyBBZGRpbmcgTW9kdWxlIFNwZWNpZmljIFBoYXNlcyB0byB0aGUgYXhpczIueG1sIEZpbGU8L2gzPgo8cD5Nb2R1bGUgc3BlY2lmaWMgcGhhc2VzIGhhdmUgdG8gYmUgYWRkZWQgYWZ0ZXIgdGhlIHN5c3RlbQpwcmVkZWZpbmVkCnBoYXNlcy4gVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHdoZXJlIHRvIGFkZCB0aGUgbW9kdWxlIHNwZWNpZmljCnBoYXNlcy4KTG9vayBmb3IgdGhlIDxjb2RlPnBoYXNlT3JkZXI8L2NvZGU+IGVsZW1lbnRzIGluIHRoZQpheGlzMi54bWwgZmlsZS4gTm90ZSB0aGUKY29tbWVudCBsaW5lczo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+ICZsdDshLS0gVXNlciBkZWZpbmVkIHBoYXNlcyBjb3VsZCBiZSBhZGRlZCBoZXJlIC0tJmd0OzwvcHJlPgo8L2Rpdj4KPHA+WW91IGNhbiBhZGQgdXNlciBkZWZpbmVkIHBoYXNlcyBhZnRlciB0aGUgYWJvdmUgY29tbWVudCBsaW5lCmludG8gYW55IG9mIHRoZQpmbG93cy4gVGhlIDxjb2RlPnR5cGU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgPGNvZGU+cGhhc2VPcmRlcjwvY29kZT4KZWxlbWVudAppbmRpY2F0ZXMgdGhlIGZsb3cuCjwvcD4KPHA+Rm9yIHRoZSBsb2dnaW5nIG1vZHVsZSBleGFtcGxlLCB1c2VyIGRlZmluZWQgcGhhc2VzIGFyZSBub3QKcmVxdWlyZWQuIEFsbAp0aGUgbW9kdWxlIHNwZWNpZmljIGhhbmRsZXJzIGFyZSBhZGRlZCB0byBzeXN0ZW0gcHJlZGVmaW5lZCBwaGFzZXMgYXMKc3BlY2lmaWVkIGluIHRoZSBtb2R1bGUueG1sIGZpbGUuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iN180X0VuZ2FnaW5nX2FfTW9kdWxlX3RvX2FfU2VydmljZXMiPjwvYT4KPGgzPjcuNCBFbmdhZ2luZyBhIE1vZHVsZSB0byBhIFNlcnZpY2VzPC9oMz4KPHA+VGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGVuZ2FnaW5nIHRoZSBsb2dnaW5nIG1vZHVsZSB0bwp0aGUgZWNobwpzZXJ2aWNlLiBUaGlzIGNhbiBiZSBkb25lIGJ5IHNpbXBseSBhZGRpbmcgPGNvZGU+Jmx0O21vZHVsZQpyZWYKPSJsb2dnaW5nIi8mZ3Q7PC9jb2RlPiBpbiB0aGUgc2VydmljZXMueG1sIGZpbGUgb2YgdGhlIGVjaG8Kc2VydmljZS4gVGhpcwppbmZvcm1zIHRoZSBBeGlzMi9DIGVuZ2luZSB0aGF0IHRoZSBtb2R1bGUgImxvZ2dpbmciIHNob3VsZCBiZSBlbmdhZ2VkCmZvcgp0aGlzIHNlcnZpY2UuIFRoZSBoYW5kbGVycyBpbnNpZGUgdGhlIG1vZHVsZSB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZWlyCnJlc3BlY3RpdmUgcGhhc2VzIGFzIGRlc2NyaWJlZCBieSB0aGUgbW9kdWxlLnhtbC48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+ICZsdDtzZXJ2aWNlIG5hbWU9ImVjaG8iJmd0Ozxicj48L2JyPiAmbHQ7bW9kdWxlIHJlZiA9ImxvZ2dpbmciLyZndDs8YnI+PC9icj4gJmx0O3BhcmFtZXRlciBuYW1lPSJTZXJ2aWNlQ2xhc3MiIGxvY2tlZD0ieHNkOmZhbHNlIiZndDtlY2hvJmx0Oy9wYXJhbWV0ZXImZ3Q7PGJyPjwvYnI+ICZsdDtkZXNjcmlwdGlvbiZndDs8YnI+PC9icj4gVGhpcyBpcyBhIHRlc3Rpbmcgc2VydmljZSwgdG8gdGVzdCBpZiB0aGUgc3lzdGVtIGlzIHdvcmtpbmcgb3Igbm90Ljxicj48L2JyPiAmbHQ7L2Rlc2NyaXB0aW9uJmd0Ozxicj48L2JyPiAmbHQ7b3BlcmF0aW9uIG5hbWU9ImVjaG9TdHJpbmciJmd0Ozxicj48L2JyPiAmbHQ7IS0tbWVzc2FnZVJlY2VpdmVyIGNsYXNzPSJheGlzMl9yZWNlaXZlcnMiIC8tLSZndDs8YnI+PC9icj4gJmx0O3BhcmFtZXRlciBuYW1lPSJ3c2FtYXBwaW5nIiAmZ3Q7PGJyPjwvYnI+IGh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2Mvc2FtcGxlcy9lY2hvU3RyaW5nPGJyPjwvYnI+ICZsdDsvcGFyYW1ldGVyJmd0Ozxicj48L2JyPiAmbHQ7L29wZXJhdGlvbiZndDs8YnI+PC9icj4gJmx0Oy9zZXJ2aWNlJmd0Ozxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+T25lIGltcG9ydGFudCB0aGluZyB0byBub3RlIGhlcmUgaXMgdGhhdCBiZWNhdXNlIHRoZSBsb2dnaW5nCm1vZHVsZSdzCmhhbmRsZXJzIGFyZSBwbGFjZWQgaW50byB0aGUgZ2xvYmFsIHBoYXNlcywgZXZlbiB0aG91Z2ggdGhlIGxvZ2dpbmcKbW9kdWxlIGlzCmVuZ2FnZWQgb25seSB0byB0aGUgZWNobyBzZXJ2aWNlLCB0aGUgbW9kdWxlIHdpbGwgYmUgZW5nYWdlZCBnbG9iYWxseS4KVGhpcwppcyBhIGZlYXR1cmUgb2YgdGhlIEF4aXMyIGFyY2hpdGVjdHVyZSwgbm90IGEgYnVnLiBXaGVuIGludm9rZWQsIHRoZQpoYW5kbGVycwppbiBhIG1vZHVsZSBjYW4gY2hlY2sgd2hldGhlciB0aGUgbW9kdWxlIGhhcyBiZWVuIGVuZ2FnZWQgdG8gYQpwYXJ0aWN1bGFyCnNlcnZpY2UsIGFuZCBhY3QgYWNjb3JkaW5nbHkuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iN180XzFfRW5nYWdpbmdfYV9Nb2R1bGVfR2xvYmFsbHkiPjwvYT4KPGgzPjcuNC4xIEVuZ2FnaW5nIGEgTW9kdWxlIEdsb2JhbGx5PC9oMz4KPHA+SWYgd2Ugd2FudCB0byBlbmdhZ2UgYSBtb2R1bGUgZm9yIGV2ZXJ5IHNlcnZpY2UgZGVwbG95ZWQgaW4KdGhlIEF4aXMyL0MKc3lzdGVtLCB3ZSBjYW4gYWRkIHRoZSA8Y29kZT4mbHQ7bW9kdWxlIHJlZgo9ImxvZ2dpbmciLyZndDs8L2NvZGU+IGVudHJ5IGluCnRoZSBheGlzMi54bWwgZmlsZS4gVGhpcyB3aWxsIGluZm9ybSB0aGUgQXhpczIvQyBlbmdpbmUgdG8gaW52b2tlIHRoZQpoYW5kbGVycyBhc3NvY2lhdGVkIHdpdGggdGhlIG1vZHVsZSBmb3IgZXZlcnkgbWVzc2FnZSBjb21pbmcgaW4gb3IKZ29pbmcgb3V0CmZvciBhbGwgdGhlIHNlcnZpY2VzIGRlcGxveWVkLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjdfNV9FbmdhZ2luZ19hX01vZHVsZV9vbl90aGVfQ2xpZW50X1NpZGUiPjwvYT4KPGgzPjcuNSBFbmdhZ2luZyBhIE1vZHVsZSBvbiB0aGUgQ2xpZW50IFNpZGU8L2gzPgo8cD5PbiB0aGUgY2xpZW50IHNpZGUsIGlmIDxjb2RlPiZsdDttb2R1bGUgcmVmCj0ibG9nZ2luZyIvJmd0OzwvY29kZT4gaXMKYWRkZWQgaW4gdGhlIGF4aXMyLnhtbCwgdGhlIGhhbmRsZXJzIHNwZWNpZmljIHRvIHRoZSBsb2dnaW5nIG1vZHVsZQp3aWxsIGJlCmludm9rZWQgZm9yIGV2ZXJ5IHJlcXVlc3QgdGhlIGNsaWVudCBzZW5kcyBhbmQgZXZlcnkgcmVzcG9uc2UgdGhlCmNsaWVudApyZWNlaXZlcy4gSWYgb25seSBhIHBhcnRpY3VsYXIgY2xpZW50IHdhbnRzIHRvIGVuZ2FnZSB0aGUgbW9kdWxlLCBpdApjYW4gYmUKZG9uZSBieSBlbmdhZ2luZyB0aGUgbW9kdWxlIHByb2dyYW1tYXRpY2FsbHkuIFRoaXMgY2FuIGJlIGRvbmUgYnkKYWRkaW5nIHRoZQpmb2xsb3dpbmcgbGluZSBpbiB0aGUgY2xpZW50IGNvZGUgYWZ0ZXIgc2V0dGluZyB0aGUgb3B0aW9ucy48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfc3ZjX2NsaWVudF9lbmdhZ2VfbW9kdWxlKHN2Y19jbGllbnQsIGVudiwgIm1vZHVsZS1uYW1lIik7PGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5SZW1lbWJlciB0byByZXBsYWNlICJtb2R1bGUtbmFtZSIgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCnlvdSB3YW50IHRvCmVuZ2FnZS4gRm9yIGV4YW1wbGUgdG8gZW5nYWdlIHRoZSBsb2dnaW5nIG1vZHVsZSB5b3UgY2FuIHVzZTo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfc3ZjX2NsaWVudF9lbmdhZ2VfbW9kdWxlKHN2Y19jbGllbnQsIGVudiwgImxvZ2dpbmciKTs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJ3c19hZGRyZXNzaW5nIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iOF9fV1MtQWRkcmVzc2luZyI+PC9hPgo8aDI+OC4gV1MtQWRkcmVzc2luZzwvaDI+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvd3MvYWRkci8iIGNsYXNzPSJleHRlcm5hbExpbmsiIHRpdGxlPSJFeHRlcm5hbCBMaW5rIj5XUy1BZGRyZXNzaW5nPC9hPgpwcm92aWRlcwptZWNoYW5pc21zIHRvIGFkZHJlc3MgV2ViIHNlcnZpY2VzIGFuZCBtZXNzYWdlcy4gV2l0aCBBeGlzMi9DLCB5b3UgY2FuCnVzZQpib3RoIFdTLUFkZHJlc3NpbmcgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvd3MtYWRkci1jb3JlLyIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPnZlcnNpb24KMS4wPC9hPiBhcyB3ZWxsIGFzIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9TdWJtaXNzaW9uL3dzLWFkZHJlc3NpbmcvIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+c3VibWlzc2lvbgp2ZXJzaW9uPC9hPi48L3A+CjxwPldTLUFkZHJlc3NpbmcgaXMgaW1wbGVtZW50ZWQgYXMgYSBtb2R1bGUgaW4gQXhpczIvQy4gSGVuY2UgYXMKZXhwbGFpbmVkIGluCnRoZSBwcmV2aW91cyBzZWN0aW9uLCB0aGUgYWRkcmVzc2luZyBtb2R1bGUgY2FuIGJlIGVuZ2FnZWQgYm90aCBvbiB0aGUKY2xpZW50CnNpZGUgYXMgd2VsbCBhcyBvbiB0aGUgc2VydmVyIHNpZGUuPC9wPgo8cD5UaGUgV1MtQWRkcmVzc2luZyBtb2R1bGUgY2FuIGJlIGdsb2JhbGx5IGVuZ2FnZWQgYnkgYWRkaW5nIHRoZQo8Y29kZT4mbHQ7bW9kdWxlIHJlZj0iYWRkcmVzc2luZyIvJmd0OzwvY29kZT4gbGluZQp0byB0aGUgYXhpczIueG1sIGZpbGUuPC9wPgo8cD5UaGUgV1MtQWRkcmVzc2luZyBtb2R1bGUgY2FuIGFsc28gYmUgcHJvZ3JhbW1hdGljYWxseSBlbmdhZ2VkCnVzaW5nIHRoZQpmb2xsb3dpbmcgbGluZSBvZiBjb2RlIHdpdGggdGhlIHNlcnZpY2UgY2xpZW50IEFQSSA8YnI+PC9icj4KPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX3N2Y19jbGllbnRfZW5nYWdlX21vZHVsZShzdmNfY2xpZW50LCBlbnYsIEFYSVMyX01PRFVMRV9BRERSRVNTSU5HKTs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPldTLUFkZHJlc3NpbmcgcmVsYXRlZCBvcHRpb25zIGNhbiBiZSBzZXQgdXNpbmcgdGhlCjxjb2RlPmF4aXMyX29wdGlvbnM8L2NvZGU+IHN0cnVjdCBpbnN0YW5jZSBvbiB0aGUgY2xpZW50CnNpZGUuIElmIHRoZQphZGRyZXNzaW5nIG1vZHVsZSBpcyBlbmdhZ2VkLCB0aGVyZSBhcmUgbm8gb3B0aW9ucyB0byBiZSBzZXQgb24gdGhlCnNlcnZlcgpzaWRlLiBUaGUgc2VydmVyIHdpbGwgZW1wbG95IFdTLUFkZHJlc3NpbmcgaWYgdGhlIGluY29taW5nIHJlcXVlc3RzCmhhdmUKV1MtQWRkcmVzc2luZyBoZWFkZXJzLjwvcD4KPHA+VGhlcmUgaXMgYSBtYW5kYXRvcnkgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIFdTLUFkZHJlc3Npbmcgb24KdGhlIGNsaWVudApzaWRlIHdpdGggQXhpczIvQy4gVGhhdCBpcyB0byBzZXQgYSBXUy1BZGRyZXNzaW5nIGFjdGlvbiB0aGF0CnJlcHJlc2VudHMgdGhlCm9wZXJhdGlvbiB0byBiZSBpbnZva2VkLiBFeGFtcGxlOjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5heGlzMl9vcHRpb25zX3NldF9hY3Rpb24ob3B0aW9ucyxlbnYsImh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2Mvc2FtcGxlcy9lY2hvU3RyaW5nIik8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPkluIGFkZGl0aW9uIHRvIHRoZSBhY3Rpb24sIHdoaWNoIGlzIG1hbmRhdG9yeSwgdGhlcmUgYXJlIG90aGVyCldTLUFkZHJlc3NpbmcgcmVsYXRlZCBoZWFkZXJzIHRoYXQgY2FuIGJlIHNlbnQgaW4gYSBtZXNzYWdlLiBBeGlzMi9DCnN1cHBvcnRzCnRvIHNldCB0aG9zZSBoZWFkZXJzIGFzIG9wdGlvbnMgYXQgdGhlIGNsaWVudCBsZXZlbC4gVGhlIGZvbGxvd2luZwpmdW5jdGlvbnMKYXJlIHVzZWQgdG8gc2V0IHRoZW0uPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX29wdGlvbnNfc2V0X3JlcGx5X3RvKG9wdGlvbnMsIGVudiwgcmVwbHlfdG8pPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5TZXRzIHRoZSA8Y29kZT53c2E6UmVwbHlUbzwvY29kZT4gaGVhZGVyLiBUaGUKUmVwbHlUbyBoZWFkZXIgY29udGFpbnMgdGhlCmVuZHBvaW50IHRvIHNlbmQgcmVwbHkgbWVzc2FnZXMuIFRoZSBSZXBseVRvIGhlYWRlciBpcyByZXF1aXJlZCB3aGVuCnRoZQpyZXNwb25zZSBjb21lcyBpbiBhIHNlcGFyYXRlIGNoYW5uZWwgKHdoZW4gdXNpbmcgYSBkdWFsIGNoYW5uZWwpLjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5heGlzMl9vcHRpb25zX3NldF9mYXVsdF90byhvcHRpb25zLCBlbnYsIGZhdWx0X3RvKTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+U2V0cyB0aGUgPGNvZGU+d3NhOkZhdWx0VG88L2NvZGU+IGhlYWRlci4gVGhpcwpjb250YWlucyB0aGUgZW5kcG9pbnQgdG8KZGlyZWN0IGZhdWx0IG1lc3NhZ2VzLjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5heGlzMl9vcHRpb25zX3NldF9mcm9tKG9wdGlvbnMsIGVudiwgZnJvbSk8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPlNvbWV0aW1lcyB0aGUgcmVjZWl2aW5nIGVuZHBvaW50IHJlcXVpcmVzIHRvIGtub3cgdGhlIG9yaWdpbmFsCnNlbmRlciBvZgp0aGUgbWVzc2FnZS4gVGhlIDxjb2RlPndzYTpGcm9tPC9jb2RlPiBoZWFkZXIgaXMgdXNlZCBpbgpzdWNoIGNhc2VzLiBUaGUKYWJvdmUgZnVuY3Rpb24gc2V0cyB0aGUgRnJvbSBoZWFkZXIuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX29wdGlvbnNfc2V0X3JlbGF0ZXNfdG8ob3B0aW9ucywgZW52LCByZWxhdGVzX3RvKTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+U2V0cyB0aGUgPGNvZGU+d3NhOlJlbGF0ZXNUbzwvY29kZT4gaGVhZGVyLiBUaGlzCmhlYWRlciBjb250YWlucyBhIHVuaXF1ZQpJRCB3aGljaCBpcyB0aGUgbWVzc2FnZSBJRCBvZiBhIHByZXZpb3VzbHkgZXhjaGFuZ2VkIG1lc3NhZ2UuIEl0IGhlbHBzCnRvCmlkZW50aWZ5IGEgcHJldmlvdXMgbWVzc2FnZSB0aGF0IHJlbGF0ZXMgdG8gdGhlIGN1cnJlbnQgbWVzc2FnZS48L3A+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJ3cml0aW5nX21vZHVsZSI+PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iOV9fV3JpdGluZ19hX01vZHVsZSI+PC9hPgo8aDI+OS4gV3JpdGluZyBhIE1vZHVsZTwvaDI+CjxwPkEgbW9kdWxlIGlzIGFuIGV4dGVuc2lvbiBwb2ludCBpbiB0aGUgQXhpczIvQyBlbmdpbmUuIE1vZHVsZXMKYXJlCnByaW1hcmlseSB1c2VkIHRvIFdTLSogc3BlY2lmaWNhdGlvbnMuIEluIG90aGVyIHdvcmRzLCBxdWFsaXR5IG9mCnNlcnZpY2UKYXNwZWN0cyBzdWNoIGFzIHNlY3VyaXR5IGFuZCByZWxpYWJsZSBtZXNzYWdpbmcgY2FuIGJlIGltcGxlbWVudGVkIGFzCm1vZHVsZXMKYW5kIGRlcGxveWVkIHdpdGggdGhlIEF4aXMyL0MgZW5naW5lLiA8YnI+PC9icj4KQSBTT0FQIG1lc3NhZ2UgY2FuIGNvbnRhaW4gYW55IG51bWJlciBvZiBoZWFkZXIgYmxvY2tzLiBUaGVzZSBoZWFkZXIKYmxvY2tzCnByb3ZpZGUgdmFyaW91cyBwcm9jZXNzaW5nIGluZm9ybWF0aW9uLiBJbiBBeGlzMi9DLCB0aGVzZSB2YXJpb3VzCmhlYWRlcgpibG9ja3MgYXJlIHByb2Nlc3NlZCBieSBtb2R1bGVzLiBTb21lIHRpbWVzIG1vZHVsZXMgbWF5IGFkZCBoZWFkZXIKYmxvY2tzIHRvCmEgU09BUCBtZXNzYWdlLjwvcD4KPHA+Tm9ybWFsbHkgYSBtb2R1bGUgaXMgYSBjb2xsZWN0aW9uIG9mIGhhbmRsZXJzLiBTbyB3cml0aW5nIGEKbW9kdWxlIG1haW5seQpjb25zaXN0cyBvZiB3cml0aW5nIGhhbmRsZXJzLiBUaGVyZSBhcmUgdHdvIGludGVyZmFjZXMgdGhhdCBhcmUKaW1wb3J0YW50CndoZW4gd3JpdGluZyBhIG1vZHVsZS4gVGhleSBhcmUgPGNvZGU+YXhpczJfbW9kdWxlPC9jb2RlPgphbmQKPGNvZGU+YXhpczJfaGFuZGxlcjxjb2RlPi48L2NvZGU+PC9jb2RlPjwvcD4KPHA+RXZlcnkgbW9kdWxlIHNob3VsZCBoYXZlIHRocmVlIGJhc2ljIGZ1bmN0aW9ucyB0aGF0IGFyZQpkZWZpbmVkIGFzCmZ1bmN0aW9uIHBvaW50ZXIgbWVtYmVycyBvZiB0aGUgPGNvZGU+YXhpczJfbW9kdWxlX29wczwvY29kZT4Kc3RydWN0LiBUaGlzCnN0cnVjdCBpcyBkZWZpbmVkIGluIHRoZSA8Y29kZT5heGlzMl9tb2R1bGUuaDwvY29kZT4KaGVhZGVyIGZpbGUuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+RnVuY3Rpb24gU2lnbmF0dXJlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPgo8cHJlPmF4aXMyX3N0YXR1c190IChBWElTMl9DQUxMICogPGJyPjwvYnI+IGluaXQpKGF4aXMyX21vZHVsZV90ICptb2R1bGUsIGNvbnN0PGJyPjwvYnI+IGF4dXRpbF9lbnZfdCAqZW52LCA8YnI+PC9icj4gYXhpczJfY29uZl9jdHhfdCAqY29uZl9jdHgsIDxicj48L2JyPiBheGlzMl9tb2R1bGVfZGVzY190ICptb2R1bGVfZGVzYyk7PC9wcmU+CjwvdGQ+PHRkPlRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uLjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQgd2lkdGg9IjQxMCI+CjxwcmU+YXhpczJfc3RhdHVzX3QgKEFYSVMyX0NBTEwgKiA8YnI+PC9icj4gc2h1dGRvd24pKGF4aXMyX21vZHVsZV90ICptb2R1bGUsIDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKmVudiApOzwvcHJlPgo8L3RkPjx0ZD5TaHV0cyBkb3duIGFuZCBjbGVhbnMgdXAgdGhlIG1vZHVsZS48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPgo8cHJlPmF4aXMyX3N0YXR1c190IChBWElTMl9DQUxMICo8YnI+PC9icj4gZmlsbF9oYW5kbGVyX2NyZWF0ZV9mdW5jX21hcCkoYXhpczJfbW9kdWxlX3QgKm1vZHVsZSwgPGJyPjwvYnI+IGNvbnN0IGF4dXRpbF9lbnZfdCAqZW52ICk7PC9wcmU+CjwvdGQ+PHRkPlRoaXMgZnVuY3Rpb24gZmlsbHMgdGhlIGhhc2ggbWFwIG9mIHRoZSBoYW5kbGVyIGNyZWF0ZQpmdW5jdGlvbnMgZm9yIHRoZSBtb2R1bGUuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPlRoZSBtb2R1bGUgZGV2ZWxvcGVyIGhhcyB0byBpbXBsZW1lbnQgZnVuY3Rpb25zIHdpdGggdGhlIGFib3ZlCnNpZ25hdHVyZXMKYW5kIGFzc2lnbiB0aGVtIHRvIHRoZSBtZW1iZXJzIG9mIGFuIDxjb2RlPmF4aXMyX21vZHVsZV9vcHM8L2NvZGU+CnN0cnVjdAppbnN0YW5jZS4gVGhlbiB0aGF0IHN0cnVjdCBpbnN0YW5jZSBoYXMgdG8gYmUgYXNzaWduZWQgdG8gdGhlIG9wcwptZW1iZXIgb2YKYW4gPGNvZGU+YXhpczJfbW9kdWxlPC9jb2RlPiBzdHJ1Y3QgaW5zdGFuY2UuPC9wPgo8cD48YSBocmVmPSJtb2RfbG9nL21vZF9sb2cuYy5odG1sIj5tb2RfbG9nLmM8L2E+CmhhcyB0aGUgc291cmNlIGZvciB0aGUKbG9nZ2luZyBtb2R1bGUuIFBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgPGNvZGU+YXhpczJfbW9kX2xvZ19jcmVhdGU8L2NvZGU+CmZ1bmN0aW9uIGluIGl0IHRvIHNlZSBob3cgYW4gPGNvZGU+YXhpczJfbW9kdWxlPC9jb2RlPgppbnN0YW5jZSBpcyBhbGxvY2F0ZWQKYW5kIGhvdyB0aGUgb3BzIGFyZSBpbml0aWFsaXplZC48L3A+CjxwPlRoZTxjb2RlPiBheGlzMl9tb2RfbG9nX2ZpbGxfaGFuZGxlcl9jcmVhdGVfZnVuY19tYXA8L2NvZGU+CmZ1bmN0aW9uIGFkZHMKdGhlIGhhbmRsZXIgY3JlYXRlIGZ1bmN0aW9ucyB0byB0aGUgbW9kdWxlJ3MgaGFzaCBtYXAsIHdoaWNoIHN0b3JlcyB0aGUKaGFuZGxlciBjcmVhdGUgZnVuY3Rpb25zLiBJbiB0aGUgPGEgaHJlZj0ibW9kX2xvZy9tb2RfbG9nLmMuaHRtbCI+bW9kX2xvZy5jPC9hPgpleGFtcGxlLCB0aGUgbG9nZ2luZyBtb2R1bGUgYWRkcwp0d28gaGFuZGxlcnMuIFRoZSBpbiBoYW5kbGVyIGFuZCB0aGUgb3V0IGhhbmRsZXIgdGhhdCBkZWFscyB3aXRoCmxvZ2dpbmcKYWxvbmcgd2l0aCB0aGUgaW4tZmxvdyBhbmQgb3V0LWZsb3cgcmVzcGVjdGl2ZWx5LjwvcD4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iOV8xX1dyaXRpbmdfSGFuZGxlcnMiPjwvYT4KPGgzPjkuMSBXcml0aW5nIEhhbmRsZXJzPC9oMz4KPHA+QSBoYW5kbGVyIGlzIHRoZSBzbWFsbGVzdCB1bml0IG9mIGV4ZWN1dGlvbiBpbiB0aGUgQXhpczIvQwplbmdpbmUncwpleGVjdXRpb24gZmxvdy4gVGhlIGVuZ2luZSBjYW4gaGF2ZSB0d28gZmxvd3MsIHRoZSBpbi1mbG93IGFuZCB0aGUKb3V0LWZsb3cuCkEgZmxvdyBpcyBhIGNvbGxlY3Rpb24gb2YgcGhhc2VzLCBhbmQgYSBwaGFzZSBpbiB0dXJuIGlzIGEgY29sbGVjdGlvbgpvZgpoYW5kbGVycy4gQSBoYW5kbGVyIGlzIGludm9rZWQgd2hlbiB0aGUgcGhhc2Ugd2l0aGluIHdoaWNoIGl0IGxpdmVzIGlzCmludm9rZWQuIEF4aXMyL0MgZGVmaW5lcyBhbiBpbnRlcmZhY2UgY2FsbGVkIDxjb2RlPmF4aXMyX2hhbmRsZXI8L2NvZGU+LAp3aGljaCBpcyB0byBiZSBpbXBsZW1lbnRlZCBieSBhbGwgdGhlIGhhbmRsZXJzLjwvcD4KPHA+PGEgaHJlZj0ibW9kX2xvZy9sb2dfaW5faGFuZGxlci5jLmh0bWwiPmxvZ19pbl9oYW5kbGVyLmM8L2E+CmNvbnRhaW5zIHRoZQpzb3VyY2UgY29kZSBvZiB0aGUgaW4taGFuZGxlciBvZiB0aGUgbG9nZ2luZyBtb2R1bGUuIFBsZWFzZSBoYXZlIGEgbG9vawphdAp0aGUgPGNvZGU+YXh1dGlsX2xvZ19pbl9oYW5kbGVyX2NyZWF0ZTwvY29kZT4gZnVuY3Rpb24gdG8Kc2VlIGhvdyBhbgo8Y29kZT5heGlzMl9oYW5kbGVyPC9jb2RlPiBpbnN0YW5jZSBpcyBjcmVhdGVkIGFuZCBob3cgdGhlCmludm9rZSBmdW5jdGlvbgppbXBsZW1lbnRhdGlvbiwgPGNvZGU+YXhpczJfbG9nX2luX2hhbmRsZXJfaW52b2tlPC9jb2RlPgppcyBhc3NpZ25lZCB0byB0aGUKPGNvZGU+YXhpczJfaGFuZGxlcjwvY29kZT4gaW52b2tlIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZQppbnZva2UgaXMgY2FsbGVkIHRvCmRvIHRoZSBhY3R1YWwgd29yayBhc3NpZ25lZCB0byB0aGUgaGFuZGxlci4gVGhlIHBoYXNlIHRoYXQgb3ducyB0aGUKaGFuZGxlcgppcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGUgaW52b2tlIGZ1bmN0aW9uIG9mIHRoZSBoYW5kbGVyLjwvcD4KPHA+PGEgaHJlZj0ibW9kX2xvZy9sb2dfb3V0X2hhbmRsZXIuYy5odG1sIj5sb2dfb3V0X2hhbmRsZXIuYzwvYT4KY29udGFpbnMKdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBvdXQgaGFuZGxlciBvZiB0aGUgbG9nZ2luZyBtb2R1bGUuIFRoZQppbXBsZW1lbnRhdGlvbgppcyBzaW1pbGFyIHRvIHRoZSBpbiBoYW5kbGVyLCBleGNlcHQgdGhhdCBpdCBpcyBwbGFjZWQgYWxvbmcgdGhlCm91dC1mbG93CndoZW4gZGVwbG95ZWQuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iOV8yX1dyaXRpbmdfdGhlX21vZHVsZV94bWxfRmlsZSI+PC9hPgo8aDM+OS4yIFdyaXRpbmcgdGhlIG1vZHVsZS54bWwgRmlsZTwvaDM+CjxwPkFmdGVyIHdyaXRpbmcgdGhlIG1vZHVsZSwgdGhlIG1vZHVsZS54bWwgZmlsZSBzaG91bGQgYmUKd3JpdHRlbi4gVGhlCm1vZHVsZS54bWwgZmlsZSBjb250YWlucyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYSBwYXJ0aWN1bGFyCm1vZHVsZS4gUGxlYXNlIHNlZSB0aGUgc2FtcGxlIDxhIGhyZWY9Im1vZF9sb2cvbW9kdWxlLnhtbCI+bW9kdWxlLnhtbDwvYT4KZmlsZSBmb3IgdGhlIGxvZ2dpbmcgbW9kdWxlLjwvcD4KPHA+UGxlYXNlIHNlZSB0aGUgPGEgaHJlZj0iI2VuZ2FnaW5nX21vZHVsZSI+RW5nYWdpbmcKYSBNb2R1bGU8L2E+IHNlY3Rpb24KZm9yIG1vcmUgZGV0YWlscyBvbiBob3cgdG8gcGFja2FnZSBhbmQgZGVwbG95IHRoZSBtb2R1bGUuPC9wPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0ic2ltcGxlX2F4aXNfc2VydmVyIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iMTBfX1NpbXBsZV9BeGlzMl9IVFRQX19TZXJ2ZXIiPjwvYT4KPGgyPjEwLiBTaW1wbGUgQXhpczIgSFRUUCBTZXJ2ZXI8L2gyPgo8cD5TaW1wbGUgQXhpczIgSFRUUCBTZXJ2ZXIgaXMgdGhlIGluYnVpbHQgSFRUUCBzZXJ2ZXIgb2YgQXhpczIvQy48YnI+PC9icj4KPC9wPgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxMF8xX0xpbnV4X0Jhc2VkX1N5c3RlbXMiPjwvYT4KPGgzPjEwLjEgTGludXggQmFzZWQgU3lzdGVtczwvaDM+CjxwPlN5bm9wc2lzIDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+IGF4aXMyX2h0dHBfc2VydmVyIFstcCBQT1JUXSBbLXQgVElNRU9VVF0gWy1yIFJFUE9fUEFUSF0gWy1sIExPR19MRVZFTF0gWy1mIExPR19GSUxFXSBbLXMgTE9HX0ZJTEVfU0laRV08YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPllvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyB3aXRoIHNpbXBsZSBheGlzIEhUVFAgc2VydmVyLjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4gLXAgUE9SVCBwb3J0IG51bWJlciB0byB1c2UsIGRlZmF1bHQgcG9ydCBpcyA5MDkwPGJyPjwvYnI+IC1yIFJFUE9fUEFUSCByZXBvc2l0b3J5IHBhdGgsIGRlZmF1bHQgaXMgLi4vPGJyPjwvYnI+IC10IFRJTUVPVVQgc29ja2V0IHJlYWQgdGltZW91dCwgZGVmYXVsdCBpcyAzMCBzZWNvbmRzPGJyPjwvYnI+IC1sIExPR19MRVZFTCBsb2cgbGV2ZWwsIGF2YWlsYWJsZSBsb2cgbGV2ZWxzOjxicj48L2JyPiAwIC0gY3JpdGljYWwgMSAtIGVycm9ycyAyIC0gd2FybmluZ3M8YnI+PC9icj4gMyAtIGluZm9ybWF0aW9uIDQgLSBkZWJ1ZyA1LSB1c2VyIDYgLSB0cmFjZTxicj48L2JyPiBEZWZhdWx0IGxvZyBsZXZlbCBpcyA0KGRlYnVnKS48YnI+PC9icj4gLWYgTE9HX0ZJTEUgbG9nIGZpbGUsIGRlZmF1bHQgaXMgJEFYSVMyQ19IT01FL2xvZ3MvYXhpczIubG9nPGJyPjwvYnI+IG9yIGF4aXMyLmxvZyBpbiBjdXJyZW50IGZvbGRlciBpZiBBWElTMkNfSE9NRSBub3Qgc2V0PGJyPjwvYnI+IC1zIExPR19GSUxFX1NJWkUgTWF4aW11bSBsb2cgZmlsZSBzaXplIGluIG1lZ2EgYnl0ZXMsIGRlZmF1bHQgbWF4aW11bSBzaXplIGlzIDFNQi48YnI+PC9icj4gLWggZGlzcGxheSB0aGUgaGVscCBzY3JlZW4uPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5FeGFtcGxlIDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+IGF4aXMyX2h0dHBfc2VydmVyIC1sIDMgLXAgODA4MCAtciAkQVhJUzJDX0hPTUUgLWYgL2Rldi9zdGRlcnI8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxMF8yX01TX1dpbmRvd3NfQmFzZWRfU3lzdGVtcyI+PC9hPgo8aDM+MTAuMiBNUyBXaW5kb3dzIEJhc2VkIFN5c3RlbXM8L2gzPgo8cD5TeW5vcHNpcyA6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiBheGlzMl9odHRwX3NlcnZlci5leGUgWy1wIFBPUlRdIFstdCBUSU1FT1VUXSBbLXIgUkVQT19QQVRIXSBbLWwgTE9HX0xFVkVMXSBbLWYgTE9HX0ZJTEVdIFstcyBMT0dfRklMRV9TSVpFXTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+WW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zIHdpdGggc2ltcGxlIGF4aXMgSFRUUCBzZXJ2ZXIuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiAtcCBQT1JUIHBvcnQgbnVtYmVyIHRvIHVzZSwgZGVmYXVsdCBwb3J0IGlzIDkwOTA8YnI+PC9icj4gLXIgUkVQT19QQVRIIHJlcG9zaXRvcnkgcGF0aCwgZGVmYXVsdCBpcyAuLi88YnI+PC9icj4gLXQgVElNRU9VVCBzb2NrZXQgcmVhZCB0aW1lb3V0LCBkZWZhdWx0IGlzIDMwIHNlY29uZHM8YnI+PC9icj4gLWwgTE9HX0xFVkVMIGxvZyBsZXZlbCwgYXZhaWxhYmxlIGxvZyBsZXZlbHM6PGJyPjwvYnI+IDAgLSBjcml0aWNhbCAxIC0gZXJyb3JzIDIgLSB3YXJuaW5nczxicj48L2JyPiAzIC0gaW5mb3JtYXRpb24gNCAtIGRlYnVnIDUtIHVzZXIgNiAtIHRyYWNlPGJyPjwvYnI+IERlZmF1bHQgbG9nIGxldmVsIGlzIDQoZGVidWcpLjxicj48L2JyPiAtZiBMT0dfRklMRSBsb2cgZmlsZSwgZGVmYXVsdCBpcyAlQVhJUzJDX0hPTUUlXGxvZ3NcYXhpczIubG9nPGJyPjwvYnI+IG9yIGF4aXMyLmxvZyBpbiBjdXJyZW50IGZvbGRlciBpZiBBWElTMkNfSE9NRSBub3Qgc2V0PGJyPjwvYnI+IC1zIExPR19GSUxFX1NJWkUgTWF4aW11bSBsb2cgZmlsZSBzaXplIGluIG1lZ2EgYnl0ZXMsIGRlZmF1bHQgbWF4aW11bSBzaXplIGlzIDFNQi48YnI+PC9icj4gLWggZGlzcGxheSB0aGUgaGVscCBzY3JlZW4uPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5FeGFtcGxlIDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+IGF4aXMyX2h0dHBfc2VydmVyLmV4ZSAtbCAzIC1wIDgwODAgLXIgJUFYSVMyQ19IT01FJSAtZiBDOlxsb2dzXGVycm9yLmxvZzxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHAgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxicj48L2JyPgo8L3A+CjxwPjxhIG5hbWU9Im1vZF9heGlzMiI+PC9hPjwvcD4KPC9kaXY+CjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IjExX19EZXBsb3lpbmdfd2l0aF9BcGFjaGVfSFRUUF9TZXJ2ZXJfVmVyc2lvbl8yX3giPjwvYT4KPGgyPjExLiBEZXBsb3lpbmcgd2l0aCBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLng8L2gyPgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxMV8xX0xpbnV4X1BsYXRmb3JtIj48L2E+CjxoMz4xMS4xIExpbnV4IFBsYXRmb3JtPC9oMz4KPHA+VG8gYnVpbGQgQXhpczIvQyB3aXRoIHRoZSBBcGFjaGUgSFRUUCBzZXJ2ZXIgbW9kdWxlLCBhbHNvCmNhbGxlZAptb2RfYXhpczIsIHlvdSBuZWVkIHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24KdGhlCkxpbnV4IHBsYXRmb3JtOjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4uL2NvbmZpZ3VyZSAtLXdpdGgtYXBhY2hlMj1bcGF0aCB0byBBcGFjaGUyIGluY2x1ZGUgZGlyZWN0b3J5XSBbb3RoZXIgY29uZmlndXJlIG9wdGlvbnNdPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD48Zm9udCBjb2xvcj0iIzY2NjY2NiI+Tk9URTogU29tZSBBcGFjaGUyCmRpc3RyaWJ1dGlvbnMsIHNwZWNpYWxseQpkZXZlbG9wbWVudCB2ZXJzaW9ucywgaW5zdGFsbCBBUFIgKEFwYWNoZSBQb3J0YWJsZSBSdW4tdGltZSkgaW5jbHVkZQpmaWxlcyBpbgphIHNlcGFyYXRlIGxvY2F0aW9uLiBJbiB0aGF0IGNhc2UsIHRvIGJ1aWxkIG1vZF9heGlzMiwgdXNlOjwvZm9udD48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+Li9jb25maWd1cmUgLS13aXRoLWFwYWNoZTI9W3BhdGggdG8gQXBhY2hlMiBpbmNsdWRlIGRpcmVjdG9yeV0gLS13aXRoLWFwcj1bcGF0aCB0byBBUFIgaW5jbHVkZSBkaXJlY3RvcnldPGJyPjwvYnI+IFtvdGhlciBjb25maWd1cmUgb3B0aW9uc108YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPlRoZW4gYnVpbGQgdGhlIHNvdXJjZSB0cmVlIGFzIHVzdWFsIHVzaW5nOjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4gbWFrZTxicj48L2JyPiBtYWtlIGluc3RhbGw8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPlRoaXMgd2lsbCBpbnN0YWxsIG1vZF9heGlzMi5zbyBpbnRvIHlvdXIKQVhJUzJDX0lOU1RBTExfRElSL2xpYiBmb2xkZXIuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTFfMl9NU19XaW5kb3dzX1BsYXRmb3JtIj48L2E+CjxoMz4xMS4yIE1TIFdpbmRvd3MgUGxhdGZvcm08L2gzPgo8cD5PbiB0aGUgTVMgV2luZG93cyBwbGF0Zm9ybSwgeW91IGhhdmUgdG8gcHJvdmlkZSB0aGUgQXBhY2hlMgppbnN0YWxsCmxvY2F0aW9uIGluIHRoZSBjb25maWd1cmUuaW4gZmlsZSB3aXRoIHRoZSBzZXR0aW5nIEFQQUNIRV9CSU5fRElSLgpFeGFtcGxlOjwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5BUEFDSEVfQklOX0RJUiA9ICJDOlxQcm9ncmFtIEZpbGVzXEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uXEFwYWNoZTIuMiI8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPkJhc2VkIG9uIHRoZSBBcGFjaGUgSFRUUCBzZXJ2ZXIgdmVyc2lvbiB5b3UgYXJlIHVzaW5nLCB5b3UKYWxzbyBuZWVkIHRvCnNldCB0aGUgc2V0dGluZyBBUEFDSEVfVkVSU0lPTl8yXzBfWCBpbiB0aGUgY29uZmlndXJlLmluIGZpbGUuIElmCnlvdSBhcmUKdXNpbmcgQXBhY2hlIDIuMiBmYW1pbHksIHRoaXMgc2V0dGluZyBzaG91bGQgYmUgc2V0IHRvIDAsZWxzZSBzZXQgaXQgdG8KMS48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+QVBBQ0hFX1ZFUlNJT05fMl8wX1ggPSAwPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5UbyBidWlsZCB0aGUgc291cmNlLCB5b3UgaGF2ZSB0byBydW4gdGhlIGNvbW1hbmQ8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+bm1ha2UgYXhpczJfYXBhY2hlX21vZHVsZTwvcHJlPgo8L2Rpdj4KPHA+VGhpcyB3aWxsIGJ1aWxkIG1vZF9heGlzMi5kbGwgYW5kIGNvcHkgaXQgdG8KQVhJUzJDX0lOU1RBTExfRElSXGxpYiBkaXJlY3RvcnkuCjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjExXzNfRGVwbG95aW5nX21vZF9heGlzMiI+PC9hPgo8aDM+MTEuMyBEZXBsb3lpbmcgbW9kX2F4aXMyPC9oMz4KPHA+PGZvbnQgY29sb3I9IiM2NjY2NjYiPk5PVEU6IFRvIGV4ZWN1dGUgc29tZSBvZgp0aGUgY29tbWFuZHMgZ2l2ZW4gYmVsb3csCnlvdSBtaWdodCByZXF1aXJlIHN1cGVyIHVzZXIgcHJpdmlsZWdlcyBvbiB5b3VyIG1hY2hpbmUuIElmIHlvdSBhcmUKdXNpbmcgdGhlIGJpbmFyeSByZWxlYXNlIG9mIEF4aXMyL0MsIHBsZWFzZSBub3RlIHRoYXQgaXQgaXMgYnVpbHQgd2l0aApBcGFjaGUgMi4yLjwvZm9udD48L3A+CjxwPkNvcHkgdGhlIG1vZF9heGlzMiBzaGFyZWQgbGlicmFyeSA8Zm9udCBjb2xvcj0iIzQxNjllMSI+KGxpYm1vZF9heGlzMi5zby4wLjYuMApvbiBMaW51eCBhbmQgbW9kX2F4aXMyLmRsbCBvbiBNUwpXaW5kb3dzKTwvZm9udD4gdG8gdGhlIEFwYWNoZTIgbW9kdWxlcyBkaXJlY3RvcnkgYXMgbW9kX2F4aXMyLnNvPC9wPgo8cD5PbiBMaW51eDwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4JY3AgJEFYSVMyQ19IT01FL2xpYi9saWJtb2RfYXhpczIuc28uMC42LjAgL3Vzci9saWIvYXBhY2hlMi9tb2R1bGVzL21vZF9heGlzMi5zbzxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+T24gTVMgV2luZG93czwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4JY29weSAvWSAiJUFYSVMyQ19IT01FJVxsaWJcbW9kX2F4aXMyLmRsbCIgQzpcQXBhY2hlMlxtb2R1bGVzXG1vZF9heGlzMi5zbzxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+RWRpdCB0aGUgQXBhY2hlMidzIGNvbmZpZ3VyYXRpb24gZmlsZSAoZ2VuZXJhbGx5IGh0dHBkLmNvbmYpCmFuZCBhZGQgdGhlCmZvbGxvd2luZyBkaXJlY3RpdmVzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPkxvYWRNb2R1bGUgYXhpczJfbW9kdWxlIE1PRF9BWElTMl9TT19QQVRIPGJyPjwvYnI+QXhpczJSZXBvUGF0aCBBWElTMkNfSU5TVEFMTF9ESVI8YnI+PC9icj5BeGlzMkxvZ0ZpbGUgUEFUSF9UT19MT0dfRklMRTxicj48L2JyPkF4aXMyTG9nTGV2ZWwgTE9HX0xFVkVMPGJyPjwvYnI+QXhpczJTZXJ2aWNlVVJMUHJlZml4IFBSRUZJWDxicj48L2JyPkF4aXMyTWF4TG9nRmlsZVNpemUgU0laRV9JTl9NQjxicj48L2JyPiZsdDtMb2NhdGlvbiAvYXhpczImZ3Q7PGJyPjwvYnI+IFNldEhhbmRsZXIgYXhpczJfbW9kdWxlPGJyPjwvYnI+Jmx0Oy9Mb2NhdGlvbiZndDs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPlBsZWFzZSBub3RlIHRoYXQgeW91IGhhdmUgdG8gZmluZSB0dW5lIHRoZSBhYm92ZSBzZXR0aW5ncyB0bwptYWNoIHlvdXIKc3lzdGVtLjxicj48L2JyPgo8YnI+PC9icj4KTU9EX0FYSVMyX1NPX1BBVEggaGFzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGZ1bGwgcGF0aCB0bwptb2RfYXhpczIuc28sCmZvciBleGFtcGxlLCA8Y29kZT4vdXNyL2xpYi9hcGFjaGUyL21vZHVsZXMvbW9kX2F4aXMyLnNvPC9jb2RlPgpvbiBMaW51eCwgb3IgPGNvZGU+QzpcQXBhY2hlMlxtb2R1bGVzXG1vZF9heGlzMi5zbzwvY29kZT4Kb24gTVMgV2luZG93czxicj48L2JyPgo8YnI+PC9icj4KQVhJUzJDX0lOU1RBTExfRElSIGhhcyB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBmdWxsIHBhdGggdG8gQXhpczIvQwpyZXBvc2l0b3J5LCBmb3IgZXhhbXBsZSwgPGNvZGU+L3Vzci9sb2NhbC9heGlzMjwvY29kZT4gb24KTGludXgsIG9yIDxjb2RlPmM6XGF4aXMyYzwvY29kZT4gb24gTVMgV2luZG93cy4gTm90ZSB0aGF0CnJlcG9zaXRvcnkgcGF0aCBzaG91bGQKaGF2ZSByZWFkIGFjY2VzcyB0byB0aGUgZGFlbW9uIHVzZXIgYWNjb3VudCB1bmRlciB3aGljaCB0aGUgQXBhY2hlMgpIVFRQRApwcm9jZXNzIGlzIHJ1bi48YnI+PC9icj4KPGJyPjwvYnI+ClBBVEhfVE9fTE9HX0ZJTEUgaGFzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGZ1bGwgcGF0aCB0byB3aGVyZSB5b3UKd2lzaCB0bwpoYXZlIHRoZSBBeGlzMi9DIGxvZyBmaWxlLCBmb3IgZXhhbXBsZSwgPGNvZGU+L3RtcC9heGlzMi5sb2c8L2NvZGU+Cm9uIExpbnV4LCBvciA8Y29kZT5DOlxBcGFjaGUyXGxvZ3NcYXhpczIubG9nPC9jb2RlPiBvbiBNUwpXaW5kb3dzLiBOb3RlIHRoYXQgdGhlIGxvZwpmaWxlIHBhdGggc2hvdWxkIGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSBkYWVtb24gdXNlciBhY2NvdW50IHVuZGVyCndoaWNoIHRoZQpBcGFjaGUyIEhUVFBEIHByb2Nlc3MgaXMgcnVuLjxicj48L2JyPgo8YnI+PC9icj4KTE9HX0xFVkVMIGhhcyB0byBiZSByZXBsYWNlZCB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogY3JpdCwKZXJyb3IsCndhcm4sIGluZm8sIGRlYnVnLCB0cmFjZS4gVGhlc2UgbG9nIGxldmVscyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3M6PC9wPgo8dWw+CjxsaT5jcml0IC0gbG9nIGNyaXRpY2FsIGVycm9yczwvbGk+CjxsaT5lcnJvciAtIGxvZyBlcnJvcnMgYW5kIGFib3ZlPC9saT4KPGxpPndhcm4gLSBsb2cgd2FybmluZ3MgYW5kIGFib3ZlPC9saT4KPGxpPmluZm8gLSBsb2cgaW5mb3JtYXRpb24gYW5kIGFib3ZlPC9saT4KPGxpPmRlYnVnIC0gbG9nIGRlYnVnIGluZm9ybWF0aW9uIGFuZCBhYm92ZSwgdGhpcyBpcyB0aGUKZGVmYXVsdCBsb2cgbGV2ZWwgdXNlZDwvbGk+CjxsaT51c2VyIC0gbG9nIHVzZXIgbGV2ZWwgbWVzc2FnZXMgYW5kIGFib3ZlPC9saT4KPGxpPnRyYWNlIC0gbG9nIHRyYWNlIG1lc3NhZ2VzIGFuZCBhYm92ZTwvbGk+CjwvdWw+CjxwPlNJWkVfSU5fTUIgbXVzdCBiZSByZXBsYWNlZCBieSB0aGUgc2l6ZSBvZiB0aGUgcGFydGljdWxhcgpyZXNvdXJjZSBpbiBNQiwgcm91bmRlZCB0bwp0aGUgbmVhcmVzdCB3aG9sZSB2YWx1ZS48YnI+PC9icj4KPGJyPjwvYnI+ClBSRUZJWCBoYXMgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgcHJlZml4IHRvIGJlIHVzZWQgd2l0aCB0aGUgc2VydmljZQplbmRwb2ludHMuIFRoaXMgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvICJzZXJ2aWNlcyIuCkFzIGFuIGV4YW1wbGUsIGlmIHlvdSBoYXZlICJ3ZWJfc2VydmljZXMiIGFzIHRoZSBwcmVmaXgsIHRoZW4gYWxsIHRoZQpzZXJ2aWNlcyBob3N0ZWQgd291bGQgaGF2ZSB0aGUgZW5kcG9pbnQgcHJlZml4IG9mIDogPGJyPjwvYnI+Cmh0dHA6Ly9sb2NhbGhvc3QvYXhpczIvd2ViX3NlcnZpY2VzIDxicj48L2JyPgpJZiB5b3Ugd2lzaCwgeW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgbG9jYXRpb24gYXMgd2VsbCBieSByZXBsYWNpbmcKIi9heGlzMiIgaW4gJmx0O0xvY2F0aW9uIC9heGlzMiZndDsgc2V0dGluZyB3aXRoIHdoYXRldmVyIHlvdQp3aXNoLgo8L3A+CjxwPjxmb250IGNvbG9yPSIjNjY2NjY2Ij5OT1RFOiBJZiB5b3Ugd2FudCB0byB1c2UgYQpTaGFyZWQgR2xvYmFsIFBvb2wgd2l0aCBBcGFjaGUKeW91IGhhdmUgdG8gZ2l2ZSBhbm90aGVyIGVudHJ5IGNhbGxlZCBBeGlzMkdsb2JhbFBvb2xTaXplLllvdSBoYXZlIHRvCmdpdmUgdGhlCnNpemUgb2YgdGhlIHNoYXJlZCBnbG9iYWwgcG9vbCBpbiBNQi5JZiB5b3UgZG9lc24ndCBzZXQgdGhlIHZhbHVlIG9yIGlmCnlvdSBzZXQgYQpuZWdhdGl2ZSB2YWx1ZSBBcGFjaGUgbW9kdWxlIGRvZXNuJ3QgY3JlYXRlIHNoYXJlZCBnbG9iYWwgcG9vbC48L2ZvbnQ+PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPkF4aXMyR2xvYmFsUG9vbFNpemUgU0laRV9JTl9NQjxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+VG8gZW5zdXJlIHRoYXQgZXZlcnl0aGluZyB3b3JrcyBmaW5lLCBzdGFydCBBcGFjaGUyIChyZXN0YXJ0CmlmIGl0IGlzCmFscmVhZHkgcnVubmluZykgYW5kIHRlc3Qgd2hldGhlciB0aGUgbW9kX2F4aXMyIG1vZHVsZSBpcyBsb2FkZWQKY29ycmVjdGx5IGJ5CmFjY2Vzc2luZyB0aGUgVVJMOiA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2F4aXMyL3NlcnZpY2VzIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+aHR0cDovL2xvY2FsaG9zdC9heGlzMi9zZXJ2aWNlczwvYT4uPGJyPjwvYnI+CjwvcD4KPHA+VGhpcyBzaG91bGQgc2hvdyB0aGUgbGlzdCBvZiBzZXJ2aWNlcyBkZXBsb3llZCB3aXRoIEF4aXMyL0MuClRoZW4geW91CnNob3VsZCBiZSBhYmxlIHRvIHJ1biBjbGllbnRzIGFnYWluc3QgdGhpcyBlbmRwb2ludC4gRXhhbXBsZTo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+ZWNobyBodHRwOi8vbG9jYWxob3N0L2F4aXMyL3NlcnZpY2VzL2VjaG88YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPkluIGNhc2UgdGhpbmdzIGFyZSBub3Qgd29ya2luZyBhcyBleHBlY3RlZCwgaGVyZSBhcmUgc29tZSB0aXBzCm9uIGhvdyB0bwp0cm91Ymxlc2hvb3Q6PC9wPgo8dWw+CjxsaT5Eb3VibGUgY2hlY2sgdGhlIHN0ZXBzIHlvdSBmb2xsb3dlZCBpbiBpbnN0YWxsaW5nIGFuZApjb25maWd1cmluZyBtb2RfYXhpczIuIENoZWNrIGlmIHRoZSBsb2NhdGlvbnMgZ2l2ZW4gaW4gaHR0cGQuY29uZiBhcmUKY29ycmVjdCwgYW5kIGFsc28gY2hlY2sgdGhlIGZvbGRlciBwZXJtaXNzaW9ucy48L2xpPgo8bGk+SGF2ZSBhIGxvb2sgYXQgdGhlIGF4aXMyLmxvZyBmaWxlIGZvciBjbHVlcyBhcyB0byB3aGF0IGlzCmdvaW5nIHdyb25nLiBZb3UgY2FuIHNldCB0aGUgbG9nIGxldmVsIHRvIGRlYnVnLCB1c2VyIG9yIHRyYWNlIHRvCmdhdGhlciBtb3JlIGluZm9ybWF0aW9uPC9saT4KPGxpPkluIGNhc2UgdGhlIGF4aXMyLmxvZyBmaWxlIGlzIG5vdCB3cml0dGVuIGF0IGFsbCwgdGhlcmUgaXMKYSBnb29kIGNoYW5jZSB0aGF0IG1vZF9heGlzMiBpcyBjcmFzaGluZy4gWW91IGNhbiBoYXZlIGEgbG9vayBhdCB0aGUKZXJyb3IubG9nIGZpbGUgb2YgQXBhY2hlMiB0byBnZXQgYW4gaWRlYSBvbiB3aGF0IGlzIGdvaW5nIHdyb25nLiBUaGlzCmZpbGUgaXMgdXN1YWxseSBwbGFjZWQgaW4gdGhlIEFQQUNIRV9JTlNUQUxMX0RJUi9sb2dzIGZvbGRlci48L2xpPgo8L3VsPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0iSUlTIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iMTJfX0RlcGxveWluZ193aXRoX01pY3Jvc29mdF9JSVNfU2VydmVyIj48L2E+CjxoMj4xMi4gRGVwbG95aW5nIHdpdGggTWljcm9zb2Z0IElJUyBTZXJ2ZXI8L2gyPgo8cD5Vc2UgdGhlIEF4aXMyL0MgVkMgcHJvamVjdCBvciBtYWtlZmlsZSB0byBidWlkIHRoZQpjb21wb25lbnQuIElmIHlvdSBhcmUgdXNpbmcgdGhlIG1ha2VmaWxlIHRvIGJ1aWxkIHRoZSBzb3VyY2UsIHlvdSBoYXZlCnRvIHJ1biB0aGUgY29tbWFuZDwvcD4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT5ubWFrZSBheGlzMl9paXNfbW9kdWxlPC9wcmU+CjwvZGl2Pgo8cD5JbiB0aGlzIGRvY3VtZW50IEkgYXNzdW1lIHRoYXQgdGhlIG1vZF9heGlzMl9JSVMuZGxsCmlzIGluIHRoZSBkaXJlY3RvcnkgPGNvZGU+YzpcYXhpczJjXGxpYjwvY29kZT4gYW5kCkFYSVMyQ19IT01FCmlzIDxjb2RlPmM6XGF4aXMyYzwvY29kZT48L3A+CjxwPkFkZCB0aGUgZm9sbG93aW5nIGtleSB0byB0aGUKcmVnaXN0ZXJ5LjwvcD4KPHA+PGNvZGU+SEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXEFwYWNoZSBBeGlzMmNcSUlTCklTQVBJClJlZGlyZWN0b3I8L2NvZGU+PC9wPgo8cD5BZGQgYSBzdHJpbmcgdmFsdWUgd2l0aCB0aGUgbmFtZSA8Y29kZT5BWElTMkNfSE9NRTwvY29kZT4KYW5kIGEKdmFsdWUgb2YgPGNvZGU+YzpcYXhpczJjPC9jb2RlPjwvcD4KPHA+QWRkIGEgc3RyaW5nIHZhbHVlIHdpdGggdGhlIG5hbWUgPGNvZGU+bG9nX2ZpbGU8L2NvZGU+CmFuZCBhIHZhbHVlCm9mIDxjb2RlPmM6XGF4aXMyY1xsb2dzXGF4aXMyLmxvZzwvY29kZT48L3A+CjxwPkFkZCBhIHN0cmluZyB2YWx1ZSB3aXRoIHRoZSBuYW1lIDxjb2RlPmxvZ19sZXZlbDwvY29kZT4uClRoZSB2YWx1ZQpjYW4gYmUgZWl0aGVyIDxjb2RlPnRyYWNlPC9jb2RlPiwgPGNvZGU+ZXJyb3I8L2NvZGU+LAo8Y29kZT5pbmZvPC9jb2RlPiwgPGNvZGU+Y3JpdGljYWw8L2NvZGU+LCA8Y29kZT51c2VyPC9jb2RlPiwKPGNvZGU+ZGVidWc8L2NvZGU+LCBvciA8Y29kZT53YXJuaW5nPC9jb2RlPi48L3A+CjxwPgpZb3UgY2FuIGFkZCBhIHN0cmluZyB2YWx1ZSB3aXRoIHRoZSBuYW1lIDxjb2RlPnNlcnZpY2VzX3VybF9wcmVmaXg8L2NvZGU+LiBUaGlzIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAiL3NlcnZpY2VzIi4KQXMgYW4gZXhhbXBsZSwgaWYgeW91IGhhdmUgIi93ZWJfc2VydmljZXMiIGFzIHRoZSBwcmVmaXgsIHRoZW4gYWxsIHRoZQpzZXJ2aWNlcyBob3N0ZWQgd291bGQgaGF2ZSB0aGUgZW5kcG9pbnQgcHJlZml4IG9mIDogPGJyPjwvYnI+Cmh0dHA6Ly9sb2NhbGhvc3QvYXhpczIvd2ViX3NlcnZpY2VzLjxicj48L2JyPk5vdGU6IGRvbid0IGZvcmdldCB0aGUgLyBhdCB0aGUgYmVnaW5pbmcuPGJyPjwvYnI+CjwvcD4KPHA+CklmIHlvdSB3aXNoLCB5b3UgY2FuIGFsc28gY2hhbmdlIHRoZSBsb2NhdGlvbiBhcyB3ZWxsIGJ5IGFkZGluZyBhIHN0cmluZyB2YWx1ZSB3aXRoIHRoZSBuYW1lIDxjb2RlPmF4aXMyX2xvY2F0aW9uPC9jb2RlPi4gVGhpcyBpcyBhbHNvIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAvYXhpczIuCklmIHlvdSBoYXZlIC9teXNlcnNlciBhcyB0aGUgdmFsdWUgeW91IGNhbiBhY2Nlc3MgeW91ciB3ZWIgc2VydmljZXMgd2l0aCBhIHVybCBsaWtlIGh0dHA6Ly9sb2NhbGhvc3QvbXlzZXJ2ZXIvc2VydmljZXMuIDxicj48L2JyPk5vdGU6IERvbid0IGZvcmdldCB0aGUgLyBhdCB0aGUgYmVnaW5uaW5nLjwvcD4KPHA+Cgo8L3A+PHA+Tm93IHlvdSBjYW4gZG8gYWxsIHRoZSByZWdpc3RyeSBlZGl0aW5nIHVzaW5nIHRoZSBKU2NyaXB0IGZpbGUKYXhpczJfaWlzX3JlZ2VkaXQuanMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiBXaGVuIHlvdSBidWlsZApheGlzMi9DIHdpdGggdGhlIElJUyBtb2R1bGUgdGhlIGZpbGUgaXMgY29waWVkIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZgp0aGUgYmluYXJ5IGRpc3RyaWJ1dGlvbi4gSnVzdCBkb3VibGUgY2xpY2sgaXQgYW5kIGV2ZXJ5dGhpbmcgd2lsbCBiZQpzZXQgdG8gdGhlIGRlZmF1bHRzLiBUaGUgYXhpczJjX2hvbWUgaXMgdGFrZW4gYXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LApzbyBtYWtlIHN1cmUgeW91IHJ1biB0aGUgZmlsZSBpbiB0aGUgQXhpczIvQyByZXBvc2l0b3J5IGxvY2F0aW9uIChvcgpyb290IG9mIHRoZSBiaW5hcnkgZGlzdHJpYnV0aW9uKS4gSWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSB2YWx1ZXMgeW91CmNhbiBtYW51YWxseSBlZGl0IHRoZSB0aGUgLmpzIGZpbGUgb3IgZ2l2ZSBpdCBhcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzCnRvIHRoZSBzY3JpcHQgd2hlbiBydW5uaW5nIHRoZSBzY3JpcHQuIFRvIHJ1biB0aGUganNjcmlwdCBmcm9tIHRoZQpjb21tYW5kIGxpbmUgdXNlIHRoZSBjb21tYW5kIDxjb2RlPjpcY3NjcmlwdCBheGlzMl9paXNfcmVnZWRpdC5qcyBvcHRpb25hbCBhcmd1bWVudHM8L2NvZGU+LiBXZSByZWNvbWVuZCB0aGUgbWFudWFsIGVkaXRpbmcgYXMgaXQgaXMgdGhlIGVhc2llc3Qgd2F5IHRvIHNwZWNpZnkgdGhlIHZhbHVlcy48L3A+CjxwPjxiPklJUyA1LjEgb3IgQmVsb3c8L2I+PC9wPgpVc2luZyB0aGUgSUlTIG1hbmFnZW1lbnQgY29uc29sZSwgYWRkIGEgbmV3IHZpcnR1YWwKZGlyZWN0b3J5IHRvIHlvdXIgSUlTL1BXUyB3ZWIgc2l0ZS4gVGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgZGlyZWN0b3J5Cm11c3QgYmUgPGNvZGU+YXhpczI8L2NvZGU+LiBJdHMKcGh5c2ljYWwgcGF0aCBzaG91bGQgYmUgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB5b3UgcGxhY2VkCm1vZF9heGlzMl9JSVMuZGxsIChpbiBvdXIgZXhhbXBsZSBpdCBpcwpjOlxheGlzMmNcbGliKS4gV2hlbiBjcmVhdGluZyB0aGlzIG5ldyB2aXJ0dWFsIGRpcmVjdG9yeSwgPGI+YXNzaWduCmV4ZWN1dGUgYWNjZXNzIHRvIGl0PC9iPi4KPHA+QnkgdXNpbmcgdGhlIElJUyBtYW5hZ2VtZW50IGNvbnNvbGUsIGFkZAptb2RfYXhpczJfSUlTLmRsbCBhcyBhIGZpbHRlciBpbiB5b3VyIElJUy9QV1Mgd2ViIHNpdGUgYW5kIHJlc3RhcnQgdGhlCklJUwphZG1pbiBzZXJ2aWNlLjwvcD4KPHA+PGI+SUlTIDYgJmFtcDsgNzwvYj48L3A+ClVzaW5nIHRoZSBJSVMgbWFuYWdlbWVudCBjb25zb2xlLCBhZGQgdGhlIG1vZF9heGlzMl9JSVMuZGxsIGFzIGEKV2lsZGNhcmQgU2NyaXB0IE1hcC4KPHVsPgo8bGk+RXhlY3V0YWJsZSBzaG91bGQgYmUgdGhlIGNvbXBsZXRlIHBhdGggdG8gdGhlCm1vZF9heGlzMl9JSVMuZGxsPC9saT4KPGxpPllvdSBjYW4gcHV0IGFueSBuYW1lIGFzIHRoZSBuYW1lIG9mIHRoZSBXaWxkY2FyZCBTY3JpcHQgTWFwPC9saT4KPC91bD4KPHA+UGxlYXNlIGRvbid0IGFkZCB0aGUgbW9kX2F4aXMyX0lJUy5kbGwgYXMgYSBmaWx0ZXIgdG8gSUlTIGFzCmluIHRoZSBJSVMgNS4xIGNhc2UuPC9wPgo8cD5Ob3RlOiBJZiB0aGUgQXhpczIvQyBmYWlsZWQgdG8gbG9hZCwgdmVyaWZ5IHRoYXQgQXhpczIvQyBhbmQKaXRzIGRlcGVuZGVudCBETExzIGFyZSBpbiB0aGUgU3lzdGVtIFBhdGggKG5vdCB0aGUgdXNlciBwYXRoKS4gPC9wPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0ic3NsX2NsaWVudCI+PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iMTNfX1VzaW5nX1NTTF9DbGllbnQiPjwvYT4KPGgyPjEzLiBVc2luZyBTU0wgQ2xpZW50PC9oMj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTNfMV9CdWlsZGluZ19hbmRfQ29uZmlndXJpbmdfdGhlX0NsaWVudCI+PC9hPgo8aDM+MTMuMSBCdWlsZGluZyBhbmQgQ29uZmlndXJpbmcgdGhlIENsaWVudDwvaDM+CjxwPkluIG9yZGVyIHRvIGFsbG93IGFuIEF4aXMyL0MgY2xpZW50IHRvIGNvbW11bmljYXRlIHdpdGggYW4gU1NMCmVuYWJsZWQKc2VydmVyLCB3ZSBuZWVkIHRvIGNvbXBpbGUgQXhpczIvQyB3aXRoIFNTTCBzdXBwb3J0IGVuYWJsZWQuPC9wPgo8cD5UbyBidWlsZCB3aXRoIFNTTCBjbGllbnQgc3VwcG9ydCwgZmlyc3Qgb2YgYWxsLCBtYWtlIHN1cmUgeW91CmhhdmUKaW5zdGFsbGVkIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+T3BlblNTTDwvYT4Kb24geW91ciBtYWNoaW5lLiBUaGVuCnlvdSBjYW4gc3RhcnQgYnVpbGRpbmcgd2l0aCBTU0wgY2xpZW50IHN1cHBvcnQuIFRoaXMgY2FuIGJlIGFjaGlldmVkIG9uCkxpbnV4CmJ5IGNvbmZpZ3VyaW5nIEF4aXMyL0Mgd2l0aCB0aGUgPGNvZGU+LS1lbmFibGUtb3BlbnNzbD15ZXM8L2NvZGU+Cm9wdGlvbi48L3A+CjxwPkV4YW1wbGUgPGNvZGU+PGJyPjwvYnI+CiUuL2NvbmZpZ3VyZSAtLWVuYWJsZS1vcGVuc3NsPXllcyAtLXByZWZpeD0ke0FYSVMyQ19IT01FfS9kZXBsb3k8YnI+PC9icj4KJW1ha2U8YnI+PC9icj4KJW1ha2UgaW5zdGFsbDxicj48L2JyPgo8L2NvZGU+PC9wPgo8cD5PbiBNUyBXaW5kb3dzLCBzZXQgPGNvZGU+RU5BQkxFX1NTTD0xPC9jb2RlPiBpbgp0aGUKPGNvZGU+Y29uZmlndXJlLmluPC9jb2RlPiBmaWxlIGFuZCBydW4gdGhlIDxjb2RlPm5tYWtlCmFsbDwvY29kZT4gY29tbWFuZC48L3A+CjxwPjxhIG5hbWU9ImNsaWVudF9jaGFpbiI+PC9hPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjEzXzFfMV9DcmVhdGluZ190aGVfQ2xpZW50X0NlcnRpZmljYXRlX0NoYWluX0ZpbGUiPjwvYT4KPGgzPjEzLjEuMSBDcmVhdGluZyB0aGUgQ2xpZW50IENlcnRpZmljYXRlIENoYWluIEZpbGU8L2gzPgo8cD5JZiB5b3UgbmVlZCBTU0wgY2xpZW50IGF1dGhlbnRpY2F0aW9uLCBBeGlzMi9DIHJlcXVpcmVzIHlvdSB0bwpwcm92aWRlIHRoZQpjbGllbnQgY2VydGlmaWNhdGUgYW5kIHRoZSBwcml2YXRlIGtleSBmaWxlIGluIGEgc2luZ2xlIGZpbGUuIFN1Y2ggYQpmaWxlCndoaWNoIGNvbnRhaW5zIGJvdGggdGhlIGNlcnRpZmljYXRlIGFuZCByZWxldmFudCBwcml2YXRlIGtleSBpcyBjYWxsZWQKYQpjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlLiBDcmVhdGluZyBzdWNoIGEgZmlsZSBpcyB2ZXJ5IGVhc3kuIEFzc3VtZSB0aGF0CnRoZQpjbGllbnQgY2VydGlmaWNhdGUgaXMgc3RvcmVkIGluIGEgZmlsZSBuYW1lZCA8Y29kZT5jbGllbnQuY3J0PC9jb2RlPgphbmQgdGhlCnByaXZhdGUga2V5IGlzIHN0b3JlZCBpbiBhIGZpbGUgbmFtZWQgPGNvZGU+Y2xpZW50LmtleTwvY29kZT4uClRoZW4gdGhlCmNlcnRpZmljYXRlIGNoYWluIGZpbGUgY2FuIGJlIGNyZWF0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgY2VydGlmaWNhdGUKZmlsZQphbmQgdGhlIHByaXZhdGUga2V5IGZpbGUgaW4gdGhhdCBvcmRlciwgaW4gdG8gYW5vdGhlciBmaWxlLCBzYXkKPGNvZGU+Y2xpZW50LnBlbTwvY29kZT4uPC9wPgo8cD5PbiBMaW51eCB5b3UgY2FuIGRvIHRoaXMgYXMgZm9sbG93czogPGNvZGU+JWNhdApjbGllbnQuY3J0IGNsaWVudC5rZXkgJmd0OwpjbGllbnQucGVtPC9jb2RlPjwvcD4KPHA+T24gTVMgV2luZG93cywgeW91IGNhbiBkbyB0aGlzIGJ5IGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9mCmNsaWVudC5jcnQgYW5kCmNsaWVudC5rZXkgZmlsZXMgYW5kIHNhdmluZyB0aGVtIGluIGEgZmlsZSBuYW1lZCBjbGllbnQucGVtIHVzaW5nCk5vdGVwYWQuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTNfMV8yX0NvbmZpZ3VyYXRpb24iPjwvYT4KPGgzPjEzLjEuMiBDb25maWd1cmF0aW9uPC9oMz4KPHA+VW5jb21tZW50IHRoZSBmb2xsb3dpbmcgaW4gPGNvZGU+YXhpczIueG1sPC9jb2RlPgp0byBlbmFibGUgaHR0cHMgdHJhbnNwb3J0IHJlY2VpdmVyIGFuZCBodHRwcyB0cmFuc3BvcnQgc2VuZGVyLgpBeGlzMi9DIHdpbGwgdGhlbiBiZSBhYmxlIHRvIHJlY29nbml6ZSB0aGUgImh0dHBzIiBzaGVtZSBpbiBhIGdpdmVuIGVuZApwb2ludCByZWZlcmVuY2UgKEVQUikgYW5kIHVzZSBTU0wgdHJhbnNwb3J0Lgo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+Jmx0O3RyYW5zcG9ydFJlY2VpdmVyIG5hbWU9Imh0dHBzIiBjbGFzcz0iYXhpczJfaHR0cF9yZWNlaXZlciImZ3Q7PGJyPjwvYnI+ICZsdDtwYXJhbWV0ZXIgbmFtZT0icG9ydCIgbG9ja2VkPSJmYWxzZSImZ3Q7NjA2MCZsdDsvcGFyYW1ldGVyJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9ImV4cG9zZUhlYWRlcnMiIGxvY2tlZD0idHJ1ZSImZ3Q7ZmFsc2UmbHQ7L3BhcmFtZXRlciZndDs8YnI+PC9icj4mbHQ7L3RyYW5zcG9ydFJlY2VpdmVyJmd0Ozxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4mbHQ7dHJhbnNwb3J0U2VuZGVyIG5hbWU9Imh0dHBzIiBjbGFzcz0iYXhpczJfaHR0cF9zZW5kZXIiJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9IlBST1RPQ09MIiBsb2NrZWQ9ImZhbHNlIiZndDtIVFRQLzEuMSZsdDsvcGFyYW1ldGVyJmd0Ozxicj48L2JyPiZsdDsvdHJhbnNwb3J0U2VuZGVyJmd0Ozxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+Rm9yIHRoZSBTU0wgY2xpZW50IHRvIHdvcmssIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIENBCmNlcnRpZmljYXRlIHNob3VsZApiZSBnaXZlbiBhcyA8Y29kZT5TRVJWRVJfQ0VSVDwvY29kZT4gcGFyYW1ldGVyIGluIHRoZQpheGlzMi54bWwgZmlsZS4gSWYgeW91Cm5lZWQgY2xpZW50IGF1dGhlbnRpY2F0aW9uLCB5b3UgY2FuIGFsc28gc2V0IHRoZSBwYXJhbWV0ZXJzIGluIHRoZQpheGlzMi54bWwKZmlsZSB0byBzcGVjaWZ5IHRoZSBjbGllbnQgY2VydGlmaWNhdGUsIHByaXZhdGUga2V5LCBhbmQgdGhlIHBhc3NwaHJhc2UKZm9yCnRoZSBjbGllbnQgcHJpdmF0ZSBrZXkuIFBhcmFtZXRlciBuYW1lcyBmb3IgdGhlc2UgYXJlOjwvcD4KPHA+PGNvZGU+S0VZX0ZJTEU8L2NvZGU+IC0gY2VydGlmaWNhdGUgY2hhaW4gZmlsZQpjb250YWluaW5nIHRoZSBjbGllbnQncwpjZXJ0aWZpY2F0ZSBhbmQgdGhlIHByaXZhdGUga2V5IChQbGVhc2UgcmVmZXIgdG8gdGhlIDxhIGhyZWY9IiNjbGllbnRfY2hhaW4iPmNyZWF0aW5nIHRoZSBjbGllbnQgY2VydGlmaWNhdGUgY2hhaW4KZmlsZTwvYT4Kc2VjdGlvbik8YnI+PC9icj4KPGNvZGU+U1NMX1BBU1NQSFJBU0U8L2NvZGU+IC0gcGFzc3BocmFzZSB1c2VkIHRvIGVuY3J5cHQKdGhlIHByaXZhdGUga2V5CmZpbGUuPC9wPgo8cD5FeGFtcGxlOjwvcD4KPHA+PGNvZGU+Jmx0O3BhcmFtZXRlcgpuYW1lPSJTRVJWRVJfQ0VSVCImZ3Q7L3BhdGgvdG8vY2EvY2VydGlmaWNhdGUmbHQ7L3BhcmFtZXRlciZndDs8L2NvZGU+PGJyPjwvYnI+Cjxjb2RlPiZsdDtwYXJhbWV0ZXIKbmFtZT0iS0VZX0ZJTEUiJmd0Oy9wYXRoL3RvL2NsaWVudC9jZXJ0aWZpY2F0ZS9jaGFpbi9maWxlJmx0Oy9wYXJhbWV0ZXImZ3Q7PC9jb2RlPjxicj48L2JyPgo8Y29kZT4mbHQ7PC9jb2RlPjxjb2RlPjxjb2RlPnBhcmFtZXRlcgpuYW1lPSJTU0xfPC9jb2RlPlBBU1NQSFJBU0UiJmd0O3Bhc3NwaHJhc2UmbHQ7L3BhcmFtZXRlciZndDs8L2NvZGU+PC9wPgo8cD5Gb3IgdGVzdGluZyBwdXJwb3NlcywgeW91IGNhbiB1c2UgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlCmluc3RlYWQgb2YgdGhlCkNBIGNlcnRpZmljYXRlLiBZb3UgY2FuIG9idGFpbiB0aGlzIGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmQgPGNvZGU+b3BlbnNzbApzX2NsaWVudCAtY29ubmVjdCAmbHQ7c2VydmVybmFtZSZndDs6Jmx0O3BvcnQmZ3Q7PC9jb2RlPgphbmQgY29weWluZyB0aGUKcG9ydGlvbiBvZiB0aGUgb3V0cHV0IGJvdW5kZWQgYnkgYW5kIGluY2x1ZGluZzo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tPGJyPjwvYnI+LS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+T24gTGludXgsIGlmIHlvdSBydW4gdGhlIGZvbGxvd2luZyBwaWVjZSBvZiBjb2RlLCB0aGUgc2VydmVyCmNlcnRpZmljYXRlCndpbGwgYmUgc2F2ZWQgdG8gYSBmaWxlIDxjb2RlPmNlcnQucGVtPC9jb2RlPjo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+ZWNobyB8XDxicj48L2JyPm9wZW5zc2wgc19jbGllbnQgLWNvbm5lY3QgJmx0O3NlcnZlcm5hbWUmZ3Q7OiZsdDtwb3J0Jmd0OyAyJmd0OyZhbXA7MSB8XDxicj48L2JyPnNlZCAtbmUgJy8tQkVHSU4gQ0VSVElGSUNBVEUtLywvLUVORCBDRVJUSUZJQ0FURS0vcCcgJmd0OyBjZXJ0LnBlbTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+PGZvbnQgY29sb3I9IiM2NjY2NjYiPk5PVEU6IEluc3RlYWQgb2Ygc2V0dGluZwp0aGVzZSBwYXJhbWV0ZXJzIGluIHRoZSA8Y29kZT5heGlzMi54bWw8L2NvZGU+CmZpbGUsIHlvdSBjYW4gYWxzbyBzZXQgdGhlc2UgcGFyYW1ldGVycyBwcm9ncmFtbWF0aWNhbGx5IGluIHlvdXIgY2xpZW50CmNvZGUuPC9mb250PjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjEzXzJfQ29uZmlndXJpbmdfdGhlX1NlcnZlciI+PC9hPgo8aDM+MTMuMiBDb25maWd1cmluZyB0aGUgU2VydmVyPC9oMz4KPHA+SGVyZSB3ZSB3aWxsIG9ubHkgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgQXBhY2hlIEhUVFAKV2ViIHNlcnZlci4KUmVmZXIgdG8gdGhlICc8YSBocmVmPSIjbW9kX2F4aXMyIj5EZXBsb3lpbmcgd2l0aCBBcGFjaGUKSFRUUCBTZXJ2ZXIgVmVyc2lvbjIueDwvYT4nIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGRlcGxveWluZwpBeGlzMi9DIGFzIGFuIEFwYWNoZQptb2R1bGUuPC9wPgo8cD5Gb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBTU0wgY29uZmlndXJhdGlvbiwgcGxlYXNlCnJlZmVyIHRvIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi4wL3NzbC8jZG9jdW1lbnRhdGlvbiIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPkFwYWNoZTIKU1NML1RMUwpkb2N1bWVudGF0aW9uPC9hPi48L3A+CjxwPkluIHRoZSA8Y29kZT5odHRwZC5jb25mPC9jb2RlPiBmaWxlLCBhZGQgdGhlCmZvbGxvd2luZyBjb25maWd1cmF0aW9uCnN0YXRlbWVudHMgKGluIGFkZGl0aW9uIHRvIG90aGVyIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uKTo8L3A+CjxwPjxjb2RlPlNTTEVuZ2luZSBvbjxicj48L2JyPgpTU0xDZXJ0aWZpY2F0ZUZpbGUgL3BhdGgvdG8vc2VydmVyL2NlcnRpZmljYXRlL2ZpbGU8YnI+PC9icj4KU1NMQ2VydGlmaWNhdGVLZXlGaWxlIC9wYXRoL3RvL3ByaXZhdGUva2V5L2ZpbGU8YnI+PC9icj4KU1NMQ0FDZXJ0aWZpY2F0ZUZpbGUgL3BhdGgvdG8vQ0EvY2VydGlmaWNhdGUvZmlsZTxicj48L2JyPgpTU0xWZXJpZnlDbGllbnQgcmVxdWlyZTxicj48L2JyPgpTU0xWZXJpZnlEZXB0aCAxPC9jb2RlPjwvcD4KPHA+PGZvbnQgY29sb3I9IiM2NjY2NjYiPk5PVEU6IFRoZSBsYXN0IHR3byBsaW5lcywgPGNvZGU+U1NMVmVyaWZ5Q2xpZW50PC9jb2RlPgphbmQKPGNvZGU+U1NMVmVyaWZ5RGVwdGg8L2NvZGU+IGFyZSBvbmx5IG5lZWRlZCB3aGVuIHlvdSBuZWVkCmNsaWVudAphdXRoZW50aWNhdGlvbi48L2ZvbnQ+PC9wPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0icHJveHkiPjwvYT48L3A+CjwvZGl2Pgo8L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48YSBuYW1lPSIxNF9fVXNpbmdfUHJveHlfU3VwcG9ydCI+PC9hPgo8aDI+MTQuIFVzaW5nIFByb3h5IFN1cHBvcnQ8L2gyPgo8cD5XaGVuIHVzaW5nIGEgcHJveHksIHRoZXJlIGFyZSB0d28gbWV0aG9kcyBmb3Igc3BlY2lmeWluZyBwcm94eQpzZXR0aW5nczo8L3A+CjxvbD4KPGxpPlNwZWNpZnkgcHJveHkgc2V0dGluZ3MgaW4gYXhpczIueG1sPC9saT4KPGxpPlByb3ZpZGUgcHJveHkgc2V0dGluZ3MgdXNpbmcgc2VydmljZSBjbGllbnQgQVBJPC9saT4KPC9vbD4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTRfMV9TcGVjaWZ5aW5nX1Byb3h5X1NldHRpbmdzX2luX2F4aXMyX3htbCI+PC9hPgo8aDM+MTQuMSBTcGVjaWZ5aW5nIFByb3h5IFNldHRpbmdzIGluIGF4aXMyLnhtbDwvaDM+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+Jmx0O3RyYW5zcG9ydFNlbmRlciBuYW1lPSJodHRwIiBjbGFzcz0iYXhpczJfaHR0cF9zZW5kZXIiJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9IlBST1RPQ09MIiBsb2NrZWQ9ImZhbHNlIiZndDtIVFRQLzEuMSZsdDsvcGFyYW1ldGVyJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9IlBST1hZIiBwcm94eV9ob3N0PSIxMjcuMC4wLjEiIHByb3h5X3BvcnQ9IjgwODAiIGxvY2tlZD0idHJ1ZSIvJmd0Ozxicj48L2JyPiZsdDsvdHJhbnNwb3J0U2VuZGVyJmd0Ozxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjE0XzJfUHJvdmlkaW5nX1Byb3h5X1NldHRpbmdzX1VzaW5nX1NlcnZpY2VfQ2xpZW50X0FQSSI+PC9hPgo8aDM+MTQuMiBQcm92aWRpbmcgUHJveHkgU2V0dGluZ3MgVXNpbmcgU2VydmljZSBDbGllbnQgQVBJPC9oMz4KPHA+WW91IGNhbiBzcGVjaWZ5IHByb3h5IHNldHRpbmdzIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24Kd2l0aCB0aGUKc2VydmljZSBjbGllbnQ6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX3N2Y19jbGllbnRfc2V0X3Byb3h5KGF4aXMyX3N2Y19jbGllbnRfdCAqc3ZjX2NsaWVudCw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICplbnYsPGJyPjwvYnI+IGF4aXMyX2NoYXJfdCAqcHJveHlfaG9zdCw8YnI+PC9icj4gYXhpczJfY2hhcl90ICpwcm94eV9wb3J0KTs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJwcm94eV9hdXRoIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iMTVfX1VzaW5nX1Byb3h5X0F1dGhlbnRpY2F0aW9uX1N1cHBvcnQiPjwvYT4KPGgyPjE1LiBVc2luZyBQcm94eSBBdXRoZW50aWNhdGlvbiBTdXBwb3J0PC9oMj4KPHA+V2hlbiB1c2luZyBwcm94eSBhdXRoZW50aWNhdGlvbiwgdGhlcmUgYXJlIHRocmVlIG1ldGhvZHMgZm9yCnNwZWNpZnlpbmcgcHJveHkKYXV0aGVudGljYXRpb24gc2V0dGluZ3M6PC9wPgo8b2w+CjxsaT5TcGVjaWZ5IHByb3h5IHNldHRpbmdzIHdpdGggYXV0aGVudGljYXRpb24gaW4gYXhpczIueG1sPC9saT4KPGxpPlByb3ZpZGUgcHJveHkgc2V0dGluZ3Mgd2l0aCBhdXRoZW50aWNhdGlvbiB1c2luZyBzZXJ2aWNlCmNsaWVudCBBUEk8L2xpPgo8bGk+UHJvdmlkZSBwcm94eSBhdXRoZW50aWNhdGlvbiBzZXR0aW5ncyB1c2luZyBzZXJ2aWNlIGNsaWVudApvcHRpb25zPC9saT4KPC9vbD4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTVfMV9TcGVjaWZ5aW5nX1Byb3h5X1NldHRpbmdzX3dpdGhfQXV0aGVudGljYXRpb25faW5fYXhpczJfeG1sIj48L2E+CjxoMz4xNS4xIFNwZWNpZnlpbmcgUHJveHkgU2V0dGluZ3Mgd2l0aCBBdXRoZW50aWNhdGlvbiBpbgpheGlzMi54bWw8L2gzPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiZsdDt0cmFuc3BvcnRTZW5kZXIgbmFtZT0iaHR0cCIgY2xhc3M9ImF4aXMyX2h0dHBfc2VuZGVyIiZndDs8YnI+PC9icj4gJmx0O3BhcmFtZXRlciBuYW1lPSJQUk9UT0NPTCIgbG9ja2VkPSJmYWxzZSImZ3Q7SFRUUC8xLjEmbHQ7L3BhcmFtZXRlciZndDs8YnI+PC9icj4gJmx0O3BhcmFtZXRlciBuYW1lPSJQUk9YWSIgcHJveHlfaG9zdD0iMTI3LjAuMC4xIiBwcm94eV9wb3J0PSI4MDgwIiBwcm94eV91c2VybmFtZT0iIiBwcm94eV9wYXNzd29yZD0iIiBsb2NrZWQ9InRydWUiLyZndDs8YnI+PC9icj4mbHQ7L3RyYW5zcG9ydFNlbmRlciZndDs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxNV8yX1Byb3ZpZGluZ19Qcm94eV9TZXR0aW5nc193aXRoX0F1dGhlbnRpY2F0aW9uX1VzaW5nX1NlcnZpY2VfQ2xpZW50X0FQSSI+PC9hPgo8aDM+MTUuMiBQcm92aWRpbmcgUHJveHkgU2V0dGluZ3Mgd2l0aCBBdXRoZW50aWNhdGlvbiBVc2luZwpTZXJ2aWNlIENsaWVudCBBUEk8L2gzPgo8cD5Zb3UgY2FuIHNwZWNpZnkgcHJveHkgYXV0aGVudGljYXRpb24gc2V0dGluZ3MgdXNpbmcgdGhlCmZvbGxvd2luZyBmdW5jdGlvbiB3aXRoIHRoZQpzZXJ2aWNlIGNsaWVudDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfc3ZjX2NsaWVudF9zZXRfcHJveHlfd2l0aF9hdXRoKGF4aXMyX3N2Y19jbGllbnRfdCAqc3ZjX2NsaWVudCw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICplbnYsPGJyPjwvYnI+IGF4aXMyX2NoYXJfdCAqcHJveHlfaG9zdCw8YnI+PC9icj4gYXhpczJfY2hhcl90ICpwcm94eV9wb3J0LDxicj48L2JyPiBheGlzMl9jaGFyX3QgKnVzZXJuYW1lLDxicj48L2JyPiBheGlzMl9jaGFyX3QgKnBhc3N3b3JkKTs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxNV8zX1Byb3ZpZGluZ19Qcm94eV9BdXRoZW50aWNhdGlvbl9TZXR0aW5nc19Vc2luZ19TZXJ2aWNlX0NsaWVudF9PcHRpb25zIj48L2E+CjxoMz4xNS4zIFByb3ZpZGluZyBQcm94eSBBdXRoZW50aWNhdGlvbiBTZXR0aW5ncyBVc2luZyBTZXJ2aWNlCkNsaWVudCBPcHRpb25zPC9oMz4KPHA+WW91IGNhbiBzcGVjaWZ5IHByb3h5IGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzIHVzaW5nIHRoZQpmb2xsb3dpbmcgZnVuY3Rpb24gd2l0aCB0aGUKc2VydmljZSBjbGllbnQgb3B0aW9uczo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfb3B0aW9uc19zZXRfcHJveHlfYXV0aF9pbmZvKDxicj48L2JyPiBheGlzMl9vcHRpb25zX3QgKiBvcHRpb25zLDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKiBlbnYsPGJyPjwvYnI+IGNvbnN0IGF4aXMyX2NoYXJfdCAqIHVzZXJuYW1lLDxicj48L2JyPiBjb25zdCBheGlzMl9jaGFyX3QgKiBwYXNzd29yZCw8YnI+PC9icj4gY29uc3QgYXhpczJfY2hhcl90ICogYXV0aF90eXBlKTs8YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPkluIDxjb2RlPmF1dGhfdHlwZTwvY29kZT4sIHVzZSA8Yj5CYXNpYzwvYj4KdG8gZm9yY2UgQmFzaWMgQXV0aGVudGljYXRpb24gb3IgPGI+RGlnZXN0PC9iPiB0byBmb3JjZQpEaWdlc3QKQXV0aGVudGljYXRpb24uIExlYXZlIHRoaXMgZmllbGQgTlVMTCBpZiB5b3UgYXJlIG5vdCBmb3JjaW5nCmF1dGhlbnRpY2F0aW9uLjwvcD4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTVfNF9QcmVkZXRlcm1pbmluZ19Qcm94eV9BdXRoZW50aWNhdGlvbl9EZXRhaWxzIj48L2E+CjxoMz4xNS40IFByZWRldGVybWluaW5nIFByb3h5IEF1dGhlbnRpY2F0aW9uIERldGFpbHM8L2gzPgo8cD5Zb3UgY2FuIGFsc28gcHJlZGV0ZXJtaW5lIHdoZXRoZXIgcHJveHkgYXV0aGVudGljYXRpb24gaXMKcmVxdWlyZWQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gYmVsb3c6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX29wdGlvbnNfc2V0X3Rlc3RfcHJveHlfYXV0aCg8YnI+PC9icj4gYXhpczJfb3B0aW9uc190ICogb3B0aW9ucyw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICogZW52LDxicj48L2JyPiBjb25zdCBheGlzMl9ib29sX3QgdGVzdF9wcm94eV9hdXRoKTs8YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPlNldCA8Y29kZT50ZXN0X3Byb3h5X2F1dGg8L2NvZGU+IHRvIDxiPjxjb2RlPkFYSVMyX1RSVUU8L2NvZGU+PC9iPgp0byBlbmFibGUgdGVzdGluZy5XaGVuIHRlc3RpbmcgaXMgZW5hYmxlZCwgdGhlIHJlcXVlc3Qgd2lsbCBiZSBzZW50CndpdGhvdXQgd2l0aG91dCBhZGRpbmcgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uIElmIGl0IGZhaWxzLCBhbmQKcmVxdWVzdHMgQXV0aGVudGljYXRpb24gSW5mb3JtYXRpb24sIHRoZSByZXF1ZXN0IHR5cGUgb2YgYXV0aGVudGljYXRpb24Kd2lsbCBiZSBzYXZlZC4gVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgb2J0YWluZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX3N2Y19jbGllbnRfZ2V0X2F1dGhfdHlwZSg8YnI+PC9icj4gY29uc3QgYXhpczJfc3ZjX2NsaWVudF90ICogc3ZjX2NsaWVudCw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICogZW52KTs8YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPiBUaGlzIHdpbGwgcmV0dXJuIGVpdGhlciA8Yj5CYXNpYzwvYj4sIDxiPkRpZ2VzdDwvYj4Kb3IgPGI+TlVMTDwvYj4gYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIGF1dGhlbnRpYXRpb24KcmVxdWVzdGVkLiBJbiBhZGRpdGlvbiB0byB0aGF0LCBhZnRlciBlYWNoIHJlcXVlc3QgbWFkZSB0aHJvdWdoIHRoZQpzZXJ2aWNlIGNsaWVudCwgeW91IGNhbiBjaGVjayB3aGV0aGVyIGF1dGhlbnRpY2F0aW9uIHdhcyByZXF1aXJlZC48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfc3ZjX2NsaWVudF9nZXRfcHJveHlfYXV0aF9yZXF1aXJlZCg8YnI+PC9icj4gY29uc3QgYXhpczJfc3ZjX2NsaWVudF90ICogc3ZjX2NsaWVudCw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICogZW52KTs8YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPlBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgPGNvZGU+ZWNob19ibG9ja2luZ19hdXRoPC9jb2RlPgpzYW1wbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBtZXRob2RzIHRvIGlkZW50aWZ5CnByb3h5IEF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cy48L3A+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJodHRwX2F1dGgiPjwvYT48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iMTZfX1VzaW5nX0hUVFBfQXV0aGVudGljYXRpb25fU3VwcG9ydCI+PC9hPgo8aDI+MTYuIFVzaW5nIEhUVFAgQXV0aGVudGljYXRpb24gU3VwcG9ydDwvaDI+CjxwPldoZW4gdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbiwgdGhlcmUgYXJlIHR3byBtZXRob2RzIGZvcgpzcGVjaWZ5aW5nIHByb3h5CmF1dGhlbnRpY2F0aW9uIHNldHRpbmdzOjwvcD4KPG9sPgo8bGk+U3BlY2lmeSBIVFRQIGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzIGluIGF4aXMyLnhtbDwvbGk+CjxsaT5Qcm92aWRlIEhUVFAgYXV0aGVudGljYXRpb24gc2V0dGluZ3MgdXNpbmcgc2VydmljZSBjbGllbnQKb3B0aW9uczwvbGk+Cjwvb2w+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjE2XzFfU3BlY2lmeWluZ19IVFRQX0F1dGhlbnRpY2F0aW9uX1NldHRpbmdzX2luX2F4aXMyX3htbCI+PC9hPgo8aDM+MTYuMSBTcGVjaWZ5aW5nIEhUVFAgQXV0aGVudGljYXRpb24gU2V0dGluZ3MgaW4gYXhpczIueG1sPC9oMz4KPGRpdiBjbGFzcz0ic291cmNlIj4KPHByZT4mbHQ7dHJhbnNwb3J0U2VuZGVyIG5hbWU9Imh0dHAiIGNsYXNzPSJheGlzMl9odHRwX3NlbmRlciImZ3Q7PGJyPjwvYnI+ICZsdDtwYXJhbWV0ZXIgbmFtZT0iUFJPVE9DT0wiIGxvY2tlZD0iZmFsc2UiJmd0O0hUVFAvMS4xJmx0Oy9wYXJhbWV0ZXImZ3Q7PGJyPjwvYnI+ICZsdDtwYXJhbWV0ZXIgbmFtZT0iSFRUUC1BdXRoZW50aWNhdGlvbiIgdXNlcm5hbWU9InlvdXIgdXNlcm5hbWUiIHBhc3N3b3JkPSJ5b3VyIHBhc3N3b3JkIiBsb2NrZWQ9InRydWUiLyZndDs8YnI+PC9icj4mbHQ7L3RyYW5zcG9ydFNlbmRlciZndDs8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxNl8yX1Byb3ZpZGluZ19IVFRQX0F1dGhlbnRpY2F0aW9uX1NldHRpbmdzX1VzaW5nX1NlcnZpY2VfQ2xpZW50X09wdGlvbnMiPjwvYT4KPGgzPjE2LjIgUHJvdmlkaW5nIEhUVFAgQXV0aGVudGljYXRpb24gU2V0dGluZ3MgVXNpbmcgU2VydmljZQpDbGllbnQgT3B0aW9uczwvaDM+CjxwPllvdSBjYW4gc3BlY2lmeSBIVFRQIGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzIHVzaW5nIHRoZQpmb2xsb3dpbmcgZnVuY3Rpb24gd2l0aCB0aGUKc2VydmljZSBjbGllbnQgb3B0aW9uczo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfb3B0aW9uc19zZXRfaHR0cF9hdXRoX2luZm8oPGJyPjwvYnI+IGF4aXMyX29wdGlvbnNfdCAqIG9wdGlvbnMsPGJyPjwvYnI+IGNvbnN0IGF4dXRpbF9lbnZfdCAqIGVudiw8YnI+PC9icj4gY29uc3QgYXhpczJfY2hhcl90ICogdXNlcm5hbWUsPGJyPjwvYnI+IGNvbnN0IGF4aXMyX2NoYXJfdCAqIHBhc3N3b3JkLDxicj48L2JyPiBjb25zdCBheGlzMl9jaGFyX3QgKiBhdXRoX3R5cGUpOzxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+SW4gPGNvZGU+YXV0aF90eXBlPC9jb2RlPiwgdXNlIDxiPkJhc2ljPC9iPgp0byBmb3JjZSBIVFRQIEJhc2ljIEF1dGhlbnRpY2F0aW9uIG9yIDxiPkRpZ2VzdDwvYj4gdG8KZm9yY2UgSFRUUCBEaWdlc3QKQXV0aGVudGljYXRpb24uIExlYXZlIHRoaXMgZmllbGQgTlVMTCBpZiB5b3UgYXJlIG5vdCBmb3JjaW5nCmF1dGhlbnRpY2F0aW9uLjwvcD4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTZfM19QcmVkZXRlcm1pbmluZ19IVFRQX0F1dGhlbnRpY2F0aW9uX0RldGFpbHMiPjwvYT4KPGgzPjE2LjMgUHJlZGV0ZXJtaW5pbmcgSFRUUCBBdXRoZW50aWNhdGlvbiBEZXRhaWxzPC9oMz4KPHA+WW91IGNhbiBhbHNvIHByZWRldGVybWluZSB3aGV0aGVyIEhUVFAgYXV0aGVudGljYXRpb24gaXMKcmVxdWlyZWQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gYmVsb3c6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX29wdGlvbnNfc2V0X3Rlc3RfaHR0cF9hdXRoKDxicj48L2JyPiBheGlzMl9vcHRpb25zX3QgKiBvcHRpb25zLDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKiBlbnYsPGJyPjwvYnI+IGNvbnN0IGF4aXMyX2Jvb2xfdCB0ZXN0X2h0dHBfYXV0aCk7PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5TZXQgPGNvZGU+dGVzdF9odHRwX2F1dGg8L2NvZGU+IHRvIDxiPjxjb2RlPkFYSVMyX1RSVUU8L2NvZGU+PC9iPgp0byBlbmFibGUgdGVzdGluZy5XaGVuIHRlc3RpbmcgaXMgZW5hYmxlZCwgdGhlIHJlcXVlc3Qgd2lsbCBiZSBzZW50CndpdGhvdXQgd2l0aG91dCBhZGRpbmcgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uIElmIGl0IGZhaWxzLCBhbmQKcmVxdWVzdHMgQXV0aGVudGljYXRpb24gSW5mb3JtYXRpb24sIHRoZSByZXF1ZXN0IHR5cGUgb2YgYXV0aGVudGljYXRpb24Kd2lsbCBiZSBzYXZlZC4gVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgb2J0YWluZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmF4aXMyX3N2Y19jbGllbnRfZ2V0X2F1dGhfdHlwZSg8YnI+PC9icj4gY29uc3QgYXhpczJfc3ZjX2NsaWVudF90ICogc3ZjX2NsaWVudCw8YnI+PC9icj4gY29uc3QgYXh1dGlsX2Vudl90ICogZW52KTs8YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPiBUaGlzIHdpbGwgcmV0dXJuIGVpdGhlciA8Yj5CYXNpYzwvYj4sIDxiPkRpZ2VzdDwvYj4Kb3IgPGI+TlVMTDwvYj4gYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIGF1dGhlbnRpYXRpb24KcmVxdWVzdGVkLiBJbiBhZGRpdGlvbiB0byB0aGF0LCBhZnRlciBlYWNoIHJlcXVlc3QgbWFkZSB0aHJvdWdoIHRoZQpzZXJ2aWNlIGNsaWVudCwgeW91IGNhbiBjaGVjayB3aGV0aGVyIGF1dGhlbnRpY2F0aW9uIHdhcyByZXF1aXJlZC48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+YXhpczJfc3ZjX2NsaWVudF9nZXRfaHR0cF9hdXRoX3JlcXVpcmVkKDxicj48L2JyPiBjb25zdCBheGlzMl9zdmNfY2xpZW50X3QgKiBzdmNfY2xpZW50LDxicj48L2JyPiBjb25zdCBheHV0aWxfZW52X3QgKiBlbnYpOzxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+UGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSA8Y29kZT5lY2hvX2Jsb2NraW5nX2F1dGg8L2NvZGU+CnNhbXBsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZXNlIG1ldGhvZHMgdG8gaWRlbnRpZnkKSFRUUCBBdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMuPC9wPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0id3NkbDJjIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IjE3X19XU0RMMkNfVG9vbCI+PC9hPgo8aDI+MTcuIFdTREwyQyBUb29sPC9oMj4KPHA+V1NETDJDIHRvb2wgdGhhdCBjb21lcyB3aXRoIEF4aXMyL0phdmEgc3VwcG9ydHMgdGhlIGdlbmVyYXRpb24Kb2YgQXhpczIvQwpzdHVicyBhbmQgc2tlbGV0b25zIGZvciBXU0RMIGZpbGVzLiBUaGlzIGlzIGEgSmF2YSB0b29sIHRoYXQgY2FuIGJlCnVzZWQgdG8KZ2VuZXJhdGUgQyBjb2RlIHRoYXQgd29ya3Mgd2l0aCBBeGlzMi9DIEFQSS4gWW91IHNob3VsZCB1c2UgPGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy93ZWJzZXJ2aWNlcy9heGlzMi90cnVuay9qYXZhIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+QXhpczIvSmF2YQpTVk48L2E+IHJldmlzaW9uIDUyOTUzMyBvciBsYXRlciByZXZpc2lvbnMuIFlvdSBjYW4gZG93bmxvYWQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9wZW9wbGUuYXBhY2hlLm9yZy9kaXN0L2F4aXMyL25pZ2h0bHkvIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+QXhpczIvSmF2YQpuaWdodGx5CmJ1aWxkPC9hPiBhbmQgdXNlIHRob3NlIGJpbmFyaWVzIHRvIGdlbmVyYXRlIGNvZGUuIENoZWNrIG91dCBhIDxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyLzFfNF8xL3JlZmVyZW5jZS5odG1sI3dzZGwyamF2YSIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPmJhc2ljCmd1aWRlPC9hPiBvbiB0aGUgSmF2YSB0b29sLjwvcD4KPHA+QmVmb3JlIHlvdSBydW4gdGhlIHRvb2wsIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgLmphciBsaWJyYXJ5CmZpbGVzIHRoYXQKY29tZSB3aXRoIEF4aXMyL0phdmEgYXJlIGFkZGVkIHRvIHRoZSBDTEFTU1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuPC9wPgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxN18xX0dlbmVyYXRpbmdfU2VydmljZV9Ta2VsZXRvbnMiPjwvYT4KPGgzPjE3LjEgR2VuZXJhdGluZyBTZXJ2aWNlIFNrZWxldG9uczwvaDM+CjxwPlRoZSB0b29sIGNhbiBiZSBydW4gd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYW5kIGdlbmVyYXRlCnRoZSBzZXJ2aWNlCnNrZWxldG9uIGFuZCBvdGhlciByZXF1aXJlZCBmaWxlcyB3aXRoIEFEQiAoQXhpcyBEYXRhIEJpbmRpbmcpIHN1cHBvcnQuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmphdmEgb3JnLmFwYWNoZS5heGlzMi53c2RsLldTREwyQyAtdXJpIGludGVyb3B0ZXN0ZG9jbGl0cGFyYW1ldGVycy53c2RsIC1zcyAtc2QgLWQgYWRiIC11IDxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+VG8gdW5kZXJzdGFuZCB0aGUgbWVhbmluZ3Mgb2YgdGhlIG9wdGlvbnMgdXNlZCB3aXRoIHRoZSB0b29sLApwbGVhc2UgaGF2ZQphIGxvb2sgYXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyLzFfNF8xL3JlZmVyZW5jZS5odG1sI3dzZGwyamF2YSIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPiBKYXZhIHRvb2wKZG9jdW1lbnRhdGlvbjwvYT4uPC9wPgo8cD5JZiB5b3UgbmVlZCBhbiBYTUwgaW4vb3V0IHByb2dyYW1taW5nIG1vZGVsLCB5b3UgY2FuIGp1c3QKaWdub3JlIHRoZSBkYXRhCmJpbmRpbmcgc3VwcG9ydC4gVG8gZ2VuZXJhdGUgY29kZSB3aXRoIG5vIGRhdGEgYmluZGluZyBzdXBwb3J0LCBqdXN0CnJlcGxhY2UKPGNvZGU+LWQgYWRiIC11PC9jb2RlPiwgdGhhdCB3YXMgdXNlZCBpbiBhIHByZXZpb3VzCmNvbW1hbmQsIHdpdGggPGNvZGU+LWQKbm9uZTwvY29kZT4uPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmphdmEgb3JnLmFwYWNoZS5heGlzMi53c2RsLldTREwyQyAtdXJpIGludGVyb3B0ZXN0ZG9jbGl0cGFyYW1ldGVycy53c2RsIC1zcyAtc2QgLWQgbm9uZTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+VGhlIFdTREwgZmlsZSwgPGNvZGU+aW50ZXJvcHRlc3Rkb2NsaXRwYXJhbWV0ZXJzLndzZGw8L2NvZGU+LAp1c2VkIGluIHRoZQphYm92ZSBjb21tYW5kIGV4YW1wbGVzIGNhbiBiZSBmb3VuZCBpbgombHQ7YXhpczJfc3JjX2RpciZndDsvdGVzdC9yZXNvdXJjZXMKZGlyZWN0b3J5LjwvcD4KPHA+T25jZSB0aGUgY29kZSBpcyBnZW5lcmF0ZWQsIHlvdSBoYXZlIHRvIGltcGxlbWVudCB0aGUgYnVzaW5lc3MKbG9naWMgZm9yCnRoZSBzZXJ2aWNlLiBGb3IgdGhpcywgbG9jYXRlIHRoZSBza2VsZXRvbiBzb3VyY2UgZmlsZSBmcm9tIHRoZQpnZW5lcmF0ZWQKZmlsZXMuIFRvIGlkZW50aWZ5IHRoZSBsb2NhdGlvbnMgd2hlcmUgeW91IGNhbiBwbGFjZSB5b3VyIGJ1c2luZXNzCmxvZ2ljIGluCmxpbmUgd2l0aCB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGluIHRoZSBXU0RMIGZpbGUgdGhhdCB5b3UgdXNlZCB0bwpnZW5lcmF0ZQpjb2RlLCBsb29rIGZvciB0aGUgY29tbWVudCBsaW5lczo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+LyogVG9kbyBmaWxsIHRoaXMgd2l0aCB0aGUgbmVjZXNzYXJ5IGJ1c2luZXNzIGxvZ2ljICovPC9wcmU+CjwvZGl2Pgo8cD5Zb3UgY2FuIGFsc28gZ28gdGhyb3VnaCB0aGUgZ2VuZXJhdGVkIGhlYWRlciBmaWxlcyBhbmQKdW5kZXJzdGFuZCB0aGUgQVBJIGluCmxpbmUgd2l0aCB0aGUgV1NETCBmaWxlIHRoYXQgeW91IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUuCjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjE3XzJfR2VuZXJhdGluZ19DbGllbnRfU3R1YnMiPjwvYT4KPGgzPjE3LjIgR2VuZXJhdGluZyBDbGllbnQgU3R1YnM8L2gzPgo8cD5UaGUgV1NETDJDIGNvZGUgZ2VuZXJhdG9yIHRvb2wgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZwpjbGllbnQKc3R1YnMgYXMgd2VsbC4gWW91IGNhbiBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgc3R1YnMgZnJvbSBhIGdpdmVuIFdTREwKd2l0aCB0aGUKb3RoZXIgc3VwcG9ydGluZyBmaWxlcy4gVXNlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIHRvIGdlbmVyYXRlIHRoZQpBeGlzMi9DCmNsaWVudCBzdHViIGNvZGUgd2l0aCBBREIgc3VwcG9ydC48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+amF2YSBXU0RMMkMgLXVyaSBpbnRlcm9wdGVzdGRvY2xpdHBhcmFtZXRlcnMud3NkbCAtZCBhZGIgLXU8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPkluIG9yZGVyIHRvIGlnbm9yZSB0aGUgZGF0YSBiaW5kaW5nIHN1cHBvcnQgYW5kIHVzZSBhIHJhdyBYTUwKaW4vb3V0Cm1vZGVsLCBqdXN0IHVzZSB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPmphdmEgV1NETDJDIC11cmkgaW50ZXJvcHRlc3Rkb2NsaXRwYXJhbWV0ZXJzLndzZGwgLWQgbm9uZTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+TGlrZSBpbiB0aGUgY2FzZSBvZiBzZXJ2aWNlIHNrZWxldG9ucywgeW91IGhhdmUgdG8gZmlsbCBpbiB0aGUKYnVzaW5lc3MKbG9naWMgYXMgcmVxdWlyZWQgaW4gdGhlIGNsaWVudCBzdHVicyBhcyB3ZWxsLiBUbyBkbyB0aGlzLCBnbyB0aHJvdWdoCnRoZQpoZWFkZXIgZmlsZXMgZ2VuZXJhdGVkIGFuZCB1bmRlcnN0YW5kIHRoZSBBUEkgaW4gbGluZSB3aXRoIHRoZSBXU0RMCmZpbGUgdGhhdAp5b3UgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29kZS48L3A+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJ0Y3B0cmFucyI+PC9hPjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj48YSBuYW1lPSIxOF9fVENQX1RyYW5zcG9ydCI+PC9hPgo8aDI+MTguIFRDUCBUcmFuc3BvcnQ8L2gyPgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxOF8xX0J1aWxkaW5nX0FYSVMyQ19lbmFibGluZ19UQ1AiPjwvYT4KPGgzPjE4LjEgQnVpbGRpbmcgQVhJUzJDIGVuYWJsaW5nIFRDUDwvaDM+CjxwPlRoaXMgc2VjdGlvbiB3aWxsIGd1aWRlIHlvdSB0aHJvdWdoIGluc3RhbGxpbmcgQXhpczJDIHdpdGggdGNwCmVuYWJsZWQsIGFuZCB0aGlzIGFsc28gaW5jbHVkZXMgaG93IHRvIHRlc3QgaXQgYnkgcnVubmluZyBzYW1wbGVzLgpQbGVhc2Ugbm90ZSB0aGF0IGJvdGggdGhlIFNlcnZlciBhbmQgdGhlIENsaWVudCBtdXN0IGJlIGJ1aWx0IHdpdGggVENQCmVuYWJsZWQuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMThfMV8xX0xpbnV4X0Jhc2VkX1N5c3RlbXMiPjwvYT4KPGgzPjE4LjEuMSBMaW51eCBCYXNlZCBTeXN0ZW1zPC9oMz4KPG9sPgo8bGk+V2hlbiB5b3UgYXJlIGluc3RhbGxpbmcsIHlvdSBoYXZlIHRvIHVzZSB0aGUgY29uZmlndXJlCmNvbW1hbmQgd2l0aAp0aGUgb3B0aW9uIHRvIGVuYWJsZSB0Y3AgYnkgcHJvdmlkaW5nIHRoZSBmb2xsb3dpbmcgYXJndW1lbnQ6PC9saT4KPHByZT4JLi9jb25maWd1cmUgLS1lbmFibGUtdGNwPXllczxicj48L2JyPgltYWtlPGJyPjwvYnI+CW1ha2UgaW5zdGFsbDwvcHJlPgo8bGk+VGhlbiB0byBjb25maXJtIHRoYXQgeW91IGhhdmUgc3VjY2Vzc2Z1bGx5IGJ1aWx0IHRoZSBzb3VyY2UKd2l0aCB0Y3AgZW5hYmxlZCB5b3UgY2FuIGNoZWNrIGluIHlvdXIgJEFYSVMyQ19IT01FL2xpYiBmb2xkZXIgZm9yCmZvbGxvd2luZyBmaWxlczo8L2xpPgo8cHJlPglsaWJheGlzMl90Y3Bfc2VuZGVyLnNvPGJyPjwvYnI+CWxpYmF4aXMyX3RjcF9yZWNpZXZlci5zbzwvcHJlPgo8bGk+VG8gc2V0dXAgdGhlIHRjcCB0cmFuc3BvcnQgc2VuZGVyLCB5b3UgaGF2ZSB0byBlZGl0IHRoZQpheGlzMi54bWwgYnkgdW5jb21tZW50aW5nIGZvbGxvd2luZyBlbnRyeTo8L2xpPgo8cHJlPgkmbHQ7dHJhbnNwb3J0U2VuZGVyIG5hbWU9InRjcCIgY2xhc3M9ImF4aXMyX3RjcF9zZW5kZXIiJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9IlBST1RPQ09MIiBsb2NrZWQ9ImZhbHNlIiZndDtUQ1AmbHQ7L3BhcmFtZXRlciZndDs8YnI+PC9icj4gJmx0Oy90cmFuc3BvcnRTZW5kZXImZ3Q7PC9wcmU+Cjwvb2w+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxOF8xXzJfTVNfV2luZG93c19CYXNlZF9TeXN0ZW1zIj48L2E+CjxoMz4xOC4xLjIgTVMgV2luZG93cyBCYXNlZCBTeXN0ZW1zPC9oMz4KPG9sPgo8bGk+V2hlbiB5b3UgYXJlIGluc3RhbGxpbmcsIHlvdSBoYXZlIHRvIHNldCB0aGUgY29uZmlndXJlCm9wdGlvbiB0byBlbmFibGUgdGNwCmJ5IHNwZWNpZnlpbmcgaW4gPGNvZGU+Y29uZmlndXJlLmluPC9jb2RlPjo8L2xpPgo8cHJlPiBXSVRIX1RDUCA9IDE8L3ByZT4KPGxpPlRoZW4gdG8gY29uZmlybSB0aGF0IHlvdSBoYXZlIHN1Y2Nlc3NmdWxseSBidWlsdCB0aGUgc291cmNlCndpdGggdGNwIGVuYWJsZWQgeW91IGNhbiBjaGVjayBpbiB5b3VyICVBWElTMkNfSE9NRSVcbGliIGZvbGRlciBmb3IKZm9sbG93aW5nIGZpbGVzOjwvbGk+CjxwcmU+CWF4aXMyX3RjcF9zZW5kZXIuZGxsPGJyPjwvYnI+IGF4aXMyX3RjcF9yZWNpZXZlci5kbGw8L3ByZT4KPGxpPlRvIHNldHVwIHRoZSB0Y3AgdHJhbnNwb3J0IHNlbmRlciwgeW91IGhhdmUgdG8gZWRpdCB0aGUKYXhpczIueG1sIGJ5IHVuY29tbWVudGluZyBmb2xsb3dpbmcgZW50cnk6PC9saT4KPHByZT4gJmx0O3RyYW5zcG9ydFNlbmRlciBuYW1lPSJ0Y3AiIGNsYXNzPSJheGlzMl90Y3Bfc2VuZGVyIiZndDs8YnI+PC9icj4gJmx0O3BhcmFtZXRlciBuYW1lPSJQUk9UT0NPTCIgbG9ja2VkPSJmYWxzZSImZ3Q7VENQJmx0Oy9wYXJhbWV0ZXImZ3Q7PGJyPjwvYnI+ICZsdDsvdHJhbnNwb3J0U2VuZGVyJmd0OzwvcHJlPgo8L29sPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMThfMl9TZXJ2ZXJfU2lkZSI+PC9hPgo8aDM+MTguMiBTZXJ2ZXIgU2lkZTwvaDM+Cjx1bD4KPGxpPlRvIHJ1biB0aGUgdGNwIHNlcnZlciBvbiBMaW51eCBiYXNlZCBzeXN0ZW1zLCB5b3UgaGF2ZSB0bwpzdGFydCB0aGUgdGNwCnNlcnZlciB3aGljaCBydW5zIGluIDkwOTEgYXMgaXRzIGRlZmF1bHQgcG9ydC48L2xpPgo8cHJlPgljZCAkQVhJUzJDX0hPTUUvYmluLzxicj48L2JyPgkuL2F4aXMyX3RjcF9zZXJ2ZXI8L3ByZT4KPGxpPlRvIHJ1biB0aGUgdGNwIHNlcnZlciBvbiBNUyBXaW5kb3dzIGJhc2VkIHN5c3RlbXMsIHlvdSBoYXZlCnRvIHN0YXJ0IHRoZSB0Y3Agc2VydmVyIGFzLDwvbGk+CjxwcmU+IGNkICVBWElTMkNfSE9NRSVcYmluPGJyPjwvYnI+IGF4aXMyX3RjcF9zZXJ2ZXIuZXhlPC9wcmU+CjwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxOF8yXzFfU2ltcGxlX0F4aXMyX1RDUF9TZXJ2ZXIiPjwvYT4KPGgzPjE4LjIuMSBTaW1wbGUgQXhpczIgVENQIFNlcnZlcjwvaDM+CjxwPlNpbXBsZSBBeGlzMiBUQ1AgU2VydmVyIGlzIHRoZSBpbmJ1aWx0IFRDUCBzZXJ2ZXIgb2YgQXhpczIvQy48YnI+PC9icj4KPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMThfMl8xXzFfTGludXhfQmFzZWRfU3lzdGVtcyI+PC9hPgo8aDM+MTguMi4xLjEgTGludXggQmFzZWQgU3lzdGVtczwvaDM+CjxwPlN5bm9wc2lzIDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+IGF4aXMyX3RjcF9zZXJ2ZXIgWy1wIFBPUlRdIFstdCBUSU1FT1VUXSBbLXIgUkVQT19QQVRIXSBbLWwgTE9HX0xFVkVMXSBbLWYgTE9HX0ZJTEVdIFstcyBMT0dfRklMRV9TSVpFXTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+WW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zIHdpdGggc2ltcGxlIGF4aXMgVENQIHNlcnZlci48L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+IC1wIFBPUlQgcG9ydCBudW1iZXIgdG8gdXNlLCBkZWZhdWx0IHBvcnQgaXMgOTA5MTxicj48L2JyPiAtciBSRVBPX1BBVEggcmVwb3NpdG9yeSBwYXRoLCBkZWZhdWx0IGlzIC4uLzxicj48L2JyPiAtdCBUSU1FT1VUIHNvY2tldCByZWFkIHRpbWVvdXQsIGRlZmF1bHQgaXMgMzAgc2Vjb25kczxicj48L2JyPiAtbCBMT0dfTEVWRUwgbG9nIGxldmVsLCBhdmFpbGFibGUgbG9nIGxldmVsczo8YnI+PC9icj4gMCAtIGNyaXRpY2FsIDEgLSBlcnJvcnMgMiAtIHdhcm5pbmdzPGJyPjwvYnI+IDMgLSBpbmZvcm1hdGlvbiA0IC0gZGVidWcgNS0gdXNlciA2IC0gdHJhY2U8YnI+PC9icj4gRGVmYXVsdCBsb2cgbGV2ZWwgaXMgNChkZWJ1ZykuPGJyPjwvYnI+IC1mIExPR19GSUxFIGxvZyBmaWxlLCBkZWZhdWx0IGlzICRBWElTMkNfSE9NRS9sb2dzL2F4aXMyLmxvZzxicj48L2JyPiBvciBheGlzMi5sb2cgaW4gY3VycmVudCBmb2xkZXIgaWYgQVhJUzJDX0hPTUUgbm90IHNldDxicj48L2JyPiAtcyBMT0dfRklMRV9TSVpFIE1heGltdW0gbG9nIGZpbGUgc2l6ZSBpbiBtZWdhIGJ5dGVzLCBkZWZhdWx0IG1heGltdW0gc2l6ZSBpcyAxTUIuPGJyPjwvYnI+IC1oIGRpc3BsYXkgdGhlIGhlbHAgc2NyZWVuLjxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+RXhhbXBsZSA6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiBheGlzMl90Y3Bfc2VydmVyIC1sIDMgLXAgODA4MCAtciAkQVhJUzJDX0hPTUUgLWYgL2Rldi9zdGRlcnI8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIxOF8yXzFfMl9NU19XaW5kb3dzX0Jhc2VkX1N5c3RlbXMiPjwvYT4KPGgzPjE4LjIuMS4yIE1TIFdpbmRvd3MgQmFzZWQgU3lzdGVtczwvaDM+CjxwPlN5bm9wc2lzIDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+IGF4aXMyX3RjcF9zZXJ2ZXIuZXhlIFstcCBQT1JUXSBbLXQgVElNRU9VVF0gWy1yIFJFUE9fUEFUSF0gWy1sIExPR19MRVZFTF0gWy1mIExPR19GSUxFXSBbLXMgTE9HX0ZJTEVfU0laRV08YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPllvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyB3aXRoIHNpbXBsZSBheGlzIFRDUCBzZXJ2ZXIuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiAtcCBQT1JUIHBvcnQgbnVtYmVyIHRvIHVzZSwgZGVmYXVsdCBwb3J0IGlzIDkwOTE8YnI+PC9icj4gLXIgUkVQT19QQVRIIHJlcG9zaXRvcnkgcGF0aCwgZGVmYXVsdCBpcyAuLi88YnI+PC9icj4gLXQgVElNRU9VVCBzb2NrZXQgcmVhZCB0aW1lb3V0LCBkZWZhdWx0IGlzIDMwIHNlY29uZHM8YnI+PC9icj4gLWwgTE9HX0xFVkVMIGxvZyBsZXZlbCwgYXZhaWxhYmxlIGxvZyBsZXZlbHM6PGJyPjwvYnI+IDAgLSBjcml0aWNhbCAxIC0gZXJyb3JzIDIgLSB3YXJuaW5nczxicj48L2JyPiAzIC0gaW5mb3JtYXRpb24gNCAtIGRlYnVnIDUtIHVzZXIgNiAtIHRyYWNlPGJyPjwvYnI+IERlZmF1bHQgbG9nIGxldmVsIGlzIDQoZGVidWcpLjxicj48L2JyPiAtZiBMT0dfRklMRSBsb2cgZmlsZSwgZGVmYXVsdCBpcyAlQVhJUzJDX0hPTUUlXGxvZ3NcYXhpczIubG9nPGJyPjwvYnI+IG9yIGF4aXMyLmxvZyBpbiBjdXJyZW50IGZvbGRlciBpZiBBWElTMkNfSE9NRSBub3Qgc2V0PGJyPjwvYnI+IC1zIExPR19GSUxFX1NJWkUgTWF4aW11bSBsb2cgZmlsZSBzaXplIGluIG1lZ2EgYnl0ZXMsIGRlZmF1bHQgbWF4aW11bSBzaXplIGlzIDFNQi48YnI+PC9icj4gLWggZGlzcGxheSB0aGUgaGVscCBzY3JlZW4uPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5FeGFtcGxlIDo8L3A+CjxkaXYgY2xhc3M9InNvdXJjZSI+CjxwcmU+IGF4aXMyX3RjcF9zZXJ2ZXIuZXhlIC1sIDMgLXAgODA4MCAtciAlQVhJUzJDX0hPTUUlIC1mIEM6XGxvZ3NcZXJyb3IubG9nPGJyPjwvYnI+PGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMThfM19DbGllbnRfU2lkZSI+PC9hPgo8aDM+MTguMyBDbGllbnQgU2lkZTwvaDM+Cjx1bD4KPGxpPkluIHlvdXIgc2VydmljZSBjbGllbnQgeW91IGhhdmUgdG8gZ2l2ZSB0aGUgZW5kIHBvaW50CmFkZHJlc3MgYWRkaW5nIHRjcCBhcyB0aGUgVVJJIFNjaGVtYSBuYW1lIGluIHRoZSBjbGllbnQncyBjb2RlLjwvbGk+CjxwcmU+dGNwOi8vW3NlcnZpY2VfaG9zdG5hbWVdOltzZXJ2aWNlX3BvcnRdL2F4aXMyL3NlcnZpY2VzL3lvdXJfc2VydmljZV9uYW1lPC9wcmU+CjxsaT5Zb3UgY2FuIHVzZSBUQ1BNb24gdG8gZmlndXJlIG91dCBob3cgdGhlIG1lc3NhZ2UgaXMKdHJhbnNmZXJyZWQgKHdpdGhvdXQgaGF2aW5nIGl0J3MgaHR0cCBoZWFkZXJzKSBhZnRlciB5b3UndmUgYnVpbHQKQXhpczJDIGVuYWJsaW5nIHRjcC48L2xpPgo8L3VsPgo8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGJyPjwvYnI+CjwvcD4KPHA+PGEgbmFtZT0iYW1xcHRyYW5zIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+MTkuIEFNUVAgVHJhbnNwb3J0PC9oMj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+CjxoMz4xOS4xIEJ1aWxkaW5nIEFYSVMyQyBlbmFibGluZyBBTVFQPC9oMz4KPHA+VGhpcyBzZWN0aW9uIHdpbGwgZ3VpZGUgeW91IHRocm91Z2ggaW5zdGFsbGluZyBBeGlzMkMgd2l0aApBTVFQCmVuYWJsZWQsIGFuZCB0aGlzIGFsc28gaW5jbHVkZXMgaG93IHRvIHRlc3QgaXQgYnkgcnVubmluZyBzYW1wbGVzLgpQbGVhc2Ugbm90ZSB0aGF0IGJvdGggdGhlIFNlcnZlciBhbmQgdGhlIENsaWVudCBtdXN0IGJlIGJ1aWx0IHdpdGggQU1RUAplbmFibGVkLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPgo8aDM+MTkuMS4xIExpbnV4IEJhc2VkIFN5c3RlbXM8L2gzPgo8b2w+CjxsaT5XaGVuIHlvdSBhcmUgaW5zdGFsbGluZywgeW91IGhhdmUgdG8gdXNlIHRoZSBjb25maWd1cmUKY29tbWFuZCB3aXRoCnRoZSBvcHRpb24gLS13aXRoLXFwaWQgYXMgZm9sbG93czwvbGk+CjxwcmU+IC4vY29uZmlndXJlIC0td2l0aC1xcGlkPXBhdGgvdG8vcXBpZCBob21lPGJyPjwvYnI+IG1ha2U8YnI+PC9icj4gbWFrZSBpbnN0YWxsPC9wcmU+CjxsaT5UaGVuIHRvIGNvbmZpcm0gdGhhdCB5b3UgaGF2ZSBzdWNjZXNzZnVsbHkgYnVpbHQgdGhlIHNvdXJjZQp3aXRoIEFNUVAgZW5hYmxlZCB5b3UgY2FuIGNoZWNrIGluIHlvdXIgJEFYSVMyQ19IT01FL2xpYiBmb2xkZXIgZm9yCmZvbGxvd2luZyBmaWxlczo8L2xpPgo8cHJlPiBsaWJheGlzMl9xbXFwX3NlbmRlci5zbzxicj48L2JyPiBsaWJheGlzMl9hbXFwX3JlY2lldmVyLnNvPC9wcmU+CjxsaT5UbyBzZXR1cCB0aGUgQU1RUCB0cmFuc3BvcnQsIHlvdSBoYXZlIHRvIGVkaXQgdGhlCmF4aXMyLnhtbCBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgZW50cmllczo8L2xpPgo8cHJlPiAmbHQ7dHJhbnNwb3J0UmVjZWl2ZXIgbmFtZT0iYW1xcCIgY2xhc3M9ImF4aXMyX2FtcXBfcmVjZWl2ZXIiJmd0Ozxicj48L2JyPiAmbHQ7cGFyYW1ldGVyIG5hbWU9InFwaWRfYnJva2VyX2lwIiBsb2NrZWQ9ImZhbHNlIiZndDsxMjcuMC4wLjEmbHQ7L3BhcmFtZXRlciZndDs8YnI+PC9icj4gJmx0O3BhcmFtZXRlciBuYW1lPSJxcGlkX2Jyb2tlcl9wb3J0IiBsb2NrZWQ9ImZhbHNlIiZndDs1NjcyJmx0Oy9wYXJhbWV0ZXImZ3Q7PGJyPjwvYnI+ICZsdDsvdHJhbnNwb3J0UmVjZWl2ZXImZ3Q7PGJyPjwvYnI+PGJyPjwvYnI+ICZsdDt0cmFuc3BvcnRTZW5kZXIgbmFtZT0iYW1xcCIgY2xhc3M9ImF4aXMyX2FtcXBfc2VuZGVyIi8mZ3Q7PC9wcmU+Cjwvb2w+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj4KPGgzPjE5LjEuMiBNUyBXaW5kb3dzIEJhc2VkIFN5c3RlbXM8L2gzPgpBeGlzMi9DIGRvZXMgbm90IHN1cHBvcnQgQU1RUCB0cmFuc3BvcnQgb24gV2luZG93cy4KPG9sPgo8L29sPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+CjxoMz4xOS4yIFNlcnZlciBTaWRlPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Ij48L3NwYW4+PC9oMz4KU3RhcnQgdGhlIFFwaWQgYnJva2VyIGFzIGZvbGxvd3MuPGJyPjwvYnI+Cjxicj48L2JyPgo8cHJlPiQgY2QgJHtRUElEX0hPTUV9L3NiaW48YnI+PC9icj4kIC4vcXBpZGQgLS1kYXRhLWRpciAuLzwvcHJlPgo8YnI+PC9icj4KU3RhcnQgdGhlIGF4aXMyX2FtcXBfc2VydmVyIGFzIGZvbGxvd3MuPGJyPjwvYnI+Cjxicj48L2JyPgo8cHJlPiQgY2QgJHtBWElTMkNfSE9NRX0vYmluPGJyPjwvYnI+JCAuL2F4aXMyX2FtcXBfc2VydmVyPGJyPjwvYnI+IDwvcHJlPgpZb3Ugc2hvdWxkIHNlZSB0aGUgbWVzc2FnZTxicj48L2JyPgqgoKCgoKCgoKCgoKCgoKCgoFN0YXJ0ZWQKU2ltcGxlIEF4aXMyIEFNUVAgU2VydmVyLi4uPGJyPjwvYnI+Cjxicj48L2JyPgpUaGlzIHdpbGwgY29ubmVjdCB0byB0aGUgUXBpZCBicm9rZXIgbGlzdGVuaW5nIG9uIDEyNy4wLjAuMTo1NjcyLiA8YnI+PC9icj4KVG8gc2VlIHRoZSBwb3NzaWJsZSBjb21tYW5kIGxpbmUgb3B0aW9ucyBydW48YnI+PC9icj4KPGJyPjwvYnI+CjxwcmU+JCAuL2F4aXMyX2FtcXBfc2VydmVyIC1oPGJyPjwvYnI+PC9wcmU+Cjxicj48L2JyPgpOT1RFIDogWW91IGhhdmUgdGhlIGZsZXhpYmlsaXR5IG9mIHN0YXJ0aW5nIHRoZSBRcGlkIGJyb2tlciBmaXJzdCBhbmQKdGhlbiBheGlzMl9hbXFwX3NlcnZlciBvciB2aXNlIHZlcnNhLjxicj48L2JyPgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj4KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsiPjwvZGl2Pgo8aDM+MTkuMi4xIFNpbXBsZSBBeGlzMiBBTVFQIFNlcnZlcjwvaDM+CjxwPlNpbXBsZSBBeGlzMiBBTVFQIFNlcnZlciBpcyB0aGUgaW5idWlsdCBBTVFQIHNlcnZlciBvZiBBeGlzMi9DLjxicj48L2JyPgo8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj4KPGgzPjE5LjIuMS4xIExpbnV4IEJhc2VkIFN5c3RlbXM8L2gzPgo8cD5TeW5vcHNpcyA6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiBheGlzMl9hbXFwX3NlcnZlciBbLWkgUVBJRF9CUk9LRVJfSVBdIFstcCBRUElEX0JST0tFUl9QT1JUXSBbLXIgUkVQT19QQVRIXSBbLWwgTE9HX0xFVkVMXSBbLWYgTE9HX0ZJTEVdIFstcyBMT0dfRklMRV9TSVpFXTxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+WW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zIHdpdGggc2ltcGxlIGF4aXMgQU1RUCBzZXJ2ZXIuPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiAtaSBJUCB3aGVyZSB0aGUgUXBpZCBicm9rZXIgaXMgcnVubmluZywgZGVmYXVsdCBJUCBpcyAxMjcuMC4wLjE8YnI+PC9icj4gLXAgUE9SVCBwb3J0IG51bWJlciB0aGUgUXBpZCBicm9rZXIgbGlzdGVucyBvbiwgZGVmYXVsdCBwb3J0IGlzIDU2NzI8YnI+PC9icj4gLXIgUkVQT19QQVRIIHJlcG9zaXRvcnkgcGF0aCwgZGVmYXVsdCBpcyAuLi88YnI+PC9icj4gLWwgTE9HX0xFVkVMIGxvZyBsZXZlbCwgYXZhaWxhYmxlIGxvZyBsZXZlbHM6PGJyPjwvYnI+IDAgLSBjcml0aWNhbCA8YnI+PC9icj4JMSAtIGVycm9ycyA8YnI+PC9icj4JMiAtIHdhcm5pbmdzPGJyPjwvYnI+IDMgLSBpbmZvcm1hdGlvbiA8YnI+PC9icj4JNCAtIGRlYnVnIDxicj48L2JyPgk1LSB1c2VyIDxicj48L2JyPgk2IC0gdHJhY2U8YnI+PC9icj4gRGVmYXVsdCBsb2cgbGV2ZWwgaXMgNChkZWJ1ZykuPGJyPjwvYnI+IC1mIExPR19GSUxFIGxvZyBmaWxlLCBkZWZhdWx0IGlzICRBWElTMkNfSE9NRS9sb2dzL2F4aXMyLmxvZyBvciBheGlzMi5sb2cgaW4gY3VycmVudCBmb2xkZXIgaWYgQVhJUzJDX0hPTUUgbm90IHNldDxicj48L2JyPiAtcyBMT0dfRklMRV9TSVpFIE1heGltdW0gbG9nIGZpbGUgc2l6ZSBpbiBtZWdhIGJ5dGVzLCBkZWZhdWx0IG1heGltdW0gc2l6ZSBpcyAxTUIuPGJyPjwvYnI+IC1oIGRpc3BsYXkgdGhlIGhlbHAgc2NyZWVuLjxicj48L2JyPjxicj48L2JyPjwvcHJlPgo8L2Rpdj4KPHA+RXhhbXBsZSA6PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPiBheGlzMl9hbXFwX3NlcnZlciAtaSAxMjcuMC4wLjEgLXAgNTA1MCAtciAkQVhJUzJDX0hPTUUgLWYgL2Rldi9zdGRlcnI8YnI+PC9icj48YnI+PC9icj48L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj4KPGgzPjE5LjMgQ2xpZW50IFNpZGU8L2gzPgo8dWw+CjwvdWw+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij4KV2hlbiB0aGUgYXhpczJfYW1xcF9zZXJ2ZXIgaXMgdXAgYW5kIHJ1bm5pbmcsIHlvdSBjYW4gcnVuIHRoZSBzYW1wbGUKY2xpZW50cyBpbiBhIG5ldyBzaGVsbCBhcyBmb2xsb3dzLjxicj48L2JyPgo8YnI+PC9icj4KPC9wPgo8cHJlPiQgY2QgJHtBWElTMkNfSE9NRX0vc2FtcGxlcy9iaW4vYW1xcDxicj48L2JyPjxicj48L2JyPiQgLi9lY2hvX2Jsb2NraW5nPGJyPjwvYnI+PC9wcmU+ClRoaXMgd2lsbCBpbnZva2UgdGhlIGVjaG8gc2VydmljZS48YnI+PC9icj4KPGJyPjwvYnI+ClRvIHNlZSB0aGUgcG9zc2libGUgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHNhbXBsZSBjbGllbnRzIHJ1biB0aGVtCndpdGggJy1oJyBvcHRpb248YnI+PC9icj4KPHA+PGEgbmFtZT0iYXJjaGl2ZSI+PC9hPjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj48YSBuYW1lPSIxOV9fQXJjaGl2ZV9CYXNlZF9EZXBsb3ltZW50Ij48L2E+CjxoMj4yMC4gQXJjaGl2ZSBCYXNlZCBEZXBsb3ltZW50PC9oMj4KPHA+QXhpczIvQyBzdXBwb3J0cyB0d28gbWFpbiBkZXBsb3ltZW50IG1vZGVscyw8YnI+PC9icj4KPC9wPgo8b2w+CjxsaT5EaXJlY3RvcnkgQmFzZWQgRGVwbG95bWVudDwvbGk+CjxsaT5BcmNoaXZlIEJhc2VkIERlcGxveW1lbnQ8L2xpPgo8L29sPgpPdXIgZGlzY3Vzc2lvbiBpbiB0aGlzIHNlY3Rpb24gZm9jdXNlcyBvbiBob3cgdG8gc2V0dXAgYW5kIHVzZSBhcmNoaXZlCmJhc2VkIGRlcGxveW1lbnQgaW4gQXhpczIvQy4gQnkgZGVmYXVsdCwgQXhpczIvQyBtYXkgYmUgYnVpbHQgd2l0aG91dAplbmFibGluZyBhcmNoaXZlIGJhc2VkIGRlcGxveW1lbnQuIFRoZXJlZm9yZSwgZmlyc3QgYW5kIGZvcmVtb3N0IHlvdQp3aWxsIGhhdmUgdG8gbW9zdCBwcm9iYWJseSByZWJ1aWxkIGZyb20gc291cmNlLgo8cD5BbHNvLCBpdCBpcyByZXF1aXJlbWVudCB0aGF0IHlvdSBoYXZlIHpsaWIuIE1vc3QgTGludXggc3lzdGVtcwpkbyBoYXZlIHpsaWIgYnkgZGVmYXVsdCwgYnV0IHdvdWxkIHJlcXVpcmUgemxpYiBkZXZlbG9wbWVudCBwYWNrYWdlcy4KTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgPGEgaHJlZj0iaHR0cDovL3d3dy56bGliLm5ldC8iIGNsYXNzPSJleHRlcm5hbExpbmsiIHRpdGxlPSJFeHRlcm5hbCBMaW5rIj5oZXJlPC9hPi4KRm9yIE1TIFdpbmRvd3Mgc3lzdGVtcywgeW91IGNhbiBkb3dubG9hZCBpdCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly93d3cuemxhdGtvdmljLmNvbS9wdWIvbGlieG1sIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+aGVyZTwvYT4uPC9wPgo8cD5OZXh0LCB5b3Ugd2lsbCBoYXZlIHRvIGJ1aWxkIEF4aXMyL0MgZW5hYmxpbmcgQXJjaGl2ZSBCYXNlZApEZXBsb3ltZW50LiBPbiBMaW51eCwgeW91IG5lZWQgdG8gc2V0IHRoZSA8Y29kZT4tLXdpdGgtYXJjaGl2ZT1bcGF0aF90b196bGliX2hlYWRlcnNdPC9jb2RlPjwvcD4KPHA+RXhhbXBsZTogPGNvZGU+PGJyPjwvYnI+CiUuL2NvbmZpZ3VyZSAtLXdpdGgtYXJjaGl2ZT0vdXNyL2luY2x1ZGUvIC0tcHJlZml4PSR7QVhJUzJDX0hPTUV9L2RlcGxveTxicj48L2JyPgolbWFrZTxicj48L2JyPgolbWFrZSBpbnN0YWxsPGJyPjwvYnI+CjwvY29kZT48L3A+CjxwPk9uIE1TIFdpbmRvd3MsIHNldCA8Y29kZT5XSVRIX0FSQ0hJVkUgPSAxPC9jb2RlPgppbiB0aGUKPGNvZGU+Y29uZmlndXJlLmluPC9jb2RlPiBmaWxlIGFuZCBydW4gdGhlIDxjb2RlPm5tYWtlCmFsbDwvY29kZT4gY29tbWFuZC4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgaGF2ZSB0byBzcGVjaWZ5IHRoZQpkaXJlY3Rvcnkgd2hlcmUgeW91IGNhbiBmaW5kIHRoZSB6bGliIGJpbmFyeSwgZm9yIGEgTVMgV2luZG93cyBzeXN0ZW0uClRoaXMgY2FuIGJlIGRvbmUgYnkgc2V0dGluZyB0aGUgPGNvZGU+WkxJQl9CSU5fRElSPC9jb2RlPgppbiB0aGUKPGNvZGU+Y29uZmlndXJlLmluPC9jb2RlPiBmaWxlLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjE5XzFfRGVwbG95aW5nX1NlcnZpY2VzIj48L2E+CjxoMz4yMC4xIERlcGxveWluZyBTZXJ2aWNlczwvaDM+CjxwPk9uY2UgeW91IGhhdmUgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB0aGUgaW5zdGFsbGF0aW9uLCB5b3UKd2lsbCBoYXZlIHRvIGRlcGxveSBzZXJ2aWNlcyBhcyBhcmNoaXZlcyBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiB0aGlzCmRlcGxveW1lbnQgbW9kZWwuIFBsZWFzZSBub3RlIHRoYXQgZGlyZWN0b3J5IGJhc2VkIGRlcGxveW1lbnQgY2FuCmNvZXhpc3Qgd2l0aCB0aGUgYXJjaGl2ZSBiYXNlZCBkZXBsb3ltZW50IG1vZGVsLiBUaGVyZWZvcmUsIHlvdSBjYW4KYWx0ZXJuYXRpdmVseSB1c2UgZWl0aGVyIG9mIHRoZSB0d28uPC9wPgo8cD48L3A+CjxwPllvdSB3aWxsIG1lcmVseSBoYXZlIHRvIGFkZCB5b3VyIGV4aXN0aW5nIHNlcnZpY2UgbGlicmFyaWVzCmFuZCB0aGUgc2VydmljZXMueG1sIGZpbGUgaW50byBhbiBhcmNoaXZlLiBGb3IgZXhhbXBsZSwgaW4gb3JkZXIgdG8KZGVwbG95IHRoZSBzYW1wbGUgZWNobyBzZXJ2aWNlIGFzIGFuIGFyY2hpdmUsIHlvdSBjYW4gemlwIHRoZSBlY2hvCmZvbGRlciBmb3VuZCBpbiB0aGUgPGNvZGU+QVhJUzJDX0JJTl9ESVIvc2VydmljZXM8L2NvZGU+CmRpcmVjdG9yeS4gWW91IGNhbiBvcHRpb25hbGx5IHJlbmFtZSB5b3VyIHppcCBmaWxlLCB0byBoYXZlIHRoZSA8Y29kZT4uYWFyPC9jb2RlPgpleHRlbnNpb24uPC9wPgo8cD5QbGVhc2Ugbm90ZSB0aGF0IGFsbCBzdWNoIHNlcnZpY2VzIGRlcGxveWVkIGFzIGFyY2hpdmVzIHNob3VsZAphbHNvIGJlIHBsYWNlZCBpbnNpZGUgdGhlIDxjb2RlPkFYSVMyQ19CSU5fRElSL3NlcnZpY2VzPC9jb2RlPgpkaXJlY3RvcnkuIE5vdywgd2hlbiBldmVyIHlvdSBzdGFydCB5b3VyIFNpbXBsZSBBeGlzMiBTZXJ2ZXIsIG9yIGFueQpBeGlzMi9DIG1vZHVsZSBhdHRhY2hlZCB0byBhbnkgb3RoZXIgc2VydmVyLCB5b3VyIHNlcnZpY2VzIGRlcGxveWVkIGFzCmFyY2hpdmVzLCB3aWxsIGFsc28gZ2V0IGxvYWRlZC4KPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTlfMl9EZXBsb3lpbmdfTW9kdWxlcyI+PC9hPgo8aDM+MjAuMiBEZXBsb3lpbmcgTW9kdWxlczwvaDM+CjxwPlNpbWlsYXIgdG8gc2VydmljZXMsIHlvdSBhbHNvIGNhbiBkZXBsb3kgbW9kdWxlcyBhcyBhcmNoaXZlcy4KWW91IGFsc28gY2FuIG9wdGlvbmFsbHkgcmVuYW1lIHlvdXIgemlwIGZpbGVzIHRvIGhhdmUgdGhlIGV4dGVuc2lvbiwgPGNvZGU+Lm1hcjwvY29kZT4KYXMgaW4gc2VydmljZSBhcmNoaXZlcy48L3A+CjxwPllvdXIgbW9kdWxlIGFyY2hpdmVzIG11c3QgYmUgcGxhY2VkIGluIHRoZSA8Y29kZT5BWElTMkNfQklOX0RJUi9tb2R1bGVzPC9jb2RlPgpkaXJlY3RvcnkuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMTlfM19Lbm93bl9Jc3N1ZXMiPjwvYT4KPGgzPjIwLjMgS25vd24gSXNzdWVzPC9oMz4KPHA+UGxlYXNlIG5vdGUgdGhhdCB0aGVyZSBhcmUgYSBmZXcga25vd24gaXNzdWVzIHdoZW4gcnVubmluZwphcmNoaXZlIGJhc2VkIGRlcGxveW1lbnQsIG1haW5seSBvbiBMaW51eCBiYXNlZCBzeXN0ZW1zLjxicj48L2JyPgo8L3A+Cjx1bD4KPGxpPklmIHlvdSB3YW50IHRvIHJ1biBib3RoIGNsaWVudCBhbmQgc2VydmVyIGZyb20gc2FtZQpyZXNwb3NpdG9yeSwgYXNzaWduIHN1cGVyLXVzZXIgcHJpdmlsaWRlZ2VzIGZvciB5b3VyIHNlcnZlciBpbiBvcmRlciB0bwpwcmV2ZW50IHVuLXppcHBlZCBmaWxlcyBnZXR0aW5nIG92ZXJ3cml0dGVuLCB3aGljaCB3aWxsIGluIHJldHVybiBjYXVzZQphIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiB5b3VyIHNlcnZlci4KPHA+PC9wPgo8L2xpPgo8bGk+UGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiB5b3UgY2hvb3NlIHRvIGNyZWF0ZQphcmNoaXZlcyBwcmVzZXJ2ZXMgZXhlY3V0YWJsZSByaWdodHMsIGFuZCBzeW1ib2xpYyBsaW5rcyBvZiBsaWJyYXJpZXMKdGhhdCBhcmUgZm91bmQgaW5zaWRlIHRoZSBhcmNoaXZlLCBvbmNlIHVuemlwcGVkLjwvbGk+CjwvdWw+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJ0Y3Btb24iPjwvYT48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iMjBfX1RDUE1vbl9Ub29sIj48L2E+CjxoMj4yMS4gVENQTW9uIFRvb2w8L2gyPgo8cD5UQ1BNb24gaXMgYSBUQ1AgTW9uaXRvciB0b29sIHByb3ZpZGVkIGJ5IEF4aXMyL0MgZm9yCm1vbml0b3JpbmcgcGF5bG9hZHMgZXhjaGFuZ2VkIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIuIElmIHlvdSBhcmUKdXNpbmcgYSBzb3VyY2UgZGlzdHJpYnV0aW9uLCB0aGlzIG1heSBvciBtYXkgbm90IGJlIGJ1aWx0IGZvciB5b3UgYnkKZGVmYXVsdC4gVGh1cywgdG8gZ2V0IHN0YXJ0ZWQsIHlvdSBtYXkgcmVxdWlyZSBidWlsZGluZyBpdCBmcm9tIHNvdXJjZS48L3A+CjxwPk9uIExpbnV4PC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPgkuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke0FYSVMyQ19IT01FfSAtLWVuYWJsZS10ZXN0cz1ubzxicj48L2JyPgltYWtlPGJyPjwvYnI+PC9wcmU+CjwvZGl2Pgo8cD5PbiBNUyBXaW5kb3dzPC9wPgo8ZGl2IGNsYXNzPSJzb3VyY2UiPgo8cHJlPglubWFrZSB0Y3Btb248YnI+PC9icj48L3ByZT4KPC9kaXY+CjxwPlBsZWFzZSBub3RlIHRoYXQgaW4gbW9zdCBMaW51eCBiYXNlZCBpbnN0YWxsYXRpb25zLCB0aGlzIHdpbGwKbW9zdCBwcm9iYWJseSBiZSBidWlsdCBmb3IgeW91LiBPbmNlIHlvdSd2ZSBkb25lIHdpdGggdGhlIGJ1aWxkaW5nCnByb2Nlc3MsIHlvdSBjYW4gZmluZCB0aGUgZXhlY3V0YWJsZSBhdCA8Y29kZT4ke0FYSVMyQ19IT01FfS9iaW4vdG9vbHM8L2NvZGU+Cm9uIExpbnV4LCBvciBhdCA8Y29kZT4lQVhJUzJDX0hPTUUlXGJpblx0b29sczwvY29kZT4gb24gTVMKV2luZG93cy48L3A+CjxwPkJ5IGRlZmF1bHQsIHRoZSBUQ1BNb24gdG9vbCB3aWxsIGxpc3RlbiBvbiBwb3J0IDxiPjxjb2RlPjkwOTA8L2NvZGU+PC9iPgphbmQgcmVwbHkgdG8gcG9ydCA8Yj48Y29kZT44MDgwPC9jb2RlPjwvYj4uClRoZSBkZWZhdWx0IHRhcmdldCBob3N0IHdpbGwgYmUgPGI+PGNvZGU+bG9jYWxob3N0PC9jb2RlPjwvYj4KYW5kIDxiPjxjb2RlPnRjcG1vbl90cmFmZmljLmxvZzwvY29kZT48L2I+CndpbGwgYmUgdGhlIGRlZmF1bHQgbG9nX2ZpbGUuIElmIHlvdSB3YW50IHRvIGNoYW5nZSBhbnkgb2YgdGhlc2UKc2V0dGluZ3MgcnVuIC4vPGNvZGU+dGNwbW9uIC1oPC9jb2RlPiBvbiBMaW51eCwgb3IgPGNvZGU+dGNwbW9uLmV4ZQotaDwvY29kZT4gb24gTVMgV2luZG93cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi48L3A+CjxwPlRoZSBUQ1BNb24gdG9vbCBkb2VzIGRlcGVuZCBvbiB0aGUgQXhpczIvQyBVdGlsLCBBeGlzMi9DIEFYSU9NCmFuZCBBeGlzMi9DIFBhcnNlciBsaWJyYXJpZXMuIFRodXMsIGlmIHlvdSB3YW50IHRvIHVzZSBUQ1BNb24gdG8KbW9uaXRvciBwYXlsb2FkcyBpbiBhbnkgb3RoZXIgbWVzc2FnZSB0cmFuc2ZlciwgaW5kZXBlbmRhbnQgb2YgdGhlCkF4aXMyL0MgZW5naW5lLCB5b3Ugd2lsbCBoYXZlIHRvIGJ1aWxkIHRob3NlIGRlcGVuZGFudCBsaWJyYXJpZXMgdG9vLgpJbiBhZGRpdGlvbiB0byB0aGF0LCBUQ1BNb24gZG9lcyBub3QgZGVwZW5kIG9uIHRoZSBBeGlzMi9DIENvcmUgYW5kCmluc3RhbGxpbmcgdGhlIEF4aXMyL0MgZW5naW5lIGlzIG5vdCBhbHdheXMgYSBwcmUtcmVxdWlzaXRlIHRvIHJ1bgpUQ1BNb24uCjwvcD4KPHAgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxicj48L2JyPgo8L3A+CjxwPjxhIG5hbWU9ImFwcEEiPjwvYT48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iQXBwZW5kaXhfQV8tX2F4aXMyX3htbCI+PC9hPgo8aDI+QXBwZW5kaXggQSAtIGF4aXMyLnhtbDwvaDI+CjxwPlRoZSBheGlzMi54bWwgZmlsZSBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBBeGlzMi9DLiBJdApoYXMgNiB0b3AKbGV2ZWwgZWxlbWVudHMuIFRoZXkgYXJlIDxlbT5wYXJhbWV0ZXIsIHRyYW5zcG9ydFJlY2VpdmVyLAp0cmFuc3BvcnRTZW5kZXIsCm1vZHVsZSwgcGhhc2VPcmRlcjwvZW0+IGFuZCA8ZW0+bWVzc2FnZVJlY2VpdmVyPC9lbT4uClRoZSBmb2xsb3dpbmcgc2VjdGlvbnMKZGVzY3JpYmUgdGhlc2UgZWxlbWVudHMsIHRoZWlyIHN1YiBlbGVtZW50cywgZWxlbWVudCBhdHRyaWJ1dGVzLApwb3NzaWJsZQp2YWx1ZXMsIGFuZCB0aGVpciBwdXJwb3NlLjwvcD4KPHA+PGVtPjxzdHJvbmc+YXhpc2NvbmZpZzwvc3Ryb25nPjwvZW0+CmlzIHRoZSByb290IGVsZW1lbnQgb2YgYXhpczIueG1sCmZpbGUuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5BdHRyaWJ1dGU8L3RoPjx0aD5Qb3NzaWJsZSBWYWx1ZXM8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPm5hbWU8L3RkPjx0ZD5BeGlzMi9DPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9InBhcmFtZXRlciI+PC9hPgo8aDM+cGFyYW1ldGVyPC9oMz4KPHA+SW4gQXhpczIvQywgYSBwYXJhbWV0ZXIgaXMgYSBuYW1lIHZhbHVlIHBhaXIuIEVhY2ggYW5kIGV2ZXJ5CnRvcCBsZXZlbApwYXJhbWV0ZXIgYXZhaWxhYmxlIGluIHRoZSBheGlzMi54bWwgKGRpcmVjdCBzdWIgZWxlbWVudHMgb2YgdGhlIHJvb3QKZWxlbWVudCkgd2lsbCBiZSBzdG9yZWQgYXMgcGFyYW1ldGVycyBhcyA8Y29kZT5heGlzMl9jb25mPC9jb2RlPi4KVGhlcmVmb3JlLAp0aGUgdG9wIGxldmVsIHBhcmFtZXRlcnMgc2V0IGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgY2FuIGJlIGFjY2Vzc2VkCnZpYQp0aGUgPGNvZGU+YXhpczJfY29uZjwvY29kZT4gaW5zdGFuY2UgaW4gdGhlIHJ1bm5pbmcgc3lzdGVtLjwvcD4KPHA+U3ViIGVsZW1lbnRzIDotIG5vbmU8L3A+CjxwPkF0dHJpYnV0ZXMgOi0gbmFtZSwgbG9ja2VkPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+QXR0cmlidXRlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPm5hbWU8L3RkPjx0ZD5OYW1lIG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSB0YWJsZSBiZWxvdyBzaG93cyBwb3NzaWJsZQp2YWx1ZXMgb2YgdGhlIG5hbWUgYXR0cmlidXRlIGFuZCB0aGVpciBkZXNjcmlwdGlvbi4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPlZhbHVlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSBUZXh0IG9mIFBhcmFtZXRlciBFbGVtZW50PC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5lbmFibGVNVE9NPC90ZD48dGQ+RW5hYmxlIE1UT00gc3VwcG9ydCB3aGVuIHNlbmRpbmcgYmluYXJ5CmF0dGFjaG1lbnRzPC90ZD48dGQ+dHJ1ZSBvciBmYWxzZTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+ZW5hYmxlUkVTVDwvdGQ+PHRkPkVuYWJsZSBSRVNUIHN1cHBvcnQ8L3RkPjx0ZD50cnVlIG9yIGZhbHNlPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+bG9ja2VkPC90ZD48dGQ+SW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCBmcm9tIHRoZQpjb2RlLiBGb2xsb3dpbmcgYXJlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBsb2NrZWQgYXR0cmlidXRlLgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+VmFsdWU8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+dHJ1ZTwvdGQ+PHRkPlRoZSBwYXJhbWV0ZXIgY2Fubm90IGJlIGNoYW5nZWQgZnJvbSB0aGUgY29kZTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+ZmFsc2U8L3RkPjx0ZD5UaGUgcGFyYW1ldGVyIGNhbiBiZSBjaGFuZ2VkIGZyb20gdGhlIGNvZGUuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0idHJhbnNwb3J0UmVjZWl2ZXIiPjwvYT4KPGgzPnRyYW5zcG9ydFJlY2VpdmVyPC9oMz4KPHA+VGhpcyBlbGVtZW50IHNwZWNpZmllcyB0aGUgdHJhbnNwb3J0IHJlY2VpdmVyIGRldGFpbHMgaW4gYW4KSU4tT1VUIG1lc3NhZ2UKZXhjaGFuZ2Ugc2NlbmFyaW8uIFRoZSB1c2VycyBjYW4gY2hhbmdlIHRoZSB0cmFuc3BvcnQgcmVjZWl2ZXIgcG9ydCBhcwp0aGV5Cndpc2guPC9wPgo8cD5BdHRyaWJ1dGVzIDotIG5hbWUsIGNsYXNzPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+QXR0cmlidXRlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSBWYWx1ZXM8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPm5hbWU8L3RkPjx0ZD5TcGVjaWZpZXMgd2hpY2ggdHJhbnNwb3J0IHByb3RvY29sIGlzIHVzZWQ8L3RkPjx0ZD5odHRwICh3aGVuIHVzaW5nIEhUVFApPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5jbGFzczwvdGQ+PHRkPlNwZWNpZmllcyB0aGUgc2hhcmVkIGxpYnJhcnkgd2hpY2ggaW1wbGVtZW50cyB0aGUKdHJhbnNwb3J0IGludGVyZmFjZTwvdGQ+PHRkPk5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5Lgo8cD5FeGFtcGxlOi0gT24gTGludXggaWYgdGhlIHZhbHVlIGlzIGdpdmVuIGFzIDxlbT5mb288L2VtPgp0aGVuIHNoYXJlZCBsaWJyYXJ5IGlzIGxpYmZvby5zby48L3A+CjxwPk9uIE1TIFdpbmRvd3MsIDxlbT5mb28uZGxsPC9lbT4uPC9wPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PC9wPgo8cD5TdWIgZWxlbWVudHMgOi0gY2FuIGhhdmUgemVybyBvciBtb3JlIHBhcmFtZXRlciBlbGVtZW50cy48L3A+CjxwPjxicj48L2JyPgpUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHBvc3NpYmxlIHBhcmFtZXRlciB2YWx1ZXMuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+QXR0cmlidXRlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPm5hbWU8L3RkPjx0ZD5OYW1lIG9mIHRoZSBwYXJhbWV0ZXIuCjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5WYWx1ZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVGV4dCBvZiBQYXJhbWV0ZXIgRWxlbWVudDwvdGg+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+cG9ydDwvdGQ+PHRkPlRyYW5zcG9ydCBsaXN0ZW5lciBwb3J0PC90ZD48dGQ+SW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBwb3J0IG51bWJlcjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+ZXhwb3NlSGVhZGVyczwvdGQ+PHRkPldoZXRoZXIgVHJhbnNwb3J0IEhlYWRlcnMgYXJlIGV4cG9zZWQgdG8gYSBTZXJ2aWNlPC90ZD48dGQ+dHJ1ZS9mYWxzZTwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmxvY2tlZDwvdGQ+PHRkPndoZXRoZXIgdGhlIHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCBmcm9tIHRoZSBjb2RlCjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5WYWx1ZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD50cnVlPC90ZD48dGQ+UGFyYW1ldGVyIGNhbm5vdCBiZSBjaGFuZ2VkIGZyb20gdGhlIGNvZGU8L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmZhbHNlPC90ZD48dGQ+VGhlIHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCBmcm9tIHRoZSBjb2RlLjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PC9wPgo8cD48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSJ0cmFuc3BvcnRTZW5kZXIiPjwvYT4KPGgzPnRyYW5zcG9ydFNlbmRlcjwvaDM+CjxwPlRoaXMgZWxlbWVudCBzcGVjaWZpZXMgdGhlIHRyYW5zcG9ydCBzZW5kZXJzIHVzZWQgdG8gc2VuZAptZXNzYWdlcy48L3A+CjxwPkF0dHJpYnV0ZXMgOi0gbmFtZSwgY2xhc3M8L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5BdHRyaWJ1dGU8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PHRoPlBvc3NpYmxlIFZhbHVlczwvdGg+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+bmFtZTwvdGQ+PHRkPlNwZWNpZmllcyB3aGljaCB0cmFuc3BvcnQgcHJvdG9jb2wgaXMgdXNlZCB3aGVuIHNlbmRpbmcKbWVzc2FnZXM8L3RkPjx0ZD5odHRwKHdoZW4gdXNpbmcgaHR0cCk8L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmNsYXNzPC90ZD48dGQ+U3BlY2lmaWVzIHRoZSBzaGFyZWQgbGlicmFyeSB3aGljaCBpbXBsZW1lbnRzIHRoZQp0cmFuc3BvcnQgaW50ZXJmYWNlPC90ZD48dGQ+CjxwPk5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5LjwvcD4KPHA+RXhhbXBsZTotIE9uIExpbnV4IGlmIHRoZSB2YWx1ZSBpcyBnaXZlbiBhcyA8ZW0+Zm9vPC9lbT4KdGhlbiB0aGUgc2hhcmVkIGxpYnJhcnkgaXMgbGliZm9vLnNvLjwvcD4KPHA+T24gTVMgV2luZG93cywgPGVtPmZvby5kbGw8L2VtPi48L3A+CjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjxwPlN1YiBlbGVtZW50cyA6IGNhbiBoYXZlIHplcm8gb3IgbW9yZSBwYXJhbWV0ZXIgZWxlbWVudHMuPC9wPgo8cD48YnI+PC9icj4KVGhlIGZvbGxvd2luZyB0YWJsZSBzaG93cyBwb3NzaWJsZSBwYXJhbWV0ZXIgdmFsdWVzLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPkF0dHJpYnV0ZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5uYW1lPC90ZD48dGQ+VGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlZhbHVlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSB0ZXh0IG9mIHBhcmFtZXRlciBlbGVtZW50PC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5QUk9UT0NPTDwvdGQ+PHRkPlRyYW5zcG9ydCBwcm90b2NvbCB1c2VkPC90ZD48dGQ+UHJvdG9jb2wgdmVyc2lvbi4gRXhhbXBsZTotIEhUVFAgLzEuMSwgSFRUUC8xLjA8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5sb2NrZWQ8L3RkPjx0ZD5JbmRpY2F0ZXMgd2hldGhlciB0aGUgcGFyYW1ldGVyIGNhbiBiZSBjaGFuZ2VkIGZyb20gdGhlCmNvZGUuCjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5WYWx1ZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD50cnVlPC90ZD48dGQ+VGhlIHBhcmFtZXRlciBjYW5ub3QgYmUgY2hhbmdlZCBmcm9tIHRoZSBjb2RlPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5mYWxzZTwvdGQ+PHRkPlRoZSBwYXJhbWV0ZXIgY2FuIGJlIGNoYW5nZWQgZnJvbSB0aGUgY29kZS48L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9Im1vZHVsZSI+PC9hPgo8aDM+bW9kdWxlPC9oMz4KPHA+VGhpcyBlbGVtZW50IGlzIG9wdGlvbmFsLiBJdCBpcyB1c2VkIHdoZW4gYSBwYXJ0aWN1bGFyIG1vZHVsZQpuZWVkcyB0byBiZQplbmdhZ2VkIGdsb2JhbGx5IGZvciBldmVyeSBzZXJ2aWNlIGRlcGxveWVkIHdpdGggQXhpczIvQy48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5BdHRyaWJ1dGVzPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSBWYWx1ZXM8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPnJlZjwvdGQ+PHRkPlRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2hpY2ggaXMgdG8gYmUgZW5nYWdlZCBnbG9iYWxseS48L3RkPjx0ZD5OYW1lIG9mIHRoZSBtb2R1bGUuCjxwPkV4YW1wbGUgOiBhZGRyZXNzaW5nPC9wPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0icGhhc2VPcmRlciI+PC9hPgo8aDM+cGhhc2VPcmRlcjwvaDM+CjxwPlRoZSBvcmRlciBvZiBwaGFzZXMgaW4gYSBwYXJ0aWN1bGFyIGV4ZWN1dGlvbiBjaGFpbiBoYXMgdG8gYmUKY29uZmlndXJlZAp1c2luZyBwaGFzZU9yZGVyIGVsZW1lbnQuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+QXR0cmlidXRlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSBWYWx1ZXM8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPnR5cGU8L3RkPjx0ZD5UaGUgZmxvdyB0byB3aGljaCB0aGUgcGhhc2UgYmVsb25nczwvdGQ+PHRkPmluZmxvdwo8cD5vdXRmbG93PC9wPgo8cD5JTmZhdWx0ZmxvdzwvcD4KPHA+T3V0ZmF1bHRmbG93PC9wPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+QSBmbG93IGlzIGEgY29sbGVjdGlvbiBvZiBoYW5kbGVycyB3aGljaCBpcyBpbnZva2VkIGZvciBhCnBhcnRpY3VsYXIKbWVzc2FnZS4gVGhlIHR5cGVzIG9mIGZsb3dzIGFyZSBkZXNjcmliZWQgYmVsb3cuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+RmxvdzwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5pbmZsb3c8L3RkPjx0ZD5Db2xsZWN0aW9uIG9mIGhhbmRsZXJzIGludm9rZWQgZm9yIGEgbWVzc2FnZSBjb21pbmcgaW4KdG8gdGhlIHN5c3RlbS48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPm91dGZsb3c8L3RkPjx0ZD5Db2xsZWN0aW9uIG9mIGhhbmRsZXJzIGludm9rZWQgZm9yIGEgbWVzc2FnZSBnb2luZyBvdXQKb2YgdGhlIHN5c3RlbS48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPklOZmF1bHRmbG93PC90ZD48dGQ+Q29sbGVjdGlvbiBvZiBoYW5kbGVycyBpbnZva2VkIGZvciBhbiBpbmNvbWluZyBmYXVsdAptZXNzYWdlLjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+T3V0ZmF1bHRmbG93PC90ZD48dGQ+Q29sbGVjdGlvbiBvZiBoYW5kbGVycyBpbnZva2VkIGZvciBhbiBvdXRnb2luZyBmYXVsdAptZXNzYWdlLjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD5TdWIgZWxlbWVudHMgOiA8ZW0+cGhhc2U8L2VtPjogcmVwcmVzZW50cyB0aGUKYXZhaWxhYmxlIHBoYXNlcyBpbiB0aGUKZXhlY3V0aW9uIGNoYWluPC9wPgo8cD5UaGUgc3lzdGVtIHByZWRlZmluZWQgcGhhc2VzIGNhbm5vdCBiZSBjaGFuZ2VkLjwvcD4KPHA+VGhlIHN5c3RlbSBwcmVkZWZpbmVkIHBoYXNlcyBhcmUsPC9wPgo8dWw+CjxsaT5UcmFuc3BvcnQ8L2xpPgo8bGk+UHJlRGlzcGF0Y2g8L2xpPgo8bGk+RGlzcGF0Y2g8L2xpPgo8bGk+UG9zdERpc3BhdGNoPC9saT4KPGxpPk1lc3NhZ2VPdXQ8L2xpPgo8L3VsPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+QXR0cmlidXRlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSBWYWx1ZXM8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPm5hbWU8L3RkPjx0ZD5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIHBoYXNlPC90ZD48dGQ+VHJhbnNwb3J0LCBEaXNwYXRjaCwgUHJlRGlzcGF0Y2gsIFBvc3REaXNwYXRjaCwKTWVzc2FnZU91dAo8cD5Vc2VyIGRlZmluZWQgcGhhc2VzIChjYW4gaGF2ZSBhIHVzZXIgZGVmaW5lZCBuYW1lKTwvcD4KPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPlN1YiBlbGVtZW50cyBvZiBwaGFzZSBlbGVtZW50OiA8ZW0+aGFuZGxlcjwvZW0+PC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+QXR0cmlidXRlPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSBWYWx1ZXM8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPm5hbWU8L3RkPjx0ZD5TcGVjaWZpZXMgdGhlIGhhbmRsZXIgbmFtZS4gUGhhc2UgbWF5IGNvbnRhaW4gemVybyBvcgptb3JlIGhhbmRsZXJzLjwvdGQ+PHRkPkJhc2VkIG9uIHRoZSBoYW5kbGVyIG5hbWUuCjxwPkV4YW1wbGU6IEFkZHJlc3NpbmdiYXNlZERpc3BhdGNoZXIsClJlcXVlc3RVUkliYXNlZGRpc3BhdGNoZXI8L3A+CjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+Y2xhc3M8L3RkPjx0ZD5TcGVjaWZpZXMgdGhlIHNoYXJlZCBsaWJyYXJ5IHdoaWNoIGltcGxlbWVudHMgdGhlCmhhbmRsZXI8L3RkPjx0ZD4KPHA+TmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkuPC9wPgo8cD5FeGFtcGxlOiBPbiBMaW51eCwgaWYgdGhlIHZhbHVlIGlzIGdpdmVuIGFzIDxlbT5mb28sPC9lbT4KdGhlbiB0aGUgc2hhcmVkIGxpYnJhcnkgaXMgbGliZm9vLnNvLjwvcD4KPHA+T24gTVMgV2luZG93cywgPGVtPmZvby5kbGw8L2VtPi48L3A+CjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0ibWVzc2FnZVJlY2VpdmVyIj48L2E+CjxoMz5tZXNzYWdlUmVjZWl2ZXI8L2gzPgo8cD48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5BdHRyaWJ1dGU8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PHRoPlBvc3NpYmxlIFZhbHVlczwvdGg+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+bWVwPC90ZD48dGQ+TWVzc2FnZSBFeGNoYW5nZSBQYXR0ZXJuPC90ZD48dGQ+SU4tT1VULCBJTi1PTkxZPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5jbGFzczwvdGQ+PHRkPlNwZWNpZnkgdGhlIHNoYXJlZCBsaWJyYXJ5IHdoaWNoIGltcGxlbWVudHMgdGhlCnRyYW5zcG9ydCBpbnRlcmZhY2UuCjxwPklmIG5vdCBzcGVjaWZpZWQsIHRoZSBBeGlzMi9DIGRlZmF1bHQgbWVzc2FnZSByZWNlaXZlcgppcyB1c2VkLjwvcD4KPC90ZD48dGQ+TmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkuCjxwPkV4YW1wbGU6IE9uIExpbnV4LCBpZiB0aGUgdmFsdWUgaXMgZ2l2ZW4gYXMgPGVtPmZvbyw8L2VtPgp0aGVuIHRoZSBzaGFyZWQgbGlicmFyeSBpcyBsaWJmb28uc28uPC9wPgo8cD5PbiBNUyBXaW5kb3dzLCA8ZW0+Zm9vLmRsbDwvZW0+LjwvcD4KPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJhcHBCIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IkFwcGVuZGl4X0JfLV9zZXJ2aWNlc194bWwiPjwvYT4KPGgyPkFwcGVuZGl4IEIgLSBzZXJ2aWNlcy54bWw8L2gyPgo8cD5Db25maWd1cmF0aW9uIG9mIGEgc2VydmljZSBpcyBzcGVjaWZpZWQgdXNpbmcgYSBzZXJ2aWNlcy54bWwuCkVhY2ggc2VydmljZQpvciBzZXJ2aWNlIGFyY2hpdmUgZmlsZSBuZWVkcyB0byBoYXZlIGEgc2VydmljZXMueG1sIGluIG9yZGVyIHRvIGJlIGEKdmFsaWQKc2VydmljZS4gVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSB0aGUgZWxlbWVudHMgb2YgdGhlCnNlcnZpY2VzLnhtbApmaWxlLjwvcD4KPHA+SWYgc2VydmljZXMueG1sIGRlc2NyaWJlcyBhIHNpbmdsZSBzZXJ2aWNlLCB0aGUgcm9vdCBlbGVtZW50CmlzCjxlbT5zZXJ2aWNlPC9lbT4uIElmIGl0IGlzIGRlc2NyaWJpbmcgYSBzZXJ2aWNlIGdyb3VwLCB0aGVuCnRoZSByb290IGVsZW1lbnQKaXMgPGVtPnNlcnZpY2VHcm91cDwvZW0+LiBUaGU8ZW0+IHNlcnZpY2U8L2VtPgplbGVtZW50IHdpbGwgYmUgYSBjaGlsZAplbGVtZW50IG9mIHNlcnZpY2VHcm91cCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgc2VydmljZXMgc3BlY2lmaWVkIGluCnNlcnZpY2VzLnhtbC48L3A+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+QXR0cmlidXRlczwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWVzPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5uYW1lPC90ZD48dGQ+TmFtZSBvZiB0aGUgc2VydmljZSBvciBzZXJ2aWNlIGdyb3VwLjwvdGQ+PHRkPkRlcGVuZHMgb24gdGhlIHNlcnZpY2Ugb3IgdGhlIHNlcnZpY2UgZ3JvdXAuPGJyPjwvYnI+CkV4YW1wbGVzOiBlY2hvLCBzZ19tYXRoPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPgo8cD5UaGlzIGlzIG9wdGlvbmFsLiBUaGlzIGVsZW1lbnQgY2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlCnNlcnZpY2UgaW4gYQpodW1hbiByZWFkYWJsZSBmb3JtYXQuPC9wPgo8cD48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj4KPHA+VGhpcyBpcyBvcHRpb25hbC4gQ2FuIGJlIHVzZWQgdG8gZW5nYWdlIG1vZHVsZXMgYXQgc2VydmljZQpsZXZlbC48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5BdHRyaWJ1dGVzPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjx0aD5Qb3NzaWJsZSBWYWx1ZXM8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPnJlZjwvdGQ+PHRkPk5hbWUgb2YgdGhlIG1vZHVsZSB3aGljaCBpcyB0byBiZSBlbmdhZ2VkIGZvciB0aGUKc2VydmljZTwvdGQ+PHRkPk5hbWUgb2YgdGhlIG1vZHVsZSB3aGljaCBpcyB0byBiZSBlbmdhZ2VkIGF0IHNlcnZpY2UKbGV2ZWwuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+CjxwPlRoZSBzZXJ2aWNlIGVsZW1lbnQgY2FuIGhhdmUgYW55IG51bWJlciBvZiBwYXJhbWV0ZXJzIGFzIHN1YgplbGVtZW50cy48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5BdHRyaWJ1dGU8L3RoPjx0aD5EZXRhaWw8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPm5hbWU8L3RkPjx0ZD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWU8L3RoPjx0aD5QYXJhbWV0ZXIgVmFsdWU8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgdGhhdApob2xkcyB0aGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbjwvdGQ+PHRkPnNlcnZpY2VDbGFzczwvdGQ+PHRkPnRoZSBzZXJ2aWNlIG5hbWUuIEV4YW1wbGU6IGVjaG88L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPlBhdGggb2Ygc3RhdGljIFdTREwgdG8gYmUgYXR0YWNoZWQgd2l0aCBzZXJ2aWNlPC90ZD48dGQ+d3NkbF9wYXRoPC90ZD48dGQ+QWJzb2x1dGUgcGF0aCBvciBwYXRoIHJlbGF0aXZlIHRvIEFYSVMyQ19IT01FL2JpbjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+RGVmYXVsdCBIVFRQIE1ldGhvZCB1c2VkIGluIGEgUkVTVCBpbnZvY2F0aW9uPC90ZD48dGQ+ZGVmYXVsdFJFU1RNZXRob2Q8L3RkPjx0ZD5PbmUgb2YgR0VULCBQT1NULCBIRUFELCBQVVQgb3IgREVMRVRFPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+bG9ja2VkPC90ZD48dGQ+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5EZXNjcmlwdGlvbjwvdGg+PHRoPlBvc3NpYmxlIFZhbHVlPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5JbmRpY2F0ZXMgd2hldGhlciB0aGUgcGFyYW1ldGVyIGNhbiBiZSBjaGFuZ2VkCmZyb20gdGhlIGNvZGU8L3RkPjx0ZD50cnVlL2ZhbHNlPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj4KPHA+VGhlIG9wZXJhdGlvbnMgb2YgdGhlIHNlcnZpY2UgYXJlIHNwZWNpZmllZCB1c2luZyBvcGVyYXRpb24KZWxlbWVudHMuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+QXR0cmlidXRlczwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWVzPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5uYW1lPC90ZD48dGQ+bmFtZSBvZiB0aGUgb3BlcmF0aW9uPC90ZD48dGQ+RXhhbXBsZTogZWNob1N0cmluZzwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+bWVwPC90ZD48dGQ+bWVzc2FnZSBleGNoYW5nZSBwYXR0ZXJuIHVyaS4gPHA+VGhpcyBpcyBkZWZhdWx0ZWQgdG8gaW4tb3V0IE1FUC4gRm9yIG90aGVyIE1FUHMsIFlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIE1FUC48L3A+PC90ZD48dGQ+RXhhbXBsZTogImh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDgvd3NkbC9pbi1vbmx5IjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD5TdWIgZWxlbWVudHMgb2YgPGVtPm9wZXJhdGlvbjwvZW0+OiA8ZW0+cGFyYW1ldGVyPC9lbT4KZWxlbWVudHMgY2FuIGJlCnByZXNlbnQgYXMgc3ViIGVsZW1lbnRzLiBaZXJvIG9yIG1vcmUgcGFyYW1ldGVycyBtYXkgYmUgcHJlc2VudC48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5BdHRyaWJ1dGU8L3RoPjx0aD5EZXRhaWw8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPm5hbWU8L3RkPjx0ZD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWU8L3RoPjx0aD5QYXJhbWV0ZXIgVmFsdWU8L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPldTLUFkZHJlc3NpbmcgYWN0aW9uIG1hcHBpbmcgdG8gdGhlIG9wZXJhdGlvbjwvdGQ+PHRkPndzYW1hcHBpbmc8L3RkPjx0ZD5BIFVSTCByZXByZXNlbnRpbmcgdGhlIFdTLUFkZHJlc3NpbmcgYWN0aW9uCmNvcnJlc3BvbmRpbmcgdG8gdGhlIG9wZXJhdGlvbjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+UkVTVCB0ZW1wbGF0ZSBtYXBwaW5nIHRvIHRoZSBvcGVyYXRpb248L3RkPjx0ZD5SRVNUTG9jYXRpb248L3RkPjx0ZD5BIHRlbXBsYXRlIG9mIHRoZSBleHBlY3RlZCBVUkwgZm9yIHRoZSBvcGVyYXRpb24sCndpdGggY29tcHVsc2FyeSBwYXJ0cyBhbmQgb3B0aW9uYWwgcGFydHMsIHdlbGwgZGVmaW5lZDwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+SFRUUCBNZXRob2QgdXNlZCBpbiBhIFJFU1QgaW52b2NhdGlvbjwvdGQ+PHRkPlJFU1RNZXRob2Q8L3RkPjx0ZD5PbmUgb2YgR0VULCBQT1NULCBIRUFELCBQVVQgb3IgREVMRVRFPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD5BbHNvLCBhbiA8ZW0+b3BlcmF0aW9uPC9lbT4gZWxlbWVudCBjYW4gaGF2ZSBvbmUKb3IgbW9yZSA8ZW0+YWN0aW9uTWFwcGluZzwvZW0+IGVsZW1lbnQgYXMgc3ViIGVsZW1lbnRzLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWVzPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5BY3Rpb24gbWFwcGluZyBvciBhbiBhbGlhcyB0byBhbiBvcGVyYXRpb248L3RkPjx0ZD5FeGFtcGxlOiBlY2hvU3RyaW5nPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPgo8cD5BbiBvcGVyYXRpb24gc3BlY2lmaWMgbWVzc2FnZSByZWNlaXZlciBpcyBzcGVjaWZpZWQgZnJvbSB0aGlzLgpUaGlzIGlzCm9wdGlvbmFsLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPkF0dHJpYnV0ZXM8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PHRoPlBvc3NpYmxlIFZhbHVlczwvdGg+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+Y2xhc3M8L3RkPjx0ZD5TaGFyZWQgbGlicmFyeSB3aXRoIHRoZSBtZXNzYWdlIHJlY2VpdmVyIGltcGxlbWVudGF0aW9uPC90ZD48dGQ+TmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkuCjxwPkV4YW1wbGU6IE9uIExpbnV4LCBpZiB0aGUgdmFsdWUgaXMgZ2l2ZW4gYXMgPGVtPmZvbzwvZW0+LAp0aGVuIHRoZSBzaGFyZWQgbGlicmFyeSBpcyBsaWJmb28uc28uPC9wPgo8cD5PbiBNUyBXaW5kb3dzLCA8ZW0+Zm9vLmRsbDwvZW0+LjwvcD4KPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48YnI+PC9icj4KPC9wPgo8cD48YSBuYW1lPSJhcHBDIj48L2E+PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPjxhIG5hbWU9IkFwcGVuZGl4X0NfLV9tb2R1bGVfeG1sIj48L2E+CjxoMj5BcHBlbmRpeCBDIC0gbW9kdWxlLnhtbDwvaDI+CjxwPlRoZSBtb2R1bGUueG1sIGZpbGUgcHJvdmlkZXMgdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYQpwYXJ0aWN1bGFyCm1vZHVsZSBpbiBBeGlzMi9DLiBUaGUgdG9wIGxldmVsIGVsZW1lbnQgaXMgPGVtPm1vZHVsZTwvZW0+LjwvcD4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0ibW9kdWxlIj48L2E+CjxoMz5tb2R1bGU8L2gzPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+QXR0cmlidXRlczwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWVzPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5uYW1lPC90ZD48dGQ+TmFtZSBvZiB0aGUgbW9kdWxlPC90ZD48dGQ+RXhhbXBsZS0gYWRkcmVzc2luZzwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y2xhc3M8L3RkPjx0ZD5TcGVjaWZpZXMgdGhlIHNoYXJlZCBsaWJyYXJ5IHdoaWNoIGltcGxlbWVudHMgdGhlCm1vZHVsZS48L3RkPjx0ZD5OYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeS4KPHA+RXhhbXBsZS0gT24gTGludXgsIGlmIHRoZSB2YWx1ZSBpcyBnaXZlbiBhcyA8ZW0+Zm9vPC9lbT4sCnRoZW4gdGhlIHNoYXJlZCBsaWJyYXJ5IGlzIGxpYmZvby5zby48L3A+CjxwPk9uIE1TIFdpbmRvd3MsIDxlbT5mb28uZGxsPC9lbT4uPC9wPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PC9wPgo8cD5PdGhlciBlbGVtZW50cyBhcmUgY2hpbGQgZWxlbWVudHMgb2YgPGVtPm1vZHVsZTwvZW0+LjwvcD4KPHA+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0icGFyYW1ldGVyIj48L2E+CjxoMz5wYXJhbWV0ZXI8L2gzPgo8cD5BbnkgbnVtYmVyIG9mIHBhcmFtZXRlcnMgY2FuIGJlIHByZXNlbnQsIGRlcGVuZGluZyBvbiB0aGUKbW9kdWxlLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPkF0dHJpYnV0ZXM8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PHRoPlBvc3NpYmxlIFZhbHVlczwvdGg+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+bmFtZTwvdGQ+PHRkPk5hbWUgb2YgdGhlIHBhcmFtZXRlcjwvdGQ+PHRkPkRlcGVuZHMgb24gdGhlIG1vZHVsZTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+bG9ja2VkPC90ZD48dGQ+SW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCBmcm9tIHRoZQpjb2RlPC90ZD48dGQ+dHJ1ZSAtIGNhbm5vdCBiZSBjaGFuZ2VkCjxwPmZhbHNlIC0gY2FuIGJlIGNoYW5nZWQ8L3A+CjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSJEZXNjcmlwdGlvbiI+PC9hPgo8aDM+RGVzY3JpcHRpb248L2gzPgo8cD5EZXNjcmliZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBtb2R1bGUuIFRoaXMgZWxlbWVudCBpcyBvcHRpb25hbAphbmQgaGFzIG5vCmF0dHJpYnV0ZXMgb3Igc3ViIGVsZW1lbnRzLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9ImluZmxvdyI+PC9hPgo8aDM+aW5mbG93PC9oMz4KPHA+RW5jYXBzdWxhdGVzIGRldGFpbHMgYWRkZWQgdG8gdGhlIGluLWZsb3cgYnkgdGhlIG1vZHVsZS4gWmVybwpvciBvbmUKZWxlbWVudCBpcyBwb3NzaWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhbnkgYXR0cmlidXRlcy48L3A+CjxwPlN1YiBlbGVtZW50cyBvZiA8ZW0+aW5mbG93PC9lbT4gOiA8ZW0+aGFuZGxlcjwvZW0+LApjb250YWlucyBkZXRhaWxzIGFib3V0CnRoZSBtb2R1bGUgc3BlY2lmaWMgaGFuZGxlcnMgYWRkZWQgdG8gYSBwYXJ0aWN1bGFyIGZsb3cuIFplcm8gb3IgbW9yZQpoYW5kbGVycyBjYW4gYmUgYWRkZWQuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+QXR0cmlidXRlczwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWVzPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5uYW1lPC90ZD48dGQ+TmFtZSBvZiB0aGUgaGFuZGxlcjwvdGQ+PHRkPkRlcGVuZHMgb24gdGhlIGhhbmRsZXJzIGluIHRoZSBtb2R1bGUuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5jbGFzczwvdGQ+PHRkPlNwZWNpZmllcyB0aGUgc2hhcmVkIGxpYnJhcnkgd2hpY2ggaW1wbGVtZW50cyB0aGUKaGFuZGxlcjwvdGQ+PHRkPgo8cD5OYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeS48L3A+CjxwPkV4YW1wbGU6IE9uIExpbnV4LCBpZiB0aGUgdmFsdWUgaXMgZ2l2ZW4gYXMgPGVtPmZvbyw8L2VtPgp0aGVuIHRoZSBzaGFyZWQgbGlicmFyeSBpcyBsaWJmb28uc28uPC9wPgo8cD5PbiBNUyBXaW5kb3dzLCA8ZW0+Zm9vLmRsbDwvZW0+LjwvcD4KPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+c3ViIGVsZW1lbnRzIG9mIDxlbT5oYW5kbGVyPC9lbT4gOiA8ZW0+b3JkZXI8L2VtPiwKc3BlY2lmaWVzIHdoZXJlIHRvIHB1dAphIGhhbmRsZXIgaW4gYSBwYXJ0aWN1bGFyIHBoYXNlLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPkF0dHJpYnV0ZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48dGg+UG9zc2libGUgVmFsdWVzPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5waGFzZTwvdGQ+PHRkPlRoZSBuYW1lIG9mIHRoZSBwaGFzZSB0aGUgaGFuZGxlciBiZWxvbmdzIHRvPC90ZD48dGQ+ZGVwZW5kcyBvbiB0aGUgaGFuZGxlcjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+cGhhc2VMYXN0PC90ZD48dGQ+SW5kaWNhdGVzIHRoYXQgdGhlIGhhbmRsZXIgaXMgdGhlIGxhc3QgaGFuZGxlciBvZiB0aGUKcGhhc2U8L3RkPjx0ZD50cnVlPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5waGFzZUZpcnN0PC90ZD48dGQ+SW5kaWNhdGVzIHRoYXQgdGhlIGhhbmRsZXIgaXMgdGhlIGZpcnN0IGhhbmRsZXIgb2YgdGhlCnBoYXNlLjwvdGQ+PHRkPnRydWU8L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmJlZm9yZTwvdGQ+PHRkPkhhbmRsZXIgc2hvdWxkIGJlIGludm9rZWQgYmVmb3JlIHRoZSBoYW5kbGVyLCB3aGljaCBpcwpzcGVjaWZpZWQgYnkgdGhlIGJlZm9yZSBoYW5kbGVyPC90ZD48dGQ+aGFuZGxlciBuYW1lPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5hZnRlcjwvdGQ+PHRkPkhhbmRsZXIgc2hvdWxkIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGhhbmRsZXIsIHdoaWNoIGlzCnNwZWNpZmllZCBieSB0aGUgYWZ0ZXIgaGFuZGxlcjwvdGQ+PHRkPmhhbmRsZXIgbmFtZTwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD5Gcm9tIHRoZSBhYm92ZSBhdHRyaWJ1dGVzLCBwaGFzZSBpcyBjb21wdWxzb3J5LiBHaXZlbiBiZWxvdwphcmUKY29tYmluYXRpb25zIHBvc3NpYmxlIGZyb20gdGhlIG90aGVyIGZvdXIgYXR0cmlidXRlcy48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5Db21iaW5hdGlvbjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5waGFzZUxhc3Q8L3RkPjx0ZD5JbmRpY2F0ZXMgdGhhdCB0aGUgaGFuZGxlciBpcyB0aGUgbGFzdCBoYW5kbGVyIG9mIHRoZQpwaGFzZTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+cGhhc2VmaXJzdDwvdGQ+PHRkPkluZGljYXRlcyB0aGF0IHRoZSBoYW5kbGVyIGlzIHRoZSBmaXJzdCBoYW5kbGVyIG9mIHRoZQpwaGFzZS48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmJlZm9yZTwvdGQ+PHRkPkhhbmRsZXIgc2hvdWxkIGJlIGludm9rZWQgYmVmb3JlIHRoZSBoYW5kbGVyLCB3aGljaCBpcwpzcGVjaWZpZWQgYnkgdGhlIGJlZm9yZSBoYW5kbGVyPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5hZnRlcjwvdGQ+PHRkPkhhbmRsZXIgc2hvdWxkIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGhhbmRsZXIsIHdoaWNoIGlzCnNwZWNpZmllZCBieSB0aGUgYWZ0ZXIgaGFuZGxlcjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+YmVmb3JlICZhbXA7IGFmdGVyPC90ZD48dGQ+SGFuZGxlciBzaG91bGQgYmUgaW52b2tlZCBiZWZvcmUgdGhlIGhhbmRsZXIgc3BlY2lmaWVkCmJ5IHRoZSBiZWZvcmUgaGFuZGxlciwgYW5kCjxwPmFmdGVyIHRoZSBoYW5kbGVyIHNwZWNpZmllZCBieSB0aGUgYWZ0ZXIgaGFuZGxlci48L3A+CjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48ZW0+b3V0ZmxvdzwvZW0+LCA8ZW0+SU5mYXVsdGZsb3c8L2VtPiwKPGVtPk9VVGZhdWx0ZmxvdzwvZW0+IGVsZW1lbnRzCmhhdmUgdGhlIHNhbWUgc3ludGF4IGFzIHRoYXQgb2YgPGVtPmluZmxvdzwvZW0+LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9Im9wZXJhdGlvbiI+PC9hPgo8aDM+b3BlcmF0aW9uPC9oMz4KPHA+VGhpcyBpcyB1c2VkIHdoZW4gYSBtb2R1bGUgd2FudHMgdG8gYWRkIG9wZXJhdGlvbnMgdG8gYQpzZXJ2aWNlIHRoYXQKZW5nYWdlcyB0aGUgbW9kdWxlLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPkF0dHJpYnV0ZXM8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PHRoPlBvc3NpYmxlIFZhbHVlczwvdGg+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+bmFtZTwvdGQ+PHRkPk5hbWUgb2YgdGhlIG9wZXJhdGlvbiAoY29tcHVsc29yeSk8L3RkPjx0ZD5EZXBlbmRzIG9uIHRoZSBtb2R1bGU8L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPm1lcDwvdGQ+PHRkPk1lc3NhZ2UgRXhjaGFuZ2UgUGF0dGVybjwvdGQ+PHRkPklOLU9VVCwgSU4tT05MWTwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD5TdWIgZWxlbWVudHMgb2YgPGVtPm9wZXJhdGlvbjwvZW0+IDogQW55IG51bWJlcgpvZiBwYXJhbWV0ZXJzIGNhbiBiZQppbmNsdWRlZCBhcyBzdWIgZWxlbWVudHMgaW4gdGhlIG9wZXJhdGlvbiBlbGVtZW50LjwvcD4KPHA+VGhlIDxlbT5tZXNzYWdlUmVjZWl2ZXI8L2VtPiBwYXJhbWV0ZXIgc3BlY2lmaWVzCnRoZSBtZXNzYWdlIHJlY2VpdmVyIHRoZQptZXNzYWdlIGlzIGludGVuZGVkIGZvci4gSWYgaXQgaXMgbm90IHNldCwgdGhlIGRlZmF1bHQgbWVzc2FnZSByZWNlaXZlcgppcwp1c2VkLjwvcD4KPHAgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxicj48L2JyPgo8L3A+CjxwPjxhIG5hbWU9ImFwcEQiPjwvYT48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iQXBwZW5kaXhfRF8tX2F4aXMyX29wdGlvbnMiPjwvYT4KPGgyPkFwcGVuZGl4IEQgLSBheGlzMl9vcHRpb25zPC9oMj4KPHA+VGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB2YXJpb3VzIHR5cGVzIG9mIG9wdGlvbnMgdGhhdCBjYW4gYmUKc2V0IHdpdGgKPGNvZGU+YXhpczJfb3B0aW9uczwvY29kZT4uIFRoZXNlIG9wdGlvbnMgYXJlIHVzZWQgYnkgdGhlCnNlcnZpY2UgY2xpZW50CmJlZm9yZSBzZW5kaW5nIG1lc3NhZ2VzLjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9hY3Rpb24ob3B0aW9ucywgZW52LCBhY3Rpb24pPC9zdHJvbmc+PC9wPgo8cD5TZXRzIHRoZSBXUy1BZGRyZXNzaW5nIGFjdGlvbiB0aGF0IGlzIHRvIGJlIHNldCBpbiB0aGUKYWRkcmVzc2luZyBTT0FQCmhlYWRlcnMuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0PC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5jb25zdCBheHV0aWxfZW52X3QgKmVudjwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIGVudmlyb25tZW50IHN0cnVjdDwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+Y29uc3QgYXhpczJfY2hhcl90ICphY3Rpb248L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBhY3Rpb24gc3RyaW5nPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9mYXVsdF90byhvcHRpb25zLCBlbnYsCmZhdWx0X3RvKTwvc3Ryb25nPjwvcD4KPHA+U2V0cyB0aGUgZW5kIHBvaW50IHJlZmVyZW5jZSB3aGljaCBtYXkgcmVjZWl2ZSB0aGUgbWVzc2FnZSBpbgphIGNhc2Ugb2YgYQpTT0FQIGZhdWx0LjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+YXhpczJfZW5kcG9pbnRfcmVmX3QgKmZhdWx0X3RvPC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW5kcG9pbnQgcmVmZXJlbmNlIHN0cnVjdCByZXByZXNlbnRpbmcKdGhlIGZhdWx0IHRvIGFkZHJlc3MuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9mcm9tKG9wdGlvbnMsIGVudiwgZnJvbSk8L3N0cm9uZz48L3A+CjxwPlNvbWUgc2VydmljZXMgbmVlZCB0byBrbm93IHRoZSBzb3VyY2UgZnJvbSB3aGljaCB0aGUgbWVzc2FnZQpjb21lcy4gVGhpcwpvcHRpb24gc2V0cyB0aGUgZnJvbSBlbmRwb2ludDwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+YXhpczJfZW5kcG9pbnRfcmVmX3QgKmZyb208L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbmRwb2ludCByZWZlcmVuY2Ugc3RydWN0IHJlcHJlc2VudGluZwp0aGUgZnJvbSBhZGRyZXNzLjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48c3Ryb25nPmF4aXMyX29wdGlvbnNfc2V0X3RvKG9wdGlvbnMsIGVudiwgdG8pPC9zdHJvbmc+PC9wPgo8cD5TZXRzIHRoZSBlbmRwb2ludCByZWZlcmVuY2UgdGhlIG1lc3NhZ2UgaXMgZGVzdGluZWQgdG8uPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9lbmRwb2ludF9yZWZfdCAqdG88L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbmRwb2ludCByZWZlcmVuY2Ugc3RydWN0IHJlcHJlc2VudGluZwp0aGUgdG8gYWRkcmVzcy48L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF90cmFuc3BvcnRfcmVjZWl2ZXIob3B0aW9ucywKZW52LApyZWNlaXZlcik8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIHRyYW5zcG9ydCByZWNlaXZlciBpbiBhbiBPVVQtSU4gbWVzc2FnZSBleGNoYW5nZQpzY2VuYXJpby48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5QYXJhbWV0ZXI8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+YXhpczJfb3B0aW9uc190ICpvcHRpb25zPC90ZD48dGQ+UG9pbnRlciB0byB0aGUgb3B0aW9ucyBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5jb25zdCBheHV0aWxfZW52X3QgKmVudjwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIGVudmlyb25tZW50IHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX3RyYW5zcG9ydF9yZWNlaXZlcl90ICpyZWNlaXZlcjwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIHRyYW5zcG9ydCByZWNlaXZlciBzdHJ1Y3QuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjxzdHJvbmc+YXhpczJfb3B0aW9uc19zZXRfdHJhbnNwb3J0X2luKG9wdGlvbnMsIGVudiwKdHJhbnNwb3J0X2luKTwvc3Ryb25nPjwvcD4KPHA+U2V0cyB0aGUgdHJhbnNwb3J0LWluIGRlc2NyaXB0aW9uLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+YXhpczJfdHJhbnNwb3J0X2luX2Rlc2NfdCAqdHJhbnNwb3J0X2luPC90ZD48dGQ+UG9pbnRlciB0byB0aGUgdHJhbnNwb3J0X2luIHN0cnVjdC48L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PC9wPgo8cD48c3Ryb25nPmF4aXMyX29wdGlvbnNfc2V0X3RyYW5zcG9ydF9pbl9wcm90b2NvbChvcHRpb25zLAplbnYsCnRyYW5zcG9ydF9pbl9wcm90b2NvbCk8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIHRyYW5zcG9ydC1pbiBwcm90b2NvbC48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImEiPjx0aD5QYXJhbWV0ZXI8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+YXhpczJfb3B0aW9uc190ICpvcHRpb25zPC90ZD48dGQ+UG9pbnRlciB0byB0aGUgb3B0aW9ucyBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5jb25zdCBheHV0aWxfZW52X3QgKmVudjwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIGVudmlyb25tZW50IHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmNvbnN0IEFYSVMyX1RSQU5TUE9SVF9FTlVNUyB0cmFuc3BvcnRfaW5fcHJvdG9jb2w8L3RkPjx0ZD5UaGUgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHJhbnNwb3J0IHByb3RvY29sLjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjxwPjxzdHJvbmc+YXhpczJfb3B0aW9uc19zZXRfbWVzc2FnZV9pZChvcHRpb25zLCBlbnYsCm1lc3NhZ2VfaWQpPC9zdHJvbmc+PC9wPgo8cD5TZXRzIHRoZSBtZXNzYWdlIElELjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5UaGUgcG9pbnRlciB0byB0aGUgb3B0aW9ucyBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5jb25zdCBheHV0aWxfZW52X3QgKmVudjwvdGQ+PHRkPlRoZSBwb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9jaGFyX3QgKm1lc3NhZ2VfaWQ8L3RkPjx0ZD5UaGUgbWVzc2FnZSBJRCBzdHJpbmcuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9wcm9wZXJ0aWVzKG9wdGlvbnMsIGVudiwKcHJvcGVydGllcyk8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIHByb3BlcnRpZXMgaGFzaCBtYXAuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9oYXNoX3QgKnByb3BlcnRpZXM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBwcm9wZXJ0aWVzIGhhc2ggbWFwLjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjxwPjxzdHJvbmc+YXhpczJfb3B0aW9uc19zZXRfcHJvcGVydHkob3B0aW9ucywgZW52LCBrZXksCnByb3BlcnR5KTwvc3Ryb25nPjwvcD4KPHA+U2V0cyBhIHByb3BlcnR5IHdpdGggYSBnaXZlbiBrZXkgdmFsdWUuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9jaGFyX3QgKnByb3BlcnR5X2tleTwvdGQ+PHRkPlRoZSBwcm9wZXJ0eSBrZXkgc3RyaW5nLjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3Qgdm9pZCAqcHJvcGVydHk8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBwcm9wZXJ0eSB0byBiZSBzZXQuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9yZWxhdGVzX3RvKG9wdGlvbnMsIGVudiwKcmVsYXRlc190byk8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIHJlbGF0ZXMtdG8gbWVzc2FnZSBpbmZvcm1hdGlvbi48L3A+Cjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48Y2FwdGlvbj48L2NhcHRpb24+PHRib2R5Pgo8dHIgY2xhc3M9ImIiPjx0aD5QYXJhbWV0ZXI8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+YXhpczJfb3B0aW9uc190ICpvcHRpb25zPC90ZD48dGQ+UG9pbnRlciB0byB0aGUgb3B0aW9ucyBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheHV0aWxfZW52X3QgKmVudjwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIGVudmlyb25tZW50IHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmF4aXMyX3JlbGF0ZXNfdG9fdCAqcmVsYXRlc190bzwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIHJlbGF0ZXNfdG8gc3RydWN0LjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjxwPjxzdHJvbmc+YXhpczJfb3B0aW9uc19zZXRfcmVwbHlfdG8ob3B0aW9ucywgZW52LApyZXBseV90byk8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIHJlcGx5LXRvIGFkZHJlc3MsIHdoZW4gdGhlIGNsaWVudCB3YW50cyBhIHJlcGx5IHRvIGJlCnNlbnQgdG8gYQpkaWZmZXJlbnQgZW5kIHBvaW50LjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+YXhpczJfZW5kcG9pbnRfcmVmX3QgKnJlcGx5X3RvPC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW5kcG9pbnQgcmVmZXJlbmNlIHN0cnVjdCByZXByZXNlbnRpbmcKdGhlIHJlcGx5LXRvIGFkZHJlc3MuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF90cmFuc3BvcnRfb3V0KG9wdGlvbnMsIGVudiwKdHJhbnNwb3J0X291dCk8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIHRyYW5zcG9ydC1vdXQgZGVzY3JpcHRpb24uPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJiIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5heGlzMl90cmFuc3BvcnRfb3V0X2Rlc2NfdCAqdHJhbnNwb3J0X291dDwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIHRyYW5zcG9ydC1vdXQgZGVzY3JpcHRpb24gc3RydWN0LjwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjxwPjxzdHJvbmc+YXhpczJfb3B0aW9uc19zZXRfc2VuZGVyX3RyYW5zcG9ydChvcHRpb25zLCBlbnYsCnNlbmRlcl90cmFuc3BvcnQsCmNvbmYpPC9zdHJvbmc+PC9wPgo8cD5TZXRzIHRoZSBzZW5kZXIgdHJhbnNwb3J0LjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYiI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImEiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgQVhJUzJfVFJBTlNQT1JUX0VOVU1TIHNlbmRlcl90cmFuc3BvcnQ8L3RkPjx0ZD5UaGUgbmFtZSBvZiB0aGUgc2VuZGVyIHRyYW5zcG9ydCB0byBiZSBzZXQuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9jb25mX3QgKmNvbmY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBjb25mIHN0cnVjdC4gSXQgaXMgZnJvbSB0aGUgY29uZiB0aGF0CnRoZSB0cmFuc3BvcnQgaXMgcGlja2VkIHdpdGggdGhlIGdpdmVuIG5hbWUuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9zb2FwX3ZlcnNpb25fdXJpKG9wdGlvbnMsIGVudiwKc29hcF92ZXJzaW9uX3VyaSk8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIFNPQVAgdmVyc2lvbiBVUkkuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9jaGFyX3QgKnNvYXBfdmVyc2lvbl91cmk8L3RkPjx0ZD5VUkkgb2YgdGhlIFNPQVAgdmVyc2lvbiB0byBiZSBzZXQuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF90aW1lb3V0X2luX21pbGxpX3NlY29uZHMob3B0aW9ucywKZW52LAp0aW1lb3V0X2luX21pbGxpX3NlY29uZHMpPC9zdHJvbmc+PC9wPgo8cD5TZXRzIHRoZSB0aW1lIG91dCBpbiBtaWxsaSBzZWNvbmRzLiBUaGlzIGlzIHVzZWQgaW4KYXN5bmNocm9ub3VzIG1lc3NhZ2UKZXhjaGFuZ2Ugc2NlbmFyaW9zIHRvIHNwZWNpZnkgaG93IGxvbmcgdGhlIGNhbGwgYmFjayBvYmplY3QgaXMgdG8gd2FpdApmb3IKdGhlIHJlc3BvbnNlLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+Y29uc3QgbG9uZyB0aW1lb3V0X2luX21pbGxpX3NlY29uZHM8L3RkPjx0ZD5UaW1lb3V0IGluIG1pbGxpIHNlY29uZHMuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF90cmFuc3BvcnRfaW5mbyhvcHRpb25zLCBlbnYsCnNlbmRlcl90cmFuc3BvcnQsCnJlY2VpdmVyX3RyYW5zcG9ydCwgdXNlcl9zZXBhcmF0ZV9saXN0ZW5lcik8L3N0cm9uZz48L3A+CjxwPlNldHMgdGhlIHRyYW5zcG9ydCBpbmZvcm1hdGlvbi4gVHJhbnNwb3J0IGluZm9ybWF0aW9uIGluY2x1ZGVzCnRoZSBuYW1lIG9mCnRoZSBzZW5kZXIgdHJhbnNwb3J0LCBuYW1lIG9mIHRoZSByZWNlaXZlciB0cmFuc3BvcnQsIGFuZCB3aGV0aGVyIGEKc2VwYXJhdGUKbGlzdGVuZXIgaXMgdG8gYmUgdXNlZCB0byByZWNlaXZlIGEgcmVzcG9uc2UuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBBWElTMl9UUkFOU1BPUlRfRU5VTVMgc2VuZGVyX3RyYW5zcG9ydDwvdGQ+PHRkPk5hbWUgb2YgdGhlIHNlbmRlciB0cmFuc3BvcnQgdG8gYmUgdXNlZC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IEFYSVMyX1RSQU5TUE9SVF9FTlVNUyByZWNlaXZlcl90cmFuc3BvcnQ8L3RkPjx0ZD5OYW1lIG9mIHRoZSByZWNlaXZlciB0cmFuc3BvcnQgdG8gYmUgdXNlZC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmNvbnN0IGF4aXMyX2Jvb2xfdCB1c2Vfc2VwYXJhdGVfbGlzdGVuZXI8L3RkPjx0ZD5ib29sIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0byB1c2UgYSBzZXBhcmF0ZQpsaXN0ZW5lciBvciBub3QuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF91c2Vfc2VwYXJhdGVfbGlzdGVuZXIob3B0aW9ucywKZW52LAp1c2Vfc2VwYXJhdGVfbGlzdGVuZXIpPC9zdHJvbmc+PC9wPgo8cD5TZXRzIHRoZSBib29sIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0byB1c2UgYSBzZXBhcmF0ZQpsaXN0ZW5lciBvciBub3QuCkEgc2VwYXJhdGUgbGlzdGVuZXIgaXMgdXNlZCB3aGVuIHRoZSB0cmFuc3BvcnQgaXMgYSBvbmUtd2F5IHRyYW5zcG9ydAphbmQgdGhlCm1lc3NhZ2UgZXhjaGFuZ2UgcGF0dGVybiBpcyB0d28gd2F5LjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+Y29uc3QgYXhpczJfYm9vbF90IHVzZV9zZXBhcmF0ZV9saXN0ZW5lcjwvdGQ+PHRkPmJvb2wgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHVzZSBhIHNlcGFyYXRlCmxpc3RlbmVyIG9yIG5vdDwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48L3A+CjxwPjxzdHJvbmc+YXhpczJfb3B0aW9uc19zZXRfc29hcF92ZXJzaW9uKG9wdGlvbnMsIGVudiwKc29hcF92ZXJzaW9uKTwvc3Ryb25nPjwvcD4KPHA+U2V0cyB0aGUgU09BUCB2ZXJzaW9uLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+Y29uc3QgaW50IHNvYXBfdmVyc2lvbjwvdGQ+PHRkPlNPQVAgdmVyc2lvbiwgZWl0aGVyIEFYSU9NX1NPQVAxMSBvciBBWElPTV9TT0FQMTIuPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjxwPjwvcD4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9lbmFibGVfbXRvbShvcHRpb25zLCBlbnYsCmVuYWJsZV9tdG9tKTwvc3Ryb25nPjwvcD4KPHA+RW5hYmxlIG9yIGRpc2FibGUgTVRPTSBoYW5kbGluZyB3aGVuIHNlbmRpbmcgYmluYXJ5CmF0dGFjaG1lbnRzLjwvcD4KPHRhYmxlIGNsYXNzPSJib2R5VGFibGUiPjxjYXB0aW9uPjwvY2FwdGlvbj48dGJvZHk+Cjx0ciBjbGFzcz0iYSI+PHRoPlBhcmFtZXRlcjwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9vcHRpb25zX3QgKm9wdGlvbnM8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBvcHRpb25zIHN0cnVjdC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0iYSI+PHRkPmNvbnN0IGF4dXRpbF9lbnZfdCAqZW52PC90ZD48dGQ+UG9pbnRlciB0byB0aGUgZW52aXJvbm1lbnQgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJiIj48dGQ+YXhpczJfYm9vbF90IGVuYWJsZV9tdG9tPC90ZD48dGQ+QVhJUzJfVFJVRSBpZiBNVE9NIGlzIHRvIGJlIGVuYWJsZWQsIGVsc2UgQVhJUzJfRkFMU0U8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PC9wPgo8cD48c3Ryb25nPmF4aXMyX29wdGlvbnNfc2V0X2VuYWJsZV9yZXN0KG9wdGlvbnMsIGVudiwKZW5hYmxlX3Jlc3QpPC9zdHJvbmc+PC9wPgo8cD5FbmFibGUgb3IgZGlzYWJsZSBSRVNUIHN1cHBvcnQuPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5heGlzMl9ib29sX3QgZW5hYmxlX3Jlc3Q8L3RkPjx0ZD5BWElTMl9UUlVFIGlmIFJFU1QgaXMgdG8gYmUgZW5hYmxlZCwgZWxzZSBBWElTMl9GQUxTRTwvdGQ+PC90cj4KPC90Ym9keT48L3RhYmxlPgo8cD48c3Ryb25nPmF4aXMyX29wdGlvbnNfc2V0X2h0dHBfYXV0aF9pbmZvKG9wdGlvbnMsIGVudiwKdXNlcm5hbWUsIHBhc3N3b3JkLCBhdXRoX3R5cGUpPC9zdHJvbmc+PC9wPgo8cD5TZXRzIEhUVFAgQXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9jaGFyX3QgKnVzZXJuYW1lPC90ZD48dGQ+U3RyaW5nIHJlcHJlc2VudGluZyB1c2VybmFtZTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXhpczJfY2hhcl90ICpwYXNzd29yZDwvdGQ+PHRkPlN0cmluZyByZXByZXNlbnRpbmcgcGFzc3dvcmQuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9jaGFyX3QgKmF1dGhfdHlwZTwvdGQ+PHRkPnVzZSAiQmFzaWMiIHRvIGZvcmNlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIGFuZCAiRGlnZXN0Igp0byBmb3JjZSBkaWdlc3QgYXV0aGVudGljYXRpb24gb3IgTlVMTCBmb3Igbm90IGZvcmNpbmcgYXV0aGVudGljYXRpb248L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF9wcm94eV9hdXRoX2luZm8ob3B0aW9ucywgZW52LAp1c2VybmFtZSwgcGFzc3dvcmQsIGF1dGhfdHlwZSk8L3N0cm9uZz48L3A+CjxwPlNldHMgUHJveHkgQXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9jaGFyX3QgKnVzZXJuYW1lPC90ZD48dGQ+U3RyaW5nIHJlcHJlc2VudGluZyB1c2VybmFtZTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXhpczJfY2hhcl90ICpwYXNzd29yZDwvdGQ+PHRkPlN0cmluZyByZXByZXNlbnRpbmcgcGFzc3dvcmQuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9jaGFyX3QgKmF1dGhfdHlwZTwvdGQ+PHRkPnVzZSAiQmFzaWMiIHRvIGZvcmNlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIGFuZCAiRGlnZXN0Igp0byBmb3JjZSBkaWdlc3QgYXV0aGVudGljYXRpb24gb3IgTlVMTCBmb3Igbm90IGZvcmNpbmcgYXV0aGVudGljYXRpb248L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF90ZXN0X2h0dHBfYXV0aChvcHRpb25zLCBlbnYsCnRlc3RfaHR0cF9hdXRoKTwvc3Ryb25nPjwvcD4KPHA+RW5hYmxlcyB0ZXN0aW5nIG9mIEhUVFAgQXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9ib29sX3QgdGVzdF9odHRwX2F1dGg8L3RkPjx0ZD5ib29sIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0byB0ZXN0IG9yIG5vdCwKQVhJUzJfVFJVRSB0byBlbmFibGUsIEFYSVMyX0ZBTFNFIHRvIGRpc2FibGU8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPHA+PHN0cm9uZz5heGlzMl9vcHRpb25zX3NldF90ZXN0X3Byb3h5X2F1dGgob3B0aW9ucywgZW52LAp0ZXN0X3Byb3h5X2F1dGgpPC9zdHJvbmc+PC9wPgo8cD5FbmFibGVzIHRlc3Rpbmcgb2YgcHJveHkgQXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uPC9wPgo8dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PGNhcHRpb24+PC9jYXB0aW9uPjx0Ym9keT4KPHRyIGNsYXNzPSJhIj48dGg+UGFyYW1ldGVyPC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0ciBjbGFzcz0iYiI+PHRkPmF4aXMyX29wdGlvbnNfdCAqb3B0aW9uczwvdGQ+PHRkPlBvaW50ZXIgdG8gdGhlIG9wdGlvbnMgc3RydWN0LjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJhIj48dGQ+Y29uc3QgYXh1dGlsX2Vudl90ICplbnY8L3RkPjx0ZD5Qb2ludGVyIHRvIHRoZSBlbnZpcm9ubWVudCBzdHJ1Y3QuPC90ZD48L3RyPgo8dHIgY2xhc3M9ImIiPjx0ZD5jb25zdCBheGlzMl9ib29sX3QgdGVzdF9wcm94eV9hdXRoPC90ZD48dGQ+Ym9vbCB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gdGVzdCBvciBub3QsCkFYSVMyX1RSVUUgdG8gZW5hYmxlLCBBWElTMl9GQUxTRSB0byBkaXNhYmxlPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhciI+Cjxocj48L2hyPjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjbGVhciI+PGhyPjwvaHI+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj48ZGl2IGNsYXNzPSJ4cmlnaHQiPqkgMjAwNS0yMDA5LCBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbjwvZGl2PjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPgo=