Commit f700282
Update Senderz templates: chunked DKIM + SES Easy-DKIM CNAMEs (#1299)
# Description
Updates **Senderz** (`senderz.app`) Domain Connect templates after
production DKIM truncation on Cloudflare apply.
**Changes to `senderz.app.mail.json` (service `mail`, version 2):**
- Replace monolithic `%dkimValue%` TXT with `v=DKIM1; k=rsa;
p=%domainKey1%%domainKey2%%domainKey3%%domainKey4%%domainKey5%%domainKey6%%domainKey7%`
— RSA-2048 public key is split into seven URL-safe chunks at apply time
(concatenated in the published TXT record).
- Add three Amazon SES Easy-DKIM CNAME records:
`%sesDkimToken1..3%._domainkey` → `%sesDkimTokenN%.dkim.amazonses.com`.
**New `senderz.app.mail-basic.json` (service `mail-basic`):**
- Same six core records as the original `mail` template (SPF, chunked
DKIM, DMARC, tracking CNAME, MAIL-FROM SPF + MX) without SES Easy-DKIM
CNAMEs — used when SES identity tokens are unavailable.
Public signing key TXT remains at `_dck1.senderz.app`.
**Bare variables in `host`:** `%trackingSubdomain%`,
`%mailFromSubdomain%`, and `%sesDkimToken1..3%` are tenant-configured
labels fixed at apply time (same pattern as `resend.com.mail.json`
`%clickTrackingSubdomain%`).
**Bare variables in `data`:** `%domainKey1%`..`%domainKey7%` concatenate
to the DKIM `p=` value; `%dmarcValue%` is a full standard-prescribed
DMARC TXT string.
Supersedes merged #1254 for `senderz.app.mail.json`.
## Type of change
- [x] New template
- [x] Bug fix (non-breaking change which fixes an issue in the template)
- [x] New feature (non-breaking change which adds functionality to the
template)
- [ ] Breaking change (fix or feature that would cause existing template
behavior to be not backward compatible)
# How Has This Been Tested?
Please mark the following checks done
- [x] Template functionality checked using [Online
Editor](https://domainconnect.paulonet.eu/dc/free/templateedit)
- [x] Template file name follows the pattern
`<providerId>.<serviceId>.json`
- [x] resource URL provided with `logoUrl` is actually served by a
webserver
# Checklist of common problems
- [x] `syncPubKeyDomain` is set
- [x] `warnPhishing` is **not** set alongside `syncPubKeyDomain`
- [x] `syncRedirectDomain` is set whenever the template uses
`redirect_uri` in the synchronous flow
- [x] no TXT record contains SPF content — uses `SPFM` instead
- [x] `txtConflictMatchingMode` is set on DMARC TXT (`Prefix` /
`v=DMARC1`)
- [x] bare `%domainKey1%`..`%domainKey7%` and `%dmarcValue%` justified
above
- [x] no bare variable as full `host` label — DKIM uses
`%dkimSelector%._domainkey`; SES uses `%sesDkimTokenN%._domainkey`
- [x] `%trackingSubdomain%` / `%mailFromSubdomain%` in `host` justified
above (fixed per-tenant at apply)
- [x] `%host%` does not appear explicitly in any `host` attribute
- [x] `essential` is `OnApply` on DMARC
## Online Editor test results
**Editor test link(s):**
- [senderz.app.mail — apex
(example.com)](https://domainconnect.paulonet.eu/dc/free/templateedit?token=H4sIAKzwP2oC%2F%2B1YAU%2FiSBT%2BK5MmJrtZim0R0BqTrYobwqEo3GVvjSFDO0KlndaZKcIa77ffmwFKi8XzopdzE5oow8w3b9775vWbNzxqgoRxgAXR7EctZtHE9whrepqtcUKh%2BbOM41grpUPnOASo1p0PwgAnbOK7RE0JsR%2BsuhbQ9rxzQhj3I6rZFgBm1O0kgxaZnUYwhz5bTQKuiOcz4ooXIMdB5I41%2BxYHnJS0UcTFFblPYJaXdnqEu8yPhVpaa1A8CAgi0lGEEzEiVPgulqMIUw8Jht2xT4foNmJoESP61O2cldBpq9mG%2F23n6qSE2k7zN%2F3s6gJ60ikn50678RlNfIycEP8Ei91Gtywjx8yXy57mXNnxxn7YJQFEGLEdW9lHfPH9EO14KmygyCyX6zDeanfnmDgZBL6LxmSG3FFCxxx9ciMKQRAKfx7yKYK4UO97DwF9EfM%2BS2shZu4fOEgImDpLgmAeiUJNZDdglpF0k8F8cYD2ltHxZScK8IAEGXgPsyERWaxiAgnVD0BJ9hmLwqzdlMACw%2BG0MXVHmA6lr8AhuiXEG4Bt1G33OkhuM6A44afAYC8aEwoUVQC7oh01MJ%2Fpiq65M8o2h80IomH0OwtgA0ZCxNze3c2k1a4c1QWZCj1mPlA2K8d0CLPmRHLNvn7UhixKYpXu%2BQQCmJjF6uXonLW1eT7Ct69yQMCKlZphQN7Gt1dJQMCW5lM3SDxiY%2BU3BFR2o1B7Kr1mDdi41RL5XCr354RChuSX9rDAgJ4cSWLMQzQ%2BYhwfovgok2w7q7aVaVcy7b1Mu5pp1zLt%2Bs4r41Dbk4kkt61rocSRTwXvRQU4SUA5z2Mm9Le7Yr3SFeu%2Fd6XySlcq7%2BNKLtH6SkcKsyorMRIwFScRvQWlEm0s3BHoQjvypMEOI7f%2BtBiyGFM5KvXJBBjhXPqF5Tt7QZ04DmZrubVUos38PZe2NeLWxCyNcJ0lRkTCaAeL0abXvUDu3iQARSu2v%2F%2FTetnYMnqa9wQ0LmK%2BmGm2aTzdPJU0cIL0V1p3A5u7PHzJFEOdQBY5tFgbWsrRvr%2FEx5jhkMtaYjnzOjf1Zjn3WpPtrG7JPm6q3jSTZN8yFaRQUXDwELEEH8moRWQr6NeMhB%2FC0X2krDzbc2lMdWZH5xueDpWzRQbAnpErkYMooS5Rwym1sn95Tuk8FHGZJDqNmBjp5toreCMrpIx6qcVVa8GUkX3MdbyV4q0ivLWOr6T4ShG%2BoqXbLPVfgtvN5nHzzjk%2FHo7vR2P%2F28GDcexcNs4c5%2BLEudx35PjJsAXthnNc8OQsKneP3%2FjkLFbe3eLeu1usvrvF2rtbrC8tavLd94eQraTP4ROD4kBCC5ZAAR0mgfD7%2BAGvujy3j6UMg1RwGAUzUBbljgs6L%2F1l6ZMWHaB7JipUPPQXDoK8NPU9V4qILxWwZg5cY1A1dOzV6%2Frenmvp2Kzv65aJD6qecWDtW17mhlJweSm4o6wULHu%2BOMEDnnHtSUpwUUDczJ%2B9Gyuqt75C2%2Bftz0fNqGVxssipF6S%2FMNlewr9c8H10EorPs80kbMD%2F2iQUH9KbSdiA%2F3VIyAlsesFYKeu%2FL%2F4%2BQqDpTeWF7Va16Go3n9Wfq0vIh92vRSn86x%2Fz6kq1IahX1vUb71b%2Ff5w3JbicbYu0bZG2LdK2Rdq2SNsWadsibVukbYu0D1akyR9u8YR4fSxhlmHVdKOmW%2FWeWbX36na1Vjbre7W6%2BcUwbMOQoRAu5uE%2FPoH%2Fmd%2FuNHbPa6cXrdPGZccbh108%2BDG9au7Hd3dV9%2BTux5dkP%2F5Ge61qvfZn80h7%2BhvE8rSlByAAAA%3D%3D)
- [senderz.app.mail — subdomain
(mail.example.com)](https://domainconnect.paulonet.eu/dc/free/templateedit?token=H4sIAK3wP2oC%2F%2B1YDU%2FbOhT9K1YkpE1rQpoWCkFIC1CmigUY7dt4Q6hyE7fNmjqZ7ZR2iPfb37XTpkkJH0%2FwJDY1EtS1j6%2FvPb45vu6tJsg4DrEgmn2rxSyaBD5hLV%2BzNU4oNH8ZOI61SjZ0iscA1drpIAxwwiaBR9SUMQ7CZdcc6qadE8J4EFHNtgAwo9550jshs6MI5tB7q0nABfEDRjzxCOQgjLyRZvdxyElFG0ZcXJCfCczys06fcI8FsVBLa02KeyFBRDqKcCKGhIrAw3IUYeojwbA3CugA9SOG5jGid%2B3z4wo6Omm58N91Lg4ryHVan%2FXjizPoyaYcnjpu8z2aBBg5Y%2FwLLLabbUNGjlkglz0quLLhj4Jxm4QQYcQ2bGUf8fn3PbThq7CBoqphNGD8xG2nmDjphYGHRmSGvGFCRxy98yIKQRAKfz4KKIK4UOeyg4C%2BiPnvpbUxZt5XHCYETB0nYZhGolAT2Q2YRSTtpJcuDtDOIjq%2B6EQh7pEwB%2B9gNiAij1VMIKH6ASjJPmbROG83I7DE8HjanHpDTAfSV%2BAQ9Qnxe2Abtd3OOZLbDChO%2BBEw2IlGhAJFNcAuaUdNzGe6oit1RtnmsBlhNIj%2BYiFswFCImNubm7m02pSjuiBToccsAMpmRkwHMCslkmv21a02YFESq3QvJhDAxCxWL8f5saul%2BQjfPsoBASvWtk0T8jbuXyQhAVtaQL0w8YmNld8QkOFFY%2B2u8pw1YOOWSxRzyeimhEKGFJf2scCAnuxLYqp7aLTPON5D8X4u2TaWbSvXruXa9Vx7K9fezrUbG8%2BMQ21PLpLCtq6EEkcBFbwTleAkAUaRx1zoL3fFeqYr1v%2FvSu2ZrtRex5VConWVjpRmVV5iJGAqDiPaB6USLhbeEHTBjXxp8JyRfjAth8zHVI5KfaoCjHAu%2FcLynT2jThyHs5XcWijRw%2Fzdl7YV4lbELItwlSVGRMLoORbDh173Erl7kQCUrehePrVePracnhY9AY2LWCBmml01767vKho4QbpLrbuGzV0cvmSKoU4g8xyarz0%2F75Wz3WAxJ8YMj7msJxazrwrTrxfzr1IDcpmcfsl%2BXlW9WUbJvkVKSMGi4OgeYgnelxZEZCvox5yU78ERvq%2Bs3Nt7aUx15kfTjc%2BGjHyxAbB7JEtkL0qoR9RwRrHsX5xXOh%2BL2CCJTiMmhnp15VW8lpVSTsXU4qo1Z8vMP9VVvJXhrTK8tYqvZfhaGb6mZdstzwEJdlutg9YP5%2FRgMPo5HAWfdm%2FMA%2BdL89hxzg6dLzuOHD8cnEC76RyUPAWLyt2DFz4Fi7VXt1h%2FdYtbr25x%2B9UtNhYWNakBwQCylXQ5fGJQHkhowRIopMdJKIIuvsHLLt%2FrYinHIBkcRsEMlEeFY4OmV4C5TmT1B0hgFZWKH%2FoHh2FRpbq%2BJ7UkkGJYq%2B3425a1o5t9vKvX%2FR2s75A60Xe9rV51C%2FesXr2Ru6yU3GNKritFMcsfN054g2dcu5OKXBYXr%2BaOYmM1ytUq66Wv0%2Fp5%2BfOWU2tRtMyT65Gj4OGse2zS49Xg78BG%2BUH3BBsPTPr92Sg%2Fxp9g44FJvxcbBRFO7yT31fe%2FF4tvJeLslvNIAqgidWV%2F7xWuy1vMm97BtI42%2FqAqQV3QHovumVeEB69rbyPg6wrc99Y137rmW9d865pvXfOta751zbeu%2BdY1359d88mflfGE%2BF0soZZpbevmtm41OtUtu96wtxpGw9yt7pgfTNM2TRkO4SKl4PYOYsj9sqiNaIPX2t%2Frmz98vkuPOodWOP3esj59%2B%2FvbUV24H2JMG5dfmecF9X3t7l8iTyaErSAAAA%3D%3D)
- [senderz.app.mail-basic — apex
(example.com)](https://domainconnect.paulonet.eu/dc/free/templateedit?token=H4sIAK%2FwP2oC%2F%2B1Xe2%2FiOBD%2FKlakSru6hibl1U2FtKGlu6ibPoA79a6qkEkMeEni1HaAbNX97DcOJCRXerd37R%2FdE5EQjmc8L%2F%2FmkQdNkiDysSSa9aBFnM2pR3jX0yxNkBCW3yo4irT9nHSBA2DV%2BisiEAThc%2BqS9EiAqa%2BPsKDuhrA%2B4AAJvUtp74E4J1xQFmqWCYxJ6F7Fo3OSnDKQED7RrRh6xKOcuPJvWNo%2Bc2eaNca%2BIPvalAnZI%2FcxnPLyTY8Il9NIpqq1TohHPkFEmY1wLKcklNTFiopw6CHJsTuj4QSNGUdrj9GCyimLJbID%2FA34%2Bp0%2B6mCR6KfnXQedXNhOR1SUg5hTJf20pHHPm9GgT3xwhPE9C6WHxPr9GO15qXcQCbNSaQL93OmveKJ45FMXzUiC3GkczgR657IQbCUh%2FDxEQwTmo8HNAEGUGPfeK2kB5u5v2I8JiDqLfR%2BdOnbvJOWaq23gyXzsx6OVcmAdZH6LbBP5eET8AvsA8wmRRd7UdSTTfWBUMT3jLCjKdezuF%2F2sd%2BlsERwsO0t3isOJslUFdUyINwLZqO8MrpC6TYiqzybsV%2B5DJKdSRsI6OCjA4EBRdUmWUo84Bd%2BTShRO4NQqIkKzbh%2B0CWdxlIK1fOHAJpMohfbVmaOt8ANvHxVBgsZqwzAAZ9G4F%2FsEZGk0dP3YIxZOgSCIqLgs0B73f0QH3MBGRRkUleEqMnDVZdUelhi45y0FCPMYzVpc4GMUtQqo2dusDwvramFdK6zrhXWjsG7u%2FRc%2FhinethpdhKJiWMoTFo4B0dLB0p0CfhzmKYFXnIzpcjvLmpaGQOHYBDYihLILK0hchnYU%2BclfTM8QuzE6RWoh%2FE9TQNU7RkMpBqzIsAZ97qFhlFVxImMeXmE5fQ5NW9LiRfjaptG5%2BSd9Rd8KeVe2BFKIcSoTKNHG493jvgZGkOEmle7gcrNaTJYYmghJDcx1wyo1dEgz%2FghzHAjVaLKTt6Wjd9nZW02ti2mh9oSZ7uZIUnsZFFQehGDgMeIxbimvJbNS1o%2BFCnEMlbyVSnly50pYulmkri48J1WKPQfYngRXcY5YHLokJeehVftZPdNFIKMKifWQcTnVzUr5fvOwqnRW55xut939al%2B0J7P76Yx%2B%2BrAw2vZ158y2L0%2Fs6yNb0U8m57Du2O0tT0nioZLYfuFTklh9dYm1V5dYf3WJjVeX2MwkairX6ATQQYYC%2FjFkOABI8hjmlyD2JR3iBd5see4Qq7IHqSmACmKgy5XKc7iawFQny3sI1BkTba0w6Dv2%2FXIpGHquSlqqKs7YbDZJ08N6vVEles2rj%2FUjo4b1sWkejfGoZhCTFMbFLZPkswPjpm4Uq7rtL3AitEdV%2BLa5Jcxyx3y2Tb40kXbPy5%2BfCFf5NLMB1L%2FvNG%2FH3Xw4KvibDUJrj1ftL3f4acvbzD1v%2FO7WPfj%2FUu%2FSie4Z135wrHh2tHsr3t7tw4S461y7zrXrXLvOtetcu87183Qu%2BIwTeE68IVZsh8ZhQzca%2BmFzYNatWtOqf6hUDbNWrf5iGJZhKIeIkKsgPMC3XvErT%2Ft9cXH9R98hEb9Zto%2B8%2B%2BbXTz03%2BbxIzjufq7TJfFbvnp50Gl8St6U9%2Fgn6UJfQvhcAAA%3D%3D)
- [senderz.app.mail-basic — subdomain
(mail.example.com)](https://domainconnect.paulonet.eu/dc/free/templateedit?token=H4sIALDwP2oC%2F%2B1Xe2%2FiOBD%2FKlakSrtqkwbKq1RIG1q443ppKXB31VYVMokBL3mt7VDYqvfZb5wQcArd27v2j90VkRCOZzwv%2F%2BaRR00QP%2FKwIFr9UYtYOKcuYR1Xq2ucBLD8YuAo0o7WpCvsA6vWT4lA4ITNqUOSIz6mnj7CnDobwuqADST0LqG9B%2BKcME7DQKsXgHEZON14dEmWFyFICLZ0S4YecSkjjvgKS9MLnZlWH2OPkyNtGnLRI59jOOWuN13CHUYjkajWWgEeeQQRaTbCsZiSQFAHSyrCgYsEw86MBhM0DhlaeYweqJiGsUCWj78AX7%2FVRy3Ml%2FrFZcdG51eW3eKGdBAzKqVf5DQeuDPq94kHjoTsoI6SQ3z1foYO3MQ7iETBMKpAv7T7KU8UjzzqoBlZImcaBzOO3jlhALaSAH4uogEC89HgdoAgSiFz30tpPmbOn9iLCYhqx56HLmyrd55wzeU28GQ%2B9uNRqhxYB5nfPNtEHh4RT2EfYDYhQuVNXEci2QdGGdM2C31Vrm11ftfbvWt7h2B%2F0Vo4UxxMpK0yqGNC3BHIRn170EXyNiGqXjgJ%2F2AeRHIqRMTrx8cKDI4lVRdkIfSIUfB9aUTBBE6lEeFa%2Fe5Rm7AwjhKw5i8c2MQySqDdbdtaih94%2ByAJAjSeVEwTcBaNe7FHQJZGA8eLXVLHCRA44YYT%2BtrT0bfogBvYqMiDwhimkYGrzqt2scDAPW9IQBTO0KzBOD5DUUNBzcFmXVTWJ8q6pKzLyrqirKsH%2F8ePYYK3nUarUJQMC3EeBmNAtLCxcKaAHzt0pcAuI2O62M2yoiUhkDguABvhXNqFJSSuAyuKvOUz0zPEboxOkKqEfzsFZL0LaSD4IFQZVqBfe2iaeVWMiJgFXSymL6FpR1q8Cl%2B7NNq3%2F6ZP9U3Ju7wlkEIho2IJJdp8un860sAIMtyk0j1cblaLyQJDEyGJgWvdUjW8JcYOaXYmwgz7XDab7PRd7vh9dv4uFSDVKOkh93kh2V0jSu5lkJD5EIChZ4jFuCEliLCesH5QKsUZVPRGImXr7qWwZFOlphe%2FJhlq7wG2rSBLzlEYBw5JyOsQy%2F2sruncF5FBYj0ImZjqBSN%2Fz%2BvwyrSW5%2BxOp9n5ZF01J7PP0xn95fTBbFo3rbZlXZ9bNzVL0s8nl7BuWc0dT05iUUpsvvLJSTx5c4mlN5dYfnOJlTeXWM0kajLn6ATQQYYc%2FjFkOgBIsBjmGD%2F2BB3iB7zZcp0hluUPUpQDFcRAt8uV6SCdxFZ5uW4nUHIKaGexQX9jz8tXhaHryNylsvgUT8wqgPlUr56Uy3qp5Lj6yK1VdLcyJhWnXB2TkatMjjuGyhdnx3wJUYu85T3gJdeeZB3c5R0vKA3UeO7r89b52qTaP69%2FfjCApVPONrL%2Be%2Fv5vvxeT0%2BK49mktHI9bX55z7cb4mY6%2BgFuM%2B3Sxk9XE5Mh8Gs%2BfuMY8uJI%2BD25fX8Ek%2BW%2B2%2B273b7b7bvdvtvtu93P3e3gc5HjOXGHWLIWzWJFNyt6sToolOulWt00jepptVYrHZomvEinCBdpIB7hm1L9mtQOa78uL0677ZvW9OFjYfLpY%2Buv23Fp7HPb6VQX9LfedX%2FhHfbc0aTT0J7%2BAe59EeYuGAAA)
### Sample variables (`mail`)
| Variable | Sample value |
|---|---|
| dkimSelector | `s1` |
| domainKey1 | `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA` |
| domainKey2 |
`BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB` |
| domainKey3 |
`BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB` |
| domainKey4 |
`BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB` |
| domainKey5 |
`BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB` |
| domainKey6 |
`BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB` |
| domainKey7 | `BBBBBBBBBBBB` |
| sesDkimToken1 | `token1example00000000000001` |
| sesDkimToken2 | `token2example00000000000002` |
| sesDkimToken3 | `token3example00000000000003` |
| dmarcValue | `v=DMARC1; p=none; rua=mailto:dmarc@senderz.app; fo=1` |
| trackingSubdomain | `track` |
| trackingTarget | `track.senderz.app` |
| mailFromSubdomain | `bounce` |
| mxExchange | `feedback-smtp.eu-north-1.amazonses.com` |
(`mail-basic` uses the same variables except omit `sesDkimToken1..3`.)
---------
Co-authored-by: Cursor <cursoragent@cursor.com>1 parent d9b3c65 commit f700282
2 files changed
Lines changed: 86 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
28 | 49 | | |
29 | 50 | | |
30 | 51 | | |
| |||
0 commit comments