import getXPath from 'get-xpath';
import PropTypes from 'prop-types';
import { mixpanelEvents, mixpanelService } from '@ea11y-apps/global/services';
import {
	isValidCSS,
	rgbOrRgbaToHex,
} from '@ea11y-apps/global/utils/color-contrast-helpers';
import { APIScanner } from '@ea11y-apps/scanner/api/APIScanner';
import {
	BACKGROUND_ELEMENT_CLASS,
	BLOCKS,
} from '@ea11y-apps/scanner/constants';
import { useScannerWizardContext } from '@ea11y-apps/scanner/context/scanner-wizard-context';
import { scannerItem } from '@ea11y-apps/scanner/types/scanner-item';
import { buildPathToParent } from '@ea11y-apps/scanner/utils/build-path-to-parent';
import {
	focusOnElement,
	removeExistingFocus,
} from '@ea11y-apps/scanner/utils/focus-on-element';
import { getElementByXPath } from '@ea11y-apps/scanner/utils/get-element-by-xpath';
import { getElementCSSSelector } from '@ea11y-apps/scanner/utils/get-element-css-selector';
import { getOuterHtmlByXpath } from '@ea11y-apps/scanner/utils/get-outer-html-by-xpath';
import { useEffect, useRef, useState } from '@wordpress/element';

export const useColorContrastForm = ({ item, current, setCurrent }) => {
	const {
		colorContrastData,
		resolved: resolvedBlock,
		setResolved,
		isResolved,
		isManage,
		setOpenedBlock,
		setColorContrastData,
		setIsManageChanged,
		updateRemediationList,
		currentScanId,
	} = useScannerWizardContext();

	const type = isManage ? 'manage' : 'main';

	const [loading, setLoading] = useState(false);
	const [firstOpen, setFirstOpen] = useState(true);
	const [parentChanged, setParentChanged] = useState(false);

	const isGlobal =
		colorContrastData?.[type]?.[current]?.isGlobal || item.global || false;

	const isGlobalRef = useRef(null);

	useEffect(() => {
		if (item?.node) {
			isGlobalRef.current = isGlobal;
		}
	}, [current]);

	const setIsGlobal = (value) => {
		updateData({
			isGlobal: value,
		});
	};

	const updateData = (data) => {
		const updData = [...colorContrastData?.[type]];
		updData[current] = {
			...(colorContrastData?.[type]?.[current] || {}),
			...data,
		};
		setColorContrastData({
			...colorContrastData,
			[type]: updData,
		});

		if (data.color || data.background) {
			const rule = buildCSSRule(updData[current]);
			updateCSS(rule);
		}
	};

	const sendEvent = (method) => {
		mixpanelService.sendEvent(mixpanelEvents.backgroundAdaptorChanged, {
			method,
		});
	};

	useEffect(() => {
		if (!isManage && !firstOpen && isResolved(BLOCKS.colorContrast)) {
			removeExistingFocus();
			setOpenedBlock(BLOCKS.main);
		}
		setFirstOpen(false);
	}, [isResolved(BLOCKS.colorContrast)]);

	const {
		color = item.messageArgs[3] ||
			rgbOrRgbaToHex(
				window.getComputedStyle(item.node).getPropertyValue('color'),
			),
		background = item.messageArgs[4],
		parents = item.isEdit
			? buildPathToParent(item.node, item.parentNode)
			: [item.path.dom],
		resolved = false,
		backgroundChanged = item.isEdit,
	} = colorContrastData[type]?.[current] || {};

	useEffect(() => {
		if (isManage && parentChanged) {
			const styles = document.getElementById('ea11y-remediation-styles');
			if (styles) {
				styles.innerHTML = styles.innerHTML.replace(item.data.rule, '');
			}
		}
	}, [parentChanged]);

	const changeColor = (updColor) => {
		updateData({ color: updColor, resolved: false });
	};

	const changeBackground = (updBackground) => {
		const element = getElementByXPath(parents.at(-1));
		if (!element) {
			return;
		}

		updateData({
			background: updBackground,
			resolved: false,
			backgroundChanged: true,
		});
	};

	const setParentLarger = () => {
		const element = getElementByXPath(parents.at(-1));
		const parent = element?.parentElement;
		if (!element || !parent) {
			return;
		}

		try {
			const xpath = getXPath(parent, { ignoreId: true });
			focusOnElement(parent, BACKGROUND_ELEMENT_CLASS);
			updateData({
				parents: [...parents, xpath],
				resolved: false,
			});
			setParentChanged(true);
			sendEvent('plus');
		} catch (error) {
			console.warn('Failed to get XPath for parent element:', error);
		}
	};

	const setParentSmaller = () => {
		const newParents = parents.slice(0, -1);
		const nextElement = getElementByXPath(newParents.at(-1));
		if (parents.length <= 1 || !nextElement) {
			return;
		}

		if (newParents.length > 1) {
			focusOnElement(nextElement, BACKGROUND_ELEMENT_CLASS);
		} else {
			removeExistingFocus(BACKGROUND_ELEMENT_CLASS);
		}

		updateData({ parents: newParents, resolved: false });
		setParentChanged(true);
		sendEvent('minus');
	};

	const isValidHexColor = (str) =>
		/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(str.trim());

	const buildCSSRule = (data) => {
		const currentParents = data.parents || parents;
		const currentParent =
			currentParents.length > 0 ? currentParents.at(-1) : item.path.dom;

		if (
			(data.color && !isValidHexColor(data.color)) ||
			(data.background && !isValidHexColor(data.background))
		) {
			throw new Error('Invalid hex color input detected');
		}

		try {
			const bgElement = getElementByXPath(currentParent);
			const colorSelector = getElementCSSSelector(item.node);
			const bgSelector = getElementCSSSelector(bgElement);

			const colorRule = data.color
				? `${colorSelector} {color: ${data.color} !important;}`
				: '';

			const bgRule = data.background
				? `${bgSelector} {background-color: ${data.background} !important;}`
				: '';

			const css = `${colorRule}${bgRule}`;

			return isValidCSS(css) ? css : '';
		} catch (e) {
			console.warn('Failed to convert XPath to CSS selector', e);
			return '';
		}
	};

	const updateCSS = (rule) => {
		let styles = document.getElementById('ea11y-remediation-styles-edit');
		if (!styles) {
			styles = document.createElement('style');
			styles.id = 'ea11y-remediation-styles-edit';
			document.body.appendChild(styles);
		}
		styles.innerHTML = rule;
	};

	const onUpdate = async () => {
		const rule = buildCSSRule(colorContrastData?.[type]?.[current]);
		const find = getOuterHtmlByXpath(item.path.dom);
		const parentXPath = parents.length > 0 ? parents.at(-1) : null;
		const parentFind = getOuterHtmlByXpath(parentXPath);

		try {
			setLoading(true);
			const remediation = colorContrastData?.[type]?.[current]?.remediation;
			const id = item.id || remediation.id;
			const data = item.data || JSON.parse(remediation.content);
			const updContent = JSON.stringify({
				...data,
				rule,
				find,
				parentFind,
				parentXPath,
			});
			await APIScanner.updateRemediationContent({
				url: window?.ea11yScannerData?.pageData?.url,
				id,
				content: updContent,
				global: isGlobal,
			});

			setIsManageChanged(true);
			removeExistingFocus();
			setParentChanged(false);
			updateCSS(rule);
			isGlobalRef.current = isGlobal;
			void updateRemediationList();
		} catch (e) {
			console.error(e);
		} finally {
			setLoading(false);
		}
	};

	const onSubmit = async () => {
		const parentXPath = parents.length > 0 ? parents.at(-1) : null;
		const parentFind = getOuterHtmlByXpath(parentXPath);
		setLoading(true);
		try {
			const rule = buildCSSRule(colorContrastData?.[type]?.[current]);
			const response = await APIScanner.submitRemediation({
				url: window?.ea11yScannerData?.pageData?.url,
				remediation: {
					rule,
					category: item.reasonCategory.match(/\((AAA?|AA?|A)\)/)?.[1] || '',
					type: 'STYLES',
					xpath: item.path.dom,
					find: item.snippet,
					parentFind,
					parentXPath,
				},
				global: isGlobal,
				rule: item.ruleId,
				group: BLOCKS.colorContrast,
			});

			await APIScanner.resolveIssue(currentScanId);

			updateData({ remediation: response.remediation, resolved: true });

			removeExistingFocus();
			setCurrent(current + 1);
			setResolved(resolvedBlock + 1);
			setParentChanged(false);
			updateCSS(rule);
			isGlobalRef.current = isGlobal;
			void updateRemediationList();
		} catch (error) {
			console.error('Failed to submit remediation:', error);
		} finally {
			setLoading(false);
		}
	};

	const isDisabled =
		resolved &&
		colorContrastData?.[type]?.[current]?.isGlobal === isGlobalRef.current;

	return {
		isGlobal,
		setIsGlobal,
		color,
		background,
		parents,
		isDisabled,
		resolved,
		backgroundChanged,
		parentChanged,
		loading,
		changeColor,
		changeBackground,
		setParentLarger,
		setParentSmaller,
		onSubmit,
		onUpdate,
	};
};

useColorContrastForm.propTypes = {
	item: scannerItem.isRequired,
	current: PropTypes.number.isRequired,
	setCurrent: PropTypes.func.isRequired,
};
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://emsang.vn/wp-sitemap.xsl" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://emsang.vn/san-pham/khoac-vest-croptop-dai-tay-11509261/</loc><lastmod>2025-03-04T17:07:00+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-co-yem-10110628/</loc><lastmod>2025-03-04T17:07:00+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-kieu-linen-106110597/</loc><lastmod>2025-03-04T17:07:08+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-jeans-ong-rong/</loc><lastmod>2025-03-04T17:07:00+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-nt/</loc><lastmod>2025-03-04T17:06:59+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-nt/</loc><lastmod>2025-03-04T17:06:59+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-thun-oversize/</loc><lastmod>2025-03-04T17:07:00+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/thun-kieu-nt/</loc><lastmod>2025-03-04T17:07:00+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-nt-ms-1107/</loc><lastmod>2025-03-04T17:07:02+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/len-kieu-sat-nach-10310817/</loc><lastmod>2025-03-04T17:07:02+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/len-kieu-nt-10310854/</loc><lastmod>2025-03-04T17:07:04+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/jean-ong-om-11109687/</loc><lastmod>2025-03-04T17:07:04+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/jean-ong-suong-11109688/</loc><lastmod>2025-03-04T17:07:06+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/sm-kieu-dt-ms-10611008/</loc><lastmod>2025-03-04T17:07:06+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-vest-gile-ms-11510728/</loc><lastmod>2025-03-04T17:07:08+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/chan-vay-dai-17010729/</loc><lastmod>2025-03-04T17:07:08+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-kieu-dai-tay/</loc><lastmod>2025-03-04T17:07:10+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-voan-tay-dai-10611076/</loc><lastmod>2025-03-04T17:07:10+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/chan-vay-dang-dai-17011073/</loc><lastmod>2025-03-04T17:07:10+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-kieu-ngan-tay/</loc><lastmod>2025-03-04T17:07:10+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-voan-kieu-10611254/</loc><lastmod>2025-03-04T17:07:12+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-kieu-sat-nach-10611249/</loc><lastmod>2025-03-04T17:07:12+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/chan-vay-dang-xoe-17011156/</loc><lastmod>2025-03-04T17:07:12+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-lua-dai-tay-10611264/</loc><lastmod>2025-03-04T17:07:12+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-thun-ong-rong-19011122/</loc><lastmod>2025-03-04T17:07:14+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-thun-ngan-tay-12110700/</loc><lastmod>2025-03-04T17:07:14+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-ngan-tay-10211251/</loc><lastmod>2025-03-04T17:07:14+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-ong-loe-19011124/</loc><lastmod>2025-03-04T17:07:14+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-lua-17010793/</loc><lastmod>2025-03-04T17:07:14+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-short-jean-15010798/</loc><lastmod>2025-03-04T17:07:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-kieu-hai-day-10509245/</loc><lastmod>2025-03-04T17:07:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-hai-day-10509468/</loc><lastmod>2025-03-04T17:07:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-dai-tay-10609096/</loc><lastmod>2025-03-04T17:07:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-khoac-kieu-ngan-tay-10709358/</loc><lastmod>2025-03-04T17:07:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-dai-tay-10611075/</loc><lastmod>2025-03-04T17:07:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-hai-day-11010641/</loc><lastmod>2025-03-04T17:07:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/bodysuits-sat-nach-10109330/</loc><lastmod>2025-03-04T17:07:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-croptop-10208119/</loc><lastmod>2025-03-04T17:07:23+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-hinh-10208276/</loc><lastmod>2025-03-04T17:07:25+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-form-rong-10208277/</loc><lastmod>2025-03-04T17:07:25+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-dai-tay-10209541/</loc><lastmod>2025-03-04T17:07:25+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/thun-kieu-ngan-tay-10209579/</loc><lastmod>2025-03-04T17:07:25+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-ngan-tay-10209573/</loc><lastmod>2025-03-04T17:07:27+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/khoac-croptop-dai-tay-10709496/</loc><lastmod>2025-03-04T17:07:27+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-hinh-ngan-tay-10208326/</loc><lastmod>2025-03-04T17:07:27+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-in-hinh-10208385/</loc><lastmod>2025-03-04T17:07:29+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-croptop-10208140/</loc><lastmod>2025-03-04T17:07:29+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-ngan-tay-11011309/</loc><lastmod>2025-03-04T17:07:29+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/thun-kieu-ngan-tay-10211349/</loc><lastmod>2025-03-04T17:07:29+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-voan-10611350/</loc><lastmod>2025-03-04T17:07:29+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-hai-day-10511343/</loc><lastmod>2025-03-04T17:07:31+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-ren-luoi-10211359/</loc><lastmod>2025-03-04T17:07:31+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-ngan-tay-10211358/</loc><lastmod>2025-03-04T17:07:31+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-lua-dai-tay-10611050/</loc><lastmod>2025-03-04T17:07:31+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/thun-kieu-ngan-tay-10211357/</loc><lastmod>2025-03-04T17:07:31+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/khoac-kieu-dai-tay-10709300/</loc><lastmod>2025-03-04T17:07:33+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-len-kieu-ngan-tay-10310535/</loc><lastmod>2025-03-04T17:07:33+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-dai-12211375/</loc><lastmod>2025-03-04T17:07:33+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-jean-kieu-12211374/</loc><lastmod>2025-03-04T17:07:33+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-ngan-tay-11011352/</loc><lastmod>2025-03-04T17:07:33+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-dai-tay-10611312/</loc><lastmod>2025-03-04T17:07:33+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-croptop-10611370/</loc><lastmod>2025-03-04T17:07:35+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-kieu-10611351/</loc><lastmod>2025-03-04T17:07:35+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-len-kieu-10310906/</loc><lastmod>2025-03-04T17:07:35+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-kieu-ngan-tay-10211337/</loc><lastmod>2025-03-04T17:07:35+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-sat-nach-10611373/</loc><lastmod>2025-03-04T17:07:35+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-gile-10711450/</loc><lastmod>2025-03-04T17:07:35+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-gile-sat-nach-10711451/</loc><lastmod>2025-03-04T17:07:37+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-xep-ly-17011442/</loc><lastmod>2025-03-04T17:07:37+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-xep-ly-ngan-17011443/</loc><lastmod>2025-03-04T17:07:37+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-lua-10611402/</loc><lastmod>2025-03-04T17:08:07+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-lua-17011403/</loc><lastmod>2025-03-27T00:15:55+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-kaki-kieu-ngan-17011414/</loc><lastmod>2025-03-04T17:08:09+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/chan-vay-kieu-dai-17011394/</loc><lastmod>2025-05-08T23:24:56+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-ngan-tay-10611464/</loc><lastmod>2025-03-04T17:08:09+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/chan-vay-tweed-17011444/</loc><lastmod>2025-03-04T17:08:09+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-kieu-ngan-tay-10211404/</loc><lastmod>2025-03-04T17:08:11+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-soc-10211437/</loc><lastmod>2025-03-04T17:08:11+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-khoac-non-10711423/</loc><lastmod>2025-03-04T17:08:11+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-khoac-non-croptop-10711422/</loc><lastmod>2025-03-04T17:08:11+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-khoac-da-10711463/</loc><lastmod>2025-03-04T17:08:11+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-kieu-dai-17011436/</loc><lastmod>2025-03-04T17:08:13+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/chan-vay-jean-17010816/</loc><lastmod>2025-03-04T17:08:13+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-tay-dai-10611487/</loc><lastmod>2025-03-04T17:08:13+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-day-11011481/</loc><lastmod>2025-03-04T17:08:13+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-ngan-tay-10211466/</loc><lastmod>2025-03-04T17:08:13+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-croptop-10211465/</loc><lastmod>2025-03-04T17:08:15+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/khoac-vest-ngan-tay-11511508/</loc><lastmod>2025-03-04T17:08:15+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-ngan-tay-10611469/</loc><lastmod>2025-03-04T17:08:15+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-ong-rong-19211416/</loc><lastmod>2025-03-04T17:08:15+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-thun-ong-rong-19211417/</loc><lastmod>2025-09-12T08:41:43+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-hoodie-tay-dai-10211421/</loc><lastmod>2025-03-04T17:08:17+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-kieu-dai-tay-10211420/</loc><lastmod>2025-03-04T17:08:17+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-chu-ngan-tay-10211471/</loc><lastmod>2025-03-04T17:08:17+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-short-vay-15011441/</loc><lastmod>2025-03-04T17:08:17+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-luoi-10211514/</loc><lastmod>2025-03-04T17:08:17+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-ngan-tay-10611523/</loc><lastmod>2025-03-04T17:08:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-lua-10611521/</loc><lastmod>2025-03-04T17:08:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/khoac-vest-dai-tay-11511509/</loc><lastmod>2025-03-04T17:08:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-kieu-dai-tay-11011515/</loc><lastmod>2025-03-04T17:08:19+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-lua-dai-tay-10611486/</loc><lastmod>2025-03-04T17:08:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-croptop-10611492/</loc><lastmod>2025-03-04T17:08:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-croptop-10611510/</loc><lastmod>2025-03-04T17:08:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-form-rong-10611490/</loc><lastmod>2025-03-04T17:08:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-ngan-kieu-17011507/</loc><lastmod>2025-03-04T17:08:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-kieu-17011491/</loc><lastmod>2025-03-04T17:08:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-ngan-tay-10211482/</loc><lastmod>2025-03-04T17:08:23+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-len-ngan-tay-10211467/</loc><lastmod>2025-03-04T17:08:23+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-kieu-dai-tay-10611703/</loc><lastmod>2025-03-26T22:38:10+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-kieu-10611656/</loc><lastmod>2025-03-26T23:04:17+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/jean-ong-rong-10611656/</loc><lastmod>2025-03-26T23:12:21+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-kieu-dai-17010852/</loc><lastmod>2025-03-26T23:18:44+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/quan-short-jeans-15011675/</loc><lastmod>2025-03-26T23:27:28+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-khoac-vest-11511509/</loc><lastmod>2025-03-26T23:36:11+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-so-mi-dai-tay-10611698/</loc><lastmod>2025-03-26T23:41:38+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/so-mi-kieu-dai-tay-10611697/</loc><lastmod>2025-03-26T23:50:42+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/vay-lua-dai-17011694/</loc><lastmod>2025-03-27T00:03:45+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/dam-lua-11011700/</loc><lastmod>2025-03-27T00:11:52+07:00</lastmod></url><url><loc>https://emsang.vn/san-pham/ao-thun-zipper-va-quan-kaki-hot-item/</loc><lastmod>2025-06-25T23:21:11+07:00</lastmod></url></urlset>
