From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.text.pandoc/33139 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: BPJ Newsgroups: gmane.text.pandoc Subject: Markdown in JSON (was: Parse metadata in defaults files as Markdown?) Date: Sun, 1 Oct 2023 12:50:08 +0200 Message-ID: References: <87r0mgof6d.fsf@zeitkraut.de> Reply-To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000005b1e5d0606a56c80" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5038"; mail-complaints-to="usenet@ciao.gmane.io" To: pandoc-discuss Original-X-From: pandoc-discuss+bncBCWMVYEK54FRB2U54WUAMGQE5ADWLTA-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Sun Oct 01 12:50:23 2023 Return-path: Envelope-to: gtp-pandoc-discuss@m.gmane-mx.org Original-Received: from mail-qt1-f187.google.com ([209.85.160.187]) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1qmu1m-0000vv-NJ for gtp-pandoc-discuss@m.gmane-mx.org; Sun, 01 Oct 2023 12:50:22 +0200 Original-Received: by mail-qt1-f187.google.com with SMTP id d75a77b69052e-4150f8480c5sf257944551cf.2 for ; Sun, 01 Oct 2023 03:50:22 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696157421; cv=pass; d=google.com; s=arc-20160816; b=Yo+jCAACKQ+CY0uNeoP/SOaNQerXKcCtvVcxVqZ7SyXHAM+pKUhuun1IrpOKmSfMC4 C7wVLSdd60Zg5VVh8h9Dh5414HIG9E7Mf0clu6npG4eKO3JNgIMqWSgCCSYJtU1SfcrA 7RDVoYbSPfp6FVdZPO+CAeWwpLGPKZ5ppX2AODUNy++Fcvz023vcfWfxqMdhkEmoiXNE XOVOru/DaPczi4nPixmdq3SCVvEGu4SQU6cRqfCUektf3fh6XfQwvRpcrPz5LZ2+/Kgj dulqmfQEuGblH6RuU7xQaQwgG9YZU0w9DWnAPX3nSndZJ9RnQfrKLcT2A14edSJyq5VV NOgg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:to:subject:message-id:date :from:in-reply-to:references:mime-version:sender:dkim-signature :dkim-signature; bh=BGvc8pTxjOTKLGhuQsitRMrOAqtl21ljWo5gksTjU1s=; fh=4cPfTtzleA5nPUC1EQtk197aIUeaT1ew1v/oILbLT2I=; b=UT20nxQYyKmdGo4qbB3aPFojM0s6vdD9/bqMts1uR+Gz9DhxrNycv6iHQTIxa/Vsmt 1vglZOHFglOmpsuGlI9QWc0CcESzYA7W/WkVE8UxNQaVle3hsKGB5jAU3X9WCP9MhS49 dIXewDzOm0kqTbvS/nrveXD2eBTlxhGoKVJwLUAlvciRBJiYvlnDaPiBl9zwdq6/C+AI xjkCiVc3/CEECM0j8VKMuPst9x7wPjbc0QzKgDU7jzT47cV6hUGWMVV3eRV+R2UEbXtj bDlt7GeTEAiCKSa3IDgJYFdGQjAj2bDn3P2zisQizaV6UZbZMfwGIqvOMzJORM97ari+ 4ekw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=TkCFmVFm; spf=pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::112f as permitted sender) smtp.mailfrom=melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1696157421; x=1696762221; darn=m.gmane-mx.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:subject :message-id:date:from:in-reply-to:references:mime-version:sender :from:to:cc:subject:date:message-id:reply-to; bh=BGvc8pTxjOTKLGhuQsitRMrOAqtl21ljWo5gksTjU1s=; b=LZdZvYn7K0NQFALIbfxw2ZZH7XSLJDv7nHkpEsAfwUVOLYm4edoroSDK1L/QXAfn/V 2ujCPJ3uIGVeZT6ao4ZTA8Ym/JRmGbOR4t4yyK44wJPOmzXBTo/1F74hKuKaCzM6UJNK Aa8oeqUbtKdOs+ztXC/1Kt+yvRdFfSH/JwF7J79o5v0LcKFMEiwFgzQzcHB8hmwtS9Uj kMGlQMaUJT5A15kmWbxX93zsvfzUUs/WrSuphM24G82vTm2mpw9ybJ6nm4TseFkoJPgU eoL5WwV1pljGrXh54hx/VUqOlf6anpjnfOk+O1UW5UeIY21e0hDd DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696157421; x=1696762221; darn=m.gmane-mx.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:subject :message-id:date:from:in-reply-to:references:mime-version:from:to:cc :subject:date:message-id:reply-to; bh=BGvc8pTxjOTKLGhuQsitRMrOAqtl21ljWo5gksTjU1s=; b=jko7gkUFRyXU46zqcjdC37mc3ndCXbsLIKBQUeUJRZcKMUkf6lXOjjiIAfzC64VeAz JTHFgGB43nEFqxb1pXy/M5satTTi+0Vpdur+KfjXf3G+1rOuklR9lJmjIVbtqWkOIwT8 5X+wkzfYGjTph+3BJx3Lgwv/a/S/pduBjtheia2QWf+S3xSgoL1z1ZpcWWJjRHdz+GpP Oe36QCbqStRP9uTfZFERjXpuemhjAmLCFOvptmoW1mtjtpMONopMa1EaPMYtgUrI9RaE XSQIp/TzfFWdqTQsuQiS3KJPL/YXKrST6FNWa/+zRmpNBojdi3jUbGWzch8K71ROvW X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696157421; x=1696762221; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:subject :message-id:date:from:in-reply-to:references:mime-version :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=BGvc8pTxjOTKLGhuQsitRMrOAqtl21ljWo5gksTjU1s=; b=aMgI57FTWfDEC5EqATVGklrU68n/s8+LItbreyxX2WHbYlLIfi+pZV9QJp8D//sZcZ 4T/07cu0LfMZbEhobzP3nj6EQW8LEycMIpL7fgdEil9PZuo/zaw6fZgvcc0QzPOmg22n J6p/kyb/oTVYEUx+Pn2oer5A9oZqpcmLQ6sMOjP2O+k6dEps6JAiAMx+MKg7zzmZu3H+ e10EnClM1G+IpmSoly8+3aLQhkbE0emltZcPo50RqQeke8Y3KHNm82YwtwEx5jcFux+y spGuei Original-Sender: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org X-Gm-Message-State: AOJu0Yz+21pkeoVymQGYRuVuTjcLZnBwrGdwVzEexQFY8Y4A1y/A5nKn 1FuJMq1ZpUDNSZkDcePMN9k= X-Google-Smtp-Source: AGHT+IEQS8vB9VBmfXrOaphhhpmJE2ni9/viPnwfaliPK1VAFqToDJJmJlXcrxiBIOsAOiA8OR3M3A== X-Received: by 2002:ac8:5948:0:b0:417:cca3:d0ed with SMTP id 8-20020ac85948000000b00417cca3d0edmr11553693qtz.48.1696157421496; Sun, 01 Oct 2023 03:50:21 -0700 (PDT) X-BeenThere: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Original-Received: by 2002:ac8:4650:0:b0:419:8cd5:bd4e with SMTP id f16-20020ac84650000000b004198cd5bd4els1230164qto.0.-pod-prod-02-us; Sun, 01 Oct 2023 03:50:18 -0700 (PDT) X-Received: by 2002:ac8:5712:0:b0:418:1194:42f2 with SMTP id 18-20020ac85712000000b00418119442f2mr12265829qtw.46.1696157418237; Sun, 01 Oct 2023 03:50:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696157418; cv=none; d=google.com; s=arc-20160816; b=EQxrZgiMiBcuCXNKm7qgZuClRI8Rc1wtNcNcdAh9uCn2IC/m6q6Q+i4TP/r26myUQg SfGSZgeRNHbsYnksdyP+8rLwQJthl0RnnbhXGazFjT3i7S4SywQee8qOChLmiolzgPgb j5Vkm2usK8I9qnYmt+byFBu/GwhMWGodH+9jxfPwunKpEJQPuwSWqcoENXp8rjVS+0bg k+apctdS71sO8NucsJG4FqsK+CmlnEV61lXerjElgmxGq8Cr4zDsRaMjq967ismWfxAl ELYaA0pvbDpSCECbM/jhscpsy7j3i+/5iSBJC2tFCvf57BI2NpRwLlLqCs+uRj8woYqF 42Pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=C9fBIhiYdnaOnwd7oksyrpqeacTWNlZvuGJIflQXQCA=; fh=4cPfTtzleA5nPUC1EQtk197aIUeaT1ew1v/oILbLT2I=; b=FFoqWYSnDDZujQ5DNDmcndsHvEGA03v7okWgo3xADFhP58CJbESNJanRLa+aLQeLCb 35aDdfndbaSG6OAmY3SediWe7jrxed3ifGWj7r4d7/6lLqElIjCBAiAkhV+GpriSQpiI 9WsJE9I1T1Ex8KWqQgjraCZDN1+5CXySMpo0rP8iez/F1wwryJO43zyG3oNbjRa0ScVs S3iO4A6YrJ8Ccq128ry759RVPMuF7Bdexm+n5EbI9gbWGCWOF35DlX6/fSzF1ZCe38YA n6A0TZxowxF9iw5g1gApY+In6ZpKFtGZ8eBaknymDK1UK5DqnAN/UqvzC798y9UKCiBi eeKQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=TkCFmVFm; spf=pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::112f as permitted sender) smtp.mailfrom=melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Original-Received: from mail-yw1-x112f.google.com (mail-yw1-x112f.google.com. [2607:f8b0:4864:20::112f]) by gmr-mx.google.com with ESMTPS id ge15-20020a05622a5c8f00b0041790471199si1659570qtb.4.2023.10.01.03.50.18 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 01 Oct 2023 03:50:18 -0700 (PDT) Received-SPF: pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::112f as permitted sender) client-ip=2607:f8b0:4864:20::112f; Original-Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-5a2478862dbso20302287b3.2 for ; Sun, 01 Oct 2023 03:50:18 -0700 (PDT) X-Received: by 2002:a81:7255:0:b0:59b:fc99:8e5 with SMTP id n82-20020a817255000000b0059bfc9908e5mr8364136ywc.29.1696157417543; Sun, 01 Oct 2023 03:50:17 -0700 (PDT) In-Reply-To: <87r0mgof6d.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org> X-Original-Sender: melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=TkCFmVFm; spf=pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::112f as permitted sender) smtp.mailfrom=melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org; contact pandoc-discuss+owners-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org List-ID: X-Google-Group-Id: 1007024079513 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Xref: news.gmane.io gmane.text.pandoc:33139 Archived-At: --0000000000005b1e5d0606a56c80 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This reminds me of a thing I ran into with a filter a while ago. The docs say that by default (or at least when the second argument is true) `pandoc.json.decode()` will parse strings as Markdown (or at least that was how I understood it) so I thought that in a tree leaves would be parsed as MD much as in metadata if the second argument is true or missing. Obviously this is not the case. No big deal since this was in a filter ("variable" expansion BTW, what else? :-) I could just use `pandoc.read()` but it did leave me wondering: how and when does `pandoc.json.decode()` parse its argument into AST elements? FWIW I also came up with another solution: look for the metadata keys `var-data` and `var-trees` as well as for `vars` so I can have this in in-document metadata: ``````yaml --- vars: foo: '*foo*' ... `````` this in a defaults file: ``````yaml metadata: var-trees: - this - that `````` and these in three different metadata files: ``````yaml var-data: bar: '**bar**' this: this: '*this*' that: that: '*that*' `````` I hope you get the idea! BTW I've come up with a quite effective way to merge values which are iterable with `pairs()` regardless of whether they are actual tables or `Attr.attributes` objects or the like, and just "ignore" non-iterable values, be they nil or whatever: ``````lua local function merge_maps(...) local tab =3D table.pack(...) local merged =3D { } for i =3D 1, tab.n do pcall(function() for k, v in pairs(tab[i]) do merged[k] =3D v end end) end return merged end `````` Thanks to the `pcall` the loop will just go on to the next item in `tab` if the current item isn't iterable, without any need for code which tries to inspect the type or tag or whatever of the current item: if `pairs` lives the item is merged, and if `pairs` dies it is just "skipped", so all the "validation" is offloaded to `pairs`. /bpj Den fre 29 sep. 2023 23:15Albert Krewinkel skrev: > > Martin Post writes: > > > In a Pandoc document=E2=80=99s YAML metadata block, or in a Pandoc meta= data > file, I can do this: > > > > variable1: __content__ > > > > =E2=80=A6and it will be rendered as content for HTML. > > > > Doing this in a Pandoc DEFAULTS file: > > > > metadata: > > variable1: __content__ > > > > =E2=80=A6will render $variable1$ as =E2=80=9C__content__=E2=80=9D > > > > So =E2=80=93 is it possible to have metadata in a defaults file interpr= eted as > Markdown? > > I think the only way would be to write a Lua filter that convert strings > to Inlines. > > E.g.: > > > local strings2md > strings2md =3D function (meta) > for key, value in pairs(meta) do > if pandoc.utils.type(value) =3D=3D 'string' then > -- Convert strings to Markdown > local blocks =3D pandoc.read(value).blocks > meta[key] =3D pandoc.utils.blocks_to_inlines(blocks) > elseif pandoc.utils.type(value) =3D=3D 'List' then > -- Recurse on lists > meta[key] =3D strings2md(value) > end > end > > return meta > end > > Meta =3D strings2md > > > -- > Albert Krewinkel > GPG: 8eed e3e2 e8c5 6f18 81fe e836 388d c0b2 1f63 1124 > > -- > You received this message because you are subscribed to the Google Groups > "pandoc-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To view this discussion on the web visit > https://groups.google.com/d/msgid/pandoc-discuss/87r0mgof6d.fsf%40zeitkra= ut.de > . > --=20 You received this message because you are subscribed to the Google Groups "= pandoc-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/= pandoc-discuss/CADAJKhC6T%3DUHG49Rtd40nYsQFgfMxuiwyjqK3A%2B9CQ0QwjYXzQ%40ma= il.gmail.com. --0000000000005b1e5d0606a56c80 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
This reminds me of a thing I ran into with a filter a whi= le ago. The docs say that by default (or at least when the second argument = is true) `pandoc.json.decode()` will parse strings as Markdown (or at least= that was how I understood it) so I thought that in a tree leaves would be = parsed as MD much as in metadata if the second argument is true or missing.= Obviously this is not the case. No big deal since this was in a filter (&q= uot;variable" expansion BTW, what else? :-) I could just use `pandoc.r= ead()` but it did leave me wondering: how and when does `pandoc.json.decode= ()` parse its argument into AST elements?

FWIW I also came up with another solution: look for the metadat= a keys `var-data` and `var-trees` as well as for `vars` so I can have this = in in-document metadata:

``````yaml
---
vars:
=C2=A0 foo: '*foo*'
...
``````

this in a defaults file:

``````yaml
metadata:
=C2= =A0 var-trees:
=C2=A0 =C2=A0 - this
=C2=A0 =C2=A0 - that
``````

and these in three different metadata fil= es:

``````yaml
var-data:
=C2=A0 bar: '**bar**'= ;
this:
=C2=A0 this: '*th= is*'
that:
=C2=A0 that: &= #39;*that*'
``````

I hope you get the idea!

<= /div>
BTW I've come up with a quite effective way to m= erge values which are iterable with `pairs()` regardless of whether they ar= e actual tables or `Attr.attributes` objects or the like, and just "ig= nore" non-iterable values, be they nil or whatever:

``````lua
local fun= ction merge_maps(...)
=C2=A0 l= ocal tab =3D table.pack(...)
=C2=A0 local merged =3D= { }
=C2=A0 for i =3D 1, tab.n do
=C2=A0 =C2=A0 pcall(function()
=C2=A0 =C2=A0 = =C2=A0 for k, v in pairs(tab[i]) do
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 merged[k] =3D v
=C2=A0 =C2=A0 =C2=A0 e= nd
=C2=A0 =C2=A0 end)
=C2=A0 = end
=C2=A0 return merged
end<= /div>
``````

Thanks to the `pcall` the loop will just go on to the next item in `t= ab` if the current item isn't iterable, without any need for code which= tries to inspect the type or tag or whatever of the current item: if `pair= s` lives the item is merged, and if `pairs` dies it is just "skipped&q= uot;, so all the "validation" is offloaded to `pairs`.

/bpj



Den fre 2= 9 sep. 2023 23:15Albert Krewinkel <albert+pandoc-9EawChwDxG8hFhg+JK9F0w@public.gmane.org> skrev:

Martin Post <martinpostberlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:

> In a Pandoc document=E2=80=99s YAML metadata block, or in a Pandoc met= adata file, I can do this:
>
> variable1: __content__
>
> =E2=80=A6and it will be rendered as <strong>content</strong&g= t; for HTML.
>
> Doing this in a Pandoc DEFAULTS file:
>
> metadata:
>=C2=A0 =C2=A0variable1: __content__
>
> =E2=80=A6will render $variable1$ as =E2=80=9C__content__=E2=80=9D
>
> So =E2=80=93 is it possible to have metadata in a defaults file interp= reted as Markdown?

I think the only way would be to write a Lua filter that convert strings to Inlines.

E.g.:


=C2=A0 =C2=A0 local strings2md
=C2=A0 =C2=A0 strings2md =3D function (meta)
=C2=A0 =C2=A0 =C2=A0 for key, value in pairs(meta) do
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if pandoc.utils.type(value) =3D=3D 'string&= #39; then
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -- Convert strings to Markdown
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 local blocks =3D pandoc.read(value).bloc= ks
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 meta[key] =3D pandoc.utils.blocks_to_inl= ines(blocks)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 elseif pandoc.utils.type(value) =3D=3D 'Lis= t' then
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -- Recurse on lists
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 meta[key] =3D strings2md(value)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 end
=C2=A0 =C2=A0 =C2=A0 end

=C2=A0 =C2=A0 =C2=A0 return meta
=C2=A0 =C2=A0 end

=C2=A0 =C2=A0 Meta =3D strings2md


--
Albert Krewinkel
GPG: 8eed e3e2 e8c5 6f18 81fe=C2=A0 e836 388d c0b2 1f63 1124

--
You received this message because you are subscribed to the Google Groups &= quot;pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an e= mail to pandoc-discuss+unsubscribe@googlegroups.= com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-disc= uss/87r0mgof6d.fsf%40zeitkraut.de.

--
You received this message because you are subscribed to the Google Groups &= quot;pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an e= mail to pand= oc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://gro= ups.google.com/d/msgid/pandoc-discuss/CADAJKhC6T%3DUHG49Rtd40nYsQFgfMxuiwyj= qK3A%2B9CQ0QwjYXzQ%40mail.gmail.com.
--0000000000005b1e5d0606a56c80--