PD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiBNTUMgU3RhcnQgQnJpZGdlIFBhZ2UKICogRGVzY3JpcHRpb246IFJlbmRlcnMgYSBoaWdoLWNvbnZlcnNpb24gZW1haWwtY2FwdHVyZSBsYW5kaW5nIHBhZ2UgYXQgL3N0YXJ0LyBmb3IgY29sZCBzb2NpYWwgdHJhZmZpYy4gU2luZ2xlIENUQSwgcHJvb2YgYWJvdmUgdGhlIGZvbGQsIHBvc3RzIHRvIHRoZSBsaXZlIC9tbWMvdjEvc3Vic2NyaWJlIGVuZHBvaW50IGFuZCBkZWxpdmVycyBhIGZyZWUgUERGIGluc3RhbnRseS4gQWRtaW4ga2lsbCBzd2l0Y2guCiAqIFZlcnNpb246IDEuMC4wCiAqLwoKaWYgKCAhIGRlZmluZWQoICdBQlNQQVRIJyApICkgeyBleGl0OyB9CgppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnbW1jX3N0YXJ0X2JyaWRnZV9pc19raWxsZWQnICkgKSB7CglmdW5jdGlvbiBtbWNfc3RhcnRfYnJpZGdlX2lzX2tpbGxlZCgpIHsKCQkvLyBLaWxsIHN3aXRjaDogdmlzaXQgL3N0YXJ0Lz9tbWNfa2lsbF9zdGFydD0xIGFzIGFkbWluIHRvIGRpc2FibGUgaW5zdGFudGx5LgoJCWlmICggaXNzZXQoICRfR0VUWydtbWNfa2lsbF9zdGFydCddICkgJiYgY3VycmVudF91c2VyX2NhbiggJ21hbmFnZV9vcHRpb25zJyApICkgewoJCQl1cGRhdGVfb3B0aW9uKCAnbW1jX3N0YXJ0X2JyaWRnZV9kaXNhYmxlZCcsICcxJyApOwoJCX0KCQlpZiAoIGlzc2V0KCAkX0dFVFsnbW1jX3Jldml2ZV9zdGFydCddICkgJiYgY3VycmVudF91c2VyX2NhbiggJ21hbmFnZV9vcHRpb25zJyApICkgewoJCQl1cGRhdGVfb3B0aW9uKCAnbW1jX3N0YXJ0X2JyaWRnZV9kaXNhYmxlZCcsICcwJyApOwoJCX0KCQlyZXR1cm4gZ2V0X29wdGlvbiggJ21tY19zdGFydF9icmlkZ2VfZGlzYWJsZWQnLCAnMCcgKSA9PT0gJzEnOwoJfQp9CgppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnbW1jX3N0YXJ0X2JyaWRnZV9yb3V0ZScgKSApIHsKCWZ1bmN0aW9uIG1tY19zdGFydF9icmlkZ2Vfcm91dGUoKSB7CgkJdHJ5IHsKCQkJaWYgKCBtbWNfc3RhcnRfYnJpZGdlX2lzX2tpbGxlZCgpICkgeyByZXR1cm47IH0KCgkJCSRyZXEgPSBpc3NldCggJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gKSA/ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddIDogJyc7CgkJCSRwYXRoID0gcGFyc2VfdXJsKCAkcmVxLCBQSFBfVVJMX1BBVEggKTsKCQkJaWYgKCAhIGlzX3N0cmluZyggJHBhdGggKSApIHsgcmV0dXJuOyB9CgkJCSRwYXRoID0gdHJpbSggJHBhdGgsICcvJyApOwoKCQkJaWYgKCAkcGF0aCAhPT0gJ3N0YXJ0JyApIHsgcmV0dXJuOyB9CgoJCQkvLyBTZXJ2ZSBvdXIgcGFnZSwgYnlwYXNzIHRoZW1lICsgY2FjaGUuCgkJCWlmICggISBkZWZpbmVkKCAnRE9OT1RDQUNIRVBBR0UnICkgKSB7IGRlZmluZSggJ0RPTk9UQ0FDSEVQQUdFJywgdHJ1ZSApOyB9CgkJCW5vY2FjaGVfaGVhZGVycygpOwoJCQlzdGF0dXNfaGVhZGVyKCAyMDAgKTsKCQkJaGVhZGVyKCAnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnICk7CgkJCWVjaG8gbW1jX3N0YXJ0X2JyaWRnZV9odG1sKCk7CgkJCWV4aXQ7CgkJfSBjYXRjaCAoIEV4Y2VwdGlvbiAkZSApIHsKCQkJLy8gRmFpbCBzYWZlOiBuZXZlciB3aGl0ZS1zY3JlZW4gdGhlIHNpdGUuIEp1c3QgbGV0IFdQIGNvbnRpbnVlLgoJCQlyZXR1cm47CgkJfQoJfQp9CgppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnbW1jX3N0YXJ0X2JyaWRnZV9odG1sJyApICkgewoJZnVuY3Rpb24gbW1jX3N0YXJ0X2JyaWRnZV9odG1sKCkgewoJCSRzdWJzY3JpYmVfdXJsID0gZXNjX3VybCggaG9tZV91cmwoICcvd3AtanNvbi9tbWMvdjEvc3Vic2NyaWJlJyApICk7CgkJJHNob3BfdXJsICAgICAgPSBlc2NfdXJsKCBob21lX3VybCggJy9zaG9wLycgKSApOwoJCSRwcml2YWN5X3VybCAgID0gZXNjX3VybCggaG9tZV91cmwoICcvcHJpdmFjeS8nICkgKTsKCgkJb2Jfc3RhcnQoKTsKCQk/PjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdmlld3BvcnQtZml0PWNvdmVyIj4KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBmb2xsb3ciPgo8dGl0bGU+R3JhYiBZb3VyIEZyZWUgQUkgQWZmaWxpYXRlIFN0YXJ0ZXIgS2l0IOKAlCBNb25leSBNYXJrZXRpbmcgQ29ubmVjdGlvbjwvdGl0bGU+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9RnJhdW5jZXM6b3Bzeix3Z2h0QDkuLjE0NCw2MDA7OS4uMTQ0LDgwMCZmYW1pbHk9T3V0Zml0OndnaHRANDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KPHN0eWxlPgoqe21hcmdpbjowO3BhZGRpbmc6MDtib3gtc2l6aW5nOmJvcmRlci1ib3h9Cjpyb290ewotLWluazojMGIxMDIwOy0taW5rMjojMTQxYjMzOy0tcGFwZXI6I2ZiZjdlZjstLWdvbGQ6I2U3YjI0YjstLWdvbGQyOiNmNmNmNzg7Ci0tbWludDojM2FkMjlmOy0tbGluZTpyZ2JhKDI1NSwyNTUsMjU1LC4xMCk7LS1tdXRlZDojOWFhM2JkOwp9Cmh0bWwsYm9keXtiYWNrZ3JvdW5kOnZhcigtLWluayk7Y29sb3I6dmFyKC0tcGFwZXIpO2ZvbnQtZmFtaWx5OidPdXRmaXQnLHN5c3RlbS11aSxzYW5zLXNlcmlmOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7bGluZS1oZWlnaHQ6MS41fQpib2R5e292ZXJmbG93LXg6aGlkZGVufQoud3JhcHttYXgtd2lkdGg6NTYwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjI4cHggMjJweCA2MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mn0KLmJne3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDowO2JhY2tncm91bmQ6CnJhZGlhbC1ncmFkaWVudCgxMTAwcHggNjAwcHggYXQgODAlIC04JSwgcmdiYSgyMzEsMTc4LDc1LC4xOCksIHRyYW5zcGFyZW50IDYwJSksCnJhZGlhbC1ncmFkaWVudCg5MDBweCA2MDBweCBhdCAtMTAlIDIwJSwgcmdiYSg1OCwyMTAsMTU5LC4xMCksIHRyYW5zcGFyZW50IDU1JSksCmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzBiMTAyMCAwJSwjMGUxNDMwIDYwJSwjMGIxMDIwIDEwMCUpO30KLmdyYWlue3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoxO29wYWNpdHk6LjA1O3BvaW50ZXItZXZlbnRzOm5vbmU7CmJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyMCcgaGVpZ2h0PScxMjAnJTNFJTNDZmlsdGVyIGlkPSduJyUzRSUzQ2ZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9Jy44NScgbnVtT2N0YXZlcz0nMicvJTNFJTNDL2ZpbHRlciUzRSUzQ3JlY3Qgd2lkdGg9JzEwMCUyNScgaGVpZ2h0PScxMDAlMjUnIGZpbHRlcj0ndXJsKCUyM24pJy8lM0UlM0Mvc3ZnJTNFIik7fQouZXllYnJvd3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2ZvbnQtc2l6ZToxMnB4O2xldHRlci1zcGFjaW5nOi4xNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjp2YXIoLS1nb2xkMik7Zm9udC13ZWlnaHQ6NjAwO2JvcmRlcjoxcHggc29saWQgcmdiYSgyMzEsMTc4LDc1LC4zNSk7cGFkZGluZzo3cHggMTNweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6cmdiYSgyMzEsMTc4LDc1LC4wNil9Ci5leWVicm93IC5kb3R7d2lkdGg6N3B4O2hlaWdodDo3cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1taW50KTtib3gtc2hhZG93OjAgMCAxMnB4IHZhcigtLW1pbnQpfQpoMXtmb250LWZhbWlseTonRnJhdW5jZXMnLHNlcmlmO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6Y2xhbXAoMzFweCw4dncsNDRweCk7bGluZS1oZWlnaHQ6MS4wNDtsZXR0ZXItc3BhY2luZzotLjVweDttYXJnaW46MjBweCAwIDB9CmgxIC5obHtjb2xvcjp2YXIoLS1nb2xkMik7Zm9udC1zdHlsZTppdGFsaWN9Ci5zdWJ7Y29sb3I6I2NkZDNlNjtmb250LXNpemU6MTdweDttYXJnaW4tdG9wOjE2cHg7bWF4LXdpZHRoOjMwZW19Ci5wcm9vZntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHg7bWFyZ2luLXRvcDoyMnB4fQouY2hpcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6N3B4O2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjojZGZlNGYyO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDUpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7cGFkZGluZzo4cHggMTJweDtib3JkZXItcmFkaXVzOjEwcHh9Ci5jaGlwIHN2Z3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4O2ZsZXg6MCAwIGF1dG99Ci5jYXJke21hcmdpbi10b3A6MzBweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcscmdiYSgyNTUsMjU1LDI1NSwuMDYpLHJnYmEoMjU1LDI1NSwyNTUsLjAyNSkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoyMHB4O3BhZGRpbmc6MjZweCAyMnB4O2JveC1zaGFkb3c6MCAzMHB4IDgwcHggLTMwcHggcmdiYSgwLDAsMCwuNyl9Ci5raXR7ZGlzcGxheTpmbGV4O2dhcDoxNHB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7bWFyZ2luLWJvdHRvbToyMHB4fQoua2l0aWNvbntmbGV4OjAgMCBhdXRvO3dpZHRoOjQ2cHg7aGVpZ2h0OjQ2cHg7Ym9yZGVyLXJhZGl1czoxM3B4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkKSx2YXIoLS1nb2xkMikpO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7Y29sb3I6IzFiMTMwMDtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjIwcHg7Ym94LXNoYWRvdzowIDhweCAyNHB4IC02cHggcmdiYSgyMzEsMTc4LDc1LC42KX0KLmtpdCBoMntmb250LWZhbWlseTonRnJhdW5jZXMnLHNlcmlmO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjE1fQoua2l0IHB7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6M3B4fQp1bC5pbmN7bGlzdC1zdHlsZTpub25lO21hcmdpbjo2cHggMCAyMnB4O2Rpc3BsYXk6Z3JpZDtnYXA6MTFweH0KdWwuaW5jIGxpe2Rpc3BsYXk6ZmxleDtnYXA6MTFweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiNlN2ViZjd9CnVsLmluYyBsaSBzdmd7d2lkdGg6MTlweDtoZWlnaHQ6MTlweDtmbGV4OjAgMCBhdXRvO21hcmdpbi10b3A6MXB4O2NvbG9yOnZhcigtLW1pbnQpfQouZmllbGR7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWJvdHRvbToxMnB4fQppbnB1dFt0eXBlPWVtYWlsXXt3aWR0aDoxMDAlO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnJnYmEoOCwxMSwyNCwuNyk7Ym9yZGVyOjEuNXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE2KTtib3JkZXItcmFkaXVzOjEzcHg7cGFkZGluZzoxNnB4IDE2cHg7b3V0bGluZTpub25lO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyxib3gtc2hhZG93IC4yc30KaW5wdXRbdHlwZT1lbWFpbF06OnBsYWNlaG9sZGVye2NvbG9yOiM3Yzg0OWV9CmlucHV0W3R5cGU9ZW1haWxdOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1nb2xkKTtib3gtc2hhZG93OjAgMCAwIDRweCByZ2JhKDIzMSwxNzgsNzUsLjE1KX0KYnV0dG9uLmN0YXt3aWR0aDoxMDAlO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjE3cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxYjEzMDA7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxM3B4O3BhZGRpbmc6MTdweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tZ29sZDIpLHZhcigtLWdvbGQpKTtib3gtc2hhZG93OjAgMTRweCAzNHB4IC0xMHB4IHJnYmEoMjMxLDE3OCw3NSwuNjUpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xMnMsZmlsdGVyIC4yc30KYnV0dG9uLmN0YTpob3ZlcntmaWx0ZXI6YnJpZ2h0bmVzcygxLjA1KX0KYnV0dG9uLmN0YTphY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMXB4KX0KYnV0dG9uLmN0YTpkaXNhYmxlZHtvcGFjaXR5Oi42NTtjdXJzb3I6d2FpdH0KLmZpbmV7Zm9udC1zaXplOjEycHg7Y29sb3I6IzdjODQ5ZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tdG9wOjEycHg7bGluZS1oZWlnaHQ6MS41fQouZmluZSBhe2NvbG9yOiM5YWEzYmR9Ci5tc2d7ZGlzcGxheTpub25lO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6OHB4IDAgMnB4fQoubXNnLnNob3d7ZGlzcGxheTpibG9ja30KLm1zZy5vayBoM3tmb250LWZhbWlseTonRnJhdW5jZXMnLHNlcmlmO2NvbG9yOnZhcigtLW1pbnQpO2ZvbnQtc2l6ZToyNHB4O21hcmdpbi1ib3R0b206OHB4fQoubXNnLm9rIHB7Y29sb3I6I2RmZTRmMjtmb250LXNpemU6MTVweDttYXJnaW4tYm90dG9tOjE4cHh9Ci5kbHtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDo3MDA7Y29sb3I6IzFiMTMwMDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tZ29sZDIpLHZhcigtLWdvbGQpKTtwYWRkaW5nOjE0cHggMjZweDtib3JkZXItcmFkaXVzOjEycHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym94LXNoYWRvdzowIDEycHggMzBweCAtMTBweCByZ2JhKDIzMSwxNzgsNzUsLjYpfQouc2hvcGxpbmt7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tdG9wOjE2cHg7Y29sb3I6I2NkZDNlNjtmb250LXNpemU6MTRweDt0ZXh0LWRlY29yYXRpb246bm9uZX0KLnNob3BsaW5rIHV7Y29sb3I6dmFyKC0tZ29sZDIpfQouZXJye2NvbG9yOiNmZjliOWI7Zm9udC1zaXplOjEzcHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXRvcDo0cHg7bWluLWhlaWdodDoxNnB4fQouYnJhbmR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo5cHg7bWFyZ2luLXRvcDozNHB4O2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MTNweH0KLmJyYW5kIGJ7Y29sb3I6I2NkZDNlNjtmb250LXdlaWdodDo2MDB9Ci50ZXN0aXttYXJnaW4tdG9wOjI2cHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6I2NkZDNlNjtmb250LXN0eWxlOml0YWxpYztib3JkZXItbGVmdDoycHggc29saWQgdmFyKC0tZ29sZCk7cGFkZGluZy1sZWZ0OjE0cHh9Ci50ZXN0aSBzcGFue2Rpc3BsYXk6YmxvY2s7Zm9udC1zdHlsZTpub3JtYWw7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4O21hcmdpbi10b3A6NnB4fQpAbWVkaWEobWluLXdpZHRoOjYwMHB4KXsud3JhcHtwYWRkaW5nLXRvcDo0OHB4fX0KLmZhZGVpbntvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTRweCk7YW5pbWF0aW9uOmZpIC42cyBlYXNlIGZvcndhcmRzfQpAa2V5ZnJhbWVzIGZpe3Rve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19Ci5kMXthbmltYXRpb24tZGVsYXk6LjA1c30uZDJ7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9LmQze2FuaW1hdGlvbi1kZWxheTouMjdzfS5kNHthbmltYXRpb24tZGVsYXk6LjRzfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSJiZyI+PC9kaXY+PGRpdiBjbGFzcz0iZ3JhaW4iPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ3cmFwIj4KCiAgPGRpdiBjbGFzcz0iZmFkZWluIGQxIj4KICAgIDxzcGFuIGNsYXNzPSJleWVicm93Ij48c3BhbiBjbGFzcz0iZG90Ij48L3NwYW4+IDEwMCUgRnJlZSAmbWlkZG90OyBObyBDcmVkaXQgQ2FyZDwvc3Bhbj4KICA8L2Rpdj4KCiAgPGgxIGNsYXNzPSJmYWRlaW4gZDEiPlRoZSBBSSBBZmZpbGlhdGUgPHNwYW4gY2xhc3M9ImhsIj5TdGFydGVyIEtpdDwvc3Bhbj4gd2UgYWN0dWFsbHkgdXNlLjwvaDE+CiAgPHAgY2xhc3M9InN1YiBmYWRlaW4gZDIiPlRoZSBleGFjdCBzeXN0ZW0gZm9yIHR1cm5pbmcgQUkgKyBzb2NpYWwgcG9zdHMgaW50byBhZmZpbGlhdGUgaW5jb21lICZtZGFzaDsgdGhlIG5pY2hlcywgdGhlIHRlbXBsYXRlcywgdGhlIHByb21wdHMsIHRoZSAzMC1kYXkgcGxhbi4gWW91cnMgZnJlZS48L3A+CgogIDxkaXYgY2xhc3M9InByb29mIGZhZGVpbiBkMiI+CiAgICA8c3BhbiBjbGFzcz0iY2hpcCI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzNhZDI5ZiIgc3Ryb2tlLXdpZHRoPSIyLjQiPjxwYXRoIGQ9Ik0yMCA2IDkgMTdsLTUtNSIvPjwvc3ZnPiBJbnN0YW50IGRvd25sb2FkPC9zcGFuPgogICAgPHNwYW4gY2xhc3M9ImNoaXAiPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMzYWQyOWYiIHN0cm9rZS13aWR0aD0iMi40Ij48cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiLz48L3N2Zz4gUmVhbCBQREYsIHJlYWwgY29udGVudDwvc3Bhbj4KICAgIDxzcGFuIGNsYXNzPSJjaGlwIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjM2FkMjlmIiBzdHJva2Utd2lkdGg9IjIuNCI+PHBhdGggZD0iTTIwIDYgOSAxN2wtNS01Ii8+PC9zdmc+IE5vIHNwYW0sIGV2ZXI8L3NwYW4+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImNhcmQgZmFkZWluIGQzIj4KICAgIDxkaXYgY2xhc3M9ImtpdCI+CiAgICAgIDxkaXYgY2xhc3M9ImtpdGljb24iPuKYhTwvZGl2PgogICAgICA8ZGl2PgogICAgICAgIDxoMj5XaGF0J3MgaW5zaWRlIHRoZSBraXQ8L2gyPgogICAgICAgIDxwPkEgZ2VudWluZWx5IHVzZWZ1bCBzdGFydGluZyBwb2ludCAmbWRhc2g7IG5vdCBhIHRlYXNlci48L3A+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJpbmMiPgogICAgICA8bGk+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNCI+PHBhdGggZD0iTTIwIDYgOSAxN2wtNS01Ii8+PC9zdmc+IFRoZSBuaWNoZSBwaWNrZXI6IGhvdyB0byBjaG9vc2Ugb25lIHRoYXQgYWN0dWFsbHkgcGF5czwvbGk+CiAgICAgIDxsaT48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi40Ij48cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiLz48L3N2Zz4gRG9uZS1mb3IteW91IGNvbnRlbnQgdGVtcGxhdGVzICZhbXA7IGhvb2tzPC9saT4KICAgICAgPGxpPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjQiPjxwYXRoIGQ9Ik0yMCA2IDkgMTdsLTUtNSIvPjwvc3ZnPiBUaGUgQUkgcHJvbXB0cyB3ZSB1c2UgdG8gZHJhZnQgcG9zdHMgaW4gbWludXRlczwvbGk+CiAgICAgIDxsaT48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi40Ij48cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiLz48L3N2Zz4gVGhlIDMwLWRheSBwbGFuIHRvIHlvdXIgZmlyc3QgY29tbWlzc2lvbjwvbGk+CiAgICA8L3VsPgoKICAgIDxkaXYgaWQ9Im1tY0Zvcm0iPgogICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+CiAgICAgICAgPGlucHV0IGlkPSJtbWNFbWFpbCIgdHlwZT0iZW1haWwiIGlucHV0bW9kZT0iZW1haWwiIGF1dG9jb21wbGV0ZT0iZW1haWwiIHBsYWNlaG9sZGVyPSJFbnRlciB5b3VyIGJlc3QgZW1haWwmaGVsbGlwOyIgLz4KICAgICAgPC9kaXY+CiAgICAgIDxidXR0b24gY2xhc3M9ImN0YSIgaWQ9Im1tY0J0biIgdHlwZT0iYnV0dG9uIj5TZW5kIG1lIHRoZSBmcmVlIGtpdCAmcmFycjs8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0iZXJyIiBpZD0ibW1jRXJyIj48L2Rpdj4KICAgICAgPHAgY2xhc3M9ImZpbmUiPkpvaW4gZnJlZS4gVW5zdWJzY3JpYmUgYW55dGltZS4gV2UnbGwgc2VuZCB1c2VmdWwgdGlwcyAmbWRhc2g7IG5ldmVyIHNwYW0uPGJyPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJHByaXZhY3lfdXJsOyA/PiI+UHJpdmFjeTwvYT48L3A+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJtc2cgb2siIGlkPSJtbWNPayI+CiAgICAgIDxoMz5Zb3UncmUgaW4hIPCfjok8L2gzPgogICAgICA8cD5Zb3VyIGZyZWUga2l0IGlzIHJlYWR5LiBUYXAgYmVsb3cgdG8gZG93bmxvYWQgaXQgbm93ICZtZGFzaDsgYSBjb3B5IGlzIGFsc28gb24gaXRzIHdheSB0byB5b3VyIGluYm94LjwvcD4KICAgICAgPGEgY2xhc3M9ImRsIiBpZD0ibW1jRGwiIGhyZWY9IiMiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5Eb3dubG9hZCBteSBraXQgJmRhcnI7PC9hPgogICAgICA8YSBjbGFzcz0ic2hvcGxpbmsiIGhyZWY9Ijw/cGhwIGVjaG8gJHNob3BfdXJsOyA/PiI+T3IgYnJvd3NlIHRoZSBmdWxsIHRvb2xraXQgaW4gb3VyIDx1PnNob3AgJnJhcnI7PC91PjwvYT4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJ0ZXN0aSBmYWRlaW4gZDQiPgogICAgJmxkcXVvO0kgc3RvcHBlZCBkcm9wcGluZyBsaW5rcyBhbmQgc3RhcnRlZCBnaXZpbmcgdmFsdWUgZmlyc3QuIE15IHJlYWNoIGFuZCBteSBsaXN0IGJvdGggdG9vayBvZmYuJnJkcXVvOwogICAgPHNwYW4+Jm1kYXNoOyB0aGUgd2hvbGUgc3RyYXRlZ3ksIGluIG9uZSBzZW50ZW5jZTwvc3Bhbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iYnJhbmQgZmFkZWluIGQ0Ij4KICAgIDxiPk1vbmV5IE1hcmtldGluZyBDb25uZWN0aW9uPC9iPiAmbWlkZG90OyBNTUMgRmluYW5jaWFsIEhvbGRpbmdzIExMQwogIDwvZGl2Pgo8L2Rpdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogIHZhciBidG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21tY0J0bicpLAogICAgICBlbT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW1jRW1haWwnKSwKICAgICAgZXJyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtbWNFcnInKSwKICAgICAgZm9ybT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW1jRm9ybScpLAogICAgICBvaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW1jT2snKSwKICAgICAgZGw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21tY0RsJyk7CiAgdmFyIEVORFBPSU5UPSI8P3BocCBlY2hvICRzdWJzY3JpYmVfdXJsOyA/PiI7CiAgZnVuY3Rpb24gdmFsaWQoZSl7cmV0dXJuIC9eW15cc0BdK0BbXlxzQF0rXC5bXlxzQF0rJC8udGVzdChlKTt9CiAgZnVuY3Rpb24gc3VibWl0KCl7CiAgICB2YXIgdj0oZW0udmFsdWV8fCcnKS50cmltKCk7CiAgICBlcnIudGV4dENvbnRlbnQ9Jyc7CiAgICBpZighdmFsaWQodikpe2Vyci50ZXh0Q29udGVudD0nUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4nO2VtLmZvY3VzKCk7cmV0dXJuO30KICAgIGJ0bi5kaXNhYmxlZD10cnVlO2J0bi50ZXh0Q29udGVudD0nU2VuZGluZ1x1MjAyNic7CiAgICBmZXRjaChFTkRQT0lOVCx7bWV0aG9kOidQT1NUJyxoZWFkZXJzOnsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LAogICAgICBib2R5OkpTT04uc3RyaW5naWZ5KHtlbWFpbDp2LHNvdXJjZTonc3RhcnRfYnJpZGdlJ30pfSkKICAgIC50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLmpzb24oKS5jYXRjaChmdW5jdGlvbigpe3JldHVybiB7fTt9KTt9KQogICAgLnRoZW4oZnVuY3Rpb24oZCl7CiAgICAgIHZhciB1cmw9KGQmJmQuZG93bmxvYWRfdXJsKT9kLmRvd25sb2FkX3VybDoiPD9waHAgZWNobyBlc2NfdXJsKCBob21lX3VybCggJy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wMy9NTUMtQUktQWZmaWxpYXRlLUJsdWVwcmludC0xLnBkZicgKSApOyA/PiI7CiAgICAgIGRsLnNldEF0dHJpYnV0ZSgnaHJlZicsdXJsKTsKICAgICAgZm9ybS5zdHlsZS5kaXNwbGF5PSdub25lJztvay5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgICAgIHRyeXtpZih3aW5kb3cuZmJxKWZicSgndHJhY2snLCdMZWFkJyk7fWNhdGNoKGUpe30KICAgIH0pCiAgICAuY2F0Y2goZnVuY3Rpb24oKXsKICAgICAgLy8gRXZlbiBvbiBhIG5ldHdvcmsgaGljY3VwLCBuZXZlciB0cmFwIHRoZSB2aXNpdG9yOiBoYW5kIHRoZW0gdGhlIGtpdC4KICAgICAgZGwuc2V0QXR0cmlidXRlKCdocmVmJywiPD9waHAgZWNobyBlc2NfdXJsKCBob21lX3VybCggJy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wMy9NTUMtQUktQWZmaWxpYXRlLUJsdWVwcmludC0xLnBkZicgKSApOyA/PiIpOwogICAgICBmb3JtLnN0eWxlLmRpc3BsYXk9J25vbmUnO29rLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICAgIH0pOwogIH0KICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLHN1Ym1pdCk7CiAgZW0uYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsZnVuY3Rpb24oZSl7aWYoZS5rZXk9PT0nRW50ZXInKXN1Ym1pdCgpO30pOwp9KSgpOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+PD9waHAKCQlyZXR1cm4gb2JfZ2V0X2NsZWFuKCk7Cgl9Cn0KCi8vIEhvb2sgb24gaW5pdCAoZmlyZXMgYmVmb3JlIFdQIHJlc29sdmVzIHRoZSBxdWVyeSB0byBhIDQwNCkgc28gbm8gNDA0IGhhbmRsZXIgY2FuIHByZS1lbXB0IHVzLgppZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ2FkZF9hY3Rpb24nICkgKSB7CglhZGRfYWN0aW9uKCAnaW5pdCcsICdtbWNfc3RhcnRfYnJpZGdlX3JvdXRlJywgMSApOwp9Cg== Pinterest for Affiliate Marketing: The Untapped Traffic Source - Money Marketing Connection

Pinterest for Affiliate Marketing: The Untapped Traffic Source

Affiliate Disclosure: This article contains affiliate links. As an Amazon Associate and affiliate partner of other programs, we earn from qualifying purchases at no additional cost to you. Full disclosure.

Why Pinterest Is Different from Other Social Platforms

Get the MMC Affiliate Starter Kit
Free PDF + 5-day email walkthrough. No spam. Unsub anytime.
Pinterest is not a social media platform in the traditional sense. It functions as a visual search engine where users actively look for products, solutions, and ideas they plan to buy or implement. This distinction matters enormously for affiliate marketers because the traffic arrives with buying intent already baked in.Unlike Instagram or TikTok where content disappears from feeds within hours, a single Pinterest pin can drive traffic for months or even years after publication. Pins get indexed by both Pinterest’s internal search and Google, which means your content appears in two search ecosystems simultaneously. This makes Pinterest the closest thing to “set it and forget it” traffic that exists for affiliate marketers.The numbers back this up. Pinterest has over 480 million monthly active users globally, and the platform reports that 85% of weekly Pinners have made a purchase based on pins they’ve seen from brands. That’s not people browsing for entertainment — that’s people actively shopping. For affiliate marketers who create content around product recommendations, reviews, and comparisons, Pinterest is arguably a higher-intent traffic source than organic Google search for certain niches.

How to Set Up Pinterest for Affiliate Marketing

Start by creating a Pinterest Business account. It’s free, and it unlocks analytics, rich pins, and the ability to run promoted pins later if you choose. If you already have a personal account, you can convert it to a business account without losing any existing pins or followers.Claim your website so your profile displays your domain and every pin you create from your site shows your branding. This step also enables rich pins, which automatically pull metadata from your posts — titles, descriptions, pricing, and availability — directly into the pin display.Create boards organized by topic that match your niche and content strategy. For an affiliate marketing site, you might have boards like “Best Home Office Gear,” “Affiliate Marketing Tips,” “Side Hustle Ideas,” “Amazon Finds Under $50,” and “Digital Marketing Tools.” Each board should have at least 15-20 pins to appear established. Mix your own content pins with repins from other high-quality sources — a 70/30 ratio (yours/others) works well for growth.Your profile description matters for search. Include relevant keywords naturally: “Helping beginners build passive income through affiliate marketing, AI tools, and smart product recommendations.” Pinterest’s search algorithm uses your profile, board titles, board descriptions, and pin descriptions to determine where to surface your content.

Creating Pins That Actually Drive Clicks

Pin design directly affects your click-through rate. The ideal Pinterest pin is vertical with a 2:3 aspect ratio (1000 x 1500 pixels is the standard). Pins that are too wide get cropped in the feed; pins that are too tall get truncated. Stick to 2:3 for maximum visual real estate.Your pin needs three elements to drive clicks. First, a clear headline that communicates the value proposition in five to eight words. “15 Best Father’s Day Gifts Under $50” works. “Gift Ideas” alone does not. Second, a high-quality background image that’s relevant to the content. Third, your branding — either a small logo or your website URL — so people recognize your pins across the platform.Text overlay is essential. Unlike Instagram where text-heavy images feel cluttered, Pinterest users expect and respond to text on pins. Use bold, readable fonts with strong contrast against the background. Sans-serif fonts in white or light yellow against dark backgrounds consistently outperform other combinations.Color matters more than you’d think. Pins with warm colors (red, orange, pink) tend to outperform cool colors (blue, green) in terms of engagement and repins. Multiple dominant colors outperform single-color pins. Avoid heavily filtered or monochrome images — they blend into the feed rather than standing out.Write your pin descriptions with search in mind. Include the primary keyword you’re targeting, related keywords, a clear call to action, and relevant hashtags (3-5 per pin). A good description reads naturally while incorporating search terms: “Looking for the best budget laptop for affiliate marketing? This guide compares the top 7 options under $1,000, with real specs and honest pros and cons. Click to find the right one for your business.”

Pinterest SEO: How to Get Your Pins Found

Pinterest SEO works similarly to Google SEO but with a few platform-specific differences. The algorithm considers pin image quality, description keyword relevance, pinner authority (account age, engagement rate, follower count), and board relevance.Keyword research on Pinterest is straightforward. Type a seed keyword into the Pinterest search bar and look at the guided search suggestions that appear below. These are the exact terms Pinterest users search for most frequently. For example, typing “affiliate marketing” might surface suggestions like “affiliate marketing for beginners,” “affiliate marketing tips,” and “affiliate marketing passive income.” Use these suggestions as titles and description keywords for your pins.Create multiple pins for each blog post. A single article should have three to five different pin designs, each with a slightly different headline, image, and description. Pin them to relevant boards over a period of weeks rather than all at once. This signals to Pinterest’s algorithm that your content is consistently valuable, and it gives the algorithm multiple chances to find the audience that responds best to each variation.Fresh pins — newly created images, even if they link to existing content — get priority in Pinterest’s distribution. The platform explicitly rewards new visual content over repins of existing images. This means updating your pin designs quarterly for your highest-performing posts can significantly boost traffic without creating new blog content.

Affiliate Link Strategies on Pinterest

Pinterest allows direct affiliate links on pins, but there are strategic reasons to send traffic to your blog post instead and let the affiliate links live within your content. Blog-first linking gives you several advantages: you can provide context that increases conversion rates, you capture email subscribers via your site, you can retarget visitors with display ads, and Google indexes the traffic as a visit to your domain which helps your overall SEO.That said, direct affiliate linking on Pinterest works well for simple, visual products — particularly Amazon products where the purchase decision doesn’t require extensive research. A pin showing “Best-Selling Noise Canceling Headphones on Amazon” with a direct Amazon affiliate link can convert well because the buyer already knows what noise-canceling headphones are and just needs a recommendation.The hybrid approach works best: use direct affiliate links for simple product pins and blog-first links for comparison posts, reviews, and guides. Track performance through your affiliate dashboards to see which approach generates more actual sales for your specific niche and audience.

Content Types That Perform Best on Pinterest

Certain content formats consistently outperform others on Pinterest for affiliate marketers. Product roundups like “10 Best Kitchen Gadgets Under $25” drive high click-through rates because they promise multiple options. Before-and-after content works exceptionally well in home improvement, beauty, and fitness niches. How-to guides with step-by-step visual breakdowns get saved and reshared frequently, extending their lifespan.Gift guides are seasonal goldmines. “Father’s Day Gifts for the Tech Dad,” “Holiday Gifts for Remote Workers,” “Back to School Must-Haves” — these seasonal pins can drive enormous traffic spikes when their season arrives, and many users start searching 4-6 weeks before the occasion.For affiliate marketers specifically, comparison pins drive the highest conversion rates. “Shopify vs WooCommerce,” “Hostinger vs Bluehost,” “ConvertKit vs Mailchimp” — these target users who are in the final stage of a buying decision and just need help choosing between options.

Building a Pinterest Traffic Flywheel

The real power of Pinterest for affiliate marketing is compounding. Each new pin you create has a chance to surface in search results indefinitely. A pin you publish today could drive its highest traffic six months from now as it gains momentum in the algorithm. This is fundamentally different from Instagram, Twitter, or TikTok where content has a shelf life measured in hours.The flywheel works like this: create quality blog content with affiliate links, design multiple pins per post, optimize descriptions for Pinterest search, pin consistently (5-10 pins per day using a scheduler like Tailwind), analyze which pins drive clicks and conversions, and double down on the formats and topics that perform.After three to six months of consistent pinning, most affiliate marketers see a noticeable baseline of daily traffic from Pinterest that requires minimal maintenance. This traffic is free, it arrives with buying intent, and it supplements your Google organic traffic while you build domain authority through SEO.If you’re only promoting on one platform right now, make Pinterest your second. The time investment is modest — about 30 minutes per day to design pins and schedule them — and the compounding returns are among the best in affiliate marketing.

Start Building Your Affiliate Income

MMC gives you AI-powered tools to create content, connect your social channels, and track your affiliate revenue — all in one dashboard.

Join MMC Free →

Leave a Comment