{"product_id":"custom-uv-dtf-transfer-stickers","title":"Custom UV DTF Transfer stickers","description":"\u003cdiv id=\"artetribe-uv-dtf-preview-embed\" class=\"artetribe-uv-dtf-preview-embed\"\u003e\n  \u003cdiv class=\"artetribe-uv-dtf-preview-embed__heading\"\u003e\n    \u003ch2\u003ePreview your UV DTF transfer\u003c\/h2\u003e\n    \u003cp\u003eUpload your artwork and check it on a laptop, car window, glass or helmet before ordering.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"artetribe-uv-dtf-preview-embed__frame\"\u003e\n    \u003cdiv class=\"artetribe-uv-dtf-preview-embed__loading\" data-preview-loading\u003eLoading preview...\u003c\/div\u003e\n    \u003ciframe class=\"artetribe-uv-dtf-preview-embed__iframe\" data-preview-frame title=\"ArteTribe UV DTF transfer preview\" loading=\"lazy\"\u003e\u003c\/iframe\u003e\n    \u003cscript type=\"text\/plain\" data-preview-source\u003ePCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KICA8dGl0bGU+QXJ0ZVRyaWJlIFVWIERURiBQcmV2aWV3PC90aXRsZT4KICA8c3R5bGU+CiAgICA6cm9vdHstLWNhbnZhczojZjhmYmZkOy0tc3VyZmFjZTojZTdmM2ZiOy0td2hpdGU6I2ZmZjstLWluazojMTcyMDMzOy0tbXV0ZWQ6IzUyNjE3NjstLWxpbmU6I2M5ZDdlNDstLWJsdWU6IzIwNDhlODstLWJsdWUyOiMxNzNiYzg7LS1kYW5nZXI6I2I0MjMxODstLXN1Y2Nlc3M6IzA2NzY0NzstLXI6MTZweDstLXNoYWRvdzowIDE0cHggMzZweCByZ2JhKDAsMCwwLC4xMil9CiAgICAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH1odG1sLGJvZHl7bWFyZ2luOjA7bWluLWhlaWdodDoxMDAlO2JhY2tncm91bmQ6dmFyKC0tY2FudmFzKTtjb2xvcjp2YXIoLS1pbmspO2ZvbnQtZmFtaWx5OmluaGVyaXQsQXJpYWwsc2Fucy1zZXJpZn1idXR0b24saW5wdXR7Zm9udDppbmhlcml0fWJ1dHRvbntjdXJzb3I6cG9pbnRlcn1idXR0b246Zm9jdXMtdmlzaWJsZSxpbnB1dDpmb2N1cy12aXNpYmxle291dGxpbmU6M3B4IHNvbGlkIHJnYmEoMzIsNzIsMjMyLC4yOCk7b3V0bGluZS1vZmZzZXQ6MnB4fTo6c2VsZWN0aW9ue2JhY2tncm91bmQ6I2NmZTBmZjtjb2xvcjp2YXIoLS1pbmspfQogICAgLmFwcHttYXgtd2lkdGg6MTQ0MHB4O21hcmdpbjphdXRvO3BhZGRpbmc6MThweH0ud29ya3NwYWNle2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSAzOTBweDttaW4taGVpZ2h0OjY4MHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yKTtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTtib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9CiAgICAuc3RhZ2V7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MDtwYWRkaW5nOjM4cHg7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKX1jYW52YXN7ZGlzcGxheTpibG9jazt3aWR0aDptaW4oMTAwJSw3NjBweCk7aGVpZ2h0OmF1dG87bWF4LWhlaWdodDo2NTBweDtvYmplY3QtZml0OmNvbnRhaW59Lm5vdGljZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjIycHg7dG9wOjE4cHg7bWF4LXdpZHRoOjM5MHB4O3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoxcHggc29saWQgI2VjZDdhMDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDojZmZmOWU5O2NvbG9yOiM3OTUyMGI7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS40NX0uc3RhZ2Utbm90ZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjIycHg7Ym90dG9tOjE4cHg7cGFkZGluZzo5cHggMTJweDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MTJweDtib3gtc2hhZG93OjAgN3B4IDE4cHggcmdiYSgwLDAsMCwuMDgpfQogICAgLnBhbmVse21pbi13aWR0aDowO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1saW5lKTtvdmVyZmxvdzphdXRvO3Njcm9sbGJhci1jb2xvcjojOWFhYmJiIHRyYW5zcGFyZW50O3Njcm9sbGJhci13aWR0aDp0aGlufS5ibG9ja3twYWRkaW5nOjE4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RjZTZlZX0uYmxvY2s6bGFzdC1jaGlsZHtib3JkZXI6MH0ubGFiZWx7ZGlzcGxheTpibG9jazttYXJnaW46MCAwIDEwcHg7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzouMDU1ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS51cGxvYWQtcm93LC5hY3Rpb24tcm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6OHB4fS5idG57bWluLWhlaWdodDo0MnB4O2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6OXB4IDEycHg7YmFja2dyb3VuZDojZThmM2ZhO2NvbG9yOiMwODdiYjU7Zm9udC13ZWlnaHQ6NzAwfS5idG46aG92ZXJ7YmFja2dyb3VuZDojZGNlY2Y2fS5idG4ucHJpbWFyeXtiYWNrZ3JvdW5kOiMwYjgzYmQ7Y29sb3I6I2ZmZn0uYnRuLnByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZDojMDg3M2E2fS5idG4uYmx1ZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmZ9LmJ0bi5ibHVlOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYmx1ZTIpfS5idG46ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ4O2JveC1zaGFkb3c6bm9uZX0uZmlsZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZX0uc3RhdHVze21pbi1oZWlnaHQ6MTlweDttYXJnaW46OHB4IDAgMDtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjEycHh9LnN0YXR1cy5lcnJvcntjb2xvcjp2YXIoLS1kYW5nZXIpfS5zdGF0dXMuc3VjY2Vzc3tjb2xvcjp2YXIoLS1zdWNjZXNzKX0KICAgIC5zdXJmYWNlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjhweH0uc3VyZmFjZXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjUycHggMWZyO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OXB4O21pbi1oZWlnaHQ6NjJweDtwYWRkaW5nOjdweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taW5rKTt0ZXh0LWFsaWduOmxlZnR9LnN1cmZhY2U6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM4ZGE2YmR9LnN1cmZhY2VbYXJpYS1wcmVzc2VkPSJ0cnVlIl17Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO2JhY2tncm91bmQ6I2VlZjNmZjtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1ibHVlKX0uc3VyZmFjZSBpbWd7d2lkdGg6NTJweDtoZWlnaHQ6NDZweDtvYmplY3QtZml0OmNvbnRhaW59LnN1cmZhY2Ugc3Bhbntmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDB9CiAgICAuY29udHJvbHttYXJnaW4tdG9wOjE0cHh9LmNvbnRyb2wtaGVhZHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7bWFyZ2luLWJvdHRvbTo3cHg7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMH0udmFsdWV7Y29sb3I6dmFyKC0taW5rKTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LnJhbmdle3dpZHRoOjEwMCU7YWNjZW50LWNvbG9yOnZhcigtLWJsdWUpfS50d297ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxNHB4fS5yZXNldHt3aWR0aDoxMDAlO21hcmdpbi10b3A6MTRweH0uc2NlbmUtcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHh9LmNvbG9ye3dpZHRoOjQycHg7aGVpZ2h0OjMycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjJweDtiYWNrZ3JvdW5kOiNmZmZ9LnByb2R1Y3Rpb24gcHttYXJnaW46MCAwIDEycHg7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNX0uaGludHttYXJnaW46MTBweCAwIDA7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMXB4O2xpbmUtaGVpZ2h0OjEuNDV9Lm1vYmlsZS1oYW5kbGV7ZGlzcGxheTpub25lfQogICAgQG1lZGlhKG1heC13aWR0aDo3NjBweCl7LmFwcHtwYWRkaW5nOjB9LndvcmtzcGFjZXtkaXNwbGF5OmJsb2NrO21pbi1oZWlnaHQ6MTAwc3ZoO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmV9LnN0YWdle21pbi1oZWlnaHQ6NThzdmg7cGFkZGluZzo2OHB4IDEycHggNTZweH0ubm90aWNle2xlZnQ6MTJweDtyaWdodDoxMnB4O3RvcDoxMnB4O21heC13aWR0aDpub25lfS5zdGFnZS1ub3Rle2xlZnQ6MTJweDtib3R0b206MTJweH0ucGFuZWx7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7bWF4LWhlaWdodDpub25lfS5tb2JpbGUtaGFuZGxle2Rpc3BsYXk6YmxvY2s7d2lkdGg6NDRweDtoZWlnaHQ6NHB4O21hcmdpbjoxMHB4IGF1dG8gMnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2E5YmJjOX0uYmxvY2t7cGFkZGluZzoxNXB4fS5zdXJmYWNlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn0uc3VyZmFjZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6NDJweCAxZnJ9LnN1cmZhY2UgaW1ne3dpZHRoOjQycHg7aGVpZ2h0OjQwcHh9LnR3b3tnYXA6MTBweH19CiAgICBAbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpuby1wcmVmZXJlbmNlKXsuYnRuLC5zdXJmYWNle3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMThzIGVhc2UsYm9yZGVyLWNvbG9yIC4xOHMgZWFzZSxib3gtc2hhZG93IC4xOHMgZWFzZX19CiAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICA8bWFpbiBjbGFzcz0iYXBwIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJ3b3Jrc3BhY2UiIGFyaWEtbGFiZWw9IlVWIERURiB0cmFuc2ZlciBwcmV2aWV3Ij4KICAgICAgPGRpdiBjbGFzcz0ic3RhZ2UiPgogICAgICAgIDxkaXYgY2xhc3M9Im5vdGljZSI+UHJldmlldyBjb2xvcnMgYW5kIHBsYWNlbWVudCBhcmUgaWxsdXN0cmF0aXZlLiBDb25maXJtIGZpbmFsIHNpemUgYW5kIGFydHdvcmsgd2l0aCBjdXN0b21lciBzZXJ2aWNlIGJlZm9yZSBwcm9kdWN0aW9uLjwvZGl2PgogICAgICAgIDxjYW52YXMgaWQ9InByZXZpZXciIHdpZHRoPSI5NDUiIGhlaWdodD0iOTQ1IiBhcmlhLWxhYmVsPSJVViBEVEYgdHJhbnNmZXIgcHJldmlldyBjYW52YXMiPjwvY2FudmFzPgogICAgICAgIDxkaXYgY2xhc3M9InN0YWdlLW5vdGUiIGlkPSJzdGFnZU5vdGUiPlVwbG9hZCBhcnR3b3JrIHRvIHJlcGxhY2UgdGhlIHNhbXBsZSBzdGlja2VyPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8YXNpZGUgY2xhc3M9InBhbmVsIiBhcmlhLWxhYmVsPSJQcmV2aWV3IGNvbnRyb2xzIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJtb2JpbGUtaGFuZGxlIiBhcmlhLWxhYmVsPSJQcmV2aWV3IGNvbnRyb2xzIj48L2J1dHRvbj4KICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtcm93Ij4KICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJidG4gcHJpbWFyeSIgZm9yPSJhcnR3b3JrIiBzdHlsZT0iZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlciI+VXBsb2FkIFlvdXIgSW1hZ2U8L2xhYmVsPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJyZW1vdmVCZyIgZGlzYWJsZWQ+QXV0byBSZW1vdmUgQmFja2dyb3VuZDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZpbGUiIGlkPSJhcnR3b3JrIiB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdlL3BuZyxpbWFnZS9qcGVnLGltYWdlL3dlYnAiPgogICAgICAgICAgPHAgY2xhc3M9InN0YXR1cyIgaWQ9InN0YXR1cyIgYXJpYS1saXZlPSJwb2xpdGUiPlBORywgSlBHIG9yIFdlYlAuIFRyYW5zcGFyZW50IFBORyByZWNvbW1lbmRlZC48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj5QcmV2aWV3IHN1cmZhY2U8L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdXJmYWNlcyIgaWQ9InN1cmZhY2VzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwiPkFydHdvcmsgcGxhY2VtZW50PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbCI+PGRpdiBjbGFzcz0iY29udHJvbC1oZWFkIj48c3Bhbj5TaXplPC9zcGFuPjxzcGFuIGNsYXNzPSJ2YWx1ZSIgaWQ9InNjYWxlT3V0Ij4xMDAlPC9zcGFuPjwvZGl2PjxpbnB1dCBjbGFzcz0icmFuZ2UiIGlkPSJzY2FsZSIgdHlwZT0icmFuZ2UiIG1pbj0iNTUiIG1heD0iMTYwIiB2YWx1ZT0iMTAwIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InR3byI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wiPjxkaXYgY2xhc3M9ImNvbnRyb2wtaGVhZCI+PHNwYW4+SG9yaXpvbnRhbDwvc3Bhbj48c3BhbiBjbGFzcz0idmFsdWUiIGlkPSJ4T3V0Ij4wPC9zcGFuPjwvZGl2PjxpbnB1dCBjbGFzcz0icmFuZ2UiIGlkPSJ4IiB0eXBlPSJyYW5nZSIgbWluPSItMTAwIiBtYXg9IjEwMCIgdmFsdWU9IjAiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sIj48ZGl2IGNsYXNzPSJjb250cm9sLWhlYWQiPjxzcGFuPlZlcnRpY2FsPC9zcGFuPjxzcGFuIGNsYXNzPSJ2YWx1ZSIgaWQ9InlPdXQiPjA8L3NwYW4+PC9kaXY+PGlucHV0IGNsYXNzPSJyYW5nZSIgaWQ9InkiIHR5cGU9InJhbmdlIiBtaW49Ii0xMDAiIG1heD0iMTAwIiB2YWx1ZT0iMCI+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wiPjxkaXYgY2xhc3M9ImNvbnRyb2wtaGVhZCI+PHNwYW4+Um90YXRpb248L3NwYW4+PHNwYW4gY2xhc3M9InZhbHVlIiBpZD0icm90YXRpb25PdXQiPjDCsDwvc3Bhbj48L2Rpdj48aW5wdXQgY2xhc3M9InJhbmdlIiBpZD0icm90YXRpb24iIHR5cGU9InJhbmdlIiBtaW49Ii0yNSIgbWF4PSIyNSIgdmFsdWU9IjAiPjwvZGl2PgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIHJlc2V0IiBpZD0icmVzZXQiPlJlc2V0IFBsYWNlbWVudDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj48ZGl2IGNsYXNzPSJzY2VuZS1yb3ciPjxzcGFuIGNsYXNzPSJsYWJlbCIgc3R5bGU9Im1hcmdpbjowIj5TY2VuZSBiYWNrZ3JvdW5kPC9zcGFuPjxpbnB1dCBjbGFzcz0iY29sb3IiIGlkPSJiYWNrZ3JvdW5kIiB0eXBlPSJjb2xvciIgdmFsdWU9IiNlN2YzZmIiPjxidXR0b24gY2xhc3M9ImJ0biIgaWQ9InNhdmUiPlNhdmUgSW1hZ2U8L2J1dHRvbj48L2Rpdj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayBwcm9kdWN0aW9uIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+UHJvZHVjdGlvbjwvc3Bhbj4KICAgICAgICAgIDxwPkRvd25sb2FkIGEgY29tcGxldGUgcHJldmlldyBwYWNrIGZvciBjdXN0b21lci1zZXJ2aWNlIGNvbmZpcm1hdGlvbiwgb3IgYXR0YWNoIHRoZSBhcnR3b3JrIGFuZCBzZXR0aW5ncyB0byB0aGlzIG9yZGVyLjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1yb3ciPjxidXR0b24gY2xhc3M9ImJ0biIgaWQ9ImRvd25sb2FkIiBkaXNhYmxlZD5Eb3dubG9hZCBQYWNrPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIGJsdWUiIGlkPSJhdHRhY2giIGRpc2FibGVkPkF0dGFjaCB0byBPcmRlcjwvYnV0dG9uPjwvZGl2PgogICAgICAgICAgPHAgY2xhc3M9ImhpbnQiIGlkPSJwcm9kdWN0aW9uU3RhdHVzIiBhcmlhLWxpdmU9InBvbGl0ZSI+VXBsb2FkIGFydHdvcmsgYmVmb3JlIGV4cG9ydGluZyBvciBhdHRhY2hpbmcuPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2FzaWRlPgogICAgPC9zZWN0aW9uPgogIDwvbWFpbj4KICA8c2NyaXB0PgogICgoKT0+ewogICAgJ3VzZSBzdHJpY3QnOwogICAgY29uc3QgQVNTRVRTPXtsYXB0b3A6Jy9jZG4vc2hvcC9maWxlcy9DdXN0b21fbGFwdG9wX3N0aWNrZXJzLnBuZycsY2FyOicvY2RuL3Nob3AvZmlsZXMvYXJ0ZXRyaWJlLUN1c3RvbVVWRFRGVHJhbnNmZXJzLnBuZycsY3VwOicvY2RuL3Nob3AvZmlsZXMvY3VwLnBuZycsaGVsbWV0OicvY2RuL3Nob3AvZmlsZXMvQ3VzdG9tX0hlbG1ldF9TdGlja2Vycy5wbmcnfTsKICAgIGNvbnN0IGNhcnJpZXJzPXsKICAgICAgbGFwdG9wOntsYWJlbDonTGFwdG9wJyxzcmM6QVNTRVRTLmxhcHRvcCxjbGVhbjpbNDQ1LDI2MCwyODIsMzAwXSxhcnQ6WzU4NSw0MTQsMTg4LDE4OCwwXSxmaWxtOls1ODUsNDE0LDI1NSwyNzIsMF0scGVyc3BlY3RpdmU6W1s0NTgsMjg2XSxbNzEzLDI4MF0sWzcyNCw1MjFdLFs0NjksNTQ4XV0sc2FtcGxlOltbNDMwLDM4MF0sWzc0MCwzODBdXX0sCiAgICAgIGNhcjp7bGFiZWw6J0NhciB3aW5kb3cnLHNyYzpBU1NFVFMuY2FyLGNsZWFuOls2MzUsMjk0LDE1MCwxNDBdLGNsZWFuQXhpczondmVydGljYWwnLGFydDpbNzA5LDM2MSw5MCw5MCwwXSxmaWxtOls3MDksMzYxLDEzMCwxMjIsMF0sc2FtcGxlOltbNjIwLDM1MF0sWzc5OCwzNTBdXX0sCiAgICAgIGN1cDp7bGFiZWw6J0dsYXNzJyxzcmM6QVNTRVRTLmN1cCxjbGVhbjpbMjcwLDI0MCw0MTAsMzkwXSxhcnQ6WzQ3NSw0MzMsMjMyLDIzMiwwXSxmaWxtOls0NzUsNDMzLDM3NSwzNjAsMF0sc2FtcGxlOltbMjUyLDQzMF0sWzY5OCw0MzBdXX0sCiAgICAgIGhlbG1ldDp7bGFiZWw6J0hlbG1ldCcsc3JjOkFTU0VUUy5oZWxtZXQsY2xlYW46WzQwMCwxOTUsNDI1LDQ0MF0sY2xlYW5BeGlzOid2ZXJ0aWNhbCcsYXJ0Ols2MTAsNDA4LDIyMCwyMjAsMF0sZmlsbTpbNjEwLDQwOCwzNTUsMzYwLDBdLHNhbXBsZTpbWzQwMCw0MDBdLFs4MjAsNDAwXV19CiAgICB9OwogICAgY29uc3Qgc3RhdGU9e2NhcnJpZXI6J2xhcHRvcCcsaW1hZ2VzOnt9LGNsZWFuZWQ6e30sYXJ0Om51bGwsYXJ0Qm91bmRzOm51bGwsb3JpZ2luYWw6bnVsbCxvcmlnaW5hbEZpbGU6bnVsbCxwcm9jZXNzZWRGaWxlOm51bGwsYmFja2dyb3VuZFJlbW92ZWQ6ZmFsc2Usc2NhbGU6MTAwLHg6MCx5OjAscm90YXRpb246MCxiZzonI2U3ZjNmYid9OwogICAgY29uc3QgJD1zPT5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMpLGNhbnZhcz0kKCcjcHJldmlldycpLGN0eD1jYW52YXMuZ2V0Q29udGV4dCgnMmQnLHthbHBoYTpmYWxzZX0pOwogICAgY29uc3QgdWk9e2ZpbGU6JCgnI2FydHdvcmsnKSxzdGF0dXM6JCgnI3N0YXR1cycpLHJlbW92ZTokKCcjcmVtb3ZlQmcnKSxzYXZlOiQoJyNzYXZlJyksZG93bmxvYWQ6JCgnI2Rvd25sb2FkJyksYXR0YWNoOiQoJyNhdHRhY2gnKSxwcm9kOiQoJyNwcm9kdWN0aW9uU3RhdHVzJyksbm90ZTokKCcjc3RhZ2VOb3RlJyksc3VyZmFjZXM6JCgnI3N1cmZhY2VzJyksc2NhbGU6JCgnI3NjYWxlJykseDokKCcjeCcpLHk6JCgnI3knKSxyb3RhdGlvbjokKCcjcm90YXRpb24nKSxiZzokKCcjYmFja2dyb3VuZCcpfTsKICAgIGNvbnN0IGVzY2FwZUh0bWw9cz0+U3RyaW5nKHMpLnJlcGxhY2UoL1smPD4iJ10vZyxjPT4oeycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnIic6JyZxdW90OycsIiciOicmIzM5Oyd9W2NdKSk7CiAgICBjb25zdCBzdGF0dXM9KHRleHQsdHlwZT0nJyk9Pnt1aS5zdGF0dXMudGV4dENvbnRlbnQ9dGV4dDt1aS5zdGF0dXMuY2xhc3NOYW1lPSdzdGF0dXMgJyt0eXBlfTsKICAgIGNvbnN0IGxvYWRJbWFnZT1zcmM9Pm5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9Pntjb25zdCBpbT1uZXcgSW1hZ2UoKTtpbS5vbmxvYWQ9KCk9PnJlc29sdmUoaW0pO2ltLm9uZXJyb3I9cmVqZWN0O2ltLnNyYz1zcmN9KTsKICAgIGZ1bmN0aW9uIGJ1aWxkU3VyZmFjZUJ1dHRvbnMoKXt1aS5zdXJmYWNlcy5pbm5lckhUTUw9T2JqZWN0LmVudHJpZXMoY2FycmllcnMpLm1hcCgoW2tleSxjXSk9PmA8YnV0dG9uIGNsYXNzPSJzdXJmYWNlIiBkYXRhLWNhcnJpZXI9IiR7a2V5fSIgYXJpYS1wcmVzc2VkPSIke2tleT09PXN0YXRlLmNhcnJpZXJ9Ij48aW1nIHNyYz0iJHtjLnNyY30iIGFsdD0iIj48c3Bhbj4ke2MubGFiZWx9PC9zcGFuPjwvYnV0dG9uPmApLmpvaW4oJycpO3VpLnN1cmZhY2VzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxlPT57Y29uc3QgYj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1jYXJyaWVyXScpO2lmKCFiKXJldHVybjtzdGF0ZS5jYXJyaWVyPWIuZGF0YXNldC5jYXJyaWVyO3VpLnN1cmZhY2VzLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdXJmYWNlJykuZm9yRWFjaCh4PT54LnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJyxTdHJpbmcoeD09PWIpKSk7cmVzZXRQbGFjZW1lbnQoKTtyZW5kZXIoKX0pfQogICAgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUNhcnJpZXJzKCl7YXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXMoY2FycmllcnMpLm1hcChhc3luYyhba2V5LGNdKT0+e2NvbnN0IGltPWF3YWl0IGxvYWRJbWFnZShjLnNyYyk7c3RhdGUuaW1hZ2VzW2tleV09aW07Y29uc3Qgb2ZmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO29mZi53aWR0aD05NDU7b2ZmLmhlaWdodD05NDU7Y29uc3Qgb2M9b2ZmLmdldENvbnRleHQoJzJkJyk7b2MuZHJhd0ltYWdlKGltLDAsMCw5NDUsOTQ1KTtjbGVhblN0aWNrZXIob2MsYy5jbGVhbixjLmNsZWFuQXhpcyk7c3RhdGUuY2xlYW5lZFtrZXldPW9mZn0pKTtyZW5kZXIoKX0KICAgIGZ1bmN0aW9uIGNsZWFuU3RpY2tlcihvYyxbeCx5LHcsaF0sYXhpcz0naG9yaXpvbnRhbCcpe2NvbnN0IHNyYz1vYy5nZXRJbWFnZURhdGEoMCwwLDk0NSw5NDUpLGRzdD1vYy5jcmVhdGVJbWFnZURhdGEodyxoKSxkPWRzdC5kYXRhLHM9c3JjLmRhdGE7Y29uc3QgbGVmdD1NYXRoLm1heCgwLHgtMTApLHJpZ2h0PU1hdGgubWluKDk0NCx4K3crMTApLHRvcD1NYXRoLm1heCgwLHktMTApLGJvdHRvbT1NYXRoLm1pbig5NDQseStoKzEwKTtmb3IobGV0IHl5PTA7eXk8aDt5eSsrKXtmb3IobGV0IHh4PTA7eHg8dzt4eCsrKXtjb25zdCB0PShheGlzPT09J3ZlcnRpY2FsJz95eS9NYXRoLm1heCgxLGgtMSk6eHgvTWF0aC5tYXgoMSx3LTEpKSxkaT0oeXkqdyt4eCkqNDtjb25zdCBhaT1heGlzPT09J3ZlcnRpY2FsJz8oKHRvcCo5NDUreCt4eCkqNCk6KCgoeSt5eSkqOTQ1K2xlZnQpKjQpO2NvbnN0IGJpPWF4aXM9PT0ndmVydGljYWwnPygoYm90dG9tKjk0NSt4K3h4KSo0KTooKCh5K3l5KSo5NDUrcmlnaHQpKjQpO2ZvcihsZXQgaz0wO2s8MztrKyspZFtkaStrXT1NYXRoLnJvdW5kKHNbYWkra10qKDEtdCkrc1tiaStrXSp0KTtkW2RpKzNdPTI1NX19b2MucHV0SW1hZ2VEYXRhKGRzdCx4LHkpfQogICAgZnVuY3Rpb24gcm91bmRlZFJlY3QoYyx4LHksdyxoLHIpe2NvbnN0IHJyPU1hdGgubWluKHIsdy8yLGgvMik7Yy5iZWdpblBhdGgoKTtjLnJvdW5kUmVjdCh4LHksdyxoLHJyKX0KICAgIGZ1bmN0aW9uIGRyYXdFbXB0eShjKXtjb25zdCBbY3gsY3ksLF09Y2FycmllcnNbc3RhdGUuY2Fycmllcl0uZmlsbTtjLnNhdmUoKTtjLnNldExpbmVEYXNoKFsxMiwxMF0pO2MubGluZVdpZHRoPTI7Yy5zdHJva2VTdHlsZT0nIzg1YTZiZCc7cm91bmRlZFJlY3QoYyxjeC0xMDUsY3ktODAsMjEwLDE2MCwxOCk7Yy5zdHJva2UoKTtjLnNldExpbmVEYXNoKFtdKTtjLmZpbGxTdHlsZT0nIzUyNjE3Nic7Yy50ZXh0QWxpZ249J2NlbnRlcic7Yy5mb250PSc3MDAgMThweCBBcmlhbCxzYW5zLXNlcmlmJztjLmZpbGxUZXh0KCdVUExPQUQgQVJUV09SSycsY3gsY3krNik7Yy5yZXN0b3JlKCl9CiAgICBmdW5jdGlvbiBkcmF3RmlsbShjLHcsaCxhcnRMZWZ0LGFydEJvdHRvbSl7Y29uc3QgZmlsbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtmaWxtLndpZHRoPU1hdGguY2VpbCh3KzQpO2ZpbG0uaGVpZ2h0PU1hdGguY2VpbChoKzQpO2NvbnN0IGY9ZmlsbS5nZXRDb250ZXh0KCcyZCcpLG94PTIsb3k9Mjtyb3VuZGVkUmVjdChmLG94LG95LHcsaCwxOCk7Y29uc3QgZz1mLmNyZWF0ZUxpbmVhckdyYWRpZW50KG94LG95LG94K3csb3kraCk7Zy5hZGRDb2xvclN0b3AoMCwncmdiYSgyNTUsMjU1LDI1NSwuMjgpJyk7Zy5hZGRDb2xvclN0b3AoLjU1LCdyZ2JhKDI1NSwyNTUsMjU1LC4wNSknKTtnLmFkZENvbG9yU3RvcCgxLCdyZ2JhKDIxMCwyMzEsMjQ3LC4xNiknKTtmLmZpbGxTdHlsZT1nO2YuZmlsbCgpO2Yuc3Ryb2tlU3R5bGU9J3JnYmEoMTEyLDE0MywxNjQsLjQ4KSc7Zi5saW5lV2lkdGg9MS41O2Yuc3Ryb2tlKCk7Y29uc3QgdGlwWD1veCthcnRMZWZ0LHRpcFk9b3krYXJ0Qm90dG9tLGVkZ2VZPU1hdGgubWF4KG95K2gqLjU1LHRpcFktaCouMjIpO2Yuc2F2ZSgpO2YuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSdkZXN0aW5hdGlvbi1vdXQnO2YuYmVnaW5QYXRoKCk7Zi5tb3ZlVG8ob3gsb3kraCk7Zi5saW5lVG8ob3gsZWRnZVkpO2YucXVhZHJhdGljQ3VydmVUbyhveCthcnRMZWZ0Ki40Nix0aXBZLWgqLjA4LHRpcFgsdGlwWSk7Zi5saW5lVG8ob3gsb3kraCk7Zi5jbG9zZVBhdGgoKTtmLmZpbGwoKTtmLnJlc3RvcmUoKTtmLmJlZ2luUGF0aCgpO2YubW92ZVRvKHRpcFgsdGlwWSk7Zi5xdWFkcmF0aWNDdXJ2ZVRvKG94K2FydExlZnQqLjQ0LHRpcFkraCouMDMsb3gsb3kraCk7Zi5saW5lVG8ob3gsZWRnZVkpO2YucXVhZHJhdGljQ3VydmVUbyhveCthcnRMZWZ0Ki40OCx0aXBZLWgqLjA3LHRpcFgsdGlwWSk7Zi5jbG9zZVBhdGgoKTtjb25zdCBwZWVsPWYuY3JlYXRlTGluZWFyR3JhZGllbnQob3gsb3kraCx0aXBYLHRpcFkpO3BlZWwuYWRkQ29sb3JTdG9wKDAsJ3JnYmEoMjM2LDI0OCwyNTUsLjg4KScpO3BlZWwuYWRkQ29sb3JTdG9wKC41OCwncmdiYSgxODcsMjIwLDI0NSwuNSknKTtwZWVsLmFkZENvbG9yU3RvcCgxLCdyZ2JhKDI1NSwyNTUsMjU1LC4xNiknKTtmLmZpbGxTdHlsZT1wZWVsO2YuZmlsbCgpO2Yuc3Ryb2tlU3R5bGU9J3JnYmEoMTE4LDE1MywxNzksLjUpJztmLnN0cm9rZSgpO2MuZHJhd0ltYWdlKGZpbG0sLTIsLTIpfQogICAgZnVuY3Rpb24gZHJhd0ltYWdlVHJpYW5nbGUoYyxpbWcsczAsczEsczIsZDAsZDEsZDIpe2NvbnN0IGRlbj1zMFswXSooczFbMV0tczJbMV0pK3MxWzBdKihzMlsxXS1zMFsxXSkrczJbMF0qKHMwWzFdLXMxWzFdKTtpZihNYXRoLmFicyhkZW4pPC4wMDEpcmV0dXJuO2NvbnN0IGE9KGQwWzBdKihzMVsxXS1zMlsxXSkrZDFbMF0qKHMyWzFdLXMwWzFdKStkMlswXSooczBbMV0tczFbMV0pKS9kZW4sY2M9KGQwWzBdKihzMlswXS1zMVswXSkrZDFbMF0qKHMwWzBdLXMyWzBdKStkMlswXSooczFbMF0tczBbMF0pKS9kZW4sZT0oZDBbMF0qKHMxWzBdKnMyWzFdLXMyWzBdKnMxWzFdKStkMVswXSooczJbMF0qczBbMV0tczBbMF0qczJbMV0pK2QyWzBdKihzMFswXSpzMVsxXS1zMVswXSpzMFsxXSkpL2RlbixiPShkMFsxXSooczFbMV0tczJbMV0pK2QxWzFdKihzMlsxXS1zMFsxXSkrZDJbMV0qKHMwWzFdLXMxWzFdKSkvZGVuLGQ9KGQwWzFdKihzMlswXS1zMVswXSkrZDFbMV0qKHMwWzBdLXMyWzBdKStkMlsxXSooczFbMF0tczBbMF0pKS9kZW4sZj0oZDBbMV0qKHMxWzBdKnMyWzFdLXMyWzBdKnMxWzFdKStkMVsxXSooczJbMF0qczBbMV0tczBbMF0qczJbMV0pK2QyWzFdKihzMFswXSpzMVsxXS1zMVswXSpzMFsxXSkpL2RlbjtjLnNhdmUoKTtjLmJlZ2luUGF0aCgpO2MubW92ZVRvKC4uLmQwKTtjLmxpbmVUbyguLi5kMSk7Yy5saW5lVG8oLi4uZDIpO2MuY2xvc2VQYXRoKCk7Yy5jbGlwKCk7Yy5zZXRUcmFuc2Zvcm0oYSxiLGNjLGQsZSxmKTtjLmRyYXdJbWFnZShpbWcsMCwwKTtjLnJlc3RvcmUoKX0KICAgIGZ1bmN0aW9uIHF1YWRQb2ludChxLHUsdil7Y29uc3QgdG9wPVtxWzBdWzBdKyhxWzFdWzBdLXFbMF1bMF0pKnUscVswXVsxXSsocVsxXVsxXS1xWzBdWzFdKSp1XSxib3R0b209W3FbM11bMF0rKHFbMl1bMF0tcVszXVswXSkqdSxxWzNdWzFdKyhxWzJdWzFdLXFbM11bMV0pKnVdO3JldHVyblt0b3BbMF0rKGJvdHRvbVswXS10b3BbMF0pKnYsdG9wWzFdKyhib3R0b21bMV0tdG9wWzFdKSp2XX0KICAgIGZ1bmN0aW9uIHRyYW5zZm9ybWVkUG9pbnQocG9pbnQsY3gsY3kpe2NvbnN0IHM9c3RhdGUuc2NhbGUvMTAwLHI9c3RhdGUucm90YXRpb24qTWF0aC5QSS8xODAseD0ocG9pbnRbMF0tY3gpKnMseT0ocG9pbnRbMV0tY3kpKnM7cmV0dXJuW2N4K3N0YXRlLngreCpNYXRoLmNvcyhyKS15Kk1hdGguc2luKHIpLGN5K3N0YXRlLnkreCpNYXRoLnNpbihyKSt5Kk1hdGguY29zKHIpXX0KICAgIGZ1bmN0aW9uIGRyYXdJbWFnZUluUXVhZChjLGltZyxxdWFkLGNvbHM9MTIscm93cz0xMil7Zm9yKGxldCB5PTA7eTxyb3dzO3krKylmb3IobGV0IHg9MDt4PGNvbHM7eCsrKXtjb25zdCB1MD14L2NvbHMsdTE9KHgrMSkvY29scyx2MD15L3Jvd3MsdjE9KHkrMSkvcm93cyxzMDA9W3UwKmltZy53aWR0aCx2MCppbWcuaGVpZ2h0XSxzMTA9W3UxKmltZy53aWR0aCx2MCppbWcuaGVpZ2h0XSxzMTE9W3UxKmltZy53aWR0aCx2MSppbWcuaGVpZ2h0XSxzMDE9W3UwKmltZy53aWR0aCx2MSppbWcuaGVpZ2h0XSxkMDA9cXVhZFBvaW50KHF1YWQsdTAsdjApLGQxMD1xdWFkUG9pbnQocXVhZCx1MSx2MCksZDExPXF1YWRQb2ludChxdWFkLHUxLHYxKSxkMDE9cXVhZFBvaW50KHF1YWQsdTAsdjEpO2RyYXdJbWFnZVRyaWFuZ2xlKGMsaW1nLHMwMCxzMTAsczExLGQwMCxkMTAsZDExKTtkcmF3SW1hZ2VUcmlhbmdsZShjLGltZyxzMDAsczExLHMwMSxkMDAsZDExLGQwMSl9fQogICAgZnVuY3Rpb24gZHJhd0FydHdvcmsoYyxjZmcpe2lmKCFzdGF0ZS5hcnQpcmV0dXJuO2NvbnN0IFtjeCxjeSx3LGgscm90XT1jZmcuYXJ0LFtmeCxmeSxmdyxmaF09Y2ZnLmZpbG0saW09c3RhdGUuYXJ0LGI9c3RhdGUuYXJ0Qm91bmRzfHx7eDowLHk6MCx3OmltLndpZHRoLGg6aW0uaGVpZ2h0fSxyYXRpbz1NYXRoLm1pbih3L2IudyxoL2IuaCksZHc9Yi53KnJhdGlvLGRoPWIuaCpyYXRpbyxsYXllcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtsYXllci53aWR0aD1NYXRoLmNlaWwoZncpO2xheWVyLmhlaWdodD1NYXRoLmNlaWwoZmgpO2NvbnN0IGxjPWxheWVyLmdldENvbnRleHQoJzJkJyk7bGMuZHJhd0ltYWdlKGltLGIueCxiLnksYi53LGIuaCwoZnctZHcpLzIsKGZoLWRoKS8yLGR3LGRoKTtkcmF3RmlsbShsYyxmdyxmaCwoZnctZHcpLzIsKGZoK2RoKS8yKTtpZihjZmcucGVyc3BlY3RpdmUpe2NvbnN0IHE9Y2ZnLnBlcnNwZWN0aXZlLm1hcChwPT50cmFuc2Zvcm1lZFBvaW50KHAsZngsZnkpKTtkcmF3SW1hZ2VJblF1YWQoYyxsYXllcixxKX1lbHNle2Muc2F2ZSgpO2MudHJhbnNsYXRlKGZ4K3N0YXRlLngsZnkrc3RhdGUueSk7Yy5yb3RhdGUoKHJvdCtzdGF0ZS5yb3RhdGlvbikqTWF0aC5QSS8xODApO2Muc2NhbGUoc3RhdGUuc2NhbGUvMTAwLHN0YXRlLnNjYWxlLzEwMCk7Yy5kcmF3SW1hZ2UobGF5ZXIsLWZ3LzIsLWZoLzIsZncsZmgpO2MucmVzdG9yZSgpfX0KICAgIGZ1bmN0aW9uIHJlbmRlcigpe2N0eC5maWxsU3R5bGU9c3RhdGUuYmc7Y3R4LmZpbGxSZWN0KDAsMCw5NDUsOTQ1KTtjb25zdCBiYXNlPXN0YXRlLmNsZWFuZWRbc3RhdGUuY2Fycmllcl07aWYoYmFzZSljdHguZHJhd0ltYWdlKGJhc2UsMCwwKTtpZihzdGF0ZS5hcnQpZHJhd0FydHdvcmsoY3R4LGNhcnJpZXJzW3N0YXRlLmNhcnJpZXJdKTtlbHNlIGRyYXdFbXB0eShjdHgpfQogICAgZnVuY3Rpb24gcmVzZXRQbGFjZW1lbnQoKXtzdGF0ZS5zY2FsZT0xMDA7c3RhdGUueD0wO3N0YXRlLnk9MDtzdGF0ZS5yb3RhdGlvbj0wO2Zvcihjb25zdCBrIG9mIFsnc2NhbGUnLCd4JywneScsJ3JvdGF0aW9uJ10pdWlba10udmFsdWU9c3RhdGVba107dXBkYXRlT3V0cHV0cygpfQogICAgZnVuY3Rpb24gdXBkYXRlT3V0cHV0cygpeyQoJyNzY2FsZU91dCcpLnRleHRDb250ZW50PXN0YXRlLnNjYWxlKyclJzskKCcjeE91dCcpLnRleHRDb250ZW50PVN0cmluZyhzdGF0ZS54KTskKCcjeU91dCcpLnRleHRDb250ZW50PVN0cmluZyhzdGF0ZS55KTskKCcjcm90YXRpb25PdXQnKS50ZXh0Q29udGVudD1zdGF0ZS5yb3RhdGlvbisnwrAnfQogICAgZnVuY3Rpb24gbWFya0RpcnR5KCl7dWkucHJvZC50ZXh0Q29udGVudD0nU2V0dGluZ3MgY2hhbmdlZC4gQXR0YWNoIGFnYWluIGJlZm9yZSBhZGRpbmcgdG8gY2FydC4nO3VpLnByb2Quc3R5bGUuY29sb3I9JyNiNTQ3MDgnO3BhcmVudC5wb3N0TWVzc2FnZSh7dHlwZTonYXJ0ZXRyaWJlOnByb2R1Y3Rpb24tY29uZmlnLWRpcnR5J30sbG9jYXRpb24ub3JpZ2luKX0KICAgIGFzeW5jIGZ1bmN0aW9uIGZpbGVUb0ltYWdlKGZpbGUpe2NvbnN0IHVybD1VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO3RyeXtyZXR1cm4gYXdhaXQgbG9hZEltYWdlKHVybCl9ZmluYWxseXtVUkwucmV2b2tlT2JqZWN0VVJMKHVybCl9fQogICAgZnVuY3Rpb24gYXJ0d29ya0JvdW5kcyhpbSl7Y29uc3Qgb2ZmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLGxpbWl0PTEyMDAscj1NYXRoLm1pbigxLGxpbWl0L01hdGgubWF4KGltLndpZHRoLGltLmhlaWdodCkpO29mZi53aWR0aD1NYXRoLm1heCgxLE1hdGgucm91bmQoaW0ud2lkdGgqcikpO29mZi5oZWlnaHQ9TWF0aC5tYXgoMSxNYXRoLnJvdW5kKGltLmhlaWdodCpyKSk7Y29uc3QgYz1vZmYuZ2V0Q29udGV4dCgnMmQnLHt3aWxsUmVhZEZyZXF1ZW50bHk6dHJ1ZX0pO2MuZHJhd0ltYWdlKGltLDAsMCxvZmYud2lkdGgsb2ZmLmhlaWdodCk7Y29uc3QgZD1jLmdldEltYWdlRGF0YSgwLDAsb2ZmLndpZHRoLG9mZi5oZWlnaHQpLmRhdGE7bGV0IHgwPW9mZi53aWR0aCx5MD1vZmYuaGVpZ2h0LHgxPS0xLHkxPS0xO2ZvcihsZXQgeT0wO3k8b2ZmLmhlaWdodDt5KyspZm9yKGxldCB4PTA7eDxvZmYud2lkdGg7eCsrKXtpZihkWyh5Km9mZi53aWR0aCt4KSo0KzNdPjEyKXt4MD1NYXRoLm1pbih4MCx4KTt5MD1NYXRoLm1pbih5MCx5KTt4MT1NYXRoLm1heCh4MSx4KTt5MT1NYXRoLm1heCh5MSx5KX19aWYoeDE8MClyZXR1cm57eDowLHk6MCx3OmltLndpZHRoLGg6aW0uaGVpZ2h0fTtyZXR1cm57eDp4MC9yLHk6eTAvcix3Oih4MS14MCsxKS9yLGg6KHkxLXkwKzEpL3J9fQogICAgdWkuZmlsZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGFzeW5jKCk9Pntjb25zdCBmaWxlPXVpLmZpbGUuZmlsZXMmJnVpLmZpbGUuZmlsZXNbMF07aWYoIWZpbGUpcmV0dXJuO2lmKCEvXmltYWdlXC8ocG5nfGpwZWd8d2VicCkkLy50ZXN0KGZpbGUudHlwZSkpe3N0YXR1cygnQ2hvb3NlIGEgUE5HLCBKUEcgb3IgV2ViUCBpbWFnZS4nLCdlcnJvcicpO3JldHVybn10cnl7c3RhdHVzKCdQcmVwYXJpbmcgeW91ciBhcnR3b3JrLi4uJyk7c3RhdGUub3JpZ2luYWxGaWxlPWZpbGU7c3RhdGUub3JpZ2luYWw9YXdhaXQgZmlsZVRvSW1hZ2UoZmlsZSk7c3RhdGUuYXJ0PXN0YXRlLm9yaWdpbmFsO3N0YXRlLmFydEJvdW5kcz1hcnR3b3JrQm91bmRzKHN0YXRlLmFydCk7c3RhdGUucHJvY2Vzc2VkRmlsZT1udWxsO3N0YXRlLmJhY2tncm91bmRSZW1vdmVkPWZhbHNlO3VpLnJlbW92ZS5kaXNhYmxlZD1mYWxzZTt1aS5yZW1vdmUudGV4dENvbnRlbnQ9J0F1dG8gUmVtb3ZlIEJhY2tncm91bmQnO3VpLmRvd25sb2FkLmRpc2FibGVkPWZhbHNlO3VpLmF0dGFjaC5kaXNhYmxlZD1mYWxzZTt1aS5ub3RlLnRleHRDb250ZW50PSdBZGp1c3QgdGhlIGFydHdvcmsgcGxhY2VtZW50LCB0aGVuIGV4cG9ydCBvciBhdHRhY2gnO3VpLnByb2QudGV4dENvbnRlbnQ9J1JlYWR5IHRvIGV4cG9ydCBvciBhdHRhY2ggdG8gdGhpcyBwcm9kdWN0Lic7dWkucHJvZC5zdHlsZS5jb2xvcj0nJztyZXNldFBsYWNlbWVudCgpO3JlbmRlcigpO3N0YXR1cygnQXJ0d29yayBsb2FkZWQuJywnc3VjY2VzcycpfWNhdGNoKGUpe3N0YXR1cygnVGhlIGFydHdvcmsgY291bGQgbm90IGJlIG9wZW5lZC4gVHJ5IGFub3RoZXIgZmlsZS4nLCdlcnJvcicpfX0pOwogICAgZnVuY3Rpb24gcmVtb3ZlQmFja2dyb3VuZChzb3VyY2Upe2NvbnN0IG9mZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSxtYXg9MTQwMCxyYXRpbz1NYXRoLm1pbigxLG1heC9NYXRoLm1heChzb3VyY2Uud2lkdGgsc291cmNlLmhlaWdodCkpO29mZi53aWR0aD1NYXRoLm1heCgxLE1hdGgucm91bmQoc291cmNlLndpZHRoKnJhdGlvKSk7b2ZmLmhlaWdodD1NYXRoLm1heCgxLE1hdGgucm91bmQoc291cmNlLmhlaWdodCpyYXRpbykpO2NvbnN0IGM9b2ZmLmdldENvbnRleHQoJzJkJyx7d2lsbFJlYWRGcmVxdWVudGx5OnRydWV9KTtjLmRyYXdJbWFnZShzb3VyY2UsMCwwLG9mZi53aWR0aCxvZmYuaGVpZ2h0KTtjb25zdCBpbWc9Yy5nZXRJbWFnZURhdGEoMCwwLG9mZi53aWR0aCxvZmYuaGVpZ2h0KSxkPWltZy5kYXRhLGNvcm5lcnM9W1swLDBdLFtvZmYud2lkdGgtMSwwXSxbMCxvZmYuaGVpZ2h0LTFdLFtvZmYud2lkdGgtMSxvZmYuaGVpZ2h0LTFdXSxhdmc9WzAsMCwwXTtmb3IoY29uc3QgW3gseV0gb2YgY29ybmVycyl7Y29uc3QgaT0oeSpvZmYud2lkdGgreCkqNDthdmdbMF0rPWRbaV0vNDthdmdbMV0rPWRbaSsxXS80O2F2Z1syXSs9ZFtpKzJdLzR9Zm9yKGxldCBpPTA7aTxkLmxlbmd0aDtpKz00KXtjb25zdCBkaXN0PU1hdGguaHlwb3QoZFtpXS1hdmdbMF0sZFtpKzFdLWF2Z1sxXSxkW2krMl0tYXZnWzJdKTtkW2krM109ZGlzdDwyND8wOmRpc3Q8NzI\/TWF0aC5yb3VuZCgyNTUqKGRpc3QtMjQpLzQ4KTpkW2krM119Yy5wdXRJbWFnZURhdGEoaW1nLDAsMCk7cmV0dXJuIG9mZn0KICAgIHVpLnJlbW92ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsYXN5bmMoKT0+e2lmKCFzdGF0ZS5vcmlnaW5hbClyZXR1cm47aWYoc3RhdGUuYmFja2dyb3VuZFJlbW92ZWQpe3N0YXRlLmFydD1zdGF0ZS5vcmlnaW5hbDtzdGF0ZS5hcnRCb3VuZHM9YXJ0d29ya0JvdW5kcyhzdGF0ZS5hcnQpO3N0YXRlLnByb2Nlc3NlZEZpbGU9bnVsbDtzdGF0ZS5iYWNrZ3JvdW5kUmVtb3ZlZD1mYWxzZTt1aS5yZW1vdmUudGV4dENvbnRlbnQ9J0F1dG8gUmVtb3ZlIEJhY2tncm91bmQnO3JlbmRlcigpO21hcmtEaXJ0eSgpO3N0YXR1cygnT3JpZ2luYWwgYXJ0d29yayByZXN0b3JlZC4nLCdzdWNjZXNzJyk7cmV0dXJufXVpLnJlbW92ZS5kaXNhYmxlZD10cnVlO3VpLnJlbW92ZS50ZXh0Q29udGVudD0nUmVtb3ZpbmcuLi4nO2F3YWl0IG5ldyBQcm9taXNlKHI9PnNldFRpbWVvdXQociwzMCkpO2NvbnN0IG9mZj1yZW1vdmVCYWNrZ3JvdW5kKHN0YXRlLm9yaWdpbmFsKTtzdGF0ZS5hcnQ9b2ZmO3N0YXRlLmFydEJvdW5kcz1hcnR3b3JrQm91bmRzKHN0YXRlLmFydCk7Y29uc3QgYmxvYj1hd2FpdCBuZXcgUHJvbWlzZShyPT5vZmYudG9CbG9iKHIsJ2ltYWdlL3BuZycpKTtzdGF0ZS5wcm9jZXNzZWRGaWxlPW5ldyBGaWxlKFtibG9iXSwnYXJ0ZXRyaWJlLXByb2Nlc3NlZC1hcnR3b3JrLnBuZycse3R5cGU6J2ltYWdlL3BuZyd9KTtzdGF0ZS5iYWNrZ3JvdW5kUmVtb3ZlZD10cnVlO3VpLnJlbW92ZS50ZXh0Q29udGVudD0nUmVzdG9yZSBPcmlnaW5hbCc7dWkucmVtb3ZlLmRpc2FibGVkPWZhbHNlO3JlbmRlcigpO21hcmtEaXJ0eSgpO3N0YXR1cygnQmFja2dyb3VuZCByZW1vdmVkLiBDaGVjayB0aGUgcHJldmlldyBiZWZvcmUgb3JkZXJpbmcuJywnc3VjY2VzcycpfSk7CiAgICBmb3IoY29uc3Qga2V5IG9mIFsnc2NhbGUnLCd4JywneScsJ3JvdGF0aW9uJ10pdWlba2V5XS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsKCk9PntzdGF0ZVtrZXldPU51bWJlcih1aVtrZXldLnZhbHVlKTt1cGRhdGVPdXRwdXRzKCk7cmVuZGVyKCk7aWYoc3RhdGUuYXJ0KW1hcmtEaXJ0eSgpfSk7CiAgICAkKCcjcmVzZXQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PntyZXNldFBsYWNlbWVudCgpO3JlbmRlcigpO2lmKHN0YXRlLmFydCltYXJrRGlydHkoKX0pO3VpLmJnLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywoKT0+e3N0YXRlLmJnPXVpLmJnLnZhbHVlO3JlbmRlcigpfSk7CiAgICBjb25zdCBjYW52YXNCbG9iPSh0eXBlPSdpbWFnZS9wbmcnLHF1YWxpdHk9Ljk2KT0+bmV3IFByb21pc2Uocj0+Y2FudmFzLnRvQmxvYihyLHR5cGUscXVhbGl0eSkpOwogICAgZnVuY3Rpb24gc2F2ZUJsb2IoYmxvYixuYW1lKXtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTthLmhyZWY9VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTthLmRvd25sb2FkPW5hbWU7YS5jbGljaygpO3NldFRpbWVvdXQoKCk9PlVSTC5yZXZva2VPYmplY3RVUkwoYS5ocmVmKSwxMDAwKX0KICAgIHVpLnNhdmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGFzeW5jKCk9PnNhdmVCbG9iKGF3YWl0IGNhbnZhc0Jsb2IoKSwnYXJ0ZXRyaWJlLXV2LWR0Zi1wcmV2aWV3LnBuZycpKTsKICAgIGZ1bmN0aW9uIGNyYzMyKGJ5dGVzKXtsZXQgYz0tMTtmb3IoY29uc3QgYiBvZiBieXRlcyl7Y149Yjtmb3IobGV0IGs9MDtrPDg7aysrKWM9KGM+Pj4xKV4oKGMmMSk\/MHhlZGI4ODMyMDowKX1yZXR1cm4oY14tMSk+Pj4wfQogICAgZnVuY3Rpb24gemlwU3RvcmUoZmlsZXMpe2NvbnN0IGVuYz1uZXcgVGV4dEVuY29kZXIoKSxwYXJ0cz1bXSxjZW50cmFsPVtdO2xldCBvZmZzZXQ9MDtjb25zdCB1MTY9bj0+bmV3IFVpbnQ4QXJyYXkoW24mMjU1LG4+Pj44JjI1NV0pLHUzMj1uPT5uZXcgVWludDhBcnJheShbbiYyNTUsbj4+PjgmMjU1LG4+Pj4xNiYyNTUsbj4+PjI0JjI1NV0pO2Zvcihjb25zdCBmIG9mIGZpbGVzKXtjb25zdCBuYW1lPWVuYy5lbmNvZGUoZi5uYW1lKSxkYXRhPWYuZGF0YSxjcmM9Y3JjMzIoZGF0YSksaGVhZD1bdTMyKDB4MDQwMzRiNTApLHUxNigyMCksdTE2KDApLHUxNigwKSx1MTYoMCksdTE2KDApLHUzMihjcmMpLHUzMihkYXRhLmxlbmd0aCksdTMyKGRhdGEubGVuZ3RoKSx1MTYobmFtZS5sZW5ndGgpLHUxNigwKSxuYW1lXTtwYXJ0cy5wdXNoKC4uLmhlYWQsZGF0YSk7Y2VudHJhbC5wdXNoKHUzMigweDAyMDE0YjUwKSx1MTYoMjApLHUxNigyMCksdTE2KDApLHUxNigwKSx1MTYoMCksdTE2KDApLHUzMihjcmMpLHUzMihkYXRhLmxlbmd0aCksdTMyKGRhdGEubGVuZ3RoKSx1MTYobmFtZS5sZW5ndGgpLHUxNigwKSx1MTYoMCksdTE2KDApLHUxNigwKSx1MzIoMCksdTMyKG9mZnNldCksbmFtZSk7b2Zmc2V0Kz1oZWFkLnJlZHVjZSgobixhKT0+bithLmxlbmd0aCwwKStkYXRhLmxlbmd0aH1jb25zdCBjc2l6ZT1jZW50cmFsLnJlZHVjZSgobixhKT0+bithLmxlbmd0aCwwKTtyZXR1cm4gbmV3IEJsb2IoWy4uLnBhcnRzLC4uLmNlbnRyYWwsdTMyKDB4MDYwNTRiNTApLHUxNigwKSx1MTYoMCksdTE2KGZpbGVzLmxlbmd0aCksdTE2KGZpbGVzLmxlbmd0aCksdTMyKGNzaXplKSx1MzIob2Zmc2V0KSx1MTYoMCldLHt0eXBlOidhcHBsaWNhdGlvbi96aXAnfSl9CiAgICBmdW5jdGlvbiBjb25maWcoKXtjb25zdCBjPWNhcnJpZXJzW3N0YXRlLmNhcnJpZXJdO3JldHVybntjb25maWd1cmF0aW9uSWQ6J1VWLScrRGF0ZS5ub3coKS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKSxwcm9kdWN0OidDdXN0b20gVVYgRFRGIFRyYW5zZmVycycsY3JlYXRlZEF0Om5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxwcm9kdWN0aW9uOntwcmV2aWV3U3VyZmFjZTp7a2V5OnN0YXRlLmNhcnJpZXIsbGFiZWw6Yy5sYWJlbH0sc2NhbGVQZXJjZW50OnN0YXRlLnNjYWxlLGhvcml6b250YWxPZmZzZXQ6c3RhdGUueCx2ZXJ0aWNhbE9mZnNldDpzdGF0ZS55LHJvdGF0aW9uRGVncmVlczpzdGF0ZS5yb3RhdGlvbixiYWNrZ3JvdW5kOnN0YXRlLmJnLGJhY2tncm91bmRSZW1vdmVkOnN0YXRlLmJhY2tncm91bmRSZW1vdmVkfSxub3RlOidQcmV2aWV3IHBsYWNlbWVudCBpcyBpbGx1c3RyYXRpdmUuIENvbmZpcm0gZmluYWwgc2l6ZSBiZWZvcmUgcHJvZHVjdGlvbi4nfX0KICAgIGFzeW5jIGZ1bmN0aW9uIGJ1aWxkRmlsZXMoKXtjb25zdCBjZmc9Y29uZmlnKCkscHJldmlldz1hd2FpdCBjYW52YXNCbG9iKCkscHJldmlld0ZpbGU9bmV3IEZpbGUoW3ByZXZpZXddLGNmZy5jb25maWd1cmF0aW9uSWQrJy1wcmV2aWV3LnBuZycse3R5cGU6J2ltYWdlL3BuZyd9KTtyZXR1cm57Y2ZnLHByZXZpZXdGaWxlLGFydHdvcmtGaWxlOnN0YXRlLm9yaWdpbmFsRmlsZSxwcm9jZXNzZWRGaWxlOnN0YXRlLnByb2Nlc3NlZEZpbGV9fQogICAgdWkuZG93bmxvYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGFzeW5jKCk9Pnt1aS5kb3dubG9hZC5kaXNhYmxlZD10cnVlO3VpLmRvd25sb2FkLnRleHRDb250ZW50PSdQcmVwYXJpbmcuLi4nO3RyeXtjb25zdCBmPWF3YWl0IGJ1aWxkRmlsZXMoKSxlbmM9bmV3IFRleHRFbmNvZGVyKCksaXRlbXM9W3tuYW1lOidjb25maWd1cmF0aW9uLmpzb24nLGRhdGE6ZW5jLmVuY29kZShKU09OLnN0cmluZ2lmeShmLmNmZyxudWxsLDIpKX0se25hbWU6J3N1bW1hcnkudHh0JyxkYXRhOmVuYy5lbmNvZGUoYEFydGVUcmliZSBVViBEVEYgUHJldmlld1xuQ29uZmlndXJhdGlvbjogJHtmLmNmZy5jb25maWd1cmF0aW9uSWR9XG5TdXJmYWNlOiAke2YuY2ZnLnByb2R1Y3Rpb24ucHJldmlld1N1cmZhY2UubGFiZWx9XG5TY2FsZTogJHtzdGF0ZS5zY2FsZX0lXG5PZmZzZXQ6ICR7c3RhdGUueH0sICR7c3RhdGUueX1cblJvdGF0aW9uOiAke3N0YXRlLnJvdGF0aW9ufSBkZWdyZWVzXG5CYWNrZ3JvdW5kIHJlbW92ZWQ6ICR7c3RhdGUuYmFja2dyb3VuZFJlbW92ZWQ\/J1llcyc6J05vJ31cbmApfSx7bmFtZTpmLnByZXZpZXdGaWxlLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShhd2FpdCBmLnByZXZpZXdGaWxlLmFycmF5QnVmZmVyKCkpfSx7bmFtZTonb3JpZ2luYWwtJytzdGF0ZS5vcmlnaW5hbEZpbGUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KGF3YWl0IHN0YXRlLm9yaWdpbmFsRmlsZS5hcnJheUJ1ZmZlcigpKX1dO2lmKGYucHJvY2Vzc2VkRmlsZSlpdGVtcy5wdXNoKHtuYW1lOmYucHJvY2Vzc2VkRmlsZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgZi5wcm9jZXNzZWRGaWxlLmFycmF5QnVmZmVyKCkpfSk7c2F2ZUJsb2IoemlwU3RvcmUoaXRlbXMpLGYuY2ZnLmNvbmZpZ3VyYXRpb25JZCsnLXByb2R1Y3Rpb24tcGFjay56aXAnKTt1aS5wcm9kLnRleHRDb250ZW50PSdQcm9kdWN0aW9uIHBhY2sgZG93bmxvYWRlZC4nO3VpLnByb2Quc3R5bGUuY29sb3I9JyMwNjc2NDcnfWNhdGNoKGUpe3VpLnByb2QudGV4dENvbnRlbnQ9J1RoZSBwcm9kdWN0aW9uIHBhY2sgY291bGQgbm90IGJlIGNyZWF0ZWQuIFRyeSBhZ2Fpbi4nO3VpLnByb2Quc3R5bGUuY29sb3I9JyNiNDIzMTgnfWZpbmFsbHl7dWkuZG93bmxvYWQuZGlzYWJsZWQ9ZmFsc2U7dWkuZG93bmxvYWQudGV4dENvbnRlbnQ9J0Rvd25sb2FkIFBhY2snfX0pOwogICAgdWkuYXR0YWNoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxhc3luYygpPT57dWkuYXR0YWNoLmRpc2FibGVkPXRydWU7dWkuYXR0YWNoLnRleHRDb250ZW50PSdBdHRhY2hpbmcuLi4nO3RyeXtjb25zdCBmPWF3YWl0IGJ1aWxkRmlsZXMoKTtwYXJlbnQucG9zdE1lc3NhZ2Uoe3R5cGU6J2FydGV0cmliZTphdHRhY2gtcHJvZHVjdGlvbi1jb25maWcnLGNvbmZpZzpmLmNmZyxhcnR3b3JrRmlsZTpmLmFydHdvcmtGaWxlLHByZXZpZXdGaWxlOmYucHJldmlld0ZpbGUscHJvY2Vzc2VkRmlsZTpmLnByb2Nlc3NlZEZpbGV9LGxvY2F0aW9uLm9yaWdpbil9Y2F0Y2goZSl7dWkuYXR0YWNoLmRpc2FibGVkPWZhbHNlO3VpLmF0dGFjaC50ZXh0Q29udGVudD0nQXR0YWNoIHRvIE9yZGVyJzt1aS5wcm9kLnRleHRDb250ZW50PSdUaGUgZmlsZXMgY291bGQgbm90IGJlIHByZXBhcmVkLiBUcnkgYWdhaW4uJzt1aS5wcm9kLnN0eWxlLmNvbG9yPScjYjQyMzE4J319KTsKICAgIGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLGU9PntpZihlLm9yaWdpbiE9PWxvY2F0aW9uLm9yaWdpbnx8IWUuZGF0YXx8ZS5kYXRhLnR5cGUhPT0nYXJ0ZXRyaWJlOm9yZGVyLWF0dGFjaG1lbnQtcmVzdWx0JylyZXR1cm47dWkuYXR0YWNoLmRpc2FibGVkPWZhbHNlO3VpLmF0dGFjaC50ZXh0Q29udGVudD0nQXR0YWNoIHRvIE9yZGVyJzt1aS5wcm9kLnRleHRDb250ZW50PWUuZGF0YS5zdWNjZXNzPydBdHRhY2hlZCB0byB0aGlzIHByb2R1Y3QuIENob29zZSBzaXplIGFuZCBxdWFudGl0eSwgdGhlbiBhZGQgdG8gY2FydC4nOidDb3VsZCBub3QgYXR0YWNoIGZpbGVzLiBSZWZyZXNoIHRoZSBwcm9kdWN0IHBhZ2UgYW5kIHRyeSBhZ2Fpbi4nO3VpLnByb2Quc3R5bGUuY29sb3I9ZS5kYXRhLnN1Y2Nlc3M\/JyMwNjc2NDcnOicjYjQyMzE4J30pOwogICAgYnVpbGRTdXJmYWNlQnV0dG9ucygpO3ByZXBhcmVDYXJyaWVycygpLmNhdGNoKCgpPT5zdGF0dXMoJ1ByZXZpZXcgc3VyZmFjZXMgY291bGQgbm90IGJlIGxvYWRlZC4gUmVmcmVzaCB0aGUgcGFnZS4nLCdlcnJvcicpKTt1cGRhdGVPdXRwdXRzKCk7cmVuZGVyKCk7CiAgfSkoKTsKICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==\u003c\/script\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  #artetribe-uv-dtf-preview-embed{--at-ink:#172033;--at-muted:#526176;--at-line:#c9d7e4;--at-canvas:#f8fbfd;width:100%;max-width:1440px;margin:48px auto;color:var(--at-ink);font-family:inherit}\n  #artetribe-uv-dtf-preview-embed *{box-sizing:border-box}\n  #artetribe-uv-dtf-preview-embed .artetribe-uv-dtf-preview-embed__heading{max-width:760px;margin:0 0 22px}\n  #artetribe-uv-dtf-preview-embed h2{margin:0 0 8px;font:inherit;font-size:clamp(28px,3vw,44px);font-weight:800;line-height:1.04;letter-spacing:-.03em;text-transform:uppercase}\n  #artetribe-uv-dtf-preview-embed p{margin:0;color:var(--at-muted);font-size:16px;line-height:1.55}\n  #artetribe-uv-dtf-preview-embed .artetribe-uv-dtf-preview-embed__frame{position:relative;min-height:720px;border:1px solid var(--at-line);border-radius:16px;overflow:hidden;background:var(--at-canvas)}\n  #artetribe-uv-dtf-preview-embed .artetribe-uv-dtf-preview-embed__iframe{display:block;width:100%;height:720px;border:0;opacity:0;background:var(--at-canvas)}\n  #artetribe-uv-dtf-preview-embed.is-loaded .artetribe-uv-dtf-preview-embed__iframe{opacity:1}\n  #artetribe-uv-dtf-preview-embed .artetribe-uv-dtf-preview-embed__loading{position:absolute;inset:0;display:grid;place-items:center;color:var(--at-muted);font-size:14px}\n  #artetribe-uv-dtf-preview-embed.is-loaded .artetribe-uv-dtf-preview-embed__loading{display:none}\n  #artetribe-uv-dtf-preview-embed.is-viewport-breakout{width:100vw;max-width:none;margin-left:calc(50% - 50vw);padding-inline:12px}\n  @media(max-width:760px){#artetribe-uv-dtf-preview-embed{margin:32px auto}#artetribe-uv-dtf-preview-embed .artetribe-uv-dtf-preview-embed__heading{padding-inline:14px}#artetribe-uv-dtf-preview-embed .artetribe-uv-dtf-preview-embed__frame{min-height:920px;border-radius:0;border-inline:0}#artetribe-uv-dtf-preview-embed .artetribe-uv-dtf-preview-embed__iframe{height:920px}}\n\u003c\/style\u003e\n\n\u003cscript\u003e\n(()=\u003e{\n  const root=document.getElementById('artetribe-uv-dtf-preview-embed');\n  if(!root||root.dataset.previewReady==='true')return;\n  const productPath=location.pathname.replace(\/\\\/+$\/,'').toLowerCase();\n  if(!productPath.includes('uv-dtf')){root.remove();return}\n  root.dataset.previewReady='true';\n  const productInfo=root.closest('product-info,.product__info,.product__info-container,.product__info-wrapper,.product-info,.product-info__wrapper,[data-product-info],[id*=\"ProductInfo\"]');\n  const owningSection=root.closest('.shopify-section,[id^=\"shopify-section-\"]');\n  if((productInfo||root.getBoundingClientRect().width\u003c760)\u0026\u0026owningSection\u0026\u0026owningSection.parentElement)owningSection.insertAdjacentElement('afterend',root);\n  if(root.getBoundingClientRect().width\u003cMath.min(760,innerWidth*.72))root.classList.add('is-viewport-breakout');\n  const frame=root.querySelector('[data-preview-frame]'),source=root.querySelector('[data-preview-source]'),loading=root.querySelector('[data-preview-loading]');\n  const findProductForm=()=\u003eArray.from(document.querySelectorAll('form[action*=\"\/cart\/add\"]')).filter(f=\u003e!f.classList.contains('shopify-payment-terms')).map(form=\u003e({form,score:(owningSection\u0026\u0026owningSection.contains(form)?100:0)+(form.classList.contains('shopify-product-form')?30:0)+(form.querySelector('[name=\"quantity\"]')?20:0)+(form.querySelector('[name=\"add\"],[type=\"submit\"]')?10:0)})).sort((a,b)=\u003eb.score-a.score)[0]?.form||null;\n  const clearFields=()=\u003edocument.querySelectorAll('[data-artetribe-uv-dtf-property]').forEach(f=\u003ef.remove());\n  const textField=(form,name,value)=\u003e{if(value===null||value===undefined||value==='')return;const i=document.createElement('input');i.type='hidden';i.name=`properties[${name}]`;i.value=String(value);i.dataset.artetribeUvDtfProperty='true';form.appendChild(i)};\n  const fileField=(form,name,file)=\u003e{if(!file)return;const i=document.createElement('input');i.type='file';i.name=`properties[${name}]`;i.hidden=true;i.dataset.artetribeUvDtfProperty='true';const t=new DataTransfer();t.items.add(file);i.files=t.files;if(!i.files||i.files.length!==1)throw new Error(name+' could not be attached.');form.appendChild(i)};\n  const reply=(success,configurationId='',diagnostic='')=\u003eframe.contentWindow\u0026\u0026frame.contentWindow.postMessage({type:'artetribe:order-attachment-result',success,configurationId,diagnostic},location.origin);\n  addEventListener('message',event=\u003e{if(event.origin!==location.origin||event.source!==frame.contentWindow||!event.data)return;if(event.data.type==='artetribe:production-config-dirty'){clearFields();return}if(event.data.type!=='artetribe:attach-production-config')return;const form=findProductForm(),{config,artworkFile,previewFile,processedFile}=event.data;if(!form||!config||!artworkFile||!previewFile){clearFields();reply(false,'','Product form or required files were not found.');return}try{clearFields();form.enctype='multipart\/form-data';const p=config.production||{};textField(form,'UV DTF Preview Configuration',config.configurationId);textField(form,'Preview Surface',p.previewSurface?.label);textField(form,'Artwork Scale',`${p.scalePercent}%`);textField(form,'Artwork Position',`${p.horizontalOffset}, ${p.verticalOffset}`);textField(form,'Artwork Rotation',`${p.rotationDegrees} degrees`);textField(form,'Background Removed',p.backgroundRemoved?'Yes':'No');fileField(form,'Artwork',artworkFile);fileField(form,'Processed Artwork',processedFile);fileField(form,'UV DTF Preview',previewFile);reply(true,config.configurationId)}catch(error){clearFields();reply(false,'',error instanceof Error?error.message:String(error));console.error('ArteTribe UV DTF files could not be attached.',error)}});\n  try{const encoded=source.textContent.replace(\/\\s+\/g,''),bytes=Uint8Array.from(atob(encoded),c=\u003ec.charCodeAt(0)),doc=new TextDecoder().decode(bytes);frame.addEventListener('load',()=\u003eroot.classList.add('is-loaded'),{once:true});frame.srcdoc=doc;source.remove()}catch(error){if(loading)loading.textContent='The preview could not be loaded. Refresh the page.';console.error('ArteTribe UV DTF preview failed to initialize.',error)}\n})();\n\u003c\/script\u003e\n","brand":"ArteTribe","offers":[{"title":"Deposit","offer_id":49026630221924,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"Remaining balance","offer_id":49026630254692,"sku":null,"price":1.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0572\/0627\/6196\/files\/artetribe-CustomUVDTFTransfers.png?v=1787107798","url":"https:\/\/artetribe.co\/ko\/products\/custom-uv-dtf-transfer-stickers","provider":"ArteTribe","version":"1.0","type":"link"}