FORMULARIO DE CONTACTO (BECAS)

“¡No dudes en consultarnos! Nos encantará resolver todas tus cuestiones, sin el menor compromiso”

PCEtLSBOb3RlIDoKICAgLSBZb3UgY2FuIG1vZGlmeSB0aGUgZm9udCBzdHlsZSBhbmQgZm9ybSBzdHlsZSB0byBzdWl0IHlvdXIgd2Vic2l0ZS4gCiAgIC0gQ29kZSBsaW5lcyB3aXRoIGNvbW1lbnRzIERvIG5vdCByZW1vdmUgdGhpcyBjb2RlIGFyZSByZXF1aXJlZCBmb3IgdGhlIGZvcm0gdG8gd29yayBwcm9wZXJseSwgbWFrZSBzdXJlIHRoYXQgeW91IGRvIG5vdCByZW1vdmUgdGhlc2UgbGluZXMgb2YgY29kZS4gCiAgIC0gVGhlIE1hbmRhdG9yeSBjaGVjayBzY3JpcHQgY2FuIG1vZGlmaWVkIGFzIHRvIHN1aXQgeW91ciBidXNpbmVzcyBuZWVkcy4gCiAgIC0gSXQgaXMgaW1wb3J0YW50IHRoYXQgeW91IHRlc3QgdGhlIG1vZGlmaWVkIGZvcm0gYmVmb3JlIGdvaW5nIGxpdmUuLS0+CjxkaXYgaWQ9J2NybVdlYlRvRW50aXR5Rm9ybScgY2xhc3M9J3pjd2ZfbGJsVG9wQm90dG9tIGNybVdlYlRvRW50aXR5Rm9ybScgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICM2NjdCOUE7Y29sb3I6ICNGRkZGRkY7bWF4LXdpZHRoOiAxMDAlOyc+CiAgPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAnPgogICA8TUVUQSBIVFRQLUVRVUlWID0nY29udGVudC10eXBlJyBDT05URU5UPSd0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCc+CiAgIDxmb3JtIGFjdGlvbj0naHR0cHM6Ly9jcm0uem9oby5jb20vY3JtL1dlYlRvTGVhZEZvcm0nIG5hbWU9V2ViVG9MZWFkczQ5MTg0MzAwMDA0MDA1MDEwNyBtZXRob2Q9J1BPU1QnIG9uU3VibWl0PSdqYXZhc2NyaXB0OmRvY3VtZW50LmNoYXJzZXQ9IlVURi04IjsgcmV0dXJuIGNoZWNrTWFuZGF0b3J5NDkxODQzMDAwMDQwMDUwMTA3KCknIGFjY2VwdC1jaGFyc2V0PSdVVEYtOCc+CiA8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J3huUXNqc2RwJyB2YWx1ZT0nNzNjMWM4MDZjOGFiMzEwYzZlZWIzMWM2MjRiYjMxY2FkOTEzNjNhMGE1YWZiZjhmOTM0YzA1ZTBiYjgwM2E4Nic+PC9pbnB1dD4gCiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd6Y19nYWQnIGlkPSd6Y19nYWQnIHZhbHVlPScnPjwvaW5wdXQ+IAogPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSd4bUl3dExEJyB2YWx1ZT0nMTc2NzJiOTU1N2NhZDdjMTgzODIxMWY5MDRkMTQzODgyZWRkYWZlOWZjZDM3ZTA2ZDQ4YTBhNjNjYTA5MjAzNCc+PC9pbnB1dD4gCiA8aW5wdXQgdHlwZT0ndGV4dCcgIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSdhY3Rpb25UeXBlJyB2YWx1ZT0nVEdWaFpITT0nPjwvaW5wdXQ+CiA8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J3JldHVyblVSTCcgdmFsdWU9J2h0dHBzJiN4M2E7JiN4MmY7JiN4MmY7d3d3LmljZXMtc3BhaW4uY29tJiN4MmY7Z3JhY2lhcy1wb3ItY29udGFjdGFyJiN4MmY7JyA+IDwvaW5wdXQ+CgkgPCEtLSBEbyBub3QgcmVtb3ZlIHRoaXMgY29kZS4gLS0+CjxzdHlsZT4KaHRtbCxib2R5ewoJbWFyZ2luOiAwcHg7Cn0KI2NybVdlYlRvRW50aXR5Rm9ybS56Y3dmX2xibFRvcEJvdHRvbSB7Cgl3aWR0aDoxMDAlOwoJcGFkZGluZzogMjVweDsKCW1hcmdpbjogMCBhdXRvOwoJYm94LXNpemluZzogYm9yZGVyLWJveDsKCWJvcmRlci1yYWRpdXM6IDMwcHg7Cn0KI2NybVdlYlRvRW50aXR5Rm9ybS56Y3dmX2xibFRvcEJvdHRvbSAqIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KI2NybVdlYlRvRW50aXR5Rm9ybXt0ZXh0LWFsaWduOiBsZWZ0O30KI2NybVdlYlRvRW50aXR5Rm9ybSAqIHsKCWRpcmVjdGlvbjogbHRyOwp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl90aXRsZSB7Cgl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CglwYWRkaW5nOiAwcHggNnB4IDEwcHg7Cglmb250LXdlaWdodDogYm9sZDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2ZsZCBpbnB1dFt0eXBlPXRleHRdLCAuemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2ZsZCB0ZXh0YXJlYSB7Cgl3aWR0aDogMTAwJTsKCWJvcmRlcjogMXB4IHNvbGlkICNjMGM2Y2MgIWltcG9ydGFudDsKCXJlc2l6ZTogdmVydGljYWw7Cglib3JkZXItcmFkaXVzOiAycHg7CglmbG9hdDogbGVmdDsKYmFja2dyb3VuZC1jb2xvcjogI0ZDRTY3RjsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2xhYiB7Cgl3aWR0aDogMzAlOwoJd29yZC1icmVhazogYnJlYWstd29yZDsKCXBhZGRpbmc6IDBweCA2cHggMHB4OwoJbWFyZ2luLXJpZ2h0OiAxMHB4OwoJbWFyZ2luLXRvcDogNXB4OwoJcGFkZGluZy1ib3R0b206IDRweDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2ZsZCB7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmc6IDBweCA2cHggMHB4OwoJcG9zaXRpb246IHJlbGF0aXZlOwoJbWFyZ2luLXRvcDogNXB4Owp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9wcml2YWN5e3BhZGRpbmc6IDZweDt9Ci56Y3dmX2xibFRvcEJvdHRvbSAud2ZybV9mbGRfZHBObntkaXNwbGF5OiBub25lO30KLmRJQntkaXNwbGF5OiBpbmxpbmUtYmxvY2s7fQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2ZsZF9zbHQgewoJd2lkdGg6IDEwMCU7Cglib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJYmFja2dyb3VuZDogI2ZmZjsKCWJvcmRlci1yYWRpdXM6IDRweDsKCWZvbnQtc2l6ZTogMTVweDsKCWZsb2F0OiBsZWZ0OwoJcmVzaXplOiB2ZXJ0aWNhbDsKCXBhZGRpbmc6IDJweCA1cHg7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX3JvdzphZnRlciwgLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NvbF9mbGQ6YWZ0ZXIgewoJY29udGVudDogJyc7CglkaXNwbGF5OiB0YWJsZTsKCWNsZWFyOiBib3RoOwp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9jb2xfaGVscCB7CglmbG9hdDogbGVmdDsKCW1hcmdpbi1sZWZ0OiA3cHg7Cglmb250LXNpemU6IDE1cHg7CgltYXgtd2lkdGg6IDM1JTsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2hlbHBfaWNvbiB7CgljdXJzb3I6IHBvaW50ZXI7Cgl3aWR0aDogMTZweDsKCWhlaWdodDogMTZweDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCWJhY2tncm91bmQ6ICNmZmY7Cglib3JkZXI6IDFweCBzb2xpZCAjYzBjNmNjOwoJY29sb3I6ICNjMWMxYzE7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cglmb250LXNpemU6IDExcHg7CglsaW5lLWhlaWdodDogMTZweDsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJYm9yZGVyLXJhZGl1czogNTAlOwp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9yb3cge21hcmdpbjogMTVweCAwcHg7fQouemN3Zl9sYmxUb3BCb3R0b20gLmZvcm1zdWJtaXQgewoJbWFyZ2luLXJpZ2h0OiA1cHg7CgljdXJzb3I6IHBvaW50ZXI7Cgljb2xvcjogdmFyKC0tYmFzZUNvbG9yKTsKCWZvbnQtc2l6ZTogMTVweDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfcHJpdmFjeV90eHQgewoJd2lkdGg6IDkwJTsKCWNvbG9yOiByZ2IoMCwgMCwgMCk7Cglmb250LXNpemU6IDE1cHg7Cglmb250LWZhbWlseTogVmVyZGFuYTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXZlcnRpY2FsLWFsaWduOiB0b3A7Cgljb2xvcjogdmFyKC0tYmFzZUNvbG9yKTsKCXBhZGRpbmctdG9wOiAycHg7CgltYXJnaW4tbGVmdDogNnB4Owp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9idXR0b24gewoJZm9udC1zaXplOiAxNXB4OwoJY29sb3I6ICMzMDVCOUE7Cglib3JkZXI6IDFweCBzb2xpZCAjYzBjNmNjOwoJcGFkZGluZzogM3B4IDlweDsKCWJvcmRlci1yYWRpdXM6IDRweDsKCWN1cnNvcjogcG9pbnRlcjsKCW1heC13aWR0aDogMTIwcHg7CglvdmVyZmxvdzogaGlkZGVuOwoJdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl90b29sdGlwX292ZXJ7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX3Rvb2x0aXBfY3RuewoJcG9zaXRpb246IGFic29sdXRlOwoJYmFja2dyb3VuZDogI2RlZGVkZTsKCXBhZGRpbmc6IDNweCA2cHg7Cgl0b3A6IDNweDsKCWJvcmRlci1yYWRpdXM6IDRweDt3b3JkLWJyZWFrOiBicmVhay13b3JkOwoJbWluLXdpZHRoOiAxMDBweDsKCW1heC13aWR0aDogMTUwcHg7Cgljb2xvcjogdmFyKC0tYmFzZUNvbG9yKTsKCXotaW5kZXg6IDEwMDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY2tib3h7CglmbG9hdDogbGVmdDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfZmlsZXsKCXdpZHRoOiAzNSU7Cglib3gtc2l6aW5nOiBib3JkZXItYm94OwoJZmxvYXQ6IGxlZnQ7Cn0KLmNsZWFyQjphZnRlcnsKCWNvbnRlbnQ6Jyc7CglkaXNwbGF5OiBibG9jazsKCWNsZWFyOiBib3RoOwp9CkBtZWRpYSBhbGwgIHsKCS56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9jb2xfbGFiLCAuemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2ZsZCB7CgkJd2lkdGg6IGF1dG87CgkJZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKCX0KCS56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9jb2xfaGVscCB7d2lkdGg6IDQwJTt9Cn0KPC9zdHlsZT4KPGRpdiBjbGFzcz0nemN3Zl9yb3cnPjxkaXYgY2xhc3M9J3pjd2ZfY29sX2xhYicgc3R5bGU9J2ZvbnQtc2l6ZToxNXB4OyBmb250LWZhbWlseTogVmVyZGFuYTsnPjxsYWJlbCBmb3I9J0NvbXBhbnknPk5vbWJyZSB5IGFwZWxsaWRvcyBkZWwgcHJvZ2VuaXRvci9hPHNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPio8L3NwYW4+PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9mbGQnPjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0nQ29tcGFueScgbmFtZT0nQ29tcGFueScgbWF4bGVuZ3RoPScyMDAnPjwvaW5wdXQ+PGRpdiBjbGFzcz0nemN3Zl9jb2xfaGVscCc+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9J3pjd2Zfcm93Jz48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9sYWInIHN0eWxlPSdmb250LXNpemU6MTVweDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Jz48bGFiZWwgZm9yPSdMYXN0X05hbWUnPk5vbWJyZSB5IGFwZWxsaWRvcyBkZWwgZXN0dWRpYW50ZTxzcGFuIHN0eWxlPSdjb2xvcjpyZWQ7Jz4qPC9zcGFuPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz0nemN3Zl9jb2xfZmxkJz48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J0xhc3RfTmFtZScgbmFtZT0nTGFzdCBOYW1lJyBtYXhsZW5ndGg9JzgwJz48L2lucHV0PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2hlbHAnPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSd6Y3dmX3Jvdyc+PGRpdiBjbGFzcz0nemN3Zl9jb2xfbGFiJyBzdHlsZT0nZm9udC1zaXplOjE1cHg7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyc+PGxhYmVsIGZvcj0nTEVBRENGODInPkZlY2hhIGRlIG5hY2ltaWVudG8gZGVsIGVzdHVkaWFudGU8c3BhbiBzdHlsZT0nY29sb3I6cmVkOyc+Kjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2ZsZCc+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdMRUFEQ0Y4MicgbmFtZT0nTEVBRENGODInIG1heGxlbmd0aD0nMjAnIGZ0eXBlPSdkYXRlJyBwbGFjZWhvbGRlcj0nREQvTU0vWVlZWScgdHBsaWQ9JzQ5MTg0MzAwMDA0MDA1MDEwN0xFQURDRjgyJyBvbmZvY3VzPSdmb3JtQ2FsZW5kZXIuc3RFdihldmVudCk7Zm9ybUNhbGVuZGVyLmNyZWF0ZUNhbGVuZGFyKHRoaXMpOycgYXV0b2NvbXBsZXRlPSdvZmYnPjwvaW5wdXQ+PGRpdiBpZD0ndGVtcGxhdGU0OTE4NDMwMDAwNDAwNTAxMDdMRUFEQ0Y4MicgIG9uY2xpY2s9J2Zvcm1DYWxlbmRlci5zdEV2KGV2ZW50KTsnICBjbGFzcz0ndGVtcENhbERpdic+PC9kaXY+PGRpdiBjbGFzcz0nemN3Zl9jb2xfaGVscCc+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9J3pjd2Zfcm93Jz48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9sYWInIHN0eWxlPSdmb250LXNpemU6MTVweDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Jz48bGFiZWwgZm9yPSdMRUFEQ0Y2Jz5FLW1haWw8c3BhbiBzdHlsZT0nY29sb3I6cmVkOyc+Kjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2ZsZCc+PGlucHV0IHR5cGU9J3RleHQnIGZ0eXBlPSdlbWFpbCcgaWQ9J0xFQURDRjYnIG5hbWU9J0xFQURDRjYnIG1heGxlbmd0aD0nMTAwJz48L2lucHV0PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2hlbHAnPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSd6Y3dmX3Jvdyc+PGRpdiBjbGFzcz0nemN3Zl9jb2xfbGFiJyBzdHlsZT0nZm9udC1zaXplOjE1cHg7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyc+PGxhYmVsIGZvcj0nTEVBRENGNTQnPlRlbMOpZm9ubzxzcGFuIHN0eWxlPSdjb2xvcjpyZWQ7Jz4qPC9zcGFuPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz0nemN3Zl9jb2xfZmxkJz48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J0xFQURDRjU0JyBuYW1lPSdMRUFEQ0Y1NCcgbWF4bGVuZ3RoPSc5Jz48L2lucHV0PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2hlbHAnPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSd6Y3dmX3Jvdyc+PGRpdiBjbGFzcz0nemN3Zl9jb2xfbGFiJyBzdHlsZT0nZm9udC1zaXplOjE1cHg7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyc+PGxhYmVsIGZvcj0nTEVBRENGMTIxJz5Qcm92aW5jaWE8c3BhbiBzdHlsZT0nY29sb3I6cmVkOyc+Kjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2ZsZCc+PHNlbGVjdCBjbGFzcz0nemN3Zl9jb2xfZmxkX3NsdCcgaWQ9J0xFQURDRjEyMScgbmFtZT0nTEVBRENGMTIxJyAgPgoJCQk8b3B0aW9uIHZhbHVlPSctTm9uZS0nPi1Ob25lLTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdBbGF2YSc+QWxhdmE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQWxiYWNldGUnPkFsYmFjZXRlPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0FsaWNhbnRlJz5BbGljYW50ZTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdBbG1lciZpYWN1dGU7YSc+QWxtZXImaWFjdXRlO2E8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQXN0dXJpYXMnPkFzdHVyaWFzPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0F2aWxhJz5BdmlsYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdCYWRham96Jz5CYWRham96PC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0JhcmNlbG9uYSc+QmFyY2Vsb25hPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0J1cmdvcyc+QnVyZ29zPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0NhY2VyZXMnPkNhY2VyZXM8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQ2FkaXonPkNhZGl6PC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0NhbnRhYnJpYSc+Q2FudGFicmlhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0Nhc3RlbGxvbic+Q2FzdGVsbG9uPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0NldXRhJz5DZXV0YTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdDaXVkYWQmI3gyMDtSZWFsJz5DaXVkYWQgUmVhbDwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdDb3Jkb2JhJz5Db3Jkb2JhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0N1ZW5jYSc+Q3VlbmNhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0dlcm9uYSc+R2Vyb25hPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0dyYW5hZGEnPkdyYW5hZGE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nR3VhZGFsYWphcmEnPkd1YWRhbGFqYXJhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0d1aXB1emNvYSc+R3VpcHV6Y29hPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0h1ZWx2YSc+SHVlbHZhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0h1ZXNjYSc+SHVlc2NhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0lzbGFzJiN4MjA7QmFsZWFyZXMnPklzbGFzIEJhbGVhcmVzPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0phZW4nPkphZW48L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nTGEmI3gyMDtDb3J1Jm50aWxkZTthJz5MYSBDb3J1Jm50aWxkZTthPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0xhJiN4MjA7UmlvamEnPkxhIFJpb2phPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0xhcyYjeDIwO1BhbG1hcyc+TGFzIFBhbG1hczwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdMZW9uJz5MZW9uPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0xsZWlkYSc+TGxlaWRhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0x1Z28nPkx1Z288L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nTWFkcmlkJz5NYWRyaWQ8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nTWFsYWdhJz5NYWxhZ2E8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nTWVsaWxsYSc+TWVsaWxsYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdNdXJjaWEnPk11cmNpYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdOYXZhcnJhJz5OYXZhcnJhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J09yZW5zZSc+T3JlbnNlPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1BhbGVuY2lhJz5QYWxlbmNpYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdQb250ZXZlZHJhJz5Qb250ZXZlZHJhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1NhbGFtYW5jYSc+U2FsYW1hbmNhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1NhbnRhJiN4MjA7Q3J1eiYjeDIwO2RlJiN4MjA7VGVuZXJpZmUnPlNhbnRhIENydXogZGUgVGVuZXJpZmU8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nU2Vnb3ZpYSc+U2Vnb3ZpYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdTZXZpbGxhJz5TZXZpbGxhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1NvcmlhJz5Tb3JpYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdUYXJyYWdvbmEnPlRhcnJhZ29uYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdUZXJ1ZWwnPlRlcnVlbDwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdUb2xlZG8nPlRvbGVkbzwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdWYWxlbmNpYSc+VmFsZW5jaWE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nVmFsbGFkb2xpZCc+VmFsbGFkb2xpZDwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdWaXpjYXlhJz5WaXpjYXlhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1phbW9yYSc+WmFtb3JhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1phcmFnb3phJz5aYXJhZ296YTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdPdHJvcyc+T3Ryb3M8L29wdGlvbj4KCQk8L3NlbGVjdD48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9oZWxwJz48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0nemN3Zl9yb3cnPjxkaXYgY2xhc3M9J3pjd2ZfY29sX2xhYicgc3R5bGU9J2ZvbnQtc2l6ZToxNXB4OyBmb250LWZhbWlseTogVmVyZGFuYTsnPjxsYWJlbCBmb3I9J0Rlc2NyaXB0aW9uJz5NZW5zYWplIG8gY29uc3VsdGE8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2ZsZCc+PHRleHRhcmVhIGlkPSdEZXNjcmlwdGlvbicgbmFtZT0nRGVzY3JpcHRpb24nPjwvdGV4dGFyZWE+PGRpdiBjbGFzcz0nemN3Zl9jb2xfaGVscCc+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nemN3Zl9yb3cnPjxkaXYgY2xhc3M9J3pjd2ZfcHJpdmFjeSc+PGRpdiBjbGFzcz0nZElCIHZhdCcgYWxpZ249J2xlZnQnPjxkaXYgY2xhc3M9J2Rpc3BsYXlQdXJwb3NlICBmMTMnPjxsYWJlbCBjbGFzcz0nbmV3Q3VzdG9tY2hrYm94LW1kIGRJQiB3MTAwcGVyJz48aW5wdXQgYXV0b2NvbXBsZXRlPSdvZmYnIGlkPSdwcml2YWN5VG9vbDQ5MTg0MzAwMDA0MDA1MDEwNycgdHlwZT0nY2hlY2tib3gnIG5hbWU9J3ByaXZhY3lUb29sJyBvbmNsaWNrPSdkaXNhYmxlRXJyNDkxODQzMDAwMDQwMDUwMTA3KCknPjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nZElCIHpjd2ZfcHJpdmFjeV90eHQnIHN0eWxlPSdmb250LXNpemU6IDE1cHg7Zm9udC1mYW1pbHk6VmVyZGFuYTtjb2xvcjogI0ZGRkZGRjsnPkFjZXB0byBsYSA8YSBocmVmPSdodHRwczovL3d3dy5pY2VzLXNwYWluLmNvbS9wb2xpdGljYS1kZS1wcml2YWNpZGFkLycgdGl0bGU9J2h0dHBzOi8vd3d3LmljZXMtc3BhaW4uY29tL3BvbGl0aWNhLWRlLXByaXZhY2lkYWQvJyB0YXJnZXQ9J19ibGFuayc+UG9sw610aWNhIGRlIHByaXZhY2lkYWQ8L2E+LjwvZGl2PiA8ZGl2ICBpZD0ncHJpdmFjeUVycjQ5MTg0MzAwMDA0MDA1MDEwNycgc3R5bGU9J2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnJlZDtwYWRkaW5nLWxlZnQ6IDVweDt2aXNpYmlsaXR5OmhpZGRlbjsnPkFjZXB0ZSBwb3IgZmF2b3I8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSd6Y3dmX3Jvdyc+PGRpdiBjbGFzcz0nemN3Zl9jb2xfbGFiJz48L2Rpdj48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9mbGQnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIGlkPSdmb3Jtc3VibWl0JyBjbGFzcz0nZm9ybXN1Ym1pdCB6Y3dmX2J1dHRvbicgdmFsdWU9J0VudmlhcicgdGl0bGU9J0Vudmlhcic+PGlucHV0IHR5cGU9J3Jlc2V0JyBjbGFzcz0nemN3Zl9idXR0b24nIG5hbWU9J3Jlc2V0JyB2YWx1ZT0nUmVzdGFibGVjZXInIHRpdGxlPSdSZXN0YWJsZWNlcic+PC9kaXY+PC9kaXY+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz52YXIgZm9ybUNhbGVuZGVyPXt1c2VyUGF0dGVybjonWVlZWS1NTS1ERCcsY3VyckRhdGVPYmo6dm9pZCAwLGN1cnJNb250aDp2b2lkIDAsY3VyclllYXI6dm9pZCAwLGN1cnJEYXRlOnZvaWQgMCxjdXJyTW9udGhFbmQ6WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxtb250aE5hbWU6dm9pZCAwLGRheXM6dm9pZCAwLGRpc3BsYXlQYW5lbDp2b2lkIDAsaXNIaWRlVG9kYXk6dm9pZCAwLGNhbERlZkNvbG9yOicjNTE1Q0NCJyx3ZWVrZGF5czp7MTonU3VuZGF5JywyOidNb25kYXknLDM6J1R1ZXNkYXknLDQ6J1dlZG5lc2RheScsNTonVGh1cnNkYXknLDY6J0ZyaWRheScsNzonU2F0dXJkYXknfSxtb250aHM6ezE6J0phbnVhcnknLDI6J0ZlYnJ1YXJ5JywzOidNYXJjaCcsNDonQXByaWwnLDU6J01heScsNjonSnVuZScsNzonSnVseScsODonQXVndXN0Jyw5OidTZXB0ZW1iZXInLDEwOidPY3RvYmVyJywxMTonTm92ZW1iZXInLDEyOidEZWNlbWJlcid9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLm1vbnRoTmFtZT1be2h0bWw6J0phbnVhcnknLHZhbHVlOjB9LHtodG1sOidGZWJydWFyeScsdmFsdWU6MX0se2h0bWw6J01hcmNoJyx2YWx1ZToyfSx7aHRtbDonQXByaWwnLHZhbHVlOjN9LHtodG1sOidNYXknLHZhbHVlOjR9LHtodG1sOidKdW5lJyx2YWx1ZTo1fSx7aHRtbDonSnVseScsdmFsdWU6Nn0se2h0bWw6J0F1Z3VzdCcsdmFsdWU6N30se2h0bWw6J1NlcHRlbWJlcicsdmFsdWU6OH0se2h0bWw6J09jdG9iZXInLHZhbHVlOjl9LHtodG1sOidOb3ZlbWJlcicsdmFsdWU6MTB9LHtodG1sOidEZWNlbWJlcicsdmFsdWU6MTF9XSx0aGlzLmRheXM9Wydzc3VuZGF5Jywnc21vbmRheScsJ3N0dWVzZGF5Jywnc3dlZG5lc2RheScsJ3N0aHVyc2RheScsJ3NmcmlkYXknLCdzc2F0dXJkYXknXSx0aGlzLmRheU5hbWVzU2hvcnQ9WydTdW4nLCdNb24nLCdUdWUnLCdXZWQnLCdUaHUnLCdGcmknLCdTYXQnXSx0aGlzLmRheXNCYXNlZE9uUHJlZmVybmNlPVsnc3N1bmRheScsJ3Ntb25kYXknLCdzdHVlc2RheScsJ3N3ZWRuZXNkYXknLCdzdGh1cnNkYXknLCdzZnJpZGF5Jywnc3NhdHVyZGF5J107dmFyIGU9dGhpcy5kYXlzQmFzZWRPblByZWZlcm5jZVswXTt0aGlzLmRheXNCYXNlZE9uUHJlZmVybmNlLnNoaWZ0KDEpLHRoaXMuZGF5c0Jhc2VkT25QcmVmZXJuY2UucHVzaChlKTt2YXIgdD10aGlzLmRheU5hbWVzU2hvcnRbMF07dGhpcy5kYXlOYW1lc1Nob3J0LnNoaWZ0KDEpLHRoaXMuZGF5TmFtZXNTaG9ydC5wdXNoKHQpLHRoaXMuY3VyckRhdGVPYmo9bmV3IERhdGUsdGhpcy5jdXJyTW9udGg9dGhpcy5jdXJyRGF0ZU9iai5nZXRNb250aCgpLHRoaXMuY3VyclllYXI9dGhpcy5jdXJyRGF0ZU9iai5nZXRGdWxsWWVhcigpLHRoaXMuY3VyclllYXI8MWUzJiYodGhpcy5jdXJyWWVhcis9MTkwMCksdGhpcy5jdXJyRGF0ZT10aGlzLmN1cnJEYXRlT2JqLmdldERhdGUoKX0sZ2V0VGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb250aE5hbWVbdGhpcy5jdXJyTW9udGhdLmh0bWwrJyAnK3RoaXMuY3VyclllYXJ9LGNyZWF0ZUNhbGVuZGFyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZW1wQ2FsRGl2JyksYT10Lmxlbmd0aCxyPTA7cjxhO3IrKyl7dmFyIG49dFtyXS5zdHlsZTsnYmxvY2snPT09bi5kaXNwbGF5JiYobi5kaXNwbGF5PSdub25lJyl9dGhpcy5jYWxlbmRhck5vZGU9ZSx0aGlzLnVzZXJQYXR0ZXJuPXRoaXMuY2FsZW5kYXJOb2RlLnBsYWNlaG9sZGVyO3ZhciBzPXRoaXMuY2FsZW5kYXJOb2RlLnZhbHVlLGk9ITE7aWYocyl7dmFyIGw9ZGF0ZUZvcm1hdENvbnZlcnQudmFsaWRhdGUocyx0aGlzLnVzZXJQYXR0ZXJuKTtsJiYodGhpcy5jdXJyRGF0ZT1sLmdldERhdGUoKSx0aGlzLmN1cnJNb250aD1sLmdldE1vbnRoKCksdGhpcy5jdXJyWWVhcj1sLmdldEZ1bGxZZWFyKCksdGhpcy5jdXJyWWVhcjwxZTMmJih0aGlzLmN1cnJZZWFyPU51bWJlcih0aGlzLmN1cnJZZWFyKSsxOTAwKSl9ZWxzZSBpPSEwLGZvcm1DYWxlbmRlci5pbml0KCk7dGhpcy5tb250aE5hbWV8fGZvcm1DYWxlbmRlci5pbml0KCksdGhpcy5jcmVhdGVEYXRlUGlja2VyKHRoaXMuY3VyckRhdGUsdGhpcy5jdXJyTW9udGgsdGhpcy5jdXJyWWVhcixpLCExKX0sY3JlYXRlRGF0ZVBpY2tlcjpmdW5jdGlvbihlLHQsYSxyLG4pezE9PT10aGlzLmN1cnJNb250aCYmKHRoaXMuY3Vyck1vbnRoRW5kWzFdPXRoaXMuY3VyclllYXIlNDAwPT0wfHx0aGlzLmN1cnJZZWFyJTQ9PTAmJnRoaXMuY3VyclllYXIlMTAwIT0wPzI5OjI4KTt2YXIgcz1uZXcgRGF0ZShhLHQsMSksaT02LGw9dGhpcy5kYXlzQmFzZWRPblByZWZlcm5jZS5pbmRleE9mKHRoaXMuZGF5c1tzLmdldERheSgpXSkrMTtpPTMxPT09dGhpcy5jdXJyTW9udGhFbmRbdF0mJmw+PTZ8fDMwPT09dGhpcy5jdXJyTW9udGhFbmRbdF0mJjc9PT1sPzc6Mjg9PT10aGlzLmN1cnJNb250aEVuZFt0XSYmMT09PWw/NTo2O3ZhciBkPXRoaXMuZ2V0VGl0bGUoZSxhLHQpLG89dGhpcy5kYXlOYW1lc1Nob3J0LGg9JzxkaXYgaWQ9XCdjYWxlbkRpdlwnPjxpIGlkPVwnY2FsQXJyb3dcJyBzdHlsZT1cJ2Rpc3BsYXk6bm9uZTtcJyBjbGFzcz1cJ2RJQiBTb2NpYWxBcnJvd1wnPjwvaT48ZGl2PjxkaXY+JztoKz0nPGRpdiBjbGFzcz1cJ3R4dC1jdHJcJz48c3BhbiBjbGFzcz1cJ2NhbE5hdiBkSUIgdmFtIHllYXJOYXZMZnRcJyBvbmNsaWNrPVwnZm9ybUNhbGVuZGVyLnVwZGF0ZURhdGVQaWNrZXIoZXZlbnQsdW5kZWZpbmVkLCAtMSlcJz48aSBjbGFzcz1cJ2Fycm93IGxlZnQgbVJNaW51czJcJz48L2k+PGkgY2xhc3M9XCdhcnJvdyBsZWZ0XCc+PC9pPjwvc3Bhbj48c3BhbiBjbGFzcz1cJ2NhbE5hdiBkTGZ0IGRJQiB2YW1cJyBvbkNsaWNrPVwnZm9ybUNhbGVuZGVyLnVwZGF0ZURhdGVQaWNrZXIoZXZlbnQsLTEpXCcgaWQ9XCdwbVwnPjxpIGNsYXNzPVwnYXJyb3cgbGVmdFwnPjwvaT48L3NwYW4+PHNwYW4gY2xhc3M9XCdzQ2FsTW9uXCc+JytkKyc8L3NwYW4+PHNwYW4gY2xhc3M9XCdjYWxOYXYgZFJndCB2YW1cJyBvbkNsaWNrID1cJ2Zvcm1DYWxlbmRlci51cGRhdGVEYXRlUGlja2VyKGV2ZW50LDEpXCcgaWQ9XCdubVwnPjxpIGNsYXNzPVwnYXJyb3cgcmlnaHRcJz48L2k+PC9zcGFuPjxzcGFuIGNsYXNzPVwnY2FsTmF2IGRJQiB2YW0geWVhck5hdlJndFwnIG9uY2xpY2s9XCdmb3JtQ2FsZW5kZXIudXBkYXRlRGF0ZVBpY2tlcihldmVudCx1bmRlZmluZWQsIDEpXCc+PGkgY2xhc3M9XCdhcnJvdyByaWdodFwnPjwvaT48aSBjbGFzcz1cJ2Fycm93IHJpZ2h0IG1MTWludXMyXCc+PC9pPjwvc3Bhbj48L2Rpdj4nLGgrPSc8dGFibGUgIGNsYXNzPVwnY2FsRGF5XCcgIGlkID1cJ3dlZWtEYXlzXCcgc3R5bGU9XCdjb2xvcjojOGI5YWI5OyBmb250LXNpemU6OHB4OyBtYXJnaW4tbGVmdDowXCc+PHRyPiA8dGg+JytvWzBdKyc8L3RoPiA8dGg+JytvWzFdKyc8L3RoPjx0aD4nK29bMl0rJzwvdGg+PHRoPicrb1szXSsnPC90aD4gPHRoPicrb1s0XSsnPC90aD4gPHRoPicrb1s1XSsnPC90aD4gPHRoPicrb1s2XSsnPC90aD48L3RyPjwvdGFibGU+JyxoKz0nPC9kaXY+JyxoKz0nPHRhYmxlIGlkPVwnY2FsSGVhZGVyXCcgY2xhc3M9XCdjYWxEYXlcJyBzdHlsZT1cJ21hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6LTVweDtcJyB3aWR0aD1cJzEwMCVcJyBjZWxsc3BhY2luZz1cJzBcJyBjZWxscGFkZGluZz1cJzBcJyBib3JkZXI9XCcwXCcgPic7dmFyIGM9JycsdT1uZXcgRGF0ZSx5PWF8fHUuZ2V0RnVsbFllYXIoKSx2PWV8fHUuZ2V0RGF0ZSgpLGc9dm9pZCAwPT09dD91LmdldE1vbnRoKCk6dCxtPXUuZ2V0TW9udGgoKSxwPXUuZ2V0RnVsbFllYXIoKTt1LmdldERhdGUoKTttPT09dCYmYT09PXAmJihjPScgc3R5bGU9XCdkaXNwbGF5Om5vbmVcJycpO2Zvcih2YXIgZixELE0sYj1zLmdldERheSgpOzEhPT1iOylzLnNldERhdGUocy5nZXREYXRlKCktMSksYj1zLmdldERheSgpO2Zvcih2YXIgeD0xO3g8PWk7eCsrKXtoKz0nPHRyPic7Zm9yKHZhciBZPTE7WTw4O1krKyl7Zj1zLmdldE1vbnRoKCksRD1zLmdldEZ1bGxZZWFyKCksTT1zLmdldERhdGUoKSxEKyctJysocGFyc2VJbnQoZikrMSkrJy0nK007dmFyIEY9J2NkYXRlIGx0LWdyYXknO2lmKE09PT12JiZEPT09eSYmZj09PWcmJihGPSdjZGF0ZSBsdC1ncmF5JyksZj09PWcmJihGPSdjZGF0ZScpLChyJiZNPT09diYmbT09PWcmJnA9PT15fHwhbiYmTT09PXYmJmY9PT1nJiZEPT09eSkmJihGPSdzZWwnKSxuKXt2YXIgaz1kYXRlRm9ybWF0Q29udmVydC52YWxpZGF0ZSh0aGlzLmNhbGVuZGFyTm9kZS52YWx1ZSxmb3JtQ2FsZW5kZXIudXNlclBhdHRlcm4pO2smJk09PT1rLmdldERhdGUoKSYmZj09PWsuZ2V0TW9udGgoKSYmRD09PWsuZ2V0RnVsbFllYXIoKSYmKEY9J3NlbCcpfWgrPSc8dGQgY2xhc3M9XCcnK0YrJ1wnIG9uQ2xpY2s9XCdmb3JtQ2FsZW5kZXIuZGlzcGxheVNlbGVjdGVkRGF0ZShcIicrTSsnICcrZisnICcrRCsnXCIpXCc+JytNKyc8L3RkPicscy5zZXREYXRlKHMuZ2V0RGF0ZSgpKzEpfWgrPSc8L3RyPid9aCs9JzwvdGFibGU+JyxoKz0nPGRpdj4nLHRoaXMuaXNIaWRlVG9kYXl8fChoKz0nPGRpdiBpZD1cJ2NhbEJ0bnNcJyBjbGFzcz1cJ3BUMTUgcEIxNSBmTFwnPjxhJytjKycgY2xhc3M9XCdjUCBmTFwnIGhyZWY9XCdqYXZhc2NyaXB0OjtcJyBpZD1cJ3RvZGF5QnRuXCcgb25jbGljaz1cJ2Zvcm1DYWxlbmRlci5kaXNwbGF5U2VsZWN0ZWREYXRlKFwidG9kYXlcIilcJz5Ub2RheTwvYT4nKSxoKz0nPC9kaXY+JyxoKz0nPC9kaXY+JyxoKz0nPC9kaXY+PC9kaXY+Jzt2YXIgQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtcGxhdGUnK3RoaXMuY2FsZW5kYXJOb2RlLmdldEF0dHJpYnV0ZSgndHBsaWQnKSk7Qy5pbm5lckhUTUw9aCxDLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJ30sZGlzcGxheVNlbGVjdGVkRGF0ZTpmdW5jdGlvbihlLHQpe2lmKCF0KXQ9dGhpcy5jYWxlbmRhck5vZGU7aWYoJ3RvZGF5Jz09PWUpe3ZhciBhPW5ldyBEYXRlO2U9YS5nZXREYXRlKCkrJyAnK2EuZ2V0TW9udGgoKSsnICcrYS5nZXRGdWxsWWVhcigpfWU9ZS5zcGxpdCgnICcpO3ZhciByPWRhdGVGb3JtYXRDb252ZXJ0LmNvbnZlcnRGb3JtYXQobmV3IERhdGUoZVsyXSxlWzFdLGVbMF0pLHRoaXMudXNlclBhdHRlcm4pO3QudmFsdWU9cix0LmZvY3VzKCksdC5wbGFjZWhvbGRlcj10aGlzLnVzZXJQYXR0ZXJuLGZvcm1DYWxlbmRlci5jbG9zZURhdGVQaWNrZXIoKSx0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJyxmdW5jdGlvbihlKXtmb3JtQ2FsZW5kZXIuY2FsZW5kYXJOb2RlPXRoaXM7dmFyIHQ9dGhpcy52YWx1ZSxhPWRhdGVGb3JtYXRDb252ZXJ0LnZhbGlkYXRlKHQsZm9ybUNhbGVuZGVyLnVzZXJQYXR0ZXJuKTtpZihhKXt2YXIgcj17fTtyLmRhdGU9YS5nZXREYXRlKCksci5tb250aD1hLmdldE1vbnRoKCksci55ZWFyPWEuZ2V0RnVsbFllYXIoKSxmb3JtQ2FsZW5kZXIudXBkYXRlRGF0ZVBpY2tlcihlLHZvaWQgMCx2b2lkIDAscil9fSksdC5ibHVyKCl9LGNsb3NlRGF0ZVBpY2tlcjpmdW5jdGlvbigpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZW1wbGF0ZScrdGhpcy5jYWxlbmRhck5vZGUuZ2V0QXR0cmlidXRlKCd0cGxpZCcpKS5zdHlsZS5kaXNwbGF5PSdub25lJ30sdXBkYXRlRGF0ZVBpY2tlcjpmdW5jdGlvbihlLHQsYSxyKXt2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtcGxhdGUnK3RoaXMuY2FsZW5kYXJOb2RlLmdldEF0dHJpYnV0ZSgndHBsaWQnKSk7ciYmKHRoaXMuY3VyckRhdGU9ci5kYXRlLHRoaXMuY3Vyck1vbnRoPXIubW9udGgsdGhpcy5jdXJyWWVhcj1yLnllYXIpLHZvaWQgMCE9PXQ/MT09PXQ/MTE9PT10aGlzLmN1cnJNb250aD8odGhpcy5jdXJyTW9udGg9MCx0aGlzLmN1cnJZZWFyKyspOnRoaXMuY3Vyck1vbnRoKys6MD09PXRoaXMuY3Vyck1vbnRoPyh0aGlzLmN1cnJNb250aD0xMSx0aGlzLmN1cnJZZWFyLS0pOnRoaXMuY3Vyck1vbnRoLS06dm9pZCAwIT09YSYmKHRoaXMuY3VyclllYXI9cGFyc2VJbnQodGhpcy5jdXJyWWVhcikrYSksdGhpcy5jcmVhdGVEYXRlUGlja2VyKHRoaXMuY3VyckRhdGUsdGhpcy5jdXJyTW9udGgsdGhpcy5jdXJyWWVhciwhMSwhMCksbi5zdHlsZS5kaXNwbGF5PSdibG9jayd9LHN0RXY6ZnVuY3Rpb24oZSl7ZXx8KGU9d2luZG93LmV2ZW50KSxlJiYoZS5jYW5jZWxCdWJibGU9ITAsZS5zdG9wUHJvcGFnYXRpb24mJmUuc3RvcFByb3BhZ2F0aW9uKCkpfX07d2luZG93Lm9uY2xpY2s9ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGVtcENhbERpdicpLHQ9ZS5sZW5ndGgsYT0wO2E8dDthKyspe3ZhciByPWVbYV07aWYoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3RwbGlkPVwnJytyLmlkLnJlcGxhY2UoJ3RlbXBsYXRlJywnJykrJ1wnXScpKXJldHVybjt2YXIgbj1lW2FdLnN0eWxlOydibG9jayc9PT1uLmRpc3BsYXkmJihuLmRpc3BsYXk9J25vbmUnKX19O3ZhciBkYXRlRm9ybWF0Q29udmVydD17c2hvcnRNb246WydKYW4nLCdGZWInLCdNYXInLCdBcHInLCdNYXknLCdKdW4nLCdKdWwnLCdBdWcnLCdTZXAnLCdPY3QnLCdOb3YnLCdEZWMnXSxsb25nTW9uOlsnSmFudWFyeScsJ0ZlYnJ1YXJ5JywnTWFyY2gnLCdBcHJpbCcsJ01heScsJ0p1bmUnLCdKdWx5JywnQXVndXN0JywnU2VwdGVtYmVyJywnT2N0b2JlcicsJ05vdmVtYmVyJywnRGVjZW1iZXInXSxkYXlBcnI6WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSx3b2Q6MSxsbTondXNlcmRhdGUnLF9kYXRlT2JqOnZvaWQgMCxsTGltaXQ6ODAsZm9ybWF0czpbe3ZhbDonWVlZWScsdHlwZToneWVhcicscmVnZXg6L1xkezR9LyxsZW46NH0se3ZhbDonR0dHRycsdHlwZToneWVhcicscmVnZXg6L1xkezR9LyxsZW46NCxpc1dFRzohMH0se3ZhbDonZ2dnZycsdHlwZToneWVhcicscmVnZXg6L1xkezR9LyxsZW46NCxpc1dFRzohMH0se3ZhbDonWVknLHR5cGU6J3llYXInLHJlZ2V4Oi9cZHsyfS8sbGVuOjJ9LHt2YWw6J0dHJyx0eXBlOid5ZWFyJyxyZWdleDovXGR7Mn0vLGxlbjoyLGlzV0VHOiEwfSx7dmFsOidnZycsdHlwZToneWVhcicscmVnZXg6L1xkezJ9LyxsZW46Mixpc1dFRzohMH0se3ZhbDonTU1NTScsdHlwZTonbW9udGgnLHJlZ2V4Oi9bQS16XXszLH0vLGxvbmc6ITAsc3RyOiEwLGFycmF5OlsnSmFudWFyeScsJ0ZlYnJ1YXJ5JywnTWFyY2gnLCdBcHJpbCcsJ01heScsJ0p1bmUnLCdKdWx5JywnQXVndXN0JywnU2VwdGVtYmVyJywnT2N0b2JlcicsJ05vdmVtYmVyJywnRGVjZW1iZXInXX0se3ZhbDonTU1NJyxzdHI6ITAsdHlwZTonbW9udGgnLHJlZ2V4Oi9bQS16XXszLH0vLGFycmF5OlsnSmFuJywnRmViJywnTWFyJywnQXByJywnTWF5JywnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2N0JywnTm92JywnRGVjJ119LHt2YWw6J01vJyxzdWZmOiEwLHR5cGU6J21vbnRoJyxyZWdleDovXGR7MSwyfSg/PXN0fG5kfHJkfHRoKS8sbWF4OjEyfSx7dmFsOidNTScsdHlwZTonbW9udGgnLHJlZ2V4Oi9cZHsyfS8sbGVuOjIsbWF4OjEyLGFsdDohMH0se3ZhbDonTScsdHlwZTonbW9udGgnLHJlZ2V4Oi9cZHsxLDJ9LyxtYXg6MTJ9LHt2YWw6J0REREQnLHR5cGU6J2RhdGUnLHJlZ2V4Oi9cZHszfS8sbGVuOjMseWVhcjohMH0se3ZhbDonREREbycsdHlwZTonZGF0ZScsc3VmZjohMCxyZWdleDovXGR7MSwzfSg/PXN0fG5kfHJkfHRoKS8sbGVuOjMseWVhcjohMCxpZ25vcmU6L1xkezN9KD89c3R8bmR8cmR8dGgpL30se3ZhbDonREREJyx0eXBlOidkYXRlJyxyZWdleDovXGR7MSwzfS8seWVhcjohMCxpZ25vcmU6L1xkezN9L30se3ZhbDonRG8nLHR5cGU6J2RhdGUnLHN1ZmY6ITAscmVnZXg6L1xkezEsMn0oPz1zdHxuZHxyZHx0aCkvfSx7dmFsOidERCcsdHlwZTonZGF0ZScscmVnZXg6L1xkezJ9LyxsZW46MixhbHQ6ITB9LHt2YWw6J0QnLHR5cGU6J2RhdGUnLHJlZ2V4Oi9cZHsxLDJ9L30se3ZhbDonZGRkZCcsdHlwZTonbG9uZ2RhdGUnLHJlZ2V4Oi9bQS16XXszLH0vLGxvbmc6ITAsc3RyOiEwLGFycmF5OlsnU3VuZGF5JywnTW9uZGF5JywnVHVlc2RheScsJ1dlZG5lc2RheScsJ1RodXJzZGF5JywnRnJpZGF5JywnU2F0dXJkYXknXX0se3ZhbDonZGRkJyx0eXBlOidsb25nZGF0ZScscmVnZXg6L1tBLXpdezN9LyxzdHI6ITAsYXJyYXk6WydTdW4nLCdNb24nLCdUdWUnLCdXZWQnLCdUaHUnLCdGcmknLCdTYXQnXX0se3ZhbDonZGQnLHR5cGU6J2xvbmdkYXRlJyxyZWdleDovW0Etel17Mn0vLHN0cjohMCxhcnJheTpbJ1N1JywnTW8nLCdUdScsJ1dlJywnVGgnLCdGcicsJ1NhJ119LHt2YWw6J2RvJyx0eXBlOidsb25nZGF0ZScscmVnZXg6L1xkezF9KD89c3R8bmR8cmR8dGgpLyxzdWZmOiEwfSx7dmFsOidkJyx0eXBlOidsb25nZGF0ZScscmVnZXg6L1xkezF9L31dLHBhcnNlRm9ybWF0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBhLHI9dGhpcy5mb3JtYXRzLG49W10scz1yLmxlbmd0aCxpPTA7aTxzO2krKyl7dmFyIGw9cltpXTtpZighZS5sZW5ndGgpYnJlYWs7aWYoZS5pbmRleE9mKGwudmFsKT4tMSl7aWYodCYmbC5hbHQpe2E9ITA7Y29udGludWV9YSYmKGwudmFsPXJbaS0xXS52YWwsbD1yW2ktMV0pLGE9ITEsbi5wdXNoKHtmb3JtYXQ6bCxpbmRleDplLmluZGV4T2YobC52YWwpfSksZT1lLnJlcGxhY2UobC52YWwsTWF0aC5wb3coMTAsbC52YWwubGVuZ3RoLTEpKSxpLS19ZWxzZTt9cmV0dXJuIG4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLmluZGV4LXQuaW5kZXh9KX0sY29udmVydEZvcm1hdDpmdW5jdGlvbihlLHQpe3RoaXMuX2RhdGVPYmo9ZTt2YXIgYT10aGlzLl9kYXRlT2JqLHI9dGhpcy5wYXJzZUZvcm1hdCh0LCEwKSxuPXt9LHM9e2RhdGU6YS5nZXREYXRlKCksbW9udGg6YS5nZXRNb250aCgpLHllYXI6YS5nZXRGdWxsWWVhcigpLGRheTphLmdldERheSgpfTt0PXRoaXMuZm1SZXBsYWNlKHQucmVwbGFjZSgve3t8fX0vZywnJykscik7Zm9yKHZhciBpPXIubGVuZ3RoLGw9MDtsPGk7bCsrKXt2YXIgZD1yW2xdLmZvcm1hdDtzd2l0Y2goZC50eXBlKXtjYXNlJ2RhdGUnOnQ9dC5yZXBsYWNlKGQudmFsK3RoaXMubG0sdGhpcy5jcmN0TGVuZ3RoKGQueWVhcj90aGlzLnRvdGRhdGUocy5tb250aCx0aGlzLmlzTGVhcChzLnllYXIpLHMuZGF0ZSk6cy5kYXRlLGQubGVuLGQuc3VmZikpO2JyZWFrO2Nhc2UnbW9udGgnOnQ9ZC5zdHI/dC5yZXBsYWNlKGQudmFsK3RoaXMubG0sZC5hcnJheVtzLm1vbnRoXSk6dC5yZXBsYWNlKGQudmFsK3RoaXMubG0sdGhpcy5jcmN0TGVuZ3RoKHMubW9udGgrMSxkLmxlbixkLnN1ZmYpKTticmVhaztjYXNlJ3llYXInOnQ9dC5yZXBsYWNlKGQudmFsK3RoaXMubG0sMj09PWQubGVuP3RoaXMuY3JjdExlbmd0aChzLnllYXIlMTAwLDIpOjQ9PT0ocy55ZWFyKycnKS5sZW5ndGg/cy55ZWFyOnRoaXMuY3JjdExlbmd0aChzLnllYXIsNCkpLG4ueWVhcj1uLnllYXJ8fFtdLG4ueWVhci5wdXNoKGQpO2JyZWFrO2Nhc2UnZGF5JzpjYXNlJ3dlZWsnOm4uZmxhZz0hMCxuW2QudHlwZV09bltkLnR5cGVdfHxbXSxuW2QudHlwZV0ucHVzaChkKTticmVhaztjYXNlJ2xvbmdkYXRlJzp0PWQuc3RyP3QucmVwbGFjZShkLnZhbCt0aGlzLmxtLGQuYXJyYXlbcy5kYXldKTp0LnJlcGxhY2UoZC52YWwrdGhpcy5sbSx0aGlzLmNyY3RMZW5ndGgocy5kYXksbnVsbCxkLnN1ZmYpKX19cmV0dXJuIHQucmVwbGFjZSgve3t8fX0vZywnJyl9LGZtUmVwbGFjZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgYT0wLHI9dC5sZW5ndGgsbj0wO248cjtuKyspZT1lLnNsaWNlKDAsdFtuXS5pbmRleCthKSt0W25dLmZvcm1hdC52YWwrdGhpcy5sbStlLnNsaWNlKHRbbl0uaW5kZXgrYSt0W25dLmZvcm1hdC52YWwubGVuZ3RoKSxhKz04O3JldHVybiBlfSx0b3RkYXRlOmZ1bmN0aW9uKGUsdCxhKXtmb3IodmFyIHI9MCxuPTA7bjxlO24rKylyKz10aGlzLmRheUFycltuXSx0JiYxPT09biYmKHIrPTEpO3JldHVybiByKyhhfHwwKX0sY3JjdExlbmd0aDpmdW5jdGlvbihlLHQsYSl7dmFyIHI9Jyc7aWYoYSYmKHI9dGhpcy5udGhjb252KGUpKSx0KXtlPWUudG9TdHJpbmcoKTtmb3IodmFyIG49MTtuPHQ7bisrKWUubGVuZ3RoPD1uJiYoZT0nMCcrZSl9cmV0dXJuIGUrcn0sbnRoY29udjpmdW5jdGlvbihlKXtpZihlPjMmJmU8MjEpcmV0dXJuJ3RoJztzd2l0Y2goZSUxMCl7Y2FzZSAxOnJldHVybidzdCc7Y2FzZSAyOnJldHVybiduZCc7Y2FzZSAzOnJldHVybidyZCc7ZGVmYXVsdDpyZXR1cm4ndGgnfX0saXNMZWFwOmZ1bmN0aW9uKGUpe3JldHVybiAyPT09KGUrPScnKS5sZW5ndGgmJihlPXRoaXMuZ2V0Q29ycmVjdFllYXIocGFyc2VJbnQoZSkpKSwoZT1wYXJzZUludChlKSklND09MCYmZSUxMDAhPTB8fGUlNDAwPT0wfSxnZXRDb3JyZWN0WWVhcjpmdW5jdGlvbihlKXt2YXIgdD1lKycnO2lmKGU9cGFyc2VJbnQoZSksMj09PXQubGVuZ3RoKXt2YXIgYT0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCkscj1wYXJzZUludChhLzEwMCksbj1hJTEwMCxzPShuLXRoaXMubExpbWl0KzEwMCklMTAwO2U9bj5zP2U8cz9yKzErJycrdGhpcy5jcmN0TGVuZ3RoKGUsMik6cisnJyt0aGlzLmNyY3RMZW5ndGgoZSwyKTplPHM/cisnJyt0aGlzLmNyY3RMZW5ndGgoZSwyKTpyLTErJycrdGhpcy5jcmN0TGVuZ3RoKGUsMil9cmV0dXJuIGV9LHZhbEZvcm1hdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgYT17fSxyPW5ldyBEYXRlKChuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSwwKSxuPXRoaXMucGFyc2VGb3JtYXQodCwhMCkscz1lLGk9dD10LnJlcGxhY2UoL3t7fH19L2csJycpLGw9bi5sZW5ndGgsZD0wO2Q8bDtkKyspe3ZhciBvLGg9bltkXS5mb3JtYXQ7c3dpdGNoKGgudHlwZSl7Y2FzZSdkYXRlJzpjYXNlJ3llYXInOmNhc2Und2Vlayc6Y2FzZSdkYXknOmgucmVnZXgudGVzdChlKT8obz0neWVhcic9PT1oLnR5cGU/ZS5tYXRjaChoLnJlZ2V4KVtoLm1hdGNofHwwXTpwYXJzZUludChlLm1hdGNoKGgucmVnZXgpW2gubWF0Y2h8fDBdKSxhW2gudHlwZV09byxlPXRoaXMucmVwbGFjZVZhbChlLGgucmVnZXgsaC5zdWZmKSxzPXRoaXMucmVwbGFjZVZhbChzLGgucmVnZXgsaC5zdWZmLGgudmFsKSxoLnllYXImJihhLmRhdGU9Z2V0RGF5KGEuZGF0ZSkuZGF5KSk6YS55ZWFyJiZhLndlZWs/KGFbaC50eXBlXT10aGlzLndvZCx0PXQucmVwbGFjZShoLnZhbCwnJyksaT1pLnJlcGxhY2UoaC52YWwsJycpKTphW2gudHlwZV09J0ludmFsaWQnLC9kYXRlL2kudGVzdChoLnR5cGUpJiYwPT09YVtoLnR5cGVdJiYoYVtoLnR5cGVdPSdJbnZhbGlkJyk7YnJlYWs7Y2FzZSdtb250aCc6aC5yZWdleC50ZXN0KGUpPyhvPXRoaXMuZ2V0TW9udGgoZS5tYXRjaChoLnJlZ2V4KVswXSxoLnN1ZmYsaC5zdHIsaC5sb25nKSxhLm1vbnRoPW8udmFsLGU9dGhpcy5yZXBsYWNlVmFsKGUsby5tb258fGgucmVnZXgsaC5zdWZmKSxzPXRoaXMucmVwbGFjZVZhbChzLG8ubW9ufHxoLnJlZ2V4LGguc3VmZixoLnZhbCkpOmEubW9udGg9J0ludmFsaWQnLGEubW9udGg8MCYmKGEubW9udGg9J0ludmFsaWQnKTticmVhaztjYXNlJ2xvbmdkYXRlJzpoLnJlZ2V4LnRlc3QoZSkmJihvPWguc3RyP3RoaXMuZmluZFZhbChoLmFycmF5LGUubWF0Y2goaC5yZWdleClbMF0pOnBhcnNlSW50KGUubWF0Y2goaC5yZWdleClbMF0pLGEubG9uZ2RhdGU9dGhpcy5pc0RlZihvLmluZGV4KT9vLmluZGV4Om8sZT10aGlzLnJlcGxhY2VWYWwoZSxvLm1vbnx8byxoLnN1ZmYpLHM9dGhpcy5yZXBsYWNlVmFsKHMsby5tb258fG8saC5zdWZmLGgudmFsKSl9dD10LnJlcGxhY2UoaC52YWxGb3JtfHxoLnZhbCwnJyl9aWYodGhpcy5pc0RlZihhLmxvbmdkYXRlKSYmYS5kYXkmJmEuZGF5IT09YS5sb25nZGF0ZT9yLnNldEZ1bGxZZWFyKCdJbnZhbGlkJyk6dGhpcy5pc0RlZihhLnllYXIpJiZyLnNldEZ1bGxZZWFyKHRoaXMuZ2V0Q29ycmVjdFllYXIoYS55ZWFyKSksdGhpcy5pc0RlZihhLm1vbnRoKSYmci5zZXRNb250aChhLm1vbnRoKSx0aGlzLmlzRGVmKGEuZGF0ZSkmJnIuc2V0RGF0ZShhLmRhdGU8PXRoaXMuZGF5QXJyW3IuZ2V0TW9udGgoKV0rKDE9PT1yLmdldE1vbnRoKCkmJnRoaXMuaXNMZWFwKHIuZ2V0RnVsbFllYXIoKSk/MTowKT9hLmRhdGU6J0ludmFsaWQnKSx0aGlzLl9pc0NvcnJlY3RGb3JtYXQ9ZS5sZW5ndGg9PT10Lmxlbmd0aCYmaT09PXMmJnRoaXMudmFsaWRhdGUocikpcmV0dXJuIHJ9LHZhbGlkYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIGE9ZS5jb25zdHJ1Y3RvcjtpZihhPT09RGF0ZSlyZXR1cm4gdGhpcy5fZGF0ZU9iaj1lLCdJbnZhbGlkIERhdGUnIT09ZS50b1N0cmluZygpO2lmKGE9PT1TdHJpbmcmJnQpe3ZhciByPXRoaXMudmFsRm9ybWF0KGUsdCk7cmV0dXJuIHImJnRoaXMuX2lzQ29ycmVjdEZvcm1hdCYmKHRoaXMuX2Zvcm1hdD10KSxyfX0scmVwbGFjZVZhbDpmdW5jdGlvbihlLHQsYSxyKXtyZXR1cm4gZT1lLnJlcGxhY2UodCxyfHwnJyksYSYmKGU9ZS5yZXBsYWNlKC9zdHxuZHxyZHx0aC8sJycpKSxlfSxnZXRNb250aDpmdW5jdGlvbihlLHQsYSxyKXt2YXIgbjtpZihhKXt2YXIgcz10aGlzLmZpbmRWYWwocj90aGlzLmxvbmdNb246dGhpcy5zaG9ydE1vbixlKTtuPXMubW9uLGU9cy5pbmRleCwoIW58fGU+MTEpJiYoZT0nSW52YWxpZCcpfWVsc2UoZT1wYXJzZUludChlKS0xKT4xMSYmKGU9J0ludmFsaWQnKTtyZXR1cm57dmFsOmUsbW9uOm59fSxmaW5kVmFsOmZ1bmN0aW9uKGUsdCl7dmFyIGEscixuPWUubGVuZ3RoO2ZvcihyPTA7cjxuO3IrKylpZihuZXcgUmVnRXhwKGVbcl0pLnRlc3QodCkpe2E9ZVtyXTticmVha31yZXR1cm57bW9uOmEsaW5kZXg6cn19LGlzRGVmOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfX07PC9zY3JpcHQ+CjxzdHlsZT4KI2NhbGVuRGl2e3BhZGRpbmc6MTBweDtkaXNwbGF5OnRhYmxlOyB3aWR0aDogMTk1cHg7Zm9udC1mYW1pbHk6IGhlbHZldGljYSxzYW5zLXNlcmlmICFpbXBvcnRhbnQ7fQouY2FsTmF2e3dpZHRoOjIwcHg7IGhlaWdodDoxNXB4OyBkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjRweDsgY3Vyc29yOnBvaW50ZXJ9CiNjYWxlbkRpdiAuY2FsTmF2IHt3aWR0aDoxNXB4O30KI2NhbGVuRGl2IC55ZWFyTmF2TGZ0IHtyaWdodDoxMHB4O30KI2NhbGVuRGl2IC55ZWFyTmF2Umd0IHtsZWZ0OjEwcHg7fQojY2FsZW5EaXYgLmRMZnQge3JpZ2h0OjVweDsgfQojY2FsZW5EaXYgLmRSZ3Qge2xlZnQ6NXB4O30KLmRMZnR7cmlnaHQ6MTBweDtvcGFjaXR5OjAuODsgfQouZFJndHtsZWZ0OjEwcHg7b3BhY2l0eTowLjg7fQoueWVhck5hdkxmdHtyaWdodDoxNXB4OyB9Ci55ZWFyTmF2Umd0e2xlZnQ6MTVweDtvcGFjaXR5OjAuNjt9CiNjYWxlbkRpdiB0YWJsZS5jYWxEYXkge2JvcmRlci1zcGFjaW5nOjZweDsgbWFyZ2luLXRvcDowfQojY2FsZW5EaXYgdGFibGUuY2FsRGF5IHRkeyBwYWRkaW5nOjNweCA0cHg7IGZvbnQtc2l6ZToxMXB4fQojY2FsZW5EaXYgdGFibGUuY2FsRGF5IHRoIHtwYWRkaW5nOiAwIDNweDtmb250LXNpemU6IDExcHg7cGFkZGluZy1yaWdodDogMDtwYWRkaW5nLWxlZnQ6IDFweDtjb2xvcjogIzg4ODt3aWR0aDogMjJweDtjdXJzb3I6IGRlZmF1bHQ7Ym9yZGVyLXJhZGl1czogM3B4O3RleHQtYWxpZ246IGNlbnRlcjtmb250LXdlaWdodDogbm9ybWFsO30KI2NhbGVuRGl2ICN3ZWVrRGF5c3ttYXJnaW4tdG9wOiAxMHB4O21hcmdpbi1ib3R0b206IDVweDtib3JkZXItdG9wOiAxcHggc29saWQgI2MwYzZjYztib3JkZXItYm90dG9tOiAxcHggc29saWQgI2MwYzZjYztib3JkZXItc3BhY2luZzogNXB4O21hcmdpbi1sZWZ0OiAwO2NvbG9yOiAjOGI5YWI5O30KI2NhbGVuRGl2IC5zQ2FsTW9uIHtjdXJzb3I6IGRlZmF1bHQ7ZGlzcGxheTogaW5saW5lLWJsb2NrO2NvbG9yOiAjODg4O3dpZHRoOiAxMTBweDtmb250LXNpemU6IDEycHg7fQp0YWJsZS5jYWxEYXkgdGQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O30KdGFibGUuY2FsRGF5eyBjb2xvcjojMjIyOyBtYXJnaW4tbGVmdDotMTBweDsgYm9yZGVyLXNwYWNpbmc6MTJweDt9CnRhYmxlLmNhbERheSB0ZCwgdGFibGUuY2FsRGF5IHRoeyBmb250LXNpemU6IHZhcigtLWNybS1leHRyYS1tZWRpdW0tZm9udC1zaXplKTsgY3Vyc29yOmRlZmF1bHQ7Ym9yZGVyLXJhZGl1czozcHg7IHRleHQtYWxpZ246Y2VudGVyOyAgcGFkZGluZzozcHggNXB4OyBmb250LWZhbWlseTogaGVsdmV0aWNhLHNhbnMtc2VyaWYgIWltcG9ydGFudDsgfQp0YWJsZS5jYWxEYXkgdGQuc2VsLHRhYmxlLmNhbERheSB0ZC5zZWw6aG92ZXJ7Y29sb3I6I2ZmZjsgYmFja2dyb3VuZDojYjNiM2IzOyBib3JkZXItcmFkaXVzOjNweDt9CnRhYmxlLmNhbERheSB0ZC5ub051bSx0YWJsZS5jYWxEYXkgdGQubHQtZ3JheXtjb2xvcjojYzFjMWMxO30KLnZwdmwsIC50eHQtY3RyIHt0ZXh0LWFsaWduOiBjZW50ZXI7fQojY2FsQnRucyBhLCAubHl0ZUNhbEJ0bnMgLmx5dGVDYWxDdXJyZW50RGF0ZSBhIHtjb2xvcjogdmFyKC0tbGlua0NvbG9yKTtmb250LXNpemU6IDE0cHg7dGV4dC1kZWNvcmF0aW9uOiBub25lO30KI2NhbGVuRGl2ICNjYWxCdG5zIHt3aWR0aDogMTgzcHg7bWFyZ2luLWxlZnQ6IDEwcHg7Ym9yZGVyLXRvcDogMDtmb250LXNpemU6IDExcHg7cGFkZGluZzogM3B4IDAgMTJweCFpbXBvcnRhbnQ7fQouYXJyb3cge2JvcmRlcjogc29saWQgIzY2Njtib3JkZXItd2lkdGg6IDAgMXB4IDFweCAwO2Rpc3BsYXk6IGlubGluZS1ibG9jaztoZWlnaHQ6IDZweDt3aWR0aDogNnB4O30KI2NhbGVuRGl2IC5yaWdodCB7dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7fQojY2FsZW5EaXYgLmxlZnQge3RyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTt9Ci5tTE1pbnVzMnttYXJnaW4tbGVmdDogLTJweDt9Ci5tUk1pbnVzMnttYXJnaW4tcmlnaHQ6IC0ycHg7fQoudmFte3ZlcnRpY2FsLWFsaWduOiBtaWRkbGU7fQoudGVtcENhbERpdntkaXNwbGF5OiBub25lO21hcmdpbjogMDtwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogMTAwMDtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjYzBjNmNjOyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjMpO2JveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjMpOyBib3JkZXItdG9wOiAwO3RvcDogMjBweDt9PC9zdHlsZT4KCTxzY3JpcHQ+CgkJZnVuY3Rpb24gcHJpdmFjeUFsZXJ0NDkxODQzMDAwMDQwMDUwMTA3KCkKCQl7CgkJCXZhciBwcml2YWN5VG9vbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcml2YWN5VG9vbDQ5MTg0MzAwMDA0MDA1MDEwNycpOwoJCQl2YXIgcHJpdmFjeUVyciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcml2YWN5RXJyNDkxODQzMDAwMDQwMDUwMTA3Jyk7CgkJCWlmKHByaXZhY3lUb29sICE9dW5kZWZpbmVkICYmICFwcml2YWN5VG9vbC5jaGVja2VkICkKCQkJewoJCQkJcHJpdmFjeUVyci5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJzsKCQkJCXByaXZhY3lUb29sLmZvY3VzKCk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJcmV0dXJuIHRydWU7CgkJfQoJCWZ1bmN0aW9uIGRpc2FibGVFcnI0OTE4NDMwMDAwNDAwNTAxMDcoKQoJCXsKCQkJdmFyIHByaXZhY3lUb29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaXZhY3lUb29sNDkxODQzMDAwMDQwMDUwMTA3Jyk7CgkJCXZhciBwcml2YWN5RXJyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaXZhY3lFcnI0OTE4NDMwMDAwNDAwNTAxMDcnKTsKCQkJaWYocHJpdmFjeVRvb2wgIT11bmRlZmluZWQgJiYgcHJpdmFjeVRvb2wuY2hlY2tlZCAmJiBwcml2YWN5RXJyICE9dW5kZWZpbmVkICkKCQkJewoJCQkJcHJpdmFjeUVyci5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nOwoJCQl9CgkJfQoJZnVuY3Rpb24gdmFsaWRhdGVFbWFpbDQ5MTg0MzAwMDA0MDA1MDEwNygpCgl7CgkJdmFyIGZvcm0gPSBkb2N1bWVudC5mb3Jtc1snV2ViVG9MZWFkczQ5MTg0MzAwMDA0MDA1MDEwNyddOwoJCXZhciBlbWFpbEZsZCA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnW2Z0eXBlPWVtYWlsXScpOwoJCXZhciBpOwoJCWZvciAoaSA9IDA7IGkgPCBlbWFpbEZsZC5sZW5ndGg7IGkrKykKCQl7CgkJCXZhciBlbWFpbFZhbCA9IGVtYWlsRmxkW2ldLnZhbHVlOwoJCQlpZigoZW1haWxWYWwucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSkubGVuZ3RoIT0wICkKCQkJewoJCQkJdmFyIGF0cG9zPWVtYWlsVmFsLmluZGV4T2YoJ0AnKTsKCQkJCXZhciBkb3Rwb3M9ZW1haWxWYWwubGFzdEluZGV4T2YoJy4nKTsKCQkJCWlmIChhdHBvczwxIHx8IGRvdHBvczxhdHBvcysyIHx8IGRvdHBvcysyPj1lbWFpbFZhbC5sZW5ndGgpCgkJCQl7CgkJCQkJYWxlcnQoJ0ludHJvZHV6Y2EgdW5hIGRpcmVjY2nDs24gZGUgY29ycmVvIGVsZWN0csOzbmljbyB2w6FsaWRhLiAnKTsKCQkJCQllbWFpbEZsZFtpXS5mb2N1cygpOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gdHJ1ZTsKCX0KCWZ1bmN0aW9uIHZhbGlkYXRlRGF0ZUZvcm1hdDQ5MTg0MzAwMDA0MDA1MDEwNygpCgl7CgkJdmFyIGZvcm0gPSBkb2N1bWVudC5mb3Jtc1snV2ViVG9MZWFkczQ5MTg0MzAwMDA0MDA1MDEwNyddOwoJCXZhciBkYXRlRmxkcyA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnW2Z0eXBlPWRhdGVdJyk7CgkJdmFyIGk7CgkJZm9yIChpID0gMDsgaSA8IGRhdGVGbGRzLmxlbmd0aDsgaSsrKQoJCXsKCQkJdmFyIGRhdGVGbGQgPSBkYXRlRmxkc1tpXTsKCQkJdmFyIHVzclB0cm4gPSBkYXRlRmxkLnBsYWNlaG9sZGVyOwoJCQl2YXIgZGF0ZVZhbCA9IGRhdGVGbGQudmFsdWU7CgkJCWlmKGRhdGVWYWwudHJpbSgpICE9ICcnKXsKCQkJCXZhciB2YWxkID0gZGF0ZUZvcm1hdENvbnZlcnQudmFsaWRhdGUoZGF0ZVZhbCx1c3JQdHJuKTsKCQkJCWlmKCF2YWxkKXsKCQkJCQlhbGVydCgnRXNjcmliYSB1bmEgZmVjaGEgdsOhbGlkYSAnKTsKCQkJCQlkYXRlRmxkLmZvY3VzKCk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiB0cnVlOwoJfQoKIAkgIGZ1bmN0aW9uIGNoZWNrTWFuZGF0b3J5NDkxODQzMDAwMDQwMDUwMTA3KCkgewoJCXZhciBtbmRGaWxlZHMgPSBuZXcgQXJyYXkoJ0NvbXBhbnknLCdMYXN0IE5hbWUnLCdMRUFEQ0Y2JywnTEVBRENGNTQnLCdMRUFEQ0Y4MicsJ0xFQURDRjEyMScpOwoJCXZhciBmbGRMYW5nVmFsID0gbmV3IEFycmF5KCdOb21icmVceDIweVx4MjBhcGVsbGlkb3NceDIwZGVsXHgyMHByb2dlbml0b3JceDJGYScsJ05vbWJyZVx4MjB5XHgyMGFwZWxsaWRvc1x4MjBkZWxceDIwZXN0dWRpYW50ZScsJ0VceDJEbWFpbCcsJ1RlbFx4RTlmb25vJywnRmVjaGFceDIwZGVceDIwbmFjaW1pZW50b1x4MjBkZWxceDIwZXN0dWRpYW50ZScsJ1Byb3ZpbmNpYScpOwoJCWZvcihpPTA7aTxtbmRGaWxlZHMubGVuZ3RoO2krKykgewoJCSAgdmFyIGZpZWxkT2JqPWRvY3VtZW50LmZvcm1zWydXZWJUb0xlYWRzNDkxODQzMDAwMDQwMDUwMTA3J11bbW5kRmlsZWRzW2ldXTsKCQkgIGlmKGZpZWxkT2JqKSB7CgkJCWlmICgoKGZpZWxkT2JqLnZhbHVlKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpKS5sZW5ndGg9PTApIHsKCQkJIGlmKGZpZWxkT2JqLnR5cGUgPT0nZmlsZScpCgkJCQl7IAoJCQkJIGFsZXJ0KCdTZWxlY2Npb25lIHVuIGFyY2hpdm8gcGFyYSBjYXJnYXIuJyk7IAoJCQkJIGZpZWxkT2JqLmZvY3VzKCk7IAoJCQkJIHJldHVybiBmYWxzZTsKCQkJCX0gCgkJCWFsZXJ0KGZsZExhbmdWYWxbaV0gKycgbm8gcHVlZGUgZXN0YXIgdmFjw61vLicpOyAKICAgCSAgIAkgIAkgIGZpZWxkT2JqLmZvY3VzKCk7CiAgIAkgICAJICAJICByZXR1cm4gZmFsc2U7CgkJCX0gIGVsc2UgaWYoZmllbGRPYmoubm9kZU5hbWU9PSdTRUxFQ1QnKSB7CiAgCSAgIAkgICAJIGlmKGZpZWxkT2JqLm9wdGlvbnNbZmllbGRPYmouc2VsZWN0ZWRJbmRleF0udmFsdWU9PSctTm9uZS0nKSB7CgkJCQlhbGVydChmbGRMYW5nVmFsW2ldICsnIG5vIHB1ZWRlIHNlciBudWxvLicpOyAKCQkJCWZpZWxkT2JqLmZvY3VzKCk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCSAgIH0KCQkJfSBlbHNlIGlmKGZpZWxkT2JqLnR5cGUgPT0nY2hlY2tib3gnKXsKIAkgCSAJIGlmKGZpZWxkT2JqLmNoZWNrZWQgPT0gZmFsc2UpewoJCQkJYWxlcnQoJ1BsZWFzZSBhY2NlcHQgICcrZmxkTGFuZ1ZhbFtpXSk7CgkJCQlmaWVsZE9iai5mb2N1cygpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQkgICB9IAoJCQkgfSAKCQkJIHRyeSB7CgkJCSAgICAgaWYoZmllbGRPYmoubmFtZSA9PSAnTGFzdCBOYW1lJykgewoJCQkJbmFtZSA9IGZpZWxkT2JqLnZhbHVlOwogCSAJIAkgICAgfQoJCQl9IGNhdGNoIChlKSB7fQoJCSAgICB9CgkJfQoJCWlmKCF2YWxpZGF0ZUVtYWlsNDkxODQzMDAwMDQwMDUwMTA3KCkpe3JldHVybiBmYWxzZTt9CgkJCgkJaWYoIXByaXZhY3lBbGVydDQ5MTg0MzAwMDA0MDA1MDEwNygpKXtyZXR1cm4gZmFsc2U7fQoJCQoJCWlmKCF2YWxpZGF0ZURhdGVGb3JtYXQ0OTE4NDMwMDAwNDAwNTAxMDcoKSl7cmV0dXJuIGZhbHNlO30KCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3JtV2ViVG9FbnRpdHlGb3JtIC5mb3Jtc3VibWl0Jykuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpOwoJfQoKZnVuY3Rpb24gdG9vbHRpcFNob3c0OTE4NDMwMDAwNDAwNTAxMDcoZWwpewoJdmFyIHRvb2x0aXAgPSBlbC5uZXh0RWxlbWVudFNpYmxpbmc7Cgl2YXIgdG9vbHRpcERpc3BsYXkgPSB0b29sdGlwLnN0eWxlLmRpc3BsYXk7CglpZih0b29sdGlwRGlzcGxheSA9PSAnbm9uZScpewoJCXZhciBhbGxUb29sdGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemN3Zl90b29sdGlwX292ZXInKTsKCQlmb3IoaT0wOyBpPGFsbFRvb2x0aXAubGVuZ3RoOyBpKyspewoJCQlhbGxUb29sdGlwW2ldLnN0eWxlLmRpc3BsYXk9J25vbmUnOwoJCX0KCQl0b29sdGlwLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoJfWVsc2V7CgkJdG9vbHRpcC5zdHlsZS5kaXNwbGF5PSdub25lJzsKCX0KfQo8L3NjcmlwdD4KCTwhLS0gRG8gbm90IHJlbW92ZSB0aGlzIC0tLSBBbmFseXRpY3MgVHJhY2tpbmcgY29kZSBzdGFydHMgLS0+PHNjcmlwdCBpZD0nd2ZfYW5hbCcgc3JjPSdodHRwczovL2NybS56b2hvcHVibGljLmNvbS9jcm0vV2ViRm9ybUFuYWx5dGljc1NlcnZlU2VydmxldD9yaWQ9MTc2NzJiOTU1N2NhZDdjMTgzODIxMWY5MDRkMTQzODgyZWRkYWZlOWZjZDM3ZTA2ZDQ4YTBhNjNjYTA5MjAzNGdpZDczYzFjODA2YzhhYjMxMGM2ZWViMzFjNjI0YmIzMWNhZDkxMzYzYTBhNWFmYmY4ZjkzNGMwNWUwYmI4MDNhODZnaWQ4ODVlM2MxMDQ1YmQ5YmRjYzkxYmRmMzBmODJiNTY5NmdpZDE0ZjRlYzE2NDMxZTA2ODYxNTBkYWE0M2YzMjEwNTEzJnR3PTYxNjkwYjk2YzFkMDQ3MWI2MzhmMzE0MjZmMzhlNjhhYTY3ZmI3ZWQ2ZGE4NmYzMmRjMTBhZDgxN2ZlNTVhMGEnPjwvc2NyaXB0PjwhLS0gRG8gbm90IHJlbW92ZSB0aGlzIC0tLSBBbmFseXRpY3MgVHJhY2tpbmcgY29kZSBlbmRzLiAtLT48L2Zvcm0+CjwvZGl2Pg==