@asteby/storefront-react 0.25.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -2
- package/dist/account-server.cjs +128 -19
- package/dist/account-server.cjs.map +1 -1
- package/dist/account-server.d.cts +67 -4
- package/dist/account-server.d.ts +67 -4
- package/dist/account-server.js +125 -20
- package/dist/account-server.js.map +1 -1
- package/dist/account.cjs +252 -7
- package/dist/account.cjs.map +1 -1
- package/dist/account.css +91 -0
- package/dist/account.d.cts +130 -6
- package/dist/account.d.ts +130 -6
- package/dist/account.js +247 -8
- package/dist/account.js.map +1 -1
- package/dist/checkout.cjs +162 -8
- package/dist/checkout.cjs.map +1 -1
- package/dist/checkout.d.cts +104 -4
- package/dist/checkout.d.ts +104 -4
- package/dist/checkout.js +158 -10
- package/dist/checkout.js.map +1 -1
- package/dist/chunk-Z4C4LKXF.js +25 -0
- package/dist/chunk-Z4C4LKXF.js.map +1 -0
- package/dist/fit-key-B9sYQVwG.d.cts +49 -0
- package/dist/fit-key-B9sYQVwG.d.ts +49 -0
- package/dist/fitment.cjs +54 -9
- package/dist/fitment.cjs.map +1 -1
- package/dist/fitment.d.cts +20 -2
- package/dist/fitment.d.ts +20 -2
- package/dist/fitment.js +54 -10
- package/dist/fitment.js.map +1 -1
- package/dist/settings-types-jxFQFFqP.d.cts +77 -0
- package/dist/settings-types-jxFQFFqP.d.ts +77 -0
- package/dist/subjects-server.cjs +248 -0
- package/dist/subjects-server.cjs.map +1 -0
- package/dist/subjects-server.d.cts +130 -0
- package/dist/subjects-server.d.ts +130 -0
- package/dist/subjects-server.js +217 -0
- package/dist/subjects-server.js.map +1 -0
- package/dist/subjects.cjs +501 -0
- package/dist/subjects.cjs.map +1 -0
- package/dist/subjects.css +166 -0
- package/dist/subjects.d.cts +178 -0
- package/dist/subjects.d.ts +178 -0
- package/dist/subjects.js +465 -0
- package/dist/subjects.js.map +1 -0
- package/package.json +23 -2
- package/dist/types-D7pVK0GK.d.cts +0 -39
- package/dist/types-D7pVK0GK.d.ts +0 -39
package/dist/checkout.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/checkout/fields.tsx","../src/checkout/address-fields.tsx","../src/context.tsx","../src/locale.ts","../src/components.tsx","../src/ui/product-preview.tsx","../src/checkout/order-summary.tsx","../src/checkout/brands/logos.generated.ts","../src/checkout/brands.ts","../src/checkout/brand-mark.tsx","../src/checkout/recommend.ts","../src/checkout/delivery.ts","../src/checkout/delivery-options.tsx"],"names":["useRef","useState","useEffect","jsxs","jsx","ES","EN","Fragment","useId","fill","el","createContext","useContext","formatMoney","costOf","daysOf","norm","useSyncExternalStore","useMemo"],"mappings":"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","file":"checkout.cjs","sourcesContent":["/**\n * Form fields of a checkout with inline validation: a labelled field that shows its own error under it, a focusable\n * error summary for the submit, and one hook that reads the browser's own constraint validation (`required`, `type`,\n * `pattern`, `minLength`...) so the rules stay in the HTML and the page keeps working without JavaScript (then the\n * browser explains the errors itself).\n *\n * WCAG 2.2: errors are identified in text next to the field (3.3.1), linked with `aria-describedby` and `aria-invalid`,\n * and the summary takes focus and links to every field (3.3.1 / 2.4.3). Validation runs when the buyer leaves a field\n * that has a value, and clears as soon as it is fixed: it never nags while typing.\n */\nimport { useEffect, useRef, useState, type InputHTMLAttributes, type ReactNode, type RefObject, type SelectHTMLAttributes } from 'react'\n\nexport type FieldMessages = {\n valueMissing: string\n /** Required radio group (delivery, payment). */\n choiceMissing: string\n email: string\n tel: string\n pattern: string\n /** `{n}` = minimum length. */\n tooShort: string\n /** A field the server rejected. */\n server: string\n /** Error summary title, `{n}` = number of fields. */\n summaryOne: string\n summaryMany: string\n optional: string\n}\n\nconst ES: FieldMessages = {\n valueMissing: 'Completa este campo.',\n choiceMissing: 'Elige una opción.',\n email: 'Escribe un correo válido, por ejemplo nombre@correo.com.',\n tel: 'Escribe un teléfono válido.',\n pattern: 'Revisa el formato.',\n tooShort: 'Escribe al menos {n} caracteres.',\n server: 'Revisa este campo.',\n summaryOne: 'Revisa 1 campo para continuar',\n summaryMany: 'Revisa {n} campos para continuar',\n optional: '(opcional)',\n}\n\nconst EN: FieldMessages = {\n valueMissing: 'Fill in this field.',\n choiceMissing: 'Choose an option.',\n email: 'Enter a valid email, like name@example.com.',\n tel: 'Enter a valid phone number.',\n pattern: 'Check the format.',\n tooShort: 'Enter at least {n} characters.',\n server: 'Check this field.',\n summaryOne: 'Check 1 field to continue',\n summaryMany: 'Check {n} fields to continue',\n optional: '(optional)',\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides. */\nexport function fieldMessages(locale?: string | null, overrides?: Partial<FieldMessages> | null): FieldMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\n/** Field name -> error text. */\nexport type FieldErrors = Record<string, string>\n\nexport type ErrorSummaryItem = { name: string; id: string; label: string; message: string }\n\ntype Control = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n\nconst isControl = (el: EventTarget | null): el is Control =>\n !!el && typeof (el as Element).tagName === 'string' && ['INPUT', 'SELECT', 'TEXTAREA'].includes((el as Element).tagName) && !!(el as Control).name\n\n/**\n * The error text for a control, from its validity. A control can bring its own text with `data-sf-error` (any\n * failure) or `title` (pattern mismatch, the HTML convention).\n */\nexport function validationMessage(el: Control, m: FieldMessages = ES): string | null {\n const v = el.validity\n if (!v || v.valid) return null\n const own = el.getAttribute('data-sf-error')\n if (own) return own\n if (v.valueMissing) return el instanceof HTMLInputElement && (el.type === 'radio' || el.type === 'checkbox') ? m.choiceMissing : m.valueMissing\n if (v.typeMismatch && el instanceof HTMLInputElement) return el.type === 'email' ? m.email : el.type === 'tel' ? m.tel : m.pattern\n if (v.patternMismatch) return el.getAttribute('title') || (el instanceof HTMLInputElement && el.type === 'tel' ? m.tel : m.pattern)\n if (v.tooShort && el instanceof HTMLInputElement) return m.tooShort.replace('{n}', String(el.minLength))\n return el.validationMessage || m.pattern\n}\n\n/** Visible name of a control: its `<label>`, `aria-label`, or the legend of its group (radios). */\nfunction labelOf(el: Control): string {\n if (el instanceof HTMLInputElement && el.type === 'radio') {\n const legend = el.closest('fieldset')?.querySelector('legend')\n if (legend?.textContent) return legend.textContent.trim()\n }\n const text = el.labels?.[0]?.getAttribute('data-sf-label') ?? el.labels?.[0]?.textContent ?? el.getAttribute('aria-label') ?? el.name\n return text.trim()\n}\n\nexport type UseFieldErrorsOptions = {\n locale?: string\n messages?: Partial<FieldMessages>\n /** Fields the server rejected (e.g. from the action), shown with `serverMessages[name]` or the generic text. */\n serverFields?: Iterable<string> | null\n serverMessages?: Record<string, string> | null\n}\n\nexport type FieldErrorsState = {\n errors: FieldErrors\n /** Non-null after a submit with problems (or with server errors): render it in `<ErrorSummary>`. */\n summary: ErrorSummaryItem[] | null\n /** Changes every time a new summary appears, so `<ErrorSummary>` focuses it again. */\n summaryKey: number\n clear: () => void\n}\n\n/**\n * Inline validation for the page `<form>`. Listens to the form (no wrapping component): leaving a field with a value\n * checks it; typing in a field with an error clears it when fixed; a submit or `reportValidity()` with problems\n * collects them (the browser's bubbles are replaced by the inline texts) for the summary.\n */\nexport function useFieldErrors(formRef: RefObject<HTMLFormElement | null>, options: UseFieldErrorsOptions = {}): FieldErrorsState {\n const m = fieldMessages(options.locale, options.messages)\n const live = useRef(m)\n live.current = m\n const server = [...(options.serverFields ?? [])]\n const serverKey = server.join('|')\n const [errors, setErrors] = useState<FieldErrors>(() => Object.fromEntries(server.map((n) => [n, options.serverMessages?.[n] ?? m.server])))\n const [summary, setSummary] = useState<ErrorSummaryItem[] | null>(null)\n const [summaryKey, setSummaryKey] = useState(0)\n\n // Server errors (a new action result): inline texts plus a summary.\n useEffect(() => {\n if (!server.length) return\n const form = formRef.current\n const items: ErrorSummaryItem[] = []\n const next: FieldErrors = {}\n for (const name of server) {\n const msg = options.serverMessages?.[name] ?? live.current.server\n next[name] = msg\n const el = form?.elements.namedItem(name)\n const ctl = el && 'length' in el && !(el instanceof HTMLSelectElement) ? ((el as RadioNodeList)[0] as Control | undefined) : (el as Control | null)\n if (ctl) items.push({ name, id: ctl.id || name, label: labelOf(ctl), message: msg })\n }\n setErrors((e) => ({ ...e, ...next }))\n if (items.length) {\n setSummary(items)\n setSummaryKey((k) => k + 1)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [serverKey])\n\n useEffect(() => {\n const form = formRef.current\n if (!form) return\n let batch: Control[] | null = null\n const set = (name: string, msg: string | null) =>\n setErrors((e) => {\n if (msg === null) {\n if (!(name in e)) return e\n const { [name]: _gone, ...rest } = e\n return rest\n }\n return e[name] === msg ? e : { ...e, [name]: msg }\n })\n const onBlur = (ev: FocusEvent) => {\n const el = ev.target\n if (!isControl(el) || (el instanceof HTMLInputElement && (el.type === 'radio' || el.type === 'checkbox' || el.type === 'hidden'))) return\n // Leaving an empty field you only tabbed through is not an error yet; it is at submit.\n if (!el.value) return\n set(el.name, validationMessage(el, live.current))\n }\n const onInput = (ev: Event) => {\n const el = ev.target\n if (!isControl(el)) return\n setErrors((e) => {\n if (!(el.name in e)) return e\n const msg = el.validity.valid ? null : validationMessage(el, live.current)\n if (msg !== null) return e // keep the text until the field is fixed (no flicker while typing)\n const { [el.name]: _gone, ...rest } = e\n return rest\n })\n }\n const onInvalid = (ev: Event) => {\n const el = ev.target\n if (!isControl(el)) return\n ev.preventDefault() // the inline text replaces the browser bubble\n if (!batch) {\n batch = []\n queueMicrotask(() => {\n const list = batch ?? []\n batch = null\n const seen = new Set<string>()\n const items: ErrorSummaryItem[] = []\n const next: FieldErrors = {}\n for (const c of list) {\n if (seen.has(c.name)) continue\n seen.add(c.name)\n const msg = validationMessage(c, live.current) ?? live.current.valueMissing\n next[c.name] = msg\n items.push({ name: c.name, id: c.id || c.name, label: labelOf(c), message: msg })\n }\n setErrors((e) => ({ ...e, ...next }))\n setSummary(items)\n setSummaryKey((k) => k + 1)\n })\n }\n batch.push(el)\n }\n form.addEventListener('focusout', onBlur)\n form.addEventListener('input', onInput)\n form.addEventListener('change', onInput)\n form.addEventListener('invalid', onInvalid, true)\n return () => {\n form.removeEventListener('focusout', onBlur)\n form.removeEventListener('input', onInput)\n form.removeEventListener('change', onInput)\n form.removeEventListener('invalid', onInvalid, true)\n }\n }, [formRef])\n\n // The summary follows the fixes: a field fixed after the submit leaves the list.\n const shown = summary ? summary.filter((s) => s.name in errors).map((s) => ({ ...s, message: errors[s.name]! })) : null\n return {\n errors,\n summary: shown && shown.length ? shown : null,\n summaryKey,\n clear: () => {\n setErrors({})\n setSummary(null)\n },\n }\n}\n\nexport type ErrorSummaryProps = {\n items: readonly ErrorSummaryItem[] | null\n /** Changes when a new summary must take focus (`useFieldErrors().summaryKey`). */\n focusKey?: number\n locale?: string\n messages?: Partial<FieldMessages>\n title?: ReactNode\n className?: string\n classNames?: Partial<Record<'title' | 'list' | 'link', string>>\n}\n\n/**\n * The list of problems after a submit, above the form: `role=\"alert\"`, takes focus, one link per field (moves the\n * focus to it). Renders nothing without items.\n */\nexport function ErrorSummary({ items, focusKey, locale, messages, title, className, classNames: cx = {} }: ErrorSummaryProps) {\n const ref = useRef<HTMLDivElement>(null)\n const m = fieldMessages(locale, messages)\n const has = !!items && items.length > 0\n useEffect(() => {\n if (has) ref.current?.focus()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focusKey])\n if (!has) return null\n const n = items!.length\n return (\n <div ref={ref} role=\"alert\" tabIndex={-1} className={className} data-sf-error-summary aria-labelledby=\"sf-error-summary-title\">\n <p id=\"sf-error-summary-title\" className={cx.title} data-sf-error-summary-title>\n {title ?? (n === 1 ? m.summaryOne : m.summaryMany.replace('{n}', String(n)))}\n </p>\n <ul className={cx.list}>\n {items!.map((it) => (\n <li key={it.name}>\n <a\n href={`#${it.id}`}\n className={cx.link}\n onClick={(e) => {\n const el = document.getElementById(it.id)\n if (!el) return\n e.preventDefault()\n el.focus()\n el.scrollIntoView?.({ block: 'center' })\n }}\n >\n {it.label}: {it.message}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n\nexport type CheckoutFieldClassNames = Partial<Record<'root' | 'label' | 'optional' | 'input' | 'hint' | 'error', string>>\n\ntype BaseFieldProps = {\n name: string\n label: string\n /** Field id. Default: the name. */\n id?: string\n /** Error text (from `useFieldErrors().errors[name]` or the server). */\n error?: string | null\n /** Help under the label (\"we only use it for the delivery\"). */\n hint?: ReactNode\n /** Marks the label \"(optional)\" and drops `required`. */\n optional?: boolean\n classNames?: CheckoutFieldClassNames\n locale?: string\n messages?: Partial<FieldMessages>\n}\n\nexport type CheckoutFieldProps = BaseFieldProps & Omit<InputHTMLAttributes<HTMLInputElement>, 'name' | 'id'> & { as?: 'input' }\nexport type CheckoutSelectProps = BaseFieldProps & Omit<SelectHTMLAttributes<HTMLSelectElement>, 'name' | 'id'> & { as: 'select'; children: ReactNode }\n\n/**\n * One labelled field: label (with \"(optional)\"), hint, the control and its error text, wired with `aria-describedby`\n * and `aria-invalid`. Required unless `optional`. `as=\"select\"` renders a `<select>` with the given options.\n */\nexport function CheckoutField(props: CheckoutFieldProps | CheckoutSelectProps) {\n const { name, label, id = name, error, hint, optional = false, classNames: cx = {}, locale, messages, ...rest } = props\n const m = fieldMessages(locale, messages)\n const hintId = hint ? `${id}-hint` : undefined\n const errorId = `${id}-error`\n const describedBy = [hintId, error ? errorId : undefined].filter(Boolean).join(' ') || undefined\n const common = {\n id,\n name,\n required: !optional,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': describedBy,\n className: cx.input,\n 'data-sf-field-control': '',\n } as const\n return (\n <div className={cx.root} data-sf-field data-invalid={error ? '' : undefined}>\n <label htmlFor={id} className={cx.label} data-sf-label={label}>\n {label}\n {optional ? (\n <span className={cx.optional} data-sf-field-optional>\n {' '}\n {m.optional}\n </span>\n ) : null}\n </label>\n {hint ? (\n <p id={hintId} className={cx.hint} data-sf-field-hint>\n {hint}\n </p>\n ) : null}\n {rest.as === 'select' ? (\n (() => {\n const { as: _as, children, ...select } = rest\n return (\n <select {...select} {...common}>\n {children}\n </select>\n )\n })()\n ) : (\n (() => {\n const { as: _as, ...input } = rest as CheckoutFieldProps\n return <input {...input} {...common} />\n })()\n )}\n {/* Reserved only when there is an error: the text sits right under its field. */}\n {error ? (\n <p id={errorId} className={cx.error} data-sf-field-error>\n {error}\n </p>\n ) : null}\n </div>\n )\n}\n","/**\n * Contact and shipping address fields of a checkout, in the order and with the autofill tokens buyers expect:\n * contact (e-mail, phone, given and family name) and address (postal code first, so it can fill state and city, then\n * state, city, colonia, street, interior and delivery references). One column on phones; the shop lays out the grid\n * with `classNames`.\n *\n * Nothing here knows a country: the postal-code format, the list of states and the postal-code lookup come from the\n * shop (region config, a same-origin route). Without them the fields are plain text and nothing is invented.\n */\nimport { useEffect, useId, useRef, useState, type ReactNode } from 'react'\nimport type { Address } from '@asteby/storefront'\nimport { CheckoutField, type CheckoutFieldClassNames, type FieldErrors, type FieldMessages } from './fields.js'\n\nexport type AddressFieldKey = 'zip' | 'province' | 'city' | 'neighborhood' | 'address1' | 'address2' | 'reference'\nexport type ContactFieldKey = 'email' | 'phone' | 'first_name' | 'last_name'\n\nexport type AddressFieldsMessages = Record<AddressFieldKey | ContactFieldKey, string> & {\n provincePlaceholder: string\n neighborhoodPlaceholder: string\n address1Hint: string\n referenceHint: string\n emailHint: string\n phoneHint: string\n lookupFilled: string\n /** Tooltip and note of a state the postal code defined (locked). */\n provinceLocked: string\n /** Discreet action that releases the locked state so the buyer can fix the postal code. */\n changePostalCode: string\n}\n\nconst ES: AddressFieldsMessages = {\n email: 'Correo',\n phone: 'Teléfono',\n first_name: 'Nombre',\n last_name: 'Apellidos',\n zip: 'Código postal',\n province: 'Estado',\n city: 'Ciudad o municipio',\n neighborhood: 'Colonia',\n address1: 'Calle y número',\n address2: 'Número interior o departamento',\n reference: 'Referencias para la entrega',\n provincePlaceholder: 'Elige tu estado',\n neighborhoodPlaceholder: 'Elige tu colonia',\n address1Hint: 'Por ejemplo: Av. Insurgentes Sur 1234',\n referenceHint: 'Entre qué calles, color de la fachada…',\n emailHint: 'Te enviamos aquí la confirmación y el seguimiento.',\n phoneHint: 'Solo para la paquetería, por si necesita contactarte.',\n lookupFilled: 'Completamos estado y ciudad con tu código postal.',\n provinceLocked: 'Definido por tu código postal',\n changePostalCode: 'Cambiar código postal',\n}\n\nconst EN: AddressFieldsMessages = {\n email: 'Email',\n phone: 'Phone',\n first_name: 'First name',\n last_name: 'Last name',\n zip: 'Postal code',\n province: 'State',\n city: 'City',\n neighborhood: 'Neighborhood',\n address1: 'Street and number',\n address2: 'Apartment, suite',\n reference: 'Delivery notes',\n provincePlaceholder: 'Choose your state',\n neighborhoodPlaceholder: 'Choose your neighborhood',\n address1Hint: 'For example: 1234 Main St',\n referenceHint: 'Cross streets, building color…',\n emailHint: 'We send the confirmation and tracking here.',\n phoneHint: 'Only for the carrier, in case they need to reach you.',\n lookupFilled: 'We filled in state and city from your postal code.',\n provinceLocked: 'Set by your postal code',\n changePostalCode: 'Change postal code',\n}\n\nexport function addressFieldsMessages(locale?: string | null, overrides?: Partial<AddressFieldsMessages> | null): AddressFieldsMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\nexport type FieldLayoutClassNames = CheckoutFieldClassNames & {\n /** Extra class of a field that should span the whole row in a two-column grid. */\n wide?: string\n /** Extra class of a field that fits half a row. */\n half?: string\n}\n\ntype Common = {\n /** Inline errors by field name (`useFieldErrors().errors`). */\n errors?: FieldErrors\n locale?: string\n messages?: Partial<AddressFieldsMessages>\n fieldMessages?: Partial<FieldMessages>\n classNames?: FieldLayoutClassNames\n}\n\nconst join = (...c: Array<string | undefined>) => c.filter(Boolean).join(' ') || undefined\nconst field = (cx: FieldLayoutClassNames, span: 'wide' | 'half'): CheckoutFieldClassNames => ({ ...cx, root: join(cx.root, cx[span]) })\n\nexport type ContactFieldsProps = Common & {\n defaults?: Partial<Record<ContactFieldKey, string | null>>\n /** Form names. Default: the keys. */\n names?: Partial<Record<ContactFieldKey, string>>\n /** Phone format from the shop or region (e.g. `{ pattern: '[0-9 +()-]{10,}', title: '10 dígitos' }`). */\n phone?: { pattern?: string; title?: string; minLength?: number }\n /** Explain why e-mail and phone are needed (default true). */\n hints?: boolean\n}\n\n/** E-mail, phone, given and family name with their autofill tokens and the right mobile keyboards. */\nexport function ContactFields({ defaults = {}, names = {}, errors = {}, phone, hints = true, locale, messages, fieldMessages: fm, classNames: cx = {} }: ContactFieldsProps) {\n const m = addressFieldsMessages(locale, messages)\n const n = (k: ContactFieldKey) => names[k] ?? k\n const common = { ...(locale ? { locale } : {}), ...(fm ? { messages: fm } : {}) }\n return (\n <>\n <CheckoutField {...common} name={n('email')} label={m.email} type=\"email\" autoComplete=\"email\" inputMode=\"email\" autoCapitalize=\"none\" spellCheck={false} defaultValue={defaults.email ?? ''} error={errors[n('email')] ?? null} hint={hints ? m.emailHint : undefined} classNames={field(cx, 'wide')} />\n <CheckoutField {...common} name={n('phone')} label={m.phone} type=\"tel\" autoComplete=\"tel\" inputMode=\"tel\" defaultValue={defaults.phone ?? ''} error={errors[n('phone')] ?? null} hint={hints ? m.phoneHint : undefined} classNames={field(cx, 'wide')} {...(phone?.pattern ? { pattern: phone.pattern } : {})} {...(phone?.title ? { title: phone.title } : {})} {...(phone?.minLength ? { minLength: phone.minLength } : {})} />\n <CheckoutField {...common} name={n('first_name')} label={m.first_name} autoComplete=\"given-name\" defaultValue={defaults.first_name ?? ''} error={errors[n('first_name')] ?? null} classNames={field(cx, 'half')} />\n <CheckoutField {...common} name={n('last_name')} label={m.last_name} autoComplete=\"family-name\" defaultValue={defaults.last_name ?? ''} error={errors[n('last_name')] ?? null} classNames={field(cx, 'half')} />\n </>\n )\n}\n\n/** What a postal-code lookup answers. Every field optional: only what the source knows. */\nexport type PostalCodeInfo = { province?: string | null; city?: string | null; neighborhoods?: readonly string[] | null }\n\nexport type AddressFieldsProps = Common & {\n defaults?: Partial<Pick<Address, 'zip' | 'province' | 'city' | 'neighborhood' | 'address1' | 'address2' | 'reference'>> | null\n /** Form names. Default: the keys (the `AddressInput` fields of the Storefront API). */\n names?: Partial<Record<AddressFieldKey, string>>\n /** ISO country of the address (hidden field `country_code`). */\n countryCode: string\n /** States of the country (from the region config). With them, \"State\" is a `<select>`; the value sent is `name`. */\n provinces?: ReadonlyArray<{ code?: string | null; name: string }> | null\n /** Postal-code format of the country (from the region config), e.g. `{ pattern: '[0-9]{5}', maxLength: 5, inputMode: 'numeric', title: '5 dígitos' }`. */\n postalCode?: { pattern?: string; maxLength?: number; inputMode?: 'numeric' | 'text'; title?: string }\n /**\n * Fills state and city (and suggests colonias) from the postal code, when the shop has a source (a same-origin\n * route over a postal-code catalog). Called once the code matches `postalCode.pattern` (or on leaving the field).\n * Never overwrites what the buyer typed.\n */\n lookupPostalCode?: (zip: string) => Promise<PostalCodeInfo | null>\n /**\n * How to offer the colonias when the postal code has SEVERAL: `'datalist'` (default, suggestions on a text field) or\n * `'select'` (a real list; the field becomes a `<select>` of those colonias, unless the buyer already typed one that\n * is not in the list, which is kept as text). With exactly one colonia it is filled in either mode.\n */\n neighborhoodList?: 'datalist' | 'select'\n /** Show the colonia field: `true` (default, optional), `'required'`, or `false`. */\n neighborhood?: boolean | 'required'\n /** Show the delivery references field (default true, optional). */\n reference?: boolean\n /**\n * Once `lookupPostalCode` fills the state field (never over what the buyer already typed), lock it: a plain\n * `<input>` turns read-only; a `<select>` (from `provinces`) turns disabled with a hidden field that keeps\n * submitting its value. The state is the postal code's: the field shows a lock, the tooltip `provinceLocked` and a\n * discreet `changePostalCode` action; editing the postal code releases the lock and clears what the lookup filled\n * (also when the new code resolves nothing), so a stale state is never left behind. Default TRUE (the server\n * validates the pair again; set `false` to keep the filled state as editable as any field). Marked with\n * `data-sf-locked=\"1\"` for the shop's own styling.\n */\n lockProvinceOnFill?: boolean\n /** Rendered after the fields (e.g. \"save this address\"). */\n children?: ReactNode\n}\n\n/**\n * Shipping address in the order buyers fill it: postal code, state, city, colonia, street and number, interior and\n * references. Autofill tokens: `postal-code`, `address-level1/2/3`, `address-line1/2`. The postal code uses the\n * numeric keyboard when the country format is numeric.\n */\n/** Locks a field the lookup just filled: read-only for an `<input>`, disabled + a hidden mirror for a `<select>`. */\nfunction lockField(el: HTMLInputElement | HTMLSelectElement) {\n if (el.dataset.sfLocked === '1') return\n el.dataset.sfLocked = '1'\n el.setAttribute('aria-readonly', 'true')\n if (el instanceof HTMLSelectElement) {\n // A disabled `<select>` would stop submitting its value: a hidden sibling keeps it in the form.\n const name = el.getAttribute('name')\n if (name) {\n el.dataset.sfName = name\n const hidden = document.createElement('input')\n hidden.type = 'hidden'\n hidden.dataset.sfLockMirror = '1'\n hidden.name = name\n hidden.value = el.value\n el.insertAdjacentElement('afterend', hidden)\n el.removeAttribute('name')\n }\n el.disabled = true\n } else {\n el.readOnly = true\n }\n}\n\n/** Undoes `lockField`: the field is editable again and, when the lookup filled it, empty (its value belonged to the old postal code). */\nfunction unlockField(el: HTMLInputElement | HTMLSelectElement) {\n if (el.dataset.sfLocked !== '1') return\n delete el.dataset.sfLocked\n el.removeAttribute('aria-readonly')\n el.removeAttribute('title')\n if (el instanceof HTMLSelectElement) {\n const mirror = el.nextElementSibling\n if (mirror instanceof HTMLInputElement && mirror.dataset.sfLockMirror === '1') mirror.remove()\n if (el.dataset.sfName) el.setAttribute('name', el.dataset.sfName)\n delete el.dataset.sfName\n el.disabled = false\n } else {\n el.readOnly = false\n }\n}\n\n/** Name of the property set to `true` on every event the lookup dispatches when it fills a field. */\nexport const ADDRESS_FILL_EVENT_FLAG = 'sfSynthetic'\n\n/**\n * Was this `input` event dispatched by `AddressFields` itself (a postal-code fill) and not typed by the buyer? The shop's\n * own listeners (validation, autosave, delivery re-quote...) can ignore these. Real typing has `isTrusted: true`.\n */\nexport function isAddressFillEvent(event: Event): boolean {\n return (event as unknown as Record<string, unknown>)[ADDRESS_FILL_EVENT_FLAG] === true\n}\n\nexport function AddressFields(props: AddressFieldsProps) {\n const { defaults, names = {}, errors = {}, countryCode, provinces, postalCode, lookupPostalCode, lockProvinceOnFill = true, locale, messages, fieldMessages: fm, classNames: cx = {}, children } = props\n const showNeighborhood = props.neighborhood ?? true\n const showReference = props.reference ?? true\n const m = addressFieldsMessages(locale, messages)\n const n = (k: AddressFieldKey) => names[k] ?? k\n const common = { ...(locale ? { locale } : {}), ...(fm ? { messages: fm } : {}) }\n const listId = useId()\n const [colonias, setColonias] = useState<readonly string[]>([])\n const [filled, setFilled] = useState(false)\n const [provinceLocked, setProvinceLocked] = useState(false)\n const [coloniaSelect, setColoniaSelect] = useState(false)\n const coloniaSelectRef = useRef(false)\n // Switching the colonia between text and list remounts the field: what it should hold is carried to the new element.\n const coloniaCarry = useRef<{ value: string; autofilled: boolean; userEdited: boolean } | null>(null)\n const lastZip = useRef<string | null>(null)\n const zipRef = useRef<HTMLDivElement>(null)\n const lookupRef = useRef(lookupPostalCode)\n lookupRef.current = lookupPostalCode\n // ONE writer: lookup results are applied one after another, never interleaved (two lookups answering close together\n // would otherwise write the same fields and fire their events at the same time).\n const writer = useRef<Promise<void>>(Promise.resolve())\n const enqueue = (task: () => void) => {\n writer.current = writer.current.then(task).catch(() => {})\n }\n\n // A field the buyer edited is theirs: only REAL input (`isTrusted`) marks it, not the events this component dispatches.\n useEffect(() => {\n const form = zipRef.current?.closest('form')\n if (!form) return\n const mark = (e: Event) => {\n if (!e.isTrusted) return\n const el = e.target as HTMLElement | null\n if (el instanceof HTMLInputElement || el instanceof HTMLSelectElement) {\n el.dataset.sfUserEdited = '1'\n delete el.dataset.sfAutofilled\n }\n }\n form.addEventListener('input', mark, true)\n form.addEventListener('change', mark, true)\n return () => {\n form.removeEventListener('input', mark, true)\n form.removeEventListener('change', mark, true)\n }\n }, [])\n\n // The state was the old postal code's: free it and drop what the lookup filled (state, city, colonia) so nothing stale stays.\n const releaseLookup = () => {\n const form = zipRef.current?.closest('form')\n if (!form) return\n const locked = form.querySelector<HTMLInputElement | HTMLSelectElement>('[data-sf-locked=\"1\"]')\n const touched: Array<HTMLInputElement | HTMLSelectElement> = []\n if (locked) {\n unlockField(locked)\n touched.push(locked)\n }\n for (const key of ['province', 'city', 'neighborhood'] as const) {\n const el = form.elements.namedItem(n(key)) as HTMLInputElement | HTMLSelectElement | null\n if (el && !('length' in el && !(el instanceof HTMLSelectElement)) && !touched.includes(el)) touched.push(el)\n }\n for (const el of touched) {\n if (el.dataset.sfAutofilled !== '1') continue\n el.value = ''\n delete el.dataset.sfAutofilled\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, ADDRESS_FILL_EVENT_FLAG, { value: true })\n el.dispatchEvent(event)\n }\n lastZip.current = null\n setProvinceLocked(false)\n setFilled(false)\n }\n\n const runLookup = (zip: string) => {\n const lookup = lookupRef.current\n if (!lookup || !zip || zip === lastZip.current) return\n if (postalCode?.pattern && !new RegExp(`^(?:${postalCode.pattern})$`).test(zip)) return\n lastZip.current = zip\n const form = zipRef.current?.closest('form')\n void lookup(zip).then(\n (info) => {\n if (!info) return\n enqueue(() => {\n if (lastZip.current !== zip) return\n const fill = (name: string, value: string | null | undefined, lock?: boolean) => {\n const el = form?.elements.namedItem(name) as HTMLInputElement | HTMLSelectElement | null\n if (!el || !value || ('length' in el && !(el instanceof HTMLSelectElement))) return false\n // Already locked from a previous lookup: leave it (the buyer corrects the postal code instead).\n if (el.dataset.sfLocked === '1') return false\n // Never over what they edited, nor over text in the field they are typing in. A focused field that is still\n // empty (Tab from the postal code lands on the next one) is filled: nothing of theirs is overwritten.\n if (el.dataset.sfUserEdited === '1' || (el.ownerDocument.activeElement === el && el.value)) return false\n // Only an empty field, or one this lookup filled before: never what the buyer typed.\n if (el.value && el.dataset.sfAutofilled !== '1') return false\n if (el instanceof HTMLSelectElement && ![...el.options].some((o) => o.value === value)) return false\n el.value = value\n el.dataset.sfAutofilled = '1'\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, ADDRESS_FILL_EVENT_FLAG, { value: true })\n el.dispatchEvent(event)\n if (lock) {\n lockField(el)\n el.title = m.provinceLocked\n setProvinceLocked(true)\n }\n return true\n }\n const a = fill(n('province'), info.province, lockProvinceOnFill)\n const b = fill(n('city'), info.city)\n // Colonia only when the code has exactly ONE: with several the buyer chooses (the list is offered, not applied).\n const only = info.neighborhoods?.length === 1 ? info.neighborhoods[0] : null\n const c = showNeighborhood ? fill(n('neighborhood'), only) : false\n setColonias(info.neighborhoods ?? [])\n const list = info.neighborhoods ?? []\n const nameEl = form?.elements.namedItem(n('neighborhood')) as HTMLInputElement | HTMLSelectElement | null\n const el = nameEl && !('length' in nameEl && !(nameEl instanceof HTMLSelectElement)) ? nameEl : null\n const typed = el ? el.value : ''\n const wantSelect = props.neighborhoodList === 'select' && showNeighborhood !== false && list.length > 1 && (!typed || list.includes(typed))\n let carried = false\n if (showNeighborhood && wantSelect !== coloniaSelectRef.current) {\n const userEdited = el?.dataset.sfUserEdited === '1'\n // The single colonia of the new code wins over a previous autofill, never over what the buyer chose.\n const value = only && !userEdited ? only : wantSelect ? (list.includes(typed) ? typed : '') : typed\n coloniaCarry.current = { value, autofilled: !userEdited && (!!only || el?.dataset.sfAutofilled === '1'), userEdited }\n carried = !!only && !userEdited\n }\n coloniaSelectRef.current = wantSelect\n setColoniaSelect(wantSelect)\n setFilled(a || b || c || carried)\n })\n },\n () => {\n /* no lookup: the buyer types state and city */\n },\n )\n }\n\n // Applies the carried colonia to the field that replaced the old one (text <-> list), like any fill.\n useEffect(() => {\n const carry = coloniaCarry.current\n coloniaCarry.current = null\n if (!carry || !carry.value) return\n const form = zipRef.current?.closest('form')\n const el = form?.elements.namedItem(n('neighborhood')) as HTMLInputElement | HTMLSelectElement | null\n if (!el || ('length' in el && !(el instanceof HTMLSelectElement))) return\n if (el instanceof HTMLSelectElement && ![...el.options].some((o) => o.value === carry.value)) return\n el.value = carry.value\n if (carry.userEdited) el.dataset.sfUserEdited = '1'\n else if (carry.autofilled) el.dataset.sfAutofilled = '1'\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, ADDRESS_FILL_EVENT_FLAG, { value: true })\n el.dispatchEvent(event)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [coloniaSelect])\n\n useEffect(() => {\n const zip = defaults?.zip\n if (zip) runLookup(zip)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasLock = (root: HTMLElement | null) => !!root?.closest('form')?.querySelector('[data-sf-locked=\"1\"]')\n const changeZip = () => {\n releaseLookup()\n const zipEl = zipRef.current?.querySelector('input')\n zipEl?.focus()\n zipEl?.select()\n }\n const provinceHint = provinceLocked ? (\n <span data-sf-province-locked=\"\" title={m.provinceLocked}>\n <svg aria-hidden=\"true\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" style={{ display: 'inline-block', verticalAlign: '-1px', marginRight: 4 }}>\n <rect x=\"4\" y=\"11\" width=\"16\" height=\"10\" rx=\"2\" />\n <path d=\"M8 11V7a4 4 0 0 1 8 0v4\" />\n </svg>\n {m.provinceLocked}\n {' · '}\n <button type=\"button\" data-sf-change-zip=\"\" onClick={changeZip} style={{ background: 'none', border: 0, padding: 0, font: 'inherit', color: 'inherit', textDecoration: 'underline', cursor: 'pointer' }}>\n {m.changePostalCode}\n </button>\n </span>\n ) : undefined\n const numericZip = postalCode?.inputMode === 'numeric'\n return (\n <>\n <div ref={zipRef} className={join(cx.half)} data-sf-zip>\n <CheckoutField\n {...common}\n name={n('zip')}\n label={m.zip}\n autoComplete=\"postal-code\"\n inputMode={postalCode?.inputMode ?? 'text'}\n {...(postalCode?.pattern ? { pattern: postalCode.pattern } : {})}\n {...(postalCode?.maxLength ? { maxLength: postalCode.maxLength } : {})}\n {...(postalCode?.title ? { title: postalCode.title } : {})}\n {...(numericZip ? { autoCapitalize: 'none' } : {})}\n defaultValue={defaults?.zip ?? ''}\n error={errors[n('zip')] ?? null}\n classNames={{ ...cx, root: cx.root }}\n onInput={(e) => {\n const v = e.currentTarget.value.trim()\n // Editing the code that defined the state frees it (and what the lookup filled) before anything else.\n if (v !== lastZip.current && hasLock(zipRef.current)) releaseLookup()\n if (postalCode?.maxLength && v.length === postalCode.maxLength) runLookup(v)\n }}\n onBlur={(e) => runLookup(e.currentTarget.value.trim())}\n />\n </div>\n {provinces && provinces.length ? (\n <CheckoutField {...common} as=\"select\" name={n('province')} label={m.province} autoComplete=\"address-level1\" defaultValue={defaults?.province ?? ''} error={errors[n('province')] ?? null} classNames={field(cx, 'half')} hint={provinceHint}>\n <option value=\"\" disabled>\n {m.provincePlaceholder}\n </option>\n {provinces.map((p) => (\n <option key={p.code ?? p.name} value={p.name}>\n {p.name}\n </option>\n ))}\n </CheckoutField>\n ) : (\n <CheckoutField {...common} name={n('province')} label={m.province} autoComplete=\"address-level1\" defaultValue={defaults?.province ?? ''} error={errors[n('province')] ?? null} classNames={field(cx, 'half')} hint={provinceHint} />\n )}\n <CheckoutField {...common} name={n('city')} label={m.city} autoComplete=\"address-level2\" defaultValue={defaults?.city ?? ''} error={errors[n('city')] ?? null} classNames={field(cx, 'half')} />\n {showNeighborhood && coloniaSelect ? (\n <CheckoutField\n {...common}\n as=\"select\"\n name={n('neighborhood')}\n label={m.neighborhood}\n autoComplete=\"address-level3\"\n optional={showNeighborhood !== 'required'}\n defaultValue={colonias.includes(defaults?.neighborhood ?? '') ? (defaults?.neighborhood ?? '') : ''}\n error={errors[n('neighborhood')] ?? null}\n classNames={field(cx, 'half')}\n >\n <option value=\"\" disabled={showNeighborhood === 'required'}>\n {m.neighborhoodPlaceholder}\n </option>\n {colonias.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </CheckoutField>\n ) : showNeighborhood ? (\n <CheckoutField\n {...common}\n name={n('neighborhood')}\n label={m.neighborhood}\n autoComplete=\"address-level3\"\n optional={showNeighborhood !== 'required'}\n defaultValue={defaults?.neighborhood ?? ''}\n error={errors[n('neighborhood')] ?? null}\n classNames={field(cx, 'half')}\n {...(colonias.length && !coloniaSelect ? { list: listId } : {})}\n />\n ) : null}\n {colonias.length && !coloniaSelect ? (\n <datalist id={listId}>\n {colonias.map((c) => (\n <option key={c} value={c} />\n ))}\n </datalist>\n ) : null}\n {/* The lookup result, announced once (not on every keystroke). */}\n <p role=\"status\" aria-live=\"polite\" data-sf-zip-status style={filled ? undefined : { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)', whiteSpace: 'nowrap' }} className={filled ? join(cx.hint, cx.wide) : undefined}>\n {filled ? m.lookupFilled : ''}\n </p>\n <CheckoutField {...common} name={n('address1')} label={m.address1} autoComplete=\"address-line1\" defaultValue={defaults?.address1 ?? ''} error={errors[n('address1')] ?? null} hint={m.address1Hint} classNames={field(cx, 'wide')} />\n <CheckoutField {...common} name={n('address2')} label={m.address2} autoComplete=\"address-line2\" optional defaultValue={defaults?.address2 ?? ''} error={errors[n('address2')] ?? null} classNames={field(cx, 'half')} />\n {showReference ? (\n <CheckoutField {...common} name={n('reference')} label={m.reference} optional defaultValue={defaults?.reference ?? ''} error={errors[n('reference')] ?? null} hint={m.referenceHint} classNames={field(cx, 'wide')} maxLength={200} />\n ) : null}\n <input type=\"hidden\" name=\"country_code\" value={countryCode} />\n {children}\n </>\n )\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { createStorefrontClient, type Shop, type StorefrontClient, type StorefrontClientOptions } from '@asteby/storefront'\n\nexport type StorefrontContextValue = {\n /** Client for browser-side calls (use a public `pk_` token). */\n client: StorefrontClient | null\n shop: Shop | null\n /** BCP 47 locale used for formatting (defaults to `shop.locale`, then `es-MX`). */\n locale: string\n /** ISO 4217 currency (defaults to `shop.currency_code`, then `MXN`). */\n currency: string\n}\n\nconst StorefrontContext = createContext<StorefrontContextValue | null>(null)\n\nexport type StorefrontProviderProps = {\n /** A ready client. Takes precedence over `config`. */\n client?: StorefrontClient\n /** Options to create the browser client (use a `pk_` token). */\n config?: StorefrontClientOptions\n /** Shop info loaded on the server (root loader). */\n shop?: Shop | null\n locale?: string\n currency?: string\n children?: ReactNode\n}\n\n/**\n * Makes the storefront client, shop, locale and currency available to the\n * tree. SSR-safe: creating the client does not touch `window`.\n */\nexport function StorefrontProvider({ client, config, shop = null, locale, currency, children }: StorefrontProviderProps) {\n const configKey = config ? `${config.baseUrl}|${config.token}|${config.locale ?? ''}|${config.customerToken ?? ''}` : ''\n const resolvedClient = useMemo(\n () => client ?? (config ? createStorefrontClient(config) : null),\n [client, configKey],\n )\n const value = useMemo<StorefrontContextValue>(\n () => ({\n client: resolvedClient,\n shop,\n locale: locale ?? config?.locale ?? shop?.locale ?? 'es-MX',\n currency: currency ?? shop?.currency_code ?? 'MXN',\n }),\n [resolvedClient, shop, locale, currency, config?.locale],\n )\n return <StorefrontContext.Provider value={value}>{children}</StorefrontContext.Provider>\n}\n\n/** Storefront context. Throws outside `<StorefrontProvider>`. */\nexport function useStorefront(): StorefrontContextValue {\n const ctx = useContext(StorefrontContext)\n if (!ctx) throw new Error('useStorefront must be used inside <StorefrontProvider>')\n return ctx\n}\n\n/** Storefront context or `null` outside a provider (for components that work standalone). */\nexport function useOptionalStorefront(): StorefrontContextValue | null {\n return useContext(StorefrontContext)\n}\n\n/** The client from context; throws when the provider has none. */\nexport function useStorefrontClient(): StorefrontClient {\n const { client } = useStorefront()\n if (!client) throw new Error('<StorefrontProvider> needs a `client` or `config` for browser-side calls')\n return client\n}\n","import { useOptionalStorefront } from './context.js'\n\n/** Locale of a component: its own prop, else the `StorefrontProvider`'s, else `es-MX`. */\nexport function useResolvedLocale(locale?: string | null): string {\n const sf = useOptionalStorefront()\n return locale ?? sf?.locale ?? 'es-MX'\n}\n","import { createElement, type ComponentPropsWithoutRef, type ElementType, type ReactNode } from 'react'\nimport { formatMoney, parseMoney, type FormatMoneyOptions, type Image as ImageData, type Money as MoneyData, type Product, type ProductVariant } from '@asteby/storefront'\nimport { useOptionalStorefront } from './context.js'\n\n// ---------------------------------------------------------------------------\n// Money\n// ---------------------------------------------------------------------------\n\nexport type MoneyProps<As extends ElementType = 'span'> = FormatMoneyOptions & {\n data: MoneyData\n /** Element to render (default `span`). */\n as?: As\n /** Overrides the provider locale. */\n locale?: string\n} & Omit<ComponentPropsWithoutRef<As>, 'children' | 'as'>\n\n/** Formats `Money` with the provider locale (or `locale`). */\nexport function Money<As extends ElementType = 'span'>({\n data,\n as,\n locale,\n withoutTrailingZeros,\n withoutCurrency,\n currencyDisplay,\n ...rest\n}: MoneyProps<As>) {\n const sf = useOptionalStorefront()\n const text = formatMoney(data, locale ?? sf?.locale, {\n ...(withoutTrailingZeros !== undefined ? { withoutTrailingZeros } : {}),\n ...(withoutCurrency !== undefined ? { withoutCurrency } : {}),\n ...(currencyDisplay !== undefined ? { currencyDisplay } : {}),\n })\n return createElement(as ?? 'span', rest, text)\n}\n\n// ---------------------------------------------------------------------------\n// Image\n// ---------------------------------------------------------------------------\n\nexport const DEFAULT_IMAGE_WIDTHS = [320, 480, 640, 768, 1024, 1280, 1600] as const\n\n/** Builds the URL for one srcset width. */\nexport type ImageLoader = (src: string, width: number, height?: number) => string\n\n/**\n * Default loader: adds `?width=<w>` (the convention of most image CDNs and of\n * the OPS image proxy). URLs that cannot be parsed are returned unchanged.\n */\nexport const defaultImageLoader: ImageLoader = (src, width, height) => {\n try {\n const isAbsolute = /^[a-z][a-z0-9+.-]*:/i.test(src)\n const url = new URL(src, 'http://relative.invalid')\n url.searchParams.set('width', String(width))\n if (height) url.searchParams.set('height', String(height))\n return isAbsolute ? url.toString() : url.pathname + url.search + url.hash\n } catch {\n return src\n }\n}\n\nexport type ImageProps = Omit<ComponentPropsWithoutRef<'img'>, 'src' | 'srcSet' | 'width' | 'height'> & {\n data: ImageData\n /** `sizes` attribute (default `100vw`). */\n sizes?: string\n /** Candidate widths for `srcset` (capped at the intrinsic width when known). */\n widths?: readonly number[]\n /** URL builder per width (default adds `?width=`). Pass `null` to disable srcset. */\n loader?: ImageLoader | null\n /** Above-the-fold image: eager loading and `fetchpriority=\"high\"`. */\n priority?: boolean\n /** Forces an aspect ratio, e.g. `1/1` or `4/3`, used for width/height and srcset heights. */\n aspectRatio?: string\n}\n\nfunction parseRatio(ratio: string | undefined): number | null {\n if (!ratio) return null\n const [w, h] = ratio.split(/[/:]/).map((n) => Number.parseFloat(n))\n return w && h ? w / h : null\n}\n\n/** Responsive `<img>` with `srcset`, lazy by default, intrinsic size to avoid layout shift. */\nexport function Image({\n data,\n sizes = '100vw',\n widths = DEFAULT_IMAGE_WIDTHS,\n loader = defaultImageLoader,\n priority = false,\n aspectRatio,\n alt,\n loading,\n decoding,\n ...rest\n}: ImageProps) {\n const ratio = parseRatio(aspectRatio) ?? (data.width && data.height ? data.width / data.height : null)\n let candidates = [...widths].sort((a, b) => a - b)\n if (data.width) {\n const capped = candidates.filter((w) => w <= data.width!)\n candidates = capped.length ? capped : [data.width]\n }\n const srcSet = loader\n ? candidates.map((w) => `${loader(data.url, w, ratio ? Math.round(w / ratio) : undefined)} ${w}w`).join(', ')\n : undefined\n const width = data.width ?? candidates[candidates.length - 1]\n const height = data.height ?? (ratio && width ? Math.round(width / ratio) : undefined)\n return (\n <img\n src={data.url}\n alt={alt ?? data.alt ?? ''}\n {...(srcSet ? { srcSet, sizes } : {})}\n {...(width ? { width } : {})}\n {...(height ? { height } : {})}\n loading={loading ?? (priority ? 'eager' : 'lazy')}\n decoding={decoding ?? (priority ? 'auto' : 'async')}\n {...(priority ? { fetchPriority: 'high' as const } : {})}\n {...rest}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// ProductPrice\n// ---------------------------------------------------------------------------\n\nconst VISUALLY_HIDDEN = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n} as const\n\nexport type ProductPriceProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'> & {\n product?: Pick<Product, 'price_range' | 'compare_at_price_range'> | null\n variant?: Pick<ProductVariant, 'price' | 'compare_at_price'> | null\n /** Prefix shown when the product has a price range and no variant is selected (default `Desde`). */\n fromLabel?: ReactNode\n /** Accessible label for the compare-at price (default `Precio anterior`). */\n compareAtLabel?: string\n locale?: string\n withoutTrailingZeros?: boolean\n}\n\n/**\n * Price with optional compare-at (strikethrough). With a `variant` it shows\n * that variant; otherwise the product's minimum price (prefixed with\n * `fromLabel` when prices vary).\n */\nexport function ProductPrice({\n product,\n variant,\n fromLabel = 'Desde',\n compareAtLabel = 'Precio anterior',\n locale,\n withoutTrailingZeros,\n ...rest\n}: ProductPriceProps) {\n let price: MoneyData | null = null\n let compareAt: MoneyData | null = null\n let isRange = false\n if (variant) {\n price = variant.price\n compareAt = variant.compare_at_price\n } else if (product) {\n price = product.price_range.min\n compareAt = product.compare_at_price_range?.min ?? null\n isRange = product.price_range.min.amount !== product.price_range.max.amount\n }\n if (!price) return null\n const onSale = compareAt !== null && parseMoney(compareAt) > parseMoney(price)\n const opts = { ...(locale ? { locale } : {}), ...(withoutTrailingZeros !== undefined ? { withoutTrailingZeros } : {}) }\n return (\n <div data-on-sale={onSale || undefined} {...rest}>\n {isRange ? <span data-price-prefix=\"\">{fromLabel} </span> : null}\n <Money data={price} data-price=\"\" {...opts} />\n {onSale && compareAt ? (\n <>\n {' '}\n <s data-compare-at-price=\"\">\n <span style={VISUALLY_HIDDEN}>{compareAtLabel}: </span>\n <Money data={compareAt} {...opts} />\n </s>\n </>\n ) : null}\n </div>\n )\n}\n","/**\n * Product preview of the storefront: ONE picture-plus-text pattern for every place a product is listed (cart drawer,\n * checkout summary, \"Mis pedidos\", order detail). Headless (`data-sf-preview*`, `classNames`), styled by\n * `product-preview.css` (plain CSS on the store tokens, dark mode included), SSR-safe.\n *\n * - `ProductThumb`: the picture alone. Fixed aspect ratio, `object-fit: contain` on a soft surface (parts photographed\n * on white are never cropped), responsive `srcset` through the shared `Image`, lazy by default, a shimmer while it\n * loads and an elegant fallback (initial of the name, or a package glyph) when there is no image, it is broken, or\n * the product no longer exists. Optional quantity badge.\n * - `ProductPreview`: thumb + name (2 lines) + variant + SKU + quantity x unit price, with the line total aligned right.\n * - `ProductThumbStack`: overlapped thumbs with a \"+N\" counter (order cards).\n */\nimport { useEffect, useRef, useState, type ReactNode } from 'react'\nimport type { Image as ImageData } from '@asteby/storefront'\nimport { Image, type ImageLoader } from '../components.js'\n\ntype ThumbState = 'loading' | 'loaded' | 'fallback'\n\n/** First letter(s) of the name for the fallback: two initials from two words, one otherwise. Empty when nothing usable. */\nexport function productInitials(name: string | null | undefined): string {\n const words = (name ?? '')\n .normalize('NFKC')\n .split(/[\\s\\-_/.,()]+/)\n .map((w) => Array.from(w).find((c) => /\\p{L}|\\p{N}/u.test(c)) ?? '')\n .filter(Boolean)\n if (words.length === 0) return ''\n return (words.length > 1 ? words[0]! + words[1]! : words[0]!).toLocaleUpperCase()\n}\n\nexport type ProductThumbClassNames = Partial<Record<'root' | 'img' | 'fallback' | 'badge', string>>\n\nexport type ProductThumbImage = { url: string; alt?: string | null; width?: number; height?: number }\n\nexport type ProductThumbProps = {\n /** Picture of the product or variant. `null`/missing: shows the fallback. */\n image?: ProductThumbImage | null\n /** Name of the product: alt of the picture (unless `decorative`) and source of the fallback initial. */\n name?: string | null\n /** Side in px. Default 56. */\n size?: number\n /** Aspect ratio of the box, `w/h`. Default `1/1`. */\n ratio?: string\n /** `contain` (default) never crops; `cover` fills the box. */\n fit?: 'contain' | 'cover'\n /** Quantity badge, shown when greater than 1. */\n quantity?: number\n /** The name sits next to it as text: the picture has `alt=\"\"` and the fallback is hidden from screen readers. Default false. */\n decorative?: boolean\n /** Slight zoom on hover (honours `prefers-reduced-motion`). Default true. */\n zoom?: boolean\n /** Above the fold: eager load. */\n priority?: boolean\n sizes?: string\n loader?: ImageLoader | null\n className?: string\n classNames?: ProductThumbClassNames\n}\n\n/** The picture of a product with fixed ratio, shimmer, lazy loading and a fallback that always looks designed. */\nexport function ProductThumb({\n image,\n name,\n size = 56,\n ratio = '1/1',\n fit = 'contain',\n quantity,\n decorative = false,\n zoom = true,\n priority = false,\n sizes,\n loader,\n className,\n classNames: cx = {},\n}: ProductThumbProps) {\n const url = image?.url || null\n const [state, setState] = useState<ThumbState>(url ? 'loading' : 'fallback')\n const box = useRef<HTMLSpanElement>(null)\n // A new picture (another variant) starts over; a missing one goes straight to the fallback.\n useEffect(() => {\n const img = box.current?.querySelector('img')\n // The browser may have loaded the picture before hydration: no `load` event will come.\n setState(!url ? 'fallback' : img?.complete ? (img.naturalWidth > 0 ? 'loaded' : 'fallback') : 'loading')\n }, [url])\n\n const label = name?.trim() || ''\n const initials = productInitials(label)\n const showBadge = typeof quantity === 'number' && quantity > 1\n const a11y = state === 'fallback' && !decorative && label ? { role: 'img', 'aria-label': label } : { 'aria-hidden': decorative || state === 'fallback' ? true : undefined }\n return (\n <span\n ref={box}\n className={[cx.root, className].filter(Boolean).join(' ') || undefined}\n style={{ ['--sf-preview-size' as string]: `${size}px`, ['--sf-preview-ratio' as string]: ratio.replace(':', '/') }}\n data-sf-thumb=\"\"\n data-state={state}\n data-fit={fit}\n data-zoom={zoom || undefined}\n {...a11y}\n >\n {url && state !== 'fallback' ? (\n <Image\n data={{ url, alt: image?.alt ?? null, ...(image?.width ? { width: image.width } : {}), ...(image?.height ? { height: image.height } : {}) }}\n alt={decorative ? '' : (image?.alt ?? label)}\n aspectRatio={ratio}\n sizes={sizes ?? `${size * 2}px`}\n widths={[Math.round(size), Math.round(size * 2), Math.round(size * 3)]}\n {...(loader !== undefined ? { loader } : {})}\n priority={priority}\n className={cx.img}\n onLoad={() => setState('loaded')}\n onError={() => setState('fallback')}\n />\n ) : null}\n {state === 'fallback' ? (\n <span className={cx.fallback} data-sf-thumb-fallback=\"\" aria-hidden=\"true\">\n {initials ? <span data-sf-thumb-initial=\"\">{initials}</span> : <PackageGlyph />}\n </span>\n ) : null}\n {showBadge ? (\n <span className={cx.badge} data-sf-thumb-qty=\"\" aria-hidden=\"true\">\n {quantity}\n </span>\n ) : null}\n </span>\n )\n}\n\nfunction PackageGlyph() {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"45%\" height=\"45%\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" focusable=\"false\">\n <path d=\"M21 8 12 3 3 8v8l9 5 9-5V8Z\" />\n <path d=\"m3 8 9 5 9-5M12 13v8\" />\n </svg>\n )\n}\n\nexport type ProductPreviewClassNames = Partial<Record<'root' | 'media' | 'body' | 'name' | 'variant' | 'meta' | 'sku' | 'qty' | 'price' | 'total' | 'unit', string>> & { thumb?: ProductThumbClassNames }\n\nexport type ProductPreviewProps = Pick<ProductThumbProps, 'image' | 'size' | 'ratio' | 'fit' | 'zoom' | 'priority' | 'sizes' | 'loader'> & {\n name: string\n /** \"Rojo / L\". Omit for default variants. */\n variant?: string | null\n sku?: string | null\n /** Quantity: a badge on the picture (> 1) and \"Cantidad N\" under the name. */\n quantity?: number\n /** Unit price, already formatted. Shown next to the quantity when it is greater than 1. */\n unitPrice?: ReactNode\n /** Line total, already formatted: aligned right, the strongest number. */\n total?: ReactNode\n /** Link on the name (product page). */\n href?: string | null\n /** Rendered under the text (status, note, actions). */\n children?: ReactNode\n /** Text of the quantity for screen readers and the meta line. Default `Cantidad {n}`. */\n quantityLabel?: string\n /** Name shown when the line has none (product deleted). Default `Producto no disponible`. */\n unavailableLabel?: string\n className?: string\n classNames?: ProductPreviewClassNames\n}\n\n/**\n * A product line: picture, name (2 lines), variant, SKU, quantity and prices with a clear hierarchy. Degrades to a\n * designed placeholder when the product has no image or no longer exists (empty name).\n */\nexport function ProductPreview({\n image,\n name,\n variant,\n sku,\n quantity,\n unitPrice,\n total,\n href,\n children,\n size = 64,\n ratio,\n fit,\n zoom,\n priority,\n sizes,\n loader,\n quantityLabel,\n unavailableLabel = 'Producto no disponible',\n className,\n classNames: cx = {},\n}: ProductPreviewProps) {\n const missing = !name.trim()\n const title = missing ? unavailableLabel : name\n const hasQty = typeof quantity === 'number' && Number.isFinite(quantity)\n return (\n <div className={[cx.root, className].filter(Boolean).join(' ') || undefined} data-sf-preview=\"\" data-missing={missing || undefined}>\n <span className={cx.media} data-sf-preview-media=\"\">\n <ProductThumb\n image={image}\n name={missing ? null : name}\n size={size}\n decorative\n {...(ratio ? { ratio } : {})}\n {...(fit ? { fit } : {})}\n {...(zoom !== undefined ? { zoom } : {})}\n {...(priority ? { priority } : {})}\n {...(sizes ? { sizes } : {})}\n {...(loader !== undefined ? { loader } : {})}\n {...(hasQty ? { quantity: quantity! } : {})}\n {...(cx.thumb ? { classNames: cx.thumb } : {})}\n />\n </span>\n <span className={cx.body} data-sf-preview-body=\"\">\n <span className={cx.name} data-sf-preview-name=\"\">\n {href && !missing ? <a href={href}>{title}</a> : title}\n </span>\n {variant ? (\n <span className={cx.variant} data-sf-preview-variant=\"\">\n {variant}\n </span>\n ) : null}\n {sku ? (\n <span className={cx.sku} data-sf-preview-sku=\"\">\n SKU {sku}\n </span>\n ) : null}\n {hasQty ? (\n <span className={cx.meta} data-sf-preview-meta=\"\">\n <span className={cx.qty} data-sf-preview-qty=\"\">\n {(quantityLabel ?? 'Cantidad {n}').replace('{n}', String(quantity))}\n </span>\n {unitPrice != null && quantity! > 1 ? (\n <span className={cx.unit} data-sf-preview-unit=\"\">\n {' · '}\n {unitPrice}\n </span>\n ) : null}\n </span>\n ) : null}\n {children}\n </span>\n {total != null ? (\n <span className={cx.total} data-sf-preview-total=\"\">\n {total}\n </span>\n ) : unitPrice != null && !(hasQty && quantity! > 1) ? (\n <span className={cx.price} data-sf-preview-total=\"\">\n {unitPrice}\n </span>\n ) : null}\n </div>\n )\n}\n\nexport type ProductThumbStackProps = {\n items: ReadonlyArray<{ image?: ProductThumbImage | null; name?: string | null }>\n /** Thumbs shown before \"+N\". Default 4. */\n max?: number\n size?: number\n /** Screen reader text for the hidden remainder, `{n}` = how many. Default `y {n} más`. */\n moreLabel?: string\n className?: string\n}\n\n/** Overlapped thumbs with a \"+N\" counter: the products of an order at a glance. */\nexport function ProductThumbStack({ items, max = 4, size = 44, moreLabel = 'y {n} más', className }: ProductThumbStackProps) {\n if (items.length === 0) return null\n const shown = items.length > max ? items.slice(0, max - 1) : items\n const rest = items.length - shown.length\n return (\n <span className={className} data-sf-thumb-stack=\"\" style={{ ['--sf-preview-size' as string]: `${size}px` }}>\n {shown.map((it, i) => (\n <ProductThumb key={i} image={it.image ?? null} name={it.name ?? null} size={size} zoom={false} />\n ))}\n {rest > 0 ? (\n <span data-sf-thumb-more=\"\" role=\"img\" aria-label={moreLabel.replace('{n}', String(rest))}>\n +{rest}\n </span>\n ) : null}\n </span>\n )\n}\n","/**\n * Order summary of a checkout: lines and the server totals (subtotal, discounts, shipping, taxes, total) exactly as\n * `cart.cost` sends them; nothing is added or recalculated. `OrderSummaryDisclosure` wraps it for phones: a collapsed\n * bar with the total at the top of the page (native `<details>`, no JavaScript, no layout shift on hydration).\n */\nimport type { ReactNode } from 'react'\nimport { formatMoney, type CartCost, type CartLine, type Money } from '@asteby/storefront'\nimport { useResolvedLocale } from '../locale.js'\nimport { ProductThumb } from '../ui/product-preview.js'\n\nexport type OrderSummaryMessages = {\n title: string\n subtotal: string\n discount: string\n shipping: string\n /** Shipping not chosen yet. */\n shippingPending: string\n /** Shipping being saved / re-read. */\n updating: string\n free: string\n taxes: string\n /** Taxes already inside the prices, `{amount}`. */\n taxesIncluded: string\n total: string\n /** `{n}` = quantity. */\n quantity: string\n show: string\n hide: string\n}\n\nconst ES: OrderSummaryMessages = {\n title: 'Tu pedido',\n subtotal: 'Subtotal',\n discount: 'Descuento',\n shipping: 'Envío',\n shippingPending: 'Al elegir la entrega',\n updating: 'Actualizando…',\n free: 'Gratis',\n taxes: 'Impuestos',\n taxesIncluded: 'Incluye {amount} de impuestos',\n total: 'Total',\n quantity: 'Cantidad: {n}',\n show: 'Ver resumen del pedido',\n hide: 'Ocultar resumen del pedido',\n}\n\nconst EN: OrderSummaryMessages = {\n title: 'Your order',\n subtotal: 'Subtotal',\n discount: 'Discount',\n shipping: 'Shipping',\n shippingPending: 'Calculated at delivery',\n updating: 'Updating…',\n free: 'Free',\n taxes: 'Taxes',\n taxesIncluded: 'Includes {amount} in taxes',\n total: 'Total',\n quantity: 'Quantity: {n}',\n show: 'Show order summary',\n hide: 'Hide order summary',\n}\n\nexport function orderSummaryMessages(locale?: string | null, overrides?: Partial<OrderSummaryMessages> | null): OrderSummaryMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\nexport type OrderSummaryClassNames = Partial<\n Record<'root' | 'title' | 'lines' | 'line' | 'media' | 'qty' | 'lineTitle' | 'variant' | 'linePrice' | 'totals' | 'row' | 'discount' | 'muted' | 'free' | 'total' | 'note', string>\n>\n\nexport type OrderSummaryProps = {\n lines: readonly CartLine[]\n /** `cart.cost` as the server sends it. */\n cost: CartCost\n /** The delivery is being saved and the cart re-read: shipping and total say so (`aria-busy`). */\n updating?: boolean\n /** Picture of a line (e.g. `<ProductImage>`), 48-64 px. The quantity badge sits on it. Default: `<ProductThumb>` of the line's image (fallback initial when it has none). */\n renderLineMedia?: (line: CartLine) => ReactNode\n /** Show the default picture of each line. Default true; `false` gives the text-only \"2 × Name\" list. */\n media?: boolean\n renderAmount?: (amount: Money) => ReactNode\n /** Heading. `false` hides it (the disclosure already names the block). */\n title?: ReactNode | false\n /** Heading level. Default 2. */\n headingLevel?: 2 | 3\n locale?: string\n messages?: Partial<OrderSummaryMessages>\n classNames?: OrderSummaryClassNames\n /** Rendered between the lines and the totals (e.g. a discount code form). */\n children?: ReactNode\n}\n\n/** The line's own picture, else the product's; `decorative` because the name is right beside it. */\nfunction defaultLineMedia(l: CartLine): ReactNode {\n const img = l.merchandise.image ?? l.merchandise.product.featured_image ?? null\n return <ProductThumb image={img} name={l.merchandise.product.title} size={56} decorative zoom={false} />\n}\n\nconst isZero = (m: Money | null | undefined) => !!m && Number(m.amount) === 0\nconst positive = (m: Money | null | undefined): m is Money => !!m && Number(m.amount) > 0\n\n/** Lines and totals of the order. The total row is `aria-live`, so a new total after choosing delivery is announced. */\nexport function OrderSummary(props: OrderSummaryProps) {\n const { lines, cost, updating = false, media = true, renderAmount, title, headingLevel = 2, classNames: cx = {}, children } = props\n const locale = useResolvedLocale(props.locale)\n const m = orderSummaryMessages(locale, props.messages)\n const money = (v: Money) => (renderAmount ? renderAmount(v) : formatMoney(v, locale))\n const renderLineMedia = props.renderLineMedia ?? (media ? defaultLineMedia : undefined)\n const H = headingLevel === 3 ? 'h3' : 'h2'\n const discounts = cost.discounts?.filter((d) => positive(d.amount)) ?? []\n return (\n <div className={cx.root} data-sf-summary>\n {title === false ? null : (\n <H className={cx.title} data-sf-summary-title>\n {title ?? m.title}\n </H>\n )}\n <ul className={cx.lines} data-sf-summary-lines>\n {lines.map((l) => {\n const variant = l.merchandise.title && !/^default( title)?$/i.test(l.merchandise.title) ? l.merchandise.title : null\n return (\n <li key={l.id} className={cx.line} data-sf-summary-line>\n {renderLineMedia ? (\n <span className={cx.media} data-sf-summary-media>\n {renderLineMedia(l)}\n {l.quantity > 1 ? (\n <span className={cx.qty} data-sf-summary-qty aria-hidden=\"true\">\n {l.quantity}\n </span>\n ) : null}\n </span>\n ) : null}\n <span data-sf-summary-line-body>\n <span className={cx.lineTitle} data-sf-summary-line-title>\n {!renderLineMedia && l.quantity > 1 ? `${l.quantity} × ` : null}\n {l.merchandise.product.title}\n </span>\n {variant ? (\n <span className={cx.variant} data-sf-summary-variant>\n {variant}\n </span>\n ) : null}\n {renderLineMedia || l.quantity > 1 ? (\n <span style={{ position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)', whiteSpace: 'nowrap' }}>{m.quantity.replace('{n}', String(l.quantity))}</span>\n ) : null}\n </span>\n <span className={cx.linePrice} data-sf-summary-line-price>\n {money(l.cost.total)}\n </span>\n </li>\n )\n })}\n </ul>\n {children}\n <dl className={cx.totals} data-sf-summary-totals aria-busy={updating || undefined}>\n <div className={cx.row} data-sf-summary-row=\"subtotal\">\n <dt>{m.subtotal}</dt>\n <dd>{money(cost.subtotal)}</dd>\n </div>\n {discounts.length\n ? discounts.map((d) => (\n <div key={d.id} className={cx.row ? `${cx.row} ${cx.discount ?? ''}`.trim() : cx.discount} data-sf-summary-row=\"discount\">\n <dt>{d.code ? `${m.discount} (${d.code})` : d.title || m.discount}</dt>\n <dd>−{money(d.amount)}</dd>\n </div>\n ))\n : positive(cost.discount) ? (\n <div className={cx.row ? `${cx.row} ${cx.discount ?? ''}`.trim() : cx.discount} data-sf-summary-row=\"discount\">\n <dt>{m.discount}</dt>\n <dd>−{money(cost.discount)}</dd>\n </div>\n ) : null}\n <div className={cx.row} data-sf-summary-row=\"shipping\">\n <dt>{m.shipping}</dt>\n <dd className={updating || !cost.shipping ? cx.muted : undefined}>\n {updating ? m.updating : !cost.shipping ? m.shippingPending : isZero(cost.shipping) ? <span className={cx.free}>{m.free}</span> : money(cost.shipping)}\n </dd>\n </div>\n {positive(cost.tax) && !cost.tax_included ? (\n <div className={cx.row} data-sf-summary-row=\"tax\">\n <dt>{m.taxes}</dt>\n <dd>{money(cost.tax)}</dd>\n </div>\n ) : null}\n <div className={cx.total} data-sf-summary-row=\"total\">\n <dt>{m.total}</dt>\n <dd aria-live=\"polite\" data-updating={updating || undefined}>\n {money(cost.total)}\n </dd>\n </div>\n </dl>\n {positive(cost.tax) && cost.tax_included ? (\n <p className={cx.note} data-sf-summary-tax-note>\n {m.taxesIncluded.split('{amount}').flatMap((part, i) => (i === 0 ? [part] : [<span key={i}>{money(cost.tax!)}</span>, part]))}\n </p>\n ) : null}\n </div>\n )\n}\n\nexport type OrderSummaryDisclosureProps = {\n /** Total shown on the collapsed bar (`cart.cost.total`). */\n total: Money\n updating?: boolean\n renderAmount?: (amount: Money) => ReactNode\n locale?: string\n messages?: Partial<OrderSummaryMessages>\n /** Start open (default closed). */\n defaultOpen?: boolean\n className?: string\n classNames?: Partial<Record<'summary' | 'label' | 'total' | 'panel', string>>\n /** Usually an `<OrderSummary title={false} … />`. */\n children: ReactNode\n}\n\n/**\n * Phones: the order summary as a collapsed bar at the top (\"Show order summary · $1,234.00\"). Native `<details>`:\n * works without JavaScript, the server HTML is already the final layout (no shift on hydration). Show it only on\n * narrow screens and the full summary on wide ones (the shop's CSS).\n */\nexport function OrderSummaryDisclosure({ total, updating, renderAmount, locale: loc, messages, defaultOpen = false, className, classNames: cx = {}, children }: OrderSummaryDisclosureProps) {\n const locale = useResolvedLocale(loc)\n const m = orderSummaryMessages(locale, messages)\n return (\n <details className={className} data-sf-summary-disclosure {...(defaultOpen ? { open: true } : {})}>\n <summary className={cx.summary} data-sf-summary-toggle>\n <span className={cx.label} data-sf-summary-toggle-label>\n <span data-sf-summary-show>{m.show}</span>\n <span data-sf-summary-hide>{m.hide}</span>\n </span>\n <span className={cx.total} data-sf-summary-toggle-total data-updating={updating || undefined}>\n {renderAmount ? renderAmount(total) : formatMoney(total, locale)}\n </span>\n </summary>\n <div className={cx.panel} data-sf-summary-panel>\n {children}\n </div>\n </details>\n )\n}\n","// GENERADO por scripts/build-logos.mjs desde brands/manifest.json y brands/assets/. No editar a mano.\n// Procedencia y licencias de cada logo: brands/LOGOS.md.\nexport type LogoAsset = { src: string; ar: number; mono: boolean }\n\nexport const LOGOS: Record<string, LogoAsset> = {\n \"7eleven\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 xml:space=%22preserve%22 viewBox=%220 0 45 59.89%22%3E%3Cdefs%3E%3Cpath id=%22a%22 d=%22M0 0h45v59.9H0z%22/%3E%3C/defs%3E%3CclipPath id=%22b%22%3E%3Cuse xlink:href=%22%23a%22 style=%22overflow:visible%22/%3E%3C/clipPath%3E%3Cpath d=%22M34.2 45c.9 0 1.7.8 1.7 1.7s-.7 1.7-1.7 1.7c-.9 0-1.6-.8-1.6-1.7s.7-1.7 1.6-1.7m0 3c.7 0 1.3-.6 1.3-1.3 0-.8-.6-1.3-1.3-1.3s-1.3.6-1.3 1.3c0 .8.6 1.3 1.3 1.3m-.2-.4h-.3v-1.8h.6q.6 0 .6.6c0 .3-.2.5-.4.5l.4.7h-.4l-.4-.7H34zm.2-1q.3 0 .3-.3t-.3-.3H34v.5h.2zm8-14.3c-.9 0-1.5.4-2.1.9l-.4.6-.1-.1.5-.8v-.5h-3.2V43h2.9v-6.7c0-1.1.7-1.4 1.2-1.5s1.1.2 1.1.8V43H45v-7.3c0-2.3-1-3.4-2.8-3.4M9.9 40.6h3v2.3H7V32.3h2.9zM0 42.9h5.9v-2.1h-3v-2.3h3v-2h-3v-2h3v-2.2H0zm13.9 0h6v-2.1h-3.1v-2.3h3.1v-2h-3.1v-2h3.1v-2.2h-6zm16 0h6v-2.1h-3.1v-2.3h3.1v-2h-3.1v-2h3.1v-2.2h-6zm-3.8-10.6L25 39l-.1 1.2v.1h-.1v-.1l-.1-1.2-1.1-6.7h-2.9l2.4 10.6h3.6l2.4-10.6z%22 style=%22clip-path:url(%23b);fill:%23147350%22/%3E%3Cpath d=%22M37.7 0H0v15h19.9C24.4 8.5 30.5 3.3 37.7 0%22 style=%22clip-path:url(%23b);fill:%23ff6c00%22/%3E%3Cpath d=%22M15 59.9h15v-15H15zM45 15V0a40.7 40.7 0 0 0-28.9 30h15.3A25.8 25.8 0 0 1 45 15%22 style=%22clip-path:url(%23b);fill:%23eb0f2a%22/%3E%3C/svg%3E\", ar: 0.751, mono: false },\n \"99minutos\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.1 0 160.9 40.9%22%3E%3Cg fill=%22none%22 fill-rule=%22evenodd%22%3E%3Cpath fill=%22%23323634%22 d=%22M50.25 23.07v6.07h-3.12v-6.15q0-1.34-.4-1.97t-1.31-.62-1.6.68-.69 2v6.06h-3.1V17.89h3.1v1.27a3.8 3.8 0 0 1 2.94-1.46q1.05 0 1.91.63.86.62 1.3 1.52.64-1.02 1.73-1.59a5 5 0 0 1 2.18-.56q1.95 0 3.17 1.18 1.2 1.18 1.2 3.42v6.84h-3.13v-6.15q0-2.6-1.88-2.6-.93 0-1.62.69-.68.68-.68 2m9.32-6.62q-.53-.53-.53-1.3t.53-1.31 1.3-.53 1.29.53.53 1.3-.53 1.31-1.3.54-1.29-.54M86 17.9h-2.8v6.06q0 1.3-.68 1.98t-1.61.68q-1.89 0-1.88-2.6V17.9H75.9v6.82q0 2.28 1.24 3.44a4.3 4.3 0 0 0 3.08 1.16q1.83 0 2.99-1.66v1.49h3.12v-9h1.73v5.2q0 1.83 1.1 2.9a3.8 3.8 0 0 0 2.72 1.07q1.6 0 3.05-1.34l-1.16-2.2q-.6.8-1.47.8-.45 0-.79-.37a1.5 1.5 0 0 1-.33-1.01v-5.04h2.7V17.9h-2.7v-3.37h-3.12v3.37zm-26.69 0h3.1v11.25h-3.1zm7.9 4.97v6.28h-3.1V17.89h3.1v1.25q1.42-1.44 3.17-1.44a4 4 0 0 1 2.95 1.25q1.2 1.26 1.2 3.35v6.84h-3.11v-6.36q0-2.6-1.88-2.6-.94 0-1.63.69-.7.68-.7 2m39.05.65q0 2.44-1.68 4.12a5.7 5.7 0 0 1-4.2 1.68 5.7 5.7 0 0 1-5.9-5.8q0-2.44 1.68-4.13a5.7 5.7 0 0 1 4.21-1.68q2.55 0 4.21 1.68a5.6 5.6 0 0 1 1.68 4.13m-8.65 0q0 1.38.78 2.25.77.87 1.98.87t1.99-.87.78-2.25-.78-2.26a2.5 2.5 0 0 0-1.99-.87q-1.2 0-1.98.87a3.3 3.3 0 0 0-.78 2.26m17.62 2.13q0 1.66-1.2 2.66-1.22 1-3.08 1a8 8 0 0 1-5-1.77l1.36-1.97q1.75 1.36 3.7 1.36.6 0 .95-.24a.7.7 0 0 0 .36-.64q0-.39-.5-.73-.47-.33-1.4-.63t-1.4-.5q-.5-.21-1.11-.6a2.6 2.6 0 0 1-1.27-2.36 3.1 3.1 0 0 1 1.25-2.54q1.24-.98 3.2-.98t3.94 1.34l-1.16 2.09q-1.45-1-2.89-1t-1.44.79q0 .44.46.69.45.25 1.5.59 1.07.33 1.5.5.45.19 1.07.56 1.16.72 1.16 2.38%22/%3E%3Cpath fill=%22%2385C440%22 d=%22M116.65 28.77q-.52-.53-.52-1.3 0-.78.52-1.31.54-.54 1.3-.53.76 0 1.3.53.52.53.52 1.3 0 .78-.53 1.31-.52.54-1.3.54-.75 0-1.29-.54m9.35-2.25q1.55 0 2.79-1.56l1.84 2.09q-2.15 2.25-4.65 2.26a6 6 0 0 1-4.24-1.6 5.4 5.4 0 0 1-1.72-4.19q0-2.58 1.74-4.2a6 6 0 0 1 4.15-1.62 6.4 6.4 0 0 1 4.6 1.99l-1.62 2.13q-.54-.65-1.31-1a4 4 0 0 0-1.54-.36 2.9 2.9 0 0 0-2.98 3.04 2.85 2.85 0 0 0 2.94 3.02m16.4-3.01q0 2.44-1.67 4.12a5.7 5.7 0 0 1-4.21 1.68 5.7 5.7 0 0 1-5.89-5.8q0-2.44 1.68-4.13a5.7 5.7 0 0 1 4.2-1.68 5.7 5.7 0 0 1 5.9 5.81m-8.64 0q0 1.38.77 2.25.78.87 1.99.87 1.2 0 1.99-.87.77-.87.77-2.25t-.77-2.26a2.5 2.5 0 0 0-2-.87q-1.2 0-1.98.87a3.3 3.3 0 0 0-.77 2.26m19.84-.44v6.07h-3.12v-6.15q0-1.34-.4-1.97-.42-.62-1.31-.62t-1.6.68q-.69.68-.69 2v6.06h-3.1V17.89h3.1v1.27a3.8 3.8 0 0 1 2.94-1.46q1.05 0 1.92.63.85.62 1.29 1.52.64-1.02 1.73-1.59a5 5 0 0 1 2.18-.56q1.97 0 3.17 1.18t1.2 3.42v6.84h-3.13v-6.15q0-2.6-1.88-2.6-.93 0-1.62.69-.68.68-.68 2%22/%3E%3Cpath fill=%22%23323634%22 d=%22M18.08 17.16a4.5 4.5 0 0 0-1.59-1.84 5.6 5.6 0 0 0-2.58-.87 5.2 5.2 0 0 0-3.8.95 4.6 4.6 0 0 0-1.82 3.39q-.23 2.2.98 3.69 1.2 1.49 3.22 1.7 1.53.16 2.94-.6a4.6 4.6 0 0 1-1.16 2.38q-.82.83-2.16.68a3 3 0 0 1-1.15-.41L9.1 28.38q.4.27 1.07.57.9.4 1.9.5a5.5 5.5 0 0 0 5.84-3.55q.64-1.46.85-3.45.33-3.1-.67-5.29m-3.32 3.9q-.7.5-1.66.39a1.9 1.9 0 0 1-1.42-.8q-.47-.7-.38-1.6.1-.92.75-1.45t1.57-.43 1.48.83.45 1.65a2 2 0 0 1-.8 1.4m14.44-3.89a4.5 4.5 0 0 0-1.6-1.84 5.6 5.6 0 0 0-2.58-.87 5.2 5.2 0 0 0-3.79.95 4.6 4.6 0 0 0-1.82 3.39q-.23 2.2.98 3.69 1.2 1.49 3.22 1.7 1.53.16 2.93-.6a4.6 4.6 0 0 1-1.15 2.38q-.82.83-2.16.68a3 3 0 0 1-1.15-.41l-1.88 2.15q.42.27 1.08.57.9.4 1.9.5a5.5 5.5 0 0 0 5.84-3.55q.63-1.46.85-3.45.32-3.1-.68-5.29m-3.33 3.9q-.69.5-1.65.39a1.9 1.9 0 0 1-1.43-.8q-.46-.7-.37-1.6.1-.92.74-1.45.66-.53 1.58-.43t1.47.83.46 1.65a2 2 0 0 1-.8 1.4%22/%3E%3Cpath fill=%22%2385C440%22 d=%22m37.49 12.42 3.06-3.1s-2.03-5.1-9.19-9.26L28.3 3.14l3.58 3.6-.78.8a18.6 18.6 0 0 0-12.2-4.58A18.86 18.86 0 0 0 .14 21.93c0 10.47 8.4 18.96 18.76 18.96a18.86 18.86 0 0 0 18.77-18.96A19 19 0 0 0 33.15 9.6l.77-.79zm-3.85 9.23c0 8.24-6.6 14.92-14.76 14.92A14.84 14.84 0 0 1 4.12 21.65c0-8.24 6.61-14.92 14.76-14.92 8.16 0 14.76 6.68 14.76 14.92%22/%3E%3C/g%3E%3C/svg%3E\", ar: 3.934, mono: false },\n \"amex\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1000 996.89%22%3E%3Cpath d=%22M55.5 1002.35h997.52v538.48l-49.38 77.15 49.38 68.66v313.22H55.5v-507.63l30.86-35.49-30.86-33.94Z%22 style=%22fill:%23016fd0;fill-opacity:1;stroke:none%22 transform=%22translate(-55.5 -1002.35)%22/%3E%3Cpath d=%22M249.14 1697.44v-156.6h165.82l17.8 23.19 18.37-23.2h601.89v145.81s-15.74 10.65-33.95 10.8H685.8l-20.05-24.68v24.68H600v-42.14s-8.98 5.88-28.4 5.88h-22.37v36.26h-99.52l-17.76-23.69-18.04 23.7zM55.5 1422.8l37.4-87.18h64.66l21.22 48.84v-48.84h80.39l12.63 35.3 12.25-35.3H644.9v17.75s18.97-17.75 50.14-17.75l117.09.41 20.85 48.2v-48.6h67.27l18.52 27.68v-27.69h67.89v156.61h-67.89l-17.74-27.77v27.77H802.2l-9.94-24.69h-26.57l-9.78 24.7h-67.03c-26.83 0-43.97-17.39-43.97-17.39v17.38H543.84l-20.05-24.69v24.7h-375.8l-9.94-24.7h-26.49l-9.86 24.7H55.5z%22 style=%22fill:%23fff;stroke:none%22 transform=%22translate(-55.5 -1002.35)%22/%3E%3Cpath d=%22m106.13 1354.93-50.44 117.26h32.84l9.3-23.48h54.1l9.26 23.48h33.56l-50.39-117.26zm18.66 27.29 16.49 41.03h-33.03zm73.43 89.95v-117.26l46.66.17 27.14 75.6 26.5-75.77h46.28v117.26h-29.3v-86.4l-31.08 86.4h-25.7l-31.17-86.4v86.4zm166.64 0v-117.26h95.66v26.23H394.5v20.06H459v24.68h-64.5v20.83h66.03v25.46zm112.64-117.24v117.26h29.31v-41.66h12.35l35.15 41.66h35.82l-38.57-43.2a35.7 35.7 0 0 0 32.16-36.02c0-24.67-19.37-38.04-40.99-38.04zm29.31 26.23h33.51c8.04 0 13.89 6.29 13.89 12.34 0 7.8-7.58 12.35-13.45 12.35H506.8zm118.81 91.01h-29.93v-117.26h29.93zm70.98 0h-6.47c-31.26 0-50.24-24.63-50.24-58.15 0-34.35 18.77-59.11 58.25-59.11h32.4v27.77h-33.59c-16.02 0-27.36 12.5-27.36 31.63 0 22.71 12.96 32.25 31.63 32.25h7.72zm63.79-117.24-50.44 117.26h32.84l9.3-23.48h54.1l9.26 23.48h33.56l-50.39-117.26zm18.66 27.29 16.49 41.03H762.5zm73.38 89.95v-117.26h37.28l47.59 73.68v-73.68h29.31v117.26h-36.06l-48.8-75.6v75.6zM269.2 1677.39v-117.27h95.66v26.23h-66.04v20.06h64.5v24.69h-64.5v20.83h66.04v25.46zm468.75 0v-117.27h95.66v26.23h-66.04v20.06h64.19v24.69h-64.19v20.83h66.04v25.46zm-369.38 0 46.58-57.91-47.68-59.36h36.93l28.4 36.7 28.5-36.7h35.48l-47.06 58.63 46.67 58.64h-36.93l-27.58-36.12-26.9 36.12zm131.3-117.25v117.27h30.09v-37.04h30.86c26.1 0 45.9-13.85 45.9-40.79 0-22.31-15.52-39.44-42.1-39.44zm30.09 26.52h32.5c8.43 0 14.46 5.17 14.46 13.5 0 7.83-6 13.5-14.56 13.5h-32.4zm89.49-26.54v117.27h29.31v-41.66h12.35l35.15 41.66h35.82l-38.57-43.2a35.7 35.7 0 0 0 32.16-36.03c0-24.67-19.37-38.04-40.98-38.04zm29.31 26.23h33.51c8.04 0 13.9 6.29 13.9 12.35 0 7.79-7.59 12.34-13.46 12.34h-33.95zm198.43 91.04v-25.46h58.67c8.68 0 12.44-4.7 12.44-9.84 0-4.93-3.75-9.91-12.44-9.91h-26.51c-23.05 0-35.89-14.04-35.89-35.12 0-18.8 11.76-36.94 46-36.94h57.1l-12.35 26.39h-49.37c-9.44 0-12.35 4.95-12.35 9.68 0 4.86 3.6 10.22 10.8 10.22h27.78c25.69 0 36.83 14.57 36.83 33.66 0 20.51-12.42 37.32-38.23 37.32zm107.59 0v-25.46h58.67c8.69 0 12.44-4.7 12.44-9.84 0-4.93-3.74-9.91-12.44-9.91h-26.5c-23.05 0-35.89-14.04-35.89-35.12 0-18.8 11.76-36.94 46-36.94h57.09l-12.34 26.39h-49.38c-9.44 0-12.34 4.95-12.34 9.68 0 4.86 3.59 10.22 10.8 10.22h27.77c25.7 0 36.84 14.57 36.84 33.66 0 20.51-12.42 37.32-38.24 37.32z%22 style=%22fill:%23016fd0;fill-opacity:1;stroke:none%22 transform=%22translate(-55.5 -1002.35)%22/%3E%3C/svg%3E\", ar: 1.003, mono: false },\n \"applepay\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 baseProfile=%22tiny%22 viewBox=%220 0 512 210.2%22%3E%3Cpath d=%22M93.6 27.1C87.6 34.2 78 39.8 68.4 39c-1.2-9.6 3.5-19.8 9-26.1 6-7.3 16.5-12.5 25-12.9 1 10-2.9 19.8-8.8 27.1m8.7 13.8c-13.9-.8-25.8 7.9-32.4 7.9-6.7 0-16.8-7.5-27.8-7.3-14.3.2-27.6 8.3-34.9 21.2-15 25.8-3.9 64 10.6 85 7.1 10.4 15.6 21.8 26.8 21.4 10.6-.4 14.8-6.9 27.6-6.9 12.9 0 16.6 6.9 27.8 6.7 11.6-.2 18.9-10.4 26-20.8 8.1-11.8 11.4-23.3 11.6-23.9-.2-.2-22.4-8.7-22.6-34.3-.2-21.4 17.5-31.6 18.3-32.2-10-14.8-25.6-16.4-31-16.8m80.3-29v155.9h24.2v-53.3h33.5c30.6 0 52.1-21 52.1-51.4s-21.1-51.2-51.3-51.2zm24.2 20.4h27.9c21 0 33 11.2 33 30.9s-12 31-33.1 31h-27.8zM336.6 169c15.2 0 29.3-7.7 35.7-19.9h.5v18.7h22.4V90.2c0-22.5-18-37-45.7-37-25.7 0-44.7 14.7-45.4 34.9h21.8c1.8-9.6 10.7-15.9 22.9-15.9 14.8 0 23.1 6.9 23.1 19.6v8.6l-30.2 1.8c-28.1 1.7-43.3 13.2-43.3 33.2 0 20.2 15.7 33.6 38.2 33.6m6.5-18.5c-12.9 0-21.1-6.2-21.1-15.7 0-9.8 7.9-15.5 23-16.4l26.9-1.7v8.8c0 14.6-12.4 25-28.8 25m82 59.7c23.6 0 34.7-9 44.4-36.3L512 54.7h-24.6l-28.5 92.1h-.5l-28.5-92.1h-25.3l41 113.5-2.2 6.9c-3.7 11.7-9.7 16.2-20.4 16.2-1.9 0-5.6-.2-7.1-.4v18.7c1.4.4 7.4.6 9.2.6%22/%3E%3C/svg%3E\", ar: 2.436, mono: true },\n \"banorte\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 id=%22layer%22 x=%220%22 y=%220%22 version=%221.1%22 viewBox=%220 0 1920 235.2%22%3E%3Cstyle id=%22style2%22 type=%22text/css%22%3E.st0%7Bfill:%23ec1c2d%7D%3C/style%3E%3Cg id=%22g24%22 transform=%22matrix(3.2 0 0 3.2 -65.6 -911.04)%22%3E%3Cpath id=%22path4%22 d=%22M206.2 325.5h.7c3.9 0 7-3.1 7-7v-6.1c0-3.6-.4-5.3-1.8-7.2-2-2.5-5.5-3.6-8.9-3.6h-42.4v49.3h38.7c4.4 0 9.6-.6 12.3-3.5 2.5-2.7 2.6-4.8 2.6-11.4v-2.2a8.2 8.2 0 0 0-8.2-8.3m-33.1-14.9h25.6c1.3 0 4 .5 4 2.6v5.4c0 1.7-2.5 2.4-3.5 2.4h-26.1zm29.8 27.8c0 1.5-1.2 2.7-2.7 2.7h-27.1v-11H200c1.6 0 2.9 1.3 2.9 2.9z%22 class=%22st0%22/%3E%3Cpath id=%22path6%22 d=%22M274.3 351h14L260 301.7h-11.5L220.7 351h12.5l5.8-10.7h29.6zm-30.1-20.3 9.7-17.8 9.5 17.8z%22 class=%22st0%22/%3E%3Cpath id=%22polygon8%22 d=%22M304.1 301.7h-8.4V351h11.2v-24.8l-.3-7.6 38.3 32.4h8.6v-49.3h-11.2v24.8l.3 7.6z%22 class=%22st0%22/%3E%3Cpath id=%22path10%22 d=%22M416.6 351h-38.1c-3.4 0-7.1-.8-9.1-3.2-1.7-1.9-2-5.2-2-7.9v-27.1c0-3.1.4-6.4 2.4-8.4s5.6-2.7 8.7-2.7h38.1c3.4 0 7.1.7 9.1 3.1 1.6 1.9 2 5.3 2 8v27.1c0 2.8-.3 6-2 7.9-2 2.4-5.7 3.2-9.1 3.2m-37-39.4v29.5h35.9v-29.5z%22 class=%22st0%22/%3E%3Cpath id=%22path12%22 d=%22M483.9 351h17.3l-22.1-18.2h6.8c5.2 0 9.5-4.2 9.5-9.5v-12.2c0-5.2-4.2-9.5-9.5-9.5H442V351h12.2v-18.2h9.7zm-29.7-39.9H481c1.3 0 2.3 1 2.3 2.3v7.7c0 1.3-1 2.3-2.3 2.3h-26.8z%22 class=%22st0%22/%3E%3Cpath id=%22polygon14%22 d=%22M504.4 301.7v9.8h22.1V351h12.2v-39.5h22v-9.8h-34.2z%22 class=%22st0%22/%3E%3Cpath id=%22polygon16%22 d=%22M605.9 320.5h-23.1v-9.3H620v-9.5h-49.4V351h49.9v-10h-37.7v-11h23.1z%22 class=%22st0%22/%3E%3Cpath id=%22path18%22 d=%22M84.5 284.7c-28.5 0-51.6 7.5-51.6 16.8 0 7.8 16.1 14.3 38 16.2l9-27.7 1.6 28.2h3.1c28.5 0 51.6-7.5 51.6-16.8-.1-9.1-23.2-16.7-51.7-16.7%22 class=%22st0%22/%3E%3Cpath id=%22path20%22 d=%22M70.6 318.7c-27.8.3-50.1 9.1-50.1 20 0 9.2 15.8 16.9 37.4 19.3z%22 class=%22st0%22/%3E%3Cpath id=%22path22%22 d=%22m81.4 319 2.2 39.2c22.9-2 39.9-10 39.9-19.5.1-9.8-18.1-18-42.1-19.7%22 class=%22st0%22/%3E%3C/g%3E%3C/svg%3E\", ar: 8.163, mono: false },\n \"bbva\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 id=%22Capa_1%22 x=%220%22 y=%220%22 version=%221.1%22 viewBox=%220 0 600 179.8%22%3E%3Cstyle id=%22style1%22 type=%22text/css%22%3E.st0%7Bfill:%23004481%7D%3C/style%3E%3Cg id=%22g4%22%3E%3Cpath id=%22path1%22 d=%22m432.2 24.4-51.6 98.2c-1.1 2.1-4.3 2.1-5.4 0l-51.6-98.2c-.5-1-1.5-1.6-2.6-1.6h-25c-1.7 0-2.8 1.8-2 3.3l81.3 152.2c1.1 2.1 4.1 2.1 5.3 0l81.3-152.2c.8-1.5-.3-3.3-2-3.3h-25c-1.2 0-2.2.6-2.7 1.6%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3Cpath id=%22path2%22 d=%22m461.5 155.5 51.6-98.2c1.1-2.1 4.3-2.1 5.4 0l51.6 98.2c.5 1 1.5 1.6 2.6 1.6h25c1.7 0 2.8-1.8 2-3.3L518.4 1.6c-1.1-2.1-4.1-2.1-5.3 0l-81.3 152.2c-.8 1.5.3 3.3 2 3.3h25c1.1-.1 2.2-.7 2.7-1.6%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3Cpath id=%22path3%22 d=%22M108.8 95.2c10.8-5.4 17.5-17.1 17.5-31.4 0-24.5-19.1-41.1-46-41.1H3c-1.7 0-3 1.3-3 3v151.1c0 1.7 1.3 3 3 3h74c37 0 56.5-15.9 56.5-47.1 0-30.4-24.7-37.5-24.7-37.5M29 45.5h45.9c16.9 0 25.5 7.2 25.5 20.6s-8.6 20.6-25.5 20.6H29a3 3 0 0 1-3-3V48.5c0-1.7 1.3-3 3-3M75.5 157H29c-1.7 0-3-1.3-3-3v-41.7a3 3 0 0 1 3-3h46.5c22.2 0 32.1 6.3 32.1 23.8-.1 17.7-9.7 23.9-32.1 23.9%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3Cpath id=%22path4%22 d=%22M267.5 95.2c10.8-5.4 17.5-17.1 17.5-31.4 0-24.5-19.1-41.1-46-41.1h-77.4c-1.7 0-3 1.3-3 3v151.1c0 1.7 1.3 3 3 3h74c37 0 56.5-15.9 56.5-47.1.1-30.4-24.6-37.5-24.6-37.5m-79.8-49.7h45.9c16.9 0 25.5 7.2 25.5 20.6s-8.6 20.6-25.5 20.6h-45.9c-1.7 0-3-1.3-3-3V48.5c0-1.7 1.3-3 3-3M234.1 157h-46.5a3 3 0 0 1-3-3v-41.7a3 3 0 0 1 3-3h46.5c22.2 0 32.1 6.3 32.1 23.8 0 17.7-9.7 23.9-32.1 23.9%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3C/g%3E%3C/svg%3E\", ar: 3.337, mono: false },\n \"chedraui\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1920 148.64%22%3E%3Cpath d=%22m1277.47 263.16 90.62-132.68h45.73l88.95 132.68h20.56l-104.05-147.8h-55.8l-103.21 147.8zm273.26-46.91c0 25.19 19.3 47.02 44.89 47.02h135.51c23.91 0 46.15-16.8 46.15-41.57V115.47h-19.3v105.4c0 13.85-10.07 26.03-24.33 26.03h-138.03c-14.69 0-26.01-12.6-26.01-27.3V115.47h-18.88zm-314.75.94c0-12.6-3.78-16.38-6.72-17.64l-2.94-1.26 3.78-2.51c6.71-4.63 5.88-15.96 5.88-17.22v-23.94c0-21.41-17.63-39.04-39.02-39.04h-184.18v147.37l18.88-.42V131.11h160.68c13.43 0 25.17 10.5 25.17 24.35v23.94c0 6.72-3.35 15.12-7.13 17.21l-2.93 1.68 2.51 2.1c3.78 3.36 6.72 7.14 6.72 16.8v45.34h19.3z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22m3013.05 1.34 1.6 557.02h662.8c84.04 0 166.5-57.15 166.5-146V147.31c0-90.44-84.04-145.98-169.67-145.98zm66.53 59.28h594.61c50.74 0 101.49 33.3 101.49 87.27v255.5c0 55.54-47.57 96.8-101.49 96.8h-594.61z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.727499%22 transform=%22scale(.26458)%22/%3E%3Cpath d=%22M693.45 263.14v-15.96H492.9V131.29h200.55v-15.53H476.13v147.38zM-36.9 221.5c.42-7.56 0-66.76 0-68.02 1.26-13.44 5.46-22.67 25.6-22.67h172.85v-15.54H-10.88c-22.24 0-43.22 15.54-43.22 38.63v67.6c0 22.68 18.88 41.15 41.54 41.15h174.11V247.1H-12.56c-14.27-.42-24.34-12.17-24.34-25.6m1509.88 41.66h20.98l-28.53-40.3H1314.8l-27.69 39.88h21.82l14.26-24.35h133z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22M502.4 184.69h191.32v-17.64H518.77v-12.18h174.95v-15.11H502.4zm-.83 9.23v44.09l192.15.42v-16.38l-174.95.42v-13.85h174.95v-14.7zm-528.82 27.16c.42 8.82 5.88 17.22 14.27 17.64h174.53v-16.38h-173.7v-67.6h173.7v-15.12H-12.56c-9.23 0-14.69 5.46-14.69 15.12zm1758.38 1.46h-136.77V115.47H1578v105.81c0 9.24 6.7 17.64 16.36 17.64h136.77c9.65 0 18.04-7.56 18.04-17.22V115.47h-18.04zm-691.74 40.27h19.3v-45.35H1190v45.77h19.73v-46.19c0-10.49-9.66-15.1-19.73-15.1h-150.6z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22M4133.8 94.11v207.9h570.83c36.48 0 71.38-23.81 71.38-61.9v-76.17c0-38.08-30.13-69.83-68.2-69.83zm72.35 56.14h497.9l-1.57 93.65h-496.33zM3112.58 93.93v374.52h562.92c34.88 0 68.18-25.38 68.18-61.87V147.89c0-34.92-34.89-53.96-66.6-53.96zm68.64 56.55h493.14V406h-493.14z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.727499%22 transform=%22scale(.26458)%22/%3E%3Cpath d=%22M237.17 185.27h165.3v-69.7l-15.95.42v50.8h-133.4V116h-15.95zm0 8.4v69.7h15.94v-55h133.41v55.42l15.95-.42v-69.7z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22M5391.07 92.87 5200.8 370.59h520.1L5535.37 92.87zm26.25 55.1h90.4l98.3 153.95h-282.24z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.727499%22 transform=%22scale(.26458)%22/%3E%3Cpath d=%22M1848.28 115.57v147.38h17.62V115.57zm-10.91 147.38v-147.8h-18.46l.42 147.8zm-1607.76.84v-147.8h-15.94v147.38zm182.51-148.22v146.96h14.68V115.57z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3C/svg%3E\", ar: 12.917, mono: false },\n \"circlek\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220.86 0.86 274.53 274.52%22%3E%3Cpath fill=%22%23ec2024%22 d=%22M1 1h274.25v274.25H1z%22/%3E%3Cpath fill=%22%23fff%22 d=%22M203.1 93.69c9.63-12.92 6.67-29.84-5.67-39.08-12.39-9.21-29.43-7.24-39.1 5.71l-32.81 44.04V76c0-16.15-12.48-27.93-27.9-27.93-15.44 0-27.91 11.78-27.91 27.93v124.27c0 16.02 12.47 27.8 27.9 27.8s27.9-11.42 27.9-27.8l.05-37.02 66.29 74.9a113 113 0 0 1-53.7 13.48c-62.7 0-113.56-50.83-113.56-113.56 0-62.7 50.86-113.53 113.56-113.53s113.56 50.84 113.56 113.53c0 23-6.85 44.38-18.6 62.26l-59.58-67.04z%22/%3E%3Cpath fill=%22none%22 stroke=%22%23004b8d%22 stroke-width=%223.8%22 d=%22M203.1 93.69c9.63-12.92 6.67-29.84-5.67-39.08-12.39-9.21-29.43-7.24-39.1 5.71l-32.81 44.04V76c0-16.15-12.48-27.93-27.9-27.93-15.44 0-27.91 11.78-27.91 27.93v124.27c0 16.02 12.47 27.8 27.9 27.8s27.9-11.42 27.9-27.8l.05-37.02 66.29 74.9a113 113 0 0 1-53.7 13.48c-62.7 0-113.56-50.83-113.56-113.56 0-62.7 50.86-113.53 113.56-113.53s113.56 50.84 113.56 113.53c0 23-6.85 44.38-18.6 62.26l-59.58-67.04z%22/%3E%3C/svg%3E\", ar: 1, mono: false },\n \"citibanamex\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.11 0.11 43.59 6.6%22%3E%3Cpath d=%22m33.87 146.96-.03-.06-.06-.02h-.15v.16h.15l.06-.01q.03-.03.03-.07m.1 0q0 .07-.04.11l-.09.06.12.23h-.11l-.11-.22h-.11v.22h-.1v-.57h.25l.07.01.06.03.04.05zm.2.12-.04-.17a.4.4 0 0 0-.23-.23l-.17-.03a.4.4 0 0 0-.31.12.4.4 0 0 0-.13.31.4.4 0 0 0 .13.31.4.4 0 0 0 .3.13.4.4 0 0 0 .32-.13.4.4 0 0 0 .12-.3m.08 0a.5.5 0 0 1-.15.37.5.5 0 0 1-.37.15.5.5 0 0 1-.37-.15.5.5 0 0 1-.15-.37.5.5 0 0 1 .15-.37.5.5 0 0 1 .37-.15.5.5 0 0 1 .37.15q.06.07.1.17t.05.2m-35.64 4.25v-3.64h.75v3.64zm-.62-.79.05-.02-.18.7h-.01a1 1 0 0 1-.66.17c-.5 0-.83-.4-.83-.95v-2.06h-.63v-.68h.63v-.74l.73-.4v1.14h.76v.68h-.76v1.94q0 .41.35.4.25 0 .55-.18m-3.66.8v-3.65h.74v3.64zm-2.88-1.82c0 .68.48 1.17 1.13 1.17q.48 0 .89-.4l.01-.03.43.51-.02.02q-.52.61-1.29.61-.8 0-1.33-.49a1.8 1.8 0 0 1-.57-1.39q0-.87.57-1.4c.34-.31.81-.48 1.33-.48q.77 0 1.3.61v.02l-.42.5-.01-.01a1.2 1.2 0 0 0-.89-.41c-.65 0-1.13.5-1.13 1.17m35.36 1.82h-.85l-.34-.64c-.15-.26-.31-.6-.38-.73l-.4.74-.35.63h-.8l1.1-1.89-1.03-1.75h.83l.28.51c.14.26.32.59.38.73l.39-.74.27-.5h.83l-1.05 1.75zm-5.64-2.16h1.8c-.04-.5-.33-.91-.92-.91-.48 0-.82.33-.88.91m2.51.26-.02.33h-2.5c.07.7.52.99.96.99.3 0 .63-.11.87-.3l.4.47q-.48.47-1.31.48c-.85 0-1.64-.68-1.64-1.89 0-1.23.72-1.9 1.66-1.9 1.03 0 1.58.84 1.58 1.82m-3.72-.22v2.12h-.74v-2.06c0-.74-.22-1-.7-1-.47 0-.68.34-.68.93v2.13h-.74v-2.06c0-.74-.22-1-.69-1s-.72.34-.72.93v2.13h-.73v-3.64h.73v.34c.18-.26.52-.42.89-.42.5 0 .8.19 1 .54.26-.33.54-.54 1.11-.54.84 0 1.27.38 1.27 1.6m-6.4 1.08v-.52q-.29-.15-.86-.16c-.46 0-.77.21-.77.54 0 .36.25.6.72.6.38 0 .74-.23.9-.46m-.7-2.68c.8 0 1.43.4 1.43 1.22v2.5h-.73v-.36a1.5 1.5 0 0 1-1.02.43c-.6 0-1.3-.33-1.3-1.22 0-.82.66-1.18 1.48-1.18q.53 0 .84.14v-.27c0-.4-.3-.62-.74-.62q-.53 0-.95.23l-.28-.54a2.3 2.3 0 0 1 1.26-.33m-6.44 2.68v-.52q-.29-.15-.86-.16c-.46 0-.78.21-.78.54 0 .36.26.6.73.6.38 0 .74-.23.9-.46m-.7-2.68c.8 0 1.43.4 1.43 1.22v2.5h-.73v-.36a1.5 1.5 0 0 1-1.03.43c-.59 0-1.3-.33-1.3-1.22 0-.82.67-1.18 1.49-1.18q.52 0 .84.14v-.27c0-.4-.3-.62-.74-.62-.38 0-.67.07-.95.23l-.28-.54a2.3 2.3 0 0 1 1.26-.33m5.08 1.63v2.09h-.73v-2.06c0-.74-.28-1-.75-1-.48 0-.77.34-.77.93v2.13h-.7v-3.64h.74v.34c.18-.26.58-.42.95-.42.84 0 1.3.47 1.3 1.63m-8.61 1.5c.5 0 .87-.38.87-1.15 0-.92-.38-1.32-.9-1.32-.34 0-.7.23-.88.46v1.54c.16.21.55.47.9.47m.1-3.13c.78 0 1.48.57 1.48 1.96 0 1.24-.76 1.83-1.52 1.83-.36 0-.76-.2-.96-.41v.34H.55v-4.38l.74-.4v1.48c.26-.24.62-.42 1-.42%22 style=%22fill:%2312417d;fill-opacity:1;stroke-width:.26458332%22 transform=%22translate(9.43 -145.43)%22/%3E%3Cpath d=%22M-.15 147.15h-.86a3 3 0 0 0-2.14-.93c-.8 0-1.55.32-2.14.93h-.85a3.7 3.7 0 0 1 3-1.6c1.22 0 2.37.66 2.99 1.6m32.4 1.68.6.18c.28.09.36.3.36.52 0 .43-.3 1.07-.61 1.4-.18.2-.32.28-.5.28q-.15 0-.36-.07c-.21-.06-.47-.17-.62-.22.01.2.02.3.02.62 0 .53-.6.57-.93.57-.32 0-.71-.06-1.02-.2-.34-.17-.45-.33-.45-.88l.02-.54q-.29.12-.59.21c-.5.17-.73-.38-.83-.7a3 3 0 0 1-.14-.8c0-.55.18-.74.6-.87.2-.07.48-.14.64-.18l-.39-.5a.5.5 0 0 1-.1-.29c0-.3.3-.55.52-.7.25-.18.74-.44 1.17-.44.23 0 .39.1.58.35.13.17.29.4.37.54q.16-.25.36-.51a.5.5 0 0 1 .4-.2c.25 0 .51.15.69.28.24.18.52.46.68.75q.14.23.14.4 0 .23-.2.48c-.14.18-.31.4-.42.52m-.7-.12c.13 0 .37.04.6.1a1.8 1.8 0 0 0-.72-1.2.2.2 0 0 0-.14-.04.15.15 0 0 0-.14.14q0 .12.12.26c.1.14.27.34.27.52 0 .12-.07.2-.1.23zm.24 1.53c.16-.24.26-.47.26-.57s-.1-.14-.16-.14q-.12 0-.25.2c-.13.18-.33.5-.6.41l-.07-.04.08.25q.05.19.06.46c.16-.08.45-.26.68-.57m-.9-.23-.03-.2q0-.2.1-.49c.1-.33.23-.49.36-.56q-.26.02-.66-.27c-.29-.2-.4-.37-.43-.52q-.06.25-.46.54c-.3.2-.48.26-.63.24q.22.14.37.6.09.25.09.42 0 .14-.05.23.2-.16.7-.16.5.01.64.17m-.75.98q.21-.01.2-.15-.01-.16-.28-.22c-.22-.07-.59-.16-.59-.44l.01-.08-.2.15q-.17.1-.42.2c.17.18.62.54 1.28.54m-1.42-1.57c0-.23-.03-.6.24-.69l.06-.01q-.16-.09-.52-.5c-.11.24-.32.77-.11 1.38q.08.18.2.14.16-.06.13-.32m.45-1.9q-.11.07-.1.15c0 .05.03.15.16.15.19 0 .44-.16.7-.16.23 0 .3.17.3.2q0-.18.3-.66l-.28-.02c-.3 0-.7.06-1.08.34%22 style=%22fill:%23e30b13;fill-opacity:1;stroke-width:.26458332%22 transform=%22translate(9.43 -145.43)%22/%3E%3C/svg%3E\", ar: 6.605, mono: false },\n \"clip\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 fill=%22none%22 viewBox=%220 0 64 64%22%3E%3Cg fill-rule=%22evenodd%22 clip-path=%22url(%23a)%22 clip-rule=%22evenodd%22%3E%3Cpath fill=%22%23FC4C02%22 d=%22M63.97 10.8A10.82 10.82 0 0 0 48.98.85L9.57 17.6A15.7 15.7 0 0 0 0 32.01v21.17a10.82 10.82 0 0 0 15.08 9.94l39.25-16.66a15.7 15.7 0 0 0 9.64-14.45z%22/%3E%3Cpath fill=%22%23fff%22 d=%22M27.71 40.51c-.46 0-.83-.41-.83-.92V20.12c0-.5.37-.92.83-.92s.83.41.83.92V39.6c0 .5-.37.92-.83.92m7.23-.88V24.42c0-.51-.37-.93-.83-.93s-.83.42-.83.93v15.22c0 .52.37.94.83.94s.83-.42.83-.94m0-19.58V20a.8.8 0 0 0-.83-.81.8.8 0 0 0-.83.8v.06c0 .44.37.8.83.8s.83-.36.83-.8M21.93 38.46a.93.93 0 0 0 0-1.32.94.94 0 0 0-1.33 0 7 7 0 0 1-9.84 0 6.87 6.87 0 0 1 0-9.76 7 7 0 0 1 4.92-2.02c1.86 0 3.6.71 4.92 2.02.37.36.96.36 1.33 0a.93.93 0 0 0 0-1.32 8.8 8.8 0 0 0-6.25-2.57 8.8 8.8 0 0 0-6.25 2.57 8.73 8.73 0 0 0 0 12.4 8.8 8.8 0 0 0 6.25 2.56c2.27 0 4.53-.85 6.25-2.56m19.62 5.86V32.24a6.9 6.9 0 0 1 13.8 0 6.9 6.9 0 0 1-6.9 6.88c-2.2 0-3.68-.83-3.7-.84a.93.93 0 0 0-.94 1.61c.08.05 1.91 1.1 4.64 1.1a8.77 8.77 0 0 0 8.77-8.75 8.77 8.77 0 0 0-17.54 0v12.08a.93.93 0 0 0 1.87 0%22/%3E%3Cpath fill=%22%23FC4C02%22 d=%22M63.8 50.5a2.69 2.69 0 1 1-5.37 0 2.69 2.69 0 0 1 5.38 0m-.42 0c0-1.27-1.01-2.3-2.26-2.3a2.3 2.3 0 0 0-2.26 2.3 2.3 2.3 0 0 0 2.26 2.29 2.3 2.3 0 0 0 2.26-2.3m-1.13 1.47h-.48l-.67-1.2h-.45v1.2h-.4v-2.95h1a.9.9 0 0 1 .92.88c0 .43-.26.7-.63.81zm-.5-2.07c0-.3-.22-.52-.55-.52h-.55v1.03h.55c.33 0 .56-.21.56-.5%22/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id=%22a%22%3E%3Cpath fill=%22%23fff%22 d=%22M0 0h64v64H0z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\", ar: 1, mono: false },\n \"dhl\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 overflow=%22visible%22 version=%221.0%22 viewBox=%220 0 175.75 38.79%22%3E%3Cpath fill=%22%23fecc00%22 d=%22M0 38.79V0h175.75v38.79z%22/%3E%3Cpath fill=%22%23d50029%22 d=%22m56.67 16.2-2.84 3.91c-.4.54-1.11 1.51 1.26 1.51h12.52l3.7-5.04c2.3-3.12.2-9.61-8.02-9.61H30.91l-5.62 7.62h30.6c1.55 0 1.53.6.78 1.62m-9.2 7.3c-2.38 0-1.66-.97-1.26-1.51l2.85-3.88c.76-1.03.78-1.62-.77-1.62h-14L23.03 31.82h27.5c9.08 0 14.14-6.18 15.7-8.32zm17.9 8.32h16.12l6.12-8.32H71.48zm41.62-24.86-6.2 8.41h-7.2l6.2-8.4H83.64L72.87 21.62h39.47L123.1 6.97Zm-18.3 24.86h16.13l6.12-8.32H94.81zM0 26.78v1.77h22.47l1.3-1.77zm26.18-3.28H0v1.77h24.88ZM0 31.82h20.06l1.3-1.76H0Zm152.07-3.27h23.68v-1.77h-22.38zm-2.4 3.27h26.08v-1.76h-24.8zm6.11-8.32-1.3 1.77h21.27V23.5Zm-21.12-1.88 10.79-14.65h-17.08l-10.8 14.65zm-18.47 1.88-1.76 2.4c-2.02 2.73-.23 5.92 6.38 5.92h25.9l6.12-8.31z%22/%3E%3C/svg%3E\", ar: 4.531, mono: false },\n \"estafeta\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220 0 6834.46 1080%22%3E%3Cpath fill=%22%23c01818%22 d=%22m1423.74 511.84 213.92 182.45c40.33 38.22 65.32 92.83 65.32 153.05 0 115.32-92.33 208.87-206.48 208.87l-146.33.5H901.39l45.79-200.35 337.66.58c36.58 0 66.23-29.89 66.23-66.78a66.8 66.8 0 0 0-28.62-55.1L1133.9 596.1c-50.18-38.07-82.65-99.06-82.65-167.4 0-115.69 92.44-209.17 206.4-209.17l488.02-.35-40 176.47h-236.61c-36.46 0-66.08 29.83-66.08 66.66 0 19.55 8.06 37.11 21.16 49.35zm804.66 370.53h.86c-36.52 0-66.66-29.82-66.07-66.84 0-7.8 1.86-13.82 3.66-19.73l90.44-401.39h150.8l40.02-175.29h-150.76L2347.96 0h-289.03l-50.28 219.15h-157.79l-40.33 175.23h158.23l-116.6 510.27a122 122 0 0 0-2.72 27.2c0 68.98 55.44 125.38 124.02 125.38l249.14-1.08 40.18-174.61c.09.06-21.62.83-34.39.83m3183.11 0h.64c-36.52 0-66.5-29.82-65.88-66.84 0-7.8 1.7-13.82 3.37-19.73l90.64-401.39H5591l39.99-175.29h-150.51L5530.5 0h-288.35l-50.77 219.15h-157.42l-40.33 175.23h158.25L5035.2 904.65a116 116 0 0 0-3.04 27.2c.16 68.98 55.48 125.38 123.94 125.38h.21l249.45-1.08 39.9-174.61c-.03.06-21.22.83-34.17.83m-2068.96 173.41c18.93-8.06 32.06-24.6 36.95-45.2l1.61-6.69-.83 1.55 140.07-611.37h-115.6L3444.38 219h115.75l12.89-56.97 2.91-11.55C3601.4 64 3680.47.93 3774.15.93l.43-.59h274.26l-32 140.66-97.51-.28c-31.35 0-57 22-64.3 51.24v-1.12l-6.73 28.13h150.64l-39.47 175.75H3808.4l-124.58 548.3c-13.2 64.53-69.5 113-137.35 113zM2797.6 860.94l-1.3.62a104.3 104.3 0 0 1-58.23 17.5c-59.38 0-107.46-48.5-107.46-108.63 0-60.06 48.08-108.88 107.46-108.88l203.66.74c-17.12 85.59-70.93 157.8-144.13 198.65m506.74-533.31c0-60.06-48.23-108.5-107.43-108.5h-643.46l-39.3 174.1h444.25c18.52 0 33.55 14.72 33.55 33.21 0 2.54-.16 4.93-.78 7.38h-.4l-17.69 76.94h-311.43c-159.58 0-289.03 131.21-289.03 292.78 0 2.39 0 5.02.15 7.47 0 0 .1 8.3.28 13.66 4.4 150.72 139.7 255.24 287.08 255.24 18.53 0 33.55-1.37 54.43-4.96 59.22-10.6 103.02-27.5 143.3-59.16 19.54 24.72 50.2 39.99 83.84 39.99h271.94c-29.61-19.27-49-53.6-49-91.88 0-9.17.96-18.09 2.97-26.76l134.03-586.46v.83c1.74-7.65 2.7-15.7 2.7-23.88M656.28 434.06l-18.09 77.9H385.62l14.15-59.44c4.18-32.58 31.38-57.64 64.56-58.26l159.58.19c18.25 0 32.9 14.86 32.9 33.54 0 2.08 0 4-.53 6.07m205.65-214.88H278.76l-2.15-1.02c-65.57 0-121.02 45.7-136.07 107.67L2.14 925.31C.5 932.77 0 939.83 0 947.73c0 60.13 48.26 108.79 107.61 108.79h697.64l45.6-201.06H389.8l.93.34c-36.68 0-66.41-29.92-66.41-66.82 0-5.7 1.08-11.27 2.2-16.5l-.35.58 22.43-103h545.27l73.9-322.23a132 132 0 0 0 1.55-20.1c.03-59.85-47.95-108.55-107.39-108.55m5118.52 641.85-1.11.53a105.6 105.6 0 0 1-58.54 17.5c-59.26 0-107.03-48.5-107.03-108.63 0-60.16 47.8-108.88 107.03-108.88l203.78.62a294.3 294.3 0 0 1-144.13 198.86M6380.05 219h-643.78l-39.43 174.27h444.6a33.24 33.24 0 0 1 33.45 33.2c0 2.6-.19 4.93-.71 7.5l-.5-.15-17.35 76.94h-311.55c-159.5 0-289 131.3-289 292.78v7.53s.3 8.33.3 13.69c4.31 150.63 139.8 255.24 286.9 255.24 18.62 0 33.7-1.46 54.61-5.05 59.32-10.6 102.75-27.5 143.42-59.16 19.61 24.8 50.21 40.23 83.76 40.23h272.03c-29.8-19.51-49.31-53.83-49.31-92.12 0-9.07 1.08-18.09 3.25-26.76l133.9-586.43v.77c1.71-7.65 2.8-15.64 2.8-23.88-.1-60.16-48.33-108.6-107.4-108.6M4588 434.68l-17.8 78.03h-252.62l14.2-59.44c3.83-32.43 31.25-57.83 64.33-58.36l159.52.1c18.25 0 33.05 15.08 33.05 33.54 0 2.1-.18 4.15-.68 6.13m205.93-215.06h-583.27l-2.05-.93c-66 0-121.05 45.78-136.45 107.55L3933.9 926.02c-1.7 7.56-2.05 14.43-2.05 22.24 0 60.22 48.14 108.91 107.33 108.91h697.8l45.78-201.19h-461.2l.87.34c-36.68 0-66.08-29.8-66.08-66.66 0-5.85.62-11.4 2.02-16.66l-.78.71 22.86-103.33h545.46l73.47-322.34a100 100 0 0 0 1.92-19.67c0-60.06-47.98-108.75-107.36-108.75m1899.11 131.21h20.88l34.13 56.93h24.82l-37.36-58.6c20.23-2.14 34.6-12.17 34.6-36.18 0-27.17-16.05-38.32-48.5-38.32h-50.19v133.1h21.59v-56.93zm0-18.58v-38.91h26.52c13.07 0 28.9 1.95 28.9 17.94 0 19.36-14.62 20.97-30.73 20.97zm141.4 6.69c0-72.2-54.51-120.25-117.36-120.25-63.94 0-118.24 48.01-118.24 120.25 0 68.45 49.1 120.18 118.24 120.18 62.85 0 117.37-47.82 117.37-120.18m-25.65 0c0 58.76-40.67 99.21-91.72 99.21-57.34 0-92.68-44.6-92.68-99.21 0-58.33 40.33-99.22 92.68-99.22 51.05-.03 91.72 40.89 91.72 99.22%22/%3E%3C/svg%3E\", ar: 6.328, mono: false },\n \"farmaciasyza\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 141.31 65.39%22%3E%3Cg data-name=%22Grupo 3266%22%3E%3Cpath fill=%22%23009%22 d=%22M90.49 39.75a8 8 0 0 1-6.43 2.7c-4.17 0-6.01-2.16-6.4-4.51s-.63-8.66 7.77-8.66a13 13 0 0 1 5.05.83ZM69.71 30.1c-.95 2.13-2.29 7.57-.56 11.74 1.88 4.51 5.66 7.71 12.51 7.71s10.07-3.46 10.07-3.46c3.41 5.52 11.48 2.79 11.48 2.79l-.06-5.82h-1.92c-1.53 0-1.83-1.67-1.83-3.06V24.57c-3.88-1.88-13.5-2.54-18.1-1.78 0 0-8.81 1.09-11.59 7.32%22 data-name=%22Trazado 25280%22/%3E%3Cpath fill=%22%23009%22 d=%22M51.02 41.85 60.29 33a42 42 0 0 0 4.95-5.26l-.13-4.96H37.3v7.34h13.87C45.23 35.58 36.6 43.97 36.6 43.97v4.91h29.15l-.1-7.03Z%22 data-name=%22Trazado 25281%22/%3E%3Cpath fill=%22%233c3%22 d=%22M25.42 58.35h4v1.44h-2.26v1.43h1.48v1.34h-1.48v2.65H25.4Z%22 data-name=%22Trazado 25282%22/%3E%3Cpath fill=%22%233c3%22 d=%22M34.93 62.62h1.5l-.52-1.77-.13-.52h-.19l-.11.52Zm-.48-4.28h2.48L39 65.21h-1.8l-.34-1.15h-2.35l-.35 1.15h-1.78Z%22 data-name=%22Trazado 25283%22/%3E%3Cpath fill=%22%233c3%22 d=%22M45.98 59.97a.7.7 0 0 0-.54-.18h-.84v1.72h.84a.8.8 0 0 0 .54-.2 1 1 0 0 0 .2-.68 1 1 0 0 0-.2-.66m.74 2.66 1.6 2.58H46.3l-1.44-2.35h-.27v2.35h-1.74v-6.86h2.64a2.5 2.5 0 0 1 1.71.51 2.4 2.4 0 0 1 .71 1.8 2.2 2.2 0 0 1-.72 1.7 2 2 0 0 1-.47.28%22 data-name=%22Trazado 25284%22/%3E%3Cpath fill=%22%233c3%22 d=%22M56.18 64.34h-.86L54.2 61.9a5 5 0 0 1-.21-.63h-.14s.06.74.06 1.02v2.92h-1.75v-6.86h1.94l1.6 3.62h.1l1.6-3.62h1.94v6.86h-1.75V62.3c0-.29.06-1.02.06-1.02h-.14a5 5 0 0 1-.22.62Z%22 data-name=%22Trazado 25285%22/%3E%3Cpath fill=%22%233c3%22 d=%22M65.75 62.62h1.5l-.54-1.77-.12-.52h-.2l-.1.52Zm-.49-4.28h2.48l2.07 6.87h-1.79l-.34-1.15h-2.36l-.34 1.15h-1.79Z%22 data-name=%22Trazado 25286%22/%3E%3Cpath fill=%22%233c3%22 d=%22M78.25 64.9a4 4 0 0 1-2 .46 3.5 3.5 0 0 1-2.04-.61c-.54-.45-.95-1.18-.95-2.98 0-1.7.39-2.4.9-2.87a3 3 0 0 1 2.1-.72 5 5 0 0 1 1.77.33l-.3 1.36a4 4 0 0 0-1.2-.2 1.6 1.6 0 0 0-1.08.36c-.23.23-.43.68-.43 1.75 0 1.12.2 1.55.46 1.78a1.6 1.6 0 0 0 1.05.31 5 5 0 0 0 1.41-.27Z%22 data-name=%22Trazado 25287%22/%3E%3Cpath fill=%22%233c3%22 d=%22M82.14 58.35h1.75v6.85h-1.75z%22 data-name=%22Rect%C3%A1ngulo 1541%22/%3E%3Cpath fill=%22%233c3%22 d=%22M90.28 62.62h1.5l-.53-1.77-.12-.52h-.2l-.11.52Zm-.48-4.28h2.48l2.07 6.87h-1.79l-.34-1.15h-2.36l-.35 1.15h-1.78Z%22 data-name=%22Trazado 25288%22/%3E%3Cpath fill=%22%233c3%22 d=%22M100.66 65.36a6 6 0 0 1-2.54-.58l.31-1.4a5 5 0 0 0 2.04.5c.5 0 .86-.23.86-.7q.01-.51-.6-.66l-.74-.18c-1.11-.25-1.95-.69-1.95-2.02 0-1.28.86-2.13 2.5-2.13a5 5 0 0 1 2.08.48l-.48 1.39a4 4 0 0 0-1.53-.39c-.5 0-.78.26-.78.62a.5.5 0 0 0 .43.52l.82.2c1.2.28 2.03.76 2.03 2.08a2.13 2.13 0 0 1-2.46 2.27%22 data-name=%22Trazado 25289%22/%3E%3Cpath fill=%22%23009%22 d=%22m24.38 22.74-7.3 17.62-6.78-17.62H0l11.34 27.13a9 9 0 0 1-1.21.79 8 8 0 0 1-2.48.84 18 18 0 0 1-2.2.24q-1.06.04-2.07 0l-1.4 6.47q2.07.15 5.22.15a20 20 0 0 0 8.3-1.54 14 14 0 0 0 5.2-3.98 13 13 0 0 0 .85-1.1 9 9 0 0 0 .67-1.15l12.46-27.85Z%22 data-name=%22Trazado 25290%22/%3E%3Cpath fill=%22%233c3%22 d=%22M118.55 22.76v5.15a5.87 5.87 0 0 0 11.74 0v-5.15h5.15a5.87 5.87 0 0 0 0-11.74h-5.15V5.87a5.87 5.87 0 0 0-11.74 0v5.15h-5.15a5.87 5.87 0 0 0 0 11.74Z%22 data-name=%22Trazado 25291%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 12.63a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25292%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 12.63a.4.4 0 1 1 .4.41.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25293%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 12.63a.29.29 0 1 1 .3.29.3.3 0 0 1-.3-.3%22 data-name=%22Trazado 25294%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 12.63a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25295%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 14.74a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25296%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 16.86a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25297%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 18.97a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25298%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 21.09a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25299%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 13.69a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25300%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 13.69a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25301%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 13.69a.2.2 0 1 1 .2.2.2.2 0 0 1-.2-.2%22 data-name=%22Trazado 25302%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 14.74a.53.53 0 1 1 .54.54.53.53 0 0 1-.53-.54%22 data-name=%22Trazado 25303%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 14.74a.4.4 0 1 1 .4.41.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25304%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 14.74a.29.29 0 1 1 .09.2.3.3 0 0 1-.09-.2%22 data-name=%22Trazado 25305%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 15.8a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25306%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 15.8a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25307%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 15.8a.2.2 0 1 1 .06.14.2.2 0 0 1-.06-.14%22 data-name=%22Trazado 25308%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 16.86a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25309%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 16.86a.4.4 0 1 1 .4.4.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25310%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 16.86a.29.29 0 1 1 .3.29.3.3 0 0 1-.3-.3%22 data-name=%22Trazado 25311%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 17.92a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25312%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 17.92a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25313%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 17.92a.2.2 0 1 1 .06.14.2.2 0 0 1-.06-.14%22 data-name=%22Trazado 25314%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 18.98a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25315%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 18.97a.4.4 0 1 1 .4.41.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25316%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 18.97a.29.29 0 1 1 .3.3.3.3 0 0 1-.3-.3%22 data-name=%22Trazado 25317%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 20.03a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25318%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 20.03a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25319%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 20.03a.2.2 0 1 1 .06.14.2.2 0 0 1-.06-.14%22 data-name=%22Trazado 25320%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 21.09a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25321%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 21.09a.4.4 0 1 1 .4.4.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25322%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 21.1a.29.29 0 1 1 .3.28.3.3 0 0 1-.3-.29%22 data-name=%22Trazado 25323%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 22.78a.53.53 0 1 1-.53.53.53.53 0 0 1 .53-.53%22 data-name=%22Trazado 25324%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25325%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 27.24a.29.29 0 1 1-.29.29.3.3 0 0 1 .3-.29%22 data-name=%22Trazado 25326%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 29.5a.14.14 0 1 1-.14.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25327%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 29.5a.14.14 0 1 1-.14.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25328%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 29.5a.14.14 0 1 1-.14.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25329%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 29.5a.14.14 0 1 1-.13.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25330%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 29.5a.14.14 0 1 1-.15.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25331%22/%3E%3Cpath fill=%22%23009%22 d=%22M127.6 23.9a.44.44 0 1 1-.45.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25332%22/%3E%3Cpath fill=%22%23009%22 d=%22M127.6 26.14a.32.32 0 1 1-.32.33.3.3 0 0 1 .32-.33%22 data-name=%22Trazado 25333%22/%3E%3Cpath fill=%22%23009%22 d=%22M127.6 28.38a.2.2 0 1 1-.15.06.2.2 0 0 1 .14-.06%22 data-name=%22Trazado 25334%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 22.78a.53.53 0 1 1-.54.53.53.53 0 0 1 .54-.53%22 data-name=%22Trazado 25335%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25336%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 27.24a.29.29 0 1 1-.3.29.3.3 0 0 1 .3-.29%22 data-name=%22Trazado 25337%22/%3E%3Cpath fill=%22%23009%22 d=%22M125.48 23.9a.44.44 0 1 1-.44.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25338%22/%3E%3Cpath fill=%22%23009%22 d=%22M125.48 26.14a.32.32 0 1 1-.32.33.3.3 0 0 1 .32-.33%22 data-name=%22Trazado 25339%22/%3E%3Cpath fill=%22%23009%22 d=%22M125.48 28.38a.2.2 0 1 1-.2.2.2.2 0 0 1 .2-.2%22 data-name=%22Trazado 25340%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 22.78a.53.53 0 1 1-.53.53.53.53 0 0 1 .53-.53%22 data-name=%22Trazado 25341%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25342%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 27.24a.29.29 0 1 1-.29.29.3.3 0 0 1 .3-.29%22 data-name=%22Trazado 25343%22/%3E%3Cpath fill=%22%23009%22 d=%22M123.36 23.9a.44.44 0 1 1-.44.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25344%22/%3E%3Cpath fill=%22%23009%22 d=%22M123.36 26.14a.32.32 0 1 1-.32.33.3.3 0 0 1 .32-.33%22 data-name=%22Trazado 25345%22/%3E%3Cpath fill=%22%23009%22 d=%22M123.36 28.38a.2.2 0 1 1-.14.06.2.2 0 0 1 .14-.06%22 data-name=%22Trazado 25346%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 22.78a.53.53 0 1 1-.53.53.53.53 0 0 1 .54-.53%22 data-name=%22Trazado 25347%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25348%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 27.24a.29.29 0 1 1-.28.29.3.3 0 0 1 .29-.29%22 data-name=%22Trazado 25349%22/%3E%3Cpath fill=%22%23009%22 d=%22M121.25 23.9a.44.44 0 1 1-.44.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25350%22/%3E%3Cpath fill=%22%23009%22 d=%22M121.25 26.14a.32.32 0 1 1-.23.1.3.3 0 0 1 .23-.1%22 data-name=%22Trazado 25351%22/%3E%3Cpath fill=%22%23009%22 d=%22M121.25 28.38a.2.2 0 1 1-.14.06.2.2 0 0 1 .14-.06%22 data-name=%22Trazado 25352%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 22.78a.53.53 0 1 1-.54.53.53.53 0 0 1 .53-.53%22 data-name=%22Trazado 25353%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 25a.4.4 0 1 1-.42.42.4.4 0 0 1 .41-.41%22 data-name=%22Trazado 25354%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 27.24a.29.29 0 1 1-.21.08.3.3 0 0 1 .2-.08%22 data-name=%22Trazado 25355%22/%3E%3Cpath fill=%22%23009%22 d=%22M113.72 41.85h-1.14v1.9h1.06c.64 0 1.01-.19 1.01-.98 0-.62-.27-.92-.94-.92m-1.67-.5h1.86a1.28 1.28 0 0 1 1.31 1.44 1.36 1.36 0 0 1-1.12 1.44l1.54 2.18h-.67l-1.46-2.16h-.92v2.16h-.55Zm1.58-1.8a4.4 4.4 0 1 0 4.39 4.38 4.4 4.4 0 0 0-4.39-4.39m0 9.34a4.94 4.94 0 1 1 3.5-1.45 5 5 0 0 1-3.5 1.45%22 data-name=%22Trazado 25356%22/%3E%3C/g%3E%3C/svg%3E\", ar: 2.161, mono: false },\n \"fedex\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%22-0.81 -0.35 74.35 33.92%22%3E%3Cpath d=%22m59.95 7.77 2.98 3.28 2.87-3.28h6.12l-5.99 6.73L72 21.28h-6.37l-2.95-3.3-2.92 3.3h-6.15l6.01-6.75-6.01-6.76z%22 style=%22fill:%23ff5900%22 transform=%22translate(-.81 -.35)%22/%3E%3Cpath d=%22M53.61 7.77v4.57H46.8v4.19h6.81v4.75H41.79V0h11.82v4.74H46.8v3.03z%22 style=%22fill:%23ff5900%22 transform=%22translate(-.81 -.35)%22/%3E%3Cpath d=%22M36.81 0v8.71h-.05a5 5 0 0 0-4.09-1.7c-3.27 0-5.74 2.22-6.6 5.16-1-3.24-3.54-5.23-7.32-5.23-3.07 0-5.5 1.38-6.75 3.62V7.77H5.65V4.74h6.92V0H0v21.28h5.65v-8.94h5.64a9 9 0 0 0-.26 2.1c0 4.44 3.4 7.56 7.72 7.56 3.64 0 6.04-1.71 7.3-4.83h-4.84c-.65.94-1.15 1.22-2.46 1.22a2.9 2.9 0 0 1-2.83-2.9h9.87c.42 3.53 3.17 6.57 6.94 6.57 1.63 0 3.12-.8 4.03-2.15h.05v1.38h4.98V0zM16.08 12.4a2.7 2.7 0 0 1 2.67-2.23 2.6 2.6 0 0 1 2.7 2.23zm17.7 5.64c-1.83 0-2.97-1.7-2.97-3.5 0-1.9.99-3.74 2.98-3.74 2.06 0 2.88 1.83 2.88 3.74 0 1.81-.87 3.5-2.88 3.5m8.01 13.89V24.3H46v.57h-3.5v2.8h3.37v.58H42.5v3.1h3.68v.57zm4.87 0 2.05-2.74-1.95-2.6h.8l1.59 2.12 1.56-2.12h.78l-1.98 2.6 2.07 2.73h-.8l-1.7-2.26-1.63 2.26zm6.26 1.99h-.65V28.2q0-.8-.03-1.6h.63l.03.8c.4-.63.92-.92 1.71-.92 1.65 0 2.35 1.36 2.35 2.79s-.7 2.8-2.35 2.8q-1.11 0-1.7-.9zm3.36-4.66c0-1.14-.48-2.26-1.74-2.26-1.2 0-1.62.98-1.62 2.26s.43 2.25 1.62 2.25c1.26 0 1.74-1.11 1.74-2.25m3.98-2.17c-1.06 0-1.43.9-1.43 1.82v3.01h-.64v-3.76l-.03-1.57h.63l.04.77q.48-.9 1.55-.9l.3.03v.64zm1.2 2.29c0 1.2.57 2.19 1.74 2.19.9 0 1.33-.6 1.48-1.2h.62c-.29 1.11-.97 1.68-2.19 1.68-1.62 0-2.33-1.2-2.33-2.7 0-1.52.74-2.88 2.42-2.88 1.7 0 2.15 1.48 2.15 2.9zm.02-.49h3.18c0-1.04-.5-1.94-1.5-1.94-.92 0-1.55.7-1.68 1.94m6.38 3.16c-1.1 0-1.92-.52-1.92-1.68h.64c0 .8.53 1.2 1.3 1.2.74 0 1.3-.35 1.3-1.07 0-.64-.66-.8-1.35-1-.85-.25-1.76-.52-1.76-1.55 0-1.14.95-1.48 1.85-1.48 1.03 0 1.8.4 1.83 1.5h-.64c-.03-.63-.48-.98-1.17-.98-.54 0-1.19.2-1.19.9 0 .63.65.81 1.35 1 .84.23 1.77.49 1.77 1.52 0 1.2-.93 1.64-2.01 1.64m4.45 0c-1.1 0-1.91-.52-1.91-1.68h.64c0 .8.52 1.2 1.3 1.2.73 0 1.3-.35 1.3-1.07 0-.64-.66-.8-1.36-1-.84-.25-1.76-.52-1.76-1.55 0-1.14.96-1.48 1.86-1.48 1.03 0 1.8.4 1.83 1.5h-.64c-.03-.63-.49-.98-1.17-.98-.54 0-1.2.2-1.2.9 0 .63.66.81 1.36 1 .84.23 1.77.49 1.77 1.52 0 1.2-.93 1.64-2.02 1.64%22 style=%22fill:%232a007c%22 transform=%22translate(-.81 -.35)%22/%3E%3C/svg%3E\", ar: 2.192, mono: false },\n \"hsbc\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220 0 315.9 85%22%3E%3Cpath fill=%22%23fff%22 d=%22M42.6 0h85v85h-85z%22/%3E%3Cpath fill=%22%23db0011%22 d=%22M170.1 42.6 127.6 0v85.1zm-85 0L127.6 0h-85z%22/%3E%3Cpath fill=%22%23db0011%22 d=%22m0 42.6 42.6 42.5V0zm85.1 0L42.6 85.1h85z%22/%3E%3Cpath d=%22M207.4 45.1H192v15.2h-7.7V24.7h7.7v14.6h15.4V24.7h7.7v35.6h-7.7zM233.7 61c-7.7 0-14-3.1-14.1-11.6h7.7c.1 3.8 2.3 6.1 6.5 6.1 3.1 0 6.7-1.6 6.7-5.1 0-2.8-2.4-3.6-6.4-4.8l-2.6-.7c-5.6-1.6-11.2-3.8-11.2-10.2 0-7.9 7.4-10.6 14.1-10.6 6.9 0 12.9 2.4 13 10.3h-7.7c-.3-3.2-2.2-5.1-5.8-5.1-2.9 0-5.7 1.5-5.7 4.7 0 2.6 2.4 3.4 7.4 5l3 .9c6.1 1.9 10 4 10 10-.1 8-7.9 11.1-14.9 11.1m19.2-36.2h12.4c2.3-.1 4.7 0 7 .4 4.3 1 7.6 3.8 7.6 8.6 0 4.6-2.9 6.9-7.1 8 4.8.9 8.4 3.3 8.4 8.6 0 8.1-8 9.9-14.2 9.9h-14zm12.4 14.8c3.4 0 6.9-.7 6.9-4.8 0-3.7-3.2-4.7-6.4-4.7h-5.4v9.5zM266 55c3.6 0 7.1-.8 7.1-5.2s-3-5.2-6.7-5.2h-6.1V55zm35.2 6c-11.5 0-16.6-7.3-16.6-18.2s5.7-18.8 17-18.8c7.1 0 14 3.2 14.2 11.2h-8c-.4-3.6-2.8-5.4-6.2-5.4-7 0-9.1 7.5-9.1 13.2s2.1 12.3 8.8 12.3c3.5 0 6.1-1.9 6.6-5.5h8c-.8 8.2-7.3 11.2-14.7 11.2%22/%3E%3C/svg%3E\", ar: 3.716, mono: false },\n \"imile\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 id=%22Layer_1%22 version=%221.1%22 viewBox=%22112 310 856 460%22%3E%3Cdefs%3E%3Cstyle%3E.st1%7Bfill:%230032a0%7D%3C/style%3E%3C/defs%3E%3Cpath d=%22M618.99 684.65h-21.53v64.79h18.97c6.74 0 12.27-1.17 16.42-3.48 4.18-2.32 7.29-5.99 9.24-10.9 1.93-4.87 2.91-11.36 2.91-19.29 0-10.22-2.2-18.04-6.54-23.25-4.36-5.22-10.91-7.87-19.46-7.87Zm15.17 31.12c0 8.7-1.31 15.07-3.9 18.93-2.55 3.81-6.71 5.74-12.37 5.74h-9.6v-46.79h10.34c5.36 0 9.33 1.77 11.78 5.25 2.49 3.53 3.76 9.21 3.76 16.87ZM673.04 702c-6.79 0-12.22 2.18-16.12 6.49-3.89 4.29-5.87 10.28-5.87 17.78s1.96 13.46 5.82 17.69c3.87 4.24 9.34 6.4 16.26 6.4 4 0 7.72-.83 11.06-2.46 3.35-1.64 5.96-3.95 7.76-6.88l.19-.3-5.63-5.42-.3.38c-3.18 4.07-7.43 6.13-12.62 6.13-3.64 0-6.53-1.03-8.6-3.07-1.99-1.96-3.26-4.87-3.78-8.65h32.45v-3.91c0-7.56-1.83-13.54-5.45-17.77-3.63-4.25-8.74-6.41-15.17-6.41m-.36 8.27c3.57 0 6.41 1.09 8.45 3.24 2.04 2.16 3.08 5.19 3.08 9.01v.2h-23.09c.46-3.91 1.66-6.98 3.58-9.13 1.97-2.2 4.66-3.32 7.98-3.32M720.44 741.75c-1.82.76-3.36 1.15-4.58 1.15-1.45 0-2.49-.35-3.1-1.04-.62-.7-.94-1.96-.94-3.73v-57.32h-9.92v57.32c0 3.99.93 7.05 2.76 9.1 1.84 2.06 4.6 3.11 8.18 3.11 3.79 0 6.94-.89 9.39-2.64l.24-.18-1.58-5.99-.47.19ZM729.86 702.91h9.92v46.53h-9.92zM734.77 684.37c-1.99 0-3.6.56-4.78 1.67-1.18 1.12-1.78 2.64-1.78 4.52s.6 3.4 1.78 4.52c1.17 1.11 2.78 1.67 4.78 1.67s3.61-.56 4.82-1.67c1.21-1.12 1.83-2.64 1.83-4.52s-.62-3.4-1.83-4.52c-1.21-1.11-2.83-1.67-4.82-1.67M769 736.9l-11.92-33.99h-10.26l17.87 46.53h8.64l17.86-46.53h-10.35zM814.48 702c-6.79 0-12.22 2.18-16.12 6.49-3.89 4.29-5.87 10.28-5.87 17.78s1.96 13.46 5.82 17.69c3.87 4.24 9.34 6.4 16.26 6.4 4 0 7.72-.83 11.06-2.46 3.35-1.64 5.96-3.95 7.76-6.88l.19-.3-5.63-5.42-.3.38c-3.18 4.07-7.43 6.13-12.62 6.13-3.64 0-6.53-1.03-8.6-3.07-1.99-1.96-3.26-4.88-3.78-8.65h32.45v-3.91c0-7.56-1.83-13.54-5.45-17.77-3.63-4.25-8.74-6.41-15.17-6.41m11.16 20.52v.2h-23.09c.46-3.91 1.66-6.98 3.58-9.13 1.97-2.2 4.66-3.32 7.98-3.32 3.57 0 6.41 1.09 8.45 3.24 2.04 2.16 3.08 5.19 3.08 9.01M867.53 702c-3.66 0-6.89.9-9.6 2.68-2.33 1.53-4.14 3.6-5.39 6.16-.01-2.7-.14-5.24-.37-7.53l-.04-.39h-9.36l.04.47c.18 2.23.27 5.96.27 11.11v34.95H853v-22.26c0-3.08.65-5.95 1.92-8.52s3.03-4.63 5.24-6.13c2.2-1.49 4.62-2.25 7.2-2.25 1.76 0 2.45.09 2.71.17l.56.16v-8.23l-.34-.08c-.82-.19-1.75-.28-2.75-.28ZM903.55 702.91l-9.93 32.18-11.17-32.18h-10.64l17.16 43.36c-1.84 4.77-3.78 8.23-5.78 10.28-1.97 2.03-4.42 3.06-7.26 3.06-1.7 0-3.18-.24-4.41-.7l-.6-.23v8.01l.33.08c2.22.55 4.22.84 5.95.84 9.11 0 15.82-5.78 19.95-17.18l17.1-47.52h-10.72ZM177.13 498.76v79.92c0 17.18-13.99 31.17-31.17 31.17s-31.3-13.99-31.3-31.17v-79.92c0-17.18 13.99-31.3 31.3-31.3 8.52 0 16.38 3.46 22.11 9.19 5.59 5.73 9.06 13.59 9.06 22.11%22 class=%22st1%22/%3E%3Cpath d=%22M177.13 418.83v79.79c0 17.32-13.99 31.3-31.17 31.3s-31.3-13.99-31.3-31.3v-79.79c0-17.18 13.99-31.17 31.3-31.17 8.52 0 16.38 3.46 22.11 9.19 5.59 5.59 9.06 13.45 9.06 21.98%22 class=%22st1%22/%3E%3Ccircle cx=%22145.91%22 cy=%22343.62%22 r=%2231.24%22 class=%22st1%22/%3E%3Cpath d=%22M177.13 498.76c0 8.66-3.46 16.38-9.06 22.11-5.73 5.59-13.59 9.06-22.11 9.06-17.32 0-31.3-13.85-31.3-31.17 0-8.52 3.46-16.38 9.19-22.11s13.45-9.19 22.11-9.19 16.38 3.46 22.11 9.19c5.59 5.73 9.06 13.59 9.06 22.11%22 style=%22fill:%233ccbda%22/%3E%3Cpath d=%22M392.62 609.86h-45.66l-52.47-148.19v148.19h-63.68V329.5h66.48l95.32 280.36Z%22 class=%22st1%22/%3E%3Cpath d=%22M442.28 329.5h66.48v280.36h-63.68V461.67l-52.47 148.19h-45.66l95.32-280.36ZM562.43 409.6h56.87v200.26h-56.87zM682.58 599.85c-9.61-9.34-14.42-22.83-14.42-40.45V312.68h56.87V560.6c0 9.61 5.87 14.42 17.62 14.42 6.67 0 14.55-1.86 23.63-5.61l8.41 29.64c-12.81 9.88-29.78 14.82-50.87 14.82-17.89 0-31.64-4.67-41.25-14.02ZM965.34 530.56H827.56c2.4 12.01 7.41 20.97 15.02 26.83 7.61 5.88 17.95 8.81 31.04 8.81 11.48 0 21.49-1.86 30.04-5.61 8.54-3.74 17.08-10.14 25.63-19.22l30.44 28.84c-7.75 13.08-19.82 23.63-36.25 31.64-16.42 8.01-34.24 12.01-53.47 12.01-31.51 0-56.21-9.14-74.1-27.44-17.89-18.29-26.83-43.59-26.83-75.9s8.94-58.2 26.83-76.9c17.89-18.69 42.46-28.04 73.69-28.04s53.33 9.28 70.29 27.83c16.95 18.56 25.43 44.13 25.43 76.7v20.43Zm-56.07-40.46c0-11.74-3.61-21.03-10.82-27.83-7.21-6.81-17.09-10.21-29.64-10.21-11.21 0-20.43 3.54-27.64 10.61-7.21 7.08-12.01 17.02-14.42 29.84h82.51v-2.4ZM590.87 324.49c17.45 0 31.6 14.15 31.6 31.6s-14.15 31.6-31.6 31.6-31.6-14.15-31.6-31.6 14.15-31.6 31.6-31.6%22 class=%22st1%22/%3E%3C/svg%3E\", ar: 1.861, mono: false },\n \"jtexpress\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.63 0 998.75 209%22%3E%3Cg fill=%22red%22%3E%3Cpath d=%22M149.56 0h60.17c-15.74 69.29-31.6 138.55-47.44 207.82-53.78-.05-107.56.1-161.34.06 7.71-13.74 14.56-27.94 21.99-41.82 29.62.14 59.24.03 88.86.05C124.4 110.75 136.86 55.34 149.56 0m90.83 0h134.05c-10.56 19.06-20.98 38.2-31.6 57.24.02-5.07 1.03-10.15.33-15.19-1.03-5.79-6.09-9.84-11.33-11.84-9.46-3.61-20.81-3.55-29.5 2.08-11.92 7.26-17.2 23.7-11.15 36.4 5.61 11.14 13.97 20.6 22.57 29.52a317 317 0 0 0 33.23 29.24 23 23 0 0 0 4.07-7.44c2.91-8.48 4.75-17.29 6.45-26.08q20.77 5.93 41.54 11.89c-2.61 20.81-10.83 40.68-22.36 58.11 11.96 14.61 23.97 29.19 35.92 43.81-18.17.04-36.33-.02-54.49.03-3.93-4.09-7.7-8.33-11.63-12.41-18.28 8.5-38.43 12.66-58.52 13.31-23.29.34-47.55-4.97-66.47-19.1-10.68-10.48-16.99-25.92-15.08-40.96 1.47-12.06 7.38-23.11 14.69-32.63 9.51-12.22 21.35-22.51 34.22-31.06-14.01-15.65-23.53-36.72-20.95-58.04 1.83-9 3.98-17.93 6.01-26.88m19.88 138.34c-3.3 5.23-4.21 12.08-1.4 17.72 4.84 9.88 15.32 16.49 26.25 17.08 12.99.81 25.67-3.87 36.81-10.19-12.83-15.18-25.49-30.5-38.44-45.56-8.41 6.12-17.76 11.78-23.22 20.95%22/%3E%3Cpath d=%22M405.16 0h243.61c-4.7 4.53-9.26 9.21-13.92 13.77q-30.34-.05-60.67.01c-2.54 2.54-5.11 5.04-7.64 7.59 20.24.02 40.48-.02 60.72.02-3.96 3.57-7.31 8.09-11.63 11.08-20.3.21-40.61.07-60.91.06q-3.96 3.76-7.78 7.64c20.46.04 40.92 0 61.38.02q-8.32 8.34-16.7 16.61c-22.34.02-44.68.05-67.03-.02-12.67 50.32-25.09 100.7-37.71 151.04-19.59-.07-39.18.12-58.76-.1 11.83-50.46 25.07-100.58 37.51-150.9-30.51-.02-61.03.02-91.54-.02 10.39-18.92 20.59-37.94 31.07-56.8M889.2 138.19c4.89-7.7 13.89-11.85 22.72-12.95 8.51-.94 17.5-.27 25.24 3.68-1.82 4.86-3.68 9.7-5.45 14.57-6.69-3.04-14.53-4.87-21.71-2.52-4.16 1.26-7.57 6.15-5.31 10.38 2.65 4.41 7.7 6.42 11.92 9 6.43 3.45 12.81 8.45 14.83 15.79 2.1 8.77-.67 18.77-7.58 24.72-5.88 5.19-13.72 7.38-21.37 8.14h-7.78c-6.73-.68-13.6-1.97-19.37-5.7l5.86-14.39c7.19 3.88 15.62 6.17 23.79 4.67 4.19-.79 8.44-3.99 8.51-8.6.32-4.75-3.91-7.85-7.56-9.96-6.22-3.48-12.93-6.85-17.1-12.87-5-7.02-4.06-16.9.36-23.96m61.94-.04c4.91-7.7 13.91-11.82 22.74-12.92 8.5-.93 17.46-.23 25.2 3.68-1.82 4.86-3.69 9.7-5.45 14.58-6.12-2.81-13.05-4.44-19.75-3.11-3.45.72-7.01 2.96-7.81 6.6-.72 2.72.73 5.46 2.79 7.18 5.15 4.42 11.79 6.62 16.96 11.02 3.91 3.22 7.07 7.62 7.91 12.7 1.23 8.07-1.29 16.88-7.4 22.46-5.89 5.55-14 7.86-21.87 8.66h-7.8c-6.75-.68-13.63-1.97-19.42-5.7l5.88-14.39c7.21 3.9 15.67 6.18 23.86 4.66 4.14-.8 8.33-3.98 8.43-8.53.35-4.72-3.81-7.86-7.45-9.96-6.22-3.5-12.95-6.85-17.15-12.87-5.07-7.03-4.13-16.97.33-24.06m-391.76-11.96c16.18 0 32.35-.04 48.53.02-1.01 4.97-1.96 9.94-2.94 14.91h-30.82c-1.08 5.82-2.41 11.59-3.27 17.44 9.66-.14 19.33-.02 29-.06q-1.38 7.34-2.79 14.67c-9.7.04-19.41 0-29.12.02-1.24 6.58-2.59 13.13-3.7 19.73 10.86-.1 21.72-.02 32.58-.04l-2.8 14.93h-50.19c5.14-27.21 10.36-54.41 15.52-81.62m56.21-.01 18.53.01c3.06 9.57 6.23 19.13 8.64 28.9 1.12-.72 1.63-1.97 2.25-3.09 4.62-8.88 10.2-17.21 15.34-25.79 7-.05 14-.02 21.01-.02q-14.92 20.05-29.86 40.06c5.18 13.87 10.45 27.7 15.65 41.56-6.24-.02-12.48.06-18.72-.05-3.33-10.11-6.92-20.15-9.9-30.37a2578 2578 0 0 1-18.03 30.36c-7.06.14-14.13.03-21.19.06 10.16-13.97 20.55-27.78 30.61-41.83-4.88-13.22-9.55-26.53-14.33-39.8m75.28 1.54c9.93-2 20.24-2.83 30.31-1.47 8.21 1.14 16.8 5.46 20.08 13.51 4.28 11.17-.13 24.74-9.72 31.75-9.39 6.95-21.78 8.14-33.09 6.94l-5.58 29.37c-5.71.02-11.42-.06-17.12.04 4.88-26.74 10.1-53.43 15.12-80.14m14.89 12.35c-1.53 8.05-3.1 16.1-4.61 24.16 6.56 1.15 14.09.82 19.29-3.85 4.81-4.1 6.69-12.28 2.41-17.38-4.44-4.45-11.4-3.56-17.09-2.93m53.83-12.35c8.64-1.78 17.51-2.4 26.31-2 7.65.49 15.85 2.33 21.4 7.99 5.4 5.55 5.9 14.38 3.16 21.32-2.9 7.27-9.84 12.1-17.11 14.33 3.94 2.19 6.32 6.27 7.14 10.61 1.84 9.21 1.46 18.75 3.88 27.86-6.01-.04-12.02.01-18.02-.03-1.53-7.22-1.81-14.61-2.69-21.92-.45-3.51-1.69-7.49-5.1-9.18-3.41-1.55-7.27-.95-10.89-1.08q-3.06 16.1-6.08 32.19c-5.8.03-11.6-.03-17.39.04 5.02-26.73 10.25-53.42 15.39-80.13m14.89 12.39c-1.28 7.49-2.87 14.92-4.26 22.39 6.33.02 13.46.65 18.7-3.67 4.78-3.55 6.93-11.61 2.4-16.18-4.55-3.98-11.28-3.58-16.84-2.54m55.99-13.92h48.5q-1.44 7.47-2.91 14.93l-30.84.01c-1.11 5.79-2.26 11.57-3.36 17.36q14.53.02 29.1.01-1.37 7.35-2.79 14.68-14.56.01-29.11 0a3257 3257 0 0 0-3.76 19.7h32.63q-1.39 7.47-2.81 14.94h-50.18c5.15-27.22 10.36-54.42 15.53-81.63%22/%3E%3C/g%3E%3C/svg%3E\", ar: 4.779, mono: false },\n \"mastercard\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1000 618%22%3E%3Cpath fill=%22%23EB001B%22 d=%22M308 0a309 309 0 1 0 2 0z%22/%3E%3Cpath fill=%22%23F79E1B%22 d=%22M690 0a309 309 0 1 0 2 0z%22/%3E%3Cpath fill=%22%23FF5F00%22 d=%22M500 66a309 309 0 0 0 0 486 309 309 0 0 0 0-486%22/%3E%3C/svg%3E\", ar: 1.618, mono: false },\n \"mercadopago\": { src: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARwAAABKCAMAAABeihuMAAAAdVBMVEVMaXEJAIAJAIAHAIEJAH8JAH8JAIALAIMJAH8JAH8JAH8KAIAKAH8JAH8JAH8JAH8KAID///8AvP8PEIomKZdESafp6PQIJZkGP6sBnOoCh9x/gMEFVrvW1ev29vsAtfthZbUDdtC+u96WlcypqNQEZ8YBq/T2IV9RAAAAEHRSTlMAPcQdoLJNDnWO1Cz44u5ezseTAgAAAAlwSFlzAAALEgAACxIB0t1+/AAADNNJREFUeJztXNeSozoQJZlom/YCTjin///EW1J3C0kI7Amerbm152XKjMDoqLNa9rx/+Ic3I0nCMCwQYRgmiferERbFd8wg8cssmEEf8yBK49D7jYjnAOB/8SFJnOVERbVar3e73e5+3+126/WqouuzqPx1BIVT+Co5RYrErNb37eb4p4fH9rxbIUHZV1fhZ5HKt/78O4coMqvd1kGLjs15LYRoHv0ifrIvkRNPhCKtnxGjCJISlKfJ/5+cJBXmd719jRjFTwUwzcL/NzlJOgdYnV+UGR3b9Ufo8bPJZMK2qkijySSLTclL4jSKoqxv78Myy6KSPhRlFkVZat6bxFkkHm/eW6TicYlNTphGQZ4HLziWcgaw+pjQaOIj6HlJuWJ2grnveeGEg4NUm18mXYrAxFjjMpAXM3wOfjBHJZnw1IiASfR8GjpNDXIK/nIAiEbpKYIvUMP0zOKn3ODbIUq/mwpMEj0SUUAmBMJcu5RERuAVETc8xHhkqbiGSCMn7i6L1RlRtXQK1fnPOI6PzeYx8v/NCiBKXnGl6o0cEzTfuWOnmOtXOrHRb7avyntj/QqGtL59WYjVEDthALAbtTWbu3TbMvY5DzJ0rmA2auwKGIEUu8LiBgC1I+ki9cyUv+5mnu+UnzFNPC8xVgAhFLp3eeZeVyHdYxp1PGPEV9U1MrS6D/DzWAFo1qMH0vJZoMl/zh/ybvGnmR8Wwj8I8ZIvralRpjiOYp/sEATq6ZPC85IS740Vj/MsTZVg+ep5Ez8M2Xp1GqwBdXI96Ka2K4DqdNsvBA77ayMYWm+cNG4rpR8OJPieYpULYgQ/oFiEnucjNwUKNI4RbIckClHs+wXNbIoWjqYZep6cx0zX35IFJ5AMl4oceh4tJD3PITopQHtrkB+XQOwA6utCx0EOX/VGy4gHqs622kC5xznR6uMH5KTkdWbhK5RQ4FznSFoy1VeaPsVeOBege5GHlL5ySs6IxMin54kny0fg4ij3ppAB3BaLxfJa95KGx3Yns8z2sLCxP9FoEqDHFo1S3S73Fa2Tcx3U0nq5UiX+kNLfbglRdBLWNnp7X8kKziAQMB0lCSb7btYYItKn56l7kKueyKfIjcDyKuUHVrvzZrPZUmoJ1aVHzaJjE6CqKrLV9UkO3VcwcZMj35T/F+nvI81FxpoRM3AOhedJ5ZgaU2GSLYRxmk3YpKVkhxQL+EAfv0ewTlyCvlKMsuNGzvh2oinTbCuo0NY4+bm10v5IW326qoH7asDuPCEnYlNgISZjxS+fGTphMKPqLEwOsqFCPIpzEoteMobmw4opXF1Truu6aS+HQw31Ul0XlxudSrq+XC4tvdtXbp/1lJxilBzjTpd0pnYckJJidiOQnNCWFLzReFgyg9OgXCwWhwYq5ubQsjS5tczEjR3Oj5LTRZjzCVv22Wvk4G3G0yKo+7a2Q9Pp1L4WxvZ2O1UA7eI52p4Cv0QOvXRqorDIGVArrPLBPCoLdowsOaFd7LLUyKFWPsCwQVksTh03V4AKFWp5AmjGGEUcapdiPSXHG5AJkxzLIBe+QEiccUJF5LAF1r8UfBIoxRn6P2M9g1EhaAFIgw6CEGV7LhXUY5zSKFdM9Zwcy5W7yaE0gaeGwhGbtpeDwMh05RgShuTE1PqZDh+/oxoRgb3yY0KldLO9r4fcu47GEY4/Jwfnko6TYwaBZKdCJIlVgwOZUktBVCzJgsXpFClk/LLg3NgeXXvufNmYbA2Q2xeA5+RQ+kCviVQFNjmcoslRCdIQMB+JKVxEJCqbjx8iJUIYrVKaogdOxajgLJYVVKe2FRa4UynG6QWz3PQF4Dk5XHUI0jimLRDBgUUOhcgwScuMsnVf5Z2JCHemymZT6pWnccnJa9F5NpGPRhQA6NlDNurGF1I+BOp+aCMt9DOzfOv7kxfI6ZcsxFWLHD1H7wZRWjnNVXVDiFa/NuGu/ZhuIGd7O0zPrW3bgUHCLPcEysCh6sLz18npFbuk5NvkWCU/Ug97c5bqqa4Hel5ojc71l00AnnvkEexHMwuBppfmvkKOLNhqyyzf2SbHS7T6r6o/dsVCgTl/u2/QoGqVosKnyY2xkCFUXTb0GSyfOa22569eIkcV0gGmXDrvkaMX2Lv6esjmw9xKS1SZa2psQKrvASunR6NWn27jujGGQ2NmrYteBjuQnD9HEovI2Nqw6Q3yyzRN/aR/rTQv0vWy7LVXyO/pj/ZiWGFNoj7dPqtfJ6fTOlxaSu1dKcSvQAxnWc2Ss2iunxOgFmyXd7hhFaNa37dDJZffQQ6WfZGg5lPyczNcOtZPAdZ3USB82AWS30eOLP7eBT/V6RPic+lc+kUEjFoTwq8m525sqkh+JD372+UDQiQyrb0ohQk7U+20LZ7NbyZnZ2/BrEUxfS+NabtYXk9DAaDAkkoY6NJvot5eWe0Zv9rmrJ373QD1qQFA4zESyDTKUQmX7mrPuP9eb+VD5dik2lbS/exFunltG4D9YcgQNZ2jOgE49vjWzhq4QOjHcdyroyaF7/cikTAuy7LfnPlSIPR5FM4JHSlVb1FmWhA2tnFH0k3nqGrNuisM7EH4EUX500jjp4goyNe7DBPOua3esXgwtP0mhNAzOtKINnK2F9KnGiqxP359ws7V8aytc9vc7B2xSnE849DRjCLaeVx51eD26pcAUPV3xx9QGfM/tYvF4Qrg1q2G3XjrIGdtltZoSax0OnOWIGahVppicAXMzsiNdPq7kINLF1ZSSpYmGa2ZJVBPgTTFspy8r/oq+tB3FBV6VRSZOtu9MtifZFcgaLfHkBspO28gJwNY9UVnKy1xZerRnpSNBUY5MbGzdRK7yH3Pt3PtSfLOUj6ZkMrI6m6gqnJkZObd2Okk47GSBS5pRe4S3jdBpOUO0dnK1MgkZ2kWtg61ysYPuB3c73zauOrkVI5CBaHJp9xfgtVuUpqQx0qTwqUXoW0zzSw5ir/fhRygcvScHM+7tZVOXkTIo/VaLCvFTgPrncyk+han2xZiGG0nZITzbgNOu1pQnZj2B6jWmfJY3k2g629wWWLp+uog8LCKfC3UYsezk569Yqd294TdnbagNLtiUCtCr5D7mkQlN1agYLHwIWX9vRt1/bshtyeMBEthJ2PjCyuXsM/7WhgeLh5eqM7VulweKpVjPc3WJLs9RASHvOPA3VuF3caE/y9Gtiq/CXJxnAt/XIu+G9MMH2q4LE4sMTeA00206LjufwhL5AiPM1fLEJrTIp3kmusukLmp2QaR09/uMtZPu8/fLDqVs7nvj+yRVD0WElc4CYZInGRrF1Qubo6yQOQ/ba7n/Wy7qC7JCUxTK+1wTmRoFhiNzjtCHfl2A+z8OR53MorZN7pDX9YU81yhWrubLJEblx1gY2uTo+2eTGducvIfJwdl17n6PMu6UeHxRarZspLsLOsBcyXbbTt/8ork0FY1TIOsTDI3OZKEnNowtDoR3vkObtgVDvWuH+8yjKHwuEGN2lfQiF1iRwQpsKmGvWtmxmz8kXw65tiZYZB5qOp74zYJnoBN1neCAndHCkrYbDbUiiJ2gC/dNvFAxzvGkO6GZ9vxsueZ6d2w7KXMM3X4njl7uNIUvnckEFqcuhowPAJ3kVFQp2klAp7qfD+7xx93+LixblJFA8Vz1o4dR8i+QTJykvP7Kk/YtXG/BVQsGDsWcsbNli3WmQea17nXXb57Mvpd1PiBpjcyyaEeFLYydFyDEqpctdKkLrbfx86Y8BzPuzvuKTw2rgOxiMf6WRGBv2qW+j6dbBCKg7ELlikoo1IyPc1iP+aKhgj21KGFJPEpQX9DgNx75RGReAFkvEfkxnXYRdLASXmp9rRjR92GyOmfgpm/9QRld1rr0/Q85LEHXMfhoAPJmdsT4/MaCtRuYQxkcnotJVwEexe0E3Prz5zW25AdfmYcyXfP7fNxVnw86b8W5lyYQ5nsvJsb7aylMLxDh6menMaSGD+LRjEMHyeCoHAUlvOudhXS9XmpgkD7bSc/cSqZ7aPEylWhcavTma2wxJNTjCp9iLNJoA4ICxRZkM9msyBKzR2bkI71JqYH52O9XOd4N3iVCKvd8GlFFhl1sKa3QTAAK7f6AMqR0PJHwCeMFUQbiVuExPEqkxitzex7yAkjAT5wlr+rWPw6tLPaHVar9e5+P5+32+35fL7rv4OiYfbKofIPSY5WQ6adKmcy+4Pwu666j6A74P595HCncJTySfq/qFWEhCuVL2OevWpFkJxXjaj9Hn9bcBBFd8j4KT70AzrZh4J9s3N2+FT8jyPpfnhphJiPutI0CCYfyKDpRDXJzduDvQ8h8dPI+ZNdP/ajXfiTNVJsxn+J468hScRPvckDX74vf/DtJ3VfNO34/o9+5T94Y/gPvUlwdceZIU0AAAAASUVORK5CYII=\", ar: 3.838, mono: false },\n \"oxxo\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 version=%221.0%22 viewBox=%2235.43 35.45 885.83 448.9%22%3E%3Cpath d=%22M-792.46-878.05c0-29.6 23.78-53.62 53.13-53.62H40.12c29.33 0 53.13 24.02 53.13 53.62v339.17c0 29.6-23.8 53.6-53.13 53.6h-779.45c-29.35 0-53.13-24-53.13-53.6z%22 style=%22fill:%23fff;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3Cpath d=%22M-791.84-883.46c0-27.22 21.88-49.3 48.86-49.3h787.5c26.99 0 48.85 22.08 48.85 49.3v1.57h-885.21zM93.37-534.4v1.22c0 27.23-21.86 49.31-48.84 49.31h-787.5c-26.99 0-48.87-22.08-48.87-49.3v-1.23z%22 style=%22fill:%23fbb110;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3Cpath d=%22M-179.2-708.84c0 68.92 55.35 124.79 123.66 124.79 68.29 0 123.67-55.87 123.67-124.8s-55.38-124.8-123.67-124.8c-68.3 0-123.66 55.87-123.66 124.82m-589.6 0c0 68.92 55.37 124.79 123.68 124.79 68.29 0 123.67-55.87 123.67-124.8s-55.38-124.81-123.67-124.81c-68.3 0-123.69 55.87-123.69 124.82m862.17 150.8h-609.75c10.99-7.78 21.22-18.43 32.39-32.8l62.11-80 27.13 34.6 30.19-40.52-26.4-33.9 63.22-81.44c20.07-25.83-18.31-56.19-38.4-30.36L-422-750.47l-56.8-72.93c-20.1-25.76-58.42 4.67-38.32 30.46l64.2 82.3-69.46 89.44c-24.68 31.78-49.31 60.92-98.2 63.17h-171.26v-300.24h606.54c-10.43 7.7-20.27 18-30.94 31.76l-62.1 79.96-27.15-34.57-30.16 40.52 26.4 33.89-63.25 81.43c-20.05 25.83 18.34 56.19 38.4 30.36l55.89-71.96 56.8 72.91c20.1 25.78 58.42-4.65 38.32-30.43l-64.2-82.34 69.46-89.41c22.67-29.23 45.32-56.22 86.8-62.12h184.4zm-222.94-150.81c0-41.28 33.15-74.73 74.03-74.73s74.02 33.45 74.02 74.73c0 41.25-33.13 74.7-74.02 74.7s-74.03-33.45-74.03-74.7m-589.58 0c0-41.28 33.15-74.73 74.03-74.73 40.87 0 74.02 33.45 74.02 74.73 0 41.25-33.15 74.7-74.02 74.7-40.88 0-74.03-33.45-74.03-74.7%22 style=%22fill:%23e70020;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3C/svg%3E\", ar: 1.973, mono: false },\n \"paquetexpress\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2217 27 155 34%22%3E%3Crect x=%2217%22 y=%2227%22 width=%22155%22 height=%2234%22 rx=%223%22 fill=%22%23002a52%22/%3E%3Cg fill=%22%23FFF%22 fill-rule=%22evenodd%22%3E%3Cpath d=%22M35.6 46.8V30.3h3.3c1.7 0 3 .4 3.9 1.2.8.8 1.3 2 1.3 3.6s-.4 2.8-1.3 3.6c-.8.9-1.9 1.3-3.4 1.3h-.7l-.1 6.8h-3zm3-9.3h.4c.7 0 1.2-.2 1.5-.6.4-.4.6-1 .6-1.7 0-.8-.2-1.4-.5-1.8-.4-.4-.9-.5-1.6-.5h-.4v4.6zm26.6 9L63.5 48 62 46.3c-.3.2-.7.4-1.1.5-.4.1-.9.2-1.4.2-1.8 0-3.2-.8-4.2-2.3-.9-1.5-1.4-3.6-1.4-6.4 0-2.5.5-4.5 1.5-6s2.3-2.2 4.1-2.2c1.8 0 3.1.7 4.1 2.3 1 1.5 1.5 3.6 1.5 6.4 0 1.3-.1 2.5-.4 3.5-.2.9-.6 1.7-1.1 2.3l1.6 1.9zm-5.2-6l1.5 1.7c.1-.4.2-1 .3-1.5.1-.6.1-1.3.1-2.1 0-1.8-.2-3.1-.6-4-.4-.9-1-1.4-1.8-1.4-.9 0-1.5.5-1.9 1.4-.4.9-.6 2.4-.6 4.3 0 1.6.2 2.9.6 3.8.5.8 1.1 1.3 1.8 1.3.1 0 .2 0 .3-.1h.2L58.3 42l1.7-1.5zm16.5-10.2v10.4c0 1.3 0 2.2-.1 2.7s-.2 1-.4 1.3c-.4.8-.9 1.4-1.7 1.8-.7.3-1.6.5-2.8.5-1.1 0-2.1-.2-2.8-.5-.8-.4-1.3-1-1.7-1.8-.2-.4-.3-.8-.4-1.3 0-.6-.1-1.5-.1-2.7V30.3h3.2v10.6c0 1.4.1 2.3.4 2.7.3.3.7.5 1.4.5s1.2-.2 1.4-.6c.3-.4.4-1.2.4-2.6V30.3h3.2zM78.6 46.8V30.3h6.7v3.1h-3.7v3.3h3.3v3h-3.3v3.9h3.7v3.2zM89.4 46.8V33.4H87v-3.1h8.1v3.1h-2.5v13.4zM96.5 46.8V30.3h6.7v3.1h-3.7v3.3h3.3v3h-3.3v3.9h3.7v3.2zM111.5 46.8l-1.3-3.3-.3-1.2c-.1-.4-.2-.8-.3-1.3-.1.5-.2.9-.3 1.3-.1.5-.2.8-.3 1.2l-1.1 3.3h-3.6l3.7-8.3-3.4-8.2h3.4l1.2 3.5c0 .2.1.4.2.7.1.4.2.8.3 1.3.1-.5.1-.8.2-1.2.1-.3.2-.6.3-.8l1.2-3.5h3.3l-3.4 8.2 3.6 8.3h-3.4zm4.4 0V30.3h3.3c1.8 0 3.1.4 3.9 1.2.9.8 1.3 2 1.3 3.6s-.4 2.8-1.2 3.6c-.9.9-2 1.3-3.5 1.3h-.7v6.8h-3.1zm3.1-9.3H119.3c.7 0 1.2-.2 1.6-.6.3-.4.5-1 .5-1.7 0-.8-.2-1.4-.5-1.8-.3-.4-.9-.5-1.6-.5h-.2-.1v4.6zm6.6 9.3V30.3h3.3c1.8 0 3.1.4 4 1.1.8.8 1.2 1.9 1.2 3.6 0 1.1-.2 2.1-.6 2.8-.5.7-1.1 1.2-1.9 1.5l3 7.5h-3.3l-2.6-6.8v6.8h-3.1zm3.1-9.3H129c.7 0 1.2-.2 1.6-.6.3-.4.5-1 .5-1.8s-.1-1.3-.5-1.7c-.3-.4-.8-.5-1.5-.5h-.3-.1v4.6zM136 46.8V30.3h6.7v3.1h-3.6v3.3h3.3v3h-3.3v3.9h3.6v3.2zM144.6 46.3v-3.5c.4.4.8.7 1.2.8.4.2.8.3 1.2.3.5 0 1-.1 1.3-.4.3-.3.4-.7.4-1.2 0-.7-.4-1.3-1.2-2.1-.3-.2-.4-.3-.5-.4-1-1-1.7-1.8-2.1-2.5-.3-.7-.5-1.5-.5-2.4 0-1.5.4-2.6 1.2-3.5.7-.9 1.8-1.3 3-1.3.5 0 .9.1 1.3.2.5.1.9.3 1.4.6v2.9c-.6-.3-1-.4-1.3-.6-.3-.1-.6-.1-.8-.1-.5 0-.9.1-1.2.4-.3.3-.4.7-.4 1.2 0 .4.1.8.3 1.2.3.4.8.9 1.6 1.6 1 1 1.7 1.8 2 2.4.3.6.5 1.4.5 2.3 0 1.5-.4 2.7-1.2 3.5-.9.9-2 1.3-3.4 1.3-.5 0-1 0-1.5-.2-.4-.1-.9-.3-1.3-.5m8.4 0v-3.5c.4.4.8.7 1.2.8.4.2.8.3 1.2.3.5 0 1-.1 1.3-.4.3-.3.4-.7.4-1.2 0-.7-.4-1.3-1.2-2.1-.3-.2-.4-.3-.5-.4-1-1-1.7-1.8-2.1-2.5-.3-.7-.5-1.5-.5-2.4 0-1.5.4-2.6 1.2-3.5.7-.9 1.8-1.3 3-1.3.5 0 .9.1 1.3.2.5.1.9.3 1.4.6v2.9c-.6-.3-1-.4-1.3-.6-.3-.1-.6-.1-.8-.1-.5 0-.9.1-1.2.4-.3.3-.4.7-.4 1.2 0 .4.1.8.3 1.2.3.4.8.9 1.6 1.6 1 1 1.7 1.8 2 2.4.3.6.5 1.4.5 2.3 0 1.5-.4 2.7-1.2 3.5-.9.9-2 1.3-3.4 1.3-.5 0-1 0-1.5-.2-.4-.1-.9-.3-1.3-.5M163.6 46.8v-2.6h.8l.4 1.8.5-1.8h.8v2.6h-.5v-2l-.5 2h-.5l-.5-2v2z%22%3E%3C/path%3E %3Cpath d=%22M26 27h-8v26.7c0 3.5 2.7 6.3 6.1 6.3h146.5v-3.3H31.5c-3.1 0-5.5-2.5-5.5-5.6V27zm3.2 21.6c0 2.7 2.1 4.8 4.7 4.8h136.7v-3.3h-137c-.7 0-1.2-.5-1.2-1.2V27h-3.2v21.6zm19.4-11.5l-.4-2.5-.3 2.5-.7 4.4h2.2l-.8-4.4zm1.4-6.8l3.8 16.5h-3.3l-.6-2.8h-3.2l-.6 2.8H43l3.7-16.5H50zM166.6 46.8h.5v-.5h-.5zM168.1 45.3h.8c.1 0 .2-.1.2-.1V45v-.2c-.1-.1-.1-.1-.2-.1-.1-.1-.2-.1-.4-.1h-.4v.7zm-.5 1.5v-2.6h1.1c.2 0 .4 0 .6.1.1 0 .2.1.3.2 0 .1.1.3.1.4 0 .2-.1.4-.2.5-.1.2-.3.2-.5.3.1 0 .2.1.3.2 0 .1.1.2.3.4l.3.5h-.6l-.4-.5c-.1-.2-.2-.4-.3-.4 0-.1-.1-.1-.1-.1-.1-.1-.2-.1-.3-.1h-.1v1.1h-.5zM170.2 46.8h.4v-.5h-.4z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E\", ar: 4.559, mono: false },\n \"paypal\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1310 439.6%22%3E%3Cpath d=%22M1310 0v328.3h-74.7V0zm-102.2 110.8v218.1h-66.4v-18.8c-8.4 8.2-18 14.4-28.6 18.8a87 87 0 0 1-34.7 7c-15.6 0-30.1-2.9-43.4-8.7-13.3-6.1-24.9-14.4-34.7-24.8-9.9-10.5-17.7-22.7-23.5-36.6-5.5-14.2-8.2-29.5-8.2-45.8s2.7-31.4 8.2-45.3c5.8-14.2 13.6-26.6 23.5-37.1a104.5 104.5 0 0 1 34.7-24.4c13.3-6.1 27.8-9.2 43.4-9.2 12.4 0 24 2.3 34.7 7a88 88 0 0 1 28.6 18.8V111h66.4zm-117.7 158.7c13.6 0 24.7-4.6 33.4-14q13.5-13.95 13.5-35.7c0-21.75-4.5-26.5-13.5-35.7-8.7-9.3-19.9-14-33.4-14s-24.9 4.6-33.9 14c-8.7 9.3-13 21.2-13 35.7s4.4 26.5 13 35.7c9 9.3 20.3 14 33.9 14M861.7 0c19.7 0 36.5 2.8 50.4 8.3s25.6 13.2 35.2 23.1c9.8 10.2 17.5 21.8 23 34.9s8.2 27.2 8.2 42.3-2.7 29.2-8.2 42.3a112 112 0 0 1-23 34.9c-9.5 9.9-21.3 17.6-35.2 23.1s-30.7 8.3-50.4 8.3h-36v111.6h-76V0zm-10.9 149.6c10.2 0 17.9-1 23.5-3.1 5.8-2.3 10.6-5.3 14.3-8.7 7.8-7.3 11.7-17 11.7-29.2s-3.9-21.9-11.7-29.2c-3.8-3.5-8.5-6.3-14.3-8.3-5.5-2.3-13.3-3.5-23.5-3.5h-25.2v82zm-381.1-38.8h82.5l56 104.6h.9L659 110.8h76.4L571.7 439.6h-76l74.7-150.4zm-14.7 0v218.1h-66.4v-18.8c-8.4 8.2-18 14.4-28.6 18.8a87 87 0 0 1-34.7 7c-15.6 0-30.1-2.9-43.4-8.7-13.3-6.1-24.9-14.4-34.7-24.8-9.8-10.5-17.7-22.7-23.5-36.6-5.5-14.2-8.2-29.5-8.2-45.8s2.7-31.4 8.2-45.3c5.8-14.2 13.6-26.6 23.5-37.1a103.5 103.5 0 0 1 34.7-24.4c13.3-6.1 27.8-9.2 43.4-9.2 12.4 0 24 2.3 34.7 7a88 88 0 0 1 28.6 18.8V111H455zM337.3 269.5c13.6 0 24.7-4.6 33.5-14q13.5-13.95 13.5-35.7c0-21.75-4.5-26.5-13.5-35.7-8.7-9.3-19.9-14-33.5-14s-24.9 4.6-33.9 14c-8.7 9.3-13 21.2-13 35.7s4.4 26.5 13 35.7c9 9.3 20.3 14 33.9 14M112 0c19.7 0 36.5 2.8 50.4 8.3s25.6 13.2 35.2 23.1c9.8 10.2 17.5 21.8 23 34.9s8.2 27.2 8.2 42.3-2.7 29.2-8.2 42.3a112 112 0 0 1-23 34.9c-9.5 9.9-21.3 17.6-35.2 23.1s-30.7 8.3-50.4 8.3H76v111.6H0V0zm-10.8 149.6c10.2 0 17.9-1 23.5-3.1 5.8-2.3 10.6-5.3 14.3-8.7 7.8-7.3 11.7-17 11.7-29.2s-3.9-21.9-11.7-29.2c-3.8-3.5-8.5-6.3-14.3-8.3-5.5-2.3-13.3-3.5-23.5-3.5H76v82z%22/%3E%3C/svg%3E\", ar: 2.98, mono: true },\n \"santander\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 version=%221.0%22 viewBox=%224 3.75 391.5 79%22%3E%3Cpath d=%22M-137.26 287.82a17.5 17.5 0 0 0 .55 7.23c.95 2.87 2.27 4.94 7.12 11.25 5.12 6.66 6.76 9.08 7.98 12.53 1 2.83 1.02 4.46.59 7.02 4.49.86 11.84 3.24 16.77 6.2 4.57 2.81 7.9 6.46 9.11 10 .72 2.09.7 5.33-.07 7.36a16 16 0 0 1-3.22 5.2c-5.9 6.46-17.6 11.1-31.67 12.59-3.11.32-10.74.56-13.36.4-18.8-1.1-33.92-7.59-38.22-16.42-1.8-3.67-1.75-6.83.14-10.46 1.55-3 5.82-6.7 10.83-9.4a85 85 0 0 1 14.2-5.43c.24 3.17 6.4 10.74 8.45 13.42 4.46 5.84 6.22 8.62 7.48 10.85.76 1.33 1.18 2.19.97 4.74 0 0 1.72-1.56 2.36-2.87.84-1.71 1.14-3.44.98-5.67-.2-2.68-.65-4.32-1.93-6.94-1.25-2.55-3.03-5.13-6.43-9.3-4.79-5.88-6.56-9.1-7.3-13.3-.8-4.66.5-9.6 3.18-12.02a10 10 0 0 1 1.53-1.04s-.08 1.2-.08 2.57c0 2.88.33 4.38 1.43 6.58 1.38 2.73 3.28 5.28 9.11 12.22 5.16 6.14 6.76 9.26 6.76 13.16v1.88s1.37-1.04 2-2c2-3.01 2.32-7.72.8-11.9-1.05-2.86-2.74-5.46-7.74-11.75-5.1-6.4-7.23-11.53-7.23-15.8s.92-8.35 4.91-10.9%22 style=%22fill:%23fe001e;fill-opacity:1;display:inline%22 transform=%22translate(184.65 -280.17)scale(.98661)%22/%3E%3Cg style=%22fill:%23fe001e;fill-opacity:1%22%3E%3Cpath d=%22M-41.6 350.75c.12-1.43.02-2.84-.14-3.59-.61-2.94-2.79-5.9-5.93-8.08a64 64 0 0 0-6.79-3.51c-5.94-2.75-7.6-3.74-9.09-5.4a7.2 7.2 0 0 1-2-5.38c0-1.55.08-2.01.58-3.1 1.62-3.52 5.65-5.4 10.35-4.8 2.76.35 4.21.97 5.84 2.5 1.7 1.59 2.57 3.43 3.04 6.46l.14 1.71h2.57l-.22-11.75-.85-.21c-.65-.16-4.9-.97-7.16-1.26-3.37-.42-4.73-.47-6.71-.24-3.84.44-7.01 1.9-9.4 4.31a12.2 12.2 0 0 0-3.81 8.4c-.2 3.42.9 6.25 3.34 8.67 2.04 2.03 2.92 2.56 9.24 5.57 8.1 3.85 9.93 4.99 11.16 7.88 1.06 2.51 1.14 5.33.04 7.59-2.82 5.76-11.7 7.26-17.22 2.92a11.4 11.4 0 0 1-4.06-6.61l-.26-1.34h-2.19l.39 11.26s4.2 1.13 6.17 1.33c1.48.16 2.95.45 4.44.45 3 0 4.38.39 7.48-.64 3.2-1.07 10.26-3.2 11.06-13.14m19.71-18.49c3.42 0 6.4 1.5 7.83 3.7a8.6 8.6 0 0 1 1.36 5.06v16.24c0 1.93 1.39 2.55 3.4 1.87l1.51-.58v2.13l-7.48 3.27c-.87.39-1.46-.5-1.88-2.13l-.47-1.57-1.24.98a11.7 11.7 0 0 1-7.52 2.66c-3.23.01-5.34-.43-7.44-3.78a8 8 0 0 1-.26-6.4c.96-2.18 2.86-3.3 10.85-6.39l5.4-2.02v-1.5c0-5.55-1.5-7.26-3.42-8.33-1.55-.86-3.6-.64-5.56.64-1.61 1.06-2.1 2.84-1.27 4.67.64 1.41.42.97.42 1.02l-4.39 2.31s-.76-1.3-.97-2c-1.01-3.3.28-5.17 5.24-7.9 2.59-1.42 4.11-1.95 5.89-1.95m4.06 15.39s-7.03 2.97-8.38 3.65c-1.08.55-2.32 1.53-2.73 2.33a5 5 0 0 0 .21 4.06 5.4 5.4 0 0 0 2.35 2.35c.35.15 1.53.42 2.35.43q2.52.02 5.22-2.18l.98-.81zm22.01-15.39v5.75l1.46-1.39c3.19-3 6.23-4.36 8.58-4.36 5.34 0 10.25 4.7 10.04 11.33v15.38c0 1.71.43 2.78 2.14 2.78h2.77v2.14H14.44v-2.14h2.14c1.7 0 2.35-1.07 2.35-2.78V343.6c0-3.2-1.18-4.8-2.14-5.77-1.28-1.28-2.84-1.64-5.13-1.5-1.77.12-3.6 1.06-5.68 2.75l-1.37 1.1v19.87c0 1.07.43 1.71 1.5 1.71h2.78v2.14H-5.64v-2.14h1.92c1.7 0 3-1.07 3-2.78v-16.45c0-4.27-1.3-5.55-4.92-3.63v-2.29c2.35-.7 6.62-2.84 8.97-4.34zm41.23 31.63c1.93 0 2.38-.22 4.17-1.73l3.52-2.97-.85-1.5-1.57.84c-2.35 1.25-4.2 1.51-6.55.44-2-.9-3.2-4.06-3.2-5.77v-17.3h9.82l1.07-3h-10.9v-9.82h-1.06c-2.57 4.7-6.41 9.18-11.11 11.96v.86h6.83v17.3c0 4.06 1.5 7.05 3.85 8.76a8.6 8.6 0 0 0 5.98 1.93m22.65-31.63c3.42 0 6.41 1.5 7.83 3.7a8.6 8.6 0 0 1 1.36 5.06v16.24c0 1.93 1.4 2.55 3.4 1.87l1.51-.58v2.13l-7.48 3.27c-.87.39-1.46-.5-1.87-2.13l-.48-1.57-1.24.98a11.7 11.7 0 0 1-7.52 2.66c-3.22.01-5.34-.43-7.44-3.78a8 8 0 0 1-.26-6.4c.96-2.18 2.87-3.3 10.85-6.39l5.4-2.02v-1.5c0-5.55-1.5-7.26-3.42-8.33-1.54-.86-3.6-.64-5.55.64-1.62 1.06-2.11 2.84-1.28 4.67.64 1.41.42.97.42 1.02l-4.39 2.31s-.75-1.3-.97-2c-1-3.3.28-5.17 5.24-7.9 2.6-1.42 4.11-1.95 5.9-1.95m4.06 15.39s-7.03 2.97-8.38 3.65c-1.08.55-2.32 1.53-2.73 2.33a5 5 0 0 0 .21 4.06 5.4 5.4 0 0 0 2.35 2.35c.36.15 1.53.42 2.35.43q2.52.02 5.22-2.18l.98-.81zm22-15.39v5.75l1.47-1.39c3.18-3 6.22-4.36 8.57-4.36 5.34 0 10.26 4.7 10.04 11.33v15.38c0 1.71.43 2.78 2.14 2.78h2.78v2.14h-14.75v-2.14h2.14c1.7 0 2.35-1.07 2.35-2.78V343.6c0-3.2-1.18-4.8-2.14-5.77-1.28-1.28-2.84-1.64-5.12-1.5-1.78.12-3.6 1.06-5.7 2.75l-1.36 1.1v19.87c0 1.07.43 1.71 1.5 1.71h2.78v2.14H84.3v-2.14h1.92c1.71 0 3-1.07 3-2.78v-16.45c0-4.27-1.29-5.55-4.92-3.63v-2.29c2.35-.7 6.62-2.84 8.97-4.34zm63.46 27.99v-2.13c-2.35 1.07-3.42 1.07-4.23.52-1.15-.78-1.12-2.23-1.12-2.23v-47h-.64a49 49 0 0 1-10.04 4.9v2.36c1.71-.64 2.99-.98 4.06-.43.7.39 1.07.85 1.07 1.92v15.98l-1.26-.5c-2.51-1.03-3.81-1.26-6.86-1.26-2.55 0-3.08.08-4.6.58-7.02 2.35-11.52 9.21-11.15 17.03.21 4.47 1.5 7.98 4.43 10.48 2.99 2.56 5.55 3.42 8.54 3.42 4.06 0 6.41-.81 9.36-2.81.9-.61 1.75-1.25 1.75-1.25a8.7 8.7 0 0 0 1.5 4.48zm-22.15-.38c-4-1.42-6.9-6.35-7.27-12.33-.47-7.48 3.67-12.71 10.06-12.71 2.69 0 4.75.73 7.23 2.58l1.23.91-.1 19.2-1.38.83a10.4 10.4 0 0 1-6.21 1.83c-2 .07-2.67.01-3.56-.3m45.11 3.69a26 26 0 0 0 6.95-3.1v-2.14c-2.35 1.71-6.08 2.77-9.4 2.78q-5.43 0-8.34-3.2c-2.83-3.16-3.63-5.77-4.12-12.18h22.5s0-3.21-1.28-6.2c-.88-2.05-1.71-3.63-4.06-5.13-2.2-1.4-5.17-2-7.7-2-2.62-.03-3.02.02-4.45.54-6.65 2.43-11.17 9.32-10.62 16.17.54 6.63 4.4 11.94 10.25 14.07 2.59.95 7.47 1.13 10.27.39m-12.28-26.4c1.5-1.49 3.2-2.34 5.98-2.34 2.56 0 4.27.64 5.98 2.35 1.29 1.28 1.93 2.35 2.2 5.98h-16.78c.27-2.56 1.12-4.49 2.62-5.98m32.48-4.92v7.06a23 23 0 0 1 4.05-5.13 7 7 0 0 1 4.92-1.93c1.07 0 3.84.86 3.84.86v6.4h-1.06c-.43-1.7-1.93-2.55-4.06-2.55-2.78 0-4.6 1.12-5.72 2.8s-1.55 2.54-1.55 6.17v14.1c0 1.07.43 1.71 1.5 1.71h2.78v2.14h-14.53v-2.14h1.92c1.7 0 3-1.07 3-2.78v-16.45c0-4.7-1.72-4.49-4.71-3.2v-2.14c2.78-1.07 6.2-2.57 8.76-4.92z%22 style=%22fill:%23fe001e;fill-opacity:1;display:inline%22 transform=%22translate(184.65 -280.17)scale(.98661)%22/%3E%3C/g%3E%3C/svg%3E\", ar: 4.956, mono: false },\n \"scotiabank\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.14 0.09 71.91 10.28%22%3E%3Cpath d=%22M6.73 8.37q.24-.6.23-1.25c.02-.63-.2-1.24-.6-1.72a5 5 0 0 0-2.31-1.23q-.3-.09-.6-.22-.27-.13-.46-.33a.8.8 0 0 1-.2-.55c.01-.3.18-.57.44-.7a2 2 0 0 1 1.68 0q.36.12.69.32l.9-1.8A5 5 0 0 0 3.77.13q-.7 0-1.36.23A3 3 0 0 0 .7 2.06q-.24.6-.23 1.25c.02.68.31 1.32.8 1.8q.7.6 1.6.9l.8.27q.3.12.57.3a1 1 0 0 1 .31.36q.1.2.07.43a1 1 0 0 1-.3.58q-.44.31-.98.27-.61 0-1.18-.28a9 9 0 0 1-.95-.53L.13 9.27a4.8 4.8 0 0 0 4.62.84q.66-.23 1.21-.68.5-.46.77-1.06m5.82-.58a1.57 1.57 0 1 1 0-1.96l1.4-1.41a3.5 3.5 0 0 0-2.62-1.17c-1.96 0-3.65 1.4-3.65 3.55 0 2.16 1.7 3.56 3.66 3.56 1 0 1.96-.42 2.63-1.16zm0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3Cpath d=%22M17.6 3.25a3.56 3.56 0 1 0-.01 7.11 3.56 3.56 0 0 0 0-7.11m0 5.12a1.57 1.57 0 1 1 .02-3.14 1.57 1.57 0 0 1-.02 3.14m8.09-4.95h-.97v-2.1h-2.13v2.1h-.97v1.92h.97v4.85h2.13V5.34h.97zM27.72.13a1.19 1.19 0 1 0 0 2.38 1.19 1.19 0 0 0 0-2.38m-1.06 3.29h2.12v6.77h-2.12zM37.1 10.2V3.42h-2.08v.71l-.2-.16a2.6 2.6 0 0 0-1.79-.72c-1.83 0-3.37 1.63-3.37 3.55 0 1.93 1.55 3.56 3.37 3.56.67 0 1.31-.25 1.8-.72l.2-.17v.72Zm-3.72-1.8a1.6 1.6 0 1 1 .02-3.2 1.6 1.6 0 0 1-.02 3.2m6.88 1.8v-.72l.2.17a2.6 2.6 0 0 0 1.8.72c1.82 0 3.37-1.63 3.37-3.56s-1.55-3.56-3.38-3.56c-.67 0-1.31.26-1.8.72l-.19.17V.3H38.2v9.9Zm.05-3.39a1.6 1.6 0 1 1 1.6 1.6 1.6 1.6 0 0 1-1.6-1.6m13.47 3.39V3.42h-2.07v.71l-.2-.16a2.6 2.6 0 0 0-1.79-.72c-1.83 0-3.37 1.63-3.37 3.55 0 1.93 1.55 3.56 3.37 3.56.67 0 1.32-.25 1.8-.72l.2-.17v.72Zm-3.7-1.8a1.6 1.6 0 1 1 0-3.2 1.6 1.6 0 0 1 0 3.2m8.12-3.16c.69 0 1.26.57 1.26 1.27v3.7h2.12V6.24c0-1.8-1.04-2.97-2.68-2.97-.68 0-1.39.3-1.97 1.24V3.44H54.8v6.76h2.11V6.5a1.27 1.27 0 0 1 1.28-1.26m11.13 4.96-2.6-3.4 2.42-3.38h-2.48L64.7 6.16V.3h-2.13v9.9h2.13V7.4l2.14 2.8zm1.5-2.37a1.19 1.19 0 1 0-.01 2.37 1.19 1.19 0 0 0 .01-2.37m0 2.13a.95.95 0 1 1 0-1.9.95.95 0 0 1 0 1.9m0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3Cpath d=%22M70.82 9.2h-.19v.46h-.23v-1.3h.5c.23 0 .42.2.42.43q-.02.27-.24.38l.27.49h-.28Zm-.19-.2h.27q.18-.02.2-.2a.2.2 0 0 0-.2-.2h-.27zm0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3C/svg%3E\", ar: 6.995, mono: false },\n \"soriana\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 4319.99 1077.31%22%3E%3Cg fill=%22none%22 fill-rule=%22evenodd%22%3E%3Cpath fill=%22%23d52b1e%22 d=%22M938.1 105.38c-57.36 0-136.87 24.37-194.64 103.86-10.61 14.5-19.28 32.96-24.38 51.13-17.65 61.93-5.24 130.1 33.48 182.3 29.69 40.18 67.58 70.24 101.03 96.77 16.35 12.96 51.07 45.8 62.27 59.71 16.7 20.9 29.4 33.33 44.5 79.3 9.13 27.9 10.43 64.65 5.95 85.48 104.7-106.15 219.06-243.93 219.06-393.8 0-172.18-123.34-264.75-247.26-264.75%22/%3E%3Cpath fill=%22%23b6bf00%22 d=%22M743.28 687.53c-43.7-59.53-94.24-95.66-135.96-133.74-18.2-16.57-38.14-28.79-52.89-43.5-70.76-70.3-103.83-156.94-87.11-263.62 13.2-83.65 54.74-138.6 104.91-178.97C512.34 23.82 441.28 0 361 0 161.68 0-4.95 160.15.1 357.63 9.15 714.1 455.63 1017.85 639.6 1080c98.37-50.36 150.64-144.53 150.64-241.15 0-70.45-30.18-128.49-46.96-151.32%22/%3E%3Cpath fill=%22%23d52b1e%22 d=%22M1490.98 682.22c34.28 24.6 101.98 56.22 149.96 56.22 36.88 0 68.63-14.04 68.63-54.4 0-39.5-49.78-53.57-100.29-73.75-58.32-22.83-116.58-58.93-116.58-153.73 0-126.33 91.68-193.16 224.61-193.16 87.36 0 165.3 44.8 205.6 92.32l-87.41 92.91c-39.4-34.13-83.1-59.64-125.13-59.64-34.28 0-59.93 14.04-59.93 45.66 0 43.05 36.82 53.54 99.36 79.92 59.96 25.43 121.67 62.34 121.67 152.84 0 122.84-97.69 201.87-236.52 201.87-97.75 0-179.99-41.26-212.5-67.58l68.5-119.48zm698.76-42.64c5.09-28 6.78-53.36 6.78-72.46 0-41.96-12.74-67.27-42.49-67.27-39.9 0-66.25 40.12-79.02 112.7-5.1 27.83-7.65 57.6-7.65 80.22 0 38.45 10.18 69.86 41.65 69.86 41.6 0 66.28-37.58 80.73-123.05m-11.95-244.45c60.4 0 166.6 23.5 166.6 168.48 0 19.25-.86 41.87-4.32 65.47-26.23 171.17-131.64 240.2-252.29 240.2-105.34 0-164.87-62.95-164.87-174.65 0-20.99.84-46.3 5.06-70.76 31.45-183.38 152.13-228.74 249.82-228.74m353.81 447.8h-134.54l58.82-352.67 3.2-82.48h108l2.38 60.45c29.84-53.57 71.75-73.14 105.53-73.14 23.46 0 48.39 5.96 64.5 16.98l-38.67 118.18c-15.27-8.58-34.68-15.3-54.74-15.3-34.74 0-62.08 22.03-69.33 62.02l-45.15 265.99zm181.56 0 73.75-421.45h136.98l-73.78 421.44Zm170.34-632.18c41.22 0 66.74 30.5 66.74 67.67 0 50.46-40.4 90.35-92.23 90.35-42.1 0-65.82-27.61-65.82-65.6 0-49.43 38.63-92.45 91.3-92.45m358.97 293.7c-9.63-4.32-23.45-7-39.2-7-79.17 0-107.74 119.88-107.74 191.74 0 41.9 9.5 75.94 51.22 75.94 29.62 0 50.45-19.07 59.12-49.7l36.57-210.98zm97.32 257.29-6.08 94.51h-122.62v-41.16l-4.36-.83c-30.36 35.88-69.49 55.05-121.66 55.05-93.07 0-134.85-68.97-134.85-163.6 0-179.38 99.2-310.55 280.92-310.55 36.45 0 101.68 8.7 166.9 34.93zm58.26 81.21 59.5-347.57 4.93-87.57h114.05l1.66 46.78c32.22-36.54 75.2-59.43 130.6-59.43 68.56 0 109.87 32.24 110.7 105.31 0 13.58-1.66 30.67-4.16 46.69l-51.2 295.8h-138.05l43.05-254.08c2.47-13.58 6.57-33.2 6.57-49.31 0-17-6.57-35.67-31.41-35.67-35.58 0-56.22 27.24-62.02 62.85l-47.06 276.2zm766.27-338.5c-9.56-4.32-23.5-7-39.12-7-79.15 0-107.85 119.88-107.85 191.74 0 41.9 9.57 75.94 51.35 75.94 29.5 0 50.42-19.07 59.09-49.7zm97.39 257.29-6.11 94.51h-122.6v-41.16l-4.35-.83c-30.45 35.88-69.55 55.05-121.67 55.05-93.06 0-134.78-68.97-134.78-163.6 0-179.38 99.08-310.55 280.83-310.55 36.47 0 101.68 8.7 166.97 34.93z%22/%3E%3C/g%3E%3C/svg%3E\", ar: 4.01, mono: false },\n \"stp\": { src: \"data:image/png;base64,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\", ar: 1, mono: false },\n \"ups\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 viewBox=%220 0 73.48 87.13%22%3E%3Cdefs%3E%3Cpath id=%22a%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22b%22%3E%3Cuse xlink:href=%22%23a%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%231E0000%22 d=%22M36.73-.12c-14.4 0-26.28 2.74-36.75 8.29V51c0 9.15 3.44 16.8 9.95 22.14 5.87 4.82 24.67 13.06 26.8 13.99 2.13-.93 20.92-9.17 26.8-13.99 6.5-5.34 9.95-13 9.95-22.14V8.17C63 2.62 51.13-.13 36.73-.13%22 clip-path=%22url(%23b)%22/%3E%3Cdefs%3E%3Cpath id=%22c%22 d=%22M.73 8.62V51c0 8.91 3.35 16.37 9.68 21.56 5.8 4.75 24.2 12.83 26.32 13.75 2.11-.92 20.53-9 26.32-13.75 6.33-5.19 9.68-12.65 9.68-21.56V8.62c-10-5.3-22.11-8-36-8s-26 2.7-36 8%22/%3E%3C/defs%3E%3CclipPath id=%22f%22%3E%3Cuse xlink:href=%22%23c%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3CradialGradient id=%22d%22 cx=%22-14.27%22 cy=%22101%22 r=%221%22 gradientTransform=%22matrix(0 119.608 59.804 0 -6028.71 1722.48)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFDC00%22/%3E%3Cstop offset=%22.35%22 stop-color=%22%23FFBE00%22/%3E%3Cstop offset=%221%22 stop-color=%22%23C86E14%22/%3E%3C/radialGradient%3E%3Cpath fill=%22url(%23d)%22 d=%22M.73.63h72v85.68h-72z%22 clip-path=%22url(%23f)%22/%3E%3Cdefs%3E%3Cpath id=%22g%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22h%22%3E%3Cuse xlink:href=%22%23g%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%23C86E14%22 d=%22M59.7 81.45v3.67h.67V83.6h.1l1 1.53h.8l-1.1-1.62c.48-.11.8-.46.8-.97 0-.53-.32-1.08-1.22-1.08zm.97.53c.57 0 .64.28.64.52 0 .35-.15.58-.86.58h-.08v-1.1zm2.6 1.32a2.49 2.49 0 1 1-4.98-.02 2.49 2.49 0 0 1 4.98.02m-2.5-3.03a3.03 3.03 0 0 0 0 6.05 3.02 3.02 0 1 0 0-6.05%22 clip-path=%22url(%23h)%22/%3E%3Cdefs%3E%3Cpath id=%22i%22 d=%22M35.49 33.65v19.24c.45.17 1.18.38 2.03.38 3.6 0 5.33-3.3 5.33-10.15 0-7.02-1.5-9.92-5.14-9.92-.85 0-1.71.2-2.22.45M19.76 52.4V28.79H26v27.17c-2.4 1.63-5.6 2.52-9.44 2.52-6.2 0-9.34-3.37-9.34-10V28.79h6.26v19.97c0 1.77.43 4.4 3.3 4.4 1.28 0 2.29-.3 2.97-.76m9.46-22.02c2.27-1.46 5.03-2.23 8.45-2.23 7.47 0 11.58 5.68 11.58 14.8 0 9.16-4 15.42-10.94 15.42-1.29 0-2.2-.17-2.82-.36V71.2h-6.27zm31.46 19.44c-.04-1.96-1.15-3.03-3.9-4.65-5.17-3.03-6.1-5.52-6.11-8.85-.03-5.06 4.28-8.05 8.4-8.17 3.44-.1 5.77 1.2 6.87 2.04v5.44a8.4 8.4 0 0 0-5.6-2.57c-1.78-.02-3.63.77-3.69 3-.06 2.27 1.78 3.17 4.12 4.54 5.23 3.08 6.24 5.84 6.12 9.5-.12 4-2.88 8.38-9.06 8.38a13.7 13.7 0 0 1-6.89-1.95v-5.77c1.6 1.43 4 2.54 5.99 2.55h.02c2.29 0 3.79-1.31 3.73-3.49M4.04 26.76V51c0 7.9 2.92 14.49 8.47 19.01C17.4 74 32.47 80.82 36.72 82.7c4.2-1.85 19.23-8.59 24.22-12.69 5.58-4.6 8.47-11.04 8.47-19.01V9.51c-4.45-.41-9.06-.69-13.77-.69-17.45 0-36.15 3.75-51.61 17.94%22/%3E%3C/defs%3E%3CclipPath id=%22k%22%3E%3Cuse xlink:href=%22%23i%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3CradialGradient id=%22j%22 cx=%22-14.27%22 cy=%22101%22 r=%221%22 gradientTransform=%22matrix(0 118.6833 59.3417 0 -5981.98 1709.35)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%234B3333%22/%3E%3Cstop offset=%22.35%22 stop-color=%22%23351A1A%22/%3E%3Cstop offset=%22.85%22 stop-color=%22%231E0000%22/%3E%3Cstop offset=%221%22 stop-color=%22%231E0000%22/%3E%3C/radialGradient%3E%3Cpath fill=%22url(%23j)%22 d=%22M4.04 8.82h65.38V82.7H4.04z%22 clip-path=%22url(%23k)%22/%3E%3Cdefs%3E%3Cpath id=%22l%22 d=%22M4.04 51c0 7.9 2.92 14.49 8.46 19.01C17.4 74 32.48 80.82 36.73 82.7v-.5c-3.53-1.55-18.98-8.5-23.94-12.54-5.43-4.42-8.3-10.88-8.3-18.66z%22/%3E%3C/defs%3E%3CclipPath id=%22n%22%3E%3Cuse xlink:href=%22%23l%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22m%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.92%22 y2=%22100.92%22 gradientTransform=%22rotate(-136 638.5 -2395.2)scale(45.5362)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%22.02%22 stop-color=%22%23E39C15%22/%3E%3Cstop offset=%22.18%22 stop-color=%22%23DC9116%22/%3E%3Cstop offset=%22.4%22 stop-color=%22%23D88A17%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D78817%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23m)%22 d=%22M20.95 99.04-11.8 67.4l31.6-32.74L52.57 66.3%22 clip-path=%22url(%23n)%22/%3E%3Cdefs%3E%3Cpath id=%22o%22 d=%22M68.97 51c0 7.84-2.8 14.12-8.31 18.66-4.8 3.95-19.3 10.5-23.93 12.55v.49c4.2-1.85 19.23-8.59 24.21-12.7 5.59-4.59 8.48-11.03 8.48-19z%22/%3E%3C/defs%3E%3CclipPath id=%22q%22%3E%3Cuse xlink:href=%22%23o%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22p%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(-44 5492.21 -3109.85)scale(45.5362)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23p)%22 d=%22m20.89 66.3 32.75-31.64L85.26 67.4 52.5 99.03%22 clip-path=%22url(%23q)%22/%3E%3Cdefs%3E%3Cpath id=%22r%22 d=%22m4.04 26.76.45.2C17.54 15.06 34.27 9.27 55.65 9.27c4.17 0 8.54.22 13.32.65l.45-.41c-4.45-.41-9.06-.69-13.77-.69-17.45 0-36.15 3.75-51.61 17.94%22/%3E%3C/defs%3E%3CclipPath id=%22t%22%3E%3Cuse xlink:href=%22%23r%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22s%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.97%22 y2=%22100.97%22 gradientTransform=%22rotate(-19.2 19730.5 -6247.85)scale(67.419)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%22.97%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23s)%22 d=%22m-1.6 10.79 63.95-22.27L75.05 25 11.11 47.26%22 clip-path=%22url(%23t)%22/%3E%3Cdefs%3E%3Cpath id=%22u%22 d=%22M42.4 43.12c0 5.53-1.1 9.7-4.88 9.7v.45c3.6 0 5.33-3.3 5.33-10.15z%22/%3E%3C/defs%3E%3CclipPath id=%22w%22%3E%3Cuse xlink:href=%22%23u%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22v%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(-63.3 920.39 -716.09)scale(11.4647)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%221%22 stop-color=%22%23BF7312%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23v)%22 d=%22m33.45 51.22 5.15-10.24 8.32 4.19-5.15 10.24%22 clip-path=%22url(%23w)%22/%3E%3Cdefs%3E%3Cpath id=%22x%22 d=%22M35.49 52.9c.45.16 1.18.37 2.03.37v-.45c-.61 0-1.17-.12-1.58-.25z%22/%3E%3C/defs%3E%3CclipPath id=%22z%22%3E%3Cuse xlink:href=%22%23x%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22y%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.01%22 y2=%22101.01%22 gradientTransform=%22rotate(-173 12.05 -79.76)scale(2.064)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23F0AF13%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23y)%22 d=%22m37.5 53.52-2.1-.26.12-.93 2.09.25%22 clip-path=%22url(%23z)%22/%3E%3Cdefs%3E%3Cpath id=%22A%22 d=%22m35.49 33.65.45.3a5 5 0 0 1 1.77-.3v-.45c-.85 0-1.71.2-2.22.45%22/%3E%3C/defs%3E%3CclipPath id=%22C%22%3E%3Cuse xlink:href=%22%23A%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22B%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.02%22 y2=%22101.02%22 gradientTransform=%22rotate(-14.7 1017.85 -360.03)scale(2.26)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23B)%22 d=%22m35.3 33.25 2.27-.6.32 1.25-2.26.59%22 clip-path=%22url(%23C)%22/%3E%3Cdefs%3E%3Cpath id=%22D%22 d=%22M37.7 33.65c3.7 0 4.7 3.45 4.7 9.47h.45c0-7.02-1.5-9.92-5.14-9.92z%22/%3E%3C/defs%3E%3CclipPath id=%22F%22%3E%3Cuse xlink:href=%22%23D%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22E%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(-116.9 301.64 -605.19)scale(11.171)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23E)%22 d=%22m38.76 45.19-5.05-9.96 8.08-4.1 5.06 9.96%22 clip-path=%22url(%23F)%22/%3E%3Cdefs%3E%3Cpath id=%22G%22 d=%22M50.22 36.32h.45c-.03-5.06 4.28-8.04 8.4-8.17l-.01-.44c-4.56.13-8.87 3.46-8.84 8.6%22/%3E%3C/defs%3E%3CclipPath id=%22I%22%3E%3Cuse xlink:href=%22%23G%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22H%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(137.9 -303.69 -564.18)scale(12.334)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23H)%22 d=%22m63.36 32.45-9.18 8.29-8.27-9.16 9.17-8.3%22 clip-path=%22url(%23I)%22/%3E%3Cdefs%3E%3Cpath id=%22J%22 d=%22M56.65 36.06h.45c.02-.6.3-2.55 3.17-2.55l.07-.45h-.06c-1.76 0-3.57.8-3.63 3%22/%3E%3C/defs%3E%3CclipPath id=%22L%22%3E%3Cuse xlink:href=%22%23J%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22K%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.93%22 y2=%22100.93%22 gradientTransform=%22rotate(-41 683.04 -387.68)scale(4.7434)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23K)%22 d=%22m55.17 34.35 3.58-3.11 3.07 3.53-3.58 3.12%22 clip-path=%22url(%23L)%22/%3E%3Cdefs%3E%3Cpath id=%22M%22 d=%22M60.27 33.51c2.6 0 4.8 1.69 6.13 3.23l-.45-1.1a8.4 8.4 0 0 0-5.61-2.58z%22/%3E%3C/defs%3E%3CclipPath id=%22O%22%3E%3Cuse xlink:href=%22%23M%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22N%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.06%22 y2=%22101.06%22 gradientTransform=%22rotate(-152.5 74.72 -359.74)scale(7.0756)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23N)%22 d=%22m65.09 39.25-6.32-3.3 2.81-5.4 6.32 3.3%22 clip-path=%22url(%23O)%22/%3E%3Cdefs%3E%3Cpath id=%22P%22 d=%22m59.06 27.7.01.45c3.44-.1 5.77 1.2 6.88 2.04l.45-.22a11 11 0 0 0-7.34-2.27%22/%3E%3C/defs%3E%3CclipPath id=%22R%22%3E%3Cuse xlink:href=%22%23P%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22Q%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.98%22 y2=%22100.98%22 gradientTransform=%22rotate(17.9 -2574.26 161.57)scale(7.6762)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%221%22 stop-color=%22%23E49F15%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23Q)%22 d=%22m59.75 25.55 7.38 2.38-1.43 4.4-7.37-2.38%22 clip-path=%22url(%23R)%22/%3E%3Cdefs%3E%3Cpath id=%22S%22 d=%22M57.83 58.48v.45c5.67 0 9.36-3.78 9.52-8.82l-.45-.01c-.12 4-2.89 8.38-9.07 8.38%22/%3E%3C/defs%3E%3CclipPath id=%22U%22%3E%3Cuse xlink:href=%22%23S%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22T%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.92%22 y2=%22100.92%22 gradientTransform=%22scale(-12.968 12.968)rotate(44.4 109.2 63.52)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23T)%22 d=%22m71.76 54.6-9.27 9.08-9.08-9.26 9.28-9.08%22 clip-path=%22url(%23U)%22/%3E%3Cdefs%3E%3Cpath id=%22V%22 d=%22M50.5 56.79a14 14 0 0 0 7.33 2.14v-.45a13.7 13.7 0 0 1-6.89-1.95z%22/%3E%3C/defs%3E%3CclipPath id=%22X%22%3E%3Cuse xlink:href=%22%23V%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22W%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.03%22 y2=%22101.03%22 gradientTransform=%22scale(7.64 -7.64)rotate(-16.1 -387.2 -27.03)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23W)%22 d=%22m51.06 54.58 7.4 2.14-1.2 4.16-7.4-2.14%22 clip-path=%22url(%23X)%22/%3E%3Cdefs%3E%3Cpath id=%22Y%22 d=%22M50.94 50.77c1.6 1.42 4 2.53 5.99 2.54v-.45c-2.23-.01-4.8-1.45-6.44-3.1z%22/%3E%3C/defs%3E%3CclipPath id=%22aa%22%3E%3Cuse xlink:href=%22%23Y%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22Z%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.96%22 y2=%22100.96%22 gradientTransform=%22rotate(-154.1 67.44 -362.63)scale(7.3418)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23Z)%22 d=%22m55.7 55.84-6.6-3.2 2.62-5.41 6.6 3.2%22 clip-path=%22url(%23aa)%22/%3E%3Cdefs%3E%3Cpath id=%22ab%22 d=%22M60.23 49.84c.05 2-1.34 3.04-3.3 3.02v.45c2.3.01 3.8-1.3 3.75-3.49z%22/%3E%3C/defs%3E%3CclipPath id=%22ad%22%3E%3Cuse xlink:href=%22%23ab%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22ac%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.08%22 y2=%22101.08%22 gradientTransform=%22rotate(-42.6 724.8 -399.27)scale(5.1262)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23ac)%22 d=%22m55.19 51.43 3.8-3.5 3.5 3.79-3.82 3.5%22 clip-path=%22url(%23ad)%22/%3E%3Cdefs%3E%3Cpath id=%22ae%22 d=%22M50.22 36.32c.01 3.5 1.05 6.14 6.32 9.24 2.83 1.66 3.65 2.62 3.7 4.28l.44-.02c-.04-1.96-1.16-3.03-3.9-4.65-5.17-3.03-6.1-5.52-6.1-8.85z%22/%3E%3C/defs%3E%3CclipPath id=%22ag%22%3E%3Cuse xlink:href=%22%23ae%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22af%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.04%22 y2=%22101.04%22 gradientTransform=%22rotate(55.2 -1779.54 -562.57)scale(17.0604)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%22.4%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.6%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23af)%22 d=%22m57.28 31.41 9.74 14.02-13.4 9.3-9.74-14.01%22 clip-path=%22url(%23ag)%22/%3E%3Cdefs%3E%3Cpath id=%22ah%22 d=%22M60.77 40.6c5.23 3.08 6.24 5.84 6.12 9.5l.45.01c.13-3.73-.9-6.69-6.34-9.9-2.22-1.34-3.96-2.07-3.9-4.14l-.45-.01c-.06 2.27 1.78 3.17 4.12 4.54%22/%3E%3C/defs%3E%3CclipPath id=%22aj%22%3E%3Cuse xlink:href=%22%23ah%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22ai%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.96%22 y2=%22100.96%22 gradientTransform=%22rotate(53.8 -1890.23 -569.12)scale(17.6596)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.4%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%22.6%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D78817%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23ai)%22 d=%22m63.67 30.87 10.5 14.34L60.38 55.3 49.9 40.96%22 clip-path=%22url(%23aj)%22/%3E%3Cdefs%3E%3Cpath id=%22ak%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22al%22%3E%3Cuse xlink:href=%22%23ak%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%238F4A02%22 d=%22M35.49 71.2h-6.27l-.45.45h7.17%22 clip-path=%22url(%23al)%22/%3E%3Cdefs%3E%3Cpath id=%22am%22 d=%22M35.94 58.59q1.06.23 2.37.23v-.45a10 10 0 0 1-2.82-.36z%22/%3E%3C/defs%3E%3CclipPath id=%22ao%22%3E%3Cuse xlink:href=%22%23am%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22an%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.02%22 y2=%22101.02%22 gradientTransform=%22matrix(2.874 .445 .445 -2.874 31.54 354.88)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23an)%22 d=%22m35.56 57.59 2.87.44-.19 1.22-2.87-.45%22 clip-path=%22url(%23ao)%22/%3E%3Cdefs%3E%3Cpath id=%22ap%22 d=%22M49.25 42.96c0 9.15-3.99 15.4-10.94 15.4v.46c8.07 0 11.39-7.71 11.39-15.86z%22/%3E%3C/defs%3E%3CclipPath id=%22ar%22%3E%3Cuse xlink:href=%22%23ap%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aq%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.9%22 y2=%22100.9%22 gradientTransform=%22rotate(125.6 -631.9 -879.37)scale(19.5286)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aq)%22 d=%22M57.2 48.33 45.85 64.21 30.8 53.45l11.37-15.88%22 clip-path=%22url(%23ar)%22/%3E%3Cdefs%3E%3Cpath id=%22as%22 d=%22m28.77 30.14.45.24c2.28-1.46 5.03-2.22 8.45-2.22v-.46c-3.47 0-6.5.8-8.9 2.44%22/%3E%3C/defs%3E%3CclipPath id=%22au%22%3E%3Cuse xlink:href=%22%23as%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22at%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.03%22 y2=%22101.03%22 gradientTransform=%22rotate(165.5 -107.94 -440.95)scale(9.218)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23F0AF13%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23at)%22 d=%22m38.32 30.22-8.99 2.32-1.2-4.67 8.98-2.32%22 clip-path=%22url(%23au)%22/%3E%3Cdefs%3E%3Cpath id=%22av%22 d=%22M37.67 28.16c7.47 0 11.58 5.67 11.58 14.8h.45c0-8.08-3.38-15.26-12.03-15.26z%22/%3E%3C/defs%3E%3CclipPath id=%22ax%22%3E%3Cuse xlink:href=%22%23av%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aw%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.9%22 y2=%22100.9%22 gradientTransform=%22rotate(51.9 -2162.24 -642.68)scale(19.428)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%221%22 stop-color=%22%23A65E0C%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aw)%22 d=%22m45.12 21.86 11.99 15.29L42.25 48.8 30.26 33.51%22 clip-path=%22url(%23ax)%22/%3E%3Cdefs%3E%3Cpath id=%22ay%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22az%22%3E%3Cuse xlink:href=%22%23ay%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%23FFC20E%22 d=%22M13.5 28.79H7.22l-.45-.45h7.16zm12.51 0h-6.25l-.45-.45h7.15z%22 clip-path=%22url(%23az)%22/%3E%3Cpath fill=%22%23D78817%22 d=%22M4.04 51V26.76l.45.2V51zM66.4 36.74v-6.77l-.45.22v5.44zM13.94 48.76V28.34l-.45.45v19.96z%22 clip-path=%22url(%23az)%22/%3E%3Cpath fill=%22%23D89016%22 d=%22M68.97 51V9.92l.45-.41V51zm-18.48-1.24v7.03l.45-.26v-5.77zM19.76 52.4V28.79l-.45-.45v23.81zM7.23 48.48V28.79l-.45-.45v20.14z%22 clip-path=%22url(%23az)%22/%3E%3Cdefs%3E%3Cpath id=%22aA%22 d=%22M6.78 48.48c0 6.63 3.11 10.45 9.8 10.45v-.45c-6.2 0-9.35-3.37-9.35-10z%22/%3E%3C/defs%3E%3CclipPath id=%22aC%22%3E%3Cuse xlink:href=%22%23aA%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aB%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.11%22 y2=%22101.11%22 gradientTransform=%22rotate(47.1 -1815.33 -457.46)scale(14.319)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aB)%22 d=%22m12.04 43.6 9.74 10.48-10.46 9.73-9.75-10.5%22 clip-path=%22url(%23aC)%22/%3E%3Cdefs%3E%3Cpath id=%22aD%22 d=%22M16.57 58.48v.45c4 0 7.24-.93 9.89-2.73l-.45-.24c-2.4 1.63-5.6 2.52-9.44 2.52%22/%3E%3C/defs%3E%3CclipPath id=%22aF%22%3E%3Cuse xlink:href=%22%23aD%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aE%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.98%22 y2=%22100.98%22 gradientTransform=%22scale(-10.2546 10.2546)rotate(14.5 366.91 99.18)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aE)%22 d=%22m27.18 58.74-9.99 2.58-1.34-5.17 9.99-2.59%22 clip-path=%22url(%23aF)%22/%3E%3Cdefs%3E%3Cpath id=%22aG%22 d=%22M16.8 52.71v.45a5.3 5.3 0 0 0 2.96-.76l-.45-.25c-.64.36-1.52.56-2.52.56%22/%3E%3C/defs%3E%3CclipPath id=%22aI%22%3E%3Cuse xlink:href=%22%23aG%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aH%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.01%22 y2=%22101.01%22 gradientTransform=%22matrix(2.9715 -.73 -.73 -2.9715 132.9 342.77)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23F0AF13%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aH)%22 d=%22m16.56 52.2 3.03-.74.4 1.64-3.03.75%22 clip-path=%22url(%23aI)%22/%3E%3Cdefs%3E%3Cpath id=%22aJ%22 d=%22M13.5 48.76c0 1.77.42 4.4 3.3 4.4v-.45c-2.21 0-2.86-1.78-2.86-3.95z%22/%3E%3C/defs%3E%3CclipPath id=%22aL%22%3E%3Cuse xlink:href=%22%23aJ%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aK%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.92%22 y2=%22100.92%22 gradientTransform=%22rotate(-126.2 123.53 -275.42)scale(5.506)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D78817%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aK)%22 d=%22m14.65 54.74-3.26-4.45 4.25-3.1 3.26 4.44%22 clip-path=%22url(%23aL)%22/%3E%3Cdefs%3E%3Cpath id=%22aM%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22aN%22%3E%3Cuse xlink:href=%22%23aM%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%23D78817%22 d=%22M28.77 30.14v41.51l.45-.45V30.38%22 clip-path=%22url(%23aN)%22/%3E%3Cpath fill=%22%23BF7312%22 d=%22M35.94 52.57V33.95l-.45-.3v19.24zm0 6.02v13.06l-.45-.45V58.01zm-9.48-2.39V28.34l-.45.45v27.17%22 clip-path=%22url(%23aN)%22/%3E%3C/svg%3E\", ar: 0.843, mono: false },\n \"usps\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%221.12 1.45 179.67 27.5%22%3E%3Cpath fill=%22%2315569c%22 d=%22M49.56.15H7.41L7.4.3s24.78 5.1 25.27 5.18c5.7 1 5.52 2.1 5.52 2.1 3.99-.02 4.48.14 5.17.73 2.1 1.75-1.3 6.91-1.3 6.91-.5.36-37.36 14.6-37.36 14.6h38.57zm8.09 0-1.6 7.54c-.58 2.6 1.18 3.78 4.1 3.78 2.94 0 5.17-1.18 5.73-3.78 1.63-7.54-.02 0 1.63-7.54h-2.46l-1.45 6.8c-.37 1.73-1.29 2.77-3.09 2.77-1.88-.02-2.26-1.06-1.88-2.78L60.1.15zm12.2 0L67.5 11.27h2.17l1.72-8.25h.05l2.75 8.25h3.08L79.63.15h-2.17L75.7 8.49h-.03L73.04.15Zm12.13 0-2.35 11.12h2.45L84.43.15Zm4.1 0-.4 1.77h3.47l-1.99 9.35h2.45l1.99-9.35h3.45l.38-1.77zm11 0L94.7 11.27h8.06l.37-1.77h-5.6l.64-3.04h4.89l.35-1.64h-4.88l.62-2.9h5.6l.37-1.77zm9.82 0-2.35 11.12h5.02c3.1 0 6.08-2.05 6.75-6.05.48-2.83-.65-5.07-4.02-5.07zm18.44 0c-2.89 0-4.32 1.02-4.53 2.62-.36 2.67 4.36 4.25 4 5.85-.22.93-1.36.88-2.3.88h-3.02l-.37 1.77h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.73-4.34-4.14-3.96-5.9.12-.55.72-.83 2.05-.83h2.63l.38-1.77zm4.54 0-.38 1.77h3.45l-1.98 9.35h2.45l1.98-9.35h3.46l.37-1.77zm11.95 0-6.37 11.12h2.45l4.88-8.91.98 7.14h-3.5l-.97 1.77h7.2L144.76.15zm5.64 0-.39 1.77h3.46l-1.99 9.35H151l2-9.35h3.45l.38-1.77zm10.98 0-2.37 11.12h8.06l.37-1.77h-5.6l.64-3.04h4.88l.36-1.64h-4.88l.62-2.9h5.6l.36-1.77zm13.44 0c-2.89 0-4.31 1.02-4.53 2.62-.36 2.67 4.35 4.25 4 5.85-.22.93-1.37.88-2.3.88h-3.02l-.37 1.77h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.73-4.34-4.14-3.97-5.9.13-.55.73-.83 2.07-.83h2.61l.4-1.77zm-62.9 1.77h2.5c2.04 0 2.76 1.5 2.45 3.27-.43 2.5-2.03 4.31-4.8 4.31h-1.75zM27.67 7.01H5.96L1.12 29.8s14.83-7.27 16.64-8.2c3.72-1.92 8.86-4.44 13.6-6.06.91-.3 4.79-1.5 7.05-1.9.87-.16 1.24-.3 1.23-.47-.03-.47-.91-.5-2.4-.42-4.55.21-13.26 3.68-15.77 5L18.64 9h18.09c.6-1.7-5.72-1.96-9.07-1.98zm9.59 2.11q-.18 0-.4.3c-.14.17-.25.3-.6.48-.57.27-2.03.42-2.71.48-.66.06-.84.12-.85.38 0 .22.1.35 1.04.35 2.17 0 6.07-.81 7.24-.44.62.2.12 1.3-.38 2.76-.2.56.19.52.4.27a10 10 0 0 0 1.36-3.04c.15-1.34-1-1.54-2.58-1.54zm32.05 9.37c-3.44 0-6.31 1.8-7.15 5.75C61.48 27.4 63.4 30 66.83 30c3.48 0 6.27-1.72 7.14-5.76.7-3.3-1.26-5.75-4.67-5.75m98.14 0c-3.41 0-6.7 1.76-7.53 5.75-.85 3.98 1.67 5.76 5.09 5.76q1.4-.02 2.74-.24l.6-1.91c-.88.22-1.81.39-2.97.39-2.22 0-3.47-1.5-2.95-4 .53-2.52 2.42-3.99 4.63-3.99 1.14 0 1.91.16 2.6.36l.23-1.88a14 14 0 0 0-2.44-.24m-87.48.2c-2.89 0-4.32 1.02-4.53 2.62-.36 2.67 4.35 4.25 4 5.84-.22.93-1.37.89-2.3.89h-3.02l-.37 1.76h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.72-4.34-4.14-3.97-5.9.13-.55.73-.83 2.07-.83h2.62l.39-1.77zm4.54 0-.38 1.76h3.45L85.6 29.8h2.45l1.99-9.35h3.45l.37-1.77zm35.8 0c-2.9 0-4.32 1.02-4.54 2.62-.36 2.67 4.36 4.25 4 5.84-.21.93-1.36.89-2.3.89h-3.02l-.37 1.76h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.72-4.33-4.14-3.97-5.9.13-.55.73-.83 2.07-.83h2.62l.38-1.77zm5.4 0-2.38 11.11h8.07l.37-1.76h-5.6l.64-3.04h4.88l.36-1.65h-4.88l.61-2.9h5.6l.37-1.77zm9.82 0-2.35 11.11h2.45l1.98-9.36h2.2c1.36 0 1.49.76 1.35 1.46-.26 1.31-1.41 1.84-2.67 1.84-.23 0-.62.02-.93-.03l2.02 6.1h2.68l-1.83-4.8a3.6 3.6 0 0 0 3.18-3.49c.14-1.86-.73-2.84-2.9-2.84zm36.34 0-2.37 11.11h8.06l.37-1.76h-5.6l.64-3.04h4.89l.35-1.65h-4.88l.62-2.9h5.6l.37-1.77zm-118.14 0L51.36 29.8h2.45l1.99-9.35h2c.9 0 1.51.45 1.25 1.66-.14.67-.74 1.82-2.42 1.82-.37 0-.77-.05-1.08-.08l.12 1.61c.36.04.78.1 1.17.1 2.2 0 4.14-1.28 4.59-3.39.29-1.4.01-3.48-2.4-3.48zm42.75 0L90.1 29.8h2.45l4.88-8.91.98 7.15h-3.5l-.97 1.76h7.2L99.4 18.7zm8.3 0L102.4 29.8h7.53l.38-1.76h-5.07l1.99-9.35zm40.13 0 1.67 11.11h2.9l6.33-11.11h-2.42l-4.88 8.91-1.15-8.91zm12.38 0-2.36 11.11h2.45l2.36-11.11zM68.9 20.25c2.26 0 3.02 1.74 2.54 3.99-.53 2.51-2.01 4-4.23 4-2.3 0-3.06-1.85-2.58-4 .58-2.51 2.05-3.99 4.27-3.99%22/%3E%3Cpath fill=%22%23ed192d%22 d=%22m54.59 14.57-.18.82h126.2l.17-.82z%22/%3E%3C/svg%3E\", ar: 6.533, mono: false },\n \"visa\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1000 324.06%22%3E%3Cpath fill=%22%231434cb%22 d=%22M651.19.5c-70.93 0-134.32 36.77-134.32 104.69 0 77.9 112.42 83.28 112.42 122.42 0 16.48-18.88 31.23-51.14 31.23-45.77 0-79.98-20.61-79.98-20.61l-14.64 68.55s39.41 17.41 91.73 17.41c77.55 0 138.58-38.57 138.58-107.66 0-82.32-112.89-87.54-112.89-123.86 0-12.91 15.5-27.05 47.66-27.05 36.29 0 65.89 14.99 65.89 14.99l14.33-66.2S696.61.5 651.18.5ZM2.22 5.5.5 15.49s29.84 5.46 56.72 16.36c34.61 12.49 37.07 19.77 42.9 42.35l63.51 244.83h85.14L379.93 5.5h-84.94l-84.28 213.17-34.39-180.7c-3.15-20.68-19.13-32.48-38.68-32.48zm411.87 0-66.63 313.53h81L494.85 5.5zm451.76 0c-19.53 0-29.88 10.46-37.47 28.73l-118.67 284.8h84.94l16.43-47.47h103.48l9.99 47.47h74.95L934.12 5.5zm11.05 84.71 25.18 117.65h-67.45z%22/%3E%3C/svg%3E\", ar: 3.086, mono: false },\n \"walmart\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220 0 264.58 50.3%22%3E%3Cg style=%22font-variation-settings:normal;opacity:1;vector-effect:none;fill:%230053e2;fill-opacity:1;stroke-width:1.96006829;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:%23000;stop-opacity:1%22%3E%3Cpath fill=%22%23fff%22 d=%22m120.6 0-14.75 74.6L89.32 0H60.59L44.06 74.6 29.32 0H0l23.91 113.96h34.13l16.7-75.67 16.68 75.67h33.38L148.56 0Zm59.91 98.16c-6.61 0-10.22-4.1-10.22-9.72 0-7.3 5.72-10.18 12.93-12.77 3.76-1.43 7.53-2.91 10.08-5.16v12.6c0 9.58-4.97 15.05-12.78 15.05m3.9-77.19c-18.19 0-30.97 6.24-35.63 10.64v24.3a49 49 0 0 1 31.88-12c9.32 0 12.78 2.6 12.78 7.91 0 4.56-4.81 6.39-18.2 9.27-20.3 4.25-32.03 11.7-32.03 29.48 0 16.4 10.68 25.98 26.17 25.98 12.97 0 20.72-6.08 24.96-14.25v11.67h27.96V58.05c0-25.68-13.23-37.08-37.89-37.08M261.8 0h-29.02v113.96h29.03zm116.48 21.28c-14.08 0-23.18 8.55-27.94 19.94-2.55-12.2-11.03-19.94-22.89-19.94-13.42 0-22.18 7.91-26.61 19.02V23.86h-28.57v90.1h29.02V63.99c0-12.3 4.06-19.3 12.78-19.3 7.07 0 9.48 4.87 9.48 12.47v56.83h29.02v-50c0-12.3 4.06-19.29 12.78-19.29 7.06 0 9.47 4.86 9.47 12.46V114h29.02V53.03c0-18.99-8.87-31.75-25.56-31.75m69.16 76.88c-6.61 0-10.22-4.1-10.22-9.72 0-7.3 5.72-10.18 12.94-12.77 3.76-1.43 7.53-2.91 10.07-5.16v12.6c0 9.58-4.96 15.05-12.79 15.05m3.91-77.19c-18.2 0-30.98 6.24-35.64 10.64v24.3a49 49 0 0 1 31.88-12c9.32 0 12.78 2.6 12.78 7.91 0 4.56-4.81 6.39-18.2 9.27-20.3 4.25-32.03 11.7-32.03 29.48 0 16.4 10.68 25.98 26.17 25.98 12.97 0 20.72-6.08 24.96-14.25v11.67h27.97V58.05c0-25.68-13.24-37.08-37.9-37.08m76.25 28.34V23.86h-28.42v90.1h29.02V75.68c0-17.62 10.83-22.33 21.2-22.33 3.46 0 6.77.45 8.27.9V23.26c-16.33-.8-26.25 9.74-30.07 26.06M613 46.65v-22.8h-18.5V6.39h-29.02v77.5c0 21.72 12.18 31.9 31.58 31.9 9.03 0 13.84-1.82 15.94-3.19V89.95c-1.65 1.22-4.36 2.13-7.82 2.13-6.46.15-10.68-2.74-10.68-12.3V46.65z%22 style=%22font-variation-settings:normal;vector-effect:none;fill:%230053e2;fill-opacity:1;stroke-width:1.96006829;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:%23000;stop-opacity:1%22 transform=%22scale(.43162)%22/%3E%3C/g%3E%3C/svg%3E\", ar: 5.26, mono: false },\n}\n","/**\n * Shared catalog of the brands a checkout names: parcel carriers, card networks, wallets and cash payment points.\n *\n * Keys are the stable identifiers the providers already send (`ShippingRate.carrier` of Skydropx / Envía, the\n * `PaymentPoint.payment_point` or `id` of the payment addon, a `PaymentMethod.key`). Nothing here decides what a shop\n * offers: the server lists the rates and methods; this only gives each one its commercial name and a mark.\n *\n * Marks are drawn by `<BrandMark>` with this precedence: the provider's `logo_url` > the real logo bundled in\n * `brands/assets` (inline data URI, no request; provenance in `brands/LOGOS.md`) > a typographic badge (brand color +\n * short wordmark) for the brands without an available logo. The `bg`/`fg` colors here are close approximations of each\n * brand's public color and only paint that fallback badge.\n */\n\nimport { LOGOS, type LogoAsset } from './brands/logos.generated.js'\n\nexport type BrandKind = 'carrier' | 'card' | 'wallet' | 'cash' | 'bank'\n\nexport type Brand = {\n key: string\n /** Commercial name, as the brand writes it. */\n name: string\n kind: BrandKind\n /** Badge background. */\n bg: string\n /** Badge text color (AA on `bg`). */\n fg: string\n /** Short wordmark drawn in the badge (`\\n` = two lines). Default: `name`. */\n mark?: string\n /** Special drawings instead of a wordmark. */\n shape?: 'mastercard' | 'transfer'\n}\n\nconst B = (key: string, name: string, kind: BrandKind, bg: string, fg: string, mark?: string, shape?: Brand['shape']): Brand => ({\n key,\n name,\n kind,\n bg,\n fg,\n ...(mark ? { mark } : {}),\n ...(shape ? { shape } : {}),\n})\n\nconst LIST: Brand[] = [\n // Parcel carriers (Mexico and global).\n B('fedex', 'FedEx', 'carrier', '#4D148C', '#FFFFFF'),\n B('dhl', 'DHL', 'carrier', '#FFCC00', '#B00410'),\n B('estafeta', 'Estafeta', 'carrier', '#C8102E', '#FFFFFF'),\n B('paquetexpress', 'Paquetexpress', 'carrier', '#0B4EA2', '#FFFFFF', 'Paquet\\nexpress'),\n B('ups', 'UPS', 'carrier', '#351C15', '#FFB500'),\n B('redpack', 'Redpack', 'carrier', '#C8102E', '#FFFFFF'),\n B('99minutos', '99 Minutos', 'carrier', '#00704A', '#FFFFFF', '99'),\n B('jtexpress', 'J&T Express', 'carrier', '#C8102E', '#FFFFFF', 'J&T'),\n B('sendex', 'Sendex', 'carrier', '#003A70', '#FFFFFF'),\n B('ampm', 'AMPM', 'carrier', '#1D1D1B', '#FFFFFF'),\n B('tresguerras', 'Tresguerras', 'carrier', '#005BAC', '#FFFFFF', '3G'),\n B('quiken', 'Quiken', 'carrier', '#1D1D1B', '#FFFFFF'),\n B('imile', 'iMile', 'carrier', '#0057B8', '#FFFFFF'),\n B('carssa', 'Carssa', 'carrier', '#00529B', '#FFFFFF'),\n B('correosdemexico', 'Correos de México', 'carrier', '#7A1E3A', '#FFFFFF', 'Correos\\nMéxico'),\n B('usps', 'USPS', 'carrier', '#333366', '#FFFFFF'),\n B('canadapost', 'Canada Post', 'carrier', '#DA291C', '#FFFFFF', 'CPC'),\n // Card networks.\n B('visa', 'Visa', 'card', '#1A1F71', '#FFFFFF', 'VISA'),\n B('mastercard', 'Mastercard', 'card', '#FFFFFF', '#1D1D1B', 'MC', 'mastercard'),\n B('amex', 'American Express', 'card', '#1F72CD', '#FFFFFF', 'AMEX'),\n B('carnet', 'Carnet', 'card', '#003B71', '#FFFFFF'),\n // Wallets and payment providers.\n B('mercadopago', 'Mercado Pago', 'wallet', '#00B1EA', '#0B1F4E', 'mercado\\npago'),\n B('paypal', 'PayPal', 'wallet', '#003087', '#FFFFFF'),\n B('clip', 'Clip', 'wallet', '#FC4C02', '#1D1D1B'),\n B('applepay', 'Apple Pay', 'wallet', '#000000', '#FFFFFF', 'Pay'),\n B('googlepay', 'Google Pay', 'wallet', '#FFFFFF', '#3C4043', 'G Pay'),\n // Cash points and transfers (Mexico).\n B('oxxo', 'OXXO', 'cash', '#E21E26', '#FFE600'),\n B('spei', 'SPEI', 'bank', '#14365F', '#FFFFFF', undefined, 'transfer'),\n B('stp', 'STP', 'bank', '#14365F', '#FFFFFF', 'SPEI', 'transfer'),\n B('7eleven', '7-Eleven', 'cash', '#00704A', '#FFFFFF', '7-11'),\n B('circlek', 'Circle K', 'cash', '#DA291C', '#FFFFFF', 'K'),\n B('soriana', 'Soriana', 'cash', '#C8102E', '#FFFFFF'),\n B('extra', 'Extra', 'cash', '#E35205', '#FFFFFF'),\n B('kiosko', 'Kiosko', 'cash', '#C8102E', '#FFFFFF'),\n B('calimax', 'Calimax', 'cash', '#D52B1E', '#FFFFFF'),\n B('farmaciasyza', 'Farmacias Yza', 'cash', '#0A5A9C', '#FFFFFF', 'Yza'),\n B('chedraui', 'Chedraui', 'cash', '#0047BB', '#FFFFFF'),\n B('casaley', 'Casa Ley', 'cash', '#C8102E', '#FFFFFF', 'Ley'),\n B('telecomm', 'Telecomm', 'cash', '#6F1D46', '#FFFFFF'),\n B('walmart', 'Walmart', 'cash', '#0071CE', '#FFFFFF'),\n B('bodegaaurrera', 'Bodega Aurrerá', 'cash', '#0F4C97', '#FFFFFF', 'Bodega\\nAurrerá'),\n B('farmaciasguadalajara', 'Farmacias Guadalajara', 'cash', '#005BAC', '#FFFFFF', 'Farm.\\nGuadalajara'),\n B('farmaciadelahorro', 'Farmacia del Ahorro', 'cash', '#00539F', '#FFFFFF', 'Farmacia\\ndel Ahorro'),\n B('santander', 'Santander', 'bank', '#C00000', '#FFFFFF'),\n B('hsbc', 'HSBC', 'bank', '#DB0011', '#FFFFFF'),\n B('scotiabank', 'Scotiabank', 'bank', '#EC111A', '#FFFFFF', 'Scotia'),\n B('bbva', 'BBVA', 'bank', '#004481', '#FFFFFF'),\n B('citibanamex', 'Citibanamex', 'bank', '#004B8D', '#FFFFFF', 'Citi'),\n B('banorte', 'Banorte', 'bank', '#C8102E', '#FFFFFF'),\n]\n\n/** Alternative spellings that providers send for the same brand (already normalized by `brandKey`). */\nconst ALIASES: Record<string, string> = {\n fedexmx: 'fedex',\n fedexexpress: 'fedex',\n dhlexpress: 'dhl',\n dhlmx: 'dhl',\n paquetexpres: 'paquetexpress',\n paqueteexpress: 'paquetexpress',\n jt: 'jtexpress',\n jandtexpress: 'jtexpress',\n noventaynueveminutos: '99minutos',\n correos: 'correosdemexico',\n sepomex: 'correosdemexico',\n master: 'mastercard',\n americanexpress: 'amex',\n mercadopagomx: 'mercadopago',\n mp: 'mercadopago',\n clabe: 'spei',\n banktransfer: 'spei',\n seveneleven: '7eleven',\n '711': '7eleven',\n circulok: 'circlek',\n yza: 'farmaciasyza',\n bancomer: 'bbva',\n banamex: 'citibanamex',\n ley: 'casaley',\n aurrera: 'bodegaaurrera',\n guadalajara: 'farmaciasguadalajara',\n fguadalajara: 'farmaciasguadalajara',\n farmaciaguadalajara: 'farmaciasguadalajara',\n fahorro: 'farmaciadelahorro',\n delahorro: 'farmaciadelahorro',\n farmaciasdelahorro: 'farmaciadelahorro',\n hsbcmexico: 'hsbc',\n scotia: 'scotiabank',\n walmartmexico: 'walmart',\n walmartsupercenter: 'walmart',\n oxxopay: 'oxxo',\n upsexpress: 'ups',\n estafetamexicana: 'estafeta',\n}\n\nconst BY_KEY = new Map(LIST.map((b) => [b.key, b]))\n\n/** `\"FedEx México\"`, `\"fedex_mx\"` and `\"FEDEX\"` all become `fedex`. Lowercase ASCII letters and digits only. */\nexport function brandKey(raw: string | null | undefined): string {\n const flat = (raw ?? '')\n .normalize('NFD')\n .replace(/[̀-ͯ]/g, '')\n .toLowerCase()\n .replace(/&/g, 'and')\n .replace(/[^a-z0-9]/g, '')\n const noCountry = flat.endsWith('mexico') && flat !== 'correosdemexico' ? flat.slice(0, -6) : flat\n return ALIASES[noCountry] ?? (BY_KEY.has(noCountry) ? noCountry : ALIASES[flat] ?? flat)\n}\n\n/** Catalog entry for a provider identifier, or `null` when the brand is not in the catalog. */\nexport function findBrand(raw: string | null | undefined): Brand | null {\n return BY_KEY.get(brandKey(raw)) ?? null\n}\n\n/**\n * Commercial name for a provider identifier: the catalog's (`fedex` → \"FedEx\") or, for an unknown one, the identifier\n * in title case (`\"envios_rapidos\"` → \"Envios Rapidos\"). `null` for an empty input.\n */\nexport function brandName(raw: string | null | undefined): string | null {\n const brand = findBrand(raw)\n if (brand) return brand.name\n const text = (raw ?? '').trim()\n if (!text) return null\n // Already cased by the provider (\"Envía Plus\"): keep it.\n if (text !== text.toLowerCase() && text !== text.toUpperCase()) return text\n return text\n .toLowerCase()\n .split(/[\\s_-]+/)\n .filter(Boolean)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ')\n}\n\n/** Every brand of the catalog (for docs, previews and tests). */\nexport function listBrands(kind?: BrandKind): Brand[] {\n return kind ? LIST.filter((b) => b.kind === kind) : [...LIST]\n}\n\n/** Real logo bundled for a provider identifier (inline data URI), or `null` when the brand only has the fallback badge. */\nexport function brandLogo(raw: string | null | undefined): (LogoAsset & { key: string }) | null {\n const b = findBrand(raw)\n const logo = b ? LOGOS[b.key] : undefined\n return b && logo ? { ...logo, key: b.key } : null\n}\n","import type { CSSProperties } from 'react'\nimport { brandLogo, brandName, findBrand } from './brands.js'\n\nexport type BrandMarkProps = {\n /** Provider identifier (`fedex`, `oxxo`, `mercadopago`, `7eleven`…). Unknown keys get a neutral monogram. */\n brand: string | null | undefined\n /** Licensed logo sent by the provider (`PaymentPoint.logo_url`…). Only `https:`; it wins over the bundled logo and the badge. */\n logoUrl?: string | null\n /** Height in px of the box. Badges are 3:2 (width = 1.5 × height); real logos get a width that follows their shape. Default 24. */\n size?: number\n /**\n * Accessible name. Omit it when the brand name is already written next to the mark (the usual case): the mark is then\n * decorative (`aria-hidden`).\n */\n title?: string\n className?: string\n}\n\nfunction safeLogo(url: string | null | undefined): string | null {\n if (!url) return null\n try {\n return new URL(url).protocol === 'https:' ? url : null\n } catch {\n return null\n }\n}\n\n/** Letters of a monogram for a brand outside the catalog: \"envios rapidos\" → \"ER\". */\nfunction monogram(raw: string): string {\n const words = (brandName(raw) ?? raw).split(/\\s+/).filter(Boolean)\n const letters = words.length > 1 ? words.slice(0, 2).map((w) => w[0]) : [(words[0] ?? '?').slice(0, 2)]\n return letters.join('').toUpperCase()\n}\n\n/** What the mark ended up drawing: the provider's logo, the bundled real logo, or the typographic fallback. */\nexport type BrandMarkSource = 'provider' | 'logo' | 'badge'\n\nconst PLATE_RING = 'var(--sf-brand-mark-ring, rgb(127 127 127 / 0.35))'\n/** Neutral plate behind a real logo: always white, so an unrecolored logo reads the same on light and dark themes. */\nconst PLATE_BG = 'var(--sf-brand-mark-plate, #fff)'\n\n/** Box of a real logo: fixed height, width follows the logo's aspect ratio (clamped), so it never shifts the layout. */\nexport function logoBox(ar: number, size: number) {\n const pad = Math.max(2, Math.round(size * 0.16))\n const padX = Math.max(3, Math.round(size * 0.2))\n const innerH = size - pad * 2\n const maxW = size * 2.6\n const innerW = Math.min(innerH * ar, maxW)\n const imgH = Math.min(innerH, innerW / ar)\n return { width: Math.round(Math.max(innerW, innerH * 0.9) + padX * 2), height: size, imgW: Math.round(innerW), imgH: Math.round(imgH), pad, padX }\n}\n\n/**\n * The mark of a carrier, card network, wallet or cash point. Precedence: the provider's `logoUrl` (https, lazy) > the\n * real logo bundled with the package (inline data URI: no network request, same size on the server and in the browser)\n * > a typographic badge in the brand color for the brands without an available logo.\n *\n * Logos are never recolored; they sit on a white plate with a hairline (`--sf-brand-mark-ring`, plate color\n * `--sf-brand-mark-plate`) so they keep their contrast on light and dark themes. The element carries\n * `data-sf-brand-mark=\"<key>\"` and `data-sf-brand-source=\"provider|logo|badge\"`.\n */\nexport function BrandMark({ brand, logoUrl, size = 24, title, className }: BrandMarkProps) {\n const height = size\n const width = Math.round(size * 1.5)\n const a11y = title ? { role: 'img' as const, 'aria-label': title } : { 'aria-hidden': true as const }\n const logo = safeLogo(logoUrl)\n const found = findBrand(brand)\n const key = found?.key ?? 'generic'\n const style: CSSProperties = { width, height, flex: 'none' }\n const plate = (w: number, pad: number, padX: number): CSSProperties => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxSizing: 'border-box',\n flex: 'none',\n width: w,\n height,\n padding: `${pad}px ${padX}px`,\n background: PLATE_BG,\n border: `1px solid ${PLATE_RING}`,\n borderRadius: Math.round(size * 0.2),\n overflow: 'hidden',\n })\n if (logo) {\n const b = logoBox(1.5, size)\n return (\n <span className={className} style={plate(width, b.pad, b.padX)} data-sf-brand-mark={key} data-sf-brand-source=\"provider\" {...a11y}>\n <img\n src={logo}\n alt={title ?? ''}\n width={width - b.padX * 2}\n height={height - b.pad * 2}\n loading=\"lazy\"\n decoding=\"async\"\n style={{ objectFit: 'contain', maxWidth: '100%', maxHeight: '100%' }}\n {...(title ? {} : { 'aria-hidden': true })}\n />\n </span>\n )\n }\n const real = brandLogo(brand)\n if (found && real) {\n const b = logoBox(real.ar, size)\n // The plate is a role=\"img\" with the commercial name; the <img> inside is decorative so it is not announced twice.\n const label = title ?? found.name\n return (\n <span className={className} style={plate(b.width, b.pad, b.padX)} data-sf-brand-mark={key} data-sf-brand-source=\"logo\" {...(title ? { role: 'img', 'aria-label': label } : { 'aria-hidden': true })}>\n <img src={real.src} alt=\"\" width={b.imgW} height={b.imgH} decoding=\"async\" draggable={false} style={{ display: 'block', maxWidth: 'none' }} />\n </span>\n )\n }\n const ring = PLATE_RING\n if (found?.shape === 'mastercard') {\n return (\n <svg viewBox=\"0 0 48 32\" width={width} height={height} className={className} style={style} data-sf-brand-mark={key} data-sf-brand-source=\"badge\" focusable=\"false\" {...a11y}>\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill={found.bg} stroke={ring} />\n <circle cx=\"19\" cy=\"16\" r=\"9\" fill=\"#EB001B\" />\n <circle cx=\"29\" cy=\"16\" r=\"9\" fill=\"#F79E1B\" />\n <path d=\"M24 8.52a9 9 0 0 1 0 14.96a9 9 0 0 1 0-14.96z\" fill=\"#FF5F00\" />\n </svg>\n )\n }\n if (found?.shape === 'transfer') {\n // Generic bank-transfer badge (two opposing arrows + the name). SPEI has no logo we may redistribute (see\n // brands/LOGOS.md), so this is deliberately NOT an imitation of the official mark.\n const label = (found.mark ?? found.name).split('\\n')[0]!\n return (\n <svg viewBox=\"0 0 48 32\" width={width} height={height} className={className} style={style} data-sf-brand-mark={key} data-sf-brand-source=\"badge\" focusable=\"false\" {...a11y}>\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill={found.bg} stroke={ring} />\n <path d=\"M6 12h11m0 0-3-3m3 3-3 3M17 20H6m0 0 3-3m-3 3 3 3\" fill=\"none\" stroke={found.fg} strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <text x=\"33\" y=\"16.5\" dominantBaseline=\"central\" textAnchor=\"middle\" fill={found.fg} fontFamily=\"system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif\" fontWeight={800} fontSize={11} textLength={22} lengthAdjust=\"spacingAndGlyphs\">\n {label}\n </text>\n </svg>\n )\n }\n const text = found ? (found.mark ?? found.name) : monogram(brand ?? '')\n const bg = found?.bg ?? 'var(--sf-brand-mark-bg, #E7E9EE)'\n const fg = found?.fg ?? 'var(--sf-brand-mark-fg, #2B2F38)'\n const lines = text.split('\\n')\n const longest = Math.max(...lines.map((l) => l.length))\n // Short marks grow; long ones are squeezed into the badge (textLength) so every badge has the same box.\n const fontSize = lines.length > 1 ? (longest <= 5 ? 11 : 9.5) : longest <= 2 ? 15 : longest <= 4 ? 16 : 10\n const fit = (l: string) => (l.length > 5 ? { textLength: 40, lengthAdjust: 'spacingAndGlyphs' as const } : l.length === 4 ? { textLength: 36, lengthAdjust: 'spacingAndGlyphs' as const } : {})\n const italic = found?.key === 'visa' || found?.key === 'fedex' ? 'italic' : undefined\n const common = {\n textAnchor: 'middle' as const,\n fill: fg,\n fontFamily: \"system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif\",\n fontWeight: 800,\n fontSize,\n fontStyle: italic,\n }\n return (\n <svg viewBox=\"0 0 48 32\" width={width} height={height} className={className} style={style} data-sf-brand-mark={key} data-sf-brand-source=\"badge\" focusable=\"false\" {...a11y}>\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill={bg} stroke={ring} />\n {lines.length > 1 ? (\n lines.slice(0, 2).map((l, i) => (\n <text key={i} x=\"24\" y={i === 0 ? 15 : 25.5} {...common} {...fit(l)}>\n {l}\n </text>\n ))\n ) : (\n <text x=\"24\" y=\"16\" dominantBaseline=\"central\" letterSpacing={longest <= 4 ? 0.3 : 0} {...common} {...fit(text)}>\n {text}\n </text>\n )}\n </svg>\n )\n}\n","/**\n * Which carrier rates to show first. Pure: no DOM, no amounts computed (costs are only compared, as the server sends\n * them). A long quote (10+ services, several per carrier) becomes up to three recommended rows (the cheapest, the\n * fastest and the best balance of both) plus the rest grouped by carrier, so the buyer compares three things instead of\n * scanning a flat list.\n */\nimport type { ShippingRate } from '@asteby/storefront'\nimport { brandKey } from './brands.js'\n\n/** Why a rate is recommended. `best_value` balances price and arrival time. */\nexport type RateTag = 'cheapest' | 'fastest' | 'best_value'\n\nexport type RecommendedRate<R extends ShippingRate = ShippingRate> = { rate: R; tags: RateTag[] }\n\nexport type RateGroup<R extends ShippingRate = ShippingRate> = {\n /** Brand key of the carrier (`fedex`), or `''` for rates without one. */\n key: string\n /** Carrier as the server sends it (first rate of the group), for `BrandMark` and the group name. */\n carrier: string | null\n rates: R[]\n}\n\nexport type RecommendRatesOptions = {\n /** How many rates to recommend. Default 3. */\n count?: number\n /**\n * With this many rates or fewer every rate is recommended (no \"more options\"): hiding one or two rates behind a\n * toggle costs more than it saves. Default `count + 1`.\n */\n collapseAfter?: number\n /** Drop repeated services (same carrier and service, e.g. quoted by two providers), keeping the cheapest. Default true. */\n dedupe?: boolean\n}\n\nexport type RecommendedRates<R extends ShippingRate = ShippingRate> = {\n recommended: RecommendedRate<R>[]\n /** Everything else, grouped by carrier; groups ordered by their cheapest rate, rates by cost. */\n more: RateGroup<R>[]\n /** Number of rates in `more`. */\n moreCount: number\n}\n\nconst costOf = (r: ShippingRate) => {\n const n = Number(r.cost.amount)\n return Number.isFinite(n) ? n : null\n}\nconst daysOf = (r: ShippingRate) => r.eta_days_max ?? r.eta_days_min ?? null\nconst norm = (s: string | null | undefined) => (s ?? '').trim().toLowerCase()\nconst carrierKey = (r: ShippingRate) => (r.carrier ? brandKey(r.carrier) : r.provider ? brandKey(r.provider) : '')\n\n/** Repeated services (same carrier, same service code or title, same arrival): only the cheapest stays. Order kept. */\nexport function dedupeRates<R extends ShippingRate>(rates: readonly R[]): R[] {\n const best = new Map<string, R>()\n const keyOf = (r: R) => `${carrierKey(r)}|${norm(r.service_code) || norm(r.title)}|${daysOf(r) ?? ''}|${r.cost.currency_code}`\n for (const r of rates) {\n const k = keyOf(r)\n const prev = best.get(k)\n const c = costOf(r)\n if (!prev || (c !== null && (costOf(prev) === null || c < costOf(prev)!))) best.set(k, r)\n }\n const keep = new Set(best.values())\n return rates.filter((r) => keep.has(r))\n}\n\n/**\n * Up to `count` recommended rates and the rest by carrier.\n * - **cheapest**: lowest cost (only when every rate shares the currency); a tie goes to the faster one.\n * - **fastest**: fewest business days; a tie goes to the cheaper one. Only when some rate is strictly faster than the\n * cheapest, so the tag always tells the buyer something.\n * - **best_value**: the remaining rate with the best combined position in price and in time (sum of ranks), a tie goes\n * to the cheaper one. Fills the remaining slots.\n * Recommended rows come back cheapest first. Pickup is not a rate and is never hidden (the component shows it apart).\n */\nexport function recommendRates<R extends ShippingRate>(input: readonly R[], options: RecommendRatesOptions = {}): RecommendedRates<R> {\n const count = Math.max(1, options.count ?? 3)\n const rates = options.dedupe === false ? [...input] : dedupeRates(input)\n const collapseAfter = options.collapseAfter ?? count + 1\n const sameCurrency = new Set(rates.map((r) => r.cost.currency_code)).size <= 1\n const byCost = (a: R, b: R) => (costOf(a) ?? Infinity) - (costOf(b) ?? Infinity)\n const byDays = (a: R, b: R) => (daysOf(a) ?? Infinity) - (daysOf(b) ?? Infinity)\n const tags = new Map<R, RateTag[]>()\n const tag = (r: R, t: RateTag) => tags.set(r, [...(tags.get(r) ?? []), t])\n\n const cheapest = sameCurrency && rates.length > 1 ? [...rates].sort((a, b) => byCost(a, b) || byDays(a, b))[0] : undefined\n if (cheapest && costOf(cheapest) !== null) tag(cheapest, 'cheapest')\n const fastest = rates.length > 1 ? [...rates].sort((a, b) => byDays(a, b) || byCost(a, b))[0] : undefined\n if (fastest && daysOf(fastest) !== null && (!cheapest || fastest === cheapest || (daysOf(cheapest) ?? Infinity) > daysOf(fastest)!)) tag(fastest, 'fastest')\n\n const chosen: R[] = []\n for (const r of [cheapest, fastest]) if (r && tags.has(r) && !chosen.includes(r)) chosen.push(r)\n\n if (rates.length > collapseAfter) {\n // Rank in price and in time (ties share a rank); the best sum fills the remaining slots.\n const rank = (sorted: R[], val: (r: R) => number | null) => {\n const out = new Map<R, number>()\n let pos = 0\n let last: number | null | undefined\n sorted.forEach((r, i) => {\n const v = val(r)\n if (v !== last) pos = i\n last = v\n out.set(r, v === null ? sorted.length : pos)\n })\n return out\n }\n const priceRank = rank([...rates].sort(byCost), costOf)\n const timeRank = rank([...rates].sort(byDays), daysOf)\n const rest = rates\n .filter((r) => !chosen.includes(r))\n .sort((a, b) => priceRank.get(a)! + timeRank.get(a)! - (priceRank.get(b)! + timeRank.get(b)!) || byCost(a, b))\n let first = true\n for (const r of rest) {\n if (chosen.length >= count) break\n chosen.push(r)\n if (first) tag(r, 'best_value')\n first = false\n }\n } else {\n for (const r of rates) if (!chosen.includes(r)) chosen.push(r)\n }\n\n const recommended = chosen.sort(byCost).map((rate) => ({ rate, tags: tags.get(rate) ?? [] }))\n const groups = new Map<string, RateGroup<R>>()\n for (const r of [...rates].sort(byCost)) {\n if (chosen.includes(r)) continue\n const key = carrierKey(r)\n const g = groups.get(key) ?? { key, carrier: r.carrier ?? r.provider ?? null, rates: [] }\n g.rates.push(r)\n groups.set(key, g)\n }\n const more = [...groups.values()]\n return { recommended, more, moreCount: more.reduce((n, g) => n + g.rates.length, 0) }\n}\n\nexport type FlatRatesOptions = {\n /** Count used to decide the `best_value` tag, as in `recommendRates` (default 3: only with more than 4 services). */\n count?: number\n /** Drop repeated services keeping the cheapest. Default true. */\n dedupe?: boolean\n /** Id of the chosen rate: it stays in the list even if it is a repeated service. */\n keepId?: string | null\n}\n\n/**\n * ONE flat list for `layout=\"flat\"`: every service (repeated ones dropped, the cheapest stays), ordered from the\n * lowest to the highest price, with the same tags `recommendRates` assigns (cheapest, fastest and, on long quotes,\n * best_value) on the rows that earn them. Nothing is hidden or grouped.\n */\nexport function flatRates<R extends ShippingRate>(input: readonly R[], options: FlatRatesOptions = {}): RecommendedRate<R>[] {\n const count = options.count ?? 3\n const rates = options.dedupe === false ? [...input] : dedupeRates(input)\n const tags = new Map<R, RateTag[]>()\n for (const { rate, tags: t } of recommendRates(rates, { count, dedupe: false }).recommended) tags.set(rate, t)\n const list = [...rates]\n const kept = options.keepId ? input.find((r) => r.id === options.keepId) : undefined\n if (kept && !list.includes(kept)) list.push(kept)\n const byCost = (a: R, b: R) => (costOf(a) ?? Infinity) - (costOf(b) ?? Infinity)\n // Array.prototype.sort is stable: equal prices keep the server order.\n return list.sort(byCost).map((rate) => ({ rate, tags: tags.get(rate) ?? [] }))\n}\n","/**\n * Pure helpers for the \"Delivery\" step: how to name a carrier rate, its arrival time, which rate is the cheapest or the\n * fastest, and one human note for the quote deadline. No amounts are computed: `cost` is shown as the server sends it;\n * comparing two costs to flag the cheapest is the only arithmetic.\n */\nimport type { ShippingRate } from '@asteby/storefront'\nimport { brandName } from './brands.js'\n\nexport type DeliveryMessages = {\n /** `{n}` = business days. */\n etaOne: string\n etaMany: string\n /** `{min}` / `{max}` = business days. */\n etaRange: string\n etaUpTo: string\n etaFrom: string\n cheapest: string\n fastest: string\n free: string\n pickupTitle: string\n /** Quote deadline, `{time}` = local time. */\n quoteToday: string\n quoteTomorrow: string\n /** `{date}` = short date + time. */\n quoteLater: string\n quoteSoon: string\n partial: string\n loading: string\n /** The quote expired or changed and the rates were reloaded. */\n requoted: string\n /** Tag of the recommended rate that balances price and arrival time (`layout=\"recommended\"`). */\n bestValue: string\n /** Toggle of the other rates, `{n}` = how many. */\n moreOptions: string\n /** Title of the group of rates without a carrier. */\n otherCarriers: string\n /** The rates could not be quoted (`error`). */\n error: string\n retry: string\n}\n\nconst ES: DeliveryMessages = {\n etaOne: 'Llega en 1 día hábil',\n etaMany: 'Llega en {n} días hábiles',\n etaRange: 'Llega en {min} a {max} días hábiles',\n etaUpTo: 'Llega en máximo {max} días hábiles',\n etaFrom: 'Llega en {min} días hábiles o más',\n cheapest: 'Más económico',\n fastest: 'Más rápido',\n free: 'Gratis',\n pickupTitle: 'Recoger en {name}',\n quoteToday: 'Precios de envío vigentes hasta las {time}.',\n quoteTomorrow: 'Precios de envío vigentes hasta mañana a las {time}.',\n quoteLater: 'Precios de envío vigentes hasta el {date}.',\n quoteSoon: 'Los precios de envío vencen pronto ({time}).',\n partial: 'Algunas paqueterías no respondieron a tiempo; estas son las opciones disponibles.',\n loading: 'Buscando opciones de envío…',\n requoted: 'Las tarifas de envío cambiaron y ya están actualizadas. Revisa tu envío antes de pagar.',\n bestValue: 'Recomendado',\n moreOptions: 'Ver más opciones ({n})',\n otherCarriers: 'Otras opciones',\n error: 'No pudimos consultar las opciones de envío en este momento.',\n retry: 'Intentar de nuevo',\n}\n\nconst EN: DeliveryMessages = {\n etaOne: 'Arrives in 1 business day',\n etaMany: 'Arrives in {n} business days',\n etaRange: 'Arrives in {min} to {max} business days',\n etaUpTo: 'Arrives in up to {max} business days',\n etaFrom: 'Arrives in {min}+ business days',\n cheapest: 'Cheapest',\n fastest: 'Fastest',\n free: 'Free',\n pickupTitle: 'Pick up at {name}',\n quoteToday: 'Shipping prices valid until {time}.',\n quoteTomorrow: 'Shipping prices valid until tomorrow at {time}.',\n quoteLater: 'Shipping prices valid until {date}.',\n quoteSoon: 'Shipping prices expire soon ({time}).',\n partial: \"We couldn't reach every carrier. These are the options available now.\",\n loading: 'Looking for delivery options…',\n requoted: 'Shipping rates changed and are now up to date. Check your delivery before paying.',\n bestValue: 'Recommended',\n moreOptions: 'Show more options ({n})',\n otherCarriers: 'Other options',\n error: \"We couldn't get delivery options right now.\",\n retry: 'Try again',\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides. */\nexport function deliveryMessages(locale?: string | null, overrides?: Partial<DeliveryMessages> | null): DeliveryMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\n// A value that already ends in a period (\"9:39 p.m.\") does not get a second one from the template.\nconst fill = (tpl: string, vars: Record<string, string | number>) => tpl.replace(/\\{(\\w+)\\}/g, (_, k: string) => String(vars[k] ?? '')).replace(/\\.\\.$/, '.')\n\n/** Commercial carrier name of a rate (`fedex` → \"FedEx\"); `null` without carrier. */\nexport function rateCarrier(rate: Pick<ShippingRate, 'carrier'>): string | null {\n return brandName(rate.carrier)\n}\n\n/**\n * Service name without the carrier repeated: \"FedEx Express Saver\" with carrier `fedex` → \"Express Saver\". Falls back\n * to the title when stripping would leave nothing.\n */\nexport function rateService(rate: Pick<ShippingRate, 'title' | 'carrier'>): string {\n const title = rate.title.trim()\n const carrier = rateCarrier(rate)\n if (!carrier) return title\n for (const prefix of [carrier, rate.carrier ?? '']) {\n if (!prefix) continue\n if (title.toLowerCase().startsWith(prefix.toLowerCase())) {\n const rest = title.slice(prefix.length).replace(/^[\\s·:|-]+/, '')\n if (rest) return rest\n }\n }\n return title\n}\n\n/** Arrival time of a rate: business days from the provider, else the server `eta` text as is. */\nexport function rateEta(\n rate: Pick<ShippingRate, 'eta' | 'eta_days_min' | 'eta_days_max'>,\n messages: DeliveryMessages = ES,\n): string | null {\n const { eta_days_min: min, eta_days_max: max } = rate\n if (typeof min === 'number' && typeof max === 'number') {\n if (min === max) return min === 1 ? messages.etaOne : fill(messages.etaMany, { n: min })\n return fill(messages.etaRange, { min, max })\n }\n if (typeof max === 'number') return max === 1 ? messages.etaOne : fill(messages.etaUpTo, { max })\n if (typeof min === 'number') return min === 1 ? messages.etaOne : fill(messages.etaFrom, { min })\n return rate.eta ?? null\n}\n\nexport type RateBadge = 'cheapest' | 'fastest'\n\nconst costOf = (r: ShippingRate) => {\n const n = Number(r.cost.amount)\n return Number.isFinite(n) ? n : null\n}\nconst daysOf = (r: ShippingRate) => r.eta_days_max ?? r.eta_days_min ?? null\n\n/**\n * Badges per rate id. Only with two or more rates, only when one rate is strictly the cheapest (same currency) or\n * strictly the fastest: a tie gets no badge, so the badge always tells the buyer something.\n */\nexport function rateBadges(rates: readonly ShippingRate[]): Map<string, RateBadge[]> {\n const out = new Map<string, RateBadge[]>()\n if (rates.length < 2) return out\n const add = (id: string, b: RateBadge) => out.set(id, [...(out.get(id) ?? []), b])\n const unique = (values: Array<[string, number | null]>) => {\n const known = values.filter((v): v is [string, number] => v[1] !== null)\n if (known.length < 2) return null\n const min = Math.min(...known.map((v) => v[1]))\n const winners = known.filter((v) => v[1] === min)\n return winners.length === 1 ? winners[0]![0] : null\n }\n const currencies = new Set(rates.map((r) => r.cost.currency_code))\n if (currencies.size === 1) {\n const id = unique(rates.map((r) => [r.id, costOf(r)]))\n if (id) add(id, 'cheapest')\n }\n const fast = unique(rates.map((r) => [r.id, daysOf(r)]))\n if (fast) add(fast, 'fastest')\n return out\n}\n\n/** Earliest `expires_at` of the rates (the deadline of the whole list), or `null`. */\nexport function quoteDeadline(rates: readonly Pick<ShippingRate, 'expires_at'>[]): Date | null {\n let best: Date | null = null\n for (const r of rates) {\n if (!r.expires_at) continue\n const d = new Date(r.expires_at)\n if (Number.isNaN(d.getTime())) continue\n if (!best || d < best) best = d\n }\n return best\n}\n\nexport type QuoteNote = { text: string; soon: boolean }\n\n/**\n * One human note for the quote deadline, in the buyer's time zone (or `timeZone`): \"valid until 9:39 p.m.\", \"until\n * tomorrow at…\", \"until Oct 24, …\", or \"expire soon\" within `soonMinutes` (default 15). `null` when already past.\n */\nexport function quoteNote(\n deadline: Date | null,\n opts: { locale?: string; now?: Date; timeZone?: string; soonMinutes?: number; messages?: DeliveryMessages } = {},\n): QuoteNote | null {\n if (!deadline) return null\n const now = opts.now ?? new Date()\n const left = deadline.getTime() - now.getTime()\n if (left <= 0) return null\n const m = opts.messages ?? ES\n const locale = opts.locale ?? 'es-MX'\n const tz = opts.timeZone ? { timeZone: opts.timeZone } : {}\n const time = new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: '2-digit', ...tz }).format(deadline)\n if (left <= (opts.soonMinutes ?? 15) * 60_000) return { text: fill(m.quoteSoon, { time }), soon: true }\n const day = (d: Date) => new Intl.DateTimeFormat('en-CA', { year: 'numeric', month: '2-digit', day: '2-digit', ...tz }).format(d)\n if (day(deadline) === day(now)) return { text: fill(m.quoteToday, { time }), soon: false }\n if (day(deadline) === day(new Date(now.getTime() + 86_400_000))) return { text: fill(m.quoteTomorrow, { time }), soon: false }\n const date = new Intl.DateTimeFormat(locale, { day: 'numeric', month: 'short', hour: 'numeric', minute: '2-digit', ...tz }).format(deadline)\n return { text: fill(m.quoteLater, { date }), soon: false }\n}\n\n/** Error codes a server uses (or will use) when the chosen rate is no longer quotable. */\nconst QUOTE_CODES = new Set(['quote_expired', 'rate_expired', 'rate_changed', 'rate_unavailable', 'rate_not_found', 'stale_rate', 'invalid_rate'])\n\n/**\n * `true` when saving a shipping rate failed because the quote expired or the rates changed, so the shop should reload\n * the rates (and keep the address) instead of showing a generic failure. Recognizes the explicit codes\n * (`quote_expired`, `rate_expired`…, any status), a `409`, and the generic `422` on the rate field that older servers\n * answer when the provider re-quoted with new ids. 5xx and other 4xx stay real failures.\n */\nexport function isQuoteChange(err: { status?: number; code?: string | null; field?: string | null } | null | undefined): boolean {\n if (!err) return false\n if (err.code && QUOTE_CODES.has(err.code)) return true\n if (err.status === 409) return true\n return err.status === 422 && (err.field === 'rate_id' || err.field === 'delivery' || err.field === 'delivery.rate_id' || !err.field)\n}\n\n/**\n * The rate of a fresh quote that matches the one the buyer had chosen (same carrier and service), so a re-quote keeps\n * the choice even though the provider issued new ids. `null` when that service is no longer offered.\n */\nexport function matchRate<R extends Pick<ShippingRate, 'id' | 'carrier' | 'service_code' | 'title'>>(previous: Pick<ShippingRate, 'carrier' | 'service_code' | 'title'> | null | undefined, rates: readonly R[]): R | null {\n if (!previous) return null\n const norm = (s: string | null | undefined) => (s ?? '').trim().toLowerCase()\n const sameCarrier = (r: R) => norm(r.carrier) === norm(previous.carrier)\n if (previous.service_code) {\n const hit = rates.find((r) => sameCarrier(r) && norm(r.service_code) === norm(previous.service_code))\n if (hit) return hit\n }\n return rates.find((r) => sameCarrier(r) && norm(r.title) === norm(previous.title)) ?? null\n}\n","import { useMemo, useSyncExternalStore, type CSSProperties, type ReactNode } from 'react'\nimport { formatMoney, type Money, type PickupOption, type ShippingRate } from '@asteby/storefront'\nimport { useResolvedLocale } from '../locale.js'\nimport { BrandMark } from './brand-mark.js'\nimport { flatRates, recommendRates, type RateTag } from './recommend.js'\nimport {\n deliveryMessages,\n quoteDeadline,\n quoteNote,\n rateBadges,\n rateCarrier,\n rateEta,\n rateService,\n type DeliveryMessages,\n type RateBadge,\n} from './delivery.js'\n\nexport type DeliveryOptionsClassNames = Partial<\n Record<\n | 'root'\n | 'option'\n | 'radio'\n | 'mark'\n | 'body'\n | 'title'\n | 'carrier'\n | 'service'\n | 'eta'\n | 'badges'\n | 'badge'\n | 'price'\n | 'free'\n | 'note'\n | 'partial'\n | 'skeleton'\n | 'more'\n | 'moreSummary'\n | 'group'\n | 'groupTitle'\n | 'error'\n | 'retry',\n string\n >\n>\n\nexport type DeliveryOptionsProps = {\n rates: readonly ShippingRate[]\n pickup?: readonly PickupOption[]\n /** Radio group name. Default `delivery_choice`. */\n name?: string\n /** Form value of a rate. Default `rate:<id>`. */\n rateValue?: (rate: ShippingRate) => string\n /** Form value of a pickup branch. Default `pickup:<branch_id>`. */\n pickupValue?: (branch: PickupOption) => string\n /** Uncontrolled preselection. Default: the first rate. `null`: nothing preselected. */\n defaultValue?: string | null\n /** Controlled value (use with `onValueChange`). */\n value?: string\n onValueChange?: (value: string) => void\n /** Some provider did not answer (`DeliveryOptions.partial`): one neutral note above the list. */\n partial?: boolean\n /** The previous quote expired or changed and these rates are fresh: one status note above the list. */\n requoted?: boolean\n /** Rates are being quoted again: skeleton rows (no rates yet) or the current rows dimmed, `aria-busy`. */\n loading?: boolean\n /** Quote deadline note: `always` (default), only when it is `soon`, or `never`. */\n quoteNote?: 'always' | 'soon' | 'never'\n /** Time zone of the note. Default: the buyer's browser. */\n timeZone?: string\n /** Show the carrier marks. Default true. */\n marks?: boolean\n /** Cheapest / fastest badges. Default true. */\n badges?: boolean\n required?: boolean\n locale?: string\n messages?: Partial<DeliveryMessages>\n renderAmount?: (amount: Money) => ReactNode\n classNames?: DeliveryOptionsClassNames\n /**\n * `list` (default): every rate, as the server orders them. `recommended`: up to `recommendedCount` rates (cheapest,\n * fastest and the best balance, tagged) and the rest under \"Show more options (N)\", grouped by carrier so the carrier\n * name is not repeated on every row. Repeated services are dropped (the cheapest stays). Works without JavaScript\n * (`<details>`); it opens by itself when the chosen rate is inside. `flat`: ONE plain list like most online shops:\n * every service ordered from the lowest to the highest price, repeated services dropped (the cheapest stays), the\n * cheapest / fastest / recommended tags on the rows that earn them, no `<details>` and no groups. The chosen rate is\n * always listed, and with no explicit default the preselected row is the first one (the cheapest).\n */\n layout?: 'list' | 'recommended' | 'flat'\n /** Rates recommended in `layout=\"recommended\"`. Default 3. */\n recommendedCount?: number\n /**\n * The rates could not be quoted (provider down, timeout): one friendly alert instead of the list, with a retry button\n * when `onRetry` is set. `true` uses the default text; a string replaces it.\n */\n error?: boolean | string\n onRetry?: () => void\n /** `data-testid` of every radio. */\n testId?: string\n /** Rows the shop renders before the rates (e.g. \"home delivery, rates after the address\"). */\n children?: ReactNode\n}\n\nconst SR_ONLY: CSSProperties = { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)', whiteSpace: 'nowrap' }\n\nconst useHydrated = () =>\n useSyncExternalStore(\n () => () => {},\n () => true,\n () => false,\n )\n\nfunction PickupGlyph({ size = 24 }: { size?: number }) {\n return (\n <svg viewBox=\"0 0 48 32\" width={Math.round(size * 1.5)} height={size} aria-hidden=\"true\" focusable=\"false\" style={{ flex: 'none' }} data-sf-brand-mark=\"pickup\">\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill=\"var(--sf-brand-mark-bg, #E7E9EE)\" stroke=\"var(--sf-brand-mark-ring, rgb(127 127 127 / 0.35))\" />\n <path d=\"M15 13.5 17 9h14l2 4.5M15 13.5h18M15 13.5V23h18v-9.5M21 23v-5h6v5\" fill=\"none\" stroke=\"var(--sf-brand-mark-fg, #2B2F38)\" strokeWidth=\"1.8\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\n/**\n * The rates and pickup branches of \"Delivery\" as native radios: carrier mark and commercial name, readable service,\n * arrival time, cheapest / fastest badges, price as the server sends it, and ONE note for the quote deadline in the\n * buyer's time zone. Works without JavaScript (plain radios in the page form); the note appears after hydration in a\n * reserved line, so it never shifts the layout.\n *\n * Wrap it in the shop's own `<fieldset><legend>`. Style it with `classNames` and/or the default sheet\n * `@asteby/storefront-react/checkout.css`.\n */\nexport function DeliveryOptions(props: DeliveryOptionsProps) {\n const {\n rates,\n pickup = [],\n name = 'delivery_choice',\n rateValue = (r) => `rate:${r.id}`,\n pickupValue = (b) => `pickup:${b.branch_id}`,\n value,\n onValueChange,\n partial = false,\n requoted = false,\n loading = false,\n timeZone,\n marks = true,\n badges: showBadges = true,\n required = true,\n renderAmount,\n classNames: cx = {},\n testId,\n children,\n layout = 'list',\n error,\n onRetry,\n } = props\n const locale = useResolvedLocale(props.locale)\n const m = useMemo(() => deliveryMessages(locale, props.messages), [locale, props.messages])\n const hydrated = useHydrated()\n const badges = useMemo(() => (showBadges ? rateBadges(rates) : new Map<string, RateBadge[]>()), [rates, showBadges])\n const flat = useMemo(\n () => (layout === 'flat' ? flatRates(rates, { count: props.recommendedCount ?? 3, keepId: value ? rates.find((r) => rateValue(r) === value)?.id ?? null : null }) : null),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [layout, rates, props.recommendedCount, value],\n )\n const firstRate = flat ? flat[0]?.rate : rates[0]\n const firstValue = firstRate ? rateValue(firstRate) : null\n const defaultValue = props.defaultValue === undefined ? firstValue : props.defaultValue\n const amount = (money: Money) => (Number(money.amount) === 0 ? <span className={cx.free} data-sf-delivery-free>{m.free}</span> : renderAmount ? renderAmount(money) : formatMoney(money, locale))\n const mode = props.quoteNote ?? 'always'\n const deadline = mode === 'never' ? null : quoteDeadline(rates)\n const note = hydrated && deadline ? quoteNote(deadline, { locale, messages: m, ...(timeZone ? { timeZone } : {}) }) : null\n const shownNote = note && (mode === 'always' || note.soon) ? note : null\n\n const current = value ?? defaultValue ?? null\n const plan = useMemo(\n () => (layout === 'recommended' ? recommendRates(rates, { count: props.recommendedCount ?? 3 }) : null),\n [layout, rates, props.recommendedCount],\n )\n const inMore = plan ? plan.more.some((g) => g.rates.some((r) => rateValue(r) === current)) : false\n\n const radio = (v: string, describedBy?: string) => (\n <input\n type=\"radio\"\n name={name}\n value={v}\n required={required}\n className={cx.radio}\n {...(describedBy ? { 'aria-describedby': describedBy } : {})}\n {...(value !== undefined ? { checked: value === v, onChange: () => onValueChange?.(v) } : { defaultChecked: v === defaultValue, ...(onValueChange ? { onChange: () => onValueChange(v) } : {}) })}\n {...(testId ? { 'data-testid': testId } : {})}\n />\n )\n\n const tagText = (t: RateTag | RateBadge) => (t === 'cheapest' ? m.cheapest : t === 'fastest' ? m.fastest : m.bestValue)\n\n /** One row: [radio] [mark] carrier + service / arrival / tags ........ price. In a carrier group the mark and the carrier name live in the group title. */\n const rateRow = (rate: ShippingRate, opts: { tags: readonly (RateTag | RateBadge)[]; grouped?: boolean }) => {\n const carrier = rateCarrier(rate)\n const service = rateService(rate)\n const eta = rateEta(rate, m)\n return (\n <label key={rate.id} className={cx.option} data-sf-delivery-option data-loading={loading || undefined} data-grouped={opts.grouped || undefined}>\n {radio(rateValue(rate))}\n {marks && !opts.grouped ? (\n // Fixed slot: logos of different widths do not push the text column out of line.\n <span data-sf-delivery-mark aria-hidden=\"true\">\n <BrandMark brand={rate.carrier ?? rate.provider ?? rate.title} size={28} {...(cx.mark ? { className: cx.mark } : {})} />\n </span>\n ) : null}\n <span className={cx.body} data-sf-delivery-body>\n <span className={cx.title} data-sf-delivery-title>\n {carrier ? (\n opts.grouped ? (\n <>\n {/* The group title already shows the carrier: only screen readers hear it again (each radio keeps a full name). */}\n <span style={SR_ONLY}>{carrier} </span>\n <span className={cx.carrier} data-sf-delivery-carrier data-sf-delivery-service-only>\n {service}\n </span>\n </>\n ) : (\n <>\n <span className={cx.carrier} data-sf-delivery-carrier>\n {carrier}\n </span>{' '}\n <span className={cx.service} data-sf-delivery-service>\n {service}\n </span>\n </>\n )\n ) : (\n <span className={cx.carrier} data-sf-delivery-carrier>\n {service}\n </span>\n )}\n </span>\n {eta ? (\n <span className={cx.eta} data-sf-delivery-eta>\n {eta}\n </span>\n ) : null}\n {opts.tags.length ? (\n <span className={cx.badges} data-sf-delivery-badges>\n {opts.tags.map((b) => (\n <span key={b} className={cx.badge} data-sf-delivery-badge={b}>\n {tagText(b)}\n </span>\n ))}\n </span>\n ) : null}\n </span>\n <span className={cx.price} data-sf-delivery-price>\n {amount(rate.cost)}\n </span>\n </label>\n )\n }\n\n const errorText = error ? (typeof error === 'string' ? error : m.error) : null\n\n return (\n <div className={cx.root} data-sf-delivery data-layout={layout} aria-busy={loading || undefined}>\n {partial && !errorText ? (\n <p role=\"status\" className={cx.partial} data-sf-delivery-partial>\n {m.partial}\n </p>\n ) : null}\n {requoted ? (\n <p role=\"status\" className={cx.partial} data-sf-delivery-requoted>\n {m.requoted}\n </p>\n ) : null}\n {loading ? (\n <span style={SR_ONLY} role=\"status\" data-sf-delivery-loading>\n {m.loading}\n </span>\n ) : null}\n {errorText && rates.length === 0 && !loading ? (\n <div role=\"alert\" className={cx.error} data-sf-delivery-error>\n <p>{errorText}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-delivery-retry>\n {m.retry}\n </button>\n ) : null}\n </div>\n ) : null}\n {children}\n {loading && rates.length === 0\n ? [0, 1, 2].map((i) => <div key={i} className={cx.skeleton} data-sf-delivery-skeleton aria-hidden=\"true\" />)\n : null}\n {flat\n ? flat.map(({ rate, tags }) => rateRow(rate, { tags: showBadges ? tags : [] }))\n : plan\n ? plan.recommended.map(({ rate, tags }) => rateRow(rate, { tags: showBadges ? tags : [] }))\n : rates.map((rate) => rateRow(rate, { tags: badges.get(rate.id) ?? [] }))}\n {plan && plan.moreCount > 0 ? (\n <details className={cx.more} data-sf-delivery-more {...(inMore ? { open: true } : {})}>\n <summary className={cx.moreSummary} data-sf-delivery-more-summary>\n {m.moreOptions.replace('{n}', String(plan.moreCount))}\n </summary>\n <div data-sf-delivery-groups>\n {plan.more.map((g) => {\n const carrierName = g.carrier ? rateCarrier({ carrier: g.carrier }) : null\n const id = `${name}-group-${g.key || 'other'}`\n return (\n <div key={g.key || 'other'} role=\"group\" aria-labelledby={id} className={cx.group} data-sf-delivery-group={g.key || 'other'}>\n <p id={id} className={cx.groupTitle} data-sf-delivery-group-title>\n {marks && g.carrier ? <BrandMark brand={g.carrier} size={22} /> : null}\n <span>{carrierName ?? m.otherCarriers}</span>\n </p>\n {g.rates.map((rate) => rateRow(rate, { tags: [], grouped: Boolean(carrierName) }))}\n </div>\n )\n })}\n </div>\n </details>\n ) : null}\n {pickup.map((b) => (\n <label key={b.branch_id} className={cx.option} data-sf-delivery-option data-sf-delivery-pickup>\n {radio(pickupValue(b))}\n {marks ? <PickupGlyph size={28} /> : null}\n <span className={cx.body} data-sf-delivery-body>\n <span className={cx.title} data-sf-delivery-title>\n <span className={cx.carrier} data-sf-delivery-carrier>\n {m.pickupTitle.replace('{name}', b.name)}\n </span>\n </span>\n {b.address || b.city ? (\n <span className={cx.eta} data-sf-delivery-eta>\n {[b.address, b.city].filter(Boolean).join(', ')}\n </span>\n ) : null}\n </span>\n <span className={cx.price} data-sf-delivery-price>\n <span className={cx.free} data-sf-delivery-free>\n {m.free}\n </span>\n </span>\n </label>\n ))}\n {deadline ? (\n <p className={cx.note} data-sf-delivery-note data-soon={shownNote?.soon || undefined} aria-live=\"polite\">\n {shownNote?.text ?? ''}\n </p>\n ) : null}\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/checkout/fields.tsx","../src/checkout/address-fields.tsx","../src/context.tsx","../src/locale.ts","../src/components.tsx","../src/ui/product-preview.tsx","../src/checkout/order-summary.tsx","../src/checkout/brands/logos.generated.ts","../src/checkout/brands.ts","../src/checkout/brand-mark.tsx","../src/checkout/recommend.ts","../src/checkout/delivery.ts","../src/checkout/delivery-options.tsx","../src/checkout/auto-quote.ts"],"names":["useRef","useState","useEffect","jsxs","jsx","ES","EN","Fragment","useId","fill","el","createContext","useContext","formatMoney","costOf","daysOf","norm","useSyncExternalStore","useMemo","useCallback"],"mappings":"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","file":"checkout.cjs","sourcesContent":["/**\n * Form fields of a checkout with inline validation: a labelled field that shows its own error under it, a focusable\n * error summary for the submit, and one hook that reads the browser's own constraint validation (`required`, `type`,\n * `pattern`, `minLength`...) so the rules stay in the HTML and the page keeps working without JavaScript (then the\n * browser explains the errors itself).\n *\n * WCAG 2.2: errors are identified in text next to the field (3.3.1), linked with `aria-describedby` and `aria-invalid`,\n * and the summary takes focus and links to every field (3.3.1 / 2.4.3). Validation runs when the buyer leaves a field\n * that has a value, and clears as soon as it is fixed: it never nags while typing.\n */\nimport { useEffect, useRef, useState, type InputHTMLAttributes, type ReactNode, type RefObject, type SelectHTMLAttributes } from 'react'\n\nexport type FieldMessages = {\n valueMissing: string\n /** Required radio group (delivery, payment). */\n choiceMissing: string\n email: string\n tel: string\n pattern: string\n /** `{n}` = minimum length. */\n tooShort: string\n /** A field the server rejected. */\n server: string\n /** Error summary title, `{n}` = number of fields. */\n summaryOne: string\n summaryMany: string\n optional: string\n}\n\nconst ES: FieldMessages = {\n valueMissing: 'Completa este campo.',\n choiceMissing: 'Elige una opción.',\n email: 'Escribe un correo válido, por ejemplo nombre@correo.com.',\n tel: 'Escribe un teléfono válido.',\n pattern: 'Revisa el formato.',\n tooShort: 'Escribe al menos {n} caracteres.',\n server: 'Revisa este campo.',\n summaryOne: 'Revisa 1 campo para continuar',\n summaryMany: 'Revisa {n} campos para continuar',\n optional: '(opcional)',\n}\n\nconst EN: FieldMessages = {\n valueMissing: 'Fill in this field.',\n choiceMissing: 'Choose an option.',\n email: 'Enter a valid email, like name@example.com.',\n tel: 'Enter a valid phone number.',\n pattern: 'Check the format.',\n tooShort: 'Enter at least {n} characters.',\n server: 'Check this field.',\n summaryOne: 'Check 1 field to continue',\n summaryMany: 'Check {n} fields to continue',\n optional: '(optional)',\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides. */\nexport function fieldMessages(locale?: string | null, overrides?: Partial<FieldMessages> | null): FieldMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\n/** Field name -> error text. */\nexport type FieldErrors = Record<string, string>\n\nexport type ErrorSummaryItem = { name: string; id: string; label: string; message: string }\n\ntype Control = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n\nconst isControl = (el: EventTarget | null): el is Control =>\n !!el && typeof (el as Element).tagName === 'string' && ['INPUT', 'SELECT', 'TEXTAREA'].includes((el as Element).tagName) && !!(el as Control).name\n\n/**\n * The error text for a control, from its validity. A control can bring its own text with `data-sf-error` (any\n * failure) or `title` (pattern mismatch, the HTML convention).\n */\nexport function validationMessage(el: Control, m: FieldMessages = ES): string | null {\n const v = el.validity\n if (!v || v.valid) return null\n const own = el.getAttribute('data-sf-error')\n if (own) return own\n if (v.valueMissing) return el instanceof HTMLInputElement && (el.type === 'radio' || el.type === 'checkbox') ? m.choiceMissing : m.valueMissing\n if (v.typeMismatch && el instanceof HTMLInputElement) return el.type === 'email' ? m.email : el.type === 'tel' ? m.tel : m.pattern\n if (v.patternMismatch) return el.getAttribute('title') || (el instanceof HTMLInputElement && el.type === 'tel' ? m.tel : m.pattern)\n if (v.tooShort && el instanceof HTMLInputElement) return m.tooShort.replace('{n}', String(el.minLength))\n return el.validationMessage || m.pattern\n}\n\n/** Visible name of a control: its `<label>`, `aria-label`, or the legend of its group (radios). */\nfunction labelOf(el: Control): string {\n if (el instanceof HTMLInputElement && el.type === 'radio') {\n const legend = el.closest('fieldset')?.querySelector('legend')\n if (legend?.textContent) return legend.textContent.trim()\n }\n const text = el.labels?.[0]?.getAttribute('data-sf-label') ?? el.labels?.[0]?.textContent ?? el.getAttribute('aria-label') ?? el.name\n return text.trim()\n}\n\nexport type UseFieldErrorsOptions = {\n locale?: string\n messages?: Partial<FieldMessages>\n /** Fields the server rejected (e.g. from the action), shown with `serverMessages[name]` or the generic text. */\n serverFields?: Iterable<string> | null\n serverMessages?: Record<string, string> | null\n}\n\nexport type FieldErrorsState = {\n errors: FieldErrors\n /** Non-null after a submit with problems (or with server errors): render it in `<ErrorSummary>`. */\n summary: ErrorSummaryItem[] | null\n /** Changes every time a new summary appears, so `<ErrorSummary>` focuses it again. */\n summaryKey: number\n clear: () => void\n}\n\n/**\n * Inline validation for the page `<form>`. Listens to the form (no wrapping component): leaving a field with a value\n * checks it; typing in a field with an error clears it when fixed; a submit or `reportValidity()` with problems\n * collects them (the browser's bubbles are replaced by the inline texts) for the summary.\n */\nexport function useFieldErrors(formRef: RefObject<HTMLFormElement | null>, options: UseFieldErrorsOptions = {}): FieldErrorsState {\n const m = fieldMessages(options.locale, options.messages)\n const live = useRef(m)\n live.current = m\n const server = [...(options.serverFields ?? [])]\n const serverKey = server.join('|')\n const [errors, setErrors] = useState<FieldErrors>(() => Object.fromEntries(server.map((n) => [n, options.serverMessages?.[n] ?? m.server])))\n const [summary, setSummary] = useState<ErrorSummaryItem[] | null>(null)\n const [summaryKey, setSummaryKey] = useState(0)\n\n // Server errors (a new action result): inline texts plus a summary.\n useEffect(() => {\n if (!server.length) return\n const form = formRef.current\n const items: ErrorSummaryItem[] = []\n const next: FieldErrors = {}\n for (const name of server) {\n const msg = options.serverMessages?.[name] ?? live.current.server\n next[name] = msg\n const el = form?.elements.namedItem(name)\n const ctl = el && 'length' in el && !(el instanceof HTMLSelectElement) ? ((el as RadioNodeList)[0] as Control | undefined) : (el as Control | null)\n if (ctl) items.push({ name, id: ctl.id || name, label: labelOf(ctl), message: msg })\n }\n setErrors((e) => ({ ...e, ...next }))\n if (items.length) {\n setSummary(items)\n setSummaryKey((k) => k + 1)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [serverKey])\n\n useEffect(() => {\n const form = formRef.current\n if (!form) return\n let batch: Control[] | null = null\n const set = (name: string, msg: string | null) =>\n setErrors((e) => {\n if (msg === null) {\n if (!(name in e)) return e\n const { [name]: _gone, ...rest } = e\n return rest\n }\n return e[name] === msg ? e : { ...e, [name]: msg }\n })\n const onBlur = (ev: FocusEvent) => {\n const el = ev.target\n if (!isControl(el) || (el instanceof HTMLInputElement && (el.type === 'radio' || el.type === 'checkbox' || el.type === 'hidden'))) return\n // Leaving an empty field you only tabbed through is not an error yet; it is at submit.\n if (!el.value) return\n set(el.name, validationMessage(el, live.current))\n }\n const onInput = (ev: Event) => {\n const el = ev.target\n if (!isControl(el)) return\n setErrors((e) => {\n if (!(el.name in e)) return e\n const msg = el.validity.valid ? null : validationMessage(el, live.current)\n if (msg !== null) return e // keep the text until the field is fixed (no flicker while typing)\n const { [el.name]: _gone, ...rest } = e\n return rest\n })\n }\n const onInvalid = (ev: Event) => {\n const el = ev.target\n if (!isControl(el)) return\n ev.preventDefault() // the inline text replaces the browser bubble\n if (!batch) {\n batch = []\n queueMicrotask(() => {\n const list = batch ?? []\n batch = null\n const seen = new Set<string>()\n const items: ErrorSummaryItem[] = []\n const next: FieldErrors = {}\n for (const c of list) {\n if (seen.has(c.name)) continue\n seen.add(c.name)\n const msg = validationMessage(c, live.current) ?? live.current.valueMissing\n next[c.name] = msg\n items.push({ name: c.name, id: c.id || c.name, label: labelOf(c), message: msg })\n }\n setErrors((e) => ({ ...e, ...next }))\n setSummary(items)\n setSummaryKey((k) => k + 1)\n })\n }\n batch.push(el)\n }\n form.addEventListener('focusout', onBlur)\n form.addEventListener('input', onInput)\n form.addEventListener('change', onInput)\n form.addEventListener('invalid', onInvalid, true)\n return () => {\n form.removeEventListener('focusout', onBlur)\n form.removeEventListener('input', onInput)\n form.removeEventListener('change', onInput)\n form.removeEventListener('invalid', onInvalid, true)\n }\n }, [formRef])\n\n // The summary follows the fixes: a field fixed after the submit leaves the list.\n const shown = summary ? summary.filter((s) => s.name in errors).map((s) => ({ ...s, message: errors[s.name]! })) : null\n return {\n errors,\n summary: shown && shown.length ? shown : null,\n summaryKey,\n clear: () => {\n setErrors({})\n setSummary(null)\n },\n }\n}\n\nexport type ErrorSummaryProps = {\n items: readonly ErrorSummaryItem[] | null\n /** Changes when a new summary must take focus (`useFieldErrors().summaryKey`). */\n focusKey?: number\n locale?: string\n messages?: Partial<FieldMessages>\n title?: ReactNode\n className?: string\n classNames?: Partial<Record<'title' | 'list' | 'link', string>>\n}\n\n/**\n * The list of problems after a submit, above the form: `role=\"alert\"`, takes focus, one link per field (moves the\n * focus to it). Renders nothing without items.\n */\nexport function ErrorSummary({ items, focusKey, locale, messages, title, className, classNames: cx = {} }: ErrorSummaryProps) {\n const ref = useRef<HTMLDivElement>(null)\n const m = fieldMessages(locale, messages)\n const has = !!items && items.length > 0\n useEffect(() => {\n if (has) ref.current?.focus()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focusKey])\n if (!has) return null\n const n = items!.length\n return (\n <div ref={ref} role=\"alert\" tabIndex={-1} className={className} data-sf-error-summary aria-labelledby=\"sf-error-summary-title\">\n <p id=\"sf-error-summary-title\" className={cx.title} data-sf-error-summary-title>\n {title ?? (n === 1 ? m.summaryOne : m.summaryMany.replace('{n}', String(n)))}\n </p>\n <ul className={cx.list}>\n {items!.map((it) => (\n <li key={it.name}>\n <a\n href={`#${it.id}`}\n className={cx.link}\n onClick={(e) => {\n const el = document.getElementById(it.id)\n if (!el) return\n e.preventDefault()\n el.focus()\n el.scrollIntoView?.({ block: 'center' })\n }}\n >\n {it.label}: {it.message}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n\nexport type CheckoutFieldClassNames = Partial<Record<'root' | 'label' | 'optional' | 'input' | 'hint' | 'error', string>>\n\ntype BaseFieldProps = {\n name: string\n label: string\n /** Field id. Default: the name. */\n id?: string\n /** Error text (from `useFieldErrors().errors[name]` or the server). */\n error?: string | null\n /** Help under the label (\"we only use it for the delivery\"). */\n hint?: ReactNode\n /** Marks the label \"(optional)\" and drops `required`. */\n optional?: boolean\n classNames?: CheckoutFieldClassNames\n locale?: string\n messages?: Partial<FieldMessages>\n}\n\nexport type CheckoutFieldProps = BaseFieldProps & Omit<InputHTMLAttributes<HTMLInputElement>, 'name' | 'id'> & { as?: 'input' }\nexport type CheckoutSelectProps = BaseFieldProps & Omit<SelectHTMLAttributes<HTMLSelectElement>, 'name' | 'id'> & { as: 'select'; children: ReactNode }\n\n/**\n * One labelled field: label (with \"(optional)\"), hint, the control and its error text, wired with `aria-describedby`\n * and `aria-invalid`. Required unless `optional`. `as=\"select\"` renders a `<select>` with the given options.\n */\nexport function CheckoutField(props: CheckoutFieldProps | CheckoutSelectProps) {\n const { name, label, id = name, error, hint, optional = false, classNames: cx = {}, locale, messages, ...rest } = props\n const m = fieldMessages(locale, messages)\n const hintId = hint ? `${id}-hint` : undefined\n const errorId = `${id}-error`\n const describedBy = [hintId, error ? errorId : undefined].filter(Boolean).join(' ') || undefined\n const common = {\n id,\n name,\n required: !optional,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': describedBy,\n className: cx.input,\n 'data-sf-field-control': '',\n } as const\n return (\n <div className={cx.root} data-sf-field data-invalid={error ? '' : undefined}>\n <label htmlFor={id} className={cx.label} data-sf-label={label}>\n {label}\n {optional ? (\n <span className={cx.optional} data-sf-field-optional>\n {' '}\n {m.optional}\n </span>\n ) : null}\n </label>\n {hint ? (\n <p id={hintId} className={cx.hint} data-sf-field-hint>\n {hint}\n </p>\n ) : null}\n {rest.as === 'select' ? (\n (() => {\n const { as: _as, children, ...select } = rest\n return (\n <select {...select} {...common}>\n {children}\n </select>\n )\n })()\n ) : (\n (() => {\n const { as: _as, ...input } = rest as CheckoutFieldProps\n return <input {...input} {...common} />\n })()\n )}\n {/* Reserved only when there is an error: the text sits right under its field. */}\n {error ? (\n <p id={errorId} className={cx.error} data-sf-field-error>\n {error}\n </p>\n ) : null}\n </div>\n )\n}\n","/**\n * Contact and shipping address fields of a checkout, in the order and with the autofill tokens buyers expect:\n * contact (e-mail, phone, given and family name) and address (postal code first, so it can fill state and city, then\n * state, city, colonia, street, interior and delivery references). One column on phones; the shop lays out the grid\n * with `classNames`.\n *\n * Nothing here knows a country: the postal-code format, the list of states and the postal-code lookup come from the\n * shop (region config, a same-origin route). Without them the fields are plain text and nothing is invented.\n */\nimport { useEffect, useId, useRef, useState, type ReactNode } from 'react'\nimport type { Address } from '@asteby/storefront'\nimport { CheckoutField, type CheckoutFieldClassNames, type FieldErrors, type FieldMessages } from './fields.js'\n\nexport type AddressFieldKey = 'zip' | 'province' | 'city' | 'neighborhood' | 'address1' | 'address2' | 'reference'\nexport type ContactFieldKey = 'email' | 'phone' | 'first_name' | 'last_name'\n\nexport type AddressFieldsMessages = Record<AddressFieldKey | ContactFieldKey, string> & {\n provincePlaceholder: string\n neighborhoodPlaceholder: string\n address1Hint: string\n referenceHint: string\n emailHint: string\n phoneHint: string\n lookupFilled: string\n /** Tooltip and note of a state the postal code defined (locked). */\n provinceLocked: string\n /** Discreet action that releases the locked state so the buyer can fix the postal code. */\n changePostalCode: string\n}\n\nconst ES: AddressFieldsMessages = {\n email: 'Correo',\n phone: 'Teléfono',\n first_name: 'Nombre',\n last_name: 'Apellidos',\n zip: 'Código postal',\n province: 'Estado',\n city: 'Ciudad o municipio',\n neighborhood: 'Colonia',\n address1: 'Calle y número',\n address2: 'Número interior o departamento',\n reference: 'Referencias para la entrega',\n provincePlaceholder: 'Elige tu estado',\n neighborhoodPlaceholder: 'Elige tu colonia',\n address1Hint: 'Por ejemplo: Av. Insurgentes Sur 1234',\n referenceHint: 'Entre qué calles, color de la fachada…',\n emailHint: 'Te enviamos aquí la confirmación y el seguimiento.',\n phoneHint: 'Solo para la paquetería, por si necesita contactarte.',\n lookupFilled: 'Completamos estado y ciudad con tu código postal.',\n provinceLocked: 'Definido por tu código postal',\n changePostalCode: 'Cambiar código postal',\n}\n\nconst EN: AddressFieldsMessages = {\n email: 'Email',\n phone: 'Phone',\n first_name: 'First name',\n last_name: 'Last name',\n zip: 'Postal code',\n province: 'State',\n city: 'City',\n neighborhood: 'Neighborhood',\n address1: 'Street and number',\n address2: 'Apartment, suite',\n reference: 'Delivery notes',\n provincePlaceholder: 'Choose your state',\n neighborhoodPlaceholder: 'Choose your neighborhood',\n address1Hint: 'For example: 1234 Main St',\n referenceHint: 'Cross streets, building color…',\n emailHint: 'We send the confirmation and tracking here.',\n phoneHint: 'Only for the carrier, in case they need to reach you.',\n lookupFilled: 'We filled in state and city from your postal code.',\n provinceLocked: 'Set by your postal code',\n changePostalCode: 'Change postal code',\n}\n\nexport function addressFieldsMessages(locale?: string | null, overrides?: Partial<AddressFieldsMessages> | null): AddressFieldsMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\nexport type FieldLayoutClassNames = CheckoutFieldClassNames & {\n /** Extra class of a field that should span the whole row in a two-column grid. */\n wide?: string\n /** Extra class of a field that fits half a row. */\n half?: string\n}\n\ntype Common = {\n /** Inline errors by field name (`useFieldErrors().errors`). */\n errors?: FieldErrors\n locale?: string\n messages?: Partial<AddressFieldsMessages>\n fieldMessages?: Partial<FieldMessages>\n classNames?: FieldLayoutClassNames\n}\n\nconst join = (...c: Array<string | undefined>) => c.filter(Boolean).join(' ') || undefined\nconst field = (cx: FieldLayoutClassNames, span: 'wide' | 'half'): CheckoutFieldClassNames => ({ ...cx, root: join(cx.root, cx[span]) })\n\nexport type ContactFieldsProps = Common & {\n defaults?: Partial<Record<ContactFieldKey, string | null>>\n /** Form names. Default: the keys. */\n names?: Partial<Record<ContactFieldKey, string>>\n /** Phone format from the shop or region (e.g. `{ pattern: '[0-9 +()-]{10,}', title: '10 dígitos' }`). */\n phone?: { pattern?: string; title?: string; minLength?: number }\n /** Explain why e-mail and phone are needed (default true). */\n hints?: boolean\n}\n\n/** E-mail, phone, given and family name with their autofill tokens and the right mobile keyboards. */\nexport function ContactFields({ defaults = {}, names = {}, errors = {}, phone, hints = true, locale, messages, fieldMessages: fm, classNames: cx = {} }: ContactFieldsProps) {\n const m = addressFieldsMessages(locale, messages)\n const n = (k: ContactFieldKey) => names[k] ?? k\n const common = { ...(locale ? { locale } : {}), ...(fm ? { messages: fm } : {}) }\n return (\n <>\n <CheckoutField {...common} name={n('email')} label={m.email} type=\"email\" autoComplete=\"email\" inputMode=\"email\" autoCapitalize=\"none\" spellCheck={false} defaultValue={defaults.email ?? ''} error={errors[n('email')] ?? null} hint={hints ? m.emailHint : undefined} classNames={field(cx, 'wide')} />\n <CheckoutField {...common} name={n('phone')} label={m.phone} type=\"tel\" autoComplete=\"tel\" inputMode=\"tel\" defaultValue={defaults.phone ?? ''} error={errors[n('phone')] ?? null} hint={hints ? m.phoneHint : undefined} classNames={field(cx, 'wide')} {...(phone?.pattern ? { pattern: phone.pattern } : {})} {...(phone?.title ? { title: phone.title } : {})} {...(phone?.minLength ? { minLength: phone.minLength } : {})} />\n <CheckoutField {...common} name={n('first_name')} label={m.first_name} autoComplete=\"given-name\" defaultValue={defaults.first_name ?? ''} error={errors[n('first_name')] ?? null} classNames={field(cx, 'half')} />\n <CheckoutField {...common} name={n('last_name')} label={m.last_name} autoComplete=\"family-name\" defaultValue={defaults.last_name ?? ''} error={errors[n('last_name')] ?? null} classNames={field(cx, 'half')} />\n </>\n )\n}\n\n/** What a postal-code lookup answers. Every field optional: only what the source knows. */\nexport type PostalCodeInfo = { province?: string | null; city?: string | null; neighborhoods?: readonly string[] | null }\n\nexport type AddressFieldsProps = Common & {\n defaults?: Partial<Pick<Address, 'zip' | 'province' | 'city' | 'neighborhood' | 'address1' | 'address2' | 'reference'>> | null\n /** Form names. Default: the keys (the `AddressInput` fields of the Storefront API). */\n names?: Partial<Record<AddressFieldKey, string>>\n /** ISO country of the address (hidden field `country_code`). */\n countryCode: string\n /** States of the country (from the region config). With them, \"State\" is a `<select>`; the value sent is `name`. */\n provinces?: ReadonlyArray<{ code?: string | null; name: string }> | null\n /** Postal-code format of the country (from the region config), e.g. `{ pattern: '[0-9]{5}', maxLength: 5, inputMode: 'numeric', title: '5 dígitos' }`. */\n postalCode?: { pattern?: string; maxLength?: number; inputMode?: 'numeric' | 'text'; title?: string }\n /**\n * Fills state and city (and suggests colonias) from the postal code, when the shop has a source (a same-origin\n * route over a postal-code catalog). Called once the code matches `postalCode.pattern` (or on leaving the field).\n * Never overwrites what the buyer typed.\n */\n lookupPostalCode?: (zip: string) => Promise<PostalCodeInfo | null>\n /**\n * How to offer the colonias when the postal code has SEVERAL: `'datalist'` (default, suggestions on a text field) or\n * `'select'` (a real list; the field becomes a `<select>` of those colonias, unless the buyer already typed one that\n * is not in the list, which is kept as text). With exactly one colonia it is filled in either mode.\n */\n neighborhoodList?: 'datalist' | 'select'\n /** Show the colonia field: `true` (default, optional), `'required'`, or `false`. */\n neighborhood?: boolean | 'required'\n /** Show the delivery references field (default true, optional). */\n reference?: boolean\n /**\n * Once `lookupPostalCode` fills the state field (never over what the buyer already typed), lock it: a plain\n * `<input>` turns read-only; a `<select>` (from `provinces`) turns disabled with a hidden field that keeps\n * submitting its value. The state is the postal code's: the field shows a lock, the tooltip `provinceLocked` and a\n * discreet `changePostalCode` action; editing the postal code releases the lock and clears what the lookup filled\n * (also when the new code resolves nothing), so a stale state is never left behind. Default TRUE (the server\n * validates the pair again; set `false` to keep the filled state as editable as any field). Marked with\n * `data-sf-locked=\"1\"` for the shop's own styling.\n */\n lockProvinceOnFill?: boolean\n /** Rendered after the fields (e.g. \"save this address\"). */\n children?: ReactNode\n}\n\n/**\n * Shipping address in the order buyers fill it: postal code, state, city, colonia, street and number, interior and\n * references. Autofill tokens: `postal-code`, `address-level1/2/3`, `address-line1/2`. The postal code uses the\n * numeric keyboard when the country format is numeric.\n */\n/** Locks a field the lookup just filled: read-only for an `<input>`, disabled + a hidden mirror for a `<select>`. */\nfunction lockField(el: HTMLInputElement | HTMLSelectElement) {\n if (el.dataset.sfLocked === '1') return\n el.dataset.sfLocked = '1'\n el.setAttribute('aria-readonly', 'true')\n if (el instanceof HTMLSelectElement) {\n // A disabled `<select>` would stop submitting its value: a hidden sibling keeps it in the form.\n const name = el.getAttribute('name')\n if (name) {\n el.dataset.sfName = name\n const hidden = document.createElement('input')\n hidden.type = 'hidden'\n hidden.dataset.sfLockMirror = '1'\n hidden.name = name\n hidden.value = el.value\n el.insertAdjacentElement('afterend', hidden)\n el.removeAttribute('name')\n }\n el.disabled = true\n } else {\n el.readOnly = true\n }\n}\n\n/** Undoes `lockField`: the field is editable again and, when the lookup filled it, empty (its value belonged to the old postal code). */\nfunction unlockField(el: HTMLInputElement | HTMLSelectElement) {\n if (el.dataset.sfLocked !== '1') return\n delete el.dataset.sfLocked\n el.removeAttribute('aria-readonly')\n el.removeAttribute('title')\n if (el instanceof HTMLSelectElement) {\n const mirror = el.nextElementSibling\n if (mirror instanceof HTMLInputElement && mirror.dataset.sfLockMirror === '1') mirror.remove()\n if (el.dataset.sfName) el.setAttribute('name', el.dataset.sfName)\n delete el.dataset.sfName\n el.disabled = false\n } else {\n el.readOnly = false\n }\n}\n\n/** Name of the property set to `true` on every event the lookup dispatches when it fills a field. */\nexport const ADDRESS_FILL_EVENT_FLAG = 'sfSynthetic'\n\n/**\n * Was this `input` event dispatched by `AddressFields` itself (a postal-code fill) and not typed by the buyer? The shop's\n * own listeners (validation, autosave, delivery re-quote...) can ignore these. Real typing has `isTrusted: true`.\n */\nexport function isAddressFillEvent(event: Event): boolean {\n return (event as unknown as Record<string, unknown>)[ADDRESS_FILL_EVENT_FLAG] === true\n}\n\nexport function AddressFields(props: AddressFieldsProps) {\n const { defaults, names = {}, errors = {}, countryCode, provinces, postalCode, lookupPostalCode, lockProvinceOnFill = true, locale, messages, fieldMessages: fm, classNames: cx = {}, children } = props\n const showNeighborhood = props.neighborhood ?? true\n const showReference = props.reference ?? true\n const m = addressFieldsMessages(locale, messages)\n const n = (k: AddressFieldKey) => names[k] ?? k\n const common = { ...(locale ? { locale } : {}), ...(fm ? { messages: fm } : {}) }\n const listId = useId()\n const [colonias, setColonias] = useState<readonly string[]>([])\n const [filled, setFilled] = useState(false)\n const [provinceLocked, setProvinceLocked] = useState(false)\n const [coloniaSelect, setColoniaSelect] = useState(false)\n const coloniaSelectRef = useRef(false)\n // Switching the colonia between text and list remounts the field: what it should hold is carried to the new element.\n const coloniaCarry = useRef<{ value: string; autofilled: boolean; userEdited: boolean } | null>(null)\n const lastZip = useRef<string | null>(null)\n const zipRef = useRef<HTMLDivElement>(null)\n const lookupRef = useRef(lookupPostalCode)\n lookupRef.current = lookupPostalCode\n // ONE writer: lookup results are applied one after another, never interleaved (two lookups answering close together\n // would otherwise write the same fields and fire their events at the same time).\n const writer = useRef<Promise<void>>(Promise.resolve())\n const enqueue = (task: () => void) => {\n writer.current = writer.current.then(task).catch(() => {})\n }\n\n // A field the buyer edited is theirs: only REAL input (`isTrusted`) marks it, not the events this component dispatches.\n useEffect(() => {\n const form = zipRef.current?.closest('form')\n if (!form) return\n const mark = (e: Event) => {\n if (!e.isTrusted) return\n const el = e.target as HTMLElement | null\n if (el instanceof HTMLInputElement || el instanceof HTMLSelectElement) {\n el.dataset.sfUserEdited = '1'\n delete el.dataset.sfAutofilled\n }\n }\n form.addEventListener('input', mark, true)\n form.addEventListener('change', mark, true)\n return () => {\n form.removeEventListener('input', mark, true)\n form.removeEventListener('change', mark, true)\n }\n }, [])\n\n // The state was the old postal code's: free it and drop what the lookup filled (state, city, colonia) so nothing stale stays.\n const releaseLookup = () => {\n const form = zipRef.current?.closest('form')\n if (!form) return\n const locked = form.querySelector<HTMLInputElement | HTMLSelectElement>('[data-sf-locked=\"1\"]')\n const touched: Array<HTMLInputElement | HTMLSelectElement> = []\n if (locked) {\n unlockField(locked)\n touched.push(locked)\n }\n for (const key of ['province', 'city', 'neighborhood'] as const) {\n const el = form.elements.namedItem(n(key)) as HTMLInputElement | HTMLSelectElement | null\n if (el && !('length' in el && !(el instanceof HTMLSelectElement)) && !touched.includes(el)) touched.push(el)\n }\n for (const el of touched) {\n if (el.dataset.sfAutofilled !== '1') continue\n el.value = ''\n delete el.dataset.sfAutofilled\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, ADDRESS_FILL_EVENT_FLAG, { value: true })\n el.dispatchEvent(event)\n }\n lastZip.current = null\n setProvinceLocked(false)\n setFilled(false)\n }\n\n const runLookup = (zip: string) => {\n const lookup = lookupRef.current\n if (!lookup || !zip || zip === lastZip.current) return\n if (postalCode?.pattern && !new RegExp(`^(?:${postalCode.pattern})$`).test(zip)) return\n lastZip.current = zip\n const form = zipRef.current?.closest('form')\n void lookup(zip).then(\n (info) => {\n if (!info) return\n enqueue(() => {\n if (lastZip.current !== zip) return\n const fill = (name: string, value: string | null | undefined, lock?: boolean) => {\n const el = form?.elements.namedItem(name) as HTMLInputElement | HTMLSelectElement | null\n if (!el || !value || ('length' in el && !(el instanceof HTMLSelectElement))) return false\n // Already locked from a previous lookup: leave it (the buyer corrects the postal code instead).\n if (el.dataset.sfLocked === '1') return false\n // Never over what they edited, nor over text in the field they are typing in. A focused field that is still\n // empty (Tab from the postal code lands on the next one) is filled: nothing of theirs is overwritten.\n if (el.dataset.sfUserEdited === '1' || (el.ownerDocument.activeElement === el && el.value)) return false\n // Only an empty field, or one this lookup filled before: never what the buyer typed.\n if (el.value && el.dataset.sfAutofilled !== '1') return false\n if (el instanceof HTMLSelectElement && ![...el.options].some((o) => o.value === value)) return false\n el.value = value\n el.dataset.sfAutofilled = '1'\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, ADDRESS_FILL_EVENT_FLAG, { value: true })\n el.dispatchEvent(event)\n if (lock) {\n lockField(el)\n el.title = m.provinceLocked\n setProvinceLocked(true)\n }\n return true\n }\n const a = fill(n('province'), info.province, lockProvinceOnFill)\n const b = fill(n('city'), info.city)\n // Colonia only when the code has exactly ONE: with several the buyer chooses (the list is offered, not applied).\n const only = info.neighborhoods?.length === 1 ? info.neighborhoods[0] : null\n const c = showNeighborhood ? fill(n('neighborhood'), only) : false\n setColonias(info.neighborhoods ?? [])\n const list = info.neighborhoods ?? []\n const nameEl = form?.elements.namedItem(n('neighborhood')) as HTMLInputElement | HTMLSelectElement | null\n const el = nameEl && !('length' in nameEl && !(nameEl instanceof HTMLSelectElement)) ? nameEl : null\n const typed = el ? el.value : ''\n const wantSelect = props.neighborhoodList === 'select' && showNeighborhood !== false && list.length > 1 && (!typed || list.includes(typed))\n let carried = false\n if (showNeighborhood && wantSelect !== coloniaSelectRef.current) {\n const userEdited = el?.dataset.sfUserEdited === '1'\n // The single colonia of the new code wins over a previous autofill, never over what the buyer chose.\n const value = only && !userEdited ? only : wantSelect ? (list.includes(typed) ? typed : '') : typed\n coloniaCarry.current = { value, autofilled: !userEdited && (!!only || el?.dataset.sfAutofilled === '1'), userEdited }\n carried = !!only && !userEdited\n }\n coloniaSelectRef.current = wantSelect\n setColoniaSelect(wantSelect)\n setFilled(a || b || c || carried)\n })\n },\n () => {\n /* no lookup: the buyer types state and city */\n },\n )\n }\n\n // Applies the carried colonia to the field that replaced the old one (text <-> list), like any fill.\n useEffect(() => {\n const carry = coloniaCarry.current\n coloniaCarry.current = null\n if (!carry || !carry.value) return\n const form = zipRef.current?.closest('form')\n const el = form?.elements.namedItem(n('neighborhood')) as HTMLInputElement | HTMLSelectElement | null\n if (!el || ('length' in el && !(el instanceof HTMLSelectElement))) return\n if (el instanceof HTMLSelectElement && ![...el.options].some((o) => o.value === carry.value)) return\n el.value = carry.value\n if (carry.userEdited) el.dataset.sfUserEdited = '1'\n else if (carry.autofilled) el.dataset.sfAutofilled = '1'\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, ADDRESS_FILL_EVENT_FLAG, { value: true })\n el.dispatchEvent(event)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [coloniaSelect])\n\n useEffect(() => {\n const zip = defaults?.zip\n if (zip) runLookup(zip)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasLock = (root: HTMLElement | null) => !!root?.closest('form')?.querySelector('[data-sf-locked=\"1\"]')\n const changeZip = () => {\n releaseLookup()\n const zipEl = zipRef.current?.querySelector('input')\n zipEl?.focus()\n zipEl?.select()\n }\n const provinceHint = provinceLocked ? (\n <span data-sf-province-locked=\"\" title={m.provinceLocked}>\n <svg aria-hidden=\"true\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" style={{ display: 'inline-block', verticalAlign: '-1px', marginRight: 4 }}>\n <rect x=\"4\" y=\"11\" width=\"16\" height=\"10\" rx=\"2\" />\n <path d=\"M8 11V7a4 4 0 0 1 8 0v4\" />\n </svg>\n {m.provinceLocked}\n {' · '}\n <button type=\"button\" data-sf-change-zip=\"\" onClick={changeZip} style={{ background: 'none', border: 0, padding: 0, font: 'inherit', color: 'inherit', textDecoration: 'underline', cursor: 'pointer' }}>\n {m.changePostalCode}\n </button>\n </span>\n ) : undefined\n const numericZip = postalCode?.inputMode === 'numeric'\n return (\n <>\n <div ref={zipRef} className={join(cx.half)} data-sf-zip>\n <CheckoutField\n {...common}\n name={n('zip')}\n label={m.zip}\n autoComplete=\"postal-code\"\n inputMode={postalCode?.inputMode ?? 'text'}\n {...(postalCode?.pattern ? { pattern: postalCode.pattern } : {})}\n {...(postalCode?.maxLength ? { maxLength: postalCode.maxLength } : {})}\n {...(postalCode?.title ? { title: postalCode.title } : {})}\n {...(numericZip ? { autoCapitalize: 'none' } : {})}\n defaultValue={defaults?.zip ?? ''}\n error={errors[n('zip')] ?? null}\n classNames={{ ...cx, root: cx.root }}\n onInput={(e) => {\n const v = e.currentTarget.value.trim()\n // Editing the code that defined the state frees it (and what the lookup filled) before anything else.\n if (v !== lastZip.current && hasLock(zipRef.current)) releaseLookup()\n if (postalCode?.maxLength && v.length === postalCode.maxLength) runLookup(v)\n }}\n onBlur={(e) => runLookup(e.currentTarget.value.trim())}\n />\n </div>\n {provinces && provinces.length ? (\n <CheckoutField {...common} as=\"select\" name={n('province')} label={m.province} autoComplete=\"address-level1\" defaultValue={defaults?.province ?? ''} error={errors[n('province')] ?? null} classNames={field(cx, 'half')} hint={provinceHint}>\n <option value=\"\" disabled>\n {m.provincePlaceholder}\n </option>\n {provinces.map((p) => (\n <option key={p.code ?? p.name} value={p.name}>\n {p.name}\n </option>\n ))}\n </CheckoutField>\n ) : (\n <CheckoutField {...common} name={n('province')} label={m.province} autoComplete=\"address-level1\" defaultValue={defaults?.province ?? ''} error={errors[n('province')] ?? null} classNames={field(cx, 'half')} hint={provinceHint} />\n )}\n <CheckoutField {...common} name={n('city')} label={m.city} autoComplete=\"address-level2\" defaultValue={defaults?.city ?? ''} error={errors[n('city')] ?? null} classNames={field(cx, 'half')} />\n {showNeighborhood && coloniaSelect ? (\n <CheckoutField\n {...common}\n as=\"select\"\n name={n('neighborhood')}\n label={m.neighborhood}\n autoComplete=\"address-level3\"\n optional={showNeighborhood !== 'required'}\n defaultValue={colonias.includes(defaults?.neighborhood ?? '') ? (defaults?.neighborhood ?? '') : ''}\n error={errors[n('neighborhood')] ?? null}\n classNames={field(cx, 'half')}\n >\n <option value=\"\" disabled={showNeighborhood === 'required'}>\n {m.neighborhoodPlaceholder}\n </option>\n {colonias.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </CheckoutField>\n ) : showNeighborhood ? (\n <CheckoutField\n {...common}\n name={n('neighborhood')}\n label={m.neighborhood}\n autoComplete=\"address-level3\"\n optional={showNeighborhood !== 'required'}\n defaultValue={defaults?.neighborhood ?? ''}\n error={errors[n('neighborhood')] ?? null}\n classNames={field(cx, 'half')}\n {...(colonias.length && !coloniaSelect ? { list: listId } : {})}\n />\n ) : null}\n {colonias.length && !coloniaSelect ? (\n <datalist id={listId}>\n {colonias.map((c) => (\n <option key={c} value={c} />\n ))}\n </datalist>\n ) : null}\n {/* The lookup result, announced once (not on every keystroke). */}\n <p role=\"status\" aria-live=\"polite\" data-sf-zip-status style={filled ? undefined : { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)', whiteSpace: 'nowrap' }} className={filled ? join(cx.hint, cx.wide) : undefined}>\n {filled ? m.lookupFilled : ''}\n </p>\n <CheckoutField {...common} name={n('address1')} label={m.address1} autoComplete=\"address-line1\" defaultValue={defaults?.address1 ?? ''} error={errors[n('address1')] ?? null} hint={m.address1Hint} classNames={field(cx, 'wide')} />\n <CheckoutField {...common} name={n('address2')} label={m.address2} autoComplete=\"address-line2\" optional defaultValue={defaults?.address2 ?? ''} error={errors[n('address2')] ?? null} classNames={field(cx, 'half')} />\n {showReference ? (\n <CheckoutField {...common} name={n('reference')} label={m.reference} optional defaultValue={defaults?.reference ?? ''} error={errors[n('reference')] ?? null} hint={m.referenceHint} classNames={field(cx, 'wide')} maxLength={200} />\n ) : null}\n <input type=\"hidden\" name=\"country_code\" value={countryCode} />\n {children}\n </>\n )\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { createStorefrontClient, type Shop, type StorefrontClient, type StorefrontClientOptions } from '@asteby/storefront'\n\nexport type StorefrontContextValue = {\n /** Client for browser-side calls (use a public `pk_` token). */\n client: StorefrontClient | null\n shop: Shop | null\n /** BCP 47 locale used for formatting (defaults to `shop.locale`, then `es-MX`). */\n locale: string\n /** ISO 4217 currency (defaults to `shop.currency_code`, then `MXN`). */\n currency: string\n}\n\nconst StorefrontContext = createContext<StorefrontContextValue | null>(null)\n\nexport type StorefrontProviderProps = {\n /** A ready client. Takes precedence over `config`. */\n client?: StorefrontClient\n /** Options to create the browser client (use a `pk_` token). */\n config?: StorefrontClientOptions\n /** Shop info loaded on the server (root loader). */\n shop?: Shop | null\n locale?: string\n currency?: string\n children?: ReactNode\n}\n\n/**\n * Makes the storefront client, shop, locale and currency available to the\n * tree. SSR-safe: creating the client does not touch `window`.\n */\nexport function StorefrontProvider({ client, config, shop = null, locale, currency, children }: StorefrontProviderProps) {\n const configKey = config ? `${config.baseUrl}|${config.token}|${config.locale ?? ''}|${config.customerToken ?? ''}` : ''\n const resolvedClient = useMemo(\n () => client ?? (config ? createStorefrontClient(config) : null),\n [client, configKey],\n )\n const value = useMemo<StorefrontContextValue>(\n () => ({\n client: resolvedClient,\n shop,\n locale: locale ?? config?.locale ?? shop?.locale ?? 'es-MX',\n currency: currency ?? shop?.currency_code ?? 'MXN',\n }),\n [resolvedClient, shop, locale, currency, config?.locale],\n )\n return <StorefrontContext.Provider value={value}>{children}</StorefrontContext.Provider>\n}\n\n/** Storefront context. Throws outside `<StorefrontProvider>`. */\nexport function useStorefront(): StorefrontContextValue {\n const ctx = useContext(StorefrontContext)\n if (!ctx) throw new Error('useStorefront must be used inside <StorefrontProvider>')\n return ctx\n}\n\n/** Storefront context or `null` outside a provider (for components that work standalone). */\nexport function useOptionalStorefront(): StorefrontContextValue | null {\n return useContext(StorefrontContext)\n}\n\n/** The client from context; throws when the provider has none. */\nexport function useStorefrontClient(): StorefrontClient {\n const { client } = useStorefront()\n if (!client) throw new Error('<StorefrontProvider> needs a `client` or `config` for browser-side calls')\n return client\n}\n","import { useOptionalStorefront } from './context.js'\n\n/** Locale of a component: its own prop, else the `StorefrontProvider`'s, else `es-MX`. */\nexport function useResolvedLocale(locale?: string | null): string {\n const sf = useOptionalStorefront()\n return locale ?? sf?.locale ?? 'es-MX'\n}\n","import { createElement, type ComponentPropsWithoutRef, type ElementType, type ReactNode } from 'react'\nimport { formatMoney, parseMoney, type FormatMoneyOptions, type Image as ImageData, type Money as MoneyData, type Product, type ProductVariant } from '@asteby/storefront'\nimport { useOptionalStorefront } from './context.js'\n\n// ---------------------------------------------------------------------------\n// Money\n// ---------------------------------------------------------------------------\n\nexport type MoneyProps<As extends ElementType = 'span'> = FormatMoneyOptions & {\n data: MoneyData\n /** Element to render (default `span`). */\n as?: As\n /** Overrides the provider locale. */\n locale?: string\n} & Omit<ComponentPropsWithoutRef<As>, 'children' | 'as'>\n\n/** Formats `Money` with the provider locale (or `locale`). */\nexport function Money<As extends ElementType = 'span'>({\n data,\n as,\n locale,\n withoutTrailingZeros,\n withoutCurrency,\n currencyDisplay,\n ...rest\n}: MoneyProps<As>) {\n const sf = useOptionalStorefront()\n const text = formatMoney(data, locale ?? sf?.locale, {\n ...(withoutTrailingZeros !== undefined ? { withoutTrailingZeros } : {}),\n ...(withoutCurrency !== undefined ? { withoutCurrency } : {}),\n ...(currencyDisplay !== undefined ? { currencyDisplay } : {}),\n })\n return createElement(as ?? 'span', rest, text)\n}\n\n// ---------------------------------------------------------------------------\n// Image\n// ---------------------------------------------------------------------------\n\nexport const DEFAULT_IMAGE_WIDTHS = [320, 480, 640, 768, 1024, 1280, 1600] as const\n\n/** Builds the URL for one srcset width. */\nexport type ImageLoader = (src: string, width: number, height?: number) => string\n\n/**\n * Default loader: adds `?width=<w>` (the convention of most image CDNs and of\n * the OPS image proxy). URLs that cannot be parsed are returned unchanged.\n */\nexport const defaultImageLoader: ImageLoader = (src, width, height) => {\n try {\n const isAbsolute = /^[a-z][a-z0-9+.-]*:/i.test(src)\n const url = new URL(src, 'http://relative.invalid')\n url.searchParams.set('width', String(width))\n if (height) url.searchParams.set('height', String(height))\n return isAbsolute ? url.toString() : url.pathname + url.search + url.hash\n } catch {\n return src\n }\n}\n\nexport type ImageProps = Omit<ComponentPropsWithoutRef<'img'>, 'src' | 'srcSet' | 'width' | 'height'> & {\n data: ImageData\n /** `sizes` attribute (default `100vw`). */\n sizes?: string\n /** Candidate widths for `srcset` (capped at the intrinsic width when known). */\n widths?: readonly number[]\n /** URL builder per width (default adds `?width=`). Pass `null` to disable srcset. */\n loader?: ImageLoader | null\n /** Above-the-fold image: eager loading and `fetchpriority=\"high\"`. */\n priority?: boolean\n /** Forces an aspect ratio, e.g. `1/1` or `4/3`, used for width/height and srcset heights. */\n aspectRatio?: string\n}\n\nfunction parseRatio(ratio: string | undefined): number | null {\n if (!ratio) return null\n const [w, h] = ratio.split(/[/:]/).map((n) => Number.parseFloat(n))\n return w && h ? w / h : null\n}\n\n/** Responsive `<img>` with `srcset`, lazy by default, intrinsic size to avoid layout shift. */\nexport function Image({\n data,\n sizes = '100vw',\n widths = DEFAULT_IMAGE_WIDTHS,\n loader = defaultImageLoader,\n priority = false,\n aspectRatio,\n alt,\n loading,\n decoding,\n ...rest\n}: ImageProps) {\n const ratio = parseRatio(aspectRatio) ?? (data.width && data.height ? data.width / data.height : null)\n let candidates = [...widths].sort((a, b) => a - b)\n if (data.width) {\n const capped = candidates.filter((w) => w <= data.width!)\n candidates = capped.length ? capped : [data.width]\n }\n const srcSet = loader\n ? candidates.map((w) => `${loader(data.url, w, ratio ? Math.round(w / ratio) : undefined)} ${w}w`).join(', ')\n : undefined\n const width = data.width ?? candidates[candidates.length - 1]\n const height = data.height ?? (ratio && width ? Math.round(width / ratio) : undefined)\n return (\n <img\n src={data.url}\n alt={alt ?? data.alt ?? ''}\n {...(srcSet ? { srcSet, sizes } : {})}\n {...(width ? { width } : {})}\n {...(height ? { height } : {})}\n loading={loading ?? (priority ? 'eager' : 'lazy')}\n decoding={decoding ?? (priority ? 'auto' : 'async')}\n {...(priority ? { fetchPriority: 'high' as const } : {})}\n {...rest}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// ProductPrice\n// ---------------------------------------------------------------------------\n\nconst VISUALLY_HIDDEN = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n} as const\n\nexport type ProductPriceProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'> & {\n product?: Pick<Product, 'price_range' | 'compare_at_price_range'> | null\n variant?: Pick<ProductVariant, 'price' | 'compare_at_price'> | null\n /** Prefix shown when the product has a price range and no variant is selected (default `Desde`). */\n fromLabel?: ReactNode\n /** Accessible label for the compare-at price (default `Precio anterior`). */\n compareAtLabel?: string\n locale?: string\n withoutTrailingZeros?: boolean\n}\n\n/**\n * Price with optional compare-at (strikethrough). With a `variant` it shows\n * that variant; otherwise the product's minimum price (prefixed with\n * `fromLabel` when prices vary).\n */\nexport function ProductPrice({\n product,\n variant,\n fromLabel = 'Desde',\n compareAtLabel = 'Precio anterior',\n locale,\n withoutTrailingZeros,\n ...rest\n}: ProductPriceProps) {\n let price: MoneyData | null = null\n let compareAt: MoneyData | null = null\n let isRange = false\n if (variant) {\n price = variant.price\n compareAt = variant.compare_at_price\n } else if (product) {\n price = product.price_range.min\n compareAt = product.compare_at_price_range?.min ?? null\n isRange = product.price_range.min.amount !== product.price_range.max.amount\n }\n if (!price) return null\n const onSale = compareAt !== null && parseMoney(compareAt) > parseMoney(price)\n const opts = { ...(locale ? { locale } : {}), ...(withoutTrailingZeros !== undefined ? { withoutTrailingZeros } : {}) }\n return (\n <div data-on-sale={onSale || undefined} {...rest}>\n {isRange ? <span data-price-prefix=\"\">{fromLabel} </span> : null}\n <Money data={price} data-price=\"\" {...opts} />\n {onSale && compareAt ? (\n <>\n {' '}\n <s data-compare-at-price=\"\">\n <span style={VISUALLY_HIDDEN}>{compareAtLabel}: </span>\n <Money data={compareAt} {...opts} />\n </s>\n </>\n ) : null}\n </div>\n )\n}\n","/**\n * Product preview of the storefront: ONE picture-plus-text pattern for every place a product is listed (cart drawer,\n * checkout summary, \"Mis pedidos\", order detail). Headless (`data-sf-preview*`, `classNames`), styled by\n * `product-preview.css` (plain CSS on the store tokens, dark mode included), SSR-safe.\n *\n * - `ProductThumb`: the picture alone. Fixed aspect ratio, `object-fit: contain` on a soft surface (parts photographed\n * on white are never cropped), responsive `srcset` through the shared `Image`, lazy by default, a shimmer while it\n * loads and an elegant fallback (initial of the name, or a package glyph) when there is no image, it is broken, or\n * the product no longer exists. Optional quantity badge.\n * - `ProductPreview`: thumb + name (2 lines) + variant + SKU + quantity x unit price, with the line total aligned right.\n * - `ProductThumbStack`: overlapped thumbs with a \"+N\" counter (order cards).\n */\nimport { useEffect, useRef, useState, type ReactNode } from 'react'\nimport type { Image as ImageData } from '@asteby/storefront'\nimport { Image, type ImageLoader } from '../components.js'\n\ntype ThumbState = 'loading' | 'loaded' | 'fallback'\n\n/** First letter(s) of the name for the fallback: two initials from two words, one otherwise. Empty when nothing usable. */\nexport function productInitials(name: string | null | undefined): string {\n const words = (name ?? '')\n .normalize('NFKC')\n .split(/[\\s\\-_/.,()]+/)\n .map((w) => Array.from(w).find((c) => /\\p{L}|\\p{N}/u.test(c)) ?? '')\n .filter(Boolean)\n if (words.length === 0) return ''\n return (words.length > 1 ? words[0]! + words[1]! : words[0]!).toLocaleUpperCase()\n}\n\nexport type ProductThumbClassNames = Partial<Record<'root' | 'img' | 'fallback' | 'badge', string>>\n\nexport type ProductThumbImage = { url: string; alt?: string | null; width?: number; height?: number }\n\nexport type ProductThumbProps = {\n /** Picture of the product or variant. `null`/missing: shows the fallback. */\n image?: ProductThumbImage | null\n /** Name of the product: alt of the picture (unless `decorative`) and source of the fallback initial. */\n name?: string | null\n /** Side in px. Default 56. */\n size?: number\n /** Aspect ratio of the box, `w/h`. Default `1/1`. */\n ratio?: string\n /** `contain` (default) never crops; `cover` fills the box. */\n fit?: 'contain' | 'cover'\n /** Quantity badge, shown when greater than 1. */\n quantity?: number\n /** The name sits next to it as text: the picture has `alt=\"\"` and the fallback is hidden from screen readers. Default false. */\n decorative?: boolean\n /** Slight zoom on hover (honours `prefers-reduced-motion`). Default true. */\n zoom?: boolean\n /** Above the fold: eager load. */\n priority?: boolean\n sizes?: string\n loader?: ImageLoader | null\n className?: string\n classNames?: ProductThumbClassNames\n}\n\n/** The picture of a product with fixed ratio, shimmer, lazy loading and a fallback that always looks designed. */\nexport function ProductThumb({\n image,\n name,\n size = 56,\n ratio = '1/1',\n fit = 'contain',\n quantity,\n decorative = false,\n zoom = true,\n priority = false,\n sizes,\n loader,\n className,\n classNames: cx = {},\n}: ProductThumbProps) {\n const url = image?.url || null\n const [state, setState] = useState<ThumbState>(url ? 'loading' : 'fallback')\n const box = useRef<HTMLSpanElement>(null)\n // A new picture (another variant) starts over; a missing one goes straight to the fallback.\n useEffect(() => {\n const img = box.current?.querySelector('img')\n // The browser may have loaded the picture before hydration: no `load` event will come.\n setState(!url ? 'fallback' : img?.complete ? (img.naturalWidth > 0 ? 'loaded' : 'fallback') : 'loading')\n }, [url])\n\n const label = name?.trim() || ''\n const initials = productInitials(label)\n const showBadge = typeof quantity === 'number' && quantity > 1\n const a11y = state === 'fallback' && !decorative && label ? { role: 'img', 'aria-label': label } : { 'aria-hidden': decorative || state === 'fallback' ? true : undefined }\n return (\n <span\n ref={box}\n className={[cx.root, className].filter(Boolean).join(' ') || undefined}\n style={{ ['--sf-preview-size' as string]: `${size}px`, ['--sf-preview-ratio' as string]: ratio.replace(':', '/') }}\n data-sf-thumb=\"\"\n data-state={state}\n data-fit={fit}\n data-zoom={zoom || undefined}\n {...a11y}\n >\n {url && state !== 'fallback' ? (\n <Image\n data={{ url, alt: image?.alt ?? null, ...(image?.width ? { width: image.width } : {}), ...(image?.height ? { height: image.height } : {}) }}\n alt={decorative ? '' : (image?.alt ?? label)}\n aspectRatio={ratio}\n sizes={sizes ?? `${size * 2}px`}\n widths={[Math.round(size), Math.round(size * 2), Math.round(size * 3)]}\n {...(loader !== undefined ? { loader } : {})}\n priority={priority}\n className={cx.img}\n onLoad={() => setState('loaded')}\n onError={() => setState('fallback')}\n />\n ) : null}\n {state === 'fallback' ? (\n <span className={cx.fallback} data-sf-thumb-fallback=\"\" aria-hidden=\"true\">\n {initials ? <span data-sf-thumb-initial=\"\">{initials}</span> : <PackageGlyph />}\n </span>\n ) : null}\n {showBadge ? (\n <span className={cx.badge} data-sf-thumb-qty=\"\" aria-hidden=\"true\">\n {quantity}\n </span>\n ) : null}\n </span>\n )\n}\n\nfunction PackageGlyph() {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"45%\" height=\"45%\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" focusable=\"false\">\n <path d=\"M21 8 12 3 3 8v8l9 5 9-5V8Z\" />\n <path d=\"m3 8 9 5 9-5M12 13v8\" />\n </svg>\n )\n}\n\nexport type ProductPreviewClassNames = Partial<Record<'root' | 'media' | 'body' | 'name' | 'variant' | 'meta' | 'sku' | 'qty' | 'price' | 'total' | 'unit', string>> & { thumb?: ProductThumbClassNames }\n\nexport type ProductPreviewProps = Pick<ProductThumbProps, 'image' | 'size' | 'ratio' | 'fit' | 'zoom' | 'priority' | 'sizes' | 'loader'> & {\n name: string\n /** \"Rojo / L\". Omit for default variants. */\n variant?: string | null\n sku?: string | null\n /** Quantity: a badge on the picture (> 1) and \"Cantidad N\" under the name. */\n quantity?: number\n /** Unit price, already formatted. Shown next to the quantity when it is greater than 1. */\n unitPrice?: ReactNode\n /** Line total, already formatted: aligned right, the strongest number. */\n total?: ReactNode\n /** Link on the name (product page). */\n href?: string | null\n /** Rendered under the text (status, note, actions). */\n children?: ReactNode\n /** Text of the quantity for screen readers and the meta line. Default `Cantidad {n}`. */\n quantityLabel?: string\n /** Name shown when the line has none (product deleted). Default `Producto no disponible`. */\n unavailableLabel?: string\n className?: string\n classNames?: ProductPreviewClassNames\n}\n\n/**\n * A product line: picture, name (2 lines), variant, SKU, quantity and prices with a clear hierarchy. Degrades to a\n * designed placeholder when the product has no image or no longer exists (empty name).\n */\nexport function ProductPreview({\n image,\n name,\n variant,\n sku,\n quantity,\n unitPrice,\n total,\n href,\n children,\n size = 64,\n ratio,\n fit,\n zoom,\n priority,\n sizes,\n loader,\n quantityLabel,\n unavailableLabel = 'Producto no disponible',\n className,\n classNames: cx = {},\n}: ProductPreviewProps) {\n const missing = !name.trim()\n const title = missing ? unavailableLabel : name\n const hasQty = typeof quantity === 'number' && Number.isFinite(quantity)\n return (\n <div className={[cx.root, className].filter(Boolean).join(' ') || undefined} data-sf-preview=\"\" data-missing={missing || undefined}>\n <span className={cx.media} data-sf-preview-media=\"\">\n <ProductThumb\n image={image}\n name={missing ? null : name}\n size={size}\n decorative\n {...(ratio ? { ratio } : {})}\n {...(fit ? { fit } : {})}\n {...(zoom !== undefined ? { zoom } : {})}\n {...(priority ? { priority } : {})}\n {...(sizes ? { sizes } : {})}\n {...(loader !== undefined ? { loader } : {})}\n {...(hasQty ? { quantity: quantity! } : {})}\n {...(cx.thumb ? { classNames: cx.thumb } : {})}\n />\n </span>\n <span className={cx.body} data-sf-preview-body=\"\">\n <span className={cx.name} data-sf-preview-name=\"\">\n {href && !missing ? <a href={href}>{title}</a> : title}\n </span>\n {variant ? (\n <span className={cx.variant} data-sf-preview-variant=\"\">\n {variant}\n </span>\n ) : null}\n {sku ? (\n <span className={cx.sku} data-sf-preview-sku=\"\">\n SKU {sku}\n </span>\n ) : null}\n {hasQty ? (\n <span className={cx.meta} data-sf-preview-meta=\"\">\n <span className={cx.qty} data-sf-preview-qty=\"\">\n {(quantityLabel ?? 'Cantidad {n}').replace('{n}', String(quantity))}\n </span>\n {unitPrice != null && quantity! > 1 ? (\n <span className={cx.unit} data-sf-preview-unit=\"\">\n {' · '}\n {unitPrice}\n </span>\n ) : null}\n </span>\n ) : null}\n {children}\n </span>\n {total != null ? (\n <span className={cx.total} data-sf-preview-total=\"\">\n {total}\n </span>\n ) : unitPrice != null && !(hasQty && quantity! > 1) ? (\n <span className={cx.price} data-sf-preview-total=\"\">\n {unitPrice}\n </span>\n ) : null}\n </div>\n )\n}\n\nexport type ProductThumbStackProps = {\n items: ReadonlyArray<{ image?: ProductThumbImage | null; name?: string | null }>\n /** Thumbs shown before \"+N\". Default 4. */\n max?: number\n size?: number\n /** Screen reader text for the hidden remainder, `{n}` = how many. Default `y {n} más`. */\n moreLabel?: string\n className?: string\n}\n\n/** Overlapped thumbs with a \"+N\" counter: the products of an order at a glance. */\nexport function ProductThumbStack({ items, max = 4, size = 44, moreLabel = 'y {n} más', className }: ProductThumbStackProps) {\n if (items.length === 0) return null\n const shown = items.length > max ? items.slice(0, max - 1) : items\n const rest = items.length - shown.length\n return (\n <span className={className} data-sf-thumb-stack=\"\" style={{ ['--sf-preview-size' as string]: `${size}px` }}>\n {shown.map((it, i) => (\n <ProductThumb key={i} image={it.image ?? null} name={it.name ?? null} size={size} zoom={false} />\n ))}\n {rest > 0 ? (\n <span data-sf-thumb-more=\"\" role=\"img\" aria-label={moreLabel.replace('{n}', String(rest))}>\n +{rest}\n </span>\n ) : null}\n </span>\n )\n}\n","/**\n * Order summary of a checkout: lines and the server totals (subtotal, discounts, shipping, taxes, total) exactly as\n * `cart.cost` sends them; nothing is added or recalculated. `OrderSummaryDisclosure` wraps it for phones: a collapsed\n * bar with the total at the top of the page (native `<details>`, no JavaScript, no layout shift on hydration).\n */\nimport type { ReactNode } from 'react'\nimport { formatMoney, type CartCost, type CartLine, type Money } from '@asteby/storefront'\nimport { useResolvedLocale } from '../locale.js'\nimport { ProductThumb } from '../ui/product-preview.js'\n\nexport type OrderSummaryMessages = {\n title: string\n subtotal: string\n discount: string\n shipping: string\n /** Shipping not chosen yet. */\n shippingPending: string\n /** Shipping being saved / re-read. */\n updating: string\n free: string\n taxes: string\n /** Taxes already inside the prices, `{amount}`. */\n taxesIncluded: string\n total: string\n /** `{n}` = quantity. */\n quantity: string\n show: string\n hide: string\n}\n\nconst ES: OrderSummaryMessages = {\n title: 'Tu pedido',\n subtotal: 'Subtotal',\n discount: 'Descuento',\n shipping: 'Envío',\n shippingPending: 'Al elegir la entrega',\n updating: 'Actualizando…',\n free: 'Gratis',\n taxes: 'Impuestos',\n taxesIncluded: 'Incluye {amount} de impuestos',\n total: 'Total',\n quantity: 'Cantidad: {n}',\n show: 'Ver resumen del pedido',\n hide: 'Ocultar resumen del pedido',\n}\n\nconst EN: OrderSummaryMessages = {\n title: 'Your order',\n subtotal: 'Subtotal',\n discount: 'Discount',\n shipping: 'Shipping',\n shippingPending: 'Calculated at delivery',\n updating: 'Updating…',\n free: 'Free',\n taxes: 'Taxes',\n taxesIncluded: 'Includes {amount} in taxes',\n total: 'Total',\n quantity: 'Quantity: {n}',\n show: 'Show order summary',\n hide: 'Hide order summary',\n}\n\nexport function orderSummaryMessages(locale?: string | null, overrides?: Partial<OrderSummaryMessages> | null): OrderSummaryMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\nexport type OrderSummaryClassNames = Partial<\n Record<'root' | 'title' | 'lines' | 'line' | 'media' | 'qty' | 'lineTitle' | 'variant' | 'linePrice' | 'totals' | 'row' | 'discount' | 'muted' | 'free' | 'total' | 'note', string>\n>\n\nexport type OrderSummaryProps = {\n lines: readonly CartLine[]\n /** `cart.cost` as the server sends it. */\n cost: CartCost\n /** The delivery is being saved and the cart re-read: shipping and total say so (`aria-busy`). */\n updating?: boolean\n /** Picture of a line (e.g. `<ProductImage>`), 48-64 px. The quantity badge sits on it. Default: `<ProductThumb>` of the line's image (fallback initial when it has none). */\n renderLineMedia?: (line: CartLine) => ReactNode\n /** Show the default picture of each line. Default true; `false` gives the text-only \"2 × Name\" list. */\n media?: boolean\n renderAmount?: (amount: Money) => ReactNode\n /** Heading. `false` hides it (the disclosure already names the block). */\n title?: ReactNode | false\n /** Heading level. Default 2. */\n headingLevel?: 2 | 3\n locale?: string\n messages?: Partial<OrderSummaryMessages>\n classNames?: OrderSummaryClassNames\n /** Rendered between the lines and the totals (e.g. a discount code form). */\n children?: ReactNode\n}\n\n/** The line's own picture, else the product's; `decorative` because the name is right beside it. */\nfunction defaultLineMedia(l: CartLine): ReactNode {\n const img = l.merchandise.image ?? l.merchandise.product.featured_image ?? null\n return <ProductThumb image={img} name={l.merchandise.product.title} size={56} decorative zoom={false} />\n}\n\nconst isZero = (m: Money | null | undefined) => !!m && Number(m.amount) === 0\nconst positive = (m: Money | null | undefined): m is Money => !!m && Number(m.amount) > 0\n\n/** Lines and totals of the order. The total row is `aria-live`, so a new total after choosing delivery is announced. */\nexport function OrderSummary(props: OrderSummaryProps) {\n const { lines, cost, updating = false, media = true, renderAmount, title, headingLevel = 2, classNames: cx = {}, children } = props\n const locale = useResolvedLocale(props.locale)\n const m = orderSummaryMessages(locale, props.messages)\n const money = (v: Money) => (renderAmount ? renderAmount(v) : formatMoney(v, locale))\n const renderLineMedia = props.renderLineMedia ?? (media ? defaultLineMedia : undefined)\n const H = headingLevel === 3 ? 'h3' : 'h2'\n const discounts = cost.discounts?.filter((d) => positive(d.amount)) ?? []\n return (\n <div className={cx.root} data-sf-summary>\n {title === false ? null : (\n <H className={cx.title} data-sf-summary-title>\n {title ?? m.title}\n </H>\n )}\n <ul className={cx.lines} data-sf-summary-lines>\n {lines.map((l) => {\n const variant = l.merchandise.title && !/^default( title)?$/i.test(l.merchandise.title) ? l.merchandise.title : null\n return (\n <li key={l.id} className={cx.line} data-sf-summary-line>\n {renderLineMedia ? (\n <span className={cx.media} data-sf-summary-media>\n {renderLineMedia(l)}\n {l.quantity > 1 ? (\n <span className={cx.qty} data-sf-summary-qty aria-hidden=\"true\">\n {l.quantity}\n </span>\n ) : null}\n </span>\n ) : null}\n <span data-sf-summary-line-body>\n <span className={cx.lineTitle} data-sf-summary-line-title>\n {!renderLineMedia && l.quantity > 1 ? `${l.quantity} × ` : null}\n {l.merchandise.product.title}\n </span>\n {variant ? (\n <span className={cx.variant} data-sf-summary-variant>\n {variant}\n </span>\n ) : null}\n {renderLineMedia || l.quantity > 1 ? (\n <span style={{ position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)', whiteSpace: 'nowrap' }}>{m.quantity.replace('{n}', String(l.quantity))}</span>\n ) : null}\n </span>\n <span className={cx.linePrice} data-sf-summary-line-price>\n {money(l.cost.total)}\n </span>\n </li>\n )\n })}\n </ul>\n {children}\n <dl className={cx.totals} data-sf-summary-totals aria-busy={updating || undefined}>\n <div className={cx.row} data-sf-summary-row=\"subtotal\">\n <dt>{m.subtotal}</dt>\n <dd>{money(cost.subtotal)}</dd>\n </div>\n {discounts.length\n ? discounts.map((d) => (\n <div key={d.id} className={cx.row ? `${cx.row} ${cx.discount ?? ''}`.trim() : cx.discount} data-sf-summary-row=\"discount\">\n <dt>{d.code ? `${m.discount} (${d.code})` : d.title || m.discount}</dt>\n <dd>−{money(d.amount)}</dd>\n </div>\n ))\n : positive(cost.discount) ? (\n <div className={cx.row ? `${cx.row} ${cx.discount ?? ''}`.trim() : cx.discount} data-sf-summary-row=\"discount\">\n <dt>{m.discount}</dt>\n <dd>−{money(cost.discount)}</dd>\n </div>\n ) : null}\n <div className={cx.row} data-sf-summary-row=\"shipping\">\n <dt>{m.shipping}</dt>\n <dd className={updating || !cost.shipping ? cx.muted : undefined}>\n {updating ? m.updating : !cost.shipping ? m.shippingPending : isZero(cost.shipping) ? <span className={cx.free}>{m.free}</span> : money(cost.shipping)}\n </dd>\n </div>\n {positive(cost.tax) && !cost.tax_included ? (\n <div className={cx.row} data-sf-summary-row=\"tax\">\n <dt>{m.taxes}</dt>\n <dd>{money(cost.tax)}</dd>\n </div>\n ) : null}\n <div className={cx.total} data-sf-summary-row=\"total\">\n <dt>{m.total}</dt>\n <dd aria-live=\"polite\" data-updating={updating || undefined}>\n {money(cost.total)}\n </dd>\n </div>\n </dl>\n {positive(cost.tax) && cost.tax_included ? (\n <p className={cx.note} data-sf-summary-tax-note>\n {m.taxesIncluded.split('{amount}').flatMap((part, i) => (i === 0 ? [part] : [<span key={i}>{money(cost.tax!)}</span>, part]))}\n </p>\n ) : null}\n </div>\n )\n}\n\nexport type OrderSummaryDisclosureProps = {\n /** Total shown on the collapsed bar (`cart.cost.total`). */\n total: Money\n updating?: boolean\n renderAmount?: (amount: Money) => ReactNode\n locale?: string\n messages?: Partial<OrderSummaryMessages>\n /** Start open (default closed). */\n defaultOpen?: boolean\n className?: string\n classNames?: Partial<Record<'summary' | 'label' | 'total' | 'panel', string>>\n /** Usually an `<OrderSummary title={false} … />`. */\n children: ReactNode\n}\n\n/**\n * Phones: the order summary as a collapsed bar at the top (\"Show order summary · $1,234.00\"). Native `<details>`:\n * works without JavaScript, the server HTML is already the final layout (no shift on hydration). Show it only on\n * narrow screens and the full summary on wide ones (the shop's CSS).\n */\nexport function OrderSummaryDisclosure({ total, updating, renderAmount, locale: loc, messages, defaultOpen = false, className, classNames: cx = {}, children }: OrderSummaryDisclosureProps) {\n const locale = useResolvedLocale(loc)\n const m = orderSummaryMessages(locale, messages)\n return (\n <details className={className} data-sf-summary-disclosure {...(defaultOpen ? { open: true } : {})}>\n <summary className={cx.summary} data-sf-summary-toggle>\n <span className={cx.label} data-sf-summary-toggle-label>\n <span data-sf-summary-show>{m.show}</span>\n <span data-sf-summary-hide>{m.hide}</span>\n </span>\n <span className={cx.total} data-sf-summary-toggle-total data-updating={updating || undefined}>\n {renderAmount ? renderAmount(total) : formatMoney(total, locale)}\n </span>\n </summary>\n <div className={cx.panel} data-sf-summary-panel>\n {children}\n </div>\n </details>\n )\n}\n","// GENERADO por scripts/build-logos.mjs desde brands/manifest.json y brands/assets/. No editar a mano.\n// Procedencia y licencias de cada logo: brands/LOGOS.md.\nexport type LogoAsset = { src: string; ar: number; mono: boolean }\n\nexport const LOGOS: Record<string, LogoAsset> = {\n \"7eleven\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 xml:space=%22preserve%22 viewBox=%220 0 45 59.89%22%3E%3Cdefs%3E%3Cpath id=%22a%22 d=%22M0 0h45v59.9H0z%22/%3E%3C/defs%3E%3CclipPath id=%22b%22%3E%3Cuse xlink:href=%22%23a%22 style=%22overflow:visible%22/%3E%3C/clipPath%3E%3Cpath d=%22M34.2 45c.9 0 1.7.8 1.7 1.7s-.7 1.7-1.7 1.7c-.9 0-1.6-.8-1.6-1.7s.7-1.7 1.6-1.7m0 3c.7 0 1.3-.6 1.3-1.3 0-.8-.6-1.3-1.3-1.3s-1.3.6-1.3 1.3c0 .8.6 1.3 1.3 1.3m-.2-.4h-.3v-1.8h.6q.6 0 .6.6c0 .3-.2.5-.4.5l.4.7h-.4l-.4-.7H34zm.2-1q.3 0 .3-.3t-.3-.3H34v.5h.2zm8-14.3c-.9 0-1.5.4-2.1.9l-.4.6-.1-.1.5-.8v-.5h-3.2V43h2.9v-6.7c0-1.1.7-1.4 1.2-1.5s1.1.2 1.1.8V43H45v-7.3c0-2.3-1-3.4-2.8-3.4M9.9 40.6h3v2.3H7V32.3h2.9zM0 42.9h5.9v-2.1h-3v-2.3h3v-2h-3v-2h3v-2.2H0zm13.9 0h6v-2.1h-3.1v-2.3h3.1v-2h-3.1v-2h3.1v-2.2h-6zm16 0h6v-2.1h-3.1v-2.3h3.1v-2h-3.1v-2h3.1v-2.2h-6zm-3.8-10.6L25 39l-.1 1.2v.1h-.1v-.1l-.1-1.2-1.1-6.7h-2.9l2.4 10.6h3.6l2.4-10.6z%22 style=%22clip-path:url(%23b);fill:%23147350%22/%3E%3Cpath d=%22M37.7 0H0v15h19.9C24.4 8.5 30.5 3.3 37.7 0%22 style=%22clip-path:url(%23b);fill:%23ff6c00%22/%3E%3Cpath d=%22M15 59.9h15v-15H15zM45 15V0a40.7 40.7 0 0 0-28.9 30h15.3A25.8 25.8 0 0 1 45 15%22 style=%22clip-path:url(%23b);fill:%23eb0f2a%22/%3E%3C/svg%3E\", ar: 0.751, mono: false },\n \"99minutos\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.1 0 160.9 40.9%22%3E%3Cg fill=%22none%22 fill-rule=%22evenodd%22%3E%3Cpath fill=%22%23323634%22 d=%22M50.25 23.07v6.07h-3.12v-6.15q0-1.34-.4-1.97t-1.31-.62-1.6.68-.69 2v6.06h-3.1V17.89h3.1v1.27a3.8 3.8 0 0 1 2.94-1.46q1.05 0 1.91.63.86.62 1.3 1.52.64-1.02 1.73-1.59a5 5 0 0 1 2.18-.56q1.95 0 3.17 1.18 1.2 1.18 1.2 3.42v6.84h-3.13v-6.15q0-2.6-1.88-2.6-.93 0-1.62.69-.68.68-.68 2m9.32-6.62q-.53-.53-.53-1.3t.53-1.31 1.3-.53 1.29.53.53 1.3-.53 1.31-1.3.54-1.29-.54M86 17.9h-2.8v6.06q0 1.3-.68 1.98t-1.61.68q-1.89 0-1.88-2.6V17.9H75.9v6.82q0 2.28 1.24 3.44a4.3 4.3 0 0 0 3.08 1.16q1.83 0 2.99-1.66v1.49h3.12v-9h1.73v5.2q0 1.83 1.1 2.9a3.8 3.8 0 0 0 2.72 1.07q1.6 0 3.05-1.34l-1.16-2.2q-.6.8-1.47.8-.45 0-.79-.37a1.5 1.5 0 0 1-.33-1.01v-5.04h2.7V17.9h-2.7v-3.37h-3.12v3.37zm-26.69 0h3.1v11.25h-3.1zm7.9 4.97v6.28h-3.1V17.89h3.1v1.25q1.42-1.44 3.17-1.44a4 4 0 0 1 2.95 1.25q1.2 1.26 1.2 3.35v6.84h-3.11v-6.36q0-2.6-1.88-2.6-.94 0-1.63.69-.7.68-.7 2m39.05.65q0 2.44-1.68 4.12a5.7 5.7 0 0 1-4.2 1.68 5.7 5.7 0 0 1-5.9-5.8q0-2.44 1.68-4.13a5.7 5.7 0 0 1 4.21-1.68q2.55 0 4.21 1.68a5.6 5.6 0 0 1 1.68 4.13m-8.65 0q0 1.38.78 2.25.77.87 1.98.87t1.99-.87.78-2.25-.78-2.26a2.5 2.5 0 0 0-1.99-.87q-1.2 0-1.98.87a3.3 3.3 0 0 0-.78 2.26m17.62 2.13q0 1.66-1.2 2.66-1.22 1-3.08 1a8 8 0 0 1-5-1.77l1.36-1.97q1.75 1.36 3.7 1.36.6 0 .95-.24a.7.7 0 0 0 .36-.64q0-.39-.5-.73-.47-.33-1.4-.63t-1.4-.5q-.5-.21-1.11-.6a2.6 2.6 0 0 1-1.27-2.36 3.1 3.1 0 0 1 1.25-2.54q1.24-.98 3.2-.98t3.94 1.34l-1.16 2.09q-1.45-1-2.89-1t-1.44.79q0 .44.46.69.45.25 1.5.59 1.07.33 1.5.5.45.19 1.07.56 1.16.72 1.16 2.38%22/%3E%3Cpath fill=%22%2385C440%22 d=%22M116.65 28.77q-.52-.53-.52-1.3 0-.78.52-1.31.54-.54 1.3-.53.76 0 1.3.53.52.53.52 1.3 0 .78-.53 1.31-.52.54-1.3.54-.75 0-1.29-.54m9.35-2.25q1.55 0 2.79-1.56l1.84 2.09q-2.15 2.25-4.65 2.26a6 6 0 0 1-4.24-1.6 5.4 5.4 0 0 1-1.72-4.19q0-2.58 1.74-4.2a6 6 0 0 1 4.15-1.62 6.4 6.4 0 0 1 4.6 1.99l-1.62 2.13q-.54-.65-1.31-1a4 4 0 0 0-1.54-.36 2.9 2.9 0 0 0-2.98 3.04 2.85 2.85 0 0 0 2.94 3.02m16.4-3.01q0 2.44-1.67 4.12a5.7 5.7 0 0 1-4.21 1.68 5.7 5.7 0 0 1-5.89-5.8q0-2.44 1.68-4.13a5.7 5.7 0 0 1 4.2-1.68 5.7 5.7 0 0 1 5.9 5.81m-8.64 0q0 1.38.77 2.25.78.87 1.99.87 1.2 0 1.99-.87.77-.87.77-2.25t-.77-2.26a2.5 2.5 0 0 0-2-.87q-1.2 0-1.98.87a3.3 3.3 0 0 0-.77 2.26m19.84-.44v6.07h-3.12v-6.15q0-1.34-.4-1.97-.42-.62-1.31-.62t-1.6.68q-.69.68-.69 2v6.06h-3.1V17.89h3.1v1.27a3.8 3.8 0 0 1 2.94-1.46q1.05 0 1.92.63.85.62 1.29 1.52.64-1.02 1.73-1.59a5 5 0 0 1 2.18-.56q1.97 0 3.17 1.18t1.2 3.42v6.84h-3.13v-6.15q0-2.6-1.88-2.6-.93 0-1.62.69-.68.68-.68 2%22/%3E%3Cpath fill=%22%23323634%22 d=%22M18.08 17.16a4.5 4.5 0 0 0-1.59-1.84 5.6 5.6 0 0 0-2.58-.87 5.2 5.2 0 0 0-3.8.95 4.6 4.6 0 0 0-1.82 3.39q-.23 2.2.98 3.69 1.2 1.49 3.22 1.7 1.53.16 2.94-.6a4.6 4.6 0 0 1-1.16 2.38q-.82.83-2.16.68a3 3 0 0 1-1.15-.41L9.1 28.38q.4.27 1.07.57.9.4 1.9.5a5.5 5.5 0 0 0 5.84-3.55q.64-1.46.85-3.45.33-3.1-.67-5.29m-3.32 3.9q-.7.5-1.66.39a1.9 1.9 0 0 1-1.42-.8q-.47-.7-.38-1.6.1-.92.75-1.45t1.57-.43 1.48.83.45 1.65a2 2 0 0 1-.8 1.4m14.44-3.89a4.5 4.5 0 0 0-1.6-1.84 5.6 5.6 0 0 0-2.58-.87 5.2 5.2 0 0 0-3.79.95 4.6 4.6 0 0 0-1.82 3.39q-.23 2.2.98 3.69 1.2 1.49 3.22 1.7 1.53.16 2.93-.6a4.6 4.6 0 0 1-1.15 2.38q-.82.83-2.16.68a3 3 0 0 1-1.15-.41l-1.88 2.15q.42.27 1.08.57.9.4 1.9.5a5.5 5.5 0 0 0 5.84-3.55q.63-1.46.85-3.45.32-3.1-.68-5.29m-3.33 3.9q-.69.5-1.65.39a1.9 1.9 0 0 1-1.43-.8q-.46-.7-.37-1.6.1-.92.74-1.45.66-.53 1.58-.43t1.47.83.46 1.65a2 2 0 0 1-.8 1.4%22/%3E%3Cpath fill=%22%2385C440%22 d=%22m37.49 12.42 3.06-3.1s-2.03-5.1-9.19-9.26L28.3 3.14l3.58 3.6-.78.8a18.6 18.6 0 0 0-12.2-4.58A18.86 18.86 0 0 0 .14 21.93c0 10.47 8.4 18.96 18.76 18.96a18.86 18.86 0 0 0 18.77-18.96A19 19 0 0 0 33.15 9.6l.77-.79zm-3.85 9.23c0 8.24-6.6 14.92-14.76 14.92A14.84 14.84 0 0 1 4.12 21.65c0-8.24 6.61-14.92 14.76-14.92 8.16 0 14.76 6.68 14.76 14.92%22/%3E%3C/g%3E%3C/svg%3E\", ar: 3.934, mono: false },\n \"amex\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1000 996.89%22%3E%3Cpath d=%22M55.5 1002.35h997.52v538.48l-49.38 77.15 49.38 68.66v313.22H55.5v-507.63l30.86-35.49-30.86-33.94Z%22 style=%22fill:%23016fd0;fill-opacity:1;stroke:none%22 transform=%22translate(-55.5 -1002.35)%22/%3E%3Cpath d=%22M249.14 1697.44v-156.6h165.82l17.8 23.19 18.37-23.2h601.89v145.81s-15.74 10.65-33.95 10.8H685.8l-20.05-24.68v24.68H600v-42.14s-8.98 5.88-28.4 5.88h-22.37v36.26h-99.52l-17.76-23.69-18.04 23.7zM55.5 1422.8l37.4-87.18h64.66l21.22 48.84v-48.84h80.39l12.63 35.3 12.25-35.3H644.9v17.75s18.97-17.75 50.14-17.75l117.09.41 20.85 48.2v-48.6h67.27l18.52 27.68v-27.69h67.89v156.61h-67.89l-17.74-27.77v27.77H802.2l-9.94-24.69h-26.57l-9.78 24.7h-67.03c-26.83 0-43.97-17.39-43.97-17.39v17.38H543.84l-20.05-24.69v24.7h-375.8l-9.94-24.7h-26.49l-9.86 24.7H55.5z%22 style=%22fill:%23fff;stroke:none%22 transform=%22translate(-55.5 -1002.35)%22/%3E%3Cpath d=%22m106.13 1354.93-50.44 117.26h32.84l9.3-23.48h54.1l9.26 23.48h33.56l-50.39-117.26zm18.66 27.29 16.49 41.03h-33.03zm73.43 89.95v-117.26l46.66.17 27.14 75.6 26.5-75.77h46.28v117.26h-29.3v-86.4l-31.08 86.4h-25.7l-31.17-86.4v86.4zm166.64 0v-117.26h95.66v26.23H394.5v20.06H459v24.68h-64.5v20.83h66.03v25.46zm112.64-117.24v117.26h29.31v-41.66h12.35l35.15 41.66h35.82l-38.57-43.2a35.7 35.7 0 0 0 32.16-36.02c0-24.67-19.37-38.04-40.99-38.04zm29.31 26.23h33.51c8.04 0 13.89 6.29 13.89 12.34 0 7.8-7.58 12.35-13.45 12.35H506.8zm118.81 91.01h-29.93v-117.26h29.93zm70.98 0h-6.47c-31.26 0-50.24-24.63-50.24-58.15 0-34.35 18.77-59.11 58.25-59.11h32.4v27.77h-33.59c-16.02 0-27.36 12.5-27.36 31.63 0 22.71 12.96 32.25 31.63 32.25h7.72zm63.79-117.24-50.44 117.26h32.84l9.3-23.48h54.1l9.26 23.48h33.56l-50.39-117.26zm18.66 27.29 16.49 41.03H762.5zm73.38 89.95v-117.26h37.28l47.59 73.68v-73.68h29.31v117.26h-36.06l-48.8-75.6v75.6zM269.2 1677.39v-117.27h95.66v26.23h-66.04v20.06h64.5v24.69h-64.5v20.83h66.04v25.46zm468.75 0v-117.27h95.66v26.23h-66.04v20.06h64.19v24.69h-64.19v20.83h66.04v25.46zm-369.38 0 46.58-57.91-47.68-59.36h36.93l28.4 36.7 28.5-36.7h35.48l-47.06 58.63 46.67 58.64h-36.93l-27.58-36.12-26.9 36.12zm131.3-117.25v117.27h30.09v-37.04h30.86c26.1 0 45.9-13.85 45.9-40.79 0-22.31-15.52-39.44-42.1-39.44zm30.09 26.52h32.5c8.43 0 14.46 5.17 14.46 13.5 0 7.83-6 13.5-14.56 13.5h-32.4zm89.49-26.54v117.27h29.31v-41.66h12.35l35.15 41.66h35.82l-38.57-43.2a35.7 35.7 0 0 0 32.16-36.03c0-24.67-19.37-38.04-40.98-38.04zm29.31 26.23h33.51c8.04 0 13.9 6.29 13.9 12.35 0 7.79-7.59 12.34-13.46 12.34h-33.95zm198.43 91.04v-25.46h58.67c8.68 0 12.44-4.7 12.44-9.84 0-4.93-3.75-9.91-12.44-9.91h-26.51c-23.05 0-35.89-14.04-35.89-35.12 0-18.8 11.76-36.94 46-36.94h57.1l-12.35 26.39h-49.37c-9.44 0-12.35 4.95-12.35 9.68 0 4.86 3.6 10.22 10.8 10.22h27.78c25.69 0 36.83 14.57 36.83 33.66 0 20.51-12.42 37.32-38.23 37.32zm107.59 0v-25.46h58.67c8.69 0 12.44-4.7 12.44-9.84 0-4.93-3.74-9.91-12.44-9.91h-26.5c-23.05 0-35.89-14.04-35.89-35.12 0-18.8 11.76-36.94 46-36.94h57.09l-12.34 26.39h-49.38c-9.44 0-12.34 4.95-12.34 9.68 0 4.86 3.59 10.22 10.8 10.22h27.77c25.7 0 36.84 14.57 36.84 33.66 0 20.51-12.42 37.32-38.24 37.32z%22 style=%22fill:%23016fd0;fill-opacity:1;stroke:none%22 transform=%22translate(-55.5 -1002.35)%22/%3E%3C/svg%3E\", ar: 1.003, mono: false },\n \"applepay\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 baseProfile=%22tiny%22 viewBox=%220 0 512 210.2%22%3E%3Cpath d=%22M93.6 27.1C87.6 34.2 78 39.8 68.4 39c-1.2-9.6 3.5-19.8 9-26.1 6-7.3 16.5-12.5 25-12.9 1 10-2.9 19.8-8.8 27.1m8.7 13.8c-13.9-.8-25.8 7.9-32.4 7.9-6.7 0-16.8-7.5-27.8-7.3-14.3.2-27.6 8.3-34.9 21.2-15 25.8-3.9 64 10.6 85 7.1 10.4 15.6 21.8 26.8 21.4 10.6-.4 14.8-6.9 27.6-6.9 12.9 0 16.6 6.9 27.8 6.7 11.6-.2 18.9-10.4 26-20.8 8.1-11.8 11.4-23.3 11.6-23.9-.2-.2-22.4-8.7-22.6-34.3-.2-21.4 17.5-31.6 18.3-32.2-10-14.8-25.6-16.4-31-16.8m80.3-29v155.9h24.2v-53.3h33.5c30.6 0 52.1-21 52.1-51.4s-21.1-51.2-51.3-51.2zm24.2 20.4h27.9c21 0 33 11.2 33 30.9s-12 31-33.1 31h-27.8zM336.6 169c15.2 0 29.3-7.7 35.7-19.9h.5v18.7h22.4V90.2c0-22.5-18-37-45.7-37-25.7 0-44.7 14.7-45.4 34.9h21.8c1.8-9.6 10.7-15.9 22.9-15.9 14.8 0 23.1 6.9 23.1 19.6v8.6l-30.2 1.8c-28.1 1.7-43.3 13.2-43.3 33.2 0 20.2 15.7 33.6 38.2 33.6m6.5-18.5c-12.9 0-21.1-6.2-21.1-15.7 0-9.8 7.9-15.5 23-16.4l26.9-1.7v8.8c0 14.6-12.4 25-28.8 25m82 59.7c23.6 0 34.7-9 44.4-36.3L512 54.7h-24.6l-28.5 92.1h-.5l-28.5-92.1h-25.3l41 113.5-2.2 6.9c-3.7 11.7-9.7 16.2-20.4 16.2-1.9 0-5.6-.2-7.1-.4v18.7c1.4.4 7.4.6 9.2.6%22/%3E%3C/svg%3E\", ar: 2.436, mono: true },\n \"banorte\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 id=%22layer%22 x=%220%22 y=%220%22 version=%221.1%22 viewBox=%220 0 1920 235.2%22%3E%3Cstyle id=%22style2%22 type=%22text/css%22%3E.st0%7Bfill:%23ec1c2d%7D%3C/style%3E%3Cg id=%22g24%22 transform=%22matrix(3.2 0 0 3.2 -65.6 -911.04)%22%3E%3Cpath id=%22path4%22 d=%22M206.2 325.5h.7c3.9 0 7-3.1 7-7v-6.1c0-3.6-.4-5.3-1.8-7.2-2-2.5-5.5-3.6-8.9-3.6h-42.4v49.3h38.7c4.4 0 9.6-.6 12.3-3.5 2.5-2.7 2.6-4.8 2.6-11.4v-2.2a8.2 8.2 0 0 0-8.2-8.3m-33.1-14.9h25.6c1.3 0 4 .5 4 2.6v5.4c0 1.7-2.5 2.4-3.5 2.4h-26.1zm29.8 27.8c0 1.5-1.2 2.7-2.7 2.7h-27.1v-11H200c1.6 0 2.9 1.3 2.9 2.9z%22 class=%22st0%22/%3E%3Cpath id=%22path6%22 d=%22M274.3 351h14L260 301.7h-11.5L220.7 351h12.5l5.8-10.7h29.6zm-30.1-20.3 9.7-17.8 9.5 17.8z%22 class=%22st0%22/%3E%3Cpath id=%22polygon8%22 d=%22M304.1 301.7h-8.4V351h11.2v-24.8l-.3-7.6 38.3 32.4h8.6v-49.3h-11.2v24.8l.3 7.6z%22 class=%22st0%22/%3E%3Cpath id=%22path10%22 d=%22M416.6 351h-38.1c-3.4 0-7.1-.8-9.1-3.2-1.7-1.9-2-5.2-2-7.9v-27.1c0-3.1.4-6.4 2.4-8.4s5.6-2.7 8.7-2.7h38.1c3.4 0 7.1.7 9.1 3.1 1.6 1.9 2 5.3 2 8v27.1c0 2.8-.3 6-2 7.9-2 2.4-5.7 3.2-9.1 3.2m-37-39.4v29.5h35.9v-29.5z%22 class=%22st0%22/%3E%3Cpath id=%22path12%22 d=%22M483.9 351h17.3l-22.1-18.2h6.8c5.2 0 9.5-4.2 9.5-9.5v-12.2c0-5.2-4.2-9.5-9.5-9.5H442V351h12.2v-18.2h9.7zm-29.7-39.9H481c1.3 0 2.3 1 2.3 2.3v7.7c0 1.3-1 2.3-2.3 2.3h-26.8z%22 class=%22st0%22/%3E%3Cpath id=%22polygon14%22 d=%22M504.4 301.7v9.8h22.1V351h12.2v-39.5h22v-9.8h-34.2z%22 class=%22st0%22/%3E%3Cpath id=%22polygon16%22 d=%22M605.9 320.5h-23.1v-9.3H620v-9.5h-49.4V351h49.9v-10h-37.7v-11h23.1z%22 class=%22st0%22/%3E%3Cpath id=%22path18%22 d=%22M84.5 284.7c-28.5 0-51.6 7.5-51.6 16.8 0 7.8 16.1 14.3 38 16.2l9-27.7 1.6 28.2h3.1c28.5 0 51.6-7.5 51.6-16.8-.1-9.1-23.2-16.7-51.7-16.7%22 class=%22st0%22/%3E%3Cpath id=%22path20%22 d=%22M70.6 318.7c-27.8.3-50.1 9.1-50.1 20 0 9.2 15.8 16.9 37.4 19.3z%22 class=%22st0%22/%3E%3Cpath id=%22path22%22 d=%22m81.4 319 2.2 39.2c22.9-2 39.9-10 39.9-19.5.1-9.8-18.1-18-42.1-19.7%22 class=%22st0%22/%3E%3C/g%3E%3C/svg%3E\", ar: 8.163, mono: false },\n \"bbva\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 id=%22Capa_1%22 x=%220%22 y=%220%22 version=%221.1%22 viewBox=%220 0 600 179.8%22%3E%3Cstyle id=%22style1%22 type=%22text/css%22%3E.st0%7Bfill:%23004481%7D%3C/style%3E%3Cg id=%22g4%22%3E%3Cpath id=%22path1%22 d=%22m432.2 24.4-51.6 98.2c-1.1 2.1-4.3 2.1-5.4 0l-51.6-98.2c-.5-1-1.5-1.6-2.6-1.6h-25c-1.7 0-2.8 1.8-2 3.3l81.3 152.2c1.1 2.1 4.1 2.1 5.3 0l81.3-152.2c.8-1.5-.3-3.3-2-3.3h-25c-1.2 0-2.2.6-2.7 1.6%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3Cpath id=%22path2%22 d=%22m461.5 155.5 51.6-98.2c1.1-2.1 4.3-2.1 5.4 0l51.6 98.2c.5 1 1.5 1.6 2.6 1.6h25c1.7 0 2.8-1.8 2-3.3L518.4 1.6c-1.1-2.1-4.1-2.1-5.3 0l-81.3 152.2c-.8 1.5.3 3.3 2 3.3h25c1.1-.1 2.2-.7 2.7-1.6%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3Cpath id=%22path3%22 d=%22M108.8 95.2c10.8-5.4 17.5-17.1 17.5-31.4 0-24.5-19.1-41.1-46-41.1H3c-1.7 0-3 1.3-3 3v151.1c0 1.7 1.3 3 3 3h74c37 0 56.5-15.9 56.5-47.1 0-30.4-24.7-37.5-24.7-37.5M29 45.5h45.9c16.9 0 25.5 7.2 25.5 20.6s-8.6 20.6-25.5 20.6H29a3 3 0 0 1-3-3V48.5c0-1.7 1.3-3 3-3M75.5 157H29c-1.7 0-3-1.3-3-3v-41.7a3 3 0 0 1 3-3h46.5c22.2 0 32.1 6.3 32.1 23.8-.1 17.7-9.7 23.9-32.1 23.9%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3Cpath id=%22path4%22 d=%22M267.5 95.2c10.8-5.4 17.5-17.1 17.5-31.4 0-24.5-19.1-41.1-46-41.1h-77.4c-1.7 0-3 1.3-3 3v151.1c0 1.7 1.3 3 3 3h74c37 0 56.5-15.9 56.5-47.1.1-30.4-24.6-37.5-24.6-37.5m-79.8-49.7h45.9c16.9 0 25.5 7.2 25.5 20.6s-8.6 20.6-25.5 20.6h-45.9c-1.7 0-3-1.3-3-3V48.5c0-1.7 1.3-3 3-3M234.1 157h-46.5a3 3 0 0 1-3-3v-41.7a3 3 0 0 1 3-3h46.5c22.2 0 32.1 6.3 32.1 23.8 0 17.7-9.7 23.9-32.1 23.9%22 class=%22st0%22 style=%22fill:%23001391;fill-opacity:1%22/%3E%3C/g%3E%3C/svg%3E\", ar: 3.337, mono: false },\n \"chedraui\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1920 148.64%22%3E%3Cpath d=%22m1277.47 263.16 90.62-132.68h45.73l88.95 132.68h20.56l-104.05-147.8h-55.8l-103.21 147.8zm273.26-46.91c0 25.19 19.3 47.02 44.89 47.02h135.51c23.91 0 46.15-16.8 46.15-41.57V115.47h-19.3v105.4c0 13.85-10.07 26.03-24.33 26.03h-138.03c-14.69 0-26.01-12.6-26.01-27.3V115.47h-18.88zm-314.75.94c0-12.6-3.78-16.38-6.72-17.64l-2.94-1.26 3.78-2.51c6.71-4.63 5.88-15.96 5.88-17.22v-23.94c0-21.41-17.63-39.04-39.02-39.04h-184.18v147.37l18.88-.42V131.11h160.68c13.43 0 25.17 10.5 25.17 24.35v23.94c0 6.72-3.35 15.12-7.13 17.21l-2.93 1.68 2.51 2.1c3.78 3.36 6.72 7.14 6.72 16.8v45.34h19.3z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22m3013.05 1.34 1.6 557.02h662.8c84.04 0 166.5-57.15 166.5-146V147.31c0-90.44-84.04-145.98-169.67-145.98zm66.53 59.28h594.61c50.74 0 101.49 33.3 101.49 87.27v255.5c0 55.54-47.57 96.8-101.49 96.8h-594.61z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.727499%22 transform=%22scale(.26458)%22/%3E%3Cpath d=%22M693.45 263.14v-15.96H492.9V131.29h200.55v-15.53H476.13v147.38zM-36.9 221.5c.42-7.56 0-66.76 0-68.02 1.26-13.44 5.46-22.67 25.6-22.67h172.85v-15.54H-10.88c-22.24 0-43.22 15.54-43.22 38.63v67.6c0 22.68 18.88 41.15 41.54 41.15h174.11V247.1H-12.56c-14.27-.42-24.34-12.17-24.34-25.6m1509.88 41.66h20.98l-28.53-40.3H1314.8l-27.69 39.88h21.82l14.26-24.35h133z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22M502.4 184.69h191.32v-17.64H518.77v-12.18h174.95v-15.11H502.4zm-.83 9.23v44.09l192.15.42v-16.38l-174.95.42v-13.85h174.95v-14.7zm-528.82 27.16c.42 8.82 5.88 17.22 14.27 17.64h174.53v-16.38h-173.7v-67.6h173.7v-15.12H-12.56c-9.23 0-14.69 5.46-14.69 15.12zm1758.38 1.46h-136.77V115.47H1578v105.81c0 9.24 6.7 17.64 16.36 17.64h136.77c9.65 0 18.04-7.56 18.04-17.22V115.47h-18.04zm-691.74 40.27h19.3v-45.35H1190v45.77h19.73v-46.19c0-10.49-9.66-15.1-19.73-15.1h-150.6z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22M4133.8 94.11v207.9h570.83c36.48 0 71.38-23.81 71.38-61.9v-76.17c0-38.08-30.13-69.83-68.2-69.83zm72.35 56.14h497.9l-1.57 93.65h-496.33zM3112.58 93.93v374.52h562.92c34.88 0 68.18-25.38 68.18-61.87V147.89c0-34.92-34.89-53.96-66.6-53.96zm68.64 56.55h493.14V406h-493.14z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.727499%22 transform=%22scale(.26458)%22/%3E%3Cpath d=%22M237.17 185.27h165.3v-69.7l-15.95.42v50.8h-133.4V116h-15.95zm0 8.4v69.7h15.94v-55h133.41v55.42l15.95-.42v-69.7z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3Cpath d=%22M5391.07 92.87 5200.8 370.59h520.1L5535.37 92.87zm26.25 55.1h90.4l98.3 153.95h-282.24z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.727499%22 transform=%22scale(.26458)%22/%3E%3Cpath d=%22M1848.28 115.57v147.38h17.62V115.57zm-10.91 147.38v-147.8h-18.46l.42 147.8zm-1607.76.84v-147.8h-15.94v147.38zm182.51-148.22v146.96h14.68V115.57z%22 style=%22fill:%23154281;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.192484%22 transform=%22translate(54.1 -115.15)%22/%3E%3C/svg%3E\", ar: 12.917, mono: false },\n \"circlek\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220.86 0.86 274.53 274.52%22%3E%3Cpath fill=%22%23ec2024%22 d=%22M1 1h274.25v274.25H1z%22/%3E%3Cpath fill=%22%23fff%22 d=%22M203.1 93.69c9.63-12.92 6.67-29.84-5.67-39.08-12.39-9.21-29.43-7.24-39.1 5.71l-32.81 44.04V76c0-16.15-12.48-27.93-27.9-27.93-15.44 0-27.91 11.78-27.91 27.93v124.27c0 16.02 12.47 27.8 27.9 27.8s27.9-11.42 27.9-27.8l.05-37.02 66.29 74.9a113 113 0 0 1-53.7 13.48c-62.7 0-113.56-50.83-113.56-113.56 0-62.7 50.86-113.53 113.56-113.53s113.56 50.84 113.56 113.53c0 23-6.85 44.38-18.6 62.26l-59.58-67.04z%22/%3E%3Cpath fill=%22none%22 stroke=%22%23004b8d%22 stroke-width=%223.8%22 d=%22M203.1 93.69c9.63-12.92 6.67-29.84-5.67-39.08-12.39-9.21-29.43-7.24-39.1 5.71l-32.81 44.04V76c0-16.15-12.48-27.93-27.9-27.93-15.44 0-27.91 11.78-27.91 27.93v124.27c0 16.02 12.47 27.8 27.9 27.8s27.9-11.42 27.9-27.8l.05-37.02 66.29 74.9a113 113 0 0 1-53.7 13.48c-62.7 0-113.56-50.83-113.56-113.56 0-62.7 50.86-113.53 113.56-113.53s113.56 50.84 113.56 113.53c0 23-6.85 44.38-18.6 62.26l-59.58-67.04z%22/%3E%3C/svg%3E\", ar: 1, mono: false },\n \"citibanamex\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.11 0.11 43.59 6.6%22%3E%3Cpath d=%22m33.87 146.96-.03-.06-.06-.02h-.15v.16h.15l.06-.01q.03-.03.03-.07m.1 0q0 .07-.04.11l-.09.06.12.23h-.11l-.11-.22h-.11v.22h-.1v-.57h.25l.07.01.06.03.04.05zm.2.12-.04-.17a.4.4 0 0 0-.23-.23l-.17-.03a.4.4 0 0 0-.31.12.4.4 0 0 0-.13.31.4.4 0 0 0 .13.31.4.4 0 0 0 .3.13.4.4 0 0 0 .32-.13.4.4 0 0 0 .12-.3m.08 0a.5.5 0 0 1-.15.37.5.5 0 0 1-.37.15.5.5 0 0 1-.37-.15.5.5 0 0 1-.15-.37.5.5 0 0 1 .15-.37.5.5 0 0 1 .37-.15.5.5 0 0 1 .37.15q.06.07.1.17t.05.2m-35.64 4.25v-3.64h.75v3.64zm-.62-.79.05-.02-.18.7h-.01a1 1 0 0 1-.66.17c-.5 0-.83-.4-.83-.95v-2.06h-.63v-.68h.63v-.74l.73-.4v1.14h.76v.68h-.76v1.94q0 .41.35.4.25 0 .55-.18m-3.66.8v-3.65h.74v3.64zm-2.88-1.82c0 .68.48 1.17 1.13 1.17q.48 0 .89-.4l.01-.03.43.51-.02.02q-.52.61-1.29.61-.8 0-1.33-.49a1.8 1.8 0 0 1-.57-1.39q0-.87.57-1.4c.34-.31.81-.48 1.33-.48q.77 0 1.3.61v.02l-.42.5-.01-.01a1.2 1.2 0 0 0-.89-.41c-.65 0-1.13.5-1.13 1.17m35.36 1.82h-.85l-.34-.64c-.15-.26-.31-.6-.38-.73l-.4.74-.35.63h-.8l1.1-1.89-1.03-1.75h.83l.28.51c.14.26.32.59.38.73l.39-.74.27-.5h.83l-1.05 1.75zm-5.64-2.16h1.8c-.04-.5-.33-.91-.92-.91-.48 0-.82.33-.88.91m2.51.26-.02.33h-2.5c.07.7.52.99.96.99.3 0 .63-.11.87-.3l.4.47q-.48.47-1.31.48c-.85 0-1.64-.68-1.64-1.89 0-1.23.72-1.9 1.66-1.9 1.03 0 1.58.84 1.58 1.82m-3.72-.22v2.12h-.74v-2.06c0-.74-.22-1-.7-1-.47 0-.68.34-.68.93v2.13h-.74v-2.06c0-.74-.22-1-.69-1s-.72.34-.72.93v2.13h-.73v-3.64h.73v.34c.18-.26.52-.42.89-.42.5 0 .8.19 1 .54.26-.33.54-.54 1.11-.54.84 0 1.27.38 1.27 1.6m-6.4 1.08v-.52q-.29-.15-.86-.16c-.46 0-.77.21-.77.54 0 .36.25.6.72.6.38 0 .74-.23.9-.46m-.7-2.68c.8 0 1.43.4 1.43 1.22v2.5h-.73v-.36a1.5 1.5 0 0 1-1.02.43c-.6 0-1.3-.33-1.3-1.22 0-.82.66-1.18 1.48-1.18q.53 0 .84.14v-.27c0-.4-.3-.62-.74-.62q-.53 0-.95.23l-.28-.54a2.3 2.3 0 0 1 1.26-.33m-6.44 2.68v-.52q-.29-.15-.86-.16c-.46 0-.78.21-.78.54 0 .36.26.6.73.6.38 0 .74-.23.9-.46m-.7-2.68c.8 0 1.43.4 1.43 1.22v2.5h-.73v-.36a1.5 1.5 0 0 1-1.03.43c-.59 0-1.3-.33-1.3-1.22 0-.82.67-1.18 1.49-1.18q.52 0 .84.14v-.27c0-.4-.3-.62-.74-.62-.38 0-.67.07-.95.23l-.28-.54a2.3 2.3 0 0 1 1.26-.33m5.08 1.63v2.09h-.73v-2.06c0-.74-.28-1-.75-1-.48 0-.77.34-.77.93v2.13h-.7v-3.64h.74v.34c.18-.26.58-.42.95-.42.84 0 1.3.47 1.3 1.63m-8.61 1.5c.5 0 .87-.38.87-1.15 0-.92-.38-1.32-.9-1.32-.34 0-.7.23-.88.46v1.54c.16.21.55.47.9.47m.1-3.13c.78 0 1.48.57 1.48 1.96 0 1.24-.76 1.83-1.52 1.83-.36 0-.76-.2-.96-.41v.34H.55v-4.38l.74-.4v1.48c.26-.24.62-.42 1-.42%22 style=%22fill:%2312417d;fill-opacity:1;stroke-width:.26458332%22 transform=%22translate(9.43 -145.43)%22/%3E%3Cpath d=%22M-.15 147.15h-.86a3 3 0 0 0-2.14-.93c-.8 0-1.55.32-2.14.93h-.85a3.7 3.7 0 0 1 3-1.6c1.22 0 2.37.66 2.99 1.6m32.4 1.68.6.18c.28.09.36.3.36.52 0 .43-.3 1.07-.61 1.4-.18.2-.32.28-.5.28q-.15 0-.36-.07c-.21-.06-.47-.17-.62-.22.01.2.02.3.02.62 0 .53-.6.57-.93.57-.32 0-.71-.06-1.02-.2-.34-.17-.45-.33-.45-.88l.02-.54q-.29.12-.59.21c-.5.17-.73-.38-.83-.7a3 3 0 0 1-.14-.8c0-.55.18-.74.6-.87.2-.07.48-.14.64-.18l-.39-.5a.5.5 0 0 1-.1-.29c0-.3.3-.55.52-.7.25-.18.74-.44 1.17-.44.23 0 .39.1.58.35.13.17.29.4.37.54q.16-.25.36-.51a.5.5 0 0 1 .4-.2c.25 0 .51.15.69.28.24.18.52.46.68.75q.14.23.14.4 0 .23-.2.48c-.14.18-.31.4-.42.52m-.7-.12c.13 0 .37.04.6.1a1.8 1.8 0 0 0-.72-1.2.2.2 0 0 0-.14-.04.15.15 0 0 0-.14.14q0 .12.12.26c.1.14.27.34.27.52 0 .12-.07.2-.1.23zm.24 1.53c.16-.24.26-.47.26-.57s-.1-.14-.16-.14q-.12 0-.25.2c-.13.18-.33.5-.6.41l-.07-.04.08.25q.05.19.06.46c.16-.08.45-.26.68-.57m-.9-.23-.03-.2q0-.2.1-.49c.1-.33.23-.49.36-.56q-.26.02-.66-.27c-.29-.2-.4-.37-.43-.52q-.06.25-.46.54c-.3.2-.48.26-.63.24q.22.14.37.6.09.25.09.42 0 .14-.05.23.2-.16.7-.16.5.01.64.17m-.75.98q.21-.01.2-.15-.01-.16-.28-.22c-.22-.07-.59-.16-.59-.44l.01-.08-.2.15q-.17.1-.42.2c.17.18.62.54 1.28.54m-1.42-1.57c0-.23-.03-.6.24-.69l.06-.01q-.16-.09-.52-.5c-.11.24-.32.77-.11 1.38q.08.18.2.14.16-.06.13-.32m.45-1.9q-.11.07-.1.15c0 .05.03.15.16.15.19 0 .44-.16.7-.16.23 0 .3.17.3.2q0-.18.3-.66l-.28-.02c-.3 0-.7.06-1.08.34%22 style=%22fill:%23e30b13;fill-opacity:1;stroke-width:.26458332%22 transform=%22translate(9.43 -145.43)%22/%3E%3C/svg%3E\", ar: 6.605, mono: false },\n \"clip\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 fill=%22none%22 viewBox=%220 0 64 64%22%3E%3Cg fill-rule=%22evenodd%22 clip-path=%22url(%23a)%22 clip-rule=%22evenodd%22%3E%3Cpath fill=%22%23FC4C02%22 d=%22M63.97 10.8A10.82 10.82 0 0 0 48.98.85L9.57 17.6A15.7 15.7 0 0 0 0 32.01v21.17a10.82 10.82 0 0 0 15.08 9.94l39.25-16.66a15.7 15.7 0 0 0 9.64-14.45z%22/%3E%3Cpath fill=%22%23fff%22 d=%22M27.71 40.51c-.46 0-.83-.41-.83-.92V20.12c0-.5.37-.92.83-.92s.83.41.83.92V39.6c0 .5-.37.92-.83.92m7.23-.88V24.42c0-.51-.37-.93-.83-.93s-.83.42-.83.93v15.22c0 .52.37.94.83.94s.83-.42.83-.94m0-19.58V20a.8.8 0 0 0-.83-.81.8.8 0 0 0-.83.8v.06c0 .44.37.8.83.8s.83-.36.83-.8M21.93 38.46a.93.93 0 0 0 0-1.32.94.94 0 0 0-1.33 0 7 7 0 0 1-9.84 0 6.87 6.87 0 0 1 0-9.76 7 7 0 0 1 4.92-2.02c1.86 0 3.6.71 4.92 2.02.37.36.96.36 1.33 0a.93.93 0 0 0 0-1.32 8.8 8.8 0 0 0-6.25-2.57 8.8 8.8 0 0 0-6.25 2.57 8.73 8.73 0 0 0 0 12.4 8.8 8.8 0 0 0 6.25 2.56c2.27 0 4.53-.85 6.25-2.56m19.62 5.86V32.24a6.9 6.9 0 0 1 13.8 0 6.9 6.9 0 0 1-6.9 6.88c-2.2 0-3.68-.83-3.7-.84a.93.93 0 0 0-.94 1.61c.08.05 1.91 1.1 4.64 1.1a8.77 8.77 0 0 0 8.77-8.75 8.77 8.77 0 0 0-17.54 0v12.08a.93.93 0 0 0 1.87 0%22/%3E%3Cpath fill=%22%23FC4C02%22 d=%22M63.8 50.5a2.69 2.69 0 1 1-5.37 0 2.69 2.69 0 0 1 5.38 0m-.42 0c0-1.27-1.01-2.3-2.26-2.3a2.3 2.3 0 0 0-2.26 2.3 2.3 2.3 0 0 0 2.26 2.29 2.3 2.3 0 0 0 2.26-2.3m-1.13 1.47h-.48l-.67-1.2h-.45v1.2h-.4v-2.95h1a.9.9 0 0 1 .92.88c0 .43-.26.7-.63.81zm-.5-2.07c0-.3-.22-.52-.55-.52h-.55v1.03h.55c.33 0 .56-.21.56-.5%22/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id=%22a%22%3E%3Cpath fill=%22%23fff%22 d=%22M0 0h64v64H0z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\", ar: 1, mono: false },\n \"dhl\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 overflow=%22visible%22 version=%221.0%22 viewBox=%220 0 175.75 38.79%22%3E%3Cpath fill=%22%23fecc00%22 d=%22M0 38.79V0h175.75v38.79z%22/%3E%3Cpath fill=%22%23d50029%22 d=%22m56.67 16.2-2.84 3.91c-.4.54-1.11 1.51 1.26 1.51h12.52l3.7-5.04c2.3-3.12.2-9.61-8.02-9.61H30.91l-5.62 7.62h30.6c1.55 0 1.53.6.78 1.62m-9.2 7.3c-2.38 0-1.66-.97-1.26-1.51l2.85-3.88c.76-1.03.78-1.62-.77-1.62h-14L23.03 31.82h27.5c9.08 0 14.14-6.18 15.7-8.32zm17.9 8.32h16.12l6.12-8.32H71.48zm41.62-24.86-6.2 8.41h-7.2l6.2-8.4H83.64L72.87 21.62h39.47L123.1 6.97Zm-18.3 24.86h16.13l6.12-8.32H94.81zM0 26.78v1.77h22.47l1.3-1.77zm26.18-3.28H0v1.77h24.88ZM0 31.82h20.06l1.3-1.76H0Zm152.07-3.27h23.68v-1.77h-22.38zm-2.4 3.27h26.08v-1.76h-24.8zm6.11-8.32-1.3 1.77h21.27V23.5Zm-21.12-1.88 10.79-14.65h-17.08l-10.8 14.65zm-18.47 1.88-1.76 2.4c-2.02 2.73-.23 5.92 6.38 5.92h25.9l6.12-8.31z%22/%3E%3C/svg%3E\", ar: 4.531, mono: false },\n \"estafeta\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220 0 6834.46 1080%22%3E%3Cpath fill=%22%23c01818%22 d=%22m1423.74 511.84 213.92 182.45c40.33 38.22 65.32 92.83 65.32 153.05 0 115.32-92.33 208.87-206.48 208.87l-146.33.5H901.39l45.79-200.35 337.66.58c36.58 0 66.23-29.89 66.23-66.78a66.8 66.8 0 0 0-28.62-55.1L1133.9 596.1c-50.18-38.07-82.65-99.06-82.65-167.4 0-115.69 92.44-209.17 206.4-209.17l488.02-.35-40 176.47h-236.61c-36.46 0-66.08 29.83-66.08 66.66 0 19.55 8.06 37.11 21.16 49.35zm804.66 370.53h.86c-36.52 0-66.66-29.82-66.07-66.84 0-7.8 1.86-13.82 3.66-19.73l90.44-401.39h150.8l40.02-175.29h-150.76L2347.96 0h-289.03l-50.28 219.15h-157.79l-40.33 175.23h158.23l-116.6 510.27a122 122 0 0 0-2.72 27.2c0 68.98 55.44 125.38 124.02 125.38l249.14-1.08 40.18-174.61c.09.06-21.62.83-34.39.83m3183.11 0h.64c-36.52 0-66.5-29.82-65.88-66.84 0-7.8 1.7-13.82 3.37-19.73l90.64-401.39H5591l39.99-175.29h-150.51L5530.5 0h-288.35l-50.77 219.15h-157.42l-40.33 175.23h158.25L5035.2 904.65a116 116 0 0 0-3.04 27.2c.16 68.98 55.48 125.38 123.94 125.38h.21l249.45-1.08 39.9-174.61c-.03.06-21.22.83-34.17.83m-2068.96 173.41c18.93-8.06 32.06-24.6 36.95-45.2l1.61-6.69-.83 1.55 140.07-611.37h-115.6L3444.38 219h115.75l12.89-56.97 2.91-11.55C3601.4 64 3680.47.93 3774.15.93l.43-.59h274.26l-32 140.66-97.51-.28c-31.35 0-57 22-64.3 51.24v-1.12l-6.73 28.13h150.64l-39.47 175.75H3808.4l-124.58 548.3c-13.2 64.53-69.5 113-137.35 113zM2797.6 860.94l-1.3.62a104.3 104.3 0 0 1-58.23 17.5c-59.38 0-107.46-48.5-107.46-108.63 0-60.06 48.08-108.88 107.46-108.88l203.66.74c-17.12 85.59-70.93 157.8-144.13 198.65m506.74-533.31c0-60.06-48.23-108.5-107.43-108.5h-643.46l-39.3 174.1h444.25c18.52 0 33.55 14.72 33.55 33.21 0 2.54-.16 4.93-.78 7.38h-.4l-17.69 76.94h-311.43c-159.58 0-289.03 131.21-289.03 292.78 0 2.39 0 5.02.15 7.47 0 0 .1 8.3.28 13.66 4.4 150.72 139.7 255.24 287.08 255.24 18.53 0 33.55-1.37 54.43-4.96 59.22-10.6 103.02-27.5 143.3-59.16 19.54 24.72 50.2 39.99 83.84 39.99h271.94c-29.61-19.27-49-53.6-49-91.88 0-9.17.96-18.09 2.97-26.76l134.03-586.46v.83c1.74-7.65 2.7-15.7 2.7-23.88M656.28 434.06l-18.09 77.9H385.62l14.15-59.44c4.18-32.58 31.38-57.64 64.56-58.26l159.58.19c18.25 0 32.9 14.86 32.9 33.54 0 2.08 0 4-.53 6.07m205.65-214.88H278.76l-2.15-1.02c-65.57 0-121.02 45.7-136.07 107.67L2.14 925.31C.5 932.77 0 939.83 0 947.73c0 60.13 48.26 108.79 107.61 108.79h697.64l45.6-201.06H389.8l.93.34c-36.68 0-66.41-29.92-66.41-66.82 0-5.7 1.08-11.27 2.2-16.5l-.35.58 22.43-103h545.27l73.9-322.23a132 132 0 0 0 1.55-20.1c.03-59.85-47.95-108.55-107.39-108.55m5118.52 641.85-1.11.53a105.6 105.6 0 0 1-58.54 17.5c-59.26 0-107.03-48.5-107.03-108.63 0-60.16 47.8-108.88 107.03-108.88l203.78.62a294.3 294.3 0 0 1-144.13 198.86M6380.05 219h-643.78l-39.43 174.27h444.6a33.24 33.24 0 0 1 33.45 33.2c0 2.6-.19 4.93-.71 7.5l-.5-.15-17.35 76.94h-311.55c-159.5 0-289 131.3-289 292.78v7.53s.3 8.33.3 13.69c4.31 150.63 139.8 255.24 286.9 255.24 18.62 0 33.7-1.46 54.61-5.05 59.32-10.6 102.75-27.5 143.42-59.16 19.61 24.8 50.21 40.23 83.76 40.23h272.03c-29.8-19.51-49.31-53.83-49.31-92.12 0-9.07 1.08-18.09 3.25-26.76l133.9-586.43v.77c1.71-7.65 2.8-15.64 2.8-23.88-.1-60.16-48.33-108.6-107.4-108.6M4588 434.68l-17.8 78.03h-252.62l14.2-59.44c3.83-32.43 31.25-57.83 64.33-58.36l159.52.1c18.25 0 33.05 15.08 33.05 33.54 0 2.1-.18 4.15-.68 6.13m205.93-215.06h-583.27l-2.05-.93c-66 0-121.05 45.78-136.45 107.55L3933.9 926.02c-1.7 7.56-2.05 14.43-2.05 22.24 0 60.22 48.14 108.91 107.33 108.91h697.8l45.78-201.19h-461.2l.87.34c-36.68 0-66.08-29.8-66.08-66.66 0-5.85.62-11.4 2.02-16.66l-.78.71 22.86-103.33h545.46l73.47-322.34a100 100 0 0 0 1.92-19.67c0-60.06-47.98-108.75-107.36-108.75m1899.11 131.21h20.88l34.13 56.93h24.82l-37.36-58.6c20.23-2.14 34.6-12.17 34.6-36.18 0-27.17-16.05-38.32-48.5-38.32h-50.19v133.1h21.59v-56.93zm0-18.58v-38.91h26.52c13.07 0 28.9 1.95 28.9 17.94 0 19.36-14.62 20.97-30.73 20.97zm141.4 6.69c0-72.2-54.51-120.25-117.36-120.25-63.94 0-118.24 48.01-118.24 120.25 0 68.45 49.1 120.18 118.24 120.18 62.85 0 117.37-47.82 117.37-120.18m-25.65 0c0 58.76-40.67 99.21-91.72 99.21-57.34 0-92.68-44.6-92.68-99.21 0-58.33 40.33-99.22 92.68-99.22 51.05-.03 91.72 40.89 91.72 99.22%22/%3E%3C/svg%3E\", ar: 6.328, mono: false },\n \"farmaciasyza\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 141.31 65.39%22%3E%3Cg data-name=%22Grupo 3266%22%3E%3Cpath fill=%22%23009%22 d=%22M90.49 39.75a8 8 0 0 1-6.43 2.7c-4.17 0-6.01-2.16-6.4-4.51s-.63-8.66 7.77-8.66a13 13 0 0 1 5.05.83ZM69.71 30.1c-.95 2.13-2.29 7.57-.56 11.74 1.88 4.51 5.66 7.71 12.51 7.71s10.07-3.46 10.07-3.46c3.41 5.52 11.48 2.79 11.48 2.79l-.06-5.82h-1.92c-1.53 0-1.83-1.67-1.83-3.06V24.57c-3.88-1.88-13.5-2.54-18.1-1.78 0 0-8.81 1.09-11.59 7.32%22 data-name=%22Trazado 25280%22/%3E%3Cpath fill=%22%23009%22 d=%22M51.02 41.85 60.29 33a42 42 0 0 0 4.95-5.26l-.13-4.96H37.3v7.34h13.87C45.23 35.58 36.6 43.97 36.6 43.97v4.91h29.15l-.1-7.03Z%22 data-name=%22Trazado 25281%22/%3E%3Cpath fill=%22%233c3%22 d=%22M25.42 58.35h4v1.44h-2.26v1.43h1.48v1.34h-1.48v2.65H25.4Z%22 data-name=%22Trazado 25282%22/%3E%3Cpath fill=%22%233c3%22 d=%22M34.93 62.62h1.5l-.52-1.77-.13-.52h-.19l-.11.52Zm-.48-4.28h2.48L39 65.21h-1.8l-.34-1.15h-2.35l-.35 1.15h-1.78Z%22 data-name=%22Trazado 25283%22/%3E%3Cpath fill=%22%233c3%22 d=%22M45.98 59.97a.7.7 0 0 0-.54-.18h-.84v1.72h.84a.8.8 0 0 0 .54-.2 1 1 0 0 0 .2-.68 1 1 0 0 0-.2-.66m.74 2.66 1.6 2.58H46.3l-1.44-2.35h-.27v2.35h-1.74v-6.86h2.64a2.5 2.5 0 0 1 1.71.51 2.4 2.4 0 0 1 .71 1.8 2.2 2.2 0 0 1-.72 1.7 2 2 0 0 1-.47.28%22 data-name=%22Trazado 25284%22/%3E%3Cpath fill=%22%233c3%22 d=%22M56.18 64.34h-.86L54.2 61.9a5 5 0 0 1-.21-.63h-.14s.06.74.06 1.02v2.92h-1.75v-6.86h1.94l1.6 3.62h.1l1.6-3.62h1.94v6.86h-1.75V62.3c0-.29.06-1.02.06-1.02h-.14a5 5 0 0 1-.22.62Z%22 data-name=%22Trazado 25285%22/%3E%3Cpath fill=%22%233c3%22 d=%22M65.75 62.62h1.5l-.54-1.77-.12-.52h-.2l-.1.52Zm-.49-4.28h2.48l2.07 6.87h-1.79l-.34-1.15h-2.36l-.34 1.15h-1.79Z%22 data-name=%22Trazado 25286%22/%3E%3Cpath fill=%22%233c3%22 d=%22M78.25 64.9a4 4 0 0 1-2 .46 3.5 3.5 0 0 1-2.04-.61c-.54-.45-.95-1.18-.95-2.98 0-1.7.39-2.4.9-2.87a3 3 0 0 1 2.1-.72 5 5 0 0 1 1.77.33l-.3 1.36a4 4 0 0 0-1.2-.2 1.6 1.6 0 0 0-1.08.36c-.23.23-.43.68-.43 1.75 0 1.12.2 1.55.46 1.78a1.6 1.6 0 0 0 1.05.31 5 5 0 0 0 1.41-.27Z%22 data-name=%22Trazado 25287%22/%3E%3Cpath fill=%22%233c3%22 d=%22M82.14 58.35h1.75v6.85h-1.75z%22 data-name=%22Rect%C3%A1ngulo 1541%22/%3E%3Cpath fill=%22%233c3%22 d=%22M90.28 62.62h1.5l-.53-1.77-.12-.52h-.2l-.11.52Zm-.48-4.28h2.48l2.07 6.87h-1.79l-.34-1.15h-2.36l-.35 1.15h-1.78Z%22 data-name=%22Trazado 25288%22/%3E%3Cpath fill=%22%233c3%22 d=%22M100.66 65.36a6 6 0 0 1-2.54-.58l.31-1.4a5 5 0 0 0 2.04.5c.5 0 .86-.23.86-.7q.01-.51-.6-.66l-.74-.18c-1.11-.25-1.95-.69-1.95-2.02 0-1.28.86-2.13 2.5-2.13a5 5 0 0 1 2.08.48l-.48 1.39a4 4 0 0 0-1.53-.39c-.5 0-.78.26-.78.62a.5.5 0 0 0 .43.52l.82.2c1.2.28 2.03.76 2.03 2.08a2.13 2.13 0 0 1-2.46 2.27%22 data-name=%22Trazado 25289%22/%3E%3Cpath fill=%22%23009%22 d=%22m24.38 22.74-7.3 17.62-6.78-17.62H0l11.34 27.13a9 9 0 0 1-1.21.79 8 8 0 0 1-2.48.84 18 18 0 0 1-2.2.24q-1.06.04-2.07 0l-1.4 6.47q2.07.15 5.22.15a20 20 0 0 0 8.3-1.54 14 14 0 0 0 5.2-3.98 13 13 0 0 0 .85-1.1 9 9 0 0 0 .67-1.15l12.46-27.85Z%22 data-name=%22Trazado 25290%22/%3E%3Cpath fill=%22%233c3%22 d=%22M118.55 22.76v5.15a5.87 5.87 0 0 0 11.74 0v-5.15h5.15a5.87 5.87 0 0 0 0-11.74h-5.15V5.87a5.87 5.87 0 0 0-11.74 0v5.15h-5.15a5.87 5.87 0 0 0 0 11.74Z%22 data-name=%22Trazado 25291%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 12.63a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25292%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 12.63a.4.4 0 1 1 .4.41.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25293%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 12.63a.29.29 0 1 1 .3.29.3.3 0 0 1-.3-.3%22 data-name=%22Trazado 25294%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 12.63a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25295%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 14.74a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25296%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 16.86a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25297%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 18.97a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25298%22/%3E%3Cpath fill=%22%23009%22 d=%22M137.03 21.09a.14.14 0 1 1 .14.14.14.14 0 0 1-.14-.14%22 data-name=%22Trazado 25299%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 13.69a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25300%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 13.69a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25301%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 13.69a.2.2 0 1 1 .2.2.2.2 0 0 1-.2-.2%22 data-name=%22Trazado 25302%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 14.74a.53.53 0 1 1 .54.54.53.53 0 0 1-.53-.54%22 data-name=%22Trazado 25303%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 14.74a.4.4 0 1 1 .4.41.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25304%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 14.74a.29.29 0 1 1 .09.2.3.3 0 0 1-.09-.2%22 data-name=%22Trazado 25305%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 15.8a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25306%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 15.8a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25307%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 15.8a.2.2 0 1 1 .06.14.2.2 0 0 1-.06-.14%22 data-name=%22Trazado 25308%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 16.86a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25309%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 16.86a.4.4 0 1 1 .4.4.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25310%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 16.86a.29.29 0 1 1 .3.29.3.3 0 0 1-.3-.3%22 data-name=%22Trazado 25311%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 17.92a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25312%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 17.92a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25313%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 17.92a.2.2 0 1 1 .06.14.2.2 0 0 1-.06-.14%22 data-name=%22Trazado 25314%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 18.98a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25315%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 18.97a.4.4 0 1 1 .4.41.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25316%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 18.97a.29.29 0 1 1 .3.3.3.3 0 0 1-.3-.3%22 data-name=%22Trazado 25317%22/%3E%3Cpath fill=%22%23009%22 d=%22M131.44 20.03a.44.44 0 1 1 .44.44.44.44 0 0 1-.44-.44%22 data-name=%22Trazado 25318%22/%3E%3Cpath fill=%22%23009%22 d=%22M133.68 20.03a.32.32 0 1 1 .32.32.3.3 0 0 1-.32-.32%22 data-name=%22Trazado 25319%22/%3E%3Cpath fill=%22%23009%22 d=%22M135.91 20.03a.2.2 0 1 1 .06.14.2.2 0 0 1-.06-.14%22 data-name=%22Trazado 25320%22/%3E%3Cpath fill=%22%23009%22 d=%22M130.3 21.09a.53.53 0 1 1 .54.53.53.53 0 0 1-.53-.53%22 data-name=%22Trazado 25321%22/%3E%3Cpath fill=%22%23009%22 d=%22M132.54 21.09a.4.4 0 1 1 .4.4.4.4 0 0 1-.4-.4%22 data-name=%22Trazado 25322%22/%3E%3Cpath fill=%22%23009%22 d=%22M134.77 21.1a.29.29 0 1 1 .3.28.3.3 0 0 1-.3-.29%22 data-name=%22Trazado 25323%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 22.78a.53.53 0 1 1-.53.53.53.53 0 0 1 .53-.53%22 data-name=%22Trazado 25324%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25325%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 27.24a.29.29 0 1 1-.29.29.3.3 0 0 1 .3-.29%22 data-name=%22Trazado 25326%22/%3E%3Cpath fill=%22%23009%22 d=%22M128.65 29.5a.14.14 0 1 1-.14.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25327%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 29.5a.14.14 0 1 1-.14.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25328%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 29.5a.14.14 0 1 1-.14.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25329%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 29.5a.14.14 0 1 1-.13.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25330%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 29.5a.14.14 0 1 1-.15.14.14.14 0 0 1 .14-.14%22 data-name=%22Trazado 25331%22/%3E%3Cpath fill=%22%23009%22 d=%22M127.6 23.9a.44.44 0 1 1-.45.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25332%22/%3E%3Cpath fill=%22%23009%22 d=%22M127.6 26.14a.32.32 0 1 1-.32.33.3.3 0 0 1 .32-.33%22 data-name=%22Trazado 25333%22/%3E%3Cpath fill=%22%23009%22 d=%22M127.6 28.38a.2.2 0 1 1-.15.06.2.2 0 0 1 .14-.06%22 data-name=%22Trazado 25334%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 22.78a.53.53 0 1 1-.54.53.53.53 0 0 1 .54-.53%22 data-name=%22Trazado 25335%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25336%22/%3E%3Cpath fill=%22%23009%22 d=%22M126.54 27.24a.29.29 0 1 1-.3.29.3.3 0 0 1 .3-.29%22 data-name=%22Trazado 25337%22/%3E%3Cpath fill=%22%23009%22 d=%22M125.48 23.9a.44.44 0 1 1-.44.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25338%22/%3E%3Cpath fill=%22%23009%22 d=%22M125.48 26.14a.32.32 0 1 1-.32.33.3.3 0 0 1 .32-.33%22 data-name=%22Trazado 25339%22/%3E%3Cpath fill=%22%23009%22 d=%22M125.48 28.38a.2.2 0 1 1-.2.2.2.2 0 0 1 .2-.2%22 data-name=%22Trazado 25340%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 22.78a.53.53 0 1 1-.53.53.53.53 0 0 1 .53-.53%22 data-name=%22Trazado 25341%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25342%22/%3E%3Cpath fill=%22%23009%22 d=%22M124.42 27.24a.29.29 0 1 1-.29.29.3.3 0 0 1 .3-.29%22 data-name=%22Trazado 25343%22/%3E%3Cpath fill=%22%23009%22 d=%22M123.36 23.9a.44.44 0 1 1-.44.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25344%22/%3E%3Cpath fill=%22%23009%22 d=%22M123.36 26.14a.32.32 0 1 1-.32.33.3.3 0 0 1 .32-.33%22 data-name=%22Trazado 25345%22/%3E%3Cpath fill=%22%23009%22 d=%22M123.36 28.38a.2.2 0 1 1-.14.06.2.2 0 0 1 .14-.06%22 data-name=%22Trazado 25346%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 22.78a.53.53 0 1 1-.53.53.53.53 0 0 1 .54-.53%22 data-name=%22Trazado 25347%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 25a.4.4 0 1 1-.4.42.4.4 0 0 1 .4-.41%22 data-name=%22Trazado 25348%22/%3E%3Cpath fill=%22%23009%22 d=%22M122.3 27.24a.29.29 0 1 1-.28.29.3.3 0 0 1 .29-.29%22 data-name=%22Trazado 25349%22/%3E%3Cpath fill=%22%23009%22 d=%22M121.25 23.9a.44.44 0 1 1-.44.45.44.44 0 0 1 .44-.44%22 data-name=%22Trazado 25350%22/%3E%3Cpath fill=%22%23009%22 d=%22M121.25 26.14a.32.32 0 1 1-.23.1.3.3 0 0 1 .23-.1%22 data-name=%22Trazado 25351%22/%3E%3Cpath fill=%22%23009%22 d=%22M121.25 28.38a.2.2 0 1 1-.14.06.2.2 0 0 1 .14-.06%22 data-name=%22Trazado 25352%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 22.78a.53.53 0 1 1-.54.53.53.53 0 0 1 .53-.53%22 data-name=%22Trazado 25353%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 25a.4.4 0 1 1-.42.42.4.4 0 0 1 .41-.41%22 data-name=%22Trazado 25354%22/%3E%3Cpath fill=%22%23009%22 d=%22M120.2 27.24a.29.29 0 1 1-.21.08.3.3 0 0 1 .2-.08%22 data-name=%22Trazado 25355%22/%3E%3Cpath fill=%22%23009%22 d=%22M113.72 41.85h-1.14v1.9h1.06c.64 0 1.01-.19 1.01-.98 0-.62-.27-.92-.94-.92m-1.67-.5h1.86a1.28 1.28 0 0 1 1.31 1.44 1.36 1.36 0 0 1-1.12 1.44l1.54 2.18h-.67l-1.46-2.16h-.92v2.16h-.55Zm1.58-1.8a4.4 4.4 0 1 0 4.39 4.38 4.4 4.4 0 0 0-4.39-4.39m0 9.34a4.94 4.94 0 1 1 3.5-1.45 5 5 0 0 1-3.5 1.45%22 data-name=%22Trazado 25356%22/%3E%3C/g%3E%3C/svg%3E\", ar: 2.161, mono: false },\n \"fedex\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%22-0.81 -0.35 74.35 33.92%22%3E%3Cpath d=%22m59.95 7.77 2.98 3.28 2.87-3.28h6.12l-5.99 6.73L72 21.28h-6.37l-2.95-3.3-2.92 3.3h-6.15l6.01-6.75-6.01-6.76z%22 style=%22fill:%23ff5900%22 transform=%22translate(-.81 -.35)%22/%3E%3Cpath d=%22M53.61 7.77v4.57H46.8v4.19h6.81v4.75H41.79V0h11.82v4.74H46.8v3.03z%22 style=%22fill:%23ff5900%22 transform=%22translate(-.81 -.35)%22/%3E%3Cpath d=%22M36.81 0v8.71h-.05a5 5 0 0 0-4.09-1.7c-3.27 0-5.74 2.22-6.6 5.16-1-3.24-3.54-5.23-7.32-5.23-3.07 0-5.5 1.38-6.75 3.62V7.77H5.65V4.74h6.92V0H0v21.28h5.65v-8.94h5.64a9 9 0 0 0-.26 2.1c0 4.44 3.4 7.56 7.72 7.56 3.64 0 6.04-1.71 7.3-4.83h-4.84c-.65.94-1.15 1.22-2.46 1.22a2.9 2.9 0 0 1-2.83-2.9h9.87c.42 3.53 3.17 6.57 6.94 6.57 1.63 0 3.12-.8 4.03-2.15h.05v1.38h4.98V0zM16.08 12.4a2.7 2.7 0 0 1 2.67-2.23 2.6 2.6 0 0 1 2.7 2.23zm17.7 5.64c-1.83 0-2.97-1.7-2.97-3.5 0-1.9.99-3.74 2.98-3.74 2.06 0 2.88 1.83 2.88 3.74 0 1.81-.87 3.5-2.88 3.5m8.01 13.89V24.3H46v.57h-3.5v2.8h3.37v.58H42.5v3.1h3.68v.57zm4.87 0 2.05-2.74-1.95-2.6h.8l1.59 2.12 1.56-2.12h.78l-1.98 2.6 2.07 2.73h-.8l-1.7-2.26-1.63 2.26zm6.26 1.99h-.65V28.2q0-.8-.03-1.6h.63l.03.8c.4-.63.92-.92 1.71-.92 1.65 0 2.35 1.36 2.35 2.79s-.7 2.8-2.35 2.8q-1.11 0-1.7-.9zm3.36-4.66c0-1.14-.48-2.26-1.74-2.26-1.2 0-1.62.98-1.62 2.26s.43 2.25 1.62 2.25c1.26 0 1.74-1.11 1.74-2.25m3.98-2.17c-1.06 0-1.43.9-1.43 1.82v3.01h-.64v-3.76l-.03-1.57h.63l.04.77q.48-.9 1.55-.9l.3.03v.64zm1.2 2.29c0 1.2.57 2.19 1.74 2.19.9 0 1.33-.6 1.48-1.2h.62c-.29 1.11-.97 1.68-2.19 1.68-1.62 0-2.33-1.2-2.33-2.7 0-1.52.74-2.88 2.42-2.88 1.7 0 2.15 1.48 2.15 2.9zm.02-.49h3.18c0-1.04-.5-1.94-1.5-1.94-.92 0-1.55.7-1.68 1.94m6.38 3.16c-1.1 0-1.92-.52-1.92-1.68h.64c0 .8.53 1.2 1.3 1.2.74 0 1.3-.35 1.3-1.07 0-.64-.66-.8-1.35-1-.85-.25-1.76-.52-1.76-1.55 0-1.14.95-1.48 1.85-1.48 1.03 0 1.8.4 1.83 1.5h-.64c-.03-.63-.48-.98-1.17-.98-.54 0-1.19.2-1.19.9 0 .63.65.81 1.35 1 .84.23 1.77.49 1.77 1.52 0 1.2-.93 1.64-2.01 1.64m4.45 0c-1.1 0-1.91-.52-1.91-1.68h.64c0 .8.52 1.2 1.3 1.2.73 0 1.3-.35 1.3-1.07 0-.64-.66-.8-1.36-1-.84-.25-1.76-.52-1.76-1.55 0-1.14.96-1.48 1.86-1.48 1.03 0 1.8.4 1.83 1.5h-.64c-.03-.63-.49-.98-1.17-.98-.54 0-1.2.2-1.2.9 0 .63.66.81 1.36 1 .84.23 1.77.49 1.77 1.52 0 1.2-.93 1.64-2.02 1.64%22 style=%22fill:%232a007c%22 transform=%22translate(-.81 -.35)%22/%3E%3C/svg%3E\", ar: 2.192, mono: false },\n \"hsbc\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220 0 315.9 85%22%3E%3Cpath fill=%22%23fff%22 d=%22M42.6 0h85v85h-85z%22/%3E%3Cpath fill=%22%23db0011%22 d=%22M170.1 42.6 127.6 0v85.1zm-85 0L127.6 0h-85z%22/%3E%3Cpath fill=%22%23db0011%22 d=%22m0 42.6 42.6 42.5V0zm85.1 0L42.6 85.1h85z%22/%3E%3Cpath d=%22M207.4 45.1H192v15.2h-7.7V24.7h7.7v14.6h15.4V24.7h7.7v35.6h-7.7zM233.7 61c-7.7 0-14-3.1-14.1-11.6h7.7c.1 3.8 2.3 6.1 6.5 6.1 3.1 0 6.7-1.6 6.7-5.1 0-2.8-2.4-3.6-6.4-4.8l-2.6-.7c-5.6-1.6-11.2-3.8-11.2-10.2 0-7.9 7.4-10.6 14.1-10.6 6.9 0 12.9 2.4 13 10.3h-7.7c-.3-3.2-2.2-5.1-5.8-5.1-2.9 0-5.7 1.5-5.7 4.7 0 2.6 2.4 3.4 7.4 5l3 .9c6.1 1.9 10 4 10 10-.1 8-7.9 11.1-14.9 11.1m19.2-36.2h12.4c2.3-.1 4.7 0 7 .4 4.3 1 7.6 3.8 7.6 8.6 0 4.6-2.9 6.9-7.1 8 4.8.9 8.4 3.3 8.4 8.6 0 8.1-8 9.9-14.2 9.9h-14zm12.4 14.8c3.4 0 6.9-.7 6.9-4.8 0-3.7-3.2-4.7-6.4-4.7h-5.4v9.5zM266 55c3.6 0 7.1-.8 7.1-5.2s-3-5.2-6.7-5.2h-6.1V55zm35.2 6c-11.5 0-16.6-7.3-16.6-18.2s5.7-18.8 17-18.8c7.1 0 14 3.2 14.2 11.2h-8c-.4-3.6-2.8-5.4-6.2-5.4-7 0-9.1 7.5-9.1 13.2s2.1 12.3 8.8 12.3c3.5 0 6.1-1.9 6.6-5.5h8c-.8 8.2-7.3 11.2-14.7 11.2%22/%3E%3C/svg%3E\", ar: 3.716, mono: false },\n \"imile\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 id=%22Layer_1%22 version=%221.1%22 viewBox=%22112 310 856 460%22%3E%3Cdefs%3E%3Cstyle%3E.st1%7Bfill:%230032a0%7D%3C/style%3E%3C/defs%3E%3Cpath d=%22M618.99 684.65h-21.53v64.79h18.97c6.74 0 12.27-1.17 16.42-3.48 4.18-2.32 7.29-5.99 9.24-10.9 1.93-4.87 2.91-11.36 2.91-19.29 0-10.22-2.2-18.04-6.54-23.25-4.36-5.22-10.91-7.87-19.46-7.87Zm15.17 31.12c0 8.7-1.31 15.07-3.9 18.93-2.55 3.81-6.71 5.74-12.37 5.74h-9.6v-46.79h10.34c5.36 0 9.33 1.77 11.78 5.25 2.49 3.53 3.76 9.21 3.76 16.87ZM673.04 702c-6.79 0-12.22 2.18-16.12 6.49-3.89 4.29-5.87 10.28-5.87 17.78s1.96 13.46 5.82 17.69c3.87 4.24 9.34 6.4 16.26 6.4 4 0 7.72-.83 11.06-2.46 3.35-1.64 5.96-3.95 7.76-6.88l.19-.3-5.63-5.42-.3.38c-3.18 4.07-7.43 6.13-12.62 6.13-3.64 0-6.53-1.03-8.6-3.07-1.99-1.96-3.26-4.87-3.78-8.65h32.45v-3.91c0-7.56-1.83-13.54-5.45-17.77-3.63-4.25-8.74-6.41-15.17-6.41m-.36 8.27c3.57 0 6.41 1.09 8.45 3.24 2.04 2.16 3.08 5.19 3.08 9.01v.2h-23.09c.46-3.91 1.66-6.98 3.58-9.13 1.97-2.2 4.66-3.32 7.98-3.32M720.44 741.75c-1.82.76-3.36 1.15-4.58 1.15-1.45 0-2.49-.35-3.1-1.04-.62-.7-.94-1.96-.94-3.73v-57.32h-9.92v57.32c0 3.99.93 7.05 2.76 9.1 1.84 2.06 4.6 3.11 8.18 3.11 3.79 0 6.94-.89 9.39-2.64l.24-.18-1.58-5.99-.47.19ZM729.86 702.91h9.92v46.53h-9.92zM734.77 684.37c-1.99 0-3.6.56-4.78 1.67-1.18 1.12-1.78 2.64-1.78 4.52s.6 3.4 1.78 4.52c1.17 1.11 2.78 1.67 4.78 1.67s3.61-.56 4.82-1.67c1.21-1.12 1.83-2.64 1.83-4.52s-.62-3.4-1.83-4.52c-1.21-1.11-2.83-1.67-4.82-1.67M769 736.9l-11.92-33.99h-10.26l17.87 46.53h8.64l17.86-46.53h-10.35zM814.48 702c-6.79 0-12.22 2.18-16.12 6.49-3.89 4.29-5.87 10.28-5.87 17.78s1.96 13.46 5.82 17.69c3.87 4.24 9.34 6.4 16.26 6.4 4 0 7.72-.83 11.06-2.46 3.35-1.64 5.96-3.95 7.76-6.88l.19-.3-5.63-5.42-.3.38c-3.18 4.07-7.43 6.13-12.62 6.13-3.64 0-6.53-1.03-8.6-3.07-1.99-1.96-3.26-4.88-3.78-8.65h32.45v-3.91c0-7.56-1.83-13.54-5.45-17.77-3.63-4.25-8.74-6.41-15.17-6.41m11.16 20.52v.2h-23.09c.46-3.91 1.66-6.98 3.58-9.13 1.97-2.2 4.66-3.32 7.98-3.32 3.57 0 6.41 1.09 8.45 3.24 2.04 2.16 3.08 5.19 3.08 9.01M867.53 702c-3.66 0-6.89.9-9.6 2.68-2.33 1.53-4.14 3.6-5.39 6.16-.01-2.7-.14-5.24-.37-7.53l-.04-.39h-9.36l.04.47c.18 2.23.27 5.96.27 11.11v34.95H853v-22.26c0-3.08.65-5.95 1.92-8.52s3.03-4.63 5.24-6.13c2.2-1.49 4.62-2.25 7.2-2.25 1.76 0 2.45.09 2.71.17l.56.16v-8.23l-.34-.08c-.82-.19-1.75-.28-2.75-.28ZM903.55 702.91l-9.93 32.18-11.17-32.18h-10.64l17.16 43.36c-1.84 4.77-3.78 8.23-5.78 10.28-1.97 2.03-4.42 3.06-7.26 3.06-1.7 0-3.18-.24-4.41-.7l-.6-.23v8.01l.33.08c2.22.55 4.22.84 5.95.84 9.11 0 15.82-5.78 19.95-17.18l17.1-47.52h-10.72ZM177.13 498.76v79.92c0 17.18-13.99 31.17-31.17 31.17s-31.3-13.99-31.3-31.17v-79.92c0-17.18 13.99-31.3 31.3-31.3 8.52 0 16.38 3.46 22.11 9.19 5.59 5.73 9.06 13.59 9.06 22.11%22 class=%22st1%22/%3E%3Cpath d=%22M177.13 418.83v79.79c0 17.32-13.99 31.3-31.17 31.3s-31.3-13.99-31.3-31.3v-79.79c0-17.18 13.99-31.17 31.3-31.17 8.52 0 16.38 3.46 22.11 9.19 5.59 5.59 9.06 13.45 9.06 21.98%22 class=%22st1%22/%3E%3Ccircle cx=%22145.91%22 cy=%22343.62%22 r=%2231.24%22 class=%22st1%22/%3E%3Cpath d=%22M177.13 498.76c0 8.66-3.46 16.38-9.06 22.11-5.73 5.59-13.59 9.06-22.11 9.06-17.32 0-31.3-13.85-31.3-31.17 0-8.52 3.46-16.38 9.19-22.11s13.45-9.19 22.11-9.19 16.38 3.46 22.11 9.19c5.59 5.73 9.06 13.59 9.06 22.11%22 style=%22fill:%233ccbda%22/%3E%3Cpath d=%22M392.62 609.86h-45.66l-52.47-148.19v148.19h-63.68V329.5h66.48l95.32 280.36Z%22 class=%22st1%22/%3E%3Cpath d=%22M442.28 329.5h66.48v280.36h-63.68V461.67l-52.47 148.19h-45.66l95.32-280.36ZM562.43 409.6h56.87v200.26h-56.87zM682.58 599.85c-9.61-9.34-14.42-22.83-14.42-40.45V312.68h56.87V560.6c0 9.61 5.87 14.42 17.62 14.42 6.67 0 14.55-1.86 23.63-5.61l8.41 29.64c-12.81 9.88-29.78 14.82-50.87 14.82-17.89 0-31.64-4.67-41.25-14.02ZM965.34 530.56H827.56c2.4 12.01 7.41 20.97 15.02 26.83 7.61 5.88 17.95 8.81 31.04 8.81 11.48 0 21.49-1.86 30.04-5.61 8.54-3.74 17.08-10.14 25.63-19.22l30.44 28.84c-7.75 13.08-19.82 23.63-36.25 31.64-16.42 8.01-34.24 12.01-53.47 12.01-31.51 0-56.21-9.14-74.1-27.44-17.89-18.29-26.83-43.59-26.83-75.9s8.94-58.2 26.83-76.9c17.89-18.69 42.46-28.04 73.69-28.04s53.33 9.28 70.29 27.83c16.95 18.56 25.43 44.13 25.43 76.7v20.43Zm-56.07-40.46c0-11.74-3.61-21.03-10.82-27.83-7.21-6.81-17.09-10.21-29.64-10.21-11.21 0-20.43 3.54-27.64 10.61-7.21 7.08-12.01 17.02-14.42 29.84h82.51v-2.4ZM590.87 324.49c17.45 0 31.6 14.15 31.6 31.6s-14.15 31.6-31.6 31.6-31.6-14.15-31.6-31.6 14.15-31.6 31.6-31.6%22 class=%22st1%22/%3E%3C/svg%3E\", ar: 1.861, mono: false },\n \"jtexpress\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.63 0 998.75 209%22%3E%3Cg fill=%22red%22%3E%3Cpath d=%22M149.56 0h60.17c-15.74 69.29-31.6 138.55-47.44 207.82-53.78-.05-107.56.1-161.34.06 7.71-13.74 14.56-27.94 21.99-41.82 29.62.14 59.24.03 88.86.05C124.4 110.75 136.86 55.34 149.56 0m90.83 0h134.05c-10.56 19.06-20.98 38.2-31.6 57.24.02-5.07 1.03-10.15.33-15.19-1.03-5.79-6.09-9.84-11.33-11.84-9.46-3.61-20.81-3.55-29.5 2.08-11.92 7.26-17.2 23.7-11.15 36.4 5.61 11.14 13.97 20.6 22.57 29.52a317 317 0 0 0 33.23 29.24 23 23 0 0 0 4.07-7.44c2.91-8.48 4.75-17.29 6.45-26.08q20.77 5.93 41.54 11.89c-2.61 20.81-10.83 40.68-22.36 58.11 11.96 14.61 23.97 29.19 35.92 43.81-18.17.04-36.33-.02-54.49.03-3.93-4.09-7.7-8.33-11.63-12.41-18.28 8.5-38.43 12.66-58.52 13.31-23.29.34-47.55-4.97-66.47-19.1-10.68-10.48-16.99-25.92-15.08-40.96 1.47-12.06 7.38-23.11 14.69-32.63 9.51-12.22 21.35-22.51 34.22-31.06-14.01-15.65-23.53-36.72-20.95-58.04 1.83-9 3.98-17.93 6.01-26.88m19.88 138.34c-3.3 5.23-4.21 12.08-1.4 17.72 4.84 9.88 15.32 16.49 26.25 17.08 12.99.81 25.67-3.87 36.81-10.19-12.83-15.18-25.49-30.5-38.44-45.56-8.41 6.12-17.76 11.78-23.22 20.95%22/%3E%3Cpath d=%22M405.16 0h243.61c-4.7 4.53-9.26 9.21-13.92 13.77q-30.34-.05-60.67.01c-2.54 2.54-5.11 5.04-7.64 7.59 20.24.02 40.48-.02 60.72.02-3.96 3.57-7.31 8.09-11.63 11.08-20.3.21-40.61.07-60.91.06q-3.96 3.76-7.78 7.64c20.46.04 40.92 0 61.38.02q-8.32 8.34-16.7 16.61c-22.34.02-44.68.05-67.03-.02-12.67 50.32-25.09 100.7-37.71 151.04-19.59-.07-39.18.12-58.76-.1 11.83-50.46 25.07-100.58 37.51-150.9-30.51-.02-61.03.02-91.54-.02 10.39-18.92 20.59-37.94 31.07-56.8M889.2 138.19c4.89-7.7 13.89-11.85 22.72-12.95 8.51-.94 17.5-.27 25.24 3.68-1.82 4.86-3.68 9.7-5.45 14.57-6.69-3.04-14.53-4.87-21.71-2.52-4.16 1.26-7.57 6.15-5.31 10.38 2.65 4.41 7.7 6.42 11.92 9 6.43 3.45 12.81 8.45 14.83 15.79 2.1 8.77-.67 18.77-7.58 24.72-5.88 5.19-13.72 7.38-21.37 8.14h-7.78c-6.73-.68-13.6-1.97-19.37-5.7l5.86-14.39c7.19 3.88 15.62 6.17 23.79 4.67 4.19-.79 8.44-3.99 8.51-8.6.32-4.75-3.91-7.85-7.56-9.96-6.22-3.48-12.93-6.85-17.1-12.87-5-7.02-4.06-16.9.36-23.96m61.94-.04c4.91-7.7 13.91-11.82 22.74-12.92 8.5-.93 17.46-.23 25.2 3.68-1.82 4.86-3.69 9.7-5.45 14.58-6.12-2.81-13.05-4.44-19.75-3.11-3.45.72-7.01 2.96-7.81 6.6-.72 2.72.73 5.46 2.79 7.18 5.15 4.42 11.79 6.62 16.96 11.02 3.91 3.22 7.07 7.62 7.91 12.7 1.23 8.07-1.29 16.88-7.4 22.46-5.89 5.55-14 7.86-21.87 8.66h-7.8c-6.75-.68-13.63-1.97-19.42-5.7l5.88-14.39c7.21 3.9 15.67 6.18 23.86 4.66 4.14-.8 8.33-3.98 8.43-8.53.35-4.72-3.81-7.86-7.45-9.96-6.22-3.5-12.95-6.85-17.15-12.87-5.07-7.03-4.13-16.97.33-24.06m-391.76-11.96c16.18 0 32.35-.04 48.53.02-1.01 4.97-1.96 9.94-2.94 14.91h-30.82c-1.08 5.82-2.41 11.59-3.27 17.44 9.66-.14 19.33-.02 29-.06q-1.38 7.34-2.79 14.67c-9.7.04-19.41 0-29.12.02-1.24 6.58-2.59 13.13-3.7 19.73 10.86-.1 21.72-.02 32.58-.04l-2.8 14.93h-50.19c5.14-27.21 10.36-54.41 15.52-81.62m56.21-.01 18.53.01c3.06 9.57 6.23 19.13 8.64 28.9 1.12-.72 1.63-1.97 2.25-3.09 4.62-8.88 10.2-17.21 15.34-25.79 7-.05 14-.02 21.01-.02q-14.92 20.05-29.86 40.06c5.18 13.87 10.45 27.7 15.65 41.56-6.24-.02-12.48.06-18.72-.05-3.33-10.11-6.92-20.15-9.9-30.37a2578 2578 0 0 1-18.03 30.36c-7.06.14-14.13.03-21.19.06 10.16-13.97 20.55-27.78 30.61-41.83-4.88-13.22-9.55-26.53-14.33-39.8m75.28 1.54c9.93-2 20.24-2.83 30.31-1.47 8.21 1.14 16.8 5.46 20.08 13.51 4.28 11.17-.13 24.74-9.72 31.75-9.39 6.95-21.78 8.14-33.09 6.94l-5.58 29.37c-5.71.02-11.42-.06-17.12.04 4.88-26.74 10.1-53.43 15.12-80.14m14.89 12.35c-1.53 8.05-3.1 16.1-4.61 24.16 6.56 1.15 14.09.82 19.29-3.85 4.81-4.1 6.69-12.28 2.41-17.38-4.44-4.45-11.4-3.56-17.09-2.93m53.83-12.35c8.64-1.78 17.51-2.4 26.31-2 7.65.49 15.85 2.33 21.4 7.99 5.4 5.55 5.9 14.38 3.16 21.32-2.9 7.27-9.84 12.1-17.11 14.33 3.94 2.19 6.32 6.27 7.14 10.61 1.84 9.21 1.46 18.75 3.88 27.86-6.01-.04-12.02.01-18.02-.03-1.53-7.22-1.81-14.61-2.69-21.92-.45-3.51-1.69-7.49-5.1-9.18-3.41-1.55-7.27-.95-10.89-1.08q-3.06 16.1-6.08 32.19c-5.8.03-11.6-.03-17.39.04 5.02-26.73 10.25-53.42 15.39-80.13m14.89 12.39c-1.28 7.49-2.87 14.92-4.26 22.39 6.33.02 13.46.65 18.7-3.67 4.78-3.55 6.93-11.61 2.4-16.18-4.55-3.98-11.28-3.58-16.84-2.54m55.99-13.92h48.5q-1.44 7.47-2.91 14.93l-30.84.01c-1.11 5.79-2.26 11.57-3.36 17.36q14.53.02 29.1.01-1.37 7.35-2.79 14.68-14.56.01-29.11 0a3257 3257 0 0 0-3.76 19.7h32.63q-1.39 7.47-2.81 14.94h-50.18c5.15-27.22 10.36-54.42 15.53-81.63%22/%3E%3C/g%3E%3C/svg%3E\", ar: 4.779, mono: false },\n \"mastercard\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1000 618%22%3E%3Cpath fill=%22%23EB001B%22 d=%22M308 0a309 309 0 1 0 2 0z%22/%3E%3Cpath fill=%22%23F79E1B%22 d=%22M690 0a309 309 0 1 0 2 0z%22/%3E%3Cpath fill=%22%23FF5F00%22 d=%22M500 66a309 309 0 0 0 0 486 309 309 0 0 0 0-486%22/%3E%3C/svg%3E\", ar: 1.618, mono: false },\n \"mercadopago\": { src: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARwAAABKCAMAAABeihuMAAAAdVBMVEVMaXEJAIAJAIAHAIEJAH8JAH8JAIALAIMJAH8JAH8JAH8KAIAKAH8JAH8JAH8JAH8KAID///8AvP8PEIomKZdESafp6PQIJZkGP6sBnOoCh9x/gMEFVrvW1ev29vsAtfthZbUDdtC+u96WlcypqNQEZ8YBq/T2IV9RAAAAEHRSTlMAPcQdoLJNDnWO1Cz44u5ezseTAgAAAAlwSFlzAAALEgAACxIB0t1+/AAADNNJREFUeJztXNeSozoQJZlom/YCTjin///EW1J3C0kI7Amerbm152XKjMDoqLNa9rx/+Ic3I0nCMCwQYRgmiferERbFd8wg8cssmEEf8yBK49D7jYjnAOB/8SFJnOVERbVar3e73e5+3+126/WqouuzqPx1BIVT+Co5RYrErNb37eb4p4fH9rxbIUHZV1fhZ5HKt/78O4coMqvd1kGLjs15LYRoHv0ifrIvkRNPhCKtnxGjCJISlKfJ/5+cJBXmd719jRjFTwUwzcL/NzlJOgdYnV+UGR3b9Ufo8bPJZMK2qkijySSLTclL4jSKoqxv78Myy6KSPhRlFkVZat6bxFkkHm/eW6TicYlNTphGQZ4HLziWcgaw+pjQaOIj6HlJuWJ2grnveeGEg4NUm18mXYrAxFjjMpAXM3wOfjBHJZnw1IiASfR8GjpNDXIK/nIAiEbpKYIvUMP0zOKn3ODbIUq/mwpMEj0SUUAmBMJcu5RERuAVETc8xHhkqbiGSCMn7i6L1RlRtXQK1fnPOI6PzeYx8v/NCiBKXnGl6o0cEzTfuWOnmOtXOrHRb7avyntj/QqGtL59WYjVEDthALAbtTWbu3TbMvY5DzJ0rmA2auwKGIEUu8LiBgC1I+ki9cyUv+5mnu+UnzFNPC8xVgAhFLp3eeZeVyHdYxp1PGPEV9U1MrS6D/DzWAFo1qMH0vJZoMl/zh/ybvGnmR8Wwj8I8ZIvralRpjiOYp/sEATq6ZPC85IS740Vj/MsTZVg+ep5Ez8M2Xp1GqwBdXI96Ka2K4DqdNsvBA77ayMYWm+cNG4rpR8OJPieYpULYgQ/oFiEnucjNwUKNI4RbIckClHs+wXNbIoWjqYZep6cx0zX35IFJ5AMl4oceh4tJD3PITopQHtrkB+XQOwA6utCx0EOX/VGy4gHqs622kC5xznR6uMH5KTkdWbhK5RQ4FznSFoy1VeaPsVeOBege5GHlL5ySs6IxMin54kny0fg4ij3ppAB3BaLxfJa95KGx3Yns8z2sLCxP9FoEqDHFo1S3S73Fa2Tcx3U0nq5UiX+kNLfbglRdBLWNnp7X8kKziAQMB0lCSb7btYYItKn56l7kKueyKfIjcDyKuUHVrvzZrPZUmoJ1aVHzaJjE6CqKrLV9UkO3VcwcZMj35T/F+nvI81FxpoRM3AOhedJ5ZgaU2GSLYRxmk3YpKVkhxQL+EAfv0ewTlyCvlKMsuNGzvh2oinTbCuo0NY4+bm10v5IW326qoH7asDuPCEnYlNgISZjxS+fGTphMKPqLEwOsqFCPIpzEoteMobmw4opXF1Truu6aS+HQw31Ul0XlxudSrq+XC4tvdtXbp/1lJxilBzjTpd0pnYckJJidiOQnNCWFLzReFgyg9OgXCwWhwYq5ubQsjS5tczEjR3Oj5LTRZjzCVv22Wvk4G3G0yKo+7a2Q9Pp1L4WxvZ2O1UA7eI52p4Cv0QOvXRqorDIGVArrPLBPCoLdowsOaFd7LLUyKFWPsCwQVksTh03V4AKFWp5AmjGGEUcapdiPSXHG5AJkxzLIBe+QEiccUJF5LAF1r8UfBIoxRn6P2M9g1EhaAFIgw6CEGV7LhXUY5zSKFdM9Zwcy5W7yaE0gaeGwhGbtpeDwMh05RgShuTE1PqZDh+/oxoRgb3yY0KldLO9r4fcu47GEY4/Jwfnko6TYwaBZKdCJIlVgwOZUktBVCzJgsXpFClk/LLg3NgeXXvufNmYbA2Q2xeA5+RQ+kCviVQFNjmcoslRCdIQMB+JKVxEJCqbjx8iJUIYrVKaogdOxajgLJYVVKe2FRa4UynG6QWz3PQF4Dk5XHUI0jimLRDBgUUOhcgwScuMsnVf5Z2JCHemymZT6pWnccnJa9F5NpGPRhQA6NlDNurGF1I+BOp+aCMt9DOzfOv7kxfI6ZcsxFWLHD1H7wZRWjnNVXVDiFa/NuGu/ZhuIGd7O0zPrW3bgUHCLPcEysCh6sLz18npFbuk5NvkWCU/Ug97c5bqqa4Hel5ojc71l00AnnvkEexHMwuBppfmvkKOLNhqyyzf2SbHS7T6r6o/dsVCgTl/u2/QoGqVosKnyY2xkCFUXTb0GSyfOa22569eIkcV0gGmXDrvkaMX2Lv6esjmw9xKS1SZa2psQKrvASunR6NWn27jujGGQ2NmrYteBjuQnD9HEovI2Nqw6Q3yyzRN/aR/rTQv0vWy7LVXyO/pj/ZiWGFNoj7dPqtfJ6fTOlxaSu1dKcSvQAxnWc2Ss2iunxOgFmyXd7hhFaNa37dDJZffQQ6WfZGg5lPyczNcOtZPAdZ3USB82AWS30eOLP7eBT/V6RPic+lc+kUEjFoTwq8m525sqkh+JD372+UDQiQyrb0ohQk7U+20LZ7NbyZnZ2/BrEUxfS+NabtYXk9DAaDAkkoY6NJvot5eWe0Zv9rmrJ373QD1qQFA4zESyDTKUQmX7mrPuP9eb+VD5dik2lbS/exFunltG4D9YcgQNZ2jOgE49vjWzhq4QOjHcdyroyaF7/cikTAuy7LfnPlSIPR5FM4JHSlVb1FmWhA2tnFH0k3nqGrNuisM7EH4EUX500jjp4goyNe7DBPOua3esXgwtP0mhNAzOtKINnK2F9KnGiqxP359ws7V8aytc9vc7B2xSnE849DRjCLaeVx51eD26pcAUPV3xx9QGfM/tYvF4Qrg1q2G3XjrIGdtltZoSax0OnOWIGahVppicAXMzsiNdPq7kINLF1ZSSpYmGa2ZJVBPgTTFspy8r/oq+tB3FBV6VRSZOtu9MtifZFcgaLfHkBspO28gJwNY9UVnKy1xZerRnpSNBUY5MbGzdRK7yH3Pt3PtSfLOUj6ZkMrI6m6gqnJkZObd2Okk47GSBS5pRe4S3jdBpOUO0dnK1MgkZ2kWtg61ysYPuB3c73zauOrkVI5CBaHJp9xfgtVuUpqQx0qTwqUXoW0zzSw5ir/fhRygcvScHM+7tZVOXkTIo/VaLCvFTgPrncyk+han2xZiGG0nZITzbgNOu1pQnZj2B6jWmfJY3k2g629wWWLp+uog8LCKfC3UYsezk569Yqd294TdnbagNLtiUCtCr5D7mkQlN1agYLHwIWX9vRt1/bshtyeMBEthJ2PjCyuXsM/7WhgeLh5eqM7VulweKpVjPc3WJLs9RASHvOPA3VuF3caE/y9Gtiq/CXJxnAt/XIu+G9MMH2q4LE4sMTeA00206LjufwhL5AiPM1fLEJrTIp3kmusukLmp2QaR09/uMtZPu8/fLDqVs7nvj+yRVD0WElc4CYZInGRrF1Qubo6yQOQ/ba7n/Wy7qC7JCUxTK+1wTmRoFhiNzjtCHfl2A+z8OR53MorZN7pDX9YU81yhWrubLJEblx1gY2uTo+2eTGducvIfJwdl17n6PMu6UeHxRarZspLsLOsBcyXbbTt/8ork0FY1TIOsTDI3OZKEnNowtDoR3vkObtgVDvWuH+8yjKHwuEGN2lfQiF1iRwQpsKmGvWtmxmz8kXw65tiZYZB5qOp74zYJnoBN1neCAndHCkrYbDbUiiJ2gC/dNvFAxzvGkO6GZ9vxsueZ6d2w7KXMM3X4njl7uNIUvnckEFqcuhowPAJ3kVFQp2klAp7qfD+7xx93+LixblJFA8Vz1o4dR8i+QTJykvP7Kk/YtXG/BVQsGDsWcsbNli3WmQea17nXXb57Mvpd1PiBpjcyyaEeFLYydFyDEqpctdKkLrbfx86Y8BzPuzvuKTw2rgOxiMf6WRGBv2qW+j6dbBCKg7ELlikoo1IyPc1iP+aKhgj21KGFJPEpQX9DgNx75RGReAFkvEfkxnXYRdLASXmp9rRjR92GyOmfgpm/9QRld1rr0/Q85LEHXMfhoAPJmdsT4/MaCtRuYQxkcnotJVwEexe0E3Prz5zW25AdfmYcyXfP7fNxVnw86b8W5lyYQ5nsvJsb7aylMLxDh6menMaSGD+LRjEMHyeCoHAUlvOudhXS9XmpgkD7bSc/cSqZ7aPEylWhcavTma2wxJNTjCp9iLNJoA4ICxRZkM9msyBKzR2bkI71JqYH52O9XOd4N3iVCKvd8GlFFhl1sKa3QTAAK7f6AMqR0PJHwCeMFUQbiVuExPEqkxitzex7yAkjAT5wlr+rWPw6tLPaHVar9e5+P5+32+35fL7rv4OiYfbKofIPSY5WQ6adKmcy+4Pwu666j6A74P595HCncJTySfq/qFWEhCuVL2OevWpFkJxXjaj9Hn9bcBBFd8j4KT70AzrZh4J9s3N2+FT8jyPpfnhphJiPutI0CCYfyKDpRDXJzduDvQ8h8dPI+ZNdP/ajXfiTNVJsxn+J468hScRPvckDX74vf/DtJ3VfNO34/o9+5T94Y/gPvUlwdceZIU0AAAAASUVORK5CYII=\", ar: 3.838, mono: false },\n \"oxxo\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 version=%221.0%22 viewBox=%2235.43 35.45 885.83 448.9%22%3E%3Cpath d=%22M-792.46-878.05c0-29.6 23.78-53.62 53.13-53.62H40.12c29.33 0 53.13 24.02 53.13 53.62v339.17c0 29.6-23.8 53.6-53.13 53.6h-779.45c-29.35 0-53.13-24-53.13-53.6z%22 style=%22fill:%23fff;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3Cpath d=%22M-791.84-883.46c0-27.22 21.88-49.3 48.86-49.3h787.5c26.99 0 48.85 22.08 48.85 49.3v1.57h-885.21zM93.37-534.4v1.22c0 27.23-21.86 49.31-48.84 49.31h-787.5c-26.99 0-48.87-22.08-48.87-49.3v-1.23z%22 style=%22fill:%23fbb110;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3Cpath d=%22M-179.2-708.84c0 68.92 55.35 124.79 123.66 124.79 68.29 0 123.67-55.87 123.67-124.8s-55.38-124.8-123.67-124.8c-68.3 0-123.66 55.87-123.66 124.82m-589.6 0c0 68.92 55.37 124.79 123.68 124.79 68.29 0 123.67-55.87 123.67-124.8s-55.38-124.81-123.67-124.81c-68.3 0-123.69 55.87-123.69 124.82m862.17 150.8h-609.75c10.99-7.78 21.22-18.43 32.39-32.8l62.11-80 27.13 34.6 30.19-40.52-26.4-33.9 63.22-81.44c20.07-25.83-18.31-56.19-38.4-30.36L-422-750.47l-56.8-72.93c-20.1-25.76-58.42 4.67-38.32 30.46l64.2 82.3-69.46 89.44c-24.68 31.78-49.31 60.92-98.2 63.17h-171.26v-300.24h606.54c-10.43 7.7-20.27 18-30.94 31.76l-62.1 79.96-27.15-34.57-30.16 40.52 26.4 33.89-63.25 81.43c-20.05 25.83 18.34 56.19 38.4 30.36l55.89-71.96 56.8 72.91c20.1 25.78 58.42-4.65 38.32-30.43l-64.2-82.34 69.46-89.41c22.67-29.23 45.32-56.22 86.8-62.12h184.4zm-222.94-150.81c0-41.28 33.15-74.73 74.03-74.73s74.02 33.45 74.02 74.73c0 41.25-33.13 74.7-74.02 74.7s-74.03-33.45-74.03-74.7m-589.58 0c0-41.28 33.15-74.73 74.03-74.73 40.87 0 74.02 33.45 74.02 74.73 0 41.25-33.15 74.7-74.02 74.7-40.88 0-74.03-33.45-74.03-74.7%22 style=%22fill:%23e70020;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3C/svg%3E\", ar: 1.973, mono: false },\n \"paquetexpress\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2217 27 155 34%22%3E%3Crect x=%2217%22 y=%2227%22 width=%22155%22 height=%2234%22 rx=%223%22 fill=%22%23002a52%22/%3E%3Cg fill=%22%23FFF%22 fill-rule=%22evenodd%22%3E%3Cpath d=%22M35.6 46.8V30.3h3.3c1.7 0 3 .4 3.9 1.2.8.8 1.3 2 1.3 3.6s-.4 2.8-1.3 3.6c-.8.9-1.9 1.3-3.4 1.3h-.7l-.1 6.8h-3zm3-9.3h.4c.7 0 1.2-.2 1.5-.6.4-.4.6-1 .6-1.7 0-.8-.2-1.4-.5-1.8-.4-.4-.9-.5-1.6-.5h-.4v4.6zm26.6 9L63.5 48 62 46.3c-.3.2-.7.4-1.1.5-.4.1-.9.2-1.4.2-1.8 0-3.2-.8-4.2-2.3-.9-1.5-1.4-3.6-1.4-6.4 0-2.5.5-4.5 1.5-6s2.3-2.2 4.1-2.2c1.8 0 3.1.7 4.1 2.3 1 1.5 1.5 3.6 1.5 6.4 0 1.3-.1 2.5-.4 3.5-.2.9-.6 1.7-1.1 2.3l1.6 1.9zm-5.2-6l1.5 1.7c.1-.4.2-1 .3-1.5.1-.6.1-1.3.1-2.1 0-1.8-.2-3.1-.6-4-.4-.9-1-1.4-1.8-1.4-.9 0-1.5.5-1.9 1.4-.4.9-.6 2.4-.6 4.3 0 1.6.2 2.9.6 3.8.5.8 1.1 1.3 1.8 1.3.1 0 .2 0 .3-.1h.2L58.3 42l1.7-1.5zm16.5-10.2v10.4c0 1.3 0 2.2-.1 2.7s-.2 1-.4 1.3c-.4.8-.9 1.4-1.7 1.8-.7.3-1.6.5-2.8.5-1.1 0-2.1-.2-2.8-.5-.8-.4-1.3-1-1.7-1.8-.2-.4-.3-.8-.4-1.3 0-.6-.1-1.5-.1-2.7V30.3h3.2v10.6c0 1.4.1 2.3.4 2.7.3.3.7.5 1.4.5s1.2-.2 1.4-.6c.3-.4.4-1.2.4-2.6V30.3h3.2zM78.6 46.8V30.3h6.7v3.1h-3.7v3.3h3.3v3h-3.3v3.9h3.7v3.2zM89.4 46.8V33.4H87v-3.1h8.1v3.1h-2.5v13.4zM96.5 46.8V30.3h6.7v3.1h-3.7v3.3h3.3v3h-3.3v3.9h3.7v3.2zM111.5 46.8l-1.3-3.3-.3-1.2c-.1-.4-.2-.8-.3-1.3-.1.5-.2.9-.3 1.3-.1.5-.2.8-.3 1.2l-1.1 3.3h-3.6l3.7-8.3-3.4-8.2h3.4l1.2 3.5c0 .2.1.4.2.7.1.4.2.8.3 1.3.1-.5.1-.8.2-1.2.1-.3.2-.6.3-.8l1.2-3.5h3.3l-3.4 8.2 3.6 8.3h-3.4zm4.4 0V30.3h3.3c1.8 0 3.1.4 3.9 1.2.9.8 1.3 2 1.3 3.6s-.4 2.8-1.2 3.6c-.9.9-2 1.3-3.5 1.3h-.7v6.8h-3.1zm3.1-9.3H119.3c.7 0 1.2-.2 1.6-.6.3-.4.5-1 .5-1.7 0-.8-.2-1.4-.5-1.8-.3-.4-.9-.5-1.6-.5h-.2-.1v4.6zm6.6 9.3V30.3h3.3c1.8 0 3.1.4 4 1.1.8.8 1.2 1.9 1.2 3.6 0 1.1-.2 2.1-.6 2.8-.5.7-1.1 1.2-1.9 1.5l3 7.5h-3.3l-2.6-6.8v6.8h-3.1zm3.1-9.3H129c.7 0 1.2-.2 1.6-.6.3-.4.5-1 .5-1.8s-.1-1.3-.5-1.7c-.3-.4-.8-.5-1.5-.5h-.3-.1v4.6zM136 46.8V30.3h6.7v3.1h-3.6v3.3h3.3v3h-3.3v3.9h3.6v3.2zM144.6 46.3v-3.5c.4.4.8.7 1.2.8.4.2.8.3 1.2.3.5 0 1-.1 1.3-.4.3-.3.4-.7.4-1.2 0-.7-.4-1.3-1.2-2.1-.3-.2-.4-.3-.5-.4-1-1-1.7-1.8-2.1-2.5-.3-.7-.5-1.5-.5-2.4 0-1.5.4-2.6 1.2-3.5.7-.9 1.8-1.3 3-1.3.5 0 .9.1 1.3.2.5.1.9.3 1.4.6v2.9c-.6-.3-1-.4-1.3-.6-.3-.1-.6-.1-.8-.1-.5 0-.9.1-1.2.4-.3.3-.4.7-.4 1.2 0 .4.1.8.3 1.2.3.4.8.9 1.6 1.6 1 1 1.7 1.8 2 2.4.3.6.5 1.4.5 2.3 0 1.5-.4 2.7-1.2 3.5-.9.9-2 1.3-3.4 1.3-.5 0-1 0-1.5-.2-.4-.1-.9-.3-1.3-.5m8.4 0v-3.5c.4.4.8.7 1.2.8.4.2.8.3 1.2.3.5 0 1-.1 1.3-.4.3-.3.4-.7.4-1.2 0-.7-.4-1.3-1.2-2.1-.3-.2-.4-.3-.5-.4-1-1-1.7-1.8-2.1-2.5-.3-.7-.5-1.5-.5-2.4 0-1.5.4-2.6 1.2-3.5.7-.9 1.8-1.3 3-1.3.5 0 .9.1 1.3.2.5.1.9.3 1.4.6v2.9c-.6-.3-1-.4-1.3-.6-.3-.1-.6-.1-.8-.1-.5 0-.9.1-1.2.4-.3.3-.4.7-.4 1.2 0 .4.1.8.3 1.2.3.4.8.9 1.6 1.6 1 1 1.7 1.8 2 2.4.3.6.5 1.4.5 2.3 0 1.5-.4 2.7-1.2 3.5-.9.9-2 1.3-3.4 1.3-.5 0-1 0-1.5-.2-.4-.1-.9-.3-1.3-.5M163.6 46.8v-2.6h.8l.4 1.8.5-1.8h.8v2.6h-.5v-2l-.5 2h-.5l-.5-2v2z%22%3E%3C/path%3E %3Cpath d=%22M26 27h-8v26.7c0 3.5 2.7 6.3 6.1 6.3h146.5v-3.3H31.5c-3.1 0-5.5-2.5-5.5-5.6V27zm3.2 21.6c0 2.7 2.1 4.8 4.7 4.8h136.7v-3.3h-137c-.7 0-1.2-.5-1.2-1.2V27h-3.2v21.6zm19.4-11.5l-.4-2.5-.3 2.5-.7 4.4h2.2l-.8-4.4zm1.4-6.8l3.8 16.5h-3.3l-.6-2.8h-3.2l-.6 2.8H43l3.7-16.5H50zM166.6 46.8h.5v-.5h-.5zM168.1 45.3h.8c.1 0 .2-.1.2-.1V45v-.2c-.1-.1-.1-.1-.2-.1-.1-.1-.2-.1-.4-.1h-.4v.7zm-.5 1.5v-2.6h1.1c.2 0 .4 0 .6.1.1 0 .2.1.3.2 0 .1.1.3.1.4 0 .2-.1.4-.2.5-.1.2-.3.2-.5.3.1 0 .2.1.3.2 0 .1.1.2.3.4l.3.5h-.6l-.4-.5c-.1-.2-.2-.4-.3-.4 0-.1-.1-.1-.1-.1-.1-.1-.2-.1-.3-.1h-.1v1.1h-.5zM170.2 46.8h.4v-.5h-.4z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E\", ar: 4.559, mono: false },\n \"paypal\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1310 439.6%22%3E%3Cpath d=%22M1310 0v328.3h-74.7V0zm-102.2 110.8v218.1h-66.4v-18.8c-8.4 8.2-18 14.4-28.6 18.8a87 87 0 0 1-34.7 7c-15.6 0-30.1-2.9-43.4-8.7-13.3-6.1-24.9-14.4-34.7-24.8-9.9-10.5-17.7-22.7-23.5-36.6-5.5-14.2-8.2-29.5-8.2-45.8s2.7-31.4 8.2-45.3c5.8-14.2 13.6-26.6 23.5-37.1a104.5 104.5 0 0 1 34.7-24.4c13.3-6.1 27.8-9.2 43.4-9.2 12.4 0 24 2.3 34.7 7a88 88 0 0 1 28.6 18.8V111h66.4zm-117.7 158.7c13.6 0 24.7-4.6 33.4-14q13.5-13.95 13.5-35.7c0-21.75-4.5-26.5-13.5-35.7-8.7-9.3-19.9-14-33.4-14s-24.9 4.6-33.9 14c-8.7 9.3-13 21.2-13 35.7s4.4 26.5 13 35.7c9 9.3 20.3 14 33.9 14M861.7 0c19.7 0 36.5 2.8 50.4 8.3s25.6 13.2 35.2 23.1c9.8 10.2 17.5 21.8 23 34.9s8.2 27.2 8.2 42.3-2.7 29.2-8.2 42.3a112 112 0 0 1-23 34.9c-9.5 9.9-21.3 17.6-35.2 23.1s-30.7 8.3-50.4 8.3h-36v111.6h-76V0zm-10.9 149.6c10.2 0 17.9-1 23.5-3.1 5.8-2.3 10.6-5.3 14.3-8.7 7.8-7.3 11.7-17 11.7-29.2s-3.9-21.9-11.7-29.2c-3.8-3.5-8.5-6.3-14.3-8.3-5.5-2.3-13.3-3.5-23.5-3.5h-25.2v82zm-381.1-38.8h82.5l56 104.6h.9L659 110.8h76.4L571.7 439.6h-76l74.7-150.4zm-14.7 0v218.1h-66.4v-18.8c-8.4 8.2-18 14.4-28.6 18.8a87 87 0 0 1-34.7 7c-15.6 0-30.1-2.9-43.4-8.7-13.3-6.1-24.9-14.4-34.7-24.8-9.8-10.5-17.7-22.7-23.5-36.6-5.5-14.2-8.2-29.5-8.2-45.8s2.7-31.4 8.2-45.3c5.8-14.2 13.6-26.6 23.5-37.1a103.5 103.5 0 0 1 34.7-24.4c13.3-6.1 27.8-9.2 43.4-9.2 12.4 0 24 2.3 34.7 7a88 88 0 0 1 28.6 18.8V111H455zM337.3 269.5c13.6 0 24.7-4.6 33.5-14q13.5-13.95 13.5-35.7c0-21.75-4.5-26.5-13.5-35.7-8.7-9.3-19.9-14-33.5-14s-24.9 4.6-33.9 14c-8.7 9.3-13 21.2-13 35.7s4.4 26.5 13 35.7c9 9.3 20.3 14 33.9 14M112 0c19.7 0 36.5 2.8 50.4 8.3s25.6 13.2 35.2 23.1c9.8 10.2 17.5 21.8 23 34.9s8.2 27.2 8.2 42.3-2.7 29.2-8.2 42.3a112 112 0 0 1-23 34.9c-9.5 9.9-21.3 17.6-35.2 23.1s-30.7 8.3-50.4 8.3H76v111.6H0V0zm-10.8 149.6c10.2 0 17.9-1 23.5-3.1 5.8-2.3 10.6-5.3 14.3-8.7 7.8-7.3 11.7-17 11.7-29.2s-3.9-21.9-11.7-29.2c-3.8-3.5-8.5-6.3-14.3-8.3-5.5-2.3-13.3-3.5-23.5-3.5H76v82z%22/%3E%3C/svg%3E\", ar: 2.98, mono: true },\n \"santander\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 version=%221.0%22 viewBox=%224 3.75 391.5 79%22%3E%3Cpath d=%22M-137.26 287.82a17.5 17.5 0 0 0 .55 7.23c.95 2.87 2.27 4.94 7.12 11.25 5.12 6.66 6.76 9.08 7.98 12.53 1 2.83 1.02 4.46.59 7.02 4.49.86 11.84 3.24 16.77 6.2 4.57 2.81 7.9 6.46 9.11 10 .72 2.09.7 5.33-.07 7.36a16 16 0 0 1-3.22 5.2c-5.9 6.46-17.6 11.1-31.67 12.59-3.11.32-10.74.56-13.36.4-18.8-1.1-33.92-7.59-38.22-16.42-1.8-3.67-1.75-6.83.14-10.46 1.55-3 5.82-6.7 10.83-9.4a85 85 0 0 1 14.2-5.43c.24 3.17 6.4 10.74 8.45 13.42 4.46 5.84 6.22 8.62 7.48 10.85.76 1.33 1.18 2.19.97 4.74 0 0 1.72-1.56 2.36-2.87.84-1.71 1.14-3.44.98-5.67-.2-2.68-.65-4.32-1.93-6.94-1.25-2.55-3.03-5.13-6.43-9.3-4.79-5.88-6.56-9.1-7.3-13.3-.8-4.66.5-9.6 3.18-12.02a10 10 0 0 1 1.53-1.04s-.08 1.2-.08 2.57c0 2.88.33 4.38 1.43 6.58 1.38 2.73 3.28 5.28 9.11 12.22 5.16 6.14 6.76 9.26 6.76 13.16v1.88s1.37-1.04 2-2c2-3.01 2.32-7.72.8-11.9-1.05-2.86-2.74-5.46-7.74-11.75-5.1-6.4-7.23-11.53-7.23-15.8s.92-8.35 4.91-10.9%22 style=%22fill:%23fe001e;fill-opacity:1;display:inline%22 transform=%22translate(184.65 -280.17)scale(.98661)%22/%3E%3Cg style=%22fill:%23fe001e;fill-opacity:1%22%3E%3Cpath d=%22M-41.6 350.75c.12-1.43.02-2.84-.14-3.59-.61-2.94-2.79-5.9-5.93-8.08a64 64 0 0 0-6.79-3.51c-5.94-2.75-7.6-3.74-9.09-5.4a7.2 7.2 0 0 1-2-5.38c0-1.55.08-2.01.58-3.1 1.62-3.52 5.65-5.4 10.35-4.8 2.76.35 4.21.97 5.84 2.5 1.7 1.59 2.57 3.43 3.04 6.46l.14 1.71h2.57l-.22-11.75-.85-.21c-.65-.16-4.9-.97-7.16-1.26-3.37-.42-4.73-.47-6.71-.24-3.84.44-7.01 1.9-9.4 4.31a12.2 12.2 0 0 0-3.81 8.4c-.2 3.42.9 6.25 3.34 8.67 2.04 2.03 2.92 2.56 9.24 5.57 8.1 3.85 9.93 4.99 11.16 7.88 1.06 2.51 1.14 5.33.04 7.59-2.82 5.76-11.7 7.26-17.22 2.92a11.4 11.4 0 0 1-4.06-6.61l-.26-1.34h-2.19l.39 11.26s4.2 1.13 6.17 1.33c1.48.16 2.95.45 4.44.45 3 0 4.38.39 7.48-.64 3.2-1.07 10.26-3.2 11.06-13.14m19.71-18.49c3.42 0 6.4 1.5 7.83 3.7a8.6 8.6 0 0 1 1.36 5.06v16.24c0 1.93 1.39 2.55 3.4 1.87l1.51-.58v2.13l-7.48 3.27c-.87.39-1.46-.5-1.88-2.13l-.47-1.57-1.24.98a11.7 11.7 0 0 1-7.52 2.66c-3.23.01-5.34-.43-7.44-3.78a8 8 0 0 1-.26-6.4c.96-2.18 2.86-3.3 10.85-6.39l5.4-2.02v-1.5c0-5.55-1.5-7.26-3.42-8.33-1.55-.86-3.6-.64-5.56.64-1.61 1.06-2.1 2.84-1.27 4.67.64 1.41.42.97.42 1.02l-4.39 2.31s-.76-1.3-.97-2c-1.01-3.3.28-5.17 5.24-7.9 2.59-1.42 4.11-1.95 5.89-1.95m4.06 15.39s-7.03 2.97-8.38 3.65c-1.08.55-2.32 1.53-2.73 2.33a5 5 0 0 0 .21 4.06 5.4 5.4 0 0 0 2.35 2.35c.35.15 1.53.42 2.35.43q2.52.02 5.22-2.18l.98-.81zm22.01-15.39v5.75l1.46-1.39c3.19-3 6.23-4.36 8.58-4.36 5.34 0 10.25 4.7 10.04 11.33v15.38c0 1.71.43 2.78 2.14 2.78h2.77v2.14H14.44v-2.14h2.14c1.7 0 2.35-1.07 2.35-2.78V343.6c0-3.2-1.18-4.8-2.14-5.77-1.28-1.28-2.84-1.64-5.13-1.5-1.77.12-3.6 1.06-5.68 2.75l-1.37 1.1v19.87c0 1.07.43 1.71 1.5 1.71h2.78v2.14H-5.64v-2.14h1.92c1.7 0 3-1.07 3-2.78v-16.45c0-4.27-1.3-5.55-4.92-3.63v-2.29c2.35-.7 6.62-2.84 8.97-4.34zm41.23 31.63c1.93 0 2.38-.22 4.17-1.73l3.52-2.97-.85-1.5-1.57.84c-2.35 1.25-4.2 1.51-6.55.44-2-.9-3.2-4.06-3.2-5.77v-17.3h9.82l1.07-3h-10.9v-9.82h-1.06c-2.57 4.7-6.41 9.18-11.11 11.96v.86h6.83v17.3c0 4.06 1.5 7.05 3.85 8.76a8.6 8.6 0 0 0 5.98 1.93m22.65-31.63c3.42 0 6.41 1.5 7.83 3.7a8.6 8.6 0 0 1 1.36 5.06v16.24c0 1.93 1.4 2.55 3.4 1.87l1.51-.58v2.13l-7.48 3.27c-.87.39-1.46-.5-1.87-2.13l-.48-1.57-1.24.98a11.7 11.7 0 0 1-7.52 2.66c-3.22.01-5.34-.43-7.44-3.78a8 8 0 0 1-.26-6.4c.96-2.18 2.87-3.3 10.85-6.39l5.4-2.02v-1.5c0-5.55-1.5-7.26-3.42-8.33-1.54-.86-3.6-.64-5.55.64-1.62 1.06-2.11 2.84-1.28 4.67.64 1.41.42.97.42 1.02l-4.39 2.31s-.75-1.3-.97-2c-1-3.3.28-5.17 5.24-7.9 2.6-1.42 4.11-1.95 5.9-1.95m4.06 15.39s-7.03 2.97-8.38 3.65c-1.08.55-2.32 1.53-2.73 2.33a5 5 0 0 0 .21 4.06 5.4 5.4 0 0 0 2.35 2.35c.36.15 1.53.42 2.35.43q2.52.02 5.22-2.18l.98-.81zm22-15.39v5.75l1.47-1.39c3.18-3 6.22-4.36 8.57-4.36 5.34 0 10.26 4.7 10.04 11.33v15.38c0 1.71.43 2.78 2.14 2.78h2.78v2.14h-14.75v-2.14h2.14c1.7 0 2.35-1.07 2.35-2.78V343.6c0-3.2-1.18-4.8-2.14-5.77-1.28-1.28-2.84-1.64-5.12-1.5-1.78.12-3.6 1.06-5.7 2.75l-1.36 1.1v19.87c0 1.07.43 1.71 1.5 1.71h2.78v2.14H84.3v-2.14h1.92c1.71 0 3-1.07 3-2.78v-16.45c0-4.27-1.29-5.55-4.92-3.63v-2.29c2.35-.7 6.62-2.84 8.97-4.34zm63.46 27.99v-2.13c-2.35 1.07-3.42 1.07-4.23.52-1.15-.78-1.12-2.23-1.12-2.23v-47h-.64a49 49 0 0 1-10.04 4.9v2.36c1.71-.64 2.99-.98 4.06-.43.7.39 1.07.85 1.07 1.92v15.98l-1.26-.5c-2.51-1.03-3.81-1.26-6.86-1.26-2.55 0-3.08.08-4.6.58-7.02 2.35-11.52 9.21-11.15 17.03.21 4.47 1.5 7.98 4.43 10.48 2.99 2.56 5.55 3.42 8.54 3.42 4.06 0 6.41-.81 9.36-2.81.9-.61 1.75-1.25 1.75-1.25a8.7 8.7 0 0 0 1.5 4.48zm-22.15-.38c-4-1.42-6.9-6.35-7.27-12.33-.47-7.48 3.67-12.71 10.06-12.71 2.69 0 4.75.73 7.23 2.58l1.23.91-.1 19.2-1.38.83a10.4 10.4 0 0 1-6.21 1.83c-2 .07-2.67.01-3.56-.3m45.11 3.69a26 26 0 0 0 6.95-3.1v-2.14c-2.35 1.71-6.08 2.77-9.4 2.78q-5.43 0-8.34-3.2c-2.83-3.16-3.63-5.77-4.12-12.18h22.5s0-3.21-1.28-6.2c-.88-2.05-1.71-3.63-4.06-5.13-2.2-1.4-5.17-2-7.7-2-2.62-.03-3.02.02-4.45.54-6.65 2.43-11.17 9.32-10.62 16.17.54 6.63 4.4 11.94 10.25 14.07 2.59.95 7.47 1.13 10.27.39m-12.28-26.4c1.5-1.49 3.2-2.34 5.98-2.34 2.56 0 4.27.64 5.98 2.35 1.29 1.28 1.93 2.35 2.2 5.98h-16.78c.27-2.56 1.12-4.49 2.62-5.98m32.48-4.92v7.06a23 23 0 0 1 4.05-5.13 7 7 0 0 1 4.92-1.93c1.07 0 3.84.86 3.84.86v6.4h-1.06c-.43-1.7-1.93-2.55-4.06-2.55-2.78 0-4.6 1.12-5.72 2.8s-1.55 2.54-1.55 6.17v14.1c0 1.07.43 1.71 1.5 1.71h2.78v2.14h-14.53v-2.14h1.92c1.7 0 3-1.07 3-2.78v-16.45c0-4.7-1.72-4.49-4.71-3.2v-2.14c2.78-1.07 6.2-2.57 8.76-4.92z%22 style=%22fill:%23fe001e;fill-opacity:1;display:inline%22 transform=%22translate(184.65 -280.17)scale(.98661)%22/%3E%3C/g%3E%3C/svg%3E\", ar: 4.956, mono: false },\n \"scotiabank\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.14 0.09 71.91 10.28%22%3E%3Cpath d=%22M6.73 8.37q.24-.6.23-1.25c.02-.63-.2-1.24-.6-1.72a5 5 0 0 0-2.31-1.23q-.3-.09-.6-.22-.27-.13-.46-.33a.8.8 0 0 1-.2-.55c.01-.3.18-.57.44-.7a2 2 0 0 1 1.68 0q.36.12.69.32l.9-1.8A5 5 0 0 0 3.77.13q-.7 0-1.36.23A3 3 0 0 0 .7 2.06q-.24.6-.23 1.25c.02.68.31 1.32.8 1.8q.7.6 1.6.9l.8.27q.3.12.57.3a1 1 0 0 1 .31.36q.1.2.07.43a1 1 0 0 1-.3.58q-.44.31-.98.27-.61 0-1.18-.28a9 9 0 0 1-.95-.53L.13 9.27a4.8 4.8 0 0 0 4.62.84q.66-.23 1.21-.68.5-.46.77-1.06m5.82-.58a1.57 1.57 0 1 1 0-1.96l1.4-1.41a3.5 3.5 0 0 0-2.62-1.17c-1.96 0-3.65 1.4-3.65 3.55 0 2.16 1.7 3.56 3.66 3.56 1 0 1.96-.42 2.63-1.16zm0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3Cpath d=%22M17.6 3.25a3.56 3.56 0 1 0-.01 7.11 3.56 3.56 0 0 0 0-7.11m0 5.12a1.57 1.57 0 1 1 .02-3.14 1.57 1.57 0 0 1-.02 3.14m8.09-4.95h-.97v-2.1h-2.13v2.1h-.97v1.92h.97v4.85h2.13V5.34h.97zM27.72.13a1.19 1.19 0 1 0 0 2.38 1.19 1.19 0 0 0 0-2.38m-1.06 3.29h2.12v6.77h-2.12zM37.1 10.2V3.42h-2.08v.71l-.2-.16a2.6 2.6 0 0 0-1.79-.72c-1.83 0-3.37 1.63-3.37 3.55 0 1.93 1.55 3.56 3.37 3.56.67 0 1.31-.25 1.8-.72l.2-.17v.72Zm-3.72-1.8a1.6 1.6 0 1 1 .02-3.2 1.6 1.6 0 0 1-.02 3.2m6.88 1.8v-.72l.2.17a2.6 2.6 0 0 0 1.8.72c1.82 0 3.37-1.63 3.37-3.56s-1.55-3.56-3.38-3.56c-.67 0-1.31.26-1.8.72l-.19.17V.3H38.2v9.9Zm.05-3.39a1.6 1.6 0 1 1 1.6 1.6 1.6 1.6 0 0 1-1.6-1.6m13.47 3.39V3.42h-2.07v.71l-.2-.16a2.6 2.6 0 0 0-1.79-.72c-1.83 0-3.37 1.63-3.37 3.55 0 1.93 1.55 3.56 3.37 3.56.67 0 1.32-.25 1.8-.72l.2-.17v.72Zm-3.7-1.8a1.6 1.6 0 1 1 0-3.2 1.6 1.6 0 0 1 0 3.2m8.12-3.16c.69 0 1.26.57 1.26 1.27v3.7h2.12V6.24c0-1.8-1.04-2.97-2.68-2.97-.68 0-1.39.3-1.97 1.24V3.44H54.8v6.76h2.11V6.5a1.27 1.27 0 0 1 1.28-1.26m11.13 4.96-2.6-3.4 2.42-3.38h-2.48L64.7 6.16V.3h-2.13v9.9h2.13V7.4l2.14 2.8zm1.5-2.37a1.19 1.19 0 1 0-.01 2.37 1.19 1.19 0 0 0 .01-2.37m0 2.13a.95.95 0 1 1 0-1.9.95.95 0 0 1 0 1.9m0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3Cpath d=%22M70.82 9.2h-.19v.46h-.23v-1.3h.5c.23 0 .42.2.42.43q-.02.27-.24.38l.27.49h-.28Zm-.19-.2h.27q.18-.02.2-.2a.2.2 0 0 0-.2-.2h-.27zm0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3C/svg%3E\", ar: 6.995, mono: false },\n \"soriana\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 4319.99 1077.31%22%3E%3Cg fill=%22none%22 fill-rule=%22evenodd%22%3E%3Cpath fill=%22%23d52b1e%22 d=%22M938.1 105.38c-57.36 0-136.87 24.37-194.64 103.86-10.61 14.5-19.28 32.96-24.38 51.13-17.65 61.93-5.24 130.1 33.48 182.3 29.69 40.18 67.58 70.24 101.03 96.77 16.35 12.96 51.07 45.8 62.27 59.71 16.7 20.9 29.4 33.33 44.5 79.3 9.13 27.9 10.43 64.65 5.95 85.48 104.7-106.15 219.06-243.93 219.06-393.8 0-172.18-123.34-264.75-247.26-264.75%22/%3E%3Cpath fill=%22%23b6bf00%22 d=%22M743.28 687.53c-43.7-59.53-94.24-95.66-135.96-133.74-18.2-16.57-38.14-28.79-52.89-43.5-70.76-70.3-103.83-156.94-87.11-263.62 13.2-83.65 54.74-138.6 104.91-178.97C512.34 23.82 441.28 0 361 0 161.68 0-4.95 160.15.1 357.63 9.15 714.1 455.63 1017.85 639.6 1080c98.37-50.36 150.64-144.53 150.64-241.15 0-70.45-30.18-128.49-46.96-151.32%22/%3E%3Cpath fill=%22%23d52b1e%22 d=%22M1490.98 682.22c34.28 24.6 101.98 56.22 149.96 56.22 36.88 0 68.63-14.04 68.63-54.4 0-39.5-49.78-53.57-100.29-73.75-58.32-22.83-116.58-58.93-116.58-153.73 0-126.33 91.68-193.16 224.61-193.16 87.36 0 165.3 44.8 205.6 92.32l-87.41 92.91c-39.4-34.13-83.1-59.64-125.13-59.64-34.28 0-59.93 14.04-59.93 45.66 0 43.05 36.82 53.54 99.36 79.92 59.96 25.43 121.67 62.34 121.67 152.84 0 122.84-97.69 201.87-236.52 201.87-97.75 0-179.99-41.26-212.5-67.58l68.5-119.48zm698.76-42.64c5.09-28 6.78-53.36 6.78-72.46 0-41.96-12.74-67.27-42.49-67.27-39.9 0-66.25 40.12-79.02 112.7-5.1 27.83-7.65 57.6-7.65 80.22 0 38.45 10.18 69.86 41.65 69.86 41.6 0 66.28-37.58 80.73-123.05m-11.95-244.45c60.4 0 166.6 23.5 166.6 168.48 0 19.25-.86 41.87-4.32 65.47-26.23 171.17-131.64 240.2-252.29 240.2-105.34 0-164.87-62.95-164.87-174.65 0-20.99.84-46.3 5.06-70.76 31.45-183.38 152.13-228.74 249.82-228.74m353.81 447.8h-134.54l58.82-352.67 3.2-82.48h108l2.38 60.45c29.84-53.57 71.75-73.14 105.53-73.14 23.46 0 48.39 5.96 64.5 16.98l-38.67 118.18c-15.27-8.58-34.68-15.3-54.74-15.3-34.74 0-62.08 22.03-69.33 62.02l-45.15 265.99zm181.56 0 73.75-421.45h136.98l-73.78 421.44Zm170.34-632.18c41.22 0 66.74 30.5 66.74 67.67 0 50.46-40.4 90.35-92.23 90.35-42.1 0-65.82-27.61-65.82-65.6 0-49.43 38.63-92.45 91.3-92.45m358.97 293.7c-9.63-4.32-23.45-7-39.2-7-79.17 0-107.74 119.88-107.74 191.74 0 41.9 9.5 75.94 51.22 75.94 29.62 0 50.45-19.07 59.12-49.7l36.57-210.98zm97.32 257.29-6.08 94.51h-122.62v-41.16l-4.36-.83c-30.36 35.88-69.49 55.05-121.66 55.05-93.07 0-134.85-68.97-134.85-163.6 0-179.38 99.2-310.55 280.92-310.55 36.45 0 101.68 8.7 166.9 34.93zm58.26 81.21 59.5-347.57 4.93-87.57h114.05l1.66 46.78c32.22-36.54 75.2-59.43 130.6-59.43 68.56 0 109.87 32.24 110.7 105.31 0 13.58-1.66 30.67-4.16 46.69l-51.2 295.8h-138.05l43.05-254.08c2.47-13.58 6.57-33.2 6.57-49.31 0-17-6.57-35.67-31.41-35.67-35.58 0-56.22 27.24-62.02 62.85l-47.06 276.2zm766.27-338.5c-9.56-4.32-23.5-7-39.12-7-79.15 0-107.85 119.88-107.85 191.74 0 41.9 9.57 75.94 51.35 75.94 29.5 0 50.42-19.07 59.09-49.7zm97.39 257.29-6.11 94.51h-122.6v-41.16l-4.35-.83c-30.45 35.88-69.55 55.05-121.67 55.05-93.06 0-134.78-68.97-134.78-163.6 0-179.38 99.08-310.55 280.83-310.55 36.47 0 101.68 8.7 166.97 34.93z%22/%3E%3C/g%3E%3C/svg%3E\", ar: 4.01, mono: false },\n \"stp\": { src: \"data:image/png;base64,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\", ar: 1, mono: false },\n \"ups\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 viewBox=%220 0 73.48 87.13%22%3E%3Cdefs%3E%3Cpath id=%22a%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22b%22%3E%3Cuse xlink:href=%22%23a%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%231E0000%22 d=%22M36.73-.12c-14.4 0-26.28 2.74-36.75 8.29V51c0 9.15 3.44 16.8 9.95 22.14 5.87 4.82 24.67 13.06 26.8 13.99 2.13-.93 20.92-9.17 26.8-13.99 6.5-5.34 9.95-13 9.95-22.14V8.17C63 2.62 51.13-.13 36.73-.13%22 clip-path=%22url(%23b)%22/%3E%3Cdefs%3E%3Cpath id=%22c%22 d=%22M.73 8.62V51c0 8.91 3.35 16.37 9.68 21.56 5.8 4.75 24.2 12.83 26.32 13.75 2.11-.92 20.53-9 26.32-13.75 6.33-5.19 9.68-12.65 9.68-21.56V8.62c-10-5.3-22.11-8-36-8s-26 2.7-36 8%22/%3E%3C/defs%3E%3CclipPath id=%22f%22%3E%3Cuse xlink:href=%22%23c%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3CradialGradient id=%22d%22 cx=%22-14.27%22 cy=%22101%22 r=%221%22 gradientTransform=%22matrix(0 119.608 59.804 0 -6028.71 1722.48)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFDC00%22/%3E%3Cstop offset=%22.35%22 stop-color=%22%23FFBE00%22/%3E%3Cstop offset=%221%22 stop-color=%22%23C86E14%22/%3E%3C/radialGradient%3E%3Cpath fill=%22url(%23d)%22 d=%22M.73.63h72v85.68h-72z%22 clip-path=%22url(%23f)%22/%3E%3Cdefs%3E%3Cpath id=%22g%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22h%22%3E%3Cuse xlink:href=%22%23g%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%23C86E14%22 d=%22M59.7 81.45v3.67h.67V83.6h.1l1 1.53h.8l-1.1-1.62c.48-.11.8-.46.8-.97 0-.53-.32-1.08-1.22-1.08zm.97.53c.57 0 .64.28.64.52 0 .35-.15.58-.86.58h-.08v-1.1zm2.6 1.32a2.49 2.49 0 1 1-4.98-.02 2.49 2.49 0 0 1 4.98.02m-2.5-3.03a3.03 3.03 0 0 0 0 6.05 3.02 3.02 0 1 0 0-6.05%22 clip-path=%22url(%23h)%22/%3E%3Cdefs%3E%3Cpath id=%22i%22 d=%22M35.49 33.65v19.24c.45.17 1.18.38 2.03.38 3.6 0 5.33-3.3 5.33-10.15 0-7.02-1.5-9.92-5.14-9.92-.85 0-1.71.2-2.22.45M19.76 52.4V28.79H26v27.17c-2.4 1.63-5.6 2.52-9.44 2.52-6.2 0-9.34-3.37-9.34-10V28.79h6.26v19.97c0 1.77.43 4.4 3.3 4.4 1.28 0 2.29-.3 2.97-.76m9.46-22.02c2.27-1.46 5.03-2.23 8.45-2.23 7.47 0 11.58 5.68 11.58 14.8 0 9.16-4 15.42-10.94 15.42-1.29 0-2.2-.17-2.82-.36V71.2h-6.27zm31.46 19.44c-.04-1.96-1.15-3.03-3.9-4.65-5.17-3.03-6.1-5.52-6.11-8.85-.03-5.06 4.28-8.05 8.4-8.17 3.44-.1 5.77 1.2 6.87 2.04v5.44a8.4 8.4 0 0 0-5.6-2.57c-1.78-.02-3.63.77-3.69 3-.06 2.27 1.78 3.17 4.12 4.54 5.23 3.08 6.24 5.84 6.12 9.5-.12 4-2.88 8.38-9.06 8.38a13.7 13.7 0 0 1-6.89-1.95v-5.77c1.6 1.43 4 2.54 5.99 2.55h.02c2.29 0 3.79-1.31 3.73-3.49M4.04 26.76V51c0 7.9 2.92 14.49 8.47 19.01C17.4 74 32.47 80.82 36.72 82.7c4.2-1.85 19.23-8.59 24.22-12.69 5.58-4.6 8.47-11.04 8.47-19.01V9.51c-4.45-.41-9.06-.69-13.77-.69-17.45 0-36.15 3.75-51.61 17.94%22/%3E%3C/defs%3E%3CclipPath id=%22k%22%3E%3Cuse xlink:href=%22%23i%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3CradialGradient id=%22j%22 cx=%22-14.27%22 cy=%22101%22 r=%221%22 gradientTransform=%22matrix(0 118.6833 59.3417 0 -5981.98 1709.35)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%234B3333%22/%3E%3Cstop offset=%22.35%22 stop-color=%22%23351A1A%22/%3E%3Cstop offset=%22.85%22 stop-color=%22%231E0000%22/%3E%3Cstop offset=%221%22 stop-color=%22%231E0000%22/%3E%3C/radialGradient%3E%3Cpath fill=%22url(%23j)%22 d=%22M4.04 8.82h65.38V82.7H4.04z%22 clip-path=%22url(%23k)%22/%3E%3Cdefs%3E%3Cpath id=%22l%22 d=%22M4.04 51c0 7.9 2.92 14.49 8.46 19.01C17.4 74 32.48 80.82 36.73 82.7v-.5c-3.53-1.55-18.98-8.5-23.94-12.54-5.43-4.42-8.3-10.88-8.3-18.66z%22/%3E%3C/defs%3E%3CclipPath id=%22n%22%3E%3Cuse xlink:href=%22%23l%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22m%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.92%22 y2=%22100.92%22 gradientTransform=%22rotate(-136 638.5 -2395.2)scale(45.5362)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%22.02%22 stop-color=%22%23E39C15%22/%3E%3Cstop offset=%22.18%22 stop-color=%22%23DC9116%22/%3E%3Cstop offset=%22.4%22 stop-color=%22%23D88A17%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D78817%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23m)%22 d=%22M20.95 99.04-11.8 67.4l31.6-32.74L52.57 66.3%22 clip-path=%22url(%23n)%22/%3E%3Cdefs%3E%3Cpath id=%22o%22 d=%22M68.97 51c0 7.84-2.8 14.12-8.31 18.66-4.8 3.95-19.3 10.5-23.93 12.55v.49c4.2-1.85 19.23-8.59 24.21-12.7 5.59-4.59 8.48-11.03 8.48-19z%22/%3E%3C/defs%3E%3CclipPath id=%22q%22%3E%3Cuse xlink:href=%22%23o%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22p%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(-44 5492.21 -3109.85)scale(45.5362)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23p)%22 d=%22m20.89 66.3 32.75-31.64L85.26 67.4 52.5 99.03%22 clip-path=%22url(%23q)%22/%3E%3Cdefs%3E%3Cpath id=%22r%22 d=%22m4.04 26.76.45.2C17.54 15.06 34.27 9.27 55.65 9.27c4.17 0 8.54.22 13.32.65l.45-.41c-4.45-.41-9.06-.69-13.77-.69-17.45 0-36.15 3.75-51.61 17.94%22/%3E%3C/defs%3E%3CclipPath id=%22t%22%3E%3Cuse xlink:href=%22%23r%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22s%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.97%22 y2=%22100.97%22 gradientTransform=%22rotate(-19.2 19730.5 -6247.85)scale(67.419)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%22.97%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23s)%22 d=%22m-1.6 10.79 63.95-22.27L75.05 25 11.11 47.26%22 clip-path=%22url(%23t)%22/%3E%3Cdefs%3E%3Cpath id=%22u%22 d=%22M42.4 43.12c0 5.53-1.1 9.7-4.88 9.7v.45c3.6 0 5.33-3.3 5.33-10.15z%22/%3E%3C/defs%3E%3CclipPath id=%22w%22%3E%3Cuse xlink:href=%22%23u%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22v%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(-63.3 920.39 -716.09)scale(11.4647)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%221%22 stop-color=%22%23BF7312%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23v)%22 d=%22m33.45 51.22 5.15-10.24 8.32 4.19-5.15 10.24%22 clip-path=%22url(%23w)%22/%3E%3Cdefs%3E%3Cpath id=%22x%22 d=%22M35.49 52.9c.45.16 1.18.37 2.03.37v-.45c-.61 0-1.17-.12-1.58-.25z%22/%3E%3C/defs%3E%3CclipPath id=%22z%22%3E%3Cuse xlink:href=%22%23x%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22y%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.01%22 y2=%22101.01%22 gradientTransform=%22rotate(-173 12.05 -79.76)scale(2.064)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23F0AF13%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23y)%22 d=%22m37.5 53.52-2.1-.26.12-.93 2.09.25%22 clip-path=%22url(%23z)%22/%3E%3Cdefs%3E%3Cpath id=%22A%22 d=%22m35.49 33.65.45.3a5 5 0 0 1 1.77-.3v-.45c-.85 0-1.71.2-2.22.45%22/%3E%3C/defs%3E%3CclipPath id=%22C%22%3E%3Cuse xlink:href=%22%23A%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22B%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.02%22 y2=%22101.02%22 gradientTransform=%22rotate(-14.7 1017.85 -360.03)scale(2.26)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23B)%22 d=%22m35.3 33.25 2.27-.6.32 1.25-2.26.59%22 clip-path=%22url(%23C)%22/%3E%3Cdefs%3E%3Cpath id=%22D%22 d=%22M37.7 33.65c3.7 0 4.7 3.45 4.7 9.47h.45c0-7.02-1.5-9.92-5.14-9.92z%22/%3E%3C/defs%3E%3CclipPath id=%22F%22%3E%3Cuse xlink:href=%22%23D%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22E%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(-116.9 301.64 -605.19)scale(11.171)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23E)%22 d=%22m38.76 45.19-5.05-9.96 8.08-4.1 5.06 9.96%22 clip-path=%22url(%23F)%22/%3E%3Cdefs%3E%3Cpath id=%22G%22 d=%22M50.22 36.32h.45c-.03-5.06 4.28-8.04 8.4-8.17l-.01-.44c-4.56.13-8.87 3.46-8.84 8.6%22/%3E%3C/defs%3E%3CclipPath id=%22I%22%3E%3Cuse xlink:href=%22%23G%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22H%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.09%22 y2=%22101.09%22 gradientTransform=%22rotate(137.9 -303.69 -564.18)scale(12.334)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23H)%22 d=%22m63.36 32.45-9.18 8.29-8.27-9.16 9.17-8.3%22 clip-path=%22url(%23I)%22/%3E%3Cdefs%3E%3Cpath id=%22J%22 d=%22M56.65 36.06h.45c.02-.6.3-2.55 3.17-2.55l.07-.45h-.06c-1.76 0-3.57.8-3.63 3%22/%3E%3C/defs%3E%3CclipPath id=%22L%22%3E%3Cuse xlink:href=%22%23J%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22K%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.93%22 y2=%22100.93%22 gradientTransform=%22rotate(-41 683.04 -387.68)scale(4.7434)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23K)%22 d=%22m55.17 34.35 3.58-3.11 3.07 3.53-3.58 3.12%22 clip-path=%22url(%23L)%22/%3E%3Cdefs%3E%3Cpath id=%22M%22 d=%22M60.27 33.51c2.6 0 4.8 1.69 6.13 3.23l-.45-1.1a8.4 8.4 0 0 0-5.61-2.58z%22/%3E%3C/defs%3E%3CclipPath id=%22O%22%3E%3Cuse xlink:href=%22%23M%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22N%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.06%22 y2=%22101.06%22 gradientTransform=%22rotate(-152.5 74.72 -359.74)scale(7.0756)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23N)%22 d=%22m65.09 39.25-6.32-3.3 2.81-5.4 6.32 3.3%22 clip-path=%22url(%23O)%22/%3E%3Cdefs%3E%3Cpath id=%22P%22 d=%22m59.06 27.7.01.45c3.44-.1 5.77 1.2 6.88 2.04l.45-.22a11 11 0 0 0-7.34-2.27%22/%3E%3C/defs%3E%3CclipPath id=%22R%22%3E%3Cuse xlink:href=%22%23P%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22Q%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.98%22 y2=%22100.98%22 gradientTransform=%22rotate(17.9 -2574.26 161.57)scale(7.6762)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%221%22 stop-color=%22%23E49F15%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23Q)%22 d=%22m59.75 25.55 7.38 2.38-1.43 4.4-7.37-2.38%22 clip-path=%22url(%23R)%22/%3E%3Cdefs%3E%3Cpath id=%22S%22 d=%22M57.83 58.48v.45c5.67 0 9.36-3.78 9.52-8.82l-.45-.01c-.12 4-2.89 8.38-9.07 8.38%22/%3E%3C/defs%3E%3CclipPath id=%22U%22%3E%3Cuse xlink:href=%22%23S%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22T%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.92%22 y2=%22100.92%22 gradientTransform=%22scale(-12.968 12.968)rotate(44.4 109.2 63.52)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23T)%22 d=%22m71.76 54.6-9.27 9.08-9.08-9.26 9.28-9.08%22 clip-path=%22url(%23U)%22/%3E%3Cdefs%3E%3Cpath id=%22V%22 d=%22M50.5 56.79a14 14 0 0 0 7.33 2.14v-.45a13.7 13.7 0 0 1-6.89-1.95z%22/%3E%3C/defs%3E%3CclipPath id=%22X%22%3E%3Cuse xlink:href=%22%23V%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22W%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.03%22 y2=%22101.03%22 gradientTransform=%22scale(7.64 -7.64)rotate(-16.1 -387.2 -27.03)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23W)%22 d=%22m51.06 54.58 7.4 2.14-1.2 4.16-7.4-2.14%22 clip-path=%22url(%23X)%22/%3E%3Cdefs%3E%3Cpath id=%22Y%22 d=%22M50.94 50.77c1.6 1.42 4 2.53 5.99 2.54v-.45c-2.23-.01-4.8-1.45-6.44-3.1z%22/%3E%3C/defs%3E%3CclipPath id=%22aa%22%3E%3Cuse xlink:href=%22%23Y%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22Z%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.96%22 y2=%22100.96%22 gradientTransform=%22rotate(-154.1 67.44 -362.63)scale(7.3418)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23Z)%22 d=%22m55.7 55.84-6.6-3.2 2.62-5.41 6.6 3.2%22 clip-path=%22url(%23aa)%22/%3E%3Cdefs%3E%3Cpath id=%22ab%22 d=%22M60.23 49.84c.05 2-1.34 3.04-3.3 3.02v.45c2.3.01 3.8-1.3 3.75-3.49z%22/%3E%3C/defs%3E%3CclipPath id=%22ad%22%3E%3Cuse xlink:href=%22%23ab%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22ac%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.08%22 y2=%22101.08%22 gradientTransform=%22rotate(-42.6 724.8 -399.27)scale(5.1262)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23ac)%22 d=%22m55.19 51.43 3.8-3.5 3.5 3.79-3.82 3.5%22 clip-path=%22url(%23ad)%22/%3E%3Cdefs%3E%3Cpath id=%22ae%22 d=%22M50.22 36.32c.01 3.5 1.05 6.14 6.32 9.24 2.83 1.66 3.65 2.62 3.7 4.28l.44-.02c-.04-1.96-1.16-3.03-3.9-4.65-5.17-3.03-6.1-5.52-6.1-8.85z%22/%3E%3C/defs%3E%3CclipPath id=%22ag%22%3E%3Cuse xlink:href=%22%23ae%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22af%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.04%22 y2=%22101.04%22 gradientTransform=%22rotate(55.2 -1779.54 -562.57)scale(17.0604)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%22.4%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%22.6%22 stop-color=%22%23BF7312%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D89016%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23af)%22 d=%22m57.28 31.41 9.74 14.02-13.4 9.3-9.74-14.01%22 clip-path=%22url(%23ag)%22/%3E%3Cdefs%3E%3Cpath id=%22ah%22 d=%22M60.77 40.6c5.23 3.08 6.24 5.84 6.12 9.5l.45.01c.13-3.73-.9-6.69-6.34-9.9-2.22-1.34-3.96-2.07-3.9-4.14l-.45-.01c-.06 2.27 1.78 3.17 4.12 4.54%22/%3E%3C/defs%3E%3CclipPath id=%22aj%22%3E%3Cuse xlink:href=%22%23ah%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22ai%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.96%22 y2=%22100.96%22 gradientTransform=%22rotate(53.8 -1890.23 -569.12)scale(17.6596)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%22.4%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%22.6%22 stop-color=%22%23E49F15%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D78817%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23ai)%22 d=%22m63.67 30.87 10.5 14.34L60.38 55.3 49.9 40.96%22 clip-path=%22url(%23aj)%22/%3E%3Cdefs%3E%3Cpath id=%22ak%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22al%22%3E%3Cuse xlink:href=%22%23ak%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%238F4A02%22 d=%22M35.49 71.2h-6.27l-.45.45h7.17%22 clip-path=%22url(%23al)%22/%3E%3Cdefs%3E%3Cpath id=%22am%22 d=%22M35.94 58.59q1.06.23 2.37.23v-.45a10 10 0 0 1-2.82-.36z%22/%3E%3C/defs%3E%3CclipPath id=%22ao%22%3E%3Cuse xlink:href=%22%23am%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22an%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.02%22 y2=%22101.02%22 gradientTransform=%22matrix(2.874 .445 .445 -2.874 31.54 354.88)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23an)%22 d=%22m35.56 57.59 2.87.44-.19 1.22-2.87-.45%22 clip-path=%22url(%23ao)%22/%3E%3Cdefs%3E%3Cpath id=%22ap%22 d=%22M49.25 42.96c0 9.15-3.99 15.4-10.94 15.4v.46c8.07 0 11.39-7.71 11.39-15.86z%22/%3E%3C/defs%3E%3CclipPath id=%22ar%22%3E%3Cuse xlink:href=%22%23ap%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aq%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.9%22 y2=%22100.9%22 gradientTransform=%22rotate(125.6 -631.9 -879.37)scale(19.5286)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aq)%22 d=%22M57.2 48.33 45.85 64.21 30.8 53.45l11.37-15.88%22 clip-path=%22url(%23ar)%22/%3E%3Cdefs%3E%3Cpath id=%22as%22 d=%22m28.77 30.14.45.24c2.28-1.46 5.03-2.22 8.45-2.22v-.46c-3.47 0-6.5.8-8.9 2.44%22/%3E%3C/defs%3E%3CclipPath id=%22au%22%3E%3Cuse xlink:href=%22%23as%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22at%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.03%22 y2=%22101.03%22 gradientTransform=%22rotate(165.5 -107.94 -440.95)scale(9.218)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23F0AF13%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23at)%22 d=%22m38.32 30.22-8.99 2.32-1.2-4.67 8.98-2.32%22 clip-path=%22url(%23au)%22/%3E%3Cdefs%3E%3Cpath id=%22av%22 d=%22M37.67 28.16c7.47 0 11.58 5.67 11.58 14.8h.45c0-8.08-3.38-15.26-12.03-15.26z%22/%3E%3C/defs%3E%3CclipPath id=%22ax%22%3E%3Cuse xlink:href=%22%23av%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aw%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.9%22 y2=%22100.9%22 gradientTransform=%22rotate(51.9 -2162.24 -642.68)scale(19.428)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%221%22 stop-color=%22%23A65E0C%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aw)%22 d=%22m45.12 21.86 11.99 15.29L42.25 48.8 30.26 33.51%22 clip-path=%22url(%23ax)%22/%3E%3Cdefs%3E%3Cpath id=%22ay%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22az%22%3E%3Cuse xlink:href=%22%23ay%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%23FFC20E%22 d=%22M13.5 28.79H7.22l-.45-.45h7.16zm12.51 0h-6.25l-.45-.45h7.15z%22 clip-path=%22url(%23az)%22/%3E%3Cpath fill=%22%23D78817%22 d=%22M4.04 51V26.76l.45.2V51zM66.4 36.74v-6.77l-.45.22v5.44zM13.94 48.76V28.34l-.45.45v19.96z%22 clip-path=%22url(%23az)%22/%3E%3Cpath fill=%22%23D89016%22 d=%22M68.97 51V9.92l.45-.41V51zm-18.48-1.24v7.03l.45-.26v-5.77zM19.76 52.4V28.79l-.45-.45v23.81zM7.23 48.48V28.79l-.45-.45v20.14z%22 clip-path=%22url(%23az)%22/%3E%3Cdefs%3E%3Cpath id=%22aA%22 d=%22M6.78 48.48c0 6.63 3.11 10.45 9.8 10.45v-.45c-6.2 0-9.35-3.37-9.35-10z%22/%3E%3C/defs%3E%3CclipPath id=%22aC%22%3E%3Cuse xlink:href=%22%23aA%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aB%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.11%22 y2=%22101.11%22 gradientTransform=%22rotate(47.1 -1815.33 -457.46)scale(14.319)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23D89016%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aB)%22 d=%22m12.04 43.6 9.74 10.48-10.46 9.73-9.75-10.5%22 clip-path=%22url(%23aC)%22/%3E%3Cdefs%3E%3Cpath id=%22aD%22 d=%22M16.57 58.48v.45c4 0 7.24-.93 9.89-2.73l-.45-.24c-2.4 1.63-5.6 2.52-9.44 2.52%22/%3E%3C/defs%3E%3CclipPath id=%22aF%22%3E%3Cuse xlink:href=%22%23aD%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aE%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.98%22 y2=%22100.98%22 gradientTransform=%22scale(-10.2546 10.2546)rotate(14.5 366.91 99.18)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23A65E0C%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%238F4A02%22/%3E%3Cstop offset=%221%22 stop-color=%22%238F4A02%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aE)%22 d=%22m27.18 58.74-9.99 2.58-1.34-5.17 9.99-2.59%22 clip-path=%22url(%23aF)%22/%3E%3Cdefs%3E%3Cpath id=%22aG%22 d=%22M16.8 52.71v.45a5.3 5.3 0 0 0 2.96-.76l-.45-.25c-.64.36-1.52.56-2.52.56%22/%3E%3C/defs%3E%3CclipPath id=%22aI%22%3E%3Cuse xlink:href=%22%23aG%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aH%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22101.01%22 y2=%22101.01%22 gradientTransform=%22matrix(2.9715 -.73 -.73 -2.9715 132.9 342.77)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23F0AF13%22/%3E%3Cstop offset=%221%22 stop-color=%22%23F0AF13%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aH)%22 d=%22m16.56 52.2 3.03-.74.4 1.64-3.03.75%22 clip-path=%22url(%23aI)%22/%3E%3Cdefs%3E%3Cpath id=%22aJ%22 d=%22M13.5 48.76c0 1.77.42 4.4 3.3 4.4v-.45c-2.21 0-2.86-1.78-2.86-3.95z%22/%3E%3C/defs%3E%3CclipPath id=%22aL%22%3E%3Cuse xlink:href=%22%23aJ%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3ClinearGradient id=%22aK%22 x1=%22-14.27%22 x2=%22-13.27%22 y1=%22100.92%22 y2=%22100.92%22 gradientTransform=%22rotate(-126.2 123.53 -275.42)scale(5.506)%22 gradientUnits=%22userSpaceOnUse%22%3E%3Cstop offset=%220%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.05%22 stop-color=%22%23FFC20E%22/%3E%3Cstop offset=%22.95%22 stop-color=%22%23D78817%22/%3E%3Cstop offset=%221%22 stop-color=%22%23D78817%22/%3E%3C/linearGradient%3E%3Cpath fill=%22url(%23aK)%22 d=%22m14.65 54.74-3.26-4.45 4.25-3.1 3.26 4.44%22 clip-path=%22url(%23aL)%22/%3E%3Cdefs%3E%3Cpath id=%22aM%22 d=%22M-14.27-14h102v115h-102z%22/%3E%3C/defs%3E%3CclipPath id=%22aN%22%3E%3Cuse xlink:href=%22%23aM%22 overflow=%22visible%22/%3E%3C/clipPath%3E%3Cpath fill=%22%23D78817%22 d=%22M28.77 30.14v41.51l.45-.45V30.38%22 clip-path=%22url(%23aN)%22/%3E%3Cpath fill=%22%23BF7312%22 d=%22M35.94 52.57V33.95l-.45-.3v19.24zm0 6.02v13.06l-.45-.45V58.01zm-9.48-2.39V28.34l-.45.45v27.17%22 clip-path=%22url(%23aN)%22/%3E%3C/svg%3E\", ar: 0.843, mono: false },\n \"usps\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%221.12 1.45 179.67 27.5%22%3E%3Cpath fill=%22%2315569c%22 d=%22M49.56.15H7.41L7.4.3s24.78 5.1 25.27 5.18c5.7 1 5.52 2.1 5.52 2.1 3.99-.02 4.48.14 5.17.73 2.1 1.75-1.3 6.91-1.3 6.91-.5.36-37.36 14.6-37.36 14.6h38.57zm8.09 0-1.6 7.54c-.58 2.6 1.18 3.78 4.1 3.78 2.94 0 5.17-1.18 5.73-3.78 1.63-7.54-.02 0 1.63-7.54h-2.46l-1.45 6.8c-.37 1.73-1.29 2.77-3.09 2.77-1.88-.02-2.26-1.06-1.88-2.78L60.1.15zm12.2 0L67.5 11.27h2.17l1.72-8.25h.05l2.75 8.25h3.08L79.63.15h-2.17L75.7 8.49h-.03L73.04.15Zm12.13 0-2.35 11.12h2.45L84.43.15Zm4.1 0-.4 1.77h3.47l-1.99 9.35h2.45l1.99-9.35h3.45l.38-1.77zm11 0L94.7 11.27h8.06l.37-1.77h-5.6l.64-3.04h4.89l.35-1.64h-4.88l.62-2.9h5.6l.37-1.77zm9.82 0-2.35 11.12h5.02c3.1 0 6.08-2.05 6.75-6.05.48-2.83-.65-5.07-4.02-5.07zm18.44 0c-2.89 0-4.32 1.02-4.53 2.62-.36 2.67 4.36 4.25 4 5.85-.22.93-1.36.88-2.3.88h-3.02l-.37 1.77h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.73-4.34-4.14-3.96-5.9.12-.55.72-.83 2.05-.83h2.63l.38-1.77zm4.54 0-.38 1.77h3.45l-1.98 9.35h2.45l1.98-9.35h3.46l.37-1.77zm11.95 0-6.37 11.12h2.45l4.88-8.91.98 7.14h-3.5l-.97 1.77h7.2L144.76.15zm5.64 0-.39 1.77h3.46l-1.99 9.35H151l2-9.35h3.45l.38-1.77zm10.98 0-2.37 11.12h8.06l.37-1.77h-5.6l.64-3.04h4.88l.36-1.64h-4.88l.62-2.9h5.6l.36-1.77zm13.44 0c-2.89 0-4.31 1.02-4.53 2.62-.36 2.67 4.35 4.25 4 5.85-.22.93-1.37.88-2.3.88h-3.02l-.37 1.77h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.73-4.34-4.14-3.97-5.9.13-.55.73-.83 2.07-.83h2.61l.4-1.77zm-62.9 1.77h2.5c2.04 0 2.76 1.5 2.45 3.27-.43 2.5-2.03 4.31-4.8 4.31h-1.75zM27.67 7.01H5.96L1.12 29.8s14.83-7.27 16.64-8.2c3.72-1.92 8.86-4.44 13.6-6.06.91-.3 4.79-1.5 7.05-1.9.87-.16 1.24-.3 1.23-.47-.03-.47-.91-.5-2.4-.42-4.55.21-13.26 3.68-15.77 5L18.64 9h18.09c.6-1.7-5.72-1.96-9.07-1.98zm9.59 2.11q-.18 0-.4.3c-.14.17-.25.3-.6.48-.57.27-2.03.42-2.71.48-.66.06-.84.12-.85.38 0 .22.1.35 1.04.35 2.17 0 6.07-.81 7.24-.44.62.2.12 1.3-.38 2.76-.2.56.19.52.4.27a10 10 0 0 0 1.36-3.04c.15-1.34-1-1.54-2.58-1.54zm32.05 9.37c-3.44 0-6.31 1.8-7.15 5.75C61.48 27.4 63.4 30 66.83 30c3.48 0 6.27-1.72 7.14-5.76.7-3.3-1.26-5.75-4.67-5.75m98.14 0c-3.41 0-6.7 1.76-7.53 5.75-.85 3.98 1.67 5.76 5.09 5.76q1.4-.02 2.74-.24l.6-1.91c-.88.22-1.81.39-2.97.39-2.22 0-3.47-1.5-2.95-4 .53-2.52 2.42-3.99 4.63-3.99 1.14 0 1.91.16 2.6.36l.23-1.88a14 14 0 0 0-2.44-.24m-87.48.2c-2.89 0-4.32 1.02-4.53 2.62-.36 2.67 4.35 4.25 4 5.84-.22.93-1.37.89-2.3.89h-3.02l-.37 1.76h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.72-4.34-4.14-3.97-5.9.13-.55.73-.83 2.07-.83h2.62l.39-1.77zm4.54 0-.38 1.76h3.45L85.6 29.8h2.45l1.99-9.35h3.45l.37-1.77zm35.8 0c-2.9 0-4.32 1.02-4.54 2.62-.36 2.67 4.36 4.25 4 5.84-.21.93-1.36.89-2.3.89h-3.02l-.37 1.76h3.75c3.07 0 4.4-1.1 4.65-2.62.45-2.72-4.33-4.14-3.97-5.9.13-.55.73-.83 2.07-.83h2.62l.38-1.77zm5.4 0-2.38 11.11h8.07l.37-1.76h-5.6l.64-3.04h4.88l.36-1.65h-4.88l.61-2.9h5.6l.37-1.77zm9.82 0-2.35 11.11h2.45l1.98-9.36h2.2c1.36 0 1.49.76 1.35 1.46-.26 1.31-1.41 1.84-2.67 1.84-.23 0-.62.02-.93-.03l2.02 6.1h2.68l-1.83-4.8a3.6 3.6 0 0 0 3.18-3.49c.14-1.86-.73-2.84-2.9-2.84zm36.34 0-2.37 11.11h8.06l.37-1.76h-5.6l.64-3.04h4.89l.35-1.65h-4.88l.62-2.9h5.6l.37-1.77zm-118.14 0L51.36 29.8h2.45l1.99-9.35h2c.9 0 1.51.45 1.25 1.66-.14.67-.74 1.82-2.42 1.82-.37 0-.77-.05-1.08-.08l.12 1.61c.36.04.78.1 1.17.1 2.2 0 4.14-1.28 4.59-3.39.29-1.4.01-3.48-2.4-3.48zm42.75 0L90.1 29.8h2.45l4.88-8.91.98 7.15h-3.5l-.97 1.76h7.2L99.4 18.7zm8.3 0L102.4 29.8h7.53l.38-1.76h-5.07l1.99-9.35zm40.13 0 1.67 11.11h2.9l6.33-11.11h-2.42l-4.88 8.91-1.15-8.91zm12.38 0-2.36 11.11h2.45l2.36-11.11zM68.9 20.25c2.26 0 3.02 1.74 2.54 3.99-.53 2.51-2.01 4-4.23 4-2.3 0-3.06-1.85-2.58-4 .58-2.51 2.05-3.99 4.27-3.99%22/%3E%3Cpath fill=%22%23ed192d%22 d=%22m54.59 14.57-.18.82h126.2l.17-.82z%22/%3E%3C/svg%3E\", ar: 6.533, mono: false },\n \"visa\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1000 324.06%22%3E%3Cpath fill=%22%231434cb%22 d=%22M651.19.5c-70.93 0-134.32 36.77-134.32 104.69 0 77.9 112.42 83.28 112.42 122.42 0 16.48-18.88 31.23-51.14 31.23-45.77 0-79.98-20.61-79.98-20.61l-14.64 68.55s39.41 17.41 91.73 17.41c77.55 0 138.58-38.57 138.58-107.66 0-82.32-112.89-87.54-112.89-123.86 0-12.91 15.5-27.05 47.66-27.05 36.29 0 65.89 14.99 65.89 14.99l14.33-66.2S696.61.5 651.18.5ZM2.22 5.5.5 15.49s29.84 5.46 56.72 16.36c34.61 12.49 37.07 19.77 42.9 42.35l63.51 244.83h85.14L379.93 5.5h-84.94l-84.28 213.17-34.39-180.7c-3.15-20.68-19.13-32.48-38.68-32.48zm411.87 0-66.63 313.53h81L494.85 5.5zm451.76 0c-19.53 0-29.88 10.46-37.47 28.73l-118.67 284.8h84.94l16.43-47.47h103.48l9.99 47.47h74.95L934.12 5.5zm11.05 84.71 25.18 117.65h-67.45z%22/%3E%3C/svg%3E\", ar: 3.086, mono: false },\n \"walmart\": { src: \"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xml:space=%22preserve%22 viewBox=%220 0 264.58 50.3%22%3E%3Cg style=%22font-variation-settings:normal;opacity:1;vector-effect:none;fill:%230053e2;fill-opacity:1;stroke-width:1.96006829;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:%23000;stop-opacity:1%22%3E%3Cpath fill=%22%23fff%22 d=%22m120.6 0-14.75 74.6L89.32 0H60.59L44.06 74.6 29.32 0H0l23.91 113.96h34.13l16.7-75.67 16.68 75.67h33.38L148.56 0Zm59.91 98.16c-6.61 0-10.22-4.1-10.22-9.72 0-7.3 5.72-10.18 12.93-12.77 3.76-1.43 7.53-2.91 10.08-5.16v12.6c0 9.58-4.97 15.05-12.78 15.05m3.9-77.19c-18.19 0-30.97 6.24-35.63 10.64v24.3a49 49 0 0 1 31.88-12c9.32 0 12.78 2.6 12.78 7.91 0 4.56-4.81 6.39-18.2 9.27-20.3 4.25-32.03 11.7-32.03 29.48 0 16.4 10.68 25.98 26.17 25.98 12.97 0 20.72-6.08 24.96-14.25v11.67h27.96V58.05c0-25.68-13.23-37.08-37.89-37.08M261.8 0h-29.02v113.96h29.03zm116.48 21.28c-14.08 0-23.18 8.55-27.94 19.94-2.55-12.2-11.03-19.94-22.89-19.94-13.42 0-22.18 7.91-26.61 19.02V23.86h-28.57v90.1h29.02V63.99c0-12.3 4.06-19.3 12.78-19.3 7.07 0 9.48 4.87 9.48 12.47v56.83h29.02v-50c0-12.3 4.06-19.29 12.78-19.29 7.06 0 9.47 4.86 9.47 12.46V114h29.02V53.03c0-18.99-8.87-31.75-25.56-31.75m69.16 76.88c-6.61 0-10.22-4.1-10.22-9.72 0-7.3 5.72-10.18 12.94-12.77 3.76-1.43 7.53-2.91 10.07-5.16v12.6c0 9.58-4.96 15.05-12.79 15.05m3.91-77.19c-18.2 0-30.98 6.24-35.64 10.64v24.3a49 49 0 0 1 31.88-12c9.32 0 12.78 2.6 12.78 7.91 0 4.56-4.81 6.39-18.2 9.27-20.3 4.25-32.03 11.7-32.03 29.48 0 16.4 10.68 25.98 26.17 25.98 12.97 0 20.72-6.08 24.96-14.25v11.67h27.97V58.05c0-25.68-13.24-37.08-37.9-37.08m76.25 28.34V23.86h-28.42v90.1h29.02V75.68c0-17.62 10.83-22.33 21.2-22.33 3.46 0 6.77.45 8.27.9V23.26c-16.33-.8-26.25 9.74-30.07 26.06M613 46.65v-22.8h-18.5V6.39h-29.02v77.5c0 21.72 12.18 31.9 31.58 31.9 9.03 0 13.84-1.82 15.94-3.19V89.95c-1.65 1.22-4.36 2.13-7.82 2.13-6.46.15-10.68-2.74-10.68-12.3V46.65z%22 style=%22font-variation-settings:normal;vector-effect:none;fill:%230053e2;fill-opacity:1;stroke-width:1.96006829;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:%23000;stop-opacity:1%22 transform=%22scale(.43162)%22/%3E%3C/g%3E%3C/svg%3E\", ar: 5.26, mono: false },\n}\n","/**\n * Shared catalog of the brands a checkout names: parcel carriers, card networks, wallets and cash payment points.\n *\n * Keys are the stable identifiers the providers already send (`ShippingRate.carrier` of Skydropx / Envía, the\n * `PaymentPoint.payment_point` or `id` of the payment addon, a `PaymentMethod.key`). Nothing here decides what a shop\n * offers: the server lists the rates and methods; this only gives each one its commercial name and a mark.\n *\n * Marks are drawn by `<BrandMark>` with this precedence: the provider's `logo_url` > the real logo bundled in\n * `brands/assets` (inline data URI, no request; provenance in `brands/LOGOS.md`) > a typographic badge (brand color +\n * short wordmark) for the brands without an available logo. The `bg`/`fg` colors here are close approximations of each\n * brand's public color and only paint that fallback badge.\n */\n\nimport { LOGOS, type LogoAsset } from './brands/logos.generated.js'\n\nexport type BrandKind = 'carrier' | 'card' | 'wallet' | 'cash' | 'bank'\n\nexport type Brand = {\n key: string\n /** Commercial name, as the brand writes it. */\n name: string\n kind: BrandKind\n /** Badge background. */\n bg: string\n /** Badge text color (AA on `bg`). */\n fg: string\n /** Short wordmark drawn in the badge (`\\n` = two lines). Default: `name`. */\n mark?: string\n /** Special drawings instead of a wordmark. */\n shape?: 'mastercard' | 'transfer'\n}\n\nconst B = (key: string, name: string, kind: BrandKind, bg: string, fg: string, mark?: string, shape?: Brand['shape']): Brand => ({\n key,\n name,\n kind,\n bg,\n fg,\n ...(mark ? { mark } : {}),\n ...(shape ? { shape } : {}),\n})\n\nconst LIST: Brand[] = [\n // Parcel carriers (Mexico and global).\n B('fedex', 'FedEx', 'carrier', '#4D148C', '#FFFFFF'),\n B('dhl', 'DHL', 'carrier', '#FFCC00', '#B00410'),\n B('estafeta', 'Estafeta', 'carrier', '#C8102E', '#FFFFFF'),\n B('paquetexpress', 'Paquetexpress', 'carrier', '#0B4EA2', '#FFFFFF', 'Paquet\\nexpress'),\n B('ups', 'UPS', 'carrier', '#351C15', '#FFB500'),\n B('redpack', 'Redpack', 'carrier', '#C8102E', '#FFFFFF'),\n B('99minutos', '99 Minutos', 'carrier', '#00704A', '#FFFFFF', '99'),\n B('jtexpress', 'J&T Express', 'carrier', '#C8102E', '#FFFFFF', 'J&T'),\n B('sendex', 'Sendex', 'carrier', '#003A70', '#FFFFFF'),\n B('ampm', 'AMPM', 'carrier', '#1D1D1B', '#FFFFFF'),\n B('tresguerras', 'Tresguerras', 'carrier', '#005BAC', '#FFFFFF', '3G'),\n B('quiken', 'Quiken', 'carrier', '#1D1D1B', '#FFFFFF'),\n B('imile', 'iMile', 'carrier', '#0057B8', '#FFFFFF'),\n B('carssa', 'Carssa', 'carrier', '#00529B', '#FFFFFF'),\n B('correosdemexico', 'Correos de México', 'carrier', '#7A1E3A', '#FFFFFF', 'Correos\\nMéxico'),\n B('usps', 'USPS', 'carrier', '#333366', '#FFFFFF'),\n B('canadapost', 'Canada Post', 'carrier', '#DA291C', '#FFFFFF', 'CPC'),\n // Card networks.\n B('visa', 'Visa', 'card', '#1A1F71', '#FFFFFF', 'VISA'),\n B('mastercard', 'Mastercard', 'card', '#FFFFFF', '#1D1D1B', 'MC', 'mastercard'),\n B('amex', 'American Express', 'card', '#1F72CD', '#FFFFFF', 'AMEX'),\n B('carnet', 'Carnet', 'card', '#003B71', '#FFFFFF'),\n // Wallets and payment providers.\n B('mercadopago', 'Mercado Pago', 'wallet', '#00B1EA', '#0B1F4E', 'mercado\\npago'),\n B('paypal', 'PayPal', 'wallet', '#003087', '#FFFFFF'),\n B('clip', 'Clip', 'wallet', '#FC4C02', '#1D1D1B'),\n B('applepay', 'Apple Pay', 'wallet', '#000000', '#FFFFFF', 'Pay'),\n B('googlepay', 'Google Pay', 'wallet', '#FFFFFF', '#3C4043', 'G Pay'),\n // Cash points and transfers (Mexico).\n B('oxxo', 'OXXO', 'cash', '#E21E26', '#FFE600'),\n B('spei', 'SPEI', 'bank', '#14365F', '#FFFFFF', undefined, 'transfer'),\n B('stp', 'STP', 'bank', '#14365F', '#FFFFFF', 'SPEI', 'transfer'),\n B('7eleven', '7-Eleven', 'cash', '#00704A', '#FFFFFF', '7-11'),\n B('circlek', 'Circle K', 'cash', '#DA291C', '#FFFFFF', 'K'),\n B('soriana', 'Soriana', 'cash', '#C8102E', '#FFFFFF'),\n B('extra', 'Extra', 'cash', '#E35205', '#FFFFFF'),\n B('kiosko', 'Kiosko', 'cash', '#C8102E', '#FFFFFF'),\n B('calimax', 'Calimax', 'cash', '#D52B1E', '#FFFFFF'),\n B('farmaciasyza', 'Farmacias Yza', 'cash', '#0A5A9C', '#FFFFFF', 'Yza'),\n B('chedraui', 'Chedraui', 'cash', '#0047BB', '#FFFFFF'),\n B('casaley', 'Casa Ley', 'cash', '#C8102E', '#FFFFFF', 'Ley'),\n B('telecomm', 'Telecomm', 'cash', '#6F1D46', '#FFFFFF'),\n B('walmart', 'Walmart', 'cash', '#0071CE', '#FFFFFF'),\n B('bodegaaurrera', 'Bodega Aurrerá', 'cash', '#0F4C97', '#FFFFFF', 'Bodega\\nAurrerá'),\n B('farmaciasguadalajara', 'Farmacias Guadalajara', 'cash', '#005BAC', '#FFFFFF', 'Farm.\\nGuadalajara'),\n B('farmaciadelahorro', 'Farmacia del Ahorro', 'cash', '#00539F', '#FFFFFF', 'Farmacia\\ndel Ahorro'),\n B('santander', 'Santander', 'bank', '#C00000', '#FFFFFF'),\n B('hsbc', 'HSBC', 'bank', '#DB0011', '#FFFFFF'),\n B('scotiabank', 'Scotiabank', 'bank', '#EC111A', '#FFFFFF', 'Scotia'),\n B('bbva', 'BBVA', 'bank', '#004481', '#FFFFFF'),\n B('citibanamex', 'Citibanamex', 'bank', '#004B8D', '#FFFFFF', 'Citi'),\n B('banorte', 'Banorte', 'bank', '#C8102E', '#FFFFFF'),\n]\n\n/** Alternative spellings that providers send for the same brand (already normalized by `brandKey`). */\nconst ALIASES: Record<string, string> = {\n fedexmx: 'fedex',\n fedexexpress: 'fedex',\n dhlexpress: 'dhl',\n dhlmx: 'dhl',\n paquetexpres: 'paquetexpress',\n paqueteexpress: 'paquetexpress',\n jt: 'jtexpress',\n jandtexpress: 'jtexpress',\n noventaynueveminutos: '99minutos',\n correos: 'correosdemexico',\n sepomex: 'correosdemexico',\n master: 'mastercard',\n americanexpress: 'amex',\n mercadopagomx: 'mercadopago',\n mp: 'mercadopago',\n clabe: 'spei',\n banktransfer: 'spei',\n seveneleven: '7eleven',\n '711': '7eleven',\n circulok: 'circlek',\n yza: 'farmaciasyza',\n bancomer: 'bbva',\n banamex: 'citibanamex',\n ley: 'casaley',\n aurrera: 'bodegaaurrera',\n guadalajara: 'farmaciasguadalajara',\n fguadalajara: 'farmaciasguadalajara',\n farmaciaguadalajara: 'farmaciasguadalajara',\n fahorro: 'farmaciadelahorro',\n delahorro: 'farmaciadelahorro',\n farmaciasdelahorro: 'farmaciadelahorro',\n hsbcmexico: 'hsbc',\n scotia: 'scotiabank',\n walmartmexico: 'walmart',\n walmartsupercenter: 'walmart',\n oxxopay: 'oxxo',\n upsexpress: 'ups',\n estafetamexicana: 'estafeta',\n}\n\nconst BY_KEY = new Map(LIST.map((b) => [b.key, b]))\n\n/** `\"FedEx México\"`, `\"fedex_mx\"` and `\"FEDEX\"` all become `fedex`. Lowercase ASCII letters and digits only. */\nexport function brandKey(raw: string | null | undefined): string {\n const flat = (raw ?? '')\n .normalize('NFD')\n .replace(/[̀-ͯ]/g, '')\n .toLowerCase()\n .replace(/&/g, 'and')\n .replace(/[^a-z0-9]/g, '')\n const noCountry = flat.endsWith('mexico') && flat !== 'correosdemexico' ? flat.slice(0, -6) : flat\n return ALIASES[noCountry] ?? (BY_KEY.has(noCountry) ? noCountry : ALIASES[flat] ?? flat)\n}\n\n/** Catalog entry for a provider identifier, or `null` when the brand is not in the catalog. */\nexport function findBrand(raw: string | null | undefined): Brand | null {\n return BY_KEY.get(brandKey(raw)) ?? null\n}\n\n/**\n * Commercial name for a provider identifier: the catalog's (`fedex` → \"FedEx\") or, for an unknown one, the identifier\n * in title case (`\"envios_rapidos\"` → \"Envios Rapidos\"). `null` for an empty input.\n */\nexport function brandName(raw: string | null | undefined): string | null {\n const brand = findBrand(raw)\n if (brand) return brand.name\n const text = (raw ?? '').trim()\n if (!text) return null\n // Already cased by the provider (\"Envía Plus\"): keep it.\n if (text !== text.toLowerCase() && text !== text.toUpperCase()) return text\n return text\n .toLowerCase()\n .split(/[\\s_-]+/)\n .filter(Boolean)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ')\n}\n\n/** Every brand of the catalog (for docs, previews and tests). */\nexport function listBrands(kind?: BrandKind): Brand[] {\n return kind ? LIST.filter((b) => b.kind === kind) : [...LIST]\n}\n\n/** Real logo bundled for a provider identifier (inline data URI), or `null` when the brand only has the fallback badge. */\nexport function brandLogo(raw: string | null | undefined): (LogoAsset & { key: string }) | null {\n const b = findBrand(raw)\n const logo = b ? LOGOS[b.key] : undefined\n return b && logo ? { ...logo, key: b.key } : null\n}\n","import type { CSSProperties } from 'react'\nimport { brandLogo, brandName, findBrand } from './brands.js'\n\nexport type BrandMarkProps = {\n /** Provider identifier (`fedex`, `oxxo`, `mercadopago`, `7eleven`…). Unknown keys get a neutral monogram. */\n brand: string | null | undefined\n /** Licensed logo sent by the provider (`PaymentPoint.logo_url`…). Only `https:`; it wins over the bundled logo and the badge. */\n logoUrl?: string | null\n /** Height in px of the box. Badges are 3:2 (width = 1.5 × height); real logos get a width that follows their shape. Default 24. */\n size?: number\n /**\n * Accessible name. Omit it when the brand name is already written next to the mark (the usual case): the mark is then\n * decorative (`aria-hidden`).\n */\n title?: string\n className?: string\n}\n\nfunction safeLogo(url: string | null | undefined): string | null {\n if (!url) return null\n try {\n return new URL(url).protocol === 'https:' ? url : null\n } catch {\n return null\n }\n}\n\n/** Letters of a monogram for a brand outside the catalog: \"envios rapidos\" → \"ER\". */\nfunction monogram(raw: string): string {\n const words = (brandName(raw) ?? raw).split(/\\s+/).filter(Boolean)\n const letters = words.length > 1 ? words.slice(0, 2).map((w) => w[0]) : [(words[0] ?? '?').slice(0, 2)]\n return letters.join('').toUpperCase()\n}\n\n/** What the mark ended up drawing: the provider's logo, the bundled real logo, or the typographic fallback. */\nexport type BrandMarkSource = 'provider' | 'logo' | 'badge'\n\nconst PLATE_RING = 'var(--sf-brand-mark-ring, rgb(127 127 127 / 0.35))'\n/** Neutral plate behind a real logo: always white, so an unrecolored logo reads the same on light and dark themes. */\nconst PLATE_BG = 'var(--sf-brand-mark-plate, #fff)'\n\n/** Box of a real logo: fixed height, width follows the logo's aspect ratio (clamped), so it never shifts the layout. */\nexport function logoBox(ar: number, size: number) {\n const pad = Math.max(2, Math.round(size * 0.16))\n const padX = Math.max(3, Math.round(size * 0.2))\n const innerH = size - pad * 2\n const maxW = size * 2.6\n const innerW = Math.min(innerH * ar, maxW)\n const imgH = Math.min(innerH, innerW / ar)\n return { width: Math.round(Math.max(innerW, innerH * 0.9) + padX * 2), height: size, imgW: Math.round(innerW), imgH: Math.round(imgH), pad, padX }\n}\n\n/**\n * The mark of a carrier, card network, wallet or cash point. Precedence: the provider's `logoUrl` (https, lazy) > the\n * real logo bundled with the package (inline data URI: no network request, same size on the server and in the browser)\n * > a typographic badge in the brand color for the brands without an available logo.\n *\n * Logos are never recolored; they sit on a white plate with a hairline (`--sf-brand-mark-ring`, plate color\n * `--sf-brand-mark-plate`) so they keep their contrast on light and dark themes. The element carries\n * `data-sf-brand-mark=\"<key>\"` and `data-sf-brand-source=\"provider|logo|badge\"`.\n */\nexport function BrandMark({ brand, logoUrl, size = 24, title, className }: BrandMarkProps) {\n const height = size\n const width = Math.round(size * 1.5)\n const a11y = title ? { role: 'img' as const, 'aria-label': title } : { 'aria-hidden': true as const }\n const logo = safeLogo(logoUrl)\n const found = findBrand(brand)\n const key = found?.key ?? 'generic'\n const style: CSSProperties = { width, height, flex: 'none' }\n const plate = (w: number, pad: number, padX: number): CSSProperties => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxSizing: 'border-box',\n flex: 'none',\n width: w,\n height,\n padding: `${pad}px ${padX}px`,\n background: PLATE_BG,\n border: `1px solid ${PLATE_RING}`,\n borderRadius: Math.round(size * 0.2),\n overflow: 'hidden',\n })\n if (logo) {\n const b = logoBox(1.5, size)\n return (\n <span className={className} style={plate(width, b.pad, b.padX)} data-sf-brand-mark={key} data-sf-brand-source=\"provider\" {...a11y}>\n <img\n src={logo}\n alt={title ?? ''}\n width={width - b.padX * 2}\n height={height - b.pad * 2}\n loading=\"lazy\"\n decoding=\"async\"\n style={{ objectFit: 'contain', maxWidth: '100%', maxHeight: '100%' }}\n {...(title ? {} : { 'aria-hidden': true })}\n />\n </span>\n )\n }\n const real = brandLogo(brand)\n if (found && real) {\n const b = logoBox(real.ar, size)\n // The plate is a role=\"img\" with the commercial name; the <img> inside is decorative so it is not announced twice.\n const label = title ?? found.name\n return (\n <span className={className} style={plate(b.width, b.pad, b.padX)} data-sf-brand-mark={key} data-sf-brand-source=\"logo\" {...(title ? { role: 'img', 'aria-label': label } : { 'aria-hidden': true })}>\n <img src={real.src} alt=\"\" width={b.imgW} height={b.imgH} decoding=\"async\" draggable={false} style={{ display: 'block', maxWidth: 'none' }} />\n </span>\n )\n }\n const ring = PLATE_RING\n if (found?.shape === 'mastercard') {\n return (\n <svg viewBox=\"0 0 48 32\" width={width} height={height} className={className} style={style} data-sf-brand-mark={key} data-sf-brand-source=\"badge\" focusable=\"false\" {...a11y}>\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill={found.bg} stroke={ring} />\n <circle cx=\"19\" cy=\"16\" r=\"9\" fill=\"#EB001B\" />\n <circle cx=\"29\" cy=\"16\" r=\"9\" fill=\"#F79E1B\" />\n <path d=\"M24 8.52a9 9 0 0 1 0 14.96a9 9 0 0 1 0-14.96z\" fill=\"#FF5F00\" />\n </svg>\n )\n }\n if (found?.shape === 'transfer') {\n // Generic bank-transfer badge (two opposing arrows + the name). SPEI has no logo we may redistribute (see\n // brands/LOGOS.md), so this is deliberately NOT an imitation of the official mark.\n const label = (found.mark ?? found.name).split('\\n')[0]!\n return (\n <svg viewBox=\"0 0 48 32\" width={width} height={height} className={className} style={style} data-sf-brand-mark={key} data-sf-brand-source=\"badge\" focusable=\"false\" {...a11y}>\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill={found.bg} stroke={ring} />\n <path d=\"M6 12h11m0 0-3-3m3 3-3 3M17 20H6m0 0 3-3m-3 3 3 3\" fill=\"none\" stroke={found.fg} strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <text x=\"33\" y=\"16.5\" dominantBaseline=\"central\" textAnchor=\"middle\" fill={found.fg} fontFamily=\"system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif\" fontWeight={800} fontSize={11} textLength={22} lengthAdjust=\"spacingAndGlyphs\">\n {label}\n </text>\n </svg>\n )\n }\n const text = found ? (found.mark ?? found.name) : monogram(brand ?? '')\n const bg = found?.bg ?? 'var(--sf-brand-mark-bg, #E7E9EE)'\n const fg = found?.fg ?? 'var(--sf-brand-mark-fg, #2B2F38)'\n const lines = text.split('\\n')\n const longest = Math.max(...lines.map((l) => l.length))\n // Short marks grow; long ones are squeezed into the badge (textLength) so every badge has the same box.\n const fontSize = lines.length > 1 ? (longest <= 5 ? 11 : 9.5) : longest <= 2 ? 15 : longest <= 4 ? 16 : 10\n const fit = (l: string) => (l.length > 5 ? { textLength: 40, lengthAdjust: 'spacingAndGlyphs' as const } : l.length === 4 ? { textLength: 36, lengthAdjust: 'spacingAndGlyphs' as const } : {})\n const italic = found?.key === 'visa' || found?.key === 'fedex' ? 'italic' : undefined\n const common = {\n textAnchor: 'middle' as const,\n fill: fg,\n fontFamily: \"system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif\",\n fontWeight: 800,\n fontSize,\n fontStyle: italic,\n }\n return (\n <svg viewBox=\"0 0 48 32\" width={width} height={height} className={className} style={style} data-sf-brand-mark={key} data-sf-brand-source=\"badge\" focusable=\"false\" {...a11y}>\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill={bg} stroke={ring} />\n {lines.length > 1 ? (\n lines.slice(0, 2).map((l, i) => (\n <text key={i} x=\"24\" y={i === 0 ? 15 : 25.5} {...common} {...fit(l)}>\n {l}\n </text>\n ))\n ) : (\n <text x=\"24\" y=\"16\" dominantBaseline=\"central\" letterSpacing={longest <= 4 ? 0.3 : 0} {...common} {...fit(text)}>\n {text}\n </text>\n )}\n </svg>\n )\n}\n","/**\n * Which carrier rates to show first. Pure: no DOM, no amounts computed (costs are only compared, as the server sends\n * them). A long quote (10+ services, several per carrier) becomes up to three recommended rows (the cheapest, the\n * fastest and the best balance of both) plus the rest grouped by carrier, so the buyer compares three things instead of\n * scanning a flat list.\n */\nimport type { ShippingRate } from '@asteby/storefront'\nimport { brandKey } from './brands.js'\n\n/** Why a rate is recommended. `best_value` balances price and arrival time. */\nexport type RateTag = 'cheapest' | 'fastest' | 'best_value'\n\nexport type RecommendedRate<R extends ShippingRate = ShippingRate> = { rate: R; tags: RateTag[] }\n\nexport type RateGroup<R extends ShippingRate = ShippingRate> = {\n /** Brand key of the carrier (`fedex`), or `''` for rates without one. */\n key: string\n /** Carrier as the server sends it (first rate of the group), for `BrandMark` and the group name. */\n carrier: string | null\n rates: R[]\n}\n\nexport type RecommendRatesOptions = {\n /** How many rates to recommend. Default 3. */\n count?: number\n /**\n * With this many rates or fewer every rate is recommended (no \"more options\"): hiding one or two rates behind a\n * toggle costs more than it saves. Default `count + 1`.\n */\n collapseAfter?: number\n /** Drop repeated services (same carrier and service, e.g. quoted by two providers), keeping the cheapest. Default true. */\n dedupe?: boolean\n}\n\nexport type RecommendedRates<R extends ShippingRate = ShippingRate> = {\n recommended: RecommendedRate<R>[]\n /** Everything else, grouped by carrier; groups ordered by their cheapest rate, rates by cost. */\n more: RateGroup<R>[]\n /** Number of rates in `more`. */\n moreCount: number\n}\n\nconst costOf = (r: ShippingRate) => {\n const n = Number(r.cost.amount)\n return Number.isFinite(n) ? n : null\n}\nconst daysOf = (r: ShippingRate) => r.eta_days_max ?? r.eta_days_min ?? null\nconst norm = (s: string | null | undefined) => (s ?? '').trim().toLowerCase()\nconst carrierKey = (r: ShippingRate) => (r.carrier ? brandKey(r.carrier) : r.provider ? brandKey(r.provider) : '')\n\n/** Repeated services (same carrier, same service code or title, same arrival): only the cheapest stays. Order kept. */\nexport function dedupeRates<R extends ShippingRate>(rates: readonly R[]): R[] {\n const best = new Map<string, R>()\n const keyOf = (r: R) => `${carrierKey(r)}|${norm(r.service_code) || norm(r.title)}|${daysOf(r) ?? ''}|${r.cost.currency_code}`\n for (const r of rates) {\n const k = keyOf(r)\n const prev = best.get(k)\n const c = costOf(r)\n if (!prev || (c !== null && (costOf(prev) === null || c < costOf(prev)!))) best.set(k, r)\n }\n const keep = new Set(best.values())\n return rates.filter((r) => keep.has(r))\n}\n\n/**\n * Up to `count` recommended rates and the rest by carrier.\n * - **cheapest**: lowest cost (only when every rate shares the currency); a tie goes to the faster one.\n * - **fastest**: fewest business days; a tie goes to the cheaper one. Only when some rate is strictly faster than the\n * cheapest, so the tag always tells the buyer something.\n * - **best_value**: the remaining rate with the best combined position in price and in time (sum of ranks), a tie goes\n * to the cheaper one. Fills the remaining slots.\n * Recommended rows come back cheapest first. Pickup is not a rate and is never hidden (the component shows it apart).\n */\nexport function recommendRates<R extends ShippingRate>(input: readonly R[], options: RecommendRatesOptions = {}): RecommendedRates<R> {\n const count = Math.max(1, options.count ?? 3)\n const rates = options.dedupe === false ? [...input] : dedupeRates(input)\n const collapseAfter = options.collapseAfter ?? count + 1\n const sameCurrency = new Set(rates.map((r) => r.cost.currency_code)).size <= 1\n const byCost = (a: R, b: R) => (costOf(a) ?? Infinity) - (costOf(b) ?? Infinity)\n const byDays = (a: R, b: R) => (daysOf(a) ?? Infinity) - (daysOf(b) ?? Infinity)\n const tags = new Map<R, RateTag[]>()\n const tag = (r: R, t: RateTag) => tags.set(r, [...(tags.get(r) ?? []), t])\n\n const cheapest = sameCurrency && rates.length > 1 ? [...rates].sort((a, b) => byCost(a, b) || byDays(a, b))[0] : undefined\n if (cheapest && costOf(cheapest) !== null) tag(cheapest, 'cheapest')\n const fastest = rates.length > 1 ? [...rates].sort((a, b) => byDays(a, b) || byCost(a, b))[0] : undefined\n if (fastest && daysOf(fastest) !== null && (!cheapest || fastest === cheapest || (daysOf(cheapest) ?? Infinity) > daysOf(fastest)!)) tag(fastest, 'fastest')\n\n const chosen: R[] = []\n for (const r of [cheapest, fastest]) if (r && tags.has(r) && !chosen.includes(r)) chosen.push(r)\n\n if (rates.length > collapseAfter) {\n // Rank in price and in time (ties share a rank); the best sum fills the remaining slots.\n const rank = (sorted: R[], val: (r: R) => number | null) => {\n const out = new Map<R, number>()\n let pos = 0\n let last: number | null | undefined\n sorted.forEach((r, i) => {\n const v = val(r)\n if (v !== last) pos = i\n last = v\n out.set(r, v === null ? sorted.length : pos)\n })\n return out\n }\n const priceRank = rank([...rates].sort(byCost), costOf)\n const timeRank = rank([...rates].sort(byDays), daysOf)\n const rest = rates\n .filter((r) => !chosen.includes(r))\n .sort((a, b) => priceRank.get(a)! + timeRank.get(a)! - (priceRank.get(b)! + timeRank.get(b)!) || byCost(a, b))\n let first = true\n for (const r of rest) {\n if (chosen.length >= count) break\n chosen.push(r)\n if (first) tag(r, 'best_value')\n first = false\n }\n } else {\n for (const r of rates) if (!chosen.includes(r)) chosen.push(r)\n }\n\n const recommended = chosen.sort(byCost).map((rate) => ({ rate, tags: tags.get(rate) ?? [] }))\n const groups = new Map<string, RateGroup<R>>()\n for (const r of [...rates].sort(byCost)) {\n if (chosen.includes(r)) continue\n const key = carrierKey(r)\n const g = groups.get(key) ?? { key, carrier: r.carrier ?? r.provider ?? null, rates: [] }\n g.rates.push(r)\n groups.set(key, g)\n }\n const more = [...groups.values()]\n return { recommended, more, moreCount: more.reduce((n, g) => n + g.rates.length, 0) }\n}\n\nexport type FlatRatesOptions = {\n /** Count used to decide the `best_value` tag, as in `recommendRates` (default 3: only with more than 4 services). */\n count?: number\n /** Drop repeated services keeping the cheapest. Default true. */\n dedupe?: boolean\n /** Id of the chosen rate: it stays in the list even if it is a repeated service. */\n keepId?: string | null\n}\n\n/**\n * ONE flat list for `layout=\"flat\"`: every service (repeated ones dropped, the cheapest stays), ordered from the\n * lowest to the highest price, with the same tags `recommendRates` assigns (cheapest, fastest and, on long quotes,\n * best_value) on the rows that earn them. Nothing is hidden or grouped.\n */\nexport function flatRates<R extends ShippingRate>(input: readonly R[], options: FlatRatesOptions = {}): RecommendedRate<R>[] {\n const count = options.count ?? 3\n const rates = options.dedupe === false ? [...input] : dedupeRates(input)\n const tags = new Map<R, RateTag[]>()\n for (const { rate, tags: t } of recommendRates(rates, { count, dedupe: false }).recommended) tags.set(rate, t)\n const list = [...rates]\n const kept = options.keepId ? input.find((r) => r.id === options.keepId) : undefined\n if (kept && !list.includes(kept)) list.push(kept)\n const byCost = (a: R, b: R) => (costOf(a) ?? Infinity) - (costOf(b) ?? Infinity)\n // Array.prototype.sort is stable: equal prices keep the server order.\n return list.sort(byCost).map((rate) => ({ rate, tags: tags.get(rate) ?? [] }))\n}\n","/**\n * Pure helpers for the \"Delivery\" step: how to name a carrier rate, its arrival time, which rate is the cheapest or the\n * fastest, and one human note for the quote deadline. No amounts are computed: `cost` is shown as the server sends it;\n * comparing two costs to flag the cheapest is the only arithmetic.\n */\nimport type { ShippingRate } from '@asteby/storefront'\nimport { brandName } from './brands.js'\n\nexport type DeliveryMessages = {\n /** `{n}` = business days. */\n etaOne: string\n etaMany: string\n /** `{min}` / `{max}` = business days. */\n etaRange: string\n etaUpTo: string\n etaFrom: string\n cheapest: string\n fastest: string\n free: string\n pickupTitle: string\n /** Quote deadline, `{time}` = local time. */\n quoteToday: string\n quoteTomorrow: string\n /** `{date}` = short date + time. */\n quoteLater: string\n quoteSoon: string\n partial: string\n loading: string\n /** The quote expired or changed and the rates were reloaded. */\n requoted: string\n /** Tag of the recommended rate that balances price and arrival time (`layout=\"recommended\"`). */\n bestValue: string\n /** Toggle of the other rates, `{n}` = how many. */\n moreOptions: string\n /** Title of the group of rates without a carrier. */\n otherCarriers: string\n /** The rates could not be quoted (`error`). */\n error: string\n retry: string\n /** The order reaches the free-shipping minimum: nothing to choose. */\n freeShipping: string\n freeShippingNote: string\n /** Screen-reader status when the rates are ready (`{n}` = how many). */\n ratesReady: string\n}\n\nconst ES: DeliveryMessages = {\n etaOne: 'Llega en 1 día hábil',\n etaMany: 'Llega en {n} días hábiles',\n etaRange: 'Llega en {min} a {max} días hábiles',\n etaUpTo: 'Llega en máximo {max} días hábiles',\n etaFrom: 'Llega en {min} días hábiles o más',\n cheapest: 'Más económico',\n fastest: 'Más rápido',\n free: 'Gratis',\n pickupTitle: 'Recoger en {name}',\n quoteToday: 'Precios de envío vigentes hasta las {time}.',\n quoteTomorrow: 'Precios de envío vigentes hasta mañana a las {time}.',\n quoteLater: 'Precios de envío vigentes hasta el {date}.',\n quoteSoon: 'Los precios de envío vencen pronto ({time}).',\n partial: 'Algunas paqueterías no respondieron a tiempo; estas son las opciones disponibles.',\n loading: 'Buscando opciones de envío…',\n requoted: 'Las tarifas de envío cambiaron y ya están actualizadas. Revisa tu envío antes de pagar.',\n bestValue: 'Recomendado',\n moreOptions: 'Ver más opciones ({n})',\n otherCarriers: 'Otras opciones',\n error: 'No pudimos consultar las opciones de envío en este momento.',\n retry: 'Intentar de nuevo',\n freeShipping: 'Envío gratis',\n freeShippingNote: 'Tu pedido ya incluye el envío: no tienes que elegir paquetería.',\n ratesReady: 'Opciones de envío listas ({n}).',\n}\n\nconst EN: DeliveryMessages = {\n etaOne: 'Arrives in 1 business day',\n etaMany: 'Arrives in {n} business days',\n etaRange: 'Arrives in {min} to {max} business days',\n etaUpTo: 'Arrives in up to {max} business days',\n etaFrom: 'Arrives in {min}+ business days',\n cheapest: 'Cheapest',\n fastest: 'Fastest',\n free: 'Free',\n pickupTitle: 'Pick up at {name}',\n quoteToday: 'Shipping prices valid until {time}.',\n quoteTomorrow: 'Shipping prices valid until tomorrow at {time}.',\n quoteLater: 'Shipping prices valid until {date}.',\n quoteSoon: 'Shipping prices expire soon ({time}).',\n partial: \"We couldn't reach every carrier. These are the options available now.\",\n loading: 'Looking for delivery options…',\n requoted: 'Shipping rates changed and are now up to date. Check your delivery before paying.',\n bestValue: 'Recommended',\n moreOptions: 'Show more options ({n})',\n otherCarriers: 'Other options',\n error: \"We couldn't get delivery options right now.\",\n retry: 'Try again',\n freeShipping: 'Free shipping',\n freeShippingNote: 'Shipping is included in your order: there is no carrier to choose.',\n ratesReady: 'Delivery options ready ({n}).',\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides. */\nexport function deliveryMessages(locale?: string | null, overrides?: Partial<DeliveryMessages> | null): DeliveryMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\n// A value that already ends in a period (\"9:39 p.m.\") does not get a second one from the template.\nconst fill = (tpl: string, vars: Record<string, string | number>) => tpl.replace(/\\{(\\w+)\\}/g, (_, k: string) => String(vars[k] ?? '')).replace(/\\.\\.$/, '.')\n\n/** Commercial carrier name of a rate (`fedex` → \"FedEx\"); `null` without carrier. */\nexport function rateCarrier(rate: Pick<ShippingRate, 'carrier'>): string | null {\n return brandName(rate.carrier)\n}\n\n/**\n * Service name without the carrier repeated: \"FedEx Express Saver\" with carrier `fedex` → \"Express Saver\". Falls back\n * to the title when stripping would leave nothing.\n */\nexport function rateService(rate: Pick<ShippingRate, 'title' | 'carrier'>): string {\n const title = rate.title.trim()\n const carrier = rateCarrier(rate)\n if (!carrier) return title\n for (const prefix of [carrier, rate.carrier ?? '']) {\n if (!prefix) continue\n if (title.toLowerCase().startsWith(prefix.toLowerCase())) {\n const rest = title.slice(prefix.length).replace(/^[\\s·:|-]+/, '')\n if (rest) return rest\n }\n }\n return title\n}\n\n/** Arrival time of a rate: business days from the provider, else the server `eta` text as is. */\nexport function rateEta(\n rate: Pick<ShippingRate, 'eta' | 'eta_days_min' | 'eta_days_max'>,\n messages: DeliveryMessages = ES,\n): string | null {\n const { eta_days_min: min, eta_days_max: max } = rate\n if (typeof min === 'number' && typeof max === 'number') {\n if (min === max) return min === 1 ? messages.etaOne : fill(messages.etaMany, { n: min })\n return fill(messages.etaRange, { min, max })\n }\n if (typeof max === 'number') return max === 1 ? messages.etaOne : fill(messages.etaUpTo, { max })\n if (typeof min === 'number') return min === 1 ? messages.etaOne : fill(messages.etaFrom, { min })\n return rate.eta ?? null\n}\n\nexport type RateBadge = 'cheapest' | 'fastest'\n\nconst costOf = (r: ShippingRate) => {\n const n = Number(r.cost.amount)\n return Number.isFinite(n) ? n : null\n}\nconst daysOf = (r: ShippingRate) => r.eta_days_max ?? r.eta_days_min ?? null\n\n/**\n * Badges per rate id. Only with two or more rates, only when one rate is strictly the cheapest (same currency) or\n * strictly the fastest: a tie gets no badge, so the badge always tells the buyer something.\n */\nexport function rateBadges(rates: readonly ShippingRate[]): Map<string, RateBadge[]> {\n const out = new Map<string, RateBadge[]>()\n if (rates.length < 2) return out\n const add = (id: string, b: RateBadge) => out.set(id, [...(out.get(id) ?? []), b])\n const unique = (values: Array<[string, number | null]>) => {\n const known = values.filter((v): v is [string, number] => v[1] !== null)\n if (known.length < 2) return null\n const min = Math.min(...known.map((v) => v[1]))\n const winners = known.filter((v) => v[1] === min)\n return winners.length === 1 ? winners[0]![0] : null\n }\n const currencies = new Set(rates.map((r) => r.cost.currency_code))\n if (currencies.size === 1) {\n const id = unique(rates.map((r) => [r.id, costOf(r)]))\n if (id) add(id, 'cheapest')\n }\n const fast = unique(rates.map((r) => [r.id, daysOf(r)]))\n if (fast) add(fast, 'fastest')\n return out\n}\n\n/** Earliest `expires_at` of the rates (the deadline of the whole list), or `null`. */\nexport function quoteDeadline(rates: readonly Pick<ShippingRate, 'expires_at'>[]): Date | null {\n let best: Date | null = null\n for (const r of rates) {\n if (!r.expires_at) continue\n const d = new Date(r.expires_at)\n if (Number.isNaN(d.getTime())) continue\n if (!best || d < best) best = d\n }\n return best\n}\n\nexport type QuoteNote = { text: string; soon: boolean }\n\n/**\n * One human note for the quote deadline, in the buyer's time zone (or `timeZone`): \"valid until 9:39 p.m.\", \"until\n * tomorrow at…\", \"until Oct 24, …\", or \"expire soon\" within `soonMinutes` (default 15). `null` when already past.\n */\nexport function quoteNote(\n deadline: Date | null,\n opts: { locale?: string; now?: Date; timeZone?: string; soonMinutes?: number; messages?: DeliveryMessages } = {},\n): QuoteNote | null {\n if (!deadline) return null\n const now = opts.now ?? new Date()\n const left = deadline.getTime() - now.getTime()\n if (left <= 0) return null\n const m = opts.messages ?? ES\n const locale = opts.locale ?? 'es-MX'\n const tz = opts.timeZone ? { timeZone: opts.timeZone } : {}\n const time = new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: '2-digit', ...tz }).format(deadline)\n if (left <= (opts.soonMinutes ?? 15) * 60_000) return { text: fill(m.quoteSoon, { time }), soon: true }\n const day = (d: Date) => new Intl.DateTimeFormat('en-CA', { year: 'numeric', month: '2-digit', day: '2-digit', ...tz }).format(d)\n if (day(deadline) === day(now)) return { text: fill(m.quoteToday, { time }), soon: false }\n if (day(deadline) === day(new Date(now.getTime() + 86_400_000))) return { text: fill(m.quoteTomorrow, { time }), soon: false }\n const date = new Intl.DateTimeFormat(locale, { day: 'numeric', month: 'short', hour: 'numeric', minute: '2-digit', ...tz }).format(deadline)\n return { text: fill(m.quoteLater, { date }), soon: false }\n}\n\n/** Error codes a server uses (or will use) when the chosen rate is no longer quotable. */\nconst QUOTE_CODES = new Set(['quote_expired', 'rate_expired', 'rate_changed', 'rate_unavailable', 'rate_not_found', 'stale_rate', 'invalid_rate'])\n\n/**\n * `true` when saving a shipping rate failed because the quote expired or the rates changed, so the shop should reload\n * the rates (and keep the address) instead of showing a generic failure. Recognizes the explicit codes\n * (`quote_expired`, `rate_expired`…, any status), a `409`, and the generic `422` on the rate field that older servers\n * answer when the provider re-quoted with new ids. 5xx and other 4xx stay real failures.\n */\nexport function isQuoteChange(err: { status?: number; code?: string | null; field?: string | null } | null | undefined): boolean {\n if (!err) return false\n if (err.code && QUOTE_CODES.has(err.code)) return true\n if (err.status === 409) return true\n return err.status === 422 && (err.field === 'rate_id' || err.field === 'delivery' || err.field === 'delivery.rate_id' || !err.field)\n}\n\n/**\n * The rate of a fresh quote that matches the one the buyer had chosen (same carrier and service), so a re-quote keeps\n * the choice even though the provider issued new ids. `null` when that service is no longer offered.\n */\nexport function matchRate<R extends Pick<ShippingRate, 'id' | 'carrier' | 'service_code' | 'title'>>(previous: Pick<ShippingRate, 'carrier' | 'service_code' | 'title'> | null | undefined, rates: readonly R[]): R | null {\n if (!previous) return null\n const norm = (s: string | null | undefined) => (s ?? '').trim().toLowerCase()\n const sameCarrier = (r: R) => norm(r.carrier) === norm(previous.carrier)\n if (previous.service_code) {\n const hit = rates.find((r) => sameCarrier(r) && norm(r.service_code) === norm(previous.service_code))\n if (hit) return hit\n }\n return rates.find((r) => sameCarrier(r) && norm(r.title) === norm(previous.title)) ?? null\n}\n","import { useMemo, useSyncExternalStore, type CSSProperties, type ReactNode } from 'react'\nimport { formatMoney, type Money, type PickupOption, type ShippingRate } from '@asteby/storefront'\nimport { useResolvedLocale } from '../locale.js'\nimport { BrandMark } from './brand-mark.js'\nimport { flatRates, recommendRates, type RateTag } from './recommend.js'\nimport {\n deliveryMessages,\n quoteDeadline,\n quoteNote,\n rateBadges,\n rateCarrier,\n rateEta,\n rateService,\n type DeliveryMessages,\n type RateBadge,\n} from './delivery.js'\n\nexport type DeliveryOptionsClassNames = Partial<\n Record<\n | 'root'\n | 'option'\n | 'radio'\n | 'mark'\n | 'body'\n | 'title'\n | 'carrier'\n | 'service'\n | 'eta'\n | 'badges'\n | 'badge'\n | 'price'\n | 'free'\n | 'freeBanner'\n | 'note'\n | 'partial'\n | 'skeleton'\n | 'more'\n | 'moreSummary'\n | 'group'\n | 'groupTitle'\n | 'error'\n | 'retry',\n string\n >\n>\n\nexport type DeliveryOptionsProps = {\n rates: readonly ShippingRate[]\n pickup?: readonly PickupOption[]\n /** Radio group name. Default `delivery_choice`. */\n name?: string\n /** Form value of a rate. Default `rate:<id>`. */\n rateValue?: (rate: ShippingRate) => string\n /** Form value of a pickup branch. Default `pickup:<branch_id>`. */\n pickupValue?: (branch: PickupOption) => string\n /** Uncontrolled preselection. Default: the first rate. `null`: nothing preselected. */\n defaultValue?: string | null\n /** Controlled value (use with `onValueChange`). */\n value?: string\n onValueChange?: (value: string) => void\n /** Some provider did not answer (`DeliveryOptions.partial`): one neutral note above the list. */\n partial?: boolean\n /** The previous quote expired or changed and these rates are fresh: one status note above the list. */\n requoted?: boolean\n /** Rates are being quoted again: skeleton rows (no rates yet) or the current rows dimmed, `aria-busy`. */\n loading?: boolean\n /**\n * The order reaches the free-shipping minimum (`DeliveryOptions.free`, configured by the organization): no carrier\n * selector, just \"Free shipping\" and the rate is submitted by itself so the buyer goes straight to payment.\n * With pickup branches the plain rows stay (delivery or pickup is still a real choice).\n */\n free?: boolean\n /** Rates just arrived by themselves (auto quote): a polite screen-reader status says how many. */\n announceReady?: boolean\n /** Quote deadline note: `always` (default), only when it is `soon`, or `never`. */\n quoteNote?: 'always' | 'soon' | 'never'\n /** Time zone of the note. Default: the buyer's browser. */\n timeZone?: string\n /** Show the carrier marks. Default true. */\n marks?: boolean\n /** Cheapest / fastest badges. Default true. */\n badges?: boolean\n required?: boolean\n locale?: string\n messages?: Partial<DeliveryMessages>\n renderAmount?: (amount: Money) => ReactNode\n classNames?: DeliveryOptionsClassNames\n /**\n * `list` (default): every rate, as the server orders them. `recommended`: up to `recommendedCount` rates (cheapest,\n * fastest and the best balance, tagged) and the rest under \"Show more options (N)\", grouped by carrier so the carrier\n * name is not repeated on every row. Repeated services are dropped (the cheapest stays). Works without JavaScript\n * (`<details>`); it opens by itself when the chosen rate is inside. `flat`: ONE plain list like most online shops:\n * every service ordered from the lowest to the highest price, repeated services dropped (the cheapest stays), the\n * cheapest / fastest / recommended tags on the rows that earn them, no `<details>` and no groups. The chosen rate is\n * always listed, and with no explicit default the preselected row is the first one (the cheapest).\n */\n layout?: 'list' | 'recommended' | 'flat'\n /** Rates recommended in `layout=\"recommended\"`. Default 3. */\n recommendedCount?: number\n /**\n * The rates could not be quoted (provider down, timeout): one friendly alert instead of the list, with a retry button\n * when `onRetry` is set. `true` uses the default text; a string replaces it.\n */\n error?: boolean | string\n onRetry?: () => void\n /** `data-testid` of every radio. */\n testId?: string\n /** Rows the shop renders before the rates (e.g. \"home delivery, rates after the address\"). */\n children?: ReactNode\n}\n\nconst SR_ONLY: CSSProperties = { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)', whiteSpace: 'nowrap' }\n\nconst useHydrated = () =>\n useSyncExternalStore(\n () => () => {},\n () => true,\n () => false,\n )\n\nfunction PickupGlyph({ size = 24 }: { size?: number }) {\n return (\n <svg viewBox=\"0 0 48 32\" width={Math.round(size * 1.5)} height={size} aria-hidden=\"true\" focusable=\"false\" style={{ flex: 'none' }} data-sf-brand-mark=\"pickup\">\n <rect x=\"0.5\" y=\"0.5\" width=\"47\" height=\"31\" rx=\"5\" fill=\"var(--sf-brand-mark-bg, #E7E9EE)\" stroke=\"var(--sf-brand-mark-ring, rgb(127 127 127 / 0.35))\" />\n <path d=\"M15 13.5 17 9h14l2 4.5M15 13.5h18M15 13.5V23h18v-9.5M21 23v-5h6v5\" fill=\"none\" stroke=\"var(--sf-brand-mark-fg, #2B2F38)\" strokeWidth=\"1.8\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\n/**\n * The rates and pickup branches of \"Delivery\" as native radios: carrier mark and commercial name, readable service,\n * arrival time, cheapest / fastest badges, price as the server sends it, and ONE note for the quote deadline in the\n * buyer's time zone. Works without JavaScript (plain radios in the page form); the note appears after hydration in a\n * reserved line, so it never shifts the layout.\n *\n * Wrap it in the shop's own `<fieldset><legend>`. Style it with `classNames` and/or the default sheet\n * `@asteby/storefront-react/checkout.css`.\n */\nexport function DeliveryOptions(props: DeliveryOptionsProps) {\n const {\n rates,\n pickup = [],\n name = 'delivery_choice',\n rateValue = (r) => `rate:${r.id}`,\n pickupValue = (b) => `pickup:${b.branch_id}`,\n value,\n onValueChange,\n partial = false,\n requoted = false,\n loading = false,\n timeZone,\n marks = true,\n badges: showBadges = true,\n required = true,\n renderAmount,\n classNames: cx = {},\n testId,\n children,\n layout = 'list',\n error,\n onRetry,\n free = false,\n } = props\n const locale = useResolvedLocale(props.locale)\n const m = useMemo(() => deliveryMessages(locale, props.messages), [locale, props.messages])\n const hydrated = useHydrated()\n const badges = useMemo(() => (showBadges ? rateBadges(rates) : new Map<string, RateBadge[]>()), [rates, showBadges])\n const flat = useMemo(\n () => (layout === 'flat' ? flatRates(rates, { count: props.recommendedCount ?? 3, keepId: value ? rates.find((r) => rateValue(r) === value)?.id ?? null : null }) : null),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [layout, rates, props.recommendedCount, value],\n )\n const firstRate = flat ? flat[0]?.rate : rates[0]\n const firstValue = firstRate ? rateValue(firstRate) : null\n const defaultValue = props.defaultValue === undefined ? firstValue : props.defaultValue\n const amount = (money: Money) => (Number(money.amount) === 0 ? <span className={cx.free} data-sf-delivery-free>{m.free}</span> : renderAmount ? renderAmount(money) : formatMoney(money, locale))\n const mode = props.quoteNote ?? 'always'\n const deadline = mode === 'never' ? null : quoteDeadline(rates)\n const note = hydrated && deadline ? quoteNote(deadline, { locale, messages: m, ...(timeZone ? { timeZone } : {}) }) : null\n const shownNote = note && (mode === 'always' || note.soon) ? note : null\n\n const current = value ?? defaultValue ?? null\n const plan = useMemo(\n () => (layout === 'recommended' ? recommendRates(rates, { count: props.recommendedCount ?? 3 }) : null),\n [layout, rates, props.recommendedCount],\n )\n const inMore = plan ? plan.more.some((g) => g.rates.some((r) => rateValue(r) === current)) : false\n\n const radio = (v: string, describedBy?: string) => (\n <input\n type=\"radio\"\n name={name}\n value={v}\n required={required}\n className={cx.radio}\n {...(describedBy ? { 'aria-describedby': describedBy } : {})}\n {...(value !== undefined ? { checked: value === v, onChange: () => onValueChange?.(v) } : { defaultChecked: v === defaultValue, ...(onValueChange ? { onChange: () => onValueChange(v) } : {}) })}\n {...(testId ? { 'data-testid': testId } : {})}\n />\n )\n\n const tagText = (t: RateTag | RateBadge) => (t === 'cheapest' ? m.cheapest : t === 'fastest' ? m.fastest : m.bestValue)\n\n /** One row: [radio] [mark] carrier + service / arrival / tags ........ price. In a carrier group the mark and the carrier name live in the group title. */\n const rateRow = (rate: ShippingRate, opts: { tags: readonly (RateTag | RateBadge)[]; grouped?: boolean }) => {\n const carrier = rateCarrier(rate)\n const service = rateService(rate)\n const eta = rateEta(rate, m)\n return (\n <label key={rate.id} className={cx.option} data-sf-delivery-option data-loading={loading || undefined} data-grouped={opts.grouped || undefined}>\n {radio(rateValue(rate))}\n {marks && !opts.grouped ? (\n // Fixed slot: logos of different widths do not push the text column out of line.\n <span data-sf-delivery-mark aria-hidden=\"true\">\n <BrandMark brand={rate.carrier ?? rate.provider ?? rate.title} size={28} {...(cx.mark ? { className: cx.mark } : {})} />\n </span>\n ) : null}\n <span className={cx.body} data-sf-delivery-body>\n <span className={cx.title} data-sf-delivery-title>\n {carrier ? (\n opts.grouped ? (\n <>\n {/* The group title already shows the carrier: only screen readers hear it again (each radio keeps a full name). */}\n <span style={SR_ONLY}>{carrier} </span>\n <span className={cx.carrier} data-sf-delivery-carrier data-sf-delivery-service-only>\n {service}\n </span>\n </>\n ) : (\n <>\n <span className={cx.carrier} data-sf-delivery-carrier>\n {carrier}\n </span>{' '}\n <span className={cx.service} data-sf-delivery-service>\n {service}\n </span>\n </>\n )\n ) : (\n <span className={cx.carrier} data-sf-delivery-carrier>\n {service}\n </span>\n )}\n </span>\n {eta ? (\n <span className={cx.eta} data-sf-delivery-eta>\n {eta}\n </span>\n ) : null}\n {opts.tags.length ? (\n <span className={cx.badges} data-sf-delivery-badges>\n {opts.tags.map((b) => (\n <span key={b} className={cx.badge} data-sf-delivery-badge={b}>\n {tagText(b)}\n </span>\n ))}\n </span>\n ) : null}\n </span>\n <span className={cx.price} data-sf-delivery-price>\n {amount(rate.cost)}\n </span>\n </label>\n )\n }\n\n const errorText = error ? (typeof error === 'string' ? error : m.error) : null\n // Free shipping: the only thing left to say. The cheapest non-pickup rate travels as a hidden value.\n const freeRate = free && !loading && pickup.length === 0 ? (rates.find((r) => !r.pickup) ?? null) : null\n\n return (\n <div className={cx.root} data-sf-delivery data-layout={layout} aria-busy={loading || undefined}>\n {partial && !errorText ? (\n <p role=\"status\" className={cx.partial} data-sf-delivery-partial>\n {m.partial}\n </p>\n ) : null}\n {requoted ? (\n <p role=\"status\" className={cx.partial} data-sf-delivery-requoted>\n {m.requoted}\n </p>\n ) : null}\n {loading ? (\n <span style={SR_ONLY} role=\"status\" data-sf-delivery-loading>\n {m.loading}\n </span>\n ) : null}\n {props.announceReady && !loading && rates.length > 0 ? (\n <span style={SR_ONLY} role=\"status\" data-sf-delivery-ready>\n {freeRate ? m.freeShipping : m.ratesReady.replace('{n}', String(rates.length))}\n </span>\n ) : null}\n {errorText && rates.length === 0 && !loading ? (\n <div role=\"alert\" className={cx.error} data-sf-delivery-error>\n <p>{errorText}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-delivery-retry>\n {m.retry}\n </button>\n ) : null}\n </div>\n ) : null}\n {freeRate ? (\n <div className={cx.freeBanner} role={props.announceReady ? undefined : 'status'} data-sf-delivery-free-banner>\n <input type=\"hidden\" name={name} value={rateValue(freeRate)} {...(testId ? { 'data-testid': testId } : {})} />\n <p className={cx.free} data-sf-delivery-free-title>\n <strong>{m.freeShipping}</strong>\n </p>\n <p className={cx.note}>{m.freeShippingNote}</p>\n </div>\n ) : null}\n {children}\n {loading && rates.length === 0\n ? [0, 1, 2].map((i) => <div key={i} className={cx.skeleton} data-sf-delivery-skeleton aria-hidden=\"true\" />)\n : null}\n {freeRate ? null : flat\n ? flat.map(({ rate, tags }) => rateRow(rate, { tags: showBadges ? tags : [] }))\n : plan\n ? plan.recommended.map(({ rate, tags }) => rateRow(rate, { tags: showBadges ? tags : [] }))\n : rates.map((rate) => rateRow(rate, { tags: badges.get(rate.id) ?? [] }))}\n {plan && plan.moreCount > 0 ? (\n <details className={cx.more} data-sf-delivery-more {...(inMore ? { open: true } : {})}>\n <summary className={cx.moreSummary} data-sf-delivery-more-summary>\n {m.moreOptions.replace('{n}', String(plan.moreCount))}\n </summary>\n <div data-sf-delivery-groups>\n {plan.more.map((g) => {\n const carrierName = g.carrier ? rateCarrier({ carrier: g.carrier }) : null\n const id = `${name}-group-${g.key || 'other'}`\n return (\n <div key={g.key || 'other'} role=\"group\" aria-labelledby={id} className={cx.group} data-sf-delivery-group={g.key || 'other'}>\n <p id={id} className={cx.groupTitle} data-sf-delivery-group-title>\n {marks && g.carrier ? <BrandMark brand={g.carrier} size={22} /> : null}\n <span>{carrierName ?? m.otherCarriers}</span>\n </p>\n {g.rates.map((rate) => rateRow(rate, { tags: [], grouped: Boolean(carrierName) }))}\n </div>\n )\n })}\n </div>\n </details>\n ) : null}\n {pickup.map((b) => (\n <label key={b.branch_id} className={cx.option} data-sf-delivery-option data-sf-delivery-pickup>\n {radio(pickupValue(b))}\n {marks ? <PickupGlyph size={28} /> : null}\n <span className={cx.body} data-sf-delivery-body>\n <span className={cx.title} data-sf-delivery-title>\n <span className={cx.carrier} data-sf-delivery-carrier>\n {m.pickupTitle.replace('{name}', b.name)}\n </span>\n </span>\n {b.address || b.city ? (\n <span className={cx.eta} data-sf-delivery-eta>\n {[b.address, b.city].filter(Boolean).join(', ')}\n </span>\n ) : null}\n </span>\n <span className={cx.price} data-sf-delivery-price>\n <span className={cx.free} data-sf-delivery-free>\n {m.free}\n </span>\n </span>\n </label>\n ))}\n {deadline ? (\n <p className={cx.note} data-sf-delivery-note data-soon={shownNote?.soon || undefined} aria-live=\"polite\">\n {shownNote?.text ?? ''}\n </p>\n ) : null}\n </div>\n )\n}\n","'use client'\n/**\n * One-step delivery: as soon as the address is complete the shipping rates load by themselves (debounced), the default\n * rate is preselected and payment is ready. No \"continue\" button, no choosing again.\n *\n * The hook is transport-agnostic: the shop gives `quote(address)` (save the address in the cart, read the delivery\n * options) and renders the result with `<DeliveryOptions>`. Only the fields that change the price re-quote (country,\n * postal code, state, city): editing the street number, the phone or the reference does not. Free shipping and fixed\n * prices come from the server (`DeliveryOptions.free` / `.fixed`, configured per organization): nothing here knows an\n * amount.\n */\nimport type { DeliveryOptions, ShippingRate } from '@asteby/storefront'\nimport { type RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { matchRate } from './delivery.js'\n\n/** What the shop reads from the address fields of the form. Keys follow the `name` of each input. */\nexport type QuoteAddress = {\n country_code: string\n zip: string\n province: string\n city: string\n neighborhood: string\n address1: string\n [key: string]: string\n}\n\nexport type AutoQuoteStatus =\n /** Address incomplete: nothing is quoted yet. */\n | 'idle'\n /** Complete address, waiting for the buyer to stop typing. */\n | 'waiting'\n | 'loading'\n | 'ready'\n | 'error'\n\nexport type UseAutoQuoteOptions = {\n /** The form that holds the address inputs (events are listened to on it). */\n formRef: RefObject<HTMLFormElement | null>\n /**\n * Saves the address and returns the delivery options for it. Receives an `AbortSignal` that fires when a newer\n * quote replaces this one: ignore its result then (the hook already does).\n *\n * Only price fields re-quote, so the address saved here can lag behind the form (street, number, reference): the\n * shop's submit must save the full address again before choosing the delivery and paying. The server validates the\n * chosen rate against the saved address (a rate of another postal code is refused), so a stale quote never sets a price.\n */\n quote: (address: QuoteAddress, signal: AbortSignal) => Promise<DeliveryOptions>\n /** `name` of each address input. Default: `country_code`, `zip`, `province`, `city`, `neighborhood`, `address1`. */\n names?: Partial<Record<'country_code' | 'zip' | 'province' | 'city' | 'neighborhood' | 'address1', string>>\n /** Fields that must be filled to quote. Default: all of the six names above except `country_code`. */\n required?: ReadonlyArray<keyof QuoteAddress>\n /** A postal code is valid to quote. Default: 5 digits. */\n validPostalCode?: (zip: string) => boolean\n /** Country used when the form has no country input. Default `MX`. */\n defaultCountry?: string\n /** Quiet time after the last keystroke. Default 600 ms. */\n debounceMs?: number\n /** Picks the preselected rate. Default: {@link defaultRate} (the cheapest). */\n pickDefault?: (delivery: DeliveryOptions) => ShippingRate | null\n /** The rate (`rate:<id>`) already saved in the cart: kept when the quote still offers it. */\n savedValue?: string | null\n enabled?: boolean\n /** Fires with the options of every successful quote. */\n onQuoted?: (delivery: DeliveryOptions) => void\n}\n\nexport type UseAutoQuoteResult = {\n status: AutoQuoteStatus\n /** The last good quote (kept while a new one loads, so the list does not flash). `null` before the first. */\n delivery: DeliveryOptions | null\n /** `rate:<id>` to preselect (the saved rate if still offered, else the default), `null` when none. */\n defaultValue: string | null\n /** The address the current `delivery` was quoted for. */\n quotedFor: QuoteAddress | null\n /** Quote again now (retry button). */\n retry: () => void\n /** Plain-language status for a live region (\"Buscando…\", \"Listo\", …) keys, not text. */\n announce: 'searching' | 'ready' | 'free' | 'error' | null\n}\n\nexport const DEFAULT_QUOTE_NAMES = {\n country_code: 'country_code',\n zip: 'zip',\n province: 'province',\n city: 'city',\n neighborhood: 'neighborhood',\n address1: 'address1',\n} as const\n\nconst DEFAULT_REQUIRED = ['zip', 'province', 'city', 'neighborhood', 'address1'] as const\n\n/** Only these change the price of a shipment; any other field of the form (street, phone, reference…) never re-quotes. */\nexport const QUOTE_KEYS = ['country_code', 'zip', 'province', 'city'] as const\n\nconst norm = (v: string) => v.normalize('NFD').replace(/[̀-ͯ]/g, '').trim().toLowerCase()\n\n/** Identity of a quote: equal fingerprints share the same rates. */\nexport function quoteFingerprint(a: Pick<QuoteAddress, (typeof QUOTE_KEYS)[number]>): string {\n return QUOTE_KEYS.map((k) => norm(a[k] ?? '')).join('|')\n}\n\n/** The default rate: the cheapest one that is not a pickup (ties keep the server order, which already puts the best first). */\nexport function defaultRate(delivery: Pick<DeliveryOptions, 'rates'>): ShippingRate | null {\n let best: ShippingRate | null = null\n for (const r of delivery.rates) {\n if (r.pickup) continue\n if (!best || Number(r.cost.amount) < Number(best.cost.amount)) best = r\n }\n return best\n}\n\n/** Reads the address from the form; `null` when it is not complete yet. */\nexport function readQuoteAddress(\n form: HTMLFormElement | null,\n opts: Pick<UseAutoQuoteOptions, 'names' | 'required' | 'validPostalCode' | 'defaultCountry'> = {},\n): QuoteAddress | null {\n if (!form) return null\n const names = { ...DEFAULT_QUOTE_NAMES, ...opts.names }\n const data = new FormData(form)\n const get = (name: string) => String(data.get(name) ?? '').trim()\n const address: QuoteAddress = {\n country_code: get(names.country_code) || opts.defaultCountry || 'MX',\n zip: get(names.zip),\n province: get(names.province),\n city: get(names.city),\n neighborhood: get(names.neighborhood),\n address1: get(names.address1),\n }\n const valid = opts.validPostalCode ?? ((z: string) => /^\\d{5}$/.test(z))\n if (!valid(address.zip)) return null\n for (const k of opts.required ?? DEFAULT_REQUIRED) if (!address[k]) return null\n return address\n}\n\nexport function useAutoQuote(options: UseAutoQuoteOptions): UseAutoQuoteResult {\n const { formRef, debounceMs = 600, enabled = true } = options\n const [status, setStatus] = useState<AutoQuoteStatus>('idle')\n const [delivery, setDelivery] = useState<DeliveryOptions | null>(null)\n const [quotedFor, setQuotedFor] = useState<QuoteAddress | null>(null)\n const opts = useRef(options)\n opts.current = options\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n const inflight = useRef<AbortController | null>(null)\n const quotedFp = useRef<string | null>(null)\n const pendingFp = useRef<string | null>(null)\n\n const run = useCallback((address: QuoteAddress, fp: string) => {\n inflight.current?.abort()\n const ctl = new AbortController()\n inflight.current = ctl\n pendingFp.current = fp\n setStatus('loading')\n opts.current\n .quote(address, ctl.signal)\n .then((d) => {\n if (ctl.signal.aborted) return\n quotedFp.current = fp\n pendingFp.current = null\n setDelivery(d)\n setQuotedFor(address)\n setStatus('ready')\n opts.current.onQuoted?.(d)\n })\n .catch(() => {\n if (ctl.signal.aborted) return\n pendingFp.current = null\n // The next change of the address (or the retry button) quotes again.\n quotedFp.current = null\n setStatus('error')\n })\n }, [])\n\n const evaluate = useCallback(\n (force: boolean) => {\n const address = readQuoteAddress(formRef.current, opts.current)\n if (!address) {\n if (timer.current) clearTimeout(timer.current)\n timer.current = null\n inflight.current?.abort()\n pendingFp.current = null\n // The last quote no longer describes what the form says (e.g. the postal code is being edited): not ready to\n // pay. Completing the same address again is `ready` at once (same fingerprint, nothing is asked).\n setStatus('idle')\n return\n }\n const fp = quoteFingerprint(address)\n // Same price-relevant fields as the quote we have (or are getting): nothing to ask again.\n if (!force && (fp === quotedFp.current || fp === pendingFp.current)) {\n if (timer.current) clearTimeout(timer.current)\n timer.current = null\n if (fp === quotedFp.current) setStatus('ready')\n return\n }\n if (timer.current) clearTimeout(timer.current)\n if (force) {\n timer.current = null\n run(address, fp)\n return\n }\n setStatus('waiting')\n timer.current = setTimeout(() => {\n timer.current = null\n // The form may have changed while we waited.\n const latest = readQuoteAddress(formRef.current, opts.current)\n if (latest) run(latest, quoteFingerprint(latest))\n }, debounceMs)\n },\n [debounceMs, formRef, run],\n )\n\n useEffect(() => {\n const form = formRef.current\n if (!enabled || !form) return\n const onChange = () => evaluate(false)\n form.addEventListener('input', onChange)\n form.addEventListener('change', onChange)\n // Autofill and the postal-code lookup fill fields without typing: look once at mount and on the SDK's fill event.\n const first = setTimeout(onChange, 0)\n return () => {\n clearTimeout(first)\n form.removeEventListener('input', onChange)\n form.removeEventListener('change', onChange)\n if (timer.current) clearTimeout(timer.current)\n inflight.current?.abort()\n }\n }, [enabled, evaluate, formRef])\n\n const retry = useCallback(() => evaluate(true), [evaluate])\n\n const defaultValue = useMemo(() => {\n if (!delivery) return null\n const saved = opts.current.savedValue\n if (saved?.startsWith('rate:')) {\n const hit = delivery.rates.find((r) => `rate:${r.id}` === saved)\n if (hit) return `rate:${hit.id}`\n }\n const pick = (opts.current.pickDefault ?? defaultRate)(delivery)\n return pick ? `rate:${pick.id}` : null\n }, [delivery, options.savedValue])\n\n const announce: UseAutoQuoteResult['announce'] =\n status === 'loading' || status === 'waiting' ? 'searching' : status === 'error' ? 'error' : status === 'ready' ? (delivery?.free ? 'free' : 'ready') : null\n\n return { status, delivery, defaultValue, quotedFor, retry, announce }\n}\n\n"]}
|