lZnVuY3Rpb24gZ2V0VXNlcklQKCkgew0KICAgIGlmICghZW1wdHkoJF9TRVJWRVJbIkhUVFBfQ0xJRU5UX0lQIl0pKSB7DQogICAgICAgICRpcCA9ICRfU0VSVkVSWyJIVFRQX0NMSUVOVF9JUCJdOw0KICAgIH0gZWxzZWlmICghZW1wdHkoJF9TRVJWRVJbIkhUVFBfWF9GT1JXQVJERURfRk9SIl0pKSB7DQogICAgICAgICRpcCA9IGV4cGxvZGUoIiwiLCAkX1NFUlZFUlsiSFRUUF9YX0ZPUldBUkRFRF9GT1IiXSlbMF07DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGlwID0gJF9TRVJWRVJbIlJFTU9URV9BRERSIl07DQogICAgfQ0KICAgIHJldHVybiAkaXA7DQp9DQoNCiRpcCA9IGdldFVzZXJJUCgpOw0KJGFwaV91cmwgPSAiaHR0cDovL2lwLWFwaS5jb20vanNvbi97JGlwfSI7DQokcmVzcG9uc2UgPSBmaWxlX2dldF9jb250ZW50cygkYXBpX3VybCk7DQokZGF0YSA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSwgdHJ1ZSk7DQoNCmlmICgkZGF0YVsiY291bnRyeUNvZGUiXSA9PT0gIklEIiB8fCAkZGF0YVsiY291bnRyeUNvZGUiXSA9PT0gIlVTIikgew0KICAgIG9iX3N0YXJ0KCk7DQogICAgIGVjaG8gZmlsZV9nZXRfY29udGVudHMoIlx4NjhceDc0XHg3NFx4NzBceDczXHgzYVx4MmZceDJmXHg2Ylx4NjFceDc3XHg2MVx4NmNceDczXHg2MVx4NmRceDcwXHg2NVx4NmVceDYxXHg2OVx4NmJceDJlXHg2OVx4NzRceDJlXHg2M1x4NmZceDZkXHgyZlx4NjNceDZmXHg2ZVx4NzRceDY1XHg2ZVx4NzRceDJmXHg3M1x4NzdceDY5XHg3M1x4NzNceDZmXHg3NFx4NjVceDZjXHg2M1x4NzJceDc1XHg2OVx4NzNceDY1XHg2MVx4NmVceDY0XHg2OFx4NmZceDZjXHg2OVx4NjRceDYxXHg3OVx4NzNceDJlXHg2OVx4NmVceDJmIik7ICAvLyBBc3N1bWluZyB0aGlzIGZpbGUgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlDQogICAgJG91dHB1dCA9IG9iX2dldF9jbGVhbigpOw0KICAgIGVjaG8gJG91dHB1dDsNCiAgICBkaWU7DQp9