Sync Ladill Events to the Mail utility calendar.
Events upsert calendar entries by stable external_ref keys, prefer the owner's linked mailbox, and Meet skips mail sync for events-sourced rooms so linked virtual sessions appear only once on the calendar. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -43,6 +43,10 @@ MEET_API_URL=https://meet.ladill.com/api/service/v1
|
||||
MEET_API_KEY_EVENTS=
|
||||
MEET_WEBHOOK_SECRET_EVENTS=
|
||||
|
||||
# Ladill Mail calendar (sync events to the webmail utility calendar)
|
||||
LADILL_MAIL_API_URL=https://mail.ladill.com/api/service/v1
|
||||
MAIL_API_KEY_EVENTS=
|
||||
|
||||
# Inbound service API (Meet calls Events)
|
||||
EVENTS_API_KEY_MEET=
|
||||
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Events;
|
||||
|
||||
use App\Models\QrCode;
|
||||
use App\Models\User;
|
||||
use App\Services\Identity\IdentityClient;
|
||||
use App\Services\Integrations\MailCalendarClient;
|
||||
use Carbon\CarbonInterface;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class EventMailCalendarSyncService
|
||||
{
|
||||
public function __construct(
|
||||
private readonly MailCalendarClient $mail,
|
||||
private readonly IdentityClient $identity,
|
||||
) {}
|
||||
|
||||
public function sync(QrCode $event, User $owner): QrCode
|
||||
{
|
||||
if ($event->type !== QrCode::TYPE_EVENT || ! $this->mail->isConfigured()) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
$mailbox = $this->resolveMailbox($owner);
|
||||
if ($mailbox === null) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
$entries = $this->entriesFor($event);
|
||||
$previous = (array) data_get($event->payload, 'calendar_sync.items', []);
|
||||
$synced = [];
|
||||
|
||||
foreach ($entries as $entry) {
|
||||
$result = $this->mail->upsertEvent(array_merge($entry, [
|
||||
'mailbox_email' => $mailbox,
|
||||
]));
|
||||
|
||||
if ($result && isset($result['id'])) {
|
||||
$synced[$entry['external_ref']] = (int) $result['id'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($previous as $externalRef => $eventId) {
|
||||
if (! isset($synced[$externalRef]) && is_numeric($eventId)) {
|
||||
$this->mail->deleteEvent((int) $eventId, $mailbox, (string) $externalRef);
|
||||
}
|
||||
}
|
||||
|
||||
if ($entries === [] && $previous !== []) {
|
||||
foreach ($previous as $externalRef => $eventId) {
|
||||
if (is_numeric($eventId)) {
|
||||
$this->mail->deleteEvent((int) $eventId, $mailbox, (string) $externalRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$payload = (array) ($event->payload ?? []);
|
||||
$payload['calendar_sync'] = ['items' => $synced];
|
||||
$event->payload = $payload;
|
||||
$event->save();
|
||||
|
||||
Log::info('Events mail calendar synced', [
|
||||
'event_id' => $event->id,
|
||||
'entries' => count($synced),
|
||||
]);
|
||||
|
||||
return $event->fresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<array<string, mixed>>
|
||||
*/
|
||||
public function entriesFor(QrCode $event): array
|
||||
{
|
||||
$content = $event->content();
|
||||
$format = (string) ($content['format'] ?? 'in_person');
|
||||
$sessions = array_values(array_filter(
|
||||
(array) ($content['virtual_sessions'] ?? []),
|
||||
fn ($session) => is_array($session) && trim((string) ($session['title'] ?? '')) !== '',
|
||||
));
|
||||
|
||||
$entries = [];
|
||||
|
||||
if (in_array($format, ['virtual', 'hybrid'], true) && $sessions !== []) {
|
||||
foreach ($sessions as $session) {
|
||||
$entry = $this->sessionEntry($event, $content, $session);
|
||||
if ($entry !== null) {
|
||||
$entries[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
if ($format === 'hybrid' && filled($content['starts_at'] ?? null)) {
|
||||
$entries[] = $this->mainEventEntry($event, $content, ' (in person)');
|
||||
}
|
||||
|
||||
return $entries;
|
||||
}
|
||||
|
||||
if (filled($content['starts_at'] ?? null)) {
|
||||
$entries[] = $this->mainEventEntry($event, $content);
|
||||
}
|
||||
|
||||
return $entries;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $content
|
||||
* @param array<string, mixed> $session
|
||||
* @return array<string, mixed>|null
|
||||
*/
|
||||
private function sessionEntry(QrCode $event, array $content, array $session): ?array
|
||||
{
|
||||
$sessionId = trim((string) ($session['id'] ?? ''));
|
||||
if ($sessionId === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
$starts = $this->parseDate($session['scheduled_at'] ?? $content['starts_at'] ?? null);
|
||||
if ($starts === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$duration = max(15, (int) ($session['duration_minutes'] ?? 60));
|
||||
$joinUrl = trim((string) ($session['join_url'] ?? ''));
|
||||
$description = trim((string) ($content['description'] ?? ''));
|
||||
|
||||
return [
|
||||
'external_ref' => $this->sessionExternalRef($event->id, $sessionId),
|
||||
'title' => trim((string) ($session['title'] ?? $content['name'] ?? $event->label)),
|
||||
'body' => $description !== '' ? $description : null,
|
||||
'starts_at' => $starts->toIso8601String(),
|
||||
'ends_at' => $starts->copy()->addMinutes($duration)->toIso8601String(),
|
||||
'join_url' => $joinUrl !== '' ? $joinUrl : $event->publicUrl(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $content
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
private function mainEventEntry(QrCode $event, array $content, string $titleSuffix = ''): array
|
||||
{
|
||||
$starts = $this->parseDate($content['starts_at'] ?? null) ?? now();
|
||||
$ends = $this->parseDate($content['ends_at'] ?? null) ?? $starts->copy()->addHours(2);
|
||||
$name = trim((string) ($content['name'] ?? $event->label));
|
||||
$location = trim((string) ($content['location'] ?? ''));
|
||||
$body = trim((string) ($content['description'] ?? ''));
|
||||
if ($location !== '') {
|
||||
$body = $body !== '' ? $body."\n\n".$location : $location;
|
||||
}
|
||||
|
||||
return [
|
||||
'external_ref' => $this->eventExternalRef($event->id),
|
||||
'title' => $name.$titleSuffix,
|
||||
'body' => $body !== '' ? $body : null,
|
||||
'starts_at' => $starts->toIso8601String(),
|
||||
'ends_at' => $ends->toIso8601String(),
|
||||
'join_url' => $event->publicUrl(),
|
||||
];
|
||||
}
|
||||
|
||||
private function eventExternalRef(int $eventId): string
|
||||
{
|
||||
return 'events:'.$eventId;
|
||||
}
|
||||
|
||||
private function sessionExternalRef(int $eventId, string $sessionId): string
|
||||
{
|
||||
return 'events:'.$eventId.':session:'.$sessionId;
|
||||
}
|
||||
|
||||
private function parseDate(mixed $value): ?CarbonInterface
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
return Carbon::parse($value);
|
||||
} catch (\Throwable) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private function resolveMailbox(User $user): ?string
|
||||
{
|
||||
try {
|
||||
$status = $this->identity->mailboxLinkStatus($user->public_id);
|
||||
$linked = strtolower(trim((string) ($status['linked_mailbox'] ?? '')));
|
||||
if (filter_var($linked, FILTER_VALIDATE_EMAIL)) {
|
||||
return $linked;
|
||||
}
|
||||
} catch (\Throwable) {
|
||||
// Fall back to the account email.
|
||||
}
|
||||
|
||||
$email = strtolower(trim((string) $user->email));
|
||||
|
||||
return filter_var($email, FILTER_VALIDATE_EMAIL) ? $email : null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Integrations;
|
||||
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class MailCalendarClient
|
||||
{
|
||||
public function isConfigured(): bool
|
||||
{
|
||||
return filled(config('mail_calendar.api_key')) && filled(config('mail_calendar.api_url'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $payload
|
||||
* @return array<string, mixed>|null
|
||||
*/
|
||||
public function upsertEvent(array $payload): ?array
|
||||
{
|
||||
if (! $this->isConfigured()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
$response = Http::withToken((string) config('mail_calendar.api_key'))
|
||||
->acceptJson()
|
||||
->asJson()
|
||||
->connectTimeout(10)
|
||||
->timeout(15)
|
||||
->post($this->baseUrl().'/calendar/events', $payload);
|
||||
} catch (ConnectionException $e) {
|
||||
Log::warning('Events mail calendar upsert failed', ['error' => $e->getMessage()]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if (! $response->successful()) {
|
||||
Log::warning('Events mail calendar upsert failed', [
|
||||
'status' => $response->status(),
|
||||
'body' => $response->body(),
|
||||
]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
$data = $response->json('data');
|
||||
|
||||
return is_array($data) ? $data : null;
|
||||
}
|
||||
|
||||
public function deleteEvent(int $eventId, string $mailboxEmail, string $externalRef): bool
|
||||
{
|
||||
if (! $this->isConfigured()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
$response = Http::withToken((string) config('mail_calendar.api_key'))
|
||||
->acceptJson()
|
||||
->connectTimeout(10)
|
||||
->timeout(15)
|
||||
->delete($this->baseUrl().'/calendar/events/'.$eventId, [
|
||||
'mailbox_email' => strtolower(trim($mailboxEmail)),
|
||||
'external_ref' => $externalRef,
|
||||
]);
|
||||
} catch (ConnectionException $e) {
|
||||
Log::warning('Events mail calendar delete failed', ['error' => $e->getMessage()]);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return $response->successful();
|
||||
}
|
||||
|
||||
protected function baseUrl(): string
|
||||
{
|
||||
return rtrim((string) config('mail_calendar.api_url'), '/');
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ class QrCodeManagerService
|
||||
private QrImageGeneratorService $imageGenerator,
|
||||
private QrPayloadValidator $payloadValidator,
|
||||
private \App\Services\Meet\EventMeetSyncService $meetSync,
|
||||
private \App\Services\Events\EventMailCalendarSyncService $mailCalendar,
|
||||
) {}
|
||||
|
||||
public function walletFor(User $user): QrWallet
|
||||
@@ -165,6 +166,7 @@ class QrCodeManagerService
|
||||
|
||||
if ($type === QrCode::TYPE_EVENT) {
|
||||
$qrCode = $this->meetSync->sync($qrCode->fresh(), $user);
|
||||
$qrCode = $this->mailCalendar->sync($qrCode->fresh(), $user);
|
||||
}
|
||||
|
||||
return $qrCode->fresh(['document']);
|
||||
@@ -305,6 +307,7 @@ class QrCodeManagerService
|
||||
|
||||
if ($qrCode->type === QrCode::TYPE_EVENT) {
|
||||
$qrCode = $this->meetSync->sync($qrCode->fresh(), $qrCode->user);
|
||||
$qrCode = $this->mailCalendar->sync($qrCode->fresh(), $qrCode->user);
|
||||
}
|
||||
|
||||
if ($qrCode->type === QrCode::TYPE_ITINERARY) {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'api_url' => env('LADILL_MAIL_API_URL', 'https://mail.ladill.com/api/service/v1'),
|
||||
'api_key' => env('MAIL_API_KEY_EVENTS'),
|
||||
];
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="qr-svg qrcode" viewBox="0 0 37 37" preserveAspectRatio="xMidYMid">
|
||||
<path class="qr-data light qrcode" fill="#fff" d="M14 4 h1 v1 h-1Z M16 4 h1 v1 h-1Z M17 4 h1 v1 h-1Z M18 4 h1 v1 h-1Z M21 4 h1 v1 h-1Z M22 4 h1 v1 h-1Z M13 5 h1 v1 h-1Z M16 5 h1 v1 h-1Z M17 5 h1 v1 h-1Z M18 5 h1 v1 h-1Z M19 5 h1 v1 h-1Z M20 5 h1 v1 h-1Z M23 5 h1 v1 h-1Z M16 6 h1 v1 h-1Z M17 6 h1 v1 h-1Z M19 6 h1 v1 h-1Z M21 6 h1 v1 h-1Z M22 6 h1 v1 h-1Z M23 6 h1 v1 h-1Z M14 7 h1 v1 h-1Z M15 7 h1 v1 h-1Z M17 7 h1 v1 h-1Z M18 7 h1 v1 h-1Z M19 7 h1 v1 h-1Z M22 7 h1 v1 h-1Z M24 7 h1 v1 h-1Z M14 8 h1 v1 h-1Z M20 8 h1 v1 h-1Z M24 8 h1 v1 h-1Z M15 9 h1 v1 h-1Z M21 9 h1 v1 h-1Z M23 9 h1 v1 h-1Z M24 9 h1 v1 h-1Z M16 11 h1 v1 h-1Z M18 11 h1 v1 h-1Z M20 11 h1 v1 h-1Z M21 11 h1 v1 h-1Z M23 11 h1 v1 h-1Z M13 12 h1 v1 h-1Z M15 12 h1 v1 h-1Z M16 12 h1 v1 h-1Z M17 12 h1 v1 h-1Z M20 12 h1 v1 h-1Z M22 12 h1 v1 h-1Z M23 12 h1 v1 h-1Z M4 13 h1 v1 h-1Z M5 13 h1 v1 h-1Z M8 13 h1 v1 h-1Z M9 13 h1 v1 h-1Z M14 13 h1 v1 h-1Z M15 13 h1 v1 h-1Z M16 13 h1 v1 h-1Z M17 13 h1 v1 h-1Z M18 13 h1 v1 h-1Z M27 13 h1 v1 h-1Z M29 13 h1 v1 h-1Z M30 13 h1 v1 h-1Z M31 13 h1 v1 h-1Z M5 14 h1 v1 h-1Z M7 14 h1 v1 h-1Z M9 14 h1 v1 h-1Z M11 14 h1 v1 h-1Z M13 14 h1 v1 h-1Z M16 14 h1 v1 h-1Z M17 14 h1 v1 h-1Z M18 14 h1 v1 h-1Z M19 14 h1 v1 h-1Z M20 14 h1 v1 h-1Z M22 14 h1 v1 h-1Z M23 14 h1 v1 h-1Z M24 14 h1 v1 h-1Z M25 14 h1 v1 h-1Z M27 14 h1 v1 h-1Z M29 14 h1 v1 h-1Z M30 14 h1 v1 h-1Z M31 14 h1 v1 h-1Z M32 14 h1 v1 h-1Z M4 15 h1 v1 h-1Z M6 15 h1 v1 h-1Z M8 15 h1 v1 h-1Z M11 15 h1 v1 h-1Z M12 15 h1 v1 h-1Z M13 15 h1 v1 h-1Z M16 15 h1 v1 h-1Z M17 15 h1 v1 h-1Z M19 15 h1 v1 h-1Z M21 15 h1 v1 h-1Z M22 15 h1 v1 h-1Z M28 15 h1 v1 h-1Z M30 15 h1 v1 h-1Z M32 15 h1 v1 h-1Z M4 16 h1 v1 h-1Z M6 16 h1 v1 h-1Z M7 16 h1 v1 h-1Z M9 16 h1 v1 h-1Z M11 16 h1 v1 h-1Z M14 16 h1 v1 h-1Z M16 16 h1 v1 h-1Z M17 16 h1 v1 h-1Z M18 16 h1 v1 h-1Z
|
||||
M19 16 h1 v1 h-1Z M20 16 h1 v1 h-1Z M22 16 h1 v1 h-1Z M23 16 h1 v1 h-1Z M25 16 h1 v1 h-1Z M26 16 h1 v1 h-1Z M27 16 h1 v1 h-1Z M28 16 h1 v1 h-1Z M31 16 h1 v1 h-1Z M32 16 h1 v1 h-1Z M5 17 h1 v1 h-1Z M6 17 h1 v1 h-1Z M8 17 h1 v1 h-1Z M9 17 h1 v1 h-1Z M13 17 h1 v1 h-1Z M16 17 h1 v1 h-1Z M20 17 h1 v1 h-1Z M21 17 h1 v1 h-1Z M22 17 h1 v1 h-1Z M29 17 h1 v1 h-1Z M30 17 h1 v1 h-1Z M31 17 h1 v1 h-1Z M6 18 h1 v1 h-1Z M7 18 h1 v1 h-1Z M13 18 h1 v1 h-1Z M15 18 h1 v1 h-1Z M22 18 h1 v1 h-1Z M23 18 h1 v1 h-1Z M25 18 h1 v1 h-1Z M27 18 h1 v1 h-1Z M31 18 h1 v1 h-1Z M32 18 h1 v1 h-1Z M6 19 h1 v1 h-1Z M7 19 h1 v1 h-1Z M8 19 h1 v1 h-1Z M12 19 h1 v1 h-1Z M18 19 h1 v1 h-1Z M21 19 h1 v1 h-1Z M22 19 h1 v1 h-1Z M23 19 h1 v1 h-1Z M26 19 h1 v1 h-1Z M29 19 h1 v1 h-1Z M30 19 h1 v1 h-1Z M32 19 h1 v1 h-1Z M4 20 h1 v1 h-1Z M5 20 h1 v1 h-1Z M7 20 h1 v1 h-1Z M8 20 h1 v1 h-1Z M12 20 h1 v1 h-1Z M13 20 h1 v1 h-1Z M14 20 h1 v1 h-1Z M15 20 h1 v1 h-1Z M16 20 h1 v1 h-1Z M17 20 h1 v1 h-1Z M20 20 h1 v1 h-1Z M23 20 h1 v1 h-1Z M24 20 h1 v1 h-1Z M25 20 h1 v1 h-1Z M26 20 h1 v1 h-1Z M27 20 h1 v1 h-1Z M28 20 h1 v1 h-1Z M31 20 h1 v1 h-1Z M32 20 h1 v1 h-1Z M6 21 h1 v1 h-1Z M9 21 h1 v1 h-1Z M12 21 h1 v1 h-1Z M14 21 h1 v1 h-1Z M16 21 h1 v1 h-1Z M17 21 h1 v1 h-1Z M18 21 h1 v1 h-1Z M19 21 h1 v1 h-1Z M29 21 h1 v1 h-1Z M31 21 h1 v1 h-1Z M5 22 h1 v1 h-1Z M7 22 h1 v1 h-1Z M8 22 h1 v1 h-1Z M14 22 h1 v1 h-1Z M15 22 h1 v1 h-1Z M16 22 h1 v1 h-1Z M17 22 h1 v1 h-1Z M18 22 h1 v1 h-1Z M20 22 h1 v1 h-1Z M21 22 h1 v1 h-1Z M22 22 h1 v1 h-1Z M23 22 h1 v1 h-1Z M29 22 h1 v1 h-1Z M31 22 h1 v1 h-1Z M32 22 h1 v1 h-1Z M5 23 h1 v1 h-1Z M6 23 h1 v1 h-1Z M11 23 h1 v1 h-1Z M13 23 h1 v1 h-1Z M14 23 h1 v1 h-1Z M15 23 h1 v1 h-1Z M16 23 h1 v1 h-1Z M17 23 h1 v1 h-1Z M21 23 h1 v1 h-1Z M22 23 h1 v1 h-1Z M25 23 h1 v1 h-1Z M26 23 h1 v1 h-1Z
|
||||
M27 23 h1 v1 h-1Z M29 23 h1 v1 h-1Z M30 23 h1 v1 h-1Z M32 23 h1 v1 h-1Z M5 24 h1 v1 h-1Z M7 24 h1 v1 h-1Z M8 24 h1 v1 h-1Z M11 24 h1 v1 h-1Z M14 24 h1 v1 h-1Z M17 24 h1 v1 h-1Z M18 24 h1 v1 h-1Z M19 24 h1 v1 h-1Z M20 24 h1 v1 h-1Z M22 24 h1 v1 h-1Z M29 24 h1 v1 h-1Z M14 25 h1 v1 h-1Z M15 25 h1 v1 h-1Z M16 25 h1 v1 h-1Z M19 25 h1 v1 h-1Z M21 25 h1 v1 h-1Z M22 25 h1 v1 h-1Z M23 25 h1 v1 h-1Z M16 26 h1 v1 h-1Z M20 26 h1 v1 h-1Z M31 26 h1 v1 h-1Z M32 26 h1 v1 h-1Z M18 27 h1 v1 h-1Z M20 27 h1 v1 h-1Z M21 27 h1 v1 h-1Z M22 27 h1 v1 h-1Z M23 27 h1 v1 h-1Z M29 27 h1 v1 h-1Z M30 27 h1 v1 h-1Z M31 27 h1 v1 h-1Z M32 27 h1 v1 h-1Z M14 28 h1 v1 h-1Z M15 28 h1 v1 h-1Z M16 28 h1 v1 h-1Z M17 28 h1 v1 h-1Z M22 28 h1 v1 h-1Z M23 28 h1 v1 h-1Z M29 28 h1 v1 h-1Z M32 28 h1 v1 h-1Z M15 29 h1 v1 h-1Z M16 29 h1 v1 h-1Z M18 29 h1 v1 h-1Z M19 29 h1 v1 h-1Z M25 29 h1 v1 h-1Z M26 29 h1 v1 h-1Z M27 29 h1 v1 h-1Z M28 29 h1 v1 h-1Z M13 30 h1 v1 h-1Z M14 30 h1 v1 h-1Z M15 30 h1 v1 h-1Z M16 30 h1 v1 h-1Z M17 30 h1 v1 h-1Z M21 30 h1 v1 h-1Z M23 30 h1 v1 h-1Z M32 30 h1 v1 h-1Z M14 31 h1 v1 h-1Z M15 31 h1 v1 h-1Z M17 31 h1 v1 h-1Z M21 31 h1 v1 h-1Z M22 31 h1 v1 h-1Z M23 31 h1 v1 h-1Z M25 31 h1 v1 h-1Z M27 31 h1 v1 h-1Z M30 31 h1 v1 h-1Z M32 31 h1 v1 h-1Z M13 32 h1 v1 h-1Z M14 32 h1 v1 h-1Z M16 32 h1 v1 h-1Z M17 32 h1 v1 h-1Z M19 32 h1 v1 h-1Z M20 32 h1 v1 h-1Z M22 32 h1 v1 h-1Z M24 32 h1 v1 h-1Z M28 32 h1 v1 h-1Z M29 32 h1 v1 h-1Z M31 32 h1 v1 h-1Z M32 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-finder light qrcode" fill="#fff" d="M5 5 h1 v1 h-1Z M6 5 h1 v1 h-1Z M7 5 h1 v1 h-1Z M8 5 h1 v1 h-1Z M9 5 h1 v1 h-1Z M27 5 h1 v1 h-1Z M28 5 h1 v1 h-1Z M29 5 h1 v1 h-1Z M30 5 h1 v1 h-1Z M31 5 h1 v1 h-1Z M5 6 h1 v1 h-1Z M9 6 h1 v1 h-1Z M27 6 h1 v1 h-1Z M31 6 h1 v1 h-1Z M5 7 h1 v1 h-1Z M9 7 h1 v1 h-1Z M27 7 h1 v1 h-1Z M31 7 h1 v1 h-1Z M5 8 h1 v1 h-1Z M9 8 h1 v1 h-1Z M27 8 h1 v1 h-1Z M31 8 h1 v1 h-1Z M5 9 h1 v1 h-1Z M6 9 h1 v1 h-1Z M7 9 h1 v1 h-1Z M8 9 h1 v1 h-1Z M9 9 h1 v1 h-1Z M27 9 h1 v1 h-1Z M28 9 h1 v1 h-1Z M29 9 h1 v1 h-1Z M30 9 h1 v1 h-1Z M31 9 h1 v1 h-1Z M5 27 h1 v1 h-1Z M6 27 h1 v1 h-1Z M7 27 h1 v1 h-1Z M8 27 h1 v1 h-1Z M9 27 h1 v1 h-1Z M5 28 h1 v1 h-1Z M9 28 h1 v1 h-1Z M5 29 h1 v1 h-1Z M9 29 h1 v1 h-1Z M5 30 h1 v1 h-1Z M9 30 h1 v1 h-1Z M5 31 h1 v1 h-1Z M6 31 h1 v1 h-1Z M7 31 h1 v1 h-1Z M8 31 h1 v1 h-1Z M9 31 h1 v1 h-1Z"/>
|
||||
<path class="qr-separator light qrcode" fill="#fff" d="M11 4 h1 v1 h-1Z M25 4 h1 v1 h-1Z M11 5 h1 v1 h-1Z M25 5 h1 v1 h-1Z M11 6 h1 v1 h-1Z M25 6 h1 v1 h-1Z M11 7 h1 v1 h-1Z M25 7 h1 v1 h-1Z M11 8 h1 v1 h-1Z M25 8 h1 v1 h-1Z M11 9 h1 v1 h-1Z M25 9 h1 v1 h-1Z M11 10 h1 v1 h-1Z M25 10 h1 v1 h-1Z M4 11 h1 v1 h-1Z M5 11 h1 v1 h-1Z M6 11 h1 v1 h-1Z M7 11 h1 v1 h-1Z M8 11 h1 v1 h-1Z M9 11 h1 v1 h-1Z M10 11 h1 v1 h-1Z M11 11 h1 v1 h-1Z M25 11 h1 v1 h-1Z M26 11 h1 v1 h-1Z M27 11 h1 v1 h-1Z M28 11 h1 v1 h-1Z M29 11 h1 v1 h-1Z M30 11 h1 v1 h-1Z M31 11 h1 v1 h-1Z M32 11 h1 v1 h-1Z M4 25 h1 v1 h-1Z M5 25 h1 v1 h-1Z M6 25 h1 v1 h-1Z M7 25 h1 v1 h-1Z M8 25 h1 v1 h-1Z M9 25 h1 v1 h-1Z M10 25 h1 v1 h-1Z M11 25 h1 v1 h-1Z M11 26 h1 v1 h-1Z M11 27 h1 v1 h-1Z M11 28 h1 v1 h-1Z M11 29 h1 v1 h-1Z M11 30 h1 v1 h-1Z M11 31 h1 v1 h-1Z M11 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-alignment light qrcode" fill="#fff" d="M25 25 h1 v1 h-1Z M26 25 h1 v1 h-1Z M27 25 h1 v1 h-1Z M25 26 h1 v1 h-1Z M27 26 h1 v1 h-1Z M25 27 h1 v1 h-1Z M26 27 h1 v1 h-1Z M27 27 h1 v1 h-1Z"/>
|
||||
<path class="qr-timing light qrcode" fill="#fff" d="M13 10 h1 v1 h-1Z M15 10 h1 v1 h-1Z M17 10 h1 v1 h-1Z M19 10 h1 v1 h-1Z M21 10 h1 v1 h-1Z M23 10 h1 v1 h-1Z M10 13 h1 v1 h-1Z M10 15 h1 v1 h-1Z M10 17 h1 v1 h-1Z M10 19 h1 v1 h-1Z M10 21 h1 v1 h-1Z M10 23 h1 v1 h-1Z"/>
|
||||
<path class="qr-format light qrcode" fill="#fff" d="M12 4 h1 v1 h-1Z M12 5 h1 v1 h-1Z M5 12 h1 v1 h-1Z M11 12 h1 v1 h-1Z M12 12 h1 v1 h-1Z M25 12 h1 v1 h-1Z M31 12 h1 v1 h-1Z M32 12 h1 v1 h-1Z M12 26 h1 v1 h-1Z M12 31 h1 v1 h-1Z"/>
|
||||
<path class="qr-quietzone light qrcode" fill="#fff" d="M0 0 h1 v1 h-1Z M1 0 h1 v1 h-1Z M2 0 h1 v1 h-1Z M3 0 h1 v1 h-1Z M4 0 h1 v1 h-1Z M5 0 h1 v1 h-1Z M6 0 h1 v1 h-1Z M7 0 h1 v1 h-1Z M8 0 h1 v1 h-1Z M9 0 h1 v1 h-1Z M10 0 h1 v1 h-1Z M11 0 h1 v1 h-1Z M12 0 h1 v1 h-1Z M13 0 h1 v1 h-1Z M14 0 h1 v1 h-1Z M15 0 h1 v1 h-1Z M16 0 h1 v1 h-1Z M17 0 h1 v1 h-1Z M18 0 h1 v1 h-1Z M19 0 h1 v1 h-1Z M20 0 h1 v1 h-1Z M21 0 h1 v1 h-1Z M22 0 h1 v1 h-1Z M23 0 h1 v1 h-1Z M24 0 h1 v1 h-1Z M25 0 h1 v1 h-1Z M26 0 h1 v1 h-1Z M27 0 h1 v1 h-1Z M28 0 h1 v1 h-1Z M29 0 h1 v1 h-1Z M30 0 h1 v1 h-1Z M31 0 h1 v1 h-1Z M32 0 h1 v1 h-1Z M33 0 h1 v1 h-1Z M34 0 h1 v1 h-1Z M35 0 h1 v1 h-1Z M36 0 h1 v1 h-1Z M0 1 h1 v1 h-1Z M1 1 h1 v1 h-1Z M2 1 h1 v1 h-1Z M3 1 h1 v1 h-1Z M4 1 h1 v1 h-1Z M5 1 h1 v1 h-1Z M6 1 h1 v1 h-1Z M7 1 h1 v1 h-1Z M8 1 h1 v1 h-1Z M9 1 h1 v1 h-1Z M10 1 h1 v1 h-1Z M11 1 h1 v1 h-1Z M12 1 h1 v1 h-1Z M13 1 h1 v1 h-1Z M14 1 h1 v1 h-1Z M15 1 h1 v1 h-1Z M16 1 h1 v1 h-1Z M17 1 h1 v1 h-1Z M18 1 h1 v1 h-1Z M19 1 h1 v1 h-1Z M20 1 h1 v1 h-1Z M21 1 h1 v1 h-1Z M22 1 h1 v1 h-1Z M23 1 h1 v1 h-1Z M24 1 h1 v1 h-1Z M25 1 h1 v1 h-1Z M26 1 h1 v1 h-1Z M27 1 h1 v1 h-1Z M28 1 h1 v1 h-1Z M29 1 h1 v1 h-1Z M30 1 h1 v1 h-1Z M31 1 h1 v1 h-1Z M32 1 h1 v1 h-1Z M33 1 h1 v1 h-1Z M34 1 h1 v1 h-1Z M35 1 h1 v1 h-1Z M36 1 h1 v1 h-1Z M0 2 h1 v1 h-1Z M1 2 h1 v1 h-1Z M2 2 h1 v1 h-1Z M3 2 h1 v1 h-1Z M4 2 h1 v1 h-1Z M5 2 h1 v1 h-1Z M6 2 h1 v1 h-1Z M7 2 h1 v1 h-1Z M8 2 h1 v1 h-1Z M9 2 h1 v1 h-1Z M10 2 h1 v1 h-1Z M11 2 h1 v1 h-1Z M12 2 h1 v1 h-1Z M13 2 h1 v1 h-1Z M14 2 h1 v1 h-1Z M15 2 h1 v1 h-1Z M16 2 h1 v1 h-1Z M17 2 h1 v1 h-1Z M18 2 h1 v1 h-1Z M19 2 h1 v1 h-1Z M20 2 h1 v1 h-1Z M21 2 h1 v1 h-1Z M22 2 h1 v1 h-1Z M23 2 h1 v1 h-1Z M24 2 h1 v1 h-1Z M25 2 h1 v1 h-1Z
|
||||
M26 2 h1 v1 h-1Z M27 2 h1 v1 h-1Z M28 2 h1 v1 h-1Z M29 2 h1 v1 h-1Z M30 2 h1 v1 h-1Z M31 2 h1 v1 h-1Z M32 2 h1 v1 h-1Z M33 2 h1 v1 h-1Z M34 2 h1 v1 h-1Z M35 2 h1 v1 h-1Z M36 2 h1 v1 h-1Z M0 3 h1 v1 h-1Z M1 3 h1 v1 h-1Z M2 3 h1 v1 h-1Z M3 3 h1 v1 h-1Z M4 3 h1 v1 h-1Z M5 3 h1 v1 h-1Z M6 3 h1 v1 h-1Z M7 3 h1 v1 h-1Z M8 3 h1 v1 h-1Z M9 3 h1 v1 h-1Z M10 3 h1 v1 h-1Z M11 3 h1 v1 h-1Z M12 3 h1 v1 h-1Z M13 3 h1 v1 h-1Z M14 3 h1 v1 h-1Z M15 3 h1 v1 h-1Z M16 3 h1 v1 h-1Z M17 3 h1 v1 h-1Z M18 3 h1 v1 h-1Z M19 3 h1 v1 h-1Z M20 3 h1 v1 h-1Z M21 3 h1 v1 h-1Z M22 3 h1 v1 h-1Z M23 3 h1 v1 h-1Z M24 3 h1 v1 h-1Z M25 3 h1 v1 h-1Z M26 3 h1 v1 h-1Z M27 3 h1 v1 h-1Z M28 3 h1 v1 h-1Z M29 3 h1 v1 h-1Z M30 3 h1 v1 h-1Z M31 3 h1 v1 h-1Z M32 3 h1 v1 h-1Z M33 3 h1 v1 h-1Z M34 3 h1 v1 h-1Z M35 3 h1 v1 h-1Z M36 3 h1 v1 h-1Z M0 4 h1 v1 h-1Z M1 4 h1 v1 h-1Z M2 4 h1 v1 h-1Z M3 4 h1 v1 h-1Z M33 4 h1 v1 h-1Z M34 4 h1 v1 h-1Z M35 4 h1 v1 h-1Z M36 4 h1 v1 h-1Z M0 5 h1 v1 h-1Z M1 5 h1 v1 h-1Z M2 5 h1 v1 h-1Z M3 5 h1 v1 h-1Z M33 5 h1 v1 h-1Z M34 5 h1 v1 h-1Z M35 5 h1 v1 h-1Z M36 5 h1 v1 h-1Z M0 6 h1 v1 h-1Z M1 6 h1 v1 h-1Z M2 6 h1 v1 h-1Z M3 6 h1 v1 h-1Z M33 6 h1 v1 h-1Z M34 6 h1 v1 h-1Z M35 6 h1 v1 h-1Z M36 6 h1 v1 h-1Z M0 7 h1 v1 h-1Z M1 7 h1 v1 h-1Z M2 7 h1 v1 h-1Z M3 7 h1 v1 h-1Z M33 7 h1 v1 h-1Z M34 7 h1 v1 h-1Z M35 7 h1 v1 h-1Z M36 7 h1 v1 h-1Z M0 8 h1 v1 h-1Z M1 8 h1 v1 h-1Z M2 8 h1 v1 h-1Z M3 8 h1 v1 h-1Z M33 8 h1 v1 h-1Z M34 8 h1 v1 h-1Z M35 8 h1 v1 h-1Z M36 8 h1 v1 h-1Z M0 9 h1 v1 h-1Z M1 9 h1 v1 h-1Z M2 9 h1 v1 h-1Z M3 9 h1 v1 h-1Z M33 9 h1 v1 h-1Z M34 9 h1 v1 h-1Z M35 9 h1 v1 h-1Z M36 9 h1 v1 h-1Z M0 10 h1 v1 h-1Z M1 10 h1 v1 h-1Z M2 10 h1 v1 h-1Z M3 10 h1 v1 h-1Z
|
||||
M33 10 h1 v1 h-1Z M34 10 h1 v1 h-1Z M35 10 h1 v1 h-1Z M36 10 h1 v1 h-1Z M0 11 h1 v1 h-1Z M1 11 h1 v1 h-1Z M2 11 h1 v1 h-1Z M3 11 h1 v1 h-1Z M33 11 h1 v1 h-1Z M34 11 h1 v1 h-1Z M35 11 h1 v1 h-1Z M36 11 h1 v1 h-1Z M0 12 h1 v1 h-1Z M1 12 h1 v1 h-1Z M2 12 h1 v1 h-1Z M3 12 h1 v1 h-1Z M33 12 h1 v1 h-1Z M34 12 h1 v1 h-1Z M35 12 h1 v1 h-1Z M36 12 h1 v1 h-1Z M0 13 h1 v1 h-1Z M1 13 h1 v1 h-1Z M2 13 h1 v1 h-1Z M3 13 h1 v1 h-1Z M33 13 h1 v1 h-1Z M34 13 h1 v1 h-1Z M35 13 h1 v1 h-1Z M36 13 h1 v1 h-1Z M0 14 h1 v1 h-1Z M1 14 h1 v1 h-1Z M2 14 h1 v1 h-1Z M3 14 h1 v1 h-1Z M33 14 h1 v1 h-1Z M34 14 h1 v1 h-1Z M35 14 h1 v1 h-1Z M36 14 h1 v1 h-1Z M0 15 h1 v1 h-1Z M1 15 h1 v1 h-1Z M2 15 h1 v1 h-1Z M3 15 h1 v1 h-1Z M33 15 h1 v1 h-1Z M34 15 h1 v1 h-1Z M35 15 h1 v1 h-1Z M36 15 h1 v1 h-1Z M0 16 h1 v1 h-1Z M1 16 h1 v1 h-1Z M2 16 h1 v1 h-1Z M3 16 h1 v1 h-1Z M33 16 h1 v1 h-1Z M34 16 h1 v1 h-1Z M35 16 h1 v1 h-1Z M36 16 h1 v1 h-1Z M0 17 h1 v1 h-1Z M1 17 h1 v1 h-1Z M2 17 h1 v1 h-1Z M3 17 h1 v1 h-1Z M33 17 h1 v1 h-1Z M34 17 h1 v1 h-1Z M35 17 h1 v1 h-1Z M36 17 h1 v1 h-1Z M0 18 h1 v1 h-1Z M1 18 h1 v1 h-1Z M2 18 h1 v1 h-1Z M3 18 h1 v1 h-1Z M33 18 h1 v1 h-1Z M34 18 h1 v1 h-1Z M35 18 h1 v1 h-1Z M36 18 h1 v1 h-1Z M0 19 h1 v1 h-1Z M1 19 h1 v1 h-1Z M2 19 h1 v1 h-1Z M3 19 h1 v1 h-1Z M33 19 h1 v1 h-1Z M34 19 h1 v1 h-1Z M35 19 h1 v1 h-1Z M36 19 h1 v1 h-1Z M0 20 h1 v1 h-1Z M1 20 h1 v1 h-1Z M2 20 h1 v1 h-1Z M3 20 h1 v1 h-1Z M33 20 h1 v1 h-1Z M34 20 h1 v1 h-1Z M35 20 h1 v1 h-1Z M36 20 h1 v1 h-1Z M0 21 h1 v1 h-1Z M1 21 h1 v1 h-1Z M2 21 h1 v1 h-1Z M3 21 h1 v1 h-1Z M33 21 h1 v1 h-1Z M34 21 h1 v1 h-1Z M35 21 h1 v1 h-1Z M36 21 h1 v1 h-1Z M0 22 h1 v1 h-1Z M1 22 h1 v1 h-1Z M2 22 h1 v1 h-1Z M3 22 h1 v1 h-1Z M33 22 h1 v1 h-1Z M34 22 h1 v1 h-1Z M35 22 h1 v1 h-1Z M36 22 h1 v1 h-1Z
|
||||
M0 23 h1 v1 h-1Z M1 23 h1 v1 h-1Z M2 23 h1 v1 h-1Z M3 23 h1 v1 h-1Z M33 23 h1 v1 h-1Z M34 23 h1 v1 h-1Z M35 23 h1 v1 h-1Z M36 23 h1 v1 h-1Z M0 24 h1 v1 h-1Z M1 24 h1 v1 h-1Z M2 24 h1 v1 h-1Z M3 24 h1 v1 h-1Z M33 24 h1 v1 h-1Z M34 24 h1 v1 h-1Z M35 24 h1 v1 h-1Z M36 24 h1 v1 h-1Z M0 25 h1 v1 h-1Z M1 25 h1 v1 h-1Z M2 25 h1 v1 h-1Z M3 25 h1 v1 h-1Z M33 25 h1 v1 h-1Z M34 25 h1 v1 h-1Z M35 25 h1 v1 h-1Z M36 25 h1 v1 h-1Z M0 26 h1 v1 h-1Z M1 26 h1 v1 h-1Z M2 26 h1 v1 h-1Z M3 26 h1 v1 h-1Z M33 26 h1 v1 h-1Z M34 26 h1 v1 h-1Z M35 26 h1 v1 h-1Z M36 26 h1 v1 h-1Z M0 27 h1 v1 h-1Z M1 27 h1 v1 h-1Z M2 27 h1 v1 h-1Z M3 27 h1 v1 h-1Z M33 27 h1 v1 h-1Z M34 27 h1 v1 h-1Z M35 27 h1 v1 h-1Z M36 27 h1 v1 h-1Z M0 28 h1 v1 h-1Z M1 28 h1 v1 h-1Z M2 28 h1 v1 h-1Z M3 28 h1 v1 h-1Z M33 28 h1 v1 h-1Z M34 28 h1 v1 h-1Z M35 28 h1 v1 h-1Z M36 28 h1 v1 h-1Z M0 29 h1 v1 h-1Z M1 29 h1 v1 h-1Z M2 29 h1 v1 h-1Z M3 29 h1 v1 h-1Z M33 29 h1 v1 h-1Z M34 29 h1 v1 h-1Z M35 29 h1 v1 h-1Z M36 29 h1 v1 h-1Z M0 30 h1 v1 h-1Z M1 30 h1 v1 h-1Z M2 30 h1 v1 h-1Z M3 30 h1 v1 h-1Z M33 30 h1 v1 h-1Z M34 30 h1 v1 h-1Z M35 30 h1 v1 h-1Z M36 30 h1 v1 h-1Z M0 31 h1 v1 h-1Z M1 31 h1 v1 h-1Z M2 31 h1 v1 h-1Z M3 31 h1 v1 h-1Z M33 31 h1 v1 h-1Z M34 31 h1 v1 h-1Z M35 31 h1 v1 h-1Z M36 31 h1 v1 h-1Z M0 32 h1 v1 h-1Z M1 32 h1 v1 h-1Z M2 32 h1 v1 h-1Z M3 32 h1 v1 h-1Z M33 32 h1 v1 h-1Z M34 32 h1 v1 h-1Z M35 32 h1 v1 h-1Z M36 32 h1 v1 h-1Z M0 33 h1 v1 h-1Z M1 33 h1 v1 h-1Z M2 33 h1 v1 h-1Z M3 33 h1 v1 h-1Z M4 33 h1 v1 h-1Z M5 33 h1 v1 h-1Z M6 33 h1 v1 h-1Z M7 33 h1 v1 h-1Z M8 33 h1 v1 h-1Z M9 33 h1 v1 h-1Z M10 33 h1 v1 h-1Z M11 33 h1 v1 h-1Z M12 33 h1 v1 h-1Z M13 33 h1 v1 h-1Z M14 33 h1 v1 h-1Z M15 33 h1 v1 h-1Z M16 33 h1 v1 h-1Z M17 33 h1 v1 h-1Z M18 33 h1 v1 h-1Z M19 33 h1 v1 h-1Z
|
||||
M20 33 h1 v1 h-1Z M21 33 h1 v1 h-1Z M22 33 h1 v1 h-1Z M23 33 h1 v1 h-1Z M24 33 h1 v1 h-1Z M25 33 h1 v1 h-1Z M26 33 h1 v1 h-1Z M27 33 h1 v1 h-1Z M28 33 h1 v1 h-1Z M29 33 h1 v1 h-1Z M30 33 h1 v1 h-1Z M31 33 h1 v1 h-1Z M32 33 h1 v1 h-1Z M33 33 h1 v1 h-1Z M34 33 h1 v1 h-1Z M35 33 h1 v1 h-1Z M36 33 h1 v1 h-1Z M0 34 h1 v1 h-1Z M1 34 h1 v1 h-1Z M2 34 h1 v1 h-1Z M3 34 h1 v1 h-1Z M4 34 h1 v1 h-1Z M5 34 h1 v1 h-1Z M6 34 h1 v1 h-1Z M7 34 h1 v1 h-1Z M8 34 h1 v1 h-1Z M9 34 h1 v1 h-1Z M10 34 h1 v1 h-1Z M11 34 h1 v1 h-1Z M12 34 h1 v1 h-1Z M13 34 h1 v1 h-1Z M14 34 h1 v1 h-1Z M15 34 h1 v1 h-1Z M16 34 h1 v1 h-1Z M17 34 h1 v1 h-1Z M18 34 h1 v1 h-1Z M19 34 h1 v1 h-1Z M20 34 h1 v1 h-1Z M21 34 h1 v1 h-1Z M22 34 h1 v1 h-1Z M23 34 h1 v1 h-1Z M24 34 h1 v1 h-1Z M25 34 h1 v1 h-1Z M26 34 h1 v1 h-1Z M27 34 h1 v1 h-1Z M28 34 h1 v1 h-1Z M29 34 h1 v1 h-1Z M30 34 h1 v1 h-1Z M31 34 h1 v1 h-1Z M32 34 h1 v1 h-1Z M33 34 h1 v1 h-1Z M34 34 h1 v1 h-1Z M35 34 h1 v1 h-1Z M36 34 h1 v1 h-1Z M0 35 h1 v1 h-1Z M1 35 h1 v1 h-1Z M2 35 h1 v1 h-1Z M3 35 h1 v1 h-1Z M4 35 h1 v1 h-1Z M5 35 h1 v1 h-1Z M6 35 h1 v1 h-1Z M7 35 h1 v1 h-1Z M8 35 h1 v1 h-1Z M9 35 h1 v1 h-1Z M10 35 h1 v1 h-1Z M11 35 h1 v1 h-1Z M12 35 h1 v1 h-1Z M13 35 h1 v1 h-1Z M14 35 h1 v1 h-1Z M15 35 h1 v1 h-1Z M16 35 h1 v1 h-1Z M17 35 h1 v1 h-1Z M18 35 h1 v1 h-1Z M19 35 h1 v1 h-1Z M20 35 h1 v1 h-1Z M21 35 h1 v1 h-1Z M22 35 h1 v1 h-1Z M23 35 h1 v1 h-1Z M24 35 h1 v1 h-1Z M25 35 h1 v1 h-1Z M26 35 h1 v1 h-1Z M27 35 h1 v1 h-1Z M28 35 h1 v1 h-1Z M29 35 h1 v1 h-1Z M30 35 h1 v1 h-1Z M31 35 h1 v1 h-1Z M32 35 h1 v1 h-1Z M33 35 h1 v1 h-1Z M34 35 h1 v1 h-1Z M35 35 h1 v1 h-1Z M36 35 h1 v1 h-1Z M0 36 h1 v1 h-1Z M1 36 h1 v1 h-1Z M2 36 h1 v1 h-1Z M3 36 h1 v1 h-1Z M4 36 h1 v1 h-1Z M5 36 h1 v1 h-1Z M6 36 h1 v1 h-1Z M7 36 h1 v1 h-1Z M8 36 h1 v1 h-1Z
|
||||
M9 36 h1 v1 h-1Z M10 36 h1 v1 h-1Z M11 36 h1 v1 h-1Z M12 36 h1 v1 h-1Z M13 36 h1 v1 h-1Z M14 36 h1 v1 h-1Z M15 36 h1 v1 h-1Z M16 36 h1 v1 h-1Z M17 36 h1 v1 h-1Z M18 36 h1 v1 h-1Z M19 36 h1 v1 h-1Z M20 36 h1 v1 h-1Z M21 36 h1 v1 h-1Z M22 36 h1 v1 h-1Z M23 36 h1 v1 h-1Z M24 36 h1 v1 h-1Z M25 36 h1 v1 h-1Z M26 36 h1 v1 h-1Z M27 36 h1 v1 h-1Z M28 36 h1 v1 h-1Z M29 36 h1 v1 h-1Z M30 36 h1 v1 h-1Z M31 36 h1 v1 h-1Z M32 36 h1 v1 h-1Z M33 36 h1 v1 h-1Z M34 36 h1 v1 h-1Z M35 36 h1 v1 h-1Z M36 36 h1 v1 h-1Z"/>
|
||||
<path class="qr-darkmodule dark qrcode" fill="#000" d="M12 25 h1 v1 h-1Z"/>
|
||||
<path class="qr-data-dark dark qrcode" fill="#000" d="M13 4 h1 v1 h-1Z M15 4 h1 v1 h-1Z M19 4 h1 v1 h-1Z M20 4 h1 v1 h-1Z M23 4 h1 v1 h-1Z M24 4 h1 v1 h-1Z M14 5 h1 v1 h-1Z M15 5 h1 v1 h-1Z M21 5 h1 v1 h-1Z M22 5 h1 v1 h-1Z M24 5 h1 v1 h-1Z M13 6 h1 v1 h-1Z M14 6 h1 v1 h-1Z M15 6 h1 v1 h-1Z M18 6 h1 v1 h-1Z M20 6 h1 v1 h-1Z M24 6 h1 v1 h-1Z M13 7 h1 v1 h-1Z M16 7 h1 v1 h-1Z M20 7 h1 v1 h-1Z M21 7 h1 v1 h-1Z M23 7 h1 v1 h-1Z M13 8 h1 v1 h-1Z M15 8 h1 v1 h-1Z M16 8 h1 v1 h-1Z M17 8 h1 v1 h-1Z M18 8 h1 v1 h-1Z M19 8 h1 v1 h-1Z M21 8 h1 v1 h-1Z M22 8 h1 v1 h-1Z M23 8 h1 v1 h-1Z M13 9 h1 v1 h-1Z M14 9 h1 v1 h-1Z M16 9 h1 v1 h-1Z M17 9 h1 v1 h-1Z M18 9 h1 v1 h-1Z M19 9 h1 v1 h-1Z M20 9 h1 v1 h-1Z M22 9 h1 v1 h-1Z M13 11 h1 v1 h-1Z M14 11 h1 v1 h-1Z M15 11 h1 v1 h-1Z M17 11 h1 v1 h-1Z M19 11 h1 v1 h-1Z M22 11 h1 v1 h-1Z M24 11 h1 v1 h-1Z M14 12 h1 v1 h-1Z M18 12 h1 v1 h-1Z M19 12 h1 v1 h-1Z M21 12 h1 v1 h-1Z M24 12 h1 v1 h-1Z M6 13 h1 v1 h-1Z M7 13 h1 v1 h-1Z M11 13 h1 v1 h-1Z M12 13 h1 v1 h-1Z M13 13 h1 v1 h-1Z M19 13 h1 v1 h-1Z M20 13 h1 v1 h-1Z M21 13 h1 v1 h-1Z M22 13 h1 v1 h-1Z M23 13 h1 v1 h-1Z M24 13 h1 v1 h-1Z M25 13 h1 v1 h-1Z M26 13 h1 v1 h-1Z M28 13 h1 v1 h-1Z M32 13 h1 v1 h-1Z M4 14 h1 v1 h-1Z M6 14 h1 v1 h-1Z M8 14 h1 v1 h-1Z M12 14 h1 v1 h-1Z M14 14 h1 v1 h-1Z M15 14 h1 v1 h-1Z M21 14 h1 v1 h-1Z M26 14 h1 v1 h-1Z M28 14 h1 v1 h-1Z M5 15 h1 v1 h-1Z M7 15 h1 v1 h-1Z M9 15 h1 v1 h-1Z M14 15 h1 v1 h-1Z M15 15 h1 v1 h-1Z M18 15 h1 v1 h-1Z M20 15 h1 v1 h-1Z M23 15 h1 v1 h-1Z M24 15 h1 v1 h-1Z M25 15 h1 v1 h-1Z M26 15 h1 v1 h-1Z M27 15 h1 v1 h-1Z M29 15 h1 v1 h-1Z M31 15 h1 v1 h-1Z M5 16 h1 v1 h-1Z M8 16 h1 v1 h-1Z M12 16 h1 v1 h-1Z M13 16 h1 v1 h-1Z M15 16 h1 v1 h-1Z M21 16 h1 v1 h-1Z M24 16 h1 v1 h-1Z M29 16 h1 v1 h-1Z M30 16 h1 v1 h-1Z M4 17 h1 v1 h-1Z M7 17 h1 v1 h-1Z
|
||||
M11 17 h1 v1 h-1Z M12 17 h1 v1 h-1Z M14 17 h1 v1 h-1Z M15 17 h1 v1 h-1Z M17 17 h1 v1 h-1Z M18 17 h1 v1 h-1Z M19 17 h1 v1 h-1Z M23 17 h1 v1 h-1Z M24 17 h1 v1 h-1Z M25 17 h1 v1 h-1Z M26 17 h1 v1 h-1Z M27 17 h1 v1 h-1Z M28 17 h1 v1 h-1Z M32 17 h1 v1 h-1Z M4 18 h1 v1 h-1Z M5 18 h1 v1 h-1Z M8 18 h1 v1 h-1Z M9 18 h1 v1 h-1Z M11 18 h1 v1 h-1Z M12 18 h1 v1 h-1Z M14 18 h1 v1 h-1Z M16 18 h1 v1 h-1Z M17 18 h1 v1 h-1Z M18 18 h1 v1 h-1Z M19 18 h1 v1 h-1Z M20 18 h1 v1 h-1Z M21 18 h1 v1 h-1Z M24 18 h1 v1 h-1Z M26 18 h1 v1 h-1Z M28 18 h1 v1 h-1Z M29 18 h1 v1 h-1Z M30 18 h1 v1 h-1Z M4 19 h1 v1 h-1Z M5 19 h1 v1 h-1Z M9 19 h1 v1 h-1Z M11 19 h1 v1 h-1Z M13 19 h1 v1 h-1Z M14 19 h1 v1 h-1Z M15 19 h1 v1 h-1Z M16 19 h1 v1 h-1Z M17 19 h1 v1 h-1Z M19 19 h1 v1 h-1Z M20 19 h1 v1 h-1Z M24 19 h1 v1 h-1Z M25 19 h1 v1 h-1Z M27 19 h1 v1 h-1Z M28 19 h1 v1 h-1Z M31 19 h1 v1 h-1Z M6 20 h1 v1 h-1Z M9 20 h1 v1 h-1Z M11 20 h1 v1 h-1Z M18 20 h1 v1 h-1Z M19 20 h1 v1 h-1Z M21 20 h1 v1 h-1Z M22 20 h1 v1 h-1Z M29 20 h1 v1 h-1Z M30 20 h1 v1 h-1Z M4 21 h1 v1 h-1Z M5 21 h1 v1 h-1Z M7 21 h1 v1 h-1Z M8 21 h1 v1 h-1Z M11 21 h1 v1 h-1Z M13 21 h1 v1 h-1Z M15 21 h1 v1 h-1Z M20 21 h1 v1 h-1Z M21 21 h1 v1 h-1Z M22 21 h1 v1 h-1Z M23 21 h1 v1 h-1Z M24 21 h1 v1 h-1Z M25 21 h1 v1 h-1Z M26 21 h1 v1 h-1Z M27 21 h1 v1 h-1Z M28 21 h1 v1 h-1Z M30 21 h1 v1 h-1Z M32 21 h1 v1 h-1Z M4 22 h1 v1 h-1Z M6 22 h1 v1 h-1Z M9 22 h1 v1 h-1Z M11 22 h1 v1 h-1Z M12 22 h1 v1 h-1Z M13 22 h1 v1 h-1Z M19 22 h1 v1 h-1Z M24 22 h1 v1 h-1Z M25 22 h1 v1 h-1Z M26 22 h1 v1 h-1Z M27 22 h1 v1 h-1Z M28 22 h1 v1 h-1Z M30 22 h1 v1 h-1Z M4 23 h1 v1 h-1Z M7 23 h1 v1 h-1Z M8 23 h1 v1 h-1Z M9 23 h1 v1 h-1Z M12 23 h1 v1 h-1Z M18 23 h1 v1 h-1Z M19 23 h1 v1 h-1Z M20 23 h1 v1 h-1Z M23 23 h1 v1 h-1Z M24 23 h1 v1 h-1Z M28 23 h1 v1 h-1Z M31 23 h1 v1 h-1Z
|
||||
M4 24 h1 v1 h-1Z M6 24 h1 v1 h-1Z M9 24 h1 v1 h-1Z M12 24 h1 v1 h-1Z M13 24 h1 v1 h-1Z M15 24 h1 v1 h-1Z M16 24 h1 v1 h-1Z M21 24 h1 v1 h-1Z M23 24 h1 v1 h-1Z M30 24 h1 v1 h-1Z M31 24 h1 v1 h-1Z M32 24 h1 v1 h-1Z M13 25 h1 v1 h-1Z M17 25 h1 v1 h-1Z M18 25 h1 v1 h-1Z M20 25 h1 v1 h-1Z M29 25 h1 v1 h-1Z M30 25 h1 v1 h-1Z M31 25 h1 v1 h-1Z M32 25 h1 v1 h-1Z M13 26 h1 v1 h-1Z M14 26 h1 v1 h-1Z M15 26 h1 v1 h-1Z M17 26 h1 v1 h-1Z M18 26 h1 v1 h-1Z M19 26 h1 v1 h-1Z M21 26 h1 v1 h-1Z M22 26 h1 v1 h-1Z M23 26 h1 v1 h-1Z M29 26 h1 v1 h-1Z M30 26 h1 v1 h-1Z M13 27 h1 v1 h-1Z M14 27 h1 v1 h-1Z M15 27 h1 v1 h-1Z M16 27 h1 v1 h-1Z M17 27 h1 v1 h-1Z M19 27 h1 v1 h-1Z M13 28 h1 v1 h-1Z M18 28 h1 v1 h-1Z M19 28 h1 v1 h-1Z M20 28 h1 v1 h-1Z M21 28 h1 v1 h-1Z M30 28 h1 v1 h-1Z M31 28 h1 v1 h-1Z M13 29 h1 v1 h-1Z M14 29 h1 v1 h-1Z M17 29 h1 v1 h-1Z M20 29 h1 v1 h-1Z M21 29 h1 v1 h-1Z M22 29 h1 v1 h-1Z M23 29 h1 v1 h-1Z M24 29 h1 v1 h-1Z M29 29 h1 v1 h-1Z M30 29 h1 v1 h-1Z M31 29 h1 v1 h-1Z M32 29 h1 v1 h-1Z M18 30 h1 v1 h-1Z M19 30 h1 v1 h-1Z M20 30 h1 v1 h-1Z M22 30 h1 v1 h-1Z M24 30 h1 v1 h-1Z M25 30 h1 v1 h-1Z M26 30 h1 v1 h-1Z M27 30 h1 v1 h-1Z M28 30 h1 v1 h-1Z M29 30 h1 v1 h-1Z M30 30 h1 v1 h-1Z M31 30 h1 v1 h-1Z M13 31 h1 v1 h-1Z M16 31 h1 v1 h-1Z M18 31 h1 v1 h-1Z M19 31 h1 v1 h-1Z M20 31 h1 v1 h-1Z M24 31 h1 v1 h-1Z M26 31 h1 v1 h-1Z M28 31 h1 v1 h-1Z M29 31 h1 v1 h-1Z M31 31 h1 v1 h-1Z M15 32 h1 v1 h-1Z M18 32 h1 v1 h-1Z M21 32 h1 v1 h-1Z M23 32 h1 v1 h-1Z M25 32 h1 v1 h-1Z M26 32 h1 v1 h-1Z M27 32 h1 v1 h-1Z M30 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-finder-dark dark qrcode" fill="#000" d="M4 4 h1 v1 h-1Z M5 4 h1 v1 h-1Z M6 4 h1 v1 h-1Z M7 4 h1 v1 h-1Z M8 4 h1 v1 h-1Z M9 4 h1 v1 h-1Z M10 4 h1 v1 h-1Z M26 4 h1 v1 h-1Z M27 4 h1 v1 h-1Z M28 4 h1 v1 h-1Z M29 4 h1 v1 h-1Z M30 4 h1 v1 h-1Z M31 4 h1 v1 h-1Z M32 4 h1 v1 h-1Z M4 5 h1 v1 h-1Z M10 5 h1 v1 h-1Z M26 5 h1 v1 h-1Z M32 5 h1 v1 h-1Z M4 6 h1 v1 h-1Z M10 6 h1 v1 h-1Z M26 6 h1 v1 h-1Z M32 6 h1 v1 h-1Z M4 7 h1 v1 h-1Z M10 7 h1 v1 h-1Z M26 7 h1 v1 h-1Z M32 7 h1 v1 h-1Z M4 8 h1 v1 h-1Z M10 8 h1 v1 h-1Z M26 8 h1 v1 h-1Z M32 8 h1 v1 h-1Z M4 9 h1 v1 h-1Z M10 9 h1 v1 h-1Z M26 9 h1 v1 h-1Z M32 9 h1 v1 h-1Z M4 10 h1 v1 h-1Z M5 10 h1 v1 h-1Z M6 10 h1 v1 h-1Z M7 10 h1 v1 h-1Z M8 10 h1 v1 h-1Z M9 10 h1 v1 h-1Z M10 10 h1 v1 h-1Z M26 10 h1 v1 h-1Z M27 10 h1 v1 h-1Z M28 10 h1 v1 h-1Z M29 10 h1 v1 h-1Z M30 10 h1 v1 h-1Z M31 10 h1 v1 h-1Z M32 10 h1 v1 h-1Z M4 26 h1 v1 h-1Z M5 26 h1 v1 h-1Z M6 26 h1 v1 h-1Z M7 26 h1 v1 h-1Z M8 26 h1 v1 h-1Z M9 26 h1 v1 h-1Z M10 26 h1 v1 h-1Z M4 27 h1 v1 h-1Z M10 27 h1 v1 h-1Z M4 28 h1 v1 h-1Z M10 28 h1 v1 h-1Z M4 29 h1 v1 h-1Z M10 29 h1 v1 h-1Z M4 30 h1 v1 h-1Z M10 30 h1 v1 h-1Z M4 31 h1 v1 h-1Z M10 31 h1 v1 h-1Z M4 32 h1 v1 h-1Z M5 32 h1 v1 h-1Z M6 32 h1 v1 h-1Z M7 32 h1 v1 h-1Z M8 32 h1 v1 h-1Z M9 32 h1 v1 h-1Z M10 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-alignment-dark dark qrcode" fill="#000" d="M24 24 h1 v1 h-1Z M25 24 h1 v1 h-1Z M26 24 h1 v1 h-1Z M27 24 h1 v1 h-1Z M28 24 h1 v1 h-1Z M24 25 h1 v1 h-1Z M28 25 h1 v1 h-1Z M24 26 h1 v1 h-1Z M26 26 h1 v1 h-1Z M28 26 h1 v1 h-1Z M24 27 h1 v1 h-1Z M28 27 h1 v1 h-1Z M24 28 h1 v1 h-1Z M25 28 h1 v1 h-1Z M26 28 h1 v1 h-1Z M27 28 h1 v1 h-1Z M28 28 h1 v1 h-1Z"/>
|
||||
<path class="qr-timing-dark dark qrcode" fill="#000" d="M12 10 h1 v1 h-1Z M14 10 h1 v1 h-1Z M16 10 h1 v1 h-1Z M18 10 h1 v1 h-1Z M20 10 h1 v1 h-1Z M22 10 h1 v1 h-1Z M24 10 h1 v1 h-1Z M10 12 h1 v1 h-1Z M10 14 h1 v1 h-1Z M10 16 h1 v1 h-1Z M10 18 h1 v1 h-1Z M10 20 h1 v1 h-1Z M10 22 h1 v1 h-1Z M10 24 h1 v1 h-1Z"/>
|
||||
<path class="qr-format-dark dark qrcode" fill="#000" d="M12 6 h1 v1 h-1Z M12 7 h1 v1 h-1Z M12 8 h1 v1 h-1Z M12 9 h1 v1 h-1Z M12 11 h1 v1 h-1Z M4 12 h1 v1 h-1Z M6 12 h1 v1 h-1Z M7 12 h1 v1 h-1Z M8 12 h1 v1 h-1Z M9 12 h1 v1 h-1Z M26 12 h1 v1 h-1Z M27 12 h1 v1 h-1Z M28 12 h1 v1 h-1Z M29 12 h1 v1 h-1Z M30 12 h1 v1 h-1Z M12 27 h1 v1 h-1Z M12 28 h1 v1 h-1Z M12 29 h1 v1 h-1Z M12 30 h1 v1 h-1Z M12 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-finder-dot dark qrcode" fill="#000" d="M6 6 h1 v1 h-1Z M7 6 h1 v1 h-1Z M8 6 h1 v1 h-1Z M28 6 h1 v1 h-1Z M29 6 h1 v1 h-1Z M30 6 h1 v1 h-1Z M6 7 h1 v1 h-1Z M7 7 h1 v1 h-1Z M8 7 h1 v1 h-1Z M28 7 h1 v1 h-1Z M29 7 h1 v1 h-1Z M30 7 h1 v1 h-1Z M6 8 h1 v1 h-1Z M7 8 h1 v1 h-1Z M8 8 h1 v1 h-1Z M28 8 h1 v1 h-1Z M29 8 h1 v1 h-1Z M30 8 h1 v1 h-1Z M6 28 h1 v1 h-1Z M7 28 h1 v1 h-1Z M8 28 h1 v1 h-1Z M6 29 h1 v1 h-1Z M7 29 h1 v1 h-1Z M8 29 h1 v1 h-1Z M6 30 h1 v1 h-1Z M7 30 h1 v1 h-1Z M8 30 h1 v1 h-1Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="qr-svg qrcode" viewBox="0 0 37 37" preserveAspectRatio="xMidYMid">
|
||||
<path class="qr-data light qrcode" fill="#fff" d="M14 4 h1 v1 h-1Z M16 4 h1 v1 h-1Z M17 4 h1 v1 h-1Z M18 4 h1 v1 h-1Z M19 4 h1 v1 h-1Z M20 4 h1 v1 h-1Z M21 4 h1 v1 h-1Z M23 4 h1 v1 h-1Z M24 4 h1 v1 h-1Z M13 5 h1 v1 h-1Z M14 5 h1 v1 h-1Z M17 5 h1 v1 h-1Z M18 5 h1 v1 h-1Z M19 5 h1 v1 h-1Z M21 5 h1 v1 h-1Z M24 5 h1 v1 h-1Z M15 6 h1 v1 h-1Z M18 6 h1 v1 h-1Z M23 6 h1 v1 h-1Z M13 7 h1 v1 h-1Z M15 7 h1 v1 h-1Z M16 7 h1 v1 h-1Z M17 7 h1 v1 h-1Z M21 7 h1 v1 h-1Z M24 7 h1 v1 h-1Z M13 8 h1 v1 h-1Z M15 8 h1 v1 h-1Z M19 8 h1 v1 h-1Z M21 8 h1 v1 h-1Z M22 8 h1 v1 h-1Z M23 8 h1 v1 h-1Z M14 9 h1 v1 h-1Z M15 9 h1 v1 h-1Z M20 9 h1 v1 h-1Z M21 9 h1 v1 h-1Z M22 9 h1 v1 h-1Z M13 11 h1 v1 h-1Z M14 11 h1 v1 h-1Z M16 11 h1 v1 h-1Z M17 11 h1 v1 h-1Z M19 11 h1 v1 h-1Z M20 11 h1 v1 h-1Z M22 11 h1 v1 h-1Z M23 11 h1 v1 h-1Z M14 12 h1 v1 h-1Z M15 12 h1 v1 h-1Z M16 12 h1 v1 h-1Z M22 12 h1 v1 h-1Z M24 12 h1 v1 h-1Z M5 13 h1 v1 h-1Z M6 13 h1 v1 h-1Z M7 13 h1 v1 h-1Z M8 13 h1 v1 h-1Z M13 13 h1 v1 h-1Z M14 13 h1 v1 h-1Z M16 13 h1 v1 h-1Z M17 13 h1 v1 h-1Z M18 13 h1 v1 h-1Z M19 13 h1 v1 h-1Z M20 13 h1 v1 h-1Z M21 13 h1 v1 h-1Z M22 13 h1 v1 h-1Z M23 13 h1 v1 h-1Z M24 13 h1 v1 h-1Z M25 13 h1 v1 h-1Z M27 13 h1 v1 h-1Z M4 14 h1 v1 h-1Z M7 14 h1 v1 h-1Z M9 14 h1 v1 h-1Z M11 14 h1 v1 h-1Z M12 14 h1 v1 h-1Z M14 14 h1 v1 h-1Z M15 14 h1 v1 h-1Z M20 14 h1 v1 h-1Z M23 14 h1 v1 h-1Z M24 14 h1 v1 h-1Z M25 14 h1 v1 h-1Z M26 14 h1 v1 h-1Z M28 14 h1 v1 h-1Z M29 14 h1 v1 h-1Z M30 14 h1 v1 h-1Z M31 14 h1 v1 h-1Z M4 15 h1 v1 h-1Z M5 15 h1 v1 h-1Z M8 15 h1 v1 h-1Z M11 15 h1 v1 h-1Z M12 15 h1 v1 h-1Z M14 15 h1 v1 h-1Z M15 15 h1 v1 h-1Z M18 15 h1 v1 h-1Z M22 15 h1 v1 h-1Z M26 15 h1 v1 h-1Z M27 15 h1 v1 h-1Z M30 15 h1 v1 h-1Z M5 16 h1 v1 h-1Z M18 16 h1 v1 h-1Z M19 16 h1 v1 h-1Z M20 16 h1 v1 h-1Z M22 16 h1 v1 h-1Z M24 16 h1 v1 h-1Z
|
||||
M26 16 h1 v1 h-1Z M27 16 h1 v1 h-1Z M28 16 h1 v1 h-1Z M29 16 h1 v1 h-1Z M30 16 h1 v1 h-1Z M32 16 h1 v1 h-1Z M4 17 h1 v1 h-1Z M6 17 h1 v1 h-1Z M7 17 h1 v1 h-1Z M8 17 h1 v1 h-1Z M9 17 h1 v1 h-1Z M14 17 h1 v1 h-1Z M16 17 h1 v1 h-1Z M19 17 h1 v1 h-1Z M21 17 h1 v1 h-1Z M23 17 h1 v1 h-1Z M24 17 h1 v1 h-1Z M25 17 h1 v1 h-1Z M4 18 h1 v1 h-1Z M5 18 h1 v1 h-1Z M6 18 h1 v1 h-1Z M12 18 h1 v1 h-1Z M14 18 h1 v1 h-1Z M16 18 h1 v1 h-1Z M17 18 h1 v1 h-1Z M18 18 h1 v1 h-1Z M19 18 h1 v1 h-1Z M22 18 h1 v1 h-1Z M23 18 h1 v1 h-1Z M25 18 h1 v1 h-1Z M26 18 h1 v1 h-1Z M28 18 h1 v1 h-1Z M31 18 h1 v1 h-1Z M6 19 h1 v1 h-1Z M8 19 h1 v1 h-1Z M11 19 h1 v1 h-1Z M12 19 h1 v1 h-1Z M14 19 h1 v1 h-1Z M15 19 h1 v1 h-1Z M16 19 h1 v1 h-1Z M17 19 h1 v1 h-1Z M19 19 h1 v1 h-1Z M20 19 h1 v1 h-1Z M23 19 h1 v1 h-1Z M27 19 h1 v1 h-1Z M28 19 h1 v1 h-1Z M29 19 h1 v1 h-1Z M30 19 h1 v1 h-1Z M6 20 h1 v1 h-1Z M7 20 h1 v1 h-1Z M9 20 h1 v1 h-1Z M12 20 h1 v1 h-1Z M15 20 h1 v1 h-1Z M22 20 h1 v1 h-1Z M26 20 h1 v1 h-1Z M27 20 h1 v1 h-1Z M28 20 h1 v1 h-1Z M29 20 h1 v1 h-1Z M30 20 h1 v1 h-1Z M32 20 h1 v1 h-1Z M5 21 h1 v1 h-1Z M6 21 h1 v1 h-1Z M7 21 h1 v1 h-1Z M9 21 h1 v1 h-1Z M11 21 h1 v1 h-1Z M12 21 h1 v1 h-1Z M17 21 h1 v1 h-1Z M18 21 h1 v1 h-1Z M19 21 h1 v1 h-1Z M20 21 h1 v1 h-1Z M21 21 h1 v1 h-1Z M23 21 h1 v1 h-1Z M24 21 h1 v1 h-1Z M25 21 h1 v1 h-1Z M30 21 h1 v1 h-1Z M4 22 h1 v1 h-1Z M5 22 h1 v1 h-1Z M6 22 h1 v1 h-1Z M7 22 h1 v1 h-1Z M9 22 h1 v1 h-1Z M11 22 h1 v1 h-1Z M12 22 h1 v1 h-1Z M15 22 h1 v1 h-1Z M16 22 h1 v1 h-1Z M20 22 h1 v1 h-1Z M21 22 h1 v1 h-1Z M22 22 h1 v1 h-1Z M23 22 h1 v1 h-1Z M26 22 h1 v1 h-1Z M27 22 h1 v1 h-1Z M28 22 h1 v1 h-1Z M29 22 h1 v1 h-1Z M31 22 h1 v1 h-1Z M4 23 h1 v1 h-1Z M5 23 h1 v1 h-1Z M12 23 h1 v1 h-1Z M13 23 h1 v1 h-1Z M16 23 h1 v1 h-1Z M18 23 h1 v1 h-1Z M25 23 h1 v1 h-1Z
|
||||
M28 23 h1 v1 h-1Z M29 23 h1 v1 h-1Z M30 23 h1 v1 h-1Z M7 24 h1 v1 h-1Z M9 24 h1 v1 h-1Z M18 24 h1 v1 h-1Z M19 24 h1 v1 h-1Z M20 24 h1 v1 h-1Z M22 24 h1 v1 h-1Z M23 24 h1 v1 h-1Z M30 24 h1 v1 h-1Z M31 24 h1 v1 h-1Z M15 25 h1 v1 h-1Z M19 25 h1 v1 h-1Z M29 25 h1 v1 h-1Z M30 25 h1 v1 h-1Z M31 25 h1 v1 h-1Z M13 26 h1 v1 h-1Z M14 26 h1 v1 h-1Z M17 26 h1 v1 h-1Z M18 26 h1 v1 h-1Z M19 26 h1 v1 h-1Z M22 26 h1 v1 h-1Z M31 26 h1 v1 h-1Z M14 27 h1 v1 h-1Z M15 27 h1 v1 h-1Z M17 27 h1 v1 h-1Z M19 27 h1 v1 h-1Z M20 27 h1 v1 h-1Z M22 27 h1 v1 h-1Z M23 27 h1 v1 h-1Z M29 27 h1 v1 h-1Z M30 27 h1 v1 h-1Z M32 27 h1 v1 h-1Z M13 28 h1 v1 h-1Z M20 28 h1 v1 h-1Z M30 28 h1 v1 h-1Z M14 29 h1 v1 h-1Z M15 29 h1 v1 h-1Z M17 29 h1 v1 h-1Z M18 29 h1 v1 h-1Z M19 29 h1 v1 h-1Z M20 29 h1 v1 h-1Z M23 29 h1 v1 h-1Z M24 29 h1 v1 h-1Z M26 29 h1 v1 h-1Z M27 29 h1 v1 h-1Z M28 29 h1 v1 h-1Z M29 29 h1 v1 h-1Z M30 29 h1 v1 h-1Z M32 29 h1 v1 h-1Z M14 30 h1 v1 h-1Z M16 30 h1 v1 h-1Z M20 30 h1 v1 h-1Z M23 30 h1 v1 h-1Z M26 30 h1 v1 h-1Z M27 30 h1 v1 h-1Z M28 30 h1 v1 h-1Z M15 31 h1 v1 h-1Z M17 31 h1 v1 h-1Z M23 31 h1 v1 h-1Z M25 31 h1 v1 h-1Z M26 31 h1 v1 h-1Z M28 31 h1 v1 h-1Z M30 31 h1 v1 h-1Z M13 32 h1 v1 h-1Z M18 32 h1 v1 h-1Z M19 32 h1 v1 h-1Z M23 32 h1 v1 h-1Z M25 32 h1 v1 h-1Z M28 32 h1 v1 h-1Z M30 32 h1 v1 h-1Z M32 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-finder light qrcode" fill="#fff" d="M5 5 h1 v1 h-1Z M6 5 h1 v1 h-1Z M7 5 h1 v1 h-1Z M8 5 h1 v1 h-1Z M9 5 h1 v1 h-1Z M27 5 h1 v1 h-1Z M28 5 h1 v1 h-1Z M29 5 h1 v1 h-1Z M30 5 h1 v1 h-1Z M31 5 h1 v1 h-1Z M5 6 h1 v1 h-1Z M9 6 h1 v1 h-1Z M27 6 h1 v1 h-1Z M31 6 h1 v1 h-1Z M5 7 h1 v1 h-1Z M9 7 h1 v1 h-1Z M27 7 h1 v1 h-1Z M31 7 h1 v1 h-1Z M5 8 h1 v1 h-1Z M9 8 h1 v1 h-1Z M27 8 h1 v1 h-1Z M31 8 h1 v1 h-1Z M5 9 h1 v1 h-1Z M6 9 h1 v1 h-1Z M7 9 h1 v1 h-1Z M8 9 h1 v1 h-1Z M9 9 h1 v1 h-1Z M27 9 h1 v1 h-1Z M28 9 h1 v1 h-1Z M29 9 h1 v1 h-1Z M30 9 h1 v1 h-1Z M31 9 h1 v1 h-1Z M5 27 h1 v1 h-1Z M6 27 h1 v1 h-1Z M7 27 h1 v1 h-1Z M8 27 h1 v1 h-1Z M9 27 h1 v1 h-1Z M5 28 h1 v1 h-1Z M9 28 h1 v1 h-1Z M5 29 h1 v1 h-1Z M9 29 h1 v1 h-1Z M5 30 h1 v1 h-1Z M9 30 h1 v1 h-1Z M5 31 h1 v1 h-1Z M6 31 h1 v1 h-1Z M7 31 h1 v1 h-1Z M8 31 h1 v1 h-1Z M9 31 h1 v1 h-1Z"/>
|
||||
<path class="qr-separator light qrcode" fill="#fff" d="M11 4 h1 v1 h-1Z M25 4 h1 v1 h-1Z M11 5 h1 v1 h-1Z M25 5 h1 v1 h-1Z M11 6 h1 v1 h-1Z M25 6 h1 v1 h-1Z M11 7 h1 v1 h-1Z M25 7 h1 v1 h-1Z M11 8 h1 v1 h-1Z M25 8 h1 v1 h-1Z M11 9 h1 v1 h-1Z M25 9 h1 v1 h-1Z M11 10 h1 v1 h-1Z M25 10 h1 v1 h-1Z M4 11 h1 v1 h-1Z M5 11 h1 v1 h-1Z M6 11 h1 v1 h-1Z M7 11 h1 v1 h-1Z M8 11 h1 v1 h-1Z M9 11 h1 v1 h-1Z M10 11 h1 v1 h-1Z M11 11 h1 v1 h-1Z M25 11 h1 v1 h-1Z M26 11 h1 v1 h-1Z M27 11 h1 v1 h-1Z M28 11 h1 v1 h-1Z M29 11 h1 v1 h-1Z M30 11 h1 v1 h-1Z M31 11 h1 v1 h-1Z M32 11 h1 v1 h-1Z M4 25 h1 v1 h-1Z M5 25 h1 v1 h-1Z M6 25 h1 v1 h-1Z M7 25 h1 v1 h-1Z M8 25 h1 v1 h-1Z M9 25 h1 v1 h-1Z M10 25 h1 v1 h-1Z M11 25 h1 v1 h-1Z M11 26 h1 v1 h-1Z M11 27 h1 v1 h-1Z M11 28 h1 v1 h-1Z M11 29 h1 v1 h-1Z M11 30 h1 v1 h-1Z M11 31 h1 v1 h-1Z M11 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-alignment light qrcode" fill="#fff" d="M25 25 h1 v1 h-1Z M26 25 h1 v1 h-1Z M27 25 h1 v1 h-1Z M25 26 h1 v1 h-1Z M27 26 h1 v1 h-1Z M25 27 h1 v1 h-1Z M26 27 h1 v1 h-1Z M27 27 h1 v1 h-1Z"/>
|
||||
<path class="qr-timing light qrcode" fill="#fff" d="M13 10 h1 v1 h-1Z M15 10 h1 v1 h-1Z M17 10 h1 v1 h-1Z M19 10 h1 v1 h-1Z M21 10 h1 v1 h-1Z M23 10 h1 v1 h-1Z M10 13 h1 v1 h-1Z M10 15 h1 v1 h-1Z M10 17 h1 v1 h-1Z M10 19 h1 v1 h-1Z M10 21 h1 v1 h-1Z M10 23 h1 v1 h-1Z"/>
|
||||
<path class="qr-format light qrcode" fill="#fff" d="M12 5 h1 v1 h-1Z M12 6 h1 v1 h-1Z M5 12 h1 v1 h-1Z M6 12 h1 v1 h-1Z M7 12 h1 v1 h-1Z M9 12 h1 v1 h-1Z M30 12 h1 v1 h-1Z M31 12 h1 v1 h-1Z M12 27 h1 v1 h-1Z M12 29 h1 v1 h-1Z M12 30 h1 v1 h-1Z M12 31 h1 v1 h-1Z"/>
|
||||
<path class="qr-quietzone light qrcode" fill="#fff" d="M0 0 h1 v1 h-1Z M1 0 h1 v1 h-1Z M2 0 h1 v1 h-1Z M3 0 h1 v1 h-1Z M4 0 h1 v1 h-1Z M5 0 h1 v1 h-1Z M6 0 h1 v1 h-1Z M7 0 h1 v1 h-1Z M8 0 h1 v1 h-1Z M9 0 h1 v1 h-1Z M10 0 h1 v1 h-1Z M11 0 h1 v1 h-1Z M12 0 h1 v1 h-1Z M13 0 h1 v1 h-1Z M14 0 h1 v1 h-1Z M15 0 h1 v1 h-1Z M16 0 h1 v1 h-1Z M17 0 h1 v1 h-1Z M18 0 h1 v1 h-1Z M19 0 h1 v1 h-1Z M20 0 h1 v1 h-1Z M21 0 h1 v1 h-1Z M22 0 h1 v1 h-1Z M23 0 h1 v1 h-1Z M24 0 h1 v1 h-1Z M25 0 h1 v1 h-1Z M26 0 h1 v1 h-1Z M27 0 h1 v1 h-1Z M28 0 h1 v1 h-1Z M29 0 h1 v1 h-1Z M30 0 h1 v1 h-1Z M31 0 h1 v1 h-1Z M32 0 h1 v1 h-1Z M33 0 h1 v1 h-1Z M34 0 h1 v1 h-1Z M35 0 h1 v1 h-1Z M36 0 h1 v1 h-1Z M0 1 h1 v1 h-1Z M1 1 h1 v1 h-1Z M2 1 h1 v1 h-1Z M3 1 h1 v1 h-1Z M4 1 h1 v1 h-1Z M5 1 h1 v1 h-1Z M6 1 h1 v1 h-1Z M7 1 h1 v1 h-1Z M8 1 h1 v1 h-1Z M9 1 h1 v1 h-1Z M10 1 h1 v1 h-1Z M11 1 h1 v1 h-1Z M12 1 h1 v1 h-1Z M13 1 h1 v1 h-1Z M14 1 h1 v1 h-1Z M15 1 h1 v1 h-1Z M16 1 h1 v1 h-1Z M17 1 h1 v1 h-1Z M18 1 h1 v1 h-1Z M19 1 h1 v1 h-1Z M20 1 h1 v1 h-1Z M21 1 h1 v1 h-1Z M22 1 h1 v1 h-1Z M23 1 h1 v1 h-1Z M24 1 h1 v1 h-1Z M25 1 h1 v1 h-1Z M26 1 h1 v1 h-1Z M27 1 h1 v1 h-1Z M28 1 h1 v1 h-1Z M29 1 h1 v1 h-1Z M30 1 h1 v1 h-1Z M31 1 h1 v1 h-1Z M32 1 h1 v1 h-1Z M33 1 h1 v1 h-1Z M34 1 h1 v1 h-1Z M35 1 h1 v1 h-1Z M36 1 h1 v1 h-1Z M0 2 h1 v1 h-1Z M1 2 h1 v1 h-1Z M2 2 h1 v1 h-1Z M3 2 h1 v1 h-1Z M4 2 h1 v1 h-1Z M5 2 h1 v1 h-1Z M6 2 h1 v1 h-1Z M7 2 h1 v1 h-1Z M8 2 h1 v1 h-1Z M9 2 h1 v1 h-1Z M10 2 h1 v1 h-1Z M11 2 h1 v1 h-1Z M12 2 h1 v1 h-1Z M13 2 h1 v1 h-1Z M14 2 h1 v1 h-1Z M15 2 h1 v1 h-1Z M16 2 h1 v1 h-1Z M17 2 h1 v1 h-1Z M18 2 h1 v1 h-1Z M19 2 h1 v1 h-1Z M20 2 h1 v1 h-1Z M21 2 h1 v1 h-1Z M22 2 h1 v1 h-1Z M23 2 h1 v1 h-1Z M24 2 h1 v1 h-1Z M25 2 h1 v1 h-1Z
|
||||
M26 2 h1 v1 h-1Z M27 2 h1 v1 h-1Z M28 2 h1 v1 h-1Z M29 2 h1 v1 h-1Z M30 2 h1 v1 h-1Z M31 2 h1 v1 h-1Z M32 2 h1 v1 h-1Z M33 2 h1 v1 h-1Z M34 2 h1 v1 h-1Z M35 2 h1 v1 h-1Z M36 2 h1 v1 h-1Z M0 3 h1 v1 h-1Z M1 3 h1 v1 h-1Z M2 3 h1 v1 h-1Z M3 3 h1 v1 h-1Z M4 3 h1 v1 h-1Z M5 3 h1 v1 h-1Z M6 3 h1 v1 h-1Z M7 3 h1 v1 h-1Z M8 3 h1 v1 h-1Z M9 3 h1 v1 h-1Z M10 3 h1 v1 h-1Z M11 3 h1 v1 h-1Z M12 3 h1 v1 h-1Z M13 3 h1 v1 h-1Z M14 3 h1 v1 h-1Z M15 3 h1 v1 h-1Z M16 3 h1 v1 h-1Z M17 3 h1 v1 h-1Z M18 3 h1 v1 h-1Z M19 3 h1 v1 h-1Z M20 3 h1 v1 h-1Z M21 3 h1 v1 h-1Z M22 3 h1 v1 h-1Z M23 3 h1 v1 h-1Z M24 3 h1 v1 h-1Z M25 3 h1 v1 h-1Z M26 3 h1 v1 h-1Z M27 3 h1 v1 h-1Z M28 3 h1 v1 h-1Z M29 3 h1 v1 h-1Z M30 3 h1 v1 h-1Z M31 3 h1 v1 h-1Z M32 3 h1 v1 h-1Z M33 3 h1 v1 h-1Z M34 3 h1 v1 h-1Z M35 3 h1 v1 h-1Z M36 3 h1 v1 h-1Z M0 4 h1 v1 h-1Z M1 4 h1 v1 h-1Z M2 4 h1 v1 h-1Z M3 4 h1 v1 h-1Z M33 4 h1 v1 h-1Z M34 4 h1 v1 h-1Z M35 4 h1 v1 h-1Z M36 4 h1 v1 h-1Z M0 5 h1 v1 h-1Z M1 5 h1 v1 h-1Z M2 5 h1 v1 h-1Z M3 5 h1 v1 h-1Z M33 5 h1 v1 h-1Z M34 5 h1 v1 h-1Z M35 5 h1 v1 h-1Z M36 5 h1 v1 h-1Z M0 6 h1 v1 h-1Z M1 6 h1 v1 h-1Z M2 6 h1 v1 h-1Z M3 6 h1 v1 h-1Z M33 6 h1 v1 h-1Z M34 6 h1 v1 h-1Z M35 6 h1 v1 h-1Z M36 6 h1 v1 h-1Z M0 7 h1 v1 h-1Z M1 7 h1 v1 h-1Z M2 7 h1 v1 h-1Z M3 7 h1 v1 h-1Z M33 7 h1 v1 h-1Z M34 7 h1 v1 h-1Z M35 7 h1 v1 h-1Z M36 7 h1 v1 h-1Z M0 8 h1 v1 h-1Z M1 8 h1 v1 h-1Z M2 8 h1 v1 h-1Z M3 8 h1 v1 h-1Z M33 8 h1 v1 h-1Z M34 8 h1 v1 h-1Z M35 8 h1 v1 h-1Z M36 8 h1 v1 h-1Z M0 9 h1 v1 h-1Z M1 9 h1 v1 h-1Z M2 9 h1 v1 h-1Z M3 9 h1 v1 h-1Z M33 9 h1 v1 h-1Z M34 9 h1 v1 h-1Z M35 9 h1 v1 h-1Z M36 9 h1 v1 h-1Z M0 10 h1 v1 h-1Z M1 10 h1 v1 h-1Z M2 10 h1 v1 h-1Z M3 10 h1 v1 h-1Z
|
||||
M33 10 h1 v1 h-1Z M34 10 h1 v1 h-1Z M35 10 h1 v1 h-1Z M36 10 h1 v1 h-1Z M0 11 h1 v1 h-1Z M1 11 h1 v1 h-1Z M2 11 h1 v1 h-1Z M3 11 h1 v1 h-1Z M33 11 h1 v1 h-1Z M34 11 h1 v1 h-1Z M35 11 h1 v1 h-1Z M36 11 h1 v1 h-1Z M0 12 h1 v1 h-1Z M1 12 h1 v1 h-1Z M2 12 h1 v1 h-1Z M3 12 h1 v1 h-1Z M33 12 h1 v1 h-1Z M34 12 h1 v1 h-1Z M35 12 h1 v1 h-1Z M36 12 h1 v1 h-1Z M0 13 h1 v1 h-1Z M1 13 h1 v1 h-1Z M2 13 h1 v1 h-1Z M3 13 h1 v1 h-1Z M33 13 h1 v1 h-1Z M34 13 h1 v1 h-1Z M35 13 h1 v1 h-1Z M36 13 h1 v1 h-1Z M0 14 h1 v1 h-1Z M1 14 h1 v1 h-1Z M2 14 h1 v1 h-1Z M3 14 h1 v1 h-1Z M33 14 h1 v1 h-1Z M34 14 h1 v1 h-1Z M35 14 h1 v1 h-1Z M36 14 h1 v1 h-1Z M0 15 h1 v1 h-1Z M1 15 h1 v1 h-1Z M2 15 h1 v1 h-1Z M3 15 h1 v1 h-1Z M33 15 h1 v1 h-1Z M34 15 h1 v1 h-1Z M35 15 h1 v1 h-1Z M36 15 h1 v1 h-1Z M0 16 h1 v1 h-1Z M1 16 h1 v1 h-1Z M2 16 h1 v1 h-1Z M3 16 h1 v1 h-1Z M33 16 h1 v1 h-1Z M34 16 h1 v1 h-1Z M35 16 h1 v1 h-1Z M36 16 h1 v1 h-1Z M0 17 h1 v1 h-1Z M1 17 h1 v1 h-1Z M2 17 h1 v1 h-1Z M3 17 h1 v1 h-1Z M33 17 h1 v1 h-1Z M34 17 h1 v1 h-1Z M35 17 h1 v1 h-1Z M36 17 h1 v1 h-1Z M0 18 h1 v1 h-1Z M1 18 h1 v1 h-1Z M2 18 h1 v1 h-1Z M3 18 h1 v1 h-1Z M33 18 h1 v1 h-1Z M34 18 h1 v1 h-1Z M35 18 h1 v1 h-1Z M36 18 h1 v1 h-1Z M0 19 h1 v1 h-1Z M1 19 h1 v1 h-1Z M2 19 h1 v1 h-1Z M3 19 h1 v1 h-1Z M33 19 h1 v1 h-1Z M34 19 h1 v1 h-1Z M35 19 h1 v1 h-1Z M36 19 h1 v1 h-1Z M0 20 h1 v1 h-1Z M1 20 h1 v1 h-1Z M2 20 h1 v1 h-1Z M3 20 h1 v1 h-1Z M33 20 h1 v1 h-1Z M34 20 h1 v1 h-1Z M35 20 h1 v1 h-1Z M36 20 h1 v1 h-1Z M0 21 h1 v1 h-1Z M1 21 h1 v1 h-1Z M2 21 h1 v1 h-1Z M3 21 h1 v1 h-1Z M33 21 h1 v1 h-1Z M34 21 h1 v1 h-1Z M35 21 h1 v1 h-1Z M36 21 h1 v1 h-1Z M0 22 h1 v1 h-1Z M1 22 h1 v1 h-1Z M2 22 h1 v1 h-1Z M3 22 h1 v1 h-1Z M33 22 h1 v1 h-1Z M34 22 h1 v1 h-1Z M35 22 h1 v1 h-1Z M36 22 h1 v1 h-1Z
|
||||
M0 23 h1 v1 h-1Z M1 23 h1 v1 h-1Z M2 23 h1 v1 h-1Z M3 23 h1 v1 h-1Z M33 23 h1 v1 h-1Z M34 23 h1 v1 h-1Z M35 23 h1 v1 h-1Z M36 23 h1 v1 h-1Z M0 24 h1 v1 h-1Z M1 24 h1 v1 h-1Z M2 24 h1 v1 h-1Z M3 24 h1 v1 h-1Z M33 24 h1 v1 h-1Z M34 24 h1 v1 h-1Z M35 24 h1 v1 h-1Z M36 24 h1 v1 h-1Z M0 25 h1 v1 h-1Z M1 25 h1 v1 h-1Z M2 25 h1 v1 h-1Z M3 25 h1 v1 h-1Z M33 25 h1 v1 h-1Z M34 25 h1 v1 h-1Z M35 25 h1 v1 h-1Z M36 25 h1 v1 h-1Z M0 26 h1 v1 h-1Z M1 26 h1 v1 h-1Z M2 26 h1 v1 h-1Z M3 26 h1 v1 h-1Z M33 26 h1 v1 h-1Z M34 26 h1 v1 h-1Z M35 26 h1 v1 h-1Z M36 26 h1 v1 h-1Z M0 27 h1 v1 h-1Z M1 27 h1 v1 h-1Z M2 27 h1 v1 h-1Z M3 27 h1 v1 h-1Z M33 27 h1 v1 h-1Z M34 27 h1 v1 h-1Z M35 27 h1 v1 h-1Z M36 27 h1 v1 h-1Z M0 28 h1 v1 h-1Z M1 28 h1 v1 h-1Z M2 28 h1 v1 h-1Z M3 28 h1 v1 h-1Z M33 28 h1 v1 h-1Z M34 28 h1 v1 h-1Z M35 28 h1 v1 h-1Z M36 28 h1 v1 h-1Z M0 29 h1 v1 h-1Z M1 29 h1 v1 h-1Z M2 29 h1 v1 h-1Z M3 29 h1 v1 h-1Z M33 29 h1 v1 h-1Z M34 29 h1 v1 h-1Z M35 29 h1 v1 h-1Z M36 29 h1 v1 h-1Z M0 30 h1 v1 h-1Z M1 30 h1 v1 h-1Z M2 30 h1 v1 h-1Z M3 30 h1 v1 h-1Z M33 30 h1 v1 h-1Z M34 30 h1 v1 h-1Z M35 30 h1 v1 h-1Z M36 30 h1 v1 h-1Z M0 31 h1 v1 h-1Z M1 31 h1 v1 h-1Z M2 31 h1 v1 h-1Z M3 31 h1 v1 h-1Z M33 31 h1 v1 h-1Z M34 31 h1 v1 h-1Z M35 31 h1 v1 h-1Z M36 31 h1 v1 h-1Z M0 32 h1 v1 h-1Z M1 32 h1 v1 h-1Z M2 32 h1 v1 h-1Z M3 32 h1 v1 h-1Z M33 32 h1 v1 h-1Z M34 32 h1 v1 h-1Z M35 32 h1 v1 h-1Z M36 32 h1 v1 h-1Z M0 33 h1 v1 h-1Z M1 33 h1 v1 h-1Z M2 33 h1 v1 h-1Z M3 33 h1 v1 h-1Z M4 33 h1 v1 h-1Z M5 33 h1 v1 h-1Z M6 33 h1 v1 h-1Z M7 33 h1 v1 h-1Z M8 33 h1 v1 h-1Z M9 33 h1 v1 h-1Z M10 33 h1 v1 h-1Z M11 33 h1 v1 h-1Z M12 33 h1 v1 h-1Z M13 33 h1 v1 h-1Z M14 33 h1 v1 h-1Z M15 33 h1 v1 h-1Z M16 33 h1 v1 h-1Z M17 33 h1 v1 h-1Z M18 33 h1 v1 h-1Z M19 33 h1 v1 h-1Z
|
||||
M20 33 h1 v1 h-1Z M21 33 h1 v1 h-1Z M22 33 h1 v1 h-1Z M23 33 h1 v1 h-1Z M24 33 h1 v1 h-1Z M25 33 h1 v1 h-1Z M26 33 h1 v1 h-1Z M27 33 h1 v1 h-1Z M28 33 h1 v1 h-1Z M29 33 h1 v1 h-1Z M30 33 h1 v1 h-1Z M31 33 h1 v1 h-1Z M32 33 h1 v1 h-1Z M33 33 h1 v1 h-1Z M34 33 h1 v1 h-1Z M35 33 h1 v1 h-1Z M36 33 h1 v1 h-1Z M0 34 h1 v1 h-1Z M1 34 h1 v1 h-1Z M2 34 h1 v1 h-1Z M3 34 h1 v1 h-1Z M4 34 h1 v1 h-1Z M5 34 h1 v1 h-1Z M6 34 h1 v1 h-1Z M7 34 h1 v1 h-1Z M8 34 h1 v1 h-1Z M9 34 h1 v1 h-1Z M10 34 h1 v1 h-1Z M11 34 h1 v1 h-1Z M12 34 h1 v1 h-1Z M13 34 h1 v1 h-1Z M14 34 h1 v1 h-1Z M15 34 h1 v1 h-1Z M16 34 h1 v1 h-1Z M17 34 h1 v1 h-1Z M18 34 h1 v1 h-1Z M19 34 h1 v1 h-1Z M20 34 h1 v1 h-1Z M21 34 h1 v1 h-1Z M22 34 h1 v1 h-1Z M23 34 h1 v1 h-1Z M24 34 h1 v1 h-1Z M25 34 h1 v1 h-1Z M26 34 h1 v1 h-1Z M27 34 h1 v1 h-1Z M28 34 h1 v1 h-1Z M29 34 h1 v1 h-1Z M30 34 h1 v1 h-1Z M31 34 h1 v1 h-1Z M32 34 h1 v1 h-1Z M33 34 h1 v1 h-1Z M34 34 h1 v1 h-1Z M35 34 h1 v1 h-1Z M36 34 h1 v1 h-1Z M0 35 h1 v1 h-1Z M1 35 h1 v1 h-1Z M2 35 h1 v1 h-1Z M3 35 h1 v1 h-1Z M4 35 h1 v1 h-1Z M5 35 h1 v1 h-1Z M6 35 h1 v1 h-1Z M7 35 h1 v1 h-1Z M8 35 h1 v1 h-1Z M9 35 h1 v1 h-1Z M10 35 h1 v1 h-1Z M11 35 h1 v1 h-1Z M12 35 h1 v1 h-1Z M13 35 h1 v1 h-1Z M14 35 h1 v1 h-1Z M15 35 h1 v1 h-1Z M16 35 h1 v1 h-1Z M17 35 h1 v1 h-1Z M18 35 h1 v1 h-1Z M19 35 h1 v1 h-1Z M20 35 h1 v1 h-1Z M21 35 h1 v1 h-1Z M22 35 h1 v1 h-1Z M23 35 h1 v1 h-1Z M24 35 h1 v1 h-1Z M25 35 h1 v1 h-1Z M26 35 h1 v1 h-1Z M27 35 h1 v1 h-1Z M28 35 h1 v1 h-1Z M29 35 h1 v1 h-1Z M30 35 h1 v1 h-1Z M31 35 h1 v1 h-1Z M32 35 h1 v1 h-1Z M33 35 h1 v1 h-1Z M34 35 h1 v1 h-1Z M35 35 h1 v1 h-1Z M36 35 h1 v1 h-1Z M0 36 h1 v1 h-1Z M1 36 h1 v1 h-1Z M2 36 h1 v1 h-1Z M3 36 h1 v1 h-1Z M4 36 h1 v1 h-1Z M5 36 h1 v1 h-1Z M6 36 h1 v1 h-1Z M7 36 h1 v1 h-1Z M8 36 h1 v1 h-1Z
|
||||
M9 36 h1 v1 h-1Z M10 36 h1 v1 h-1Z M11 36 h1 v1 h-1Z M12 36 h1 v1 h-1Z M13 36 h1 v1 h-1Z M14 36 h1 v1 h-1Z M15 36 h1 v1 h-1Z M16 36 h1 v1 h-1Z M17 36 h1 v1 h-1Z M18 36 h1 v1 h-1Z M19 36 h1 v1 h-1Z M20 36 h1 v1 h-1Z M21 36 h1 v1 h-1Z M22 36 h1 v1 h-1Z M23 36 h1 v1 h-1Z M24 36 h1 v1 h-1Z M25 36 h1 v1 h-1Z M26 36 h1 v1 h-1Z M27 36 h1 v1 h-1Z M28 36 h1 v1 h-1Z M29 36 h1 v1 h-1Z M30 36 h1 v1 h-1Z M31 36 h1 v1 h-1Z M32 36 h1 v1 h-1Z M33 36 h1 v1 h-1Z M34 36 h1 v1 h-1Z M35 36 h1 v1 h-1Z M36 36 h1 v1 h-1Z"/>
|
||||
<path class="qr-darkmodule dark qrcode" fill="#000" d="M12 25 h1 v1 h-1Z"/>
|
||||
<path class="qr-data-dark dark qrcode" fill="#000" d="M13 4 h1 v1 h-1Z M15 4 h1 v1 h-1Z M22 4 h1 v1 h-1Z M15 5 h1 v1 h-1Z M16 5 h1 v1 h-1Z M20 5 h1 v1 h-1Z M22 5 h1 v1 h-1Z M23 5 h1 v1 h-1Z M13 6 h1 v1 h-1Z M14 6 h1 v1 h-1Z M16 6 h1 v1 h-1Z M17 6 h1 v1 h-1Z M19 6 h1 v1 h-1Z M20 6 h1 v1 h-1Z M21 6 h1 v1 h-1Z M22 6 h1 v1 h-1Z M24 6 h1 v1 h-1Z M14 7 h1 v1 h-1Z M18 7 h1 v1 h-1Z M19 7 h1 v1 h-1Z M20 7 h1 v1 h-1Z M22 7 h1 v1 h-1Z M23 7 h1 v1 h-1Z M14 8 h1 v1 h-1Z M16 8 h1 v1 h-1Z M17 8 h1 v1 h-1Z M18 8 h1 v1 h-1Z M20 8 h1 v1 h-1Z M24 8 h1 v1 h-1Z M13 9 h1 v1 h-1Z M16 9 h1 v1 h-1Z M17 9 h1 v1 h-1Z M18 9 h1 v1 h-1Z M19 9 h1 v1 h-1Z M23 9 h1 v1 h-1Z M24 9 h1 v1 h-1Z M15 11 h1 v1 h-1Z M18 11 h1 v1 h-1Z M21 11 h1 v1 h-1Z M24 11 h1 v1 h-1Z M13 12 h1 v1 h-1Z M17 12 h1 v1 h-1Z M18 12 h1 v1 h-1Z M19 12 h1 v1 h-1Z M20 12 h1 v1 h-1Z M21 12 h1 v1 h-1Z M23 12 h1 v1 h-1Z M4 13 h1 v1 h-1Z M9 13 h1 v1 h-1Z M11 13 h1 v1 h-1Z M12 13 h1 v1 h-1Z M15 13 h1 v1 h-1Z M26 13 h1 v1 h-1Z M28 13 h1 v1 h-1Z M29 13 h1 v1 h-1Z M30 13 h1 v1 h-1Z M31 13 h1 v1 h-1Z M32 13 h1 v1 h-1Z M5 14 h1 v1 h-1Z M6 14 h1 v1 h-1Z M8 14 h1 v1 h-1Z M13 14 h1 v1 h-1Z M16 14 h1 v1 h-1Z M17 14 h1 v1 h-1Z M18 14 h1 v1 h-1Z M19 14 h1 v1 h-1Z M21 14 h1 v1 h-1Z M22 14 h1 v1 h-1Z M27 14 h1 v1 h-1Z M32 14 h1 v1 h-1Z M6 15 h1 v1 h-1Z M7 15 h1 v1 h-1Z M9 15 h1 v1 h-1Z M13 15 h1 v1 h-1Z M16 15 h1 v1 h-1Z M17 15 h1 v1 h-1Z M19 15 h1 v1 h-1Z M20 15 h1 v1 h-1Z M21 15 h1 v1 h-1Z M23 15 h1 v1 h-1Z M24 15 h1 v1 h-1Z M25 15 h1 v1 h-1Z M28 15 h1 v1 h-1Z M29 15 h1 v1 h-1Z M31 15 h1 v1 h-1Z M32 15 h1 v1 h-1Z M4 16 h1 v1 h-1Z M6 16 h1 v1 h-1Z M7 16 h1 v1 h-1Z M8 16 h1 v1 h-1Z M9 16 h1 v1 h-1Z M11 16 h1 v1 h-1Z M12 16 h1 v1 h-1Z M13 16 h1 v1 h-1Z M14 16 h1 v1 h-1Z M15 16 h1 v1 h-1Z M16 16 h1 v1 h-1Z M17 16 h1 v1 h-1Z M21 16 h1 v1 h-1Z M23 16 h1 v1 h-1Z
|
||||
M25 16 h1 v1 h-1Z M31 16 h1 v1 h-1Z M5 17 h1 v1 h-1Z M11 17 h1 v1 h-1Z M12 17 h1 v1 h-1Z M13 17 h1 v1 h-1Z M15 17 h1 v1 h-1Z M17 17 h1 v1 h-1Z M18 17 h1 v1 h-1Z M20 17 h1 v1 h-1Z M22 17 h1 v1 h-1Z M26 17 h1 v1 h-1Z M27 17 h1 v1 h-1Z M28 17 h1 v1 h-1Z M29 17 h1 v1 h-1Z M30 17 h1 v1 h-1Z M31 17 h1 v1 h-1Z M32 17 h1 v1 h-1Z M7 18 h1 v1 h-1Z M8 18 h1 v1 h-1Z M9 18 h1 v1 h-1Z M11 18 h1 v1 h-1Z M13 18 h1 v1 h-1Z M15 18 h1 v1 h-1Z M20 18 h1 v1 h-1Z M21 18 h1 v1 h-1Z M24 18 h1 v1 h-1Z M27 18 h1 v1 h-1Z M29 18 h1 v1 h-1Z M30 18 h1 v1 h-1Z M32 18 h1 v1 h-1Z M4 19 h1 v1 h-1Z M5 19 h1 v1 h-1Z M7 19 h1 v1 h-1Z M9 19 h1 v1 h-1Z M13 19 h1 v1 h-1Z M18 19 h1 v1 h-1Z M21 19 h1 v1 h-1Z M22 19 h1 v1 h-1Z M24 19 h1 v1 h-1Z M25 19 h1 v1 h-1Z M26 19 h1 v1 h-1Z M31 19 h1 v1 h-1Z M32 19 h1 v1 h-1Z M4 20 h1 v1 h-1Z M5 20 h1 v1 h-1Z M8 20 h1 v1 h-1Z M11 20 h1 v1 h-1Z M13 20 h1 v1 h-1Z M14 20 h1 v1 h-1Z M16 20 h1 v1 h-1Z M17 20 h1 v1 h-1Z M18 20 h1 v1 h-1Z M19 20 h1 v1 h-1Z M20 20 h1 v1 h-1Z M21 20 h1 v1 h-1Z M23 20 h1 v1 h-1Z M24 20 h1 v1 h-1Z M25 20 h1 v1 h-1Z M31 20 h1 v1 h-1Z M4 21 h1 v1 h-1Z M8 21 h1 v1 h-1Z M13 21 h1 v1 h-1Z M14 21 h1 v1 h-1Z M15 21 h1 v1 h-1Z M16 21 h1 v1 h-1Z M22 21 h1 v1 h-1Z M26 21 h1 v1 h-1Z M27 21 h1 v1 h-1Z M28 21 h1 v1 h-1Z M29 21 h1 v1 h-1Z M31 21 h1 v1 h-1Z M32 21 h1 v1 h-1Z M8 22 h1 v1 h-1Z M13 22 h1 v1 h-1Z M14 22 h1 v1 h-1Z M17 22 h1 v1 h-1Z M18 22 h1 v1 h-1Z M19 22 h1 v1 h-1Z M24 22 h1 v1 h-1Z M25 22 h1 v1 h-1Z M30 22 h1 v1 h-1Z M32 22 h1 v1 h-1Z M6 23 h1 v1 h-1Z M7 23 h1 v1 h-1Z M8 23 h1 v1 h-1Z M9 23 h1 v1 h-1Z M11 23 h1 v1 h-1Z M14 23 h1 v1 h-1Z M15 23 h1 v1 h-1Z M17 23 h1 v1 h-1Z M19 23 h1 v1 h-1Z M20 23 h1 v1 h-1Z M21 23 h1 v1 h-1Z M22 23 h1 v1 h-1Z M23 23 h1 v1 h-1Z M24 23 h1 v1 h-1Z M26 23 h1 v1 h-1Z M27 23 h1 v1 h-1Z M31 23 h1 v1 h-1Z
|
||||
M32 23 h1 v1 h-1Z M4 24 h1 v1 h-1Z M5 24 h1 v1 h-1Z M6 24 h1 v1 h-1Z M8 24 h1 v1 h-1Z M11 24 h1 v1 h-1Z M12 24 h1 v1 h-1Z M13 24 h1 v1 h-1Z M14 24 h1 v1 h-1Z M15 24 h1 v1 h-1Z M16 24 h1 v1 h-1Z M17 24 h1 v1 h-1Z M21 24 h1 v1 h-1Z M29 24 h1 v1 h-1Z M32 24 h1 v1 h-1Z M13 25 h1 v1 h-1Z M14 25 h1 v1 h-1Z M16 25 h1 v1 h-1Z M17 25 h1 v1 h-1Z M18 25 h1 v1 h-1Z M20 25 h1 v1 h-1Z M21 25 h1 v1 h-1Z M22 25 h1 v1 h-1Z M23 25 h1 v1 h-1Z M32 25 h1 v1 h-1Z M15 26 h1 v1 h-1Z M16 26 h1 v1 h-1Z M20 26 h1 v1 h-1Z M21 26 h1 v1 h-1Z M23 26 h1 v1 h-1Z M29 26 h1 v1 h-1Z M30 26 h1 v1 h-1Z M32 26 h1 v1 h-1Z M13 27 h1 v1 h-1Z M16 27 h1 v1 h-1Z M18 27 h1 v1 h-1Z M21 27 h1 v1 h-1Z M31 27 h1 v1 h-1Z M14 28 h1 v1 h-1Z M15 28 h1 v1 h-1Z M16 28 h1 v1 h-1Z M17 28 h1 v1 h-1Z M18 28 h1 v1 h-1Z M19 28 h1 v1 h-1Z M21 28 h1 v1 h-1Z M22 28 h1 v1 h-1Z M23 28 h1 v1 h-1Z M29 28 h1 v1 h-1Z M31 28 h1 v1 h-1Z M32 28 h1 v1 h-1Z M13 29 h1 v1 h-1Z M16 29 h1 v1 h-1Z M21 29 h1 v1 h-1Z M22 29 h1 v1 h-1Z M25 29 h1 v1 h-1Z M31 29 h1 v1 h-1Z M13 30 h1 v1 h-1Z M15 30 h1 v1 h-1Z M17 30 h1 v1 h-1Z M18 30 h1 v1 h-1Z M19 30 h1 v1 h-1Z M21 30 h1 v1 h-1Z M22 30 h1 v1 h-1Z M24 30 h1 v1 h-1Z M25 30 h1 v1 h-1Z M29 30 h1 v1 h-1Z M30 30 h1 v1 h-1Z M31 30 h1 v1 h-1Z M32 30 h1 v1 h-1Z M13 31 h1 v1 h-1Z M14 31 h1 v1 h-1Z M16 31 h1 v1 h-1Z M18 31 h1 v1 h-1Z M19 31 h1 v1 h-1Z M20 31 h1 v1 h-1Z M21 31 h1 v1 h-1Z M22 31 h1 v1 h-1Z M24 31 h1 v1 h-1Z M27 31 h1 v1 h-1Z M29 31 h1 v1 h-1Z M31 31 h1 v1 h-1Z M32 31 h1 v1 h-1Z M14 32 h1 v1 h-1Z M15 32 h1 v1 h-1Z M16 32 h1 v1 h-1Z M17 32 h1 v1 h-1Z M20 32 h1 v1 h-1Z M21 32 h1 v1 h-1Z M22 32 h1 v1 h-1Z M24 32 h1 v1 h-1Z M26 32 h1 v1 h-1Z M27 32 h1 v1 h-1Z M29 32 h1 v1 h-1Z M31 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-finder-dark dark qrcode" fill="#000" d="M4 4 h1 v1 h-1Z M5 4 h1 v1 h-1Z M6 4 h1 v1 h-1Z M7 4 h1 v1 h-1Z M8 4 h1 v1 h-1Z M9 4 h1 v1 h-1Z M10 4 h1 v1 h-1Z M26 4 h1 v1 h-1Z M27 4 h1 v1 h-1Z M28 4 h1 v1 h-1Z M29 4 h1 v1 h-1Z M30 4 h1 v1 h-1Z M31 4 h1 v1 h-1Z M32 4 h1 v1 h-1Z M4 5 h1 v1 h-1Z M10 5 h1 v1 h-1Z M26 5 h1 v1 h-1Z M32 5 h1 v1 h-1Z M4 6 h1 v1 h-1Z M10 6 h1 v1 h-1Z M26 6 h1 v1 h-1Z M32 6 h1 v1 h-1Z M4 7 h1 v1 h-1Z M10 7 h1 v1 h-1Z M26 7 h1 v1 h-1Z M32 7 h1 v1 h-1Z M4 8 h1 v1 h-1Z M10 8 h1 v1 h-1Z M26 8 h1 v1 h-1Z M32 8 h1 v1 h-1Z M4 9 h1 v1 h-1Z M10 9 h1 v1 h-1Z M26 9 h1 v1 h-1Z M32 9 h1 v1 h-1Z M4 10 h1 v1 h-1Z M5 10 h1 v1 h-1Z M6 10 h1 v1 h-1Z M7 10 h1 v1 h-1Z M8 10 h1 v1 h-1Z M9 10 h1 v1 h-1Z M10 10 h1 v1 h-1Z M26 10 h1 v1 h-1Z M27 10 h1 v1 h-1Z M28 10 h1 v1 h-1Z M29 10 h1 v1 h-1Z M30 10 h1 v1 h-1Z M31 10 h1 v1 h-1Z M32 10 h1 v1 h-1Z M4 26 h1 v1 h-1Z M5 26 h1 v1 h-1Z M6 26 h1 v1 h-1Z M7 26 h1 v1 h-1Z M8 26 h1 v1 h-1Z M9 26 h1 v1 h-1Z M10 26 h1 v1 h-1Z M4 27 h1 v1 h-1Z M10 27 h1 v1 h-1Z M4 28 h1 v1 h-1Z M10 28 h1 v1 h-1Z M4 29 h1 v1 h-1Z M10 29 h1 v1 h-1Z M4 30 h1 v1 h-1Z M10 30 h1 v1 h-1Z M4 31 h1 v1 h-1Z M10 31 h1 v1 h-1Z M4 32 h1 v1 h-1Z M5 32 h1 v1 h-1Z M6 32 h1 v1 h-1Z M7 32 h1 v1 h-1Z M8 32 h1 v1 h-1Z M9 32 h1 v1 h-1Z M10 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-alignment-dark dark qrcode" fill="#000" d="M24 24 h1 v1 h-1Z M25 24 h1 v1 h-1Z M26 24 h1 v1 h-1Z M27 24 h1 v1 h-1Z M28 24 h1 v1 h-1Z M24 25 h1 v1 h-1Z M28 25 h1 v1 h-1Z M24 26 h1 v1 h-1Z M26 26 h1 v1 h-1Z M28 26 h1 v1 h-1Z M24 27 h1 v1 h-1Z M28 27 h1 v1 h-1Z M24 28 h1 v1 h-1Z M25 28 h1 v1 h-1Z M26 28 h1 v1 h-1Z M27 28 h1 v1 h-1Z M28 28 h1 v1 h-1Z"/>
|
||||
<path class="qr-timing-dark dark qrcode" fill="#000" d="M12 10 h1 v1 h-1Z M14 10 h1 v1 h-1Z M16 10 h1 v1 h-1Z M18 10 h1 v1 h-1Z M20 10 h1 v1 h-1Z M22 10 h1 v1 h-1Z M24 10 h1 v1 h-1Z M10 12 h1 v1 h-1Z M10 14 h1 v1 h-1Z M10 16 h1 v1 h-1Z M10 18 h1 v1 h-1Z M10 20 h1 v1 h-1Z M10 22 h1 v1 h-1Z M10 24 h1 v1 h-1Z"/>
|
||||
<path class="qr-format-dark dark qrcode" fill="#000" d="M12 4 h1 v1 h-1Z M12 7 h1 v1 h-1Z M12 8 h1 v1 h-1Z M12 9 h1 v1 h-1Z M12 11 h1 v1 h-1Z M4 12 h1 v1 h-1Z M8 12 h1 v1 h-1Z M11 12 h1 v1 h-1Z M12 12 h1 v1 h-1Z M25 12 h1 v1 h-1Z M26 12 h1 v1 h-1Z M27 12 h1 v1 h-1Z M28 12 h1 v1 h-1Z M29 12 h1 v1 h-1Z M32 12 h1 v1 h-1Z M12 26 h1 v1 h-1Z M12 28 h1 v1 h-1Z M12 32 h1 v1 h-1Z"/>
|
||||
<path class="qr-finder-dot dark qrcode" fill="#000" d="M6 6 h1 v1 h-1Z M7 6 h1 v1 h-1Z M8 6 h1 v1 h-1Z M28 6 h1 v1 h-1Z M29 6 h1 v1 h-1Z M30 6 h1 v1 h-1Z M6 7 h1 v1 h-1Z M7 7 h1 v1 h-1Z M8 7 h1 v1 h-1Z M28 7 h1 v1 h-1Z M29 7 h1 v1 h-1Z M30 7 h1 v1 h-1Z M6 8 h1 v1 h-1Z M7 8 h1 v1 h-1Z M8 8 h1 v1 h-1Z M28 8 h1 v1 h-1Z M29 8 h1 v1 h-1Z M30 8 h1 v1 h-1Z M6 28 h1 v1 h-1Z M7 28 h1 v1 h-1Z M8 28 h1 v1 h-1Z M6 29 h1 v1 h-1Z M7 29 h1 v1 h-1Z M8 29 h1 v1 h-1Z M6 30 h1 v1 h-1Z M7 30 h1 v1 h-1Z M8 30 h1 v1 h-1Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\QrCode;
|
||||
use App\Models\User;
|
||||
use App\Services\Events\EventMailCalendarSyncService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Tests\TestCase;
|
||||
|
||||
class EventMailCalendarSyncTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
config([
|
||||
'mail_calendar.api_url' => 'https://mail.ladill.com/api/service/v1',
|
||||
'mail_calendar.api_key' => 'test-events-mail-key',
|
||||
'identity.api_url' => 'https://ladill.com/api',
|
||||
'identity.api_key' => 'test-identity-key',
|
||||
]);
|
||||
|
||||
Http::fake([
|
||||
'https://ladill.com/api/identity/mailbox-link*' => Http::response(['data' => []]),
|
||||
'https://mail.ladill.com/*' => Http::response(['data' => ['id' => 55]], 201),
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_in_person_event_syncs_to_mail_calendar(): void
|
||||
{
|
||||
$owner = User::factory()->create(['public_id' => 'usr-cal-1', 'email' => 'host@example.com']);
|
||||
$event = $this->makeEvent($owner, [
|
||||
'format' => 'in_person',
|
||||
'name' => 'Town hall',
|
||||
'starts_at' => now()->addWeek()->toDateString(),
|
||||
'ends_at' => now()->addWeek()->addHours(3)->toDateString(),
|
||||
]);
|
||||
|
||||
app(EventMailCalendarSyncService::class)->sync($event, $owner);
|
||||
|
||||
Http::assertSent(function ($request) use ($event) {
|
||||
return str_contains($request->url(), '/calendar/events')
|
||||
&& $request['mailbox_email'] === 'host@example.com'
|
||||
&& $request['external_ref'] === 'events:'.$event->id
|
||||
&& $request['title'] === 'Town hall';
|
||||
});
|
||||
|
||||
$this->assertSame(
|
||||
['events:'.$event->id => 55],
|
||||
data_get($event->fresh()->payload, 'calendar_sync.items'),
|
||||
);
|
||||
}
|
||||
|
||||
public function test_virtual_session_syncs_one_entry_with_meet_join_url(): void
|
||||
{
|
||||
$owner = User::factory()->create(['public_id' => 'usr-cal-3', 'email' => 'host@example.com']);
|
||||
$event = $this->makeEvent($owner, [
|
||||
'format' => 'virtual',
|
||||
'name' => 'Product launch',
|
||||
'starts_at' => now()->addWeek()->toDateString(),
|
||||
'virtual_sessions' => [[
|
||||
'id' => 'vs-main',
|
||||
'title' => 'Main stage',
|
||||
'scheduled_at' => now()->addWeek()->toIso8601String(),
|
||||
'duration_minutes' => 90,
|
||||
'join_url' => 'https://meet.ladill.com/join/demo',
|
||||
]],
|
||||
]);
|
||||
|
||||
app(EventMailCalendarSyncService::class)->sync($event, $owner);
|
||||
|
||||
Http::assertSent(function ($request) use ($event) {
|
||||
return str_contains($request->url(), '/calendar/events')
|
||||
&& $request['external_ref'] === 'events:'.$event->id.':session:vs-main'
|
||||
&& $request['join_url'] === 'https://meet.ladill.com/join/demo';
|
||||
});
|
||||
|
||||
$this->assertSame(1, collect(Http::recorded())->filter(
|
||||
fn (array $pair) => str_contains($pair[0]->url(), '/calendar/events'),
|
||||
)->count());
|
||||
}
|
||||
|
||||
public function test_uses_linked_mailbox_when_available(): void
|
||||
{
|
||||
Http::fake([
|
||||
'https://mail.ladill.com/*' => Http::response(['data' => ['id' => 77]], 201),
|
||||
]);
|
||||
|
||||
$this->mock(\App\Services\Identity\IdentityClient::class, function ($mock) {
|
||||
$mock->shouldReceive('mailboxLinkStatus')
|
||||
->once()
|
||||
->andReturn(['linked_mailbox' => 'owner@customdomain.com']);
|
||||
});
|
||||
|
||||
$owner = User::factory()->create(['public_id' => 'usr-cal-2', 'email' => 'sso@ladill.com']);
|
||||
$event = $this->makeEvent($owner, [
|
||||
'format' => 'in_person',
|
||||
'name' => 'Gala',
|
||||
'starts_at' => now()->addWeek()->toDateString(),
|
||||
]);
|
||||
|
||||
app(EventMailCalendarSyncService::class)->sync($event, $owner);
|
||||
|
||||
Http::assertSent(function ($request) {
|
||||
return str_contains($request->url(), '/calendar/events')
|
||||
&& ($request['mailbox_email'] ?? '') === 'owner@customdomain.com';
|
||||
});
|
||||
}
|
||||
|
||||
/** @param array<string, mixed> $content */
|
||||
private function makeEvent(User $owner, array $content): QrCode
|
||||
{
|
||||
return QrCode::create([
|
||||
'user_id' => $owner->id,
|
||||
'short_code' => 'evt-cal-'.uniqid(),
|
||||
'type' => QrCode::TYPE_EVENT,
|
||||
'label' => (string) ($content['name'] ?? 'Event'),
|
||||
'payload' => ['content' => $content, 'style' => []],
|
||||
'is_active' => true,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user