From 22f92d1b2e920a5e4a7186be098e5483c738a4b7 Mon Sep 17 00:00:00 2001 From: Andrei Markov Date: Fri, 5 Jun 2026 02:12:48 +0300 Subject: [PATCH 01/18] docs: add PR template Signed-off-by: Andrei Markov --- .github/pull_request_template.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..1a68db5e5 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,13 @@ +## Goal + + +## Changes +- + +## Testing + + +## Checklist +- [ ] Title is a clear sentence (≤ 70 chars) +- [ ] Commits are signed (`git log --show-signature`) +- [ ] `submissions/labN.md` updated From 7d42a4cf032c71bfbe6870d22273d73eb99b36d0 Mon Sep 17 00:00:00 2001 From: Andrei Markov Date: Tue, 23 Jun 2026 14:34:55 +0300 Subject: [PATCH 02/18] feat(lab6): Dockerize QuickNotes with distroless image and compose stack --- app/Dockerfile | 20 ++ compose.yaml | 41 +++ .../attachments/lab6/bonus-security.txt | 12 + .../attachments/lab6/cache-bad-rebuild.txt | 3 + .../attachments/lab6/cache-good-rebuild.txt | 3 + submissions/attachments/lab6/compose-logs.txt | 1 + submissions/attachments/lab6/compose-ps.txt | 2 + submissions/attachments/lab6/compose-up.txt | 98 +++++++ submissions/attachments/lab6/curl-health.txt | 1 + .../attachments/lab6/docker-images.txt | 4 + .../lab6/docker-inspect-config.json | 14 + .../attachments/lab6/persistence-test.txt | 63 +++++ submissions/attachments/lab6/trivy.txt | 92 +++++++ submissions/lab6.md | 252 ++++++++++++++++++ 14 files changed, 606 insertions(+) create mode 100644 app/Dockerfile create mode 100644 compose.yaml create mode 100644 submissions/attachments/lab6/bonus-security.txt create mode 100644 submissions/attachments/lab6/cache-bad-rebuild.txt create mode 100644 submissions/attachments/lab6/cache-good-rebuild.txt create mode 100644 submissions/attachments/lab6/compose-logs.txt create mode 100644 submissions/attachments/lab6/compose-ps.txt create mode 100644 submissions/attachments/lab6/compose-up.txt create mode 100644 submissions/attachments/lab6/curl-health.txt create mode 100644 submissions/attachments/lab6/docker-images.txt create mode 100644 submissions/attachments/lab6/docker-inspect-config.json create mode 100644 submissions/attachments/lab6/persistence-test.txt create mode 100644 submissions/attachments/lab6/trivy.txt create mode 100644 submissions/lab6.md diff --git a/app/Dockerfile b/app/Dockerfile new file mode 100644 index 000000000..5d69f923c --- /dev/null +++ b/app/Dockerfile @@ -0,0 +1,20 @@ +# syntax=docker/dockerfile:1 + +FROM golang:1.24-alpine AS builder +WORKDIR /src +COPY go.mod ./ +RUN go mod download +COPY . . +RUN CGO_ENABLED=0 GOOS=linux go build \ + -trimpath \ + -ldflags='-s -w' \ + -o /quicknotes . + +FROM busybox:1.36-musl AS busybox + +FROM gcr.io/distroless/static-debian12:nonroot +COPY --from=builder /quicknotes /quicknotes +COPY --from=builder /src/seed.json /seed.json +COPY --from=busybox /bin/busybox /busybox +EXPOSE 8080 +ENTRYPOINT ["/quicknotes"] diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 000000000..ddaefd8b7 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,41 @@ +services: + volume-init: + image: busybox:1.36-musl + volumes: + - quicknotes-data:/data + command: ["sh", "-c", "chown 65532:65532 /data"] + restart: "no" + + quicknotes: + build: + context: ./app + dockerfile: Dockerfile + image: quicknotes:lab6 + depends_on: + volume-init: + condition: service_completed_successfully + ports: + - "8080:8080" + environment: + ADDR: ":8080" + DATA_PATH: "/data/notes.json" + SEED_PATH: "/seed.json" + volumes: + - quicknotes-data:/data + restart: unless-stopped + healthcheck: + test: ["CMD", "/busybox", "wget", "-qO-", "http://127.0.0.1:8080/health"] + interval: 5s + timeout: 3s + retries: 3 + start_period: 10s + read_only: true + cap_drop: + - ALL + security_opt: + - no-new-privileges:true + tmpfs: + - /tmp + +volumes: + quicknotes-data: diff --git a/submissions/attachments/lab6/bonus-security.txt b/submissions/attachments/lab6/bonus-security.txt new file mode 100644 index 000000000..1fd204b2a --- /dev/null +++ b/submissions/attachments/lab6/bonus-security.txt @@ -0,0 +1,12 @@ +=== USER nonroot +65532 +=== exec sh (expect fail) +OCI runtime exec failed: exec failed: unable to start container process: exec: "sh": executable file not found in $PATH +=== CapDrop +[ALL] +=== ReadOnly +true +=== SecurityOpt +[no-new-privileges:true] +=== read-only root test via busybox +touch: /etc/test: Read-only file system diff --git a/submissions/attachments/lab6/cache-bad-rebuild.txt b/submissions/attachments/lab6/cache-bad-rebuild.txt new file mode 100644 index 000000000..07d17cb07 --- /dev/null +++ b/submissions/attachments/lab6/cache-bad-rebuild.txt @@ -0,0 +1,3 @@ +real 3.72 +user 0.09 +sys 0.07 diff --git a/submissions/attachments/lab6/cache-good-rebuild.txt b/submissions/attachments/lab6/cache-good-rebuild.txt new file mode 100644 index 000000000..59e96d0b9 --- /dev/null +++ b/submissions/attachments/lab6/cache-good-rebuild.txt @@ -0,0 +1,3 @@ +real 1.70 +user 0.10 +sys 0.11 diff --git a/submissions/attachments/lab6/compose-logs.txt b/submissions/attachments/lab6/compose-logs.txt new file mode 100644 index 000000000..5455ed7f1 --- /dev/null +++ b/submissions/attachments/lab6/compose-logs.txt @@ -0,0 +1 @@ +quicknotes-1 | 2026/06/23 11:29:00 quicknotes listening on :8080 (notes loaded: 4) diff --git a/submissions/attachments/lab6/compose-ps.txt b/submissions/attachments/lab6/compose-ps.txt new file mode 100644 index 000000000..2498259d7 --- /dev/null +++ b/submissions/attachments/lab6/compose-ps.txt @@ -0,0 +1,2 @@ +NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +devops-intro-quicknotes-1 quicknotes:lab6 "/quicknotes" quicknotes 9 seconds ago Up 8 seconds (healthy) 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp diff --git a/submissions/attachments/lab6/compose-up.txt b/submissions/attachments/lab6/compose-up.txt new file mode 100644 index 000000000..ac18c3f49 --- /dev/null +++ b/submissions/attachments/lab6/compose-up.txt @@ -0,0 +1,98 @@ + Image busybox:1.36-musl Pulling + Image busybox:1.36-musl Pulled + Image quicknotes:lab6 Building +#1 [internal] load local bake definitions +#1 reading from stdin 542B done +#1 DONE 0.0s + +#2 [internal] load build definition from Dockerfile +#2 transferring dockerfile: 515B done +#2 DONE 0.0s + +#3 resolve image config for docker-image://docker.io/docker/dockerfile:1 +#3 DONE 0.6s + +#4 docker-image://docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 +#4 resolve docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 done +#4 CACHED + +#5 [internal] load metadata for gcr.io/distroless/static-debian12:nonroot +#5 DONE 0.4s + +#6 [internal] load metadata for docker.io/library/busybox:1.36-musl +#6 DONE 0.5s + +#7 [internal] load metadata for docker.io/library/golang:1.24-alpine +#7 DONE 0.5s + +#8 [internal] load .dockerignore +#8 transferring context: 2B done +#8 DONE 0.0s + +#9 [stage-2 1/4] FROM gcr.io/distroless/static-debian12:nonroot@sha256:d093aa3e30dbadd3efe1310db061a14da60299baff8450a17fe0ccc514a16639 +#9 resolve gcr.io/distroless/static-debian12:nonroot@sha256:d093aa3e30dbadd3efe1310db061a14da60299baff8450a17fe0ccc514a16639 done +#9 DONE 0.0s + +#10 [builder 1/6] FROM docker.io/library/golang:1.24-alpine@sha256:8bee1901f1e530bfb4a7850aa7a479d17ae3a18beb6e09064ed54cfd245b7191 +#10 resolve docker.io/library/golang:1.24-alpine@sha256:8bee1901f1e530bfb4a7850aa7a479d17ae3a18beb6e09064ed54cfd245b7191 done +#10 DONE 0.0s + +#11 [busybox 1/1] FROM docker.io/library/busybox:1.36-musl@sha256:3c6ae8008e2c2eedd141725c30b20d9c36b026eb796688f88205845ef17aa213 +#11 resolve docker.io/library/busybox:1.36-musl@sha256:3c6ae8008e2c2eedd141725c30b20d9c36b026eb796688f88205845ef17aa213 done +#11 DONE 0.0s + +#12 [internal] load build context +#12 transferring context: 422B done +#12 DONE 0.0s + +#13 [stage-2 2/4] COPY --from=builder /quicknotes /quicknotes +#13 CACHED + +#14 [builder 5/6] COPY . . +#14 CACHED + +#15 [stage-2 3/4] COPY --from=builder /src/seed.json /seed.json +#15 CACHED + +#16 [builder 4/6] RUN go mod download +#16 CACHED + +#17 [builder 3/6] COPY go.mod ./ +#17 CACHED + +#18 [builder 2/6] WORKDIR /src +#18 CACHED + +#19 [builder 6/6] RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags='-s -w' -o /quicknotes . +#19 CACHED + +#20 [stage-2 4/4] COPY --from=busybox /bin/busybox /busybox +#20 CACHED + +#21 exporting to image +#21 exporting layers done +#21 exporting manifest sha256:83da2b02f883b1cbcacda2943165c314e5a22658c8fd6df73146b64d2a75a08d done +#21 exporting config sha256:55ee3c6a2cf57ac962258865a12873a7cc7a6114ed1c7c2ebf136cdaeebcd00e done +#21 exporting attestation manifest sha256:dc5f8d1a890bb1b3d3ff4fd870e83e70380d784ebfcc47afd4adce25faa5918f done +#21 exporting manifest list sha256:c354d52933dc27f4c32937b3c039dead80894194905f9df7632d1d26b2bf1c15 done +#21 naming to docker.io/library/quicknotes:lab6 done +#21 unpacking to docker.io/library/quicknotes:lab6 done +#21 DONE 0.0s + +#22 resolving provenance for metadata file +#22 DONE 0.0s + Image quicknotes:lab6 Built + Network devops-intro_default Creating + Network devops-intro_default Created + Volume devops-intro_quicknotes-data Creating + Volume devops-intro_quicknotes-data Created + Container devops-intro-volume-init-1 Creating + Container devops-intro-volume-init-1 Created + Container devops-intro-quicknotes-1 Creating + Container devops-intro-quicknotes-1 Created + Container devops-intro-volume-init-1 Starting + Container devops-intro-volume-init-1 Started + Container devops-intro-volume-init-1 Waiting + Container devops-intro-volume-init-1 Exited + Container devops-intro-quicknotes-1 Starting + Container devops-intro-quicknotes-1 Started diff --git a/submissions/attachments/lab6/curl-health.txt b/submissions/attachments/lab6/curl-health.txt new file mode 100644 index 000000000..a00d4b113 --- /dev/null +++ b/submissions/attachments/lab6/curl-health.txt @@ -0,0 +1 @@ +{"notes":4,"status":"ok"} diff --git a/submissions/attachments/lab6/docker-images.txt b/submissions/attachments/lab6/docker-images.txt new file mode 100644 index 000000000..92c6f981a --- /dev/null +++ b/submissions/attachments/lab6/docker-images.txt @@ -0,0 +1,4 @@ +REPOSITORY TAG SIZE +quicknotes lab6 16MB +quicknotes:lab6 16MB +golang:1.24-alpine 388MB diff --git a/submissions/attachments/lab6/docker-inspect-config.json b/submissions/attachments/lab6/docker-inspect-config.json new file mode 100644 index 000000000..f4c27b04a --- /dev/null +++ b/submissions/attachments/lab6/docker-inspect-config.json @@ -0,0 +1,14 @@ +{ + "User": "65532", + "ExposedPorts": { + "8080/tcp": {} + }, + "Env": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt" + ], + "Entrypoint": [ + "/quicknotes" + ], + "WorkingDir": "/home/nonroot" +} diff --git a/submissions/attachments/lab6/persistence-test.txt b/submissions/attachments/lab6/persistence-test.txt new file mode 100644 index 000000000..efa473ff0 --- /dev/null +++ b/submissions/attachments/lab6/persistence-test.txt @@ -0,0 +1,63 @@ +=== Step 1: POST durable note +{"id":5,"title":"durable","body":"survive a restart","created_at":"2026-06-23T11:29:23.162316088Z"} + +=== grep durable (before down) +[{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"durable","body":"survive a restart","created_at":"2026-06-23T11:29:23.162316088Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"}] + +=== docker compose down (keep volume) + Container devops-intro-quicknotes-1 Stopping + Container devops-intro-quicknotes-1 Stopped + Container devops-intro-quicknotes-1 Removing + Container devops-intro-quicknotes-1 Removed + Container devops-intro-volume-init-1 Stopping + Container devops-intro-volume-init-1 Stopped + Container devops-intro-volume-init-1 Removing + Container devops-intro-volume-init-1 Removed + Network devops-intro_default Removing + Network devops-intro_default Removed +=== docker compose up -d + Network devops-intro_default Creating + Network devops-intro_default Created + Container devops-intro-volume-init-1 Creating + Container devops-intro-volume-init-1 Created + Container devops-intro-quicknotes-1 Creating + Container devops-intro-quicknotes-1 Created + Container devops-intro-volume-init-1 Starting + Container devops-intro-volume-init-1 Started + Container devops-intro-volume-init-1 Waiting + Container devops-intro-volume-init-1 Exited + Container devops-intro-quicknotes-1 Starting + Container devops-intro-quicknotes-1 Started +=== grep durable (after up) +[{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"durable","body":"survive a restart","created_at":"2026-06-23T11:29:23.162316088Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"}] + +=== docker compose down -v + Container devops-intro-quicknotes-1 Stopping + Container devops-intro-quicknotes-1 Stopped + Container devops-intro-quicknotes-1 Removing + Container devops-intro-quicknotes-1 Removed + Container devops-intro-volume-init-1 Stopping + Container devops-intro-volume-init-1 Stopped + Container devops-intro-volume-init-1 Removing + Container devops-intro-volume-init-1 Removed + Volume devops-intro_quicknotes-data Removing + Network devops-intro_default Removing + Volume devops-intro_quicknotes-data Removed + Network devops-intro_default Removed +=== docker compose up -d + Network devops-intro_default Creating + Network devops-intro_default Created + Volume devops-intro_quicknotes-data Creating + Volume devops-intro_quicknotes-data Created + Container devops-intro-volume-init-1 Creating + Container devops-intro-volume-init-1 Created + Container devops-intro-quicknotes-1 Creating + Container devops-intro-quicknotes-1 Created + Container devops-intro-volume-init-1 Starting + Container devops-intro-volume-init-1 Started + Container devops-intro-volume-init-1 Waiting + Container devops-intro-volume-init-1 Exited + Container devops-intro-quicknotes-1 Starting + Container devops-intro-quicknotes-1 Started +=== grep durable (after down -v) — expect absent +gone (expected) diff --git a/submissions/attachments/lab6/trivy.txt b/submissions/attachments/lab6/trivy.txt new file mode 100644 index 000000000..fea184a61 --- /dev/null +++ b/submissions/attachments/lab6/trivy.txt @@ -0,0 +1,92 @@ +Unable to find image 'aquasec/trivy:0.59.1' locally +0.59.1: Pulling from aquasec/trivy +4784322f1001: Pulling fs layer +cb8611c9fe51: Pulling fs layer +b8fb5a6dd3c2: Pulling fs layer +feb3d185a00a: Pulling fs layer +4784322f1001: Download complete +cb8611c9fe51: Download complete +cb8611c9fe51: Pull complete +b8fb5a6dd3c2: Download complete +feb3d185a00a: Download complete +feb3d185a00a: Pull complete +4784322f1001: Pull complete +b8fb5a6dd3c2: Pull complete +Digest: sha256:029e990b328d149bf0a9ffe355919041e1f86192db2df47e217f8a36dd42ceac +Status: Downloaded newer image for aquasec/trivy:0.59.1 +2026-06-23T11:29:46Z INFO [vulndb] Need to update DB +2026-06-23T11:29:46Z INFO [vulndb] Downloading vulnerability DB... +2026-06-23T11:29:46Z INFO [vulndb] Downloading artifact... repo="mirror.gcr.io/aquasec/trivy-db:2" +2026-06-23T11:29:52Z INFO [vulndb] Artifact successfully downloaded repo="mirror.gcr.io/aquasec/trivy-db:2" +2026-06-23T11:29:52Z INFO [vuln] Vulnerability scanning is enabled +2026-06-23T11:29:52Z INFO [secret] Secret scanning is enabled +2026-06-23T11:29:52Z INFO [secret] If your scanning is slow, please try '--scanners vuln' to disable secret scanning +2026-06-23T11:29:52Z INFO [secret] Please see also https://aquasecurity.github.io/trivy/v0.59/docs/scanner/secret#recommendation for faster secret detection +2026-06-23T11:29:52Z INFO Detected OS family="debian" version="12.14" +2026-06-23T11:29:52Z INFO [debian] Detecting vulnerabilities... os_version="12" pkg_num=4 +2026-06-23T11:29:52Z INFO Number of language-specific files num=1 +2026-06-23T11:29:52Z INFO [gobinary] Detecting vulnerabilities... +2026-06-23T11:29:52Z WARN Using severities from other vendors for some vulnerabilities. Read https://aquasecurity.github.io/trivy/v0.59/docs/scanner/vulnerability#severity-selection for details. + +quicknotes:lab6 (debian 12.14) +============================== +Total: 0 (HIGH: 0, CRITICAL: 0) + + +quicknotes (gobinary) +===================== +Total: 13 (HIGH: 13, CRITICAL: 0) + +┌─────────┬────────────────┬──────────┬────────┬───────────────────┬─────────────────┬──────────────────────────────────────────────────────────────┐ +│ Library │ Vulnerability │ Severity │ Status │ Installed Version │ Fixed Version │ Title │ +├─────────┼────────────────┼──────────┼────────┼───────────────────┼─────────────────┼──────────────────────────────────────────────────────────────┤ +│ stdlib │ CVE-2026-25679 │ HIGH │ fixed │ v1.24.13 │ 1.25.8, 1.26.1 │ net/url: Incorrect parsing of IPv6 host literals in net/url │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-25679 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-27145 │ │ │ │ 1.25.11, 1.26.4 │ *x509.Certificate).VerifyHostname previously called │ +│ │ │ │ │ │ │ matchHostnames in ... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-27145 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32280 │ │ │ │ 1.25.9, 1.26.2 │ crypto/x509: crypto/tls: golang: Go: Denial of Service │ +│ │ │ │ │ │ │ vulnerability in certificate chain building... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32280 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32281 │ │ │ │ │ crypto/x509: golang: Go crypto/x509: Denial of Service via │ +│ │ │ │ │ │ │ inefficient certificate chain validation... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32281 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32283 │ │ │ │ │ crypto/tls: golang: Go crypto/tls: Denial of Service via │ +│ │ │ │ │ │ │ multiple TLS 1.3 key... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32283 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-33811 │ │ │ │ 1.25.10, 1.26.3 │ net: golang: Go net package: Denial of Service via long │ +│ │ │ │ │ │ │ CNAME response... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-33811 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-33814 │ │ │ │ │ When processing HTTP/2 SETTINGS frames, transport will enter │ +│ │ │ │ │ │ │ an infini ... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-33814 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39820 │ │ │ │ │ Well-crafted inputs reaching ParseAddress, ParseAddressList, │ +│ │ │ │ │ │ │ and Parse ... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39820 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39823 │ │ │ │ │ CVE-2026-27142 fixed a vulnerability in which URLs were not │ +│ │ │ │ │ │ │ correctly ...... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39823 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39825 │ │ │ │ │ ReverseProxy can forward queries containing parameters not │ +│ │ │ │ │ │ │ visible to ... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39825 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39836 │ │ │ │ │ ELSA-2026-22112: go-toolset:ol8 security update (IMPORTANT) │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39836 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-42499 │ │ │ │ │ Pathological inputs could cause DoS through consumePhrase │ +│ │ │ │ │ │ │ when parsing ... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-42499 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-42504 │ │ │ │ 1.25.11, 1.26.4 │ Decoding a maliciously-crafted MIME header containing many │ +│ │ │ │ │ │ │ invalid enc ... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-42504 │ +└─────────┴────────────────┴──────────┴────────┴───────────────────┴─────────────────┴──────────────────────────────────────────────────────────────┘ diff --git a/submissions/lab6.md b/submissions/lab6.md new file mode 100644 index 000000000..420829bac --- /dev/null +++ b/submissions/lab6.md @@ -0,0 +1,252 @@ +# Lab 6 — Containers: Dockerize QuickNotes + +## Task 1 — Multi-Stage Dockerfile + +### Dockerfile + +```dockerfile +# syntax=docker/dockerfile:1 + +FROM golang:1.24-alpine AS builder +WORKDIR /src +COPY go.mod ./ +RUN go mod download +COPY . . +RUN CGO_ENABLED=0 GOOS=linux go build \ + -trimpath \ + -ldflags='-s -w' \ + -o /quicknotes . + +FROM busybox:1.36-musl AS busybox + +FROM gcr.io/distroless/static-debian12:nonroot +COPY --from=builder /quicknotes /quicknotes +COPY --from=builder /src/seed.json /seed.json +COPY --from=busybox /bin/busybox /busybox +EXPOSE 8080 +ENTRYPOINT ["/quicknotes"] +``` + +### Image size + +``` +$ docker images quicknotes:lab6 +REPOSITORY TAG SIZE +quicknotes lab6 16MB +``` + +Builder base for comparison: + +``` +$ docker images golang:1.24-alpine +golang:1.24-alpine 388MB +``` + +Full output: [`attachments/lab6/docker-images.txt`](attachments/lab6/docker-images.txt) + +### `docker inspect` excerpt + +```json +{ + "User": "65532", + "ExposedPorts": { "8080/tcp": {} }, + "Entrypoint": ["/quicknotes"], + "WorkingDir": "/home/nonroot" +} +``` + +Full output: [`attachments/lab6/docker-inspect-config.json`](attachments/lab6/docker-inspect-config.json) + +### Health endpoint (standalone `docker run`) + +``` +$ curl -s http://localhost:8080/health +{"notes":4,"status":"ok"} +``` + +Evidence: [`attachments/lab6/curl-health.txt`](attachments/lab6/curl-health.txt) + +### Design questions (a–d) + +**a) Why does layer-order matter?** + +Docker caches each layer. If `COPY . .` comes before `go mod download`, any source change invalidates the layer that also contains dependency download, so `go mod download` and `go build` run again. + +Measured rebuild after touching `handlers.go` only: + +| Strategy | `real` time | +|----------|------------| +| Good: `COPY go.mod` → `go mod download` → `COPY . .` → build | **1.70 s** | +| Bad: `COPY . .` → `go mod download` → build | **3.72 s** | + +Evidence: [`attachments/lab6/cache-good-rebuild.txt`](attachments/lab6/cache-good-rebuild.txt), [`attachments/lab6/cache-bad-rebuild.txt`](attachments/lab6/cache-bad-rebuild.txt) + +**b) Why `CGO_ENABLED=0`?** + +With CGO enabled, Go may link against libc and produce a dynamically linked binary. Distroless `static` has no dynamic linker (`/lib/ld-linux.so`), so the binary fails at startup with `no such file or directory` or similar. `CGO_ENABLED=0` forces a fully static binary that runs on distroless-static. + +**c) What is `gcr.io/distroless/static-debian12:nonroot`?** + +It is a minimal runtime image: CA certs, timezone data, `/etc/passwd` entry for UID 65532 (`nonroot`), and nothing else — no shell, package manager, or libc beyond what a static binary needs. Fewer packages mean a smaller attack surface and fewer OS-level CVEs (Trivy reported **0 HIGH/CRITICAL** on the Debian layer). + +**d) `-ldflags='-s -w'` and `-trimpath`** + +- `-s -w`: strip the symbol table and DWARF debug info → smaller binary, faster pulls. +- `-trimpath`: remove local filesystem paths from the binary → reproducible builds and no host paths leaked into artifacts. + +Cost: harder to debug crashes inside the container (no symbols); stack traces are less informative without separate debug symbols. + +--- + +## Task 2 — Compose + Healthcheck + Persistent Volume + +### `compose.yaml` + +```yaml +services: + volume-init: + image: busybox:1.36-musl + volumes: + - quicknotes-data:/data + command: ["sh", "-c", "chown 65532:65532 /data"] + restart: "no" + + quicknotes: + build: + context: ./app + dockerfile: Dockerfile + image: quicknotes:lab6 + depends_on: + volume-init: + condition: service_completed_successfully + ports: + - "8080:8080" + environment: + ADDR: ":8080" + DATA_PATH: "/data/notes.json" + SEED_PATH: "/seed.json" + volumes: + - quicknotes-data:/data + restart: unless-stopped + healthcheck: + test: ["CMD", "/busybox", "wget", "-qO-", "http://127.0.0.1:8080/health"] + interval: 5s + timeout: 3s + retries: 3 + start_period: 10s + read_only: true + cap_drop: + - ALL + security_opt: + - no-new-privileges:true + tmpfs: + - /tmp + +volumes: + quicknotes-data: +``` + +**Note on `volume-init`:** A fresh Docker named volume is owned by `root`. The distroless image runs as UID `65532` and cannot create `/data/notes.json` without fixing ownership first. The one-shot `volume-init` service runs `chown 65532:65532 /data` before `quicknotes` starts. + +### Compose status + +``` +$ docker compose ps +NAME IMAGE STATUS +devops-intro-quicknotes-1 quicknotes:lab6 Up (healthy) +``` + +Evidence: [`attachments/lab6/compose-ps.txt`](attachments/lab6/compose-ps.txt), [`attachments/lab6/compose-up.txt`](attachments/lab6/compose-up.txt) + +### Persistence test (3 steps) + +1. POST note `durable` → present in `GET /notes` +2. `docker compose down` (no `-v`) → `docker compose up -d` → note **still present** +3. `docker compose down -v` → `docker compose up -d` → note **gone** (seed data only) + +Evidence: [`attachments/lab6/persistence-test.txt`](attachments/lab6/persistence-test.txt) + +### Design questions (e–g) + +**e) Distroless has no shell — how do you healthcheck it?** + +Strategy: copy a static `busybox` binary from a separate build stage into the runtime image and use exec-form healthcheck: `["CMD", "/busybox", "wget", "-qO-", "http://127.0.0.1:8080/health"]`. This performs a real HTTP probe without a shell. Alternatives (sidecar, process-alive only) are weaker or heavier; `wget` via minimal busybox is cheap and side-effect free. + +**f) Why does the named volume survive `docker compose down`?** + +`docker compose down` stops and removes containers and networks but **not** named volumes declared in the top-level `volumes:` block. Data in `quicknotes-data` persists on the Docker host. **`docker compose down -v`** (or `docker volume rm`) destroys the volume and all notes stored there. + +**g) `depends_on` without `condition: service_healthy`** + +Plain `depends_on` only waits until the dependency **container has started**, not until it is ready to serve traffic. A dependent service can connect before migrations, volume permissions, or HTTP listeners are ready → flaky startups. Here we use `condition: service_completed_successfully` for `volume-init` so `chown` finishes before `quicknotes` writes to `/data`. + +--- + +## Bonus — Six Security Defaults + +### Hardened `quicknotes` service block + +```yaml + quicknotes: + # ... build, ports, env, volumes ... + healthcheck: + test: ["CMD", "/busybox", "wget", "-qO-", "http://127.0.0.1:8080/health"] + interval: 5s + timeout: 3s + retries: 3 + start_period: 10s + read_only: true + cap_drop: + - ALL + security_opt: + - no-new-privileges:true + tmpfs: + - /tmp +``` + +Defaults 1–2 (nonroot user, distroless base) are enforced in the Dockerfile (`static-debian12:nonroot`, `User: 65532`). + +### Verification + +| Default | Command / check | Result | +|---------|-----------------|--------| +| USER nonroot | `docker inspect quicknotes:lab6 --format '{{ .Config.User }}'` | `65532` | +| No shell | `docker compose exec quicknotes sh` | `executable file not found` | +| CapDrop ALL | `docker inspect … --format '{{ .HostConfig.CapDrop }}'` | `[ALL]` | +| Read-only root | `docker compose exec quicknotes /busybox touch /etc/test` | `Read-only file system` | +| no-new-privileges | `docker inspect … --format '{{ .HostConfig.SecurityOpt }}'` | `[no-new-privileges:true]` | + +Full output: [`attachments/lab6/bonus-security.txt`](attachments/lab6/bonus-security.txt) + +### Trivy scan + +```bash +docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ + aquasec/trivy:0.59.1 image --severity HIGH,CRITICAL --no-progress \ + quicknotes:lab6 +``` + +Summary: + +| Target | HIGH | CRITICAL | +|--------|-----:|---------:| +| `quicknotes:lab6` (debian 12.14 OS layer) | 0 | 0 | +| `quicknotes` (embedded Go binary) | 13 | 0 | + +The OS layer is clean thanks to distroless. The 13 HIGH findings are **stdlib CVEs in the compiled Go binary** (toolchain 1.24.x); fixing them requires rebuilding with a patched Go release, not switching the base image. + +Full output: [`attachments/lab6/trivy.txt`](attachments/lab6/trivy.txt) + +### Security per line of YAML + +**`cap_drop: [ALL]`** gives the most security per line: it removes the entire Linux capability set, so even if the Go process is compromised it cannot perform privileged operations (e.g. `CAP_NET_RAW`, `CAP_SYS_ADMIN`) without a separate kernel bug. Read-only root and `no-new-privileges` are close runners-up; distroless/nonroot are foundational but mostly set once in the Dockerfile rather than compose. + +--- + +## Artifacts + +| File | Description | +|------|-------------| +| `app/Dockerfile` | Multi-stage build | +| `compose.yaml` | Compose stack with volume + hardening | +| `attachments/lab6/*.txt` | Command outputs and test evidence | From b2295cb2f3c7a9a80b12d0a8ab5a8e34019ca577 Mon Sep 17 00:00:00 2001 From: Andrei Markov Date: Tue, 30 Jun 2026 22:35:58 +0300 Subject: [PATCH 03/18] feat(lab8): Prometheus, Grafana golden signals, and error-rate alert --- compose.yaml | 31 + docs/runbook/high-error-rate.md | 26 + .../grafana/dashboards/golden-signals.json | 188 ++ .../provisioning/dashboards/dashboard.yml | 12 + .../provisioning/datasources/datasource.yml | 10 + monitoring/prometheus/alert.rules.yml | 17 + monitoring/prometheus/prometheus.yml | 13 + scripts/lab8-capture-evidence.sh | 13 + scripts/lab8-generate-traffic.sh | 18 + scripts/lab8-trigger-alert.sh | 16 + submissions/attachments/lab8/alert-firing.txt | 9 + .../attachments/lab8/alert-trigger.log | 2 + submissions/attachments/lab8/compose-ps.txt | 4 + submissions/attachments/lab8/compose-up.txt | 2662 +++++++++++++++++ .../lab8/grafana-dashboard-meta.txt | 1 + .../lab8/grafana-dashboard-search.json | 1 + .../lab8/prometheus-alerts-firing.json | 21 + .../attachments/lab8/prometheus-alerts.json | 21 + .../attachments/lab8/prometheus-targets.json | 34 + .../attachments/lab8/targets-health.txt | 1 + submissions/attachments/lab8/traffic-gen.log | 202 ++ submissions/attachments/lab8/verify.txt | 23 + submissions/lab8.md | 239 ++ 23 files changed, 3564 insertions(+) create mode 100644 docs/runbook/high-error-rate.md create mode 100644 monitoring/grafana/dashboards/golden-signals.json create mode 100644 monitoring/grafana/provisioning/dashboards/dashboard.yml create mode 100644 monitoring/grafana/provisioning/datasources/datasource.yml create mode 100644 monitoring/prometheus/alert.rules.yml create mode 100644 monitoring/prometheus/prometheus.yml create mode 100755 scripts/lab8-capture-evidence.sh create mode 100755 scripts/lab8-generate-traffic.sh create mode 100755 scripts/lab8-trigger-alert.sh create mode 100644 submissions/attachments/lab8/alert-firing.txt create mode 100644 submissions/attachments/lab8/alert-trigger.log create mode 100644 submissions/attachments/lab8/compose-ps.txt create mode 100644 submissions/attachments/lab8/compose-up.txt create mode 100644 submissions/attachments/lab8/grafana-dashboard-meta.txt create mode 100644 submissions/attachments/lab8/grafana-dashboard-search.json create mode 100644 submissions/attachments/lab8/prometheus-alerts-firing.json create mode 100644 submissions/attachments/lab8/prometheus-alerts.json create mode 100644 submissions/attachments/lab8/prometheus-targets.json create mode 100644 submissions/attachments/lab8/targets-health.txt create mode 100644 submissions/attachments/lab8/traffic-gen.log create mode 100644 submissions/attachments/lab8/verify.txt create mode 100644 submissions/lab8.md diff --git a/compose.yaml b/compose.yaml index ddaefd8b7..2d226ca15 100644 --- a/compose.yaml +++ b/compose.yaml @@ -37,5 +37,36 @@ services: tmpfs: - /tmp + prometheus: + image: prom/prometheus:v3.2.1 + ports: + - "9090:9090" + volumes: + - ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + - ./monitoring/prometheus/alert.rules.yml:/etc/prometheus/alert.rules.yml:ro + command: + - --config.file=/etc/prometheus/prometheus.yml + - --storage.tsdb.path=/prometheus + - --web.enable-lifecycle + depends_on: + quicknotes: + condition: service_healthy + restart: unless-stopped + + grafana: + image: grafana/grafana:13.0.2 + ports: + - "3000:3000" + environment: + GF_SECURITY_ADMIN_USER: admin + GF_SECURITY_ADMIN_PASSWORD: lab8-grafana-dev + GF_USERS_ALLOW_SIGN_UP: "false" + volumes: + - ./monitoring/grafana/provisioning:/etc/grafana/provisioning:ro + - ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro + depends_on: + - prometheus + restart: unless-stopped + volumes: quicknotes-data: diff --git a/docs/runbook/high-error-rate.md b/docs/runbook/high-error-rate.md new file mode 100644 index 000000000..28d467208 --- /dev/null +++ b/docs/runbook/high-error-rate.md @@ -0,0 +1,26 @@ +# High HTTP Error Rate + +## What this alert means + +More than 5% of QuickNotes HTTP responses are 4xx or 5xx for at least five minutes — users are seeing failures at a rate worth paging on. + +## Triage steps + +1. **Confirm the alert** — open Grafana dashboard *QuickNotes Golden Signals* (or Prometheus `/alerts`) and verify the error panel is elevated, not a scrape glitch. Check `curl -s http://localhost:9090/api/v1/targets` shows `quicknotes` target `up`. +2. **Check QuickNotes health** — `curl -s http://localhost:8080/health | jq` and `docker compose logs quicknotes --tail=50` for panics, permission errors on `/data/notes.json`, or OOM kills. +3. **Identify error type** — in Prometheus/Grafana, break down `quicknotes_http_responses_by_code_total` by `code` label. Dominant `400` suggests bad client payloads; `500` suggests application or storage failure. +4. **Check recent changes** — `docker compose ps`, recent deploys, volume mount issues, or config/env drift (`ADDR`, `DATA_PATH`, `SEED_PATH`). + +## Mitigations + +1. **Restart the service** — `docker compose restart quicknotes` (fastest way to clear a wedged process; data persists on the named volume). +2. **Roll back bad traffic** — if a client or load script is sending malformed requests, stop or fix it; scale down the offending job. +3. **Restore from known-good state** — if data corruption is suspected, stop QuickNotes, restore `/data/notes.json` from backup or re-seed, then `docker compose up -d quicknotes`. + +## Post-incident + +After the error rate returns to normal and the alert clears: + +- Write a blameless postmortem using the [Lecture 1 postmortem template](https://github.com/inno-devops-labs/DevOps-Intro/blob/main/lectures/lec1.md) (timeline, root cause, action items). +- Add or tune alerts/runbooks if the failure mode was not covered. +- Track follow-up tasks (fix validation, add integration test, improve dashboard panel) in your issue tracker. diff --git a/monitoring/grafana/dashboards/golden-signals.json b/monitoring/grafana/dashboards/golden-signals.json new file mode 100644 index 000000000..03339efab --- /dev/null +++ b/monitoring/grafana/dashboards/golden-signals.json @@ -0,0 +1,188 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "expr": "rate(quicknotes_http_requests_total[5m])", + "legendFormat": "req/s (latency proxy — no histogram exposed)", + "refId": "A" + } + ], + "title": "Latency (request-rate proxy)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 2, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "expr": "sum(rate(quicknotes_http_requests_total[5m]))", + "legendFormat": "total req/s", + "refId": "A" + } + ], + "title": "Traffic", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "max": 100, + "min": 0, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 3, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "expr": "100 * sum(rate(quicknotes_http_responses_by_code_total{code=~\"4..|5..\"}[5m])) / clamp_min(sum(rate(quicknotes_http_requests_total[5m])), 0.001)", + "legendFormat": "error %", + "refId": "A" + } + ], + "title": "Errors", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 4, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "expr": "quicknotes_notes_total", + "legendFormat": "notes stored", + "refId": "A" + } + ], + "title": "Saturation (notes stored)", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [ + "quicknotes", + "golden-signals" + ], + "time": { + "from": "now-15m", + "to": "now" + }, + "timezone": "browser", + "title": "QuickNotes Golden Signals", + "uid": "quicknotes-golden-signals", + "version": 1 +} diff --git a/monitoring/grafana/provisioning/dashboards/dashboard.yml b/monitoring/grafana/provisioning/dashboards/dashboard.yml new file mode 100644 index 000000000..9df61ce46 --- /dev/null +++ b/monitoring/grafana/provisioning/dashboards/dashboard.yml @@ -0,0 +1,12 @@ +apiVersion: 1 + +providers: + - name: golden-signals + orgId: 1 + folder: QuickNotes + type: file + disableDeletion: false + updateIntervalSeconds: 30 + allowUiUpdates: true + options: + path: /var/lib/grafana/dashboards diff --git a/monitoring/grafana/provisioning/datasources/datasource.yml b/monitoring/grafana/provisioning/datasources/datasource.yml new file mode 100644 index 000000000..8704d9e54 --- /dev/null +++ b/monitoring/grafana/provisioning/datasources/datasource.yml @@ -0,0 +1,10 @@ +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + uid: prometheus + access: proxy + url: http://prometheus:9090 + isDefault: true + editable: false diff --git a/monitoring/prometheus/alert.rules.yml b/monitoring/prometheus/alert.rules.yml new file mode 100644 index 000000000..98610db38 --- /dev/null +++ b/monitoring/prometheus/alert.rules.yml @@ -0,0 +1,17 @@ +groups: + - name: quicknotes + rules: + - alert: HighHTTPErrorRate + expr: | + ( + sum(rate(quicknotes_http_responses_by_code_total{code=~"4..|5.."}[5m])) + / + clamp_min(sum(rate(quicknotes_http_requests_total[5m])), 0.001) + ) > 0.05 + for: 5m + labels: + severity: page + annotations: + summary: QuickNotes HTTP error ratio exceeds 5% + runbook_url: docs/runbook/high-error-rate.md + description: More than 5% of HTTP responses are 4xx/5xx for 5 minutes. diff --git a/monitoring/prometheus/prometheus.yml b/monitoring/prometheus/prometheus.yml new file mode 100644 index 000000000..96bc747d4 --- /dev/null +++ b/monitoring/prometheus/prometheus.yml @@ -0,0 +1,13 @@ +global: + scrape_interval: 15s + evaluation_interval: 15s + +rule_files: + - /etc/prometheus/alert.rules.yml + +scrape_configs: + - job_name: quicknotes + static_configs: + - targets: + - quicknotes:8080 + metrics_path: /metrics diff --git a/scripts/lab8-capture-evidence.sh b/scripts/lab8-capture-evidence.sh new file mode 100755 index 000000000..f8e32bac7 --- /dev/null +++ b/scripts/lab8-capture-evidence.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Capture Lab 8 evidence after `docker compose up -d`. +set -euo pipefail +cd "$(dirname "$0")/.." +ATT=submissions/attachments/lab8 +mkdir -p "$ATT" + +docker compose ps | tee "$ATT/compose-ps.txt" +curl -s http://localhost:9090/api/v1/targets | python3 -m json.tool | tee "$ATT/prometheus-targets.json" +curl -s http://localhost:9090/api/v1/targets | python3 -c "import sys,json; d=json.load(sys.stdin); print([t['health'] for t in d['data']['activeTargets']])" | tee "$ATT/targets-health.txt" +curl -s -u admin:lab8-grafana-dev http://localhost:3000/api/search?query=Golden | tee "$ATT/grafana-dashboard-search.json" +curl -s http://localhost:9090/api/v1/alerts | python3 -m json.tool | tee "$ATT/prometheus-alerts.json" +echo "Evidence captured in $ATT" diff --git a/scripts/lab8-generate-traffic.sh b/scripts/lab8-generate-traffic.sh new file mode 100755 index 000000000..b7c6b37d7 --- /dev/null +++ b/scripts/lab8-generate-traffic.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# Generate ~200 mixed requests for Lab 8 Task 1 dashboard traffic. +set -euo pipefail +BASE="${1:-http://localhost:8080}" +OUT="${2:-submissions/attachments/lab8/traffic-gen.log}" + +echo "Generating traffic against $BASE" | tee "$OUT" +for i in $(seq 1 200); do + case $((i % 5)) in + 0) curl -s "$BASE/health" >>"$OUT" ;; + 1) curl -s "$BASE/notes" >>"$OUT" ;; + 2) curl -s -X POST "$BASE/notes" -H 'Content-Type: application/json' \ + -d '{"title":"load","body":"traffic"}' >>"$OUT" ;; + 3) curl -s "$BASE/notes/1" >>"$OUT" ;; + 4) curl -s -X POST "$BASE/notes" -H 'Content-Type: application/json' -d '{"bad":true}' >>"$OUT" ;; + esac +done +echo "done 200 requests" | tee -a "$OUT" diff --git a/scripts/lab8-trigger-alert.sh b/scripts/lab8-trigger-alert.sh new file mode 100755 index 000000000..6a3a05578 --- /dev/null +++ b/scripts/lab8-trigger-alert.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# Sustained error injection for Lab 8 Task 2 (run ≥6 minutes for 5m alert). +set -euo pipefail +BASE="${1:-http://localhost:8080}" +DURATION="${2:-360}" +OUT="${3:-submissions/attachments/lab8/alert-trigger.log}" + +echo "Error injection started $(date -u +%Y-%m-%dT%H:%M:%SZ)" | tee "$OUT" +end=$((SECONDS + DURATION)) +while [ "$SECONDS" -lt "$end" ]; do + curl -s "$BASE/health" >/dev/null + curl -s "$BASE/notes" >/dev/null + curl -s -X POST "$BASE/notes" -H 'Content-Type: application/json' -d '{"bad":true}' >/dev/null + sleep 0.5 +done +echo "Error injection finished $(date -u +%Y-%m-%dT%H:%M:%SZ)" | tee -a "$OUT" diff --git a/submissions/attachments/lab8/alert-firing.txt b/submissions/attachments/lab8/alert-firing.txt new file mode 100644 index 000000000..c3c07c572 --- /dev/null +++ b/submissions/attachments/lab8/alert-firing.txt @@ -0,0 +1,9 @@ +HighHTTPErrorRate state=firing value=0.317 (31.7% error ratio) +activeAt=2026-06-30T19:15:59.892443532Z +severity=page +runbook_url=docs/runbook/high-error-rate.md + +Timeline: +- 19:15:59Z alert entered pending (after initial traffic) +- 19:16:11Z sustained error injection started +- 19:22:11Z injection finished; alert state=firing diff --git a/submissions/attachments/lab8/alert-trigger.log b/submissions/attachments/lab8/alert-trigger.log new file mode 100644 index 000000000..96a4c53b2 --- /dev/null +++ b/submissions/attachments/lab8/alert-trigger.log @@ -0,0 +1,2 @@ +Error injection started 2026-06-30T19:16:11Z +Error injection finished 2026-06-30T19:22:11Z diff --git a/submissions/attachments/lab8/compose-ps.txt b/submissions/attachments/lab8/compose-ps.txt new file mode 100644 index 000000000..ef9e5234a --- /dev/null +++ b/submissions/attachments/lab8/compose-ps.txt @@ -0,0 +1,4 @@ +NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +devops-intro-grafana-1 grafana/grafana:13.0.2 "/run.sh" grafana 42 seconds ago Up 35 seconds 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp +devops-intro-prometheus-1 prom/prometheus:v3.2.1 "/bin/prometheus --c…" prometheus 42 seconds ago Up 35 seconds 0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp +devops-intro-quicknotes-1 quicknotes:lab6 "/quicknotes" quicknotes 42 seconds ago Up 40 seconds (healthy) 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp diff --git a/submissions/attachments/lab8/compose-up.txt b/submissions/attachments/lab8/compose-up.txt new file mode 100644 index 000000000..b91805ad0 --- /dev/null +++ b/submissions/attachments/lab8/compose-up.txt @@ -0,0 +1,2662 @@ + Image prom/prometheus:v3.2.1 Pulling + Image grafana/grafana:13.0.2 Pulling + 073d75ee84d4 Pulling fs layer 0B + 34c169812ca7 Pulling fs layer 0B + 81d14c078a74 Pulling fs layer 0B + c8c5fe18afab Pulling fs layer 0B + fe6306487029 Pulling fs layer 0B + 0ad2438e159e Pulling fs layer 0B + c390b3ff97f5 Pulling fs layer 0B + f5d2fa6280ad Pulling fs layer 0B + 1c78c8e19058 Pulling fs layer 0B + 4f4fb700ef54 Pulling fs layer 0B + b8ba42f3610c Pulling fs layer 0B + ca59134b0aa1 Pulling fs layer 0B + 1cc0ff6cea1d Pulling fs layer 0B + bc8b677c2b98 Pulling fs layer 0B + d7cb4538653c Pulling fs layer 0B + 6721902c3fd6 Pulling fs layer 0B + 0f1eecfe1b47 Pulling fs layer 0B + 4f4fb700ef54 Pulling fs layer 0B + 4f4fb700ef54 Already exists 0B + 81d14c078a74 Download complete 0B + 1c78c8e19058 Download complete 0B + b8ba42f3610c Download complete 0B + b8ba42f3610c Pull complete 0B + f5d2fa6280ad Download complete 0B + 073d75ee84d4 Download complete 0B + 6721902c3fd6 Download complete 0B + c8c5fe18afab Download complete 0B + 34c169812ca7 Download complete 0B + d7cb4538653c Download complete 0B + 1cc0ff6cea1d Downloading 1.049MB + bc8b677c2b98 Download complete 0B + 1cc0ff6cea1d Downloading 2.097MB + c390b3ff97f5 Download complete 0B + 1cc0ff6cea1d Downloading 2.097MB + 1cc0ff6cea1d Downloading 2.097MB + 0f1eecfe1b47 Downloading 1.049MB + 0f1eecfe1b47 Downloading 1.049MB + 1cc0ff6cea1d Downloading 3.146MB + 1cc0ff6cea1d Downloading 3.146MB + 0f1eecfe1b47 Downloading 1.049MB + 1cc0ff6cea1d Downloading 3.146MB + 0f1eecfe1b47 Downloading 2.097MB + 1cc0ff6cea1d Downloading 3.146MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + 1cc0ff6cea1d Downloading 3.146MB + 0f1eecfe1b47 Downloading 2.097MB + fe6306487029 Downloading 1.049MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + 1cc0ff6cea1d Downloading 3.146MB + fe6306487029 Downloading 1.049MB + ca59134b0aa1 Downloading 1.049MB + 1cc0ff6cea1d Downloading 3.146MB + 0f1eecfe1b47 Downloading 2.097MB + fe6306487029 Downloading 1.049MB + fe6306487029 Downloading 1.049MB + ca59134b0aa1 Downloading 1.049MB + 1cc0ff6cea1d Downloading 3.146MB + 0f1eecfe1b47 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + fe6306487029 Downloading 2.097MB + 1cc0ff6cea1d Downloading 3.146MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + 1cc0ff6cea1d Downloading 3.146MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + fe6306487029 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + 0ad2438e159e Downloading 1.049MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 2.097MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + 1cc0ff6cea1d Downloading 4.194MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 2.097MB + ca59134b0aa1 Downloading 1.049MB + ca59134b0aa1 Downloading 1.049MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 2.097MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 3.146MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + fe6306487029 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 4.194MB + 0ad2438e159e Downloading 1.049MB + fe6306487029 Downloading 3.146MB + 0f1eecfe1b47 Downloading 3.146MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 1.049MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + 0ad2438e159e Downloading 1.049MB + fe6306487029 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 3.146MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 1.049MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 3.146MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 1.049MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 4.194MB + 0f1eecfe1b47 Downloading 3.146MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 1.049MB + 0f1eecfe1b47 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 3.146MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 3.146MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + fe6306487029 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + 0ad2438e159e Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 3.146MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 3.146MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + 0ad2438e159e Downloading 2.097MB + fe6306487029 Downloading 3.146MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 2.097MB + ca59134b0aa1 Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 3.146MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 3.146MB + fe6306487029 Downloading 3.146MB + 0ad2438e159e Downloading 2.097MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 2.097MB + ca59134b0aa1 Downloading 3.146MB + 1cc0ff6cea1d Downloading 5.243MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 3.146MB + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 4.194MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 2.097MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 3.146MB + 1cc0ff6cea1d Downloading 6.291MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 2.097MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 2.097MB + ca59134b0aa1 Downloading 3.146MB + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 4.194MB + ca59134b0aa1 Downloading 3.146MB + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 4.194MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 3.146MB + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 5.243MB + ca59134b0aa1 Downloading 3.146MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 3.146MB + ca59134b0aa1 Downloading 3.146MB + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 5.243MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 3.146MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 3.146MB + 0f1eecfe1b47 Downloading 5.243MB + ca59134b0aa1 Downloading 3.846MB + 1cc0ff6cea1d Downloading 6.291MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 3.146MB + ca59134b0aa1 Download complete 0B + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 5.243MB + ca59134b0aa1 Extracting 1B + 0ad2438e159e Downloading 3.146MB + fe6306487029 Downloading 4.194MB + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 5.243MB + 4f4fb700ef54 Pull complete 0B + d7cb4538653c Pull complete 0B + bc8b677c2b98 Pull complete 0B + ca59134b0aa1 Pull complete 0B + 1cc0ff6cea1d Downloading 6.291MB + 0f1eecfe1b47 Downloading 5.243MB + fe6306487029 Downloading 4.194MB + 0ad2438e159e Downloading 3.146MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 5.243MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 3.146MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 3.146MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 5.243MB + 0f1eecfe1b47 Downloading 5.243MB + 1cc0ff6cea1d Downloading 7.34MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 3.146MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + 0ad2438e159e Downloading 4.194MB + fe6306487029 Downloading 5.243MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + 0f1eecfe1b47 Downloading 6.291MB + 1cc0ff6cea1d Downloading 7.34MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + 0ad2438e159e Downloading 4.194MB + fe6306487029 Downloading 5.243MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + fe6306487029 Downloading 5.243MB + 0ad2438e159e Downloading 4.194MB + 1cc0ff6cea1d Downloading 7.34MB + 0f1eecfe1b47 Downloading 6.291MB + 0ad2438e159e Downloading 4.194MB + fe6306487029 Downloading 5.243MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 4.194MB + 0f1eecfe1b47 Downloading 6.291MB + 1cc0ff6cea1d Downloading 7.34MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 6.291MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + 0f1eecfe1b47 Downloading 7.34MB + 1cc0ff6cea1d Downloading 8.389MB + 0ad2438e159e Downloading 5.243MB + fe6306487029 Downloading 6.291MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + fe6306487029 Downloading 6.291MB + 0ad2438e159e Downloading 5.243MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 7.34MB + fe6306487029 Downloading 7.34MB + 0ad2438e159e Downloading 6.291MB + 1cc0ff6cea1d Downloading 8.389MB + 0f1eecfe1b47 Downloading 8.389MB + fe6306487029 Downloading 7.34MB + 0ad2438e159e Downloading 6.291MB + fe6306487029 Downloading 7.34MB + 0ad2438e159e Downloading 6.291MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 8.389MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 8.389MB + 0ad2438e159e Downloading 6.291MB + fe6306487029 Downloading 7.34MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 8.389MB + fe6306487029 Downloading 7.34MB + 0ad2438e159e Downloading 6.291MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 8.389MB + fe6306487029 Downloading 7.34MB + 0ad2438e159e Downloading 6.291MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 8.389MB + fe6306487029 Downloading 7.34MB + 0ad2438e159e Downloading 6.291MB + 0ad2438e159e Downloading 6.291MB + fe6306487029 Downloading 7.34MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 8.389MB + 0f1eecfe1b47 Downloading 8.389MB + 1cc0ff6cea1d Downloading 9.437MB + fe6306487029 Downloading 7.34MB + 0ad2438e159e Downloading 6.291MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 9.437MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + 1cc0ff6cea1d Downloading 9.437MB + 0f1eecfe1b47 Downloading 9.437MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 9.437MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + 0f1eecfe1b47 Downloading 9.437MB + 1cc0ff6cea1d Downloading 10.49MB + 1cc0ff6cea1d Downloading 10.49MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + 0f1eecfe1b47 Downloading 9.437MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 9.437MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 9.437MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 9.437MB + fe6306487029 Downloading 8.389MB + 0ad2438e159e Downloading 7.34MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 9.437MB + 0f1eecfe1b47 Downloading 10.49MB + 1cc0ff6cea1d Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 10.49MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + 0ad2438e159e Downloading 8.389MB + fe6306487029 Downloading 9.437MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 8.389MB + fe6306487029 Downloading 9.437MB + 0ad2438e159e Downloading 9.437MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 10.49MB + 1cc0ff6cea1d Downloading 11.53MB + fe6306487029 Downloading 10.49MB + 0ad2438e159e Downloading 9.437MB + 0f1eecfe1b47 Downloading 10.49MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 11.53MB + fe6306487029 Downloading 10.49MB + 0ad2438e159e Downloading 9.437MB + 1cc0ff6cea1d Downloading 11.53MB + 0f1eecfe1b47 Downloading 11.53MB + 0ad2438e159e Downloading 9.437MB + fe6306487029 Downloading 10.49MB + 0f1eecfe1b47 Downloading 11.53MB + 1cc0ff6cea1d Downloading 11.53MB + 0ad2438e159e Downloading 9.437MB + fe6306487029 Downloading 10.49MB + fe6306487029 Downloading 10.49MB + 0ad2438e159e Downloading 9.437MB + 1cc0ff6cea1d Downloading 12.58MB + 0f1eecfe1b47 Downloading 11.53MB + 0ad2438e159e Downloading 9.437MB + fe6306487029 Downloading 10.49MB + 1cc0ff6cea1d Downloading 12.58MB + 0f1eecfe1b47 Downloading 11.53MB + 1cc0ff6cea1d Downloading 12.58MB + 0f1eecfe1b47 Downloading 11.53MB + fe6306487029 Downloading 10.49MB + 0ad2438e159e Downloading 9.437MB + 1cc0ff6cea1d Downloading 12.58MB + fe6306487029 Downloading 10.49MB + 0ad2438e159e Downloading 9.437MB + 0f1eecfe1b47 Download complete 0B + 1cc0ff6cea1d Downloading 12.58MB + fe6306487029 Downloading 10.49MB + 0ad2438e159e Downloading 9.437MB + 1cc0ff6cea1d Downloading 12.58MB + fe6306487029 Downloading 10.49MB + 0ad2438e159e Downloading 9.437MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 12.58MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 12.58MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 12.58MB + 1cc0ff6cea1d Downloading 13.63MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 13.63MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 13.63MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 13.63MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 13.63MB + 0ad2438e159e Downloading 10.49MB + fe6306487029 Downloading 11.53MB + fe6306487029 Downloading 11.53MB + 0ad2438e159e Downloading 10.49MB + 1cc0ff6cea1d Downloading 13.63MB + fe6306487029 Downloading 12.58MB + 0ad2438e159e Downloading 11.53MB + 1cc0ff6cea1d Downloading 13.63MB + 1cc0ff6cea1d Downloading 13.63MB + fe6306487029 Downloading 12.58MB + 0ad2438e159e Downloading 11.53MB + 1cc0ff6cea1d Downloading 13.63MB + fe6306487029 Downloading 12.58MB + 0ad2438e159e Downloading 11.53MB + fe6306487029 Downloading 12.58MB + 0ad2438e159e Downloading 11.53MB + 1cc0ff6cea1d Downloading 13.63MB + 1cc0ff6cea1d Downloading 14.68MB + fe6306487029 Downloading 12.58MB + 0ad2438e159e Downloading 11.53MB + fe6306487029 Downloading 12.58MB + 0ad2438e159e Downloading 11.53MB + 1cc0ff6cea1d Downloading 14.68MB + 0ad2438e159e Downloading 11.53MB + fe6306487029 Downloading 12.58MB + 1cc0ff6cea1d Downloading 14.68MB + 1cc0ff6cea1d Downloading 14.68MB + fe6306487029 Downloading 12.58MB + 0ad2438e159e Downloading 11.53MB + 1cc0ff6cea1d Downloading 14.68MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 11.53MB + 1cc0ff6cea1d Downloading 14.68MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + 1cc0ff6cea1d Downloading 14.68MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + 1cc0ff6cea1d Downloading 14.68MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + 1cc0ff6cea1d Downloading 14.68MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + 1cc0ff6cea1d Downloading 15.73MB + 1cc0ff6cea1d Downloading 15.73MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + 1cc0ff6cea1d Downloading 15.73MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + 1cc0ff6cea1d Downloading 15.73MB + fe6306487029 Downloading 13.63MB + 0ad2438e159e Downloading 12.58MB + fe6306487029 Downloading 14.68MB + 0ad2438e159e Downloading 13.63MB + 1cc0ff6cea1d Downloading 15.73MB + fe6306487029 Downloading 14.68MB + 0ad2438e159e Downloading 13.63MB + 1cc0ff6cea1d Downloading 15.73MB + 1cc0ff6cea1d Downloading 15.73MB + fe6306487029 Downloading 14.68MB + 0ad2438e159e Downloading 13.63MB + 1cc0ff6cea1d Downloading 16.78MB + fe6306487029 Downloading 14.68MB + 0ad2438e159e Downloading 13.63MB + 1cc0ff6cea1d Downloading 16.78MB + fe6306487029 Downloading 14.68MB + 0ad2438e159e Downloading 13.63MB + 1cc0ff6cea1d Downloading 16.78MB + fe6306487029 Downloading 14.68MB + 0ad2438e159e Downloading 13.63MB + 1cc0ff6cea1d Downloading 16.78MB + fe6306487029 Downloading 15.73MB + 0ad2438e159e Downloading 14.68MB + 1cc0ff6cea1d Downloading 16.78MB + fe6306487029 Downloading 15.73MB + 0ad2438e159e Downloading 14.68MB + 1cc0ff6cea1d Downloading 16.78MB + fe6306487029 Downloading 15.73MB + 0ad2438e159e Downloading 14.68MB + fe6306487029 Downloading 15.73MB + 0ad2438e159e Downloading 14.68MB + 1cc0ff6cea1d Downloading 17.83MB + 1cc0ff6cea1d Downloading 17.83MB + fe6306487029 Downloading 15.73MB + 0ad2438e159e Downloading 14.68MB + 1cc0ff6cea1d Downloading 17.83MB + fe6306487029 Downloading 15.73MB + 0ad2438e159e Downloading 14.68MB + 1cc0ff6cea1d Downloading 17.83MB + fe6306487029 Downloading 16.78MB + 0ad2438e159e Downloading 15.73MB + 1cc0ff6cea1d Downloading 17.83MB + fe6306487029 Downloading 16.78MB + 0ad2438e159e Downloading 15.73MB + 1cc0ff6cea1d Downloading 18.87MB + fe6306487029 Downloading 16.78MB + 0ad2438e159e Downloading 15.73MB + 1cc0ff6cea1d Downloading 18.87MB + 0ad2438e159e Downloading 15.73MB + fe6306487029 Downloading 16.78MB + 1cc0ff6cea1d Downloading 18.87MB + fe6306487029 Downloading 16.78MB + 0ad2438e159e Downloading 15.73MB + 1cc0ff6cea1d Downloading 18.87MB + fe6306487029 Downloading 17.83MB + 0ad2438e159e Downloading 16.78MB + 1cc0ff6cea1d Downloading 18.87MB + fe6306487029 Downloading 17.83MB + 0ad2438e159e Downloading 16.78MB + fe6306487029 Downloading 17.83MB + 0ad2438e159e Downloading 16.78MB + 1cc0ff6cea1d Downloading 18.87MB + 1cc0ff6cea1d Downloading 19.92MB + fe6306487029 Downloading 17.83MB + 0ad2438e159e Downloading 16.78MB + fe6306487029 Downloading 17.83MB + 0ad2438e159e Downloading 16.78MB + 1cc0ff6cea1d Downloading 19.92MB + 1cc0ff6cea1d Downloading 19.92MB + fe6306487029 Downloading 17.83MB + 0ad2438e159e Downloading 16.78MB + 1cc0ff6cea1d Downloading 19.92MB + fe6306487029 Downloading 17.83MB + 0ad2438e159e Downloading 16.78MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 19.92MB + 1cc0ff6cea1d Downloading 19.92MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 19.92MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 19.92MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 19.92MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 20.97MB + 0ad2438e159e Downloading 17.83MB + fe6306487029 Downloading 18.87MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 20.97MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 18.87MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 17.83MB + 1cc0ff6cea1d Downloading 20.97MB + 0ad2438e159e Downloading 17.83MB + fe6306487029 Downloading 19.92MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 20.97MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 20.97MB + 1cc0ff6cea1d Downloading 20.97MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 22.02MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 19.92MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 18.87MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 18.87MB + 1cc0ff6cea1d Downloading 22.02MB + 0ad2438e159e Downloading 19.92MB + fe6306487029 Downloading 20.97MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 22.02MB + 1cc0ff6cea1d Downloading 22.02MB + 0ad2438e159e Downloading 19.92MB + fe6306487029 Downloading 20.97MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 19.92MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 22.02MB + 1cc0ff6cea1d Downloading 22.02MB + fe6306487029 Downloading 20.97MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 19.92MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 19.92MB + 1cc0ff6cea1d Downloading 23.07MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 20.97MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 20.97MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 20.97MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 20.97MB + 1cc0ff6cea1d Downloading 23.07MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 20.97MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 20.97MB + 1cc0ff6cea1d Downloading 23.07MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 22.02MB + 0ad2438e159e Downloading 20.97MB + fe6306487029 Downloading 23.07MB + 0ad2438e159e Downloading 20.97MB + 1cc0ff6cea1d Downloading 23.07MB + fe6306487029 Downloading 23.07MB + 0ad2438e159e Downloading 20.97MB + 1cc0ff6cea1d Downloading 23.07MB + 1cc0ff6cea1d Downloading 23.07MB + 0ad2438e159e Downloading 22.02MB + fe6306487029 Downloading 23.07MB + fe6306487029 Downloading 23.07MB + 0ad2438e159e Downloading 22.02MB + 1cc0ff6cea1d Downloading 24.12MB + fe6306487029 Downloading 23.07MB + 0ad2438e159e Downloading 22.02MB + 1cc0ff6cea1d Downloading 24.12MB + 1cc0ff6cea1d Downloading 24.12MB + fe6306487029 Downloading 23.07MB + 0ad2438e159e Downloading 22.02MB + 1cc0ff6cea1d Downloading 24.12MB + fe6306487029 Downloading 23.07MB + 0ad2438e159e Downloading 22.02MB + 1cc0ff6cea1d Downloading 24.12MB + fe6306487029 Downloading 24.12MB + 0ad2438e159e Downloading 22.02MB + 1cc0ff6cea1d Downloading 24.12MB + fe6306487029 Downloading 24.12MB + 0ad2438e159e Downloading 22.02MB + 1cc0ff6cea1d Downloading 24.12MB + fe6306487029 Downloading 24.12MB + 0ad2438e159e Downloading 23.07MB + fe6306487029 Downloading 24.12MB + 0ad2438e159e Downloading 23.07MB + 1cc0ff6cea1d Downloading 24.12MB + fe6306487029 Downloading 24.12MB + 0ad2438e159e Downloading 23.07MB + 1cc0ff6cea1d Downloading 24.12MB + 1cc0ff6cea1d Downloading 25.17MB + fe6306487029 Downloading 24.12MB + 0ad2438e159e Downloading 23.07MB + fe6306487029 Downloading 25.17MB + 0ad2438e159e Downloading 23.07MB + 1cc0ff6cea1d Downloading 25.17MB + 1cc0ff6cea1d Downloading 25.17MB + 0ad2438e159e Downloading 23.07MB + fe6306487029 Downloading 25.17MB + fe6306487029 Downloading 25.17MB + 0ad2438e159e Downloading 24.12MB + 1cc0ff6cea1d Downloading 25.17MB + fe6306487029 Downloading 25.17MB + 0ad2438e159e Downloading 24.12MB + 1cc0ff6cea1d Downloading 25.17MB + 1cc0ff6cea1d Downloading 25.17MB + fe6306487029 Downloading 25.17MB + 0ad2438e159e Downloading 24.12MB + fe6306487029 Downloading 25.17MB + 0ad2438e159e Downloading 24.12MB + 1cc0ff6cea1d Downloading 25.17MB + 1cc0ff6cea1d Downloading 25.17MB + fe6306487029 Downloading 25.17MB + 0ad2438e159e Downloading 24.12MB + 1cc0ff6cea1d Downloading 25.17MB + fe6306487029 Downloading 25.17MB + 0ad2438e159e Downloading 24.12MB + 1cc0ff6cea1d Downloading 26.21MB + fe6306487029 Downloading 26.21MB + 0ad2438e159e Downloading 24.12MB + 1cc0ff6cea1d Downloading 26.21MB + fe6306487029 Downloading 26.21MB + 0ad2438e159e Downloading 25.17MB + fe6306487029 Downloading 26.21MB + 0ad2438e159e Downloading 25.17MB + 1cc0ff6cea1d Downloading 26.21MB + 1cc0ff6cea1d Downloading 26.21MB + 0ad2438e159e Downloading 25.17MB + fe6306487029 Downloading 26.21MB + 1cc0ff6cea1d Downloading 26.21MB + fe6306487029 Downloading 26.21MB + 0ad2438e159e Downloading 25.17MB + fe6306487029 Downloading 26.21MB + 0ad2438e159e Downloading 25.17MB + 1cc0ff6cea1d Downloading 26.21MB + 1cc0ff6cea1d Downloading 26.21MB + fe6306487029 Downloading 27.26MB + 0ad2438e159e Downloading 25.17MB + fe6306487029 Downloading 27.26MB + 0ad2438e159e Downloading 26.21MB + 1cc0ff6cea1d Downloading 26.21MB + fe6306487029 Downloading 27.26MB + 0ad2438e159e Downloading 26.21MB + 1cc0ff6cea1d Downloading 27.26MB + 1cc0ff6cea1d Downloading 27.26MB + fe6306487029 Downloading 27.26MB + 0ad2438e159e Downloading 26.21MB + fe6306487029 Downloading 27.26MB + 0ad2438e159e Downloading 26.21MB + 1cc0ff6cea1d Downloading 27.26MB + 1cc0ff6cea1d Downloading 27.26MB + fe6306487029 Downloading 27.26MB + 0ad2438e159e Downloading 26.21MB + 1cc0ff6cea1d Downloading 27.26MB + fe6306487029 Downloading 28.31MB + 0ad2438e159e Downloading 26.21MB + 1cc0ff6cea1d Downloading 27.26MB + fe6306487029 Downloading 28.31MB + 0ad2438e159e Downloading 27.26MB + 1cc0ff6cea1d Downloading 27.26MB + fe6306487029 Downloading 28.31MB + 0ad2438e159e Downloading 27.26MB + 1cc0ff6cea1d Downloading 28.31MB + fe6306487029 Downloading 28.31MB + 0ad2438e159e Downloading 27.26MB + fe6306487029 Downloading 28.31MB + 0ad2438e159e Downloading 27.26MB + 1cc0ff6cea1d Downloading 28.31MB + 0ad2438e159e Downloading 27.26MB + fe6306487029 Downloading 28.31MB + 1cc0ff6cea1d Downloading 28.31MB + 1cc0ff6cea1d Downloading 28.31MB + fe6306487029 Downloading 29.36MB + 0ad2438e159e Downloading 27.26MB + 1cc0ff6cea1d Downloading 28.31MB + fe6306487029 Downloading 29.36MB + 0ad2438e159e Downloading 27.26MB + fe6306487029 Downloading 29.36MB + 0ad2438e159e Downloading 28.31MB + 1cc0ff6cea1d Downloading 28.31MB + 1cc0ff6cea1d Downloading 29.36MB + fe6306487029 Downloading 29.36MB + 0ad2438e159e Downloading 28.31MB + 1cc0ff6cea1d Downloading 29.36MB + fe6306487029 Downloading 29.36MB + 0ad2438e159e Downloading 28.31MB + 1cc0ff6cea1d Downloading 29.36MB + fe6306487029 Downloading 30.41MB + 0ad2438e159e Downloading 28.31MB + 1cc0ff6cea1d Downloading 29.36MB + fe6306487029 Downloading 30.41MB + 0ad2438e159e Downloading 28.31MB + 1cc0ff6cea1d Downloading 29.36MB + fe6306487029 Downloading 30.41MB + 0ad2438e159e Downloading 28.31MB + 1cc0ff6cea1d Downloading 29.36MB + fe6306487029 Downloading 30.41MB + 0ad2438e159e Downloading 28.31MB + 1cc0ff6cea1d Downloading 29.36MB + fe6306487029 Downloading 30.41MB + 0ad2438e159e Downloading 29.36MB + 1cc0ff6cea1d Downloading 30.41MB + 0ad2438e159e Downloading 29.36MB + fe6306487029 Downloading 30.41MB + 1cc0ff6cea1d Downloading 30.41MB + fe6306487029 Downloading 31.46MB + 0ad2438e159e Downloading 29.36MB + fe6306487029 Downloading 31.46MB + 0ad2438e159e Downloading 29.36MB + 1cc0ff6cea1d Downloading 30.41MB + 1cc0ff6cea1d Downloading 30.41MB + fe6306487029 Downloading 31.46MB + 0ad2438e159e Downloading 29.36MB + fe6306487029 Downloading 31.46MB + 0ad2438e159e Downloading 29.36MB + 1cc0ff6cea1d Downloading 30.41MB + 1cc0ff6cea1d Downloading 30.41MB + fe6306487029 Downloading 31.46MB + 0ad2438e159e Downloading 29.36MB + 1cc0ff6cea1d Downloading 30.41MB + fe6306487029 Downloading 31.46MB + 0ad2438e159e Downloading 29.36MB + 1cc0ff6cea1d Downloading 31.46MB + fe6306487029 Downloading 31.46MB + 0ad2438e159e Downloading 30.41MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 30.41MB + 1cc0ff6cea1d Downloading 31.46MB + 0ad2438e159e Downloading 30.41MB + fe6306487029 Downloading 32.51MB + 1cc0ff6cea1d Downloading 31.46MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 30.41MB + 1cc0ff6cea1d Downloading 31.46MB + 1cc0ff6cea1d Downloading 31.46MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 30.41MB + 1cc0ff6cea1d Downloading 31.46MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 30.41MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 30.41MB + 1cc0ff6cea1d Downloading 31.46MB + 1cc0ff6cea1d Downloading 32.51MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 30.41MB + 1cc0ff6cea1d Downloading 32.51MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 31.46MB + 1cc0ff6cea1d Downloading 32.51MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 31.46MB + 1cc0ff6cea1d Downloading 32.51MB + fe6306487029 Downloading 32.51MB + 0ad2438e159e Downloading 31.46MB + 1cc0ff6cea1d Downloading 32.51MB + fe6306487029 Downloading 33.55MB + 0ad2438e159e Downloading 31.46MB + 1cc0ff6cea1d Downloading 32.51MB + fe6306487029 Downloading 33.55MB + 0ad2438e159e Downloading 31.46MB + 1cc0ff6cea1d Downloading 32.51MB + 0ad2438e159e Downloading 31.46MB + fe6306487029 Downloading 33.55MB + 1cc0ff6cea1d Downloading 32.51MB + fe6306487029 Downloading 33.55MB + 0ad2438e159e Downloading 31.46MB + fe6306487029 Downloading 33.55MB + 0ad2438e159e Downloading 32.51MB + 1cc0ff6cea1d Downloading 32.51MB + 1cc0ff6cea1d Downloading 33.55MB + 0ad2438e159e Downloading 32.51MB + fe6306487029 Downloading 33.55MB + 1cc0ff6cea1d Downloading 33.55MB + fe6306487029 Downloading 33.55MB + 0ad2438e159e Downloading 32.51MB + fe6306487029 Downloading 33.55MB + 0ad2438e159e Downloading 32.51MB + 1cc0ff6cea1d Downloading 33.55MB + 1cc0ff6cea1d Downloading 33.55MB + fe6306487029 Downloading 33.55MB + 0ad2438e159e Downloading 32.51MB + fe6306487029 Downloading 34.6MB + 0ad2438e159e Downloading 32.51MB + 1cc0ff6cea1d Downloading 33.55MB + 1cc0ff6cea1d Downloading 33.55MB + fe6306487029 Downloading 34.6MB + 0ad2438e159e Downloading 33.55MB + 1cc0ff6cea1d Downloading 34.6MB + fe6306487029 Downloading 34.6MB + 0ad2438e159e Downloading 33.55MB + fe6306487029 Downloading 34.6MB + 0ad2438e159e Downloading 33.55MB + 1cc0ff6cea1d Downloading 34.6MB + 1cc0ff6cea1d Downloading 34.6MB + fe6306487029 Downloading 34.6MB + 0ad2438e159e Downloading 33.55MB + 1cc0ff6cea1d Downloading 34.6MB + fe6306487029 Downloading 34.6MB + 0ad2438e159e Downloading 33.55MB + 1cc0ff6cea1d Downloading 34.6MB + 0ad2438e159e Downloading 34.6MB + fe6306487029 Downloading 34.6MB + 1cc0ff6cea1d Downloading 34.6MB + fe6306487029 Downloading 35.65MB + 0ad2438e159e Downloading 34.6MB + 1cc0ff6cea1d Downloading 34.6MB + fe6306487029 Downloading 35.65MB + 0ad2438e159e Downloading 34.6MB + 0ad2438e159e Downloading 34.6MB + fe6306487029 Downloading 35.65MB + 1cc0ff6cea1d Downloading 35.65MB + 1cc0ff6cea1d Downloading 35.65MB + 0ad2438e159e Downloading 34.6MB + fe6306487029 Downloading 35.65MB + 1cc0ff6cea1d Downloading 35.65MB + fe6306487029 Downloading 35.65MB + 0ad2438e159e Downloading 34.6MB + 1cc0ff6cea1d Downloading 35.65MB + fe6306487029 Downloading 35.65MB + 0ad2438e159e Downloading 35.65MB + 0ad2438e159e Downloading 35.65MB + fe6306487029 Downloading 36.7MB + 1cc0ff6cea1d Downloading 35.65MB + 1cc0ff6cea1d Downloading 35.65MB + fe6306487029 Downloading 36.7MB + 0ad2438e159e Downloading 35.65MB + 1cc0ff6cea1d Downloading 35.65MB + fe6306487029 Downloading 36.7MB + 0ad2438e159e Downloading 35.65MB + 1cc0ff6cea1d Downloading 36.7MB + fe6306487029 Downloading 36.7MB + 0ad2438e159e Downloading 35.65MB + fe6306487029 Downloading 36.7MB + 0ad2438e159e Downloading 35.65MB + 1cc0ff6cea1d Downloading 36.7MB + 1cc0ff6cea1d Downloading 36.7MB + fe6306487029 Downloading 36.7MB + 0ad2438e159e Downloading 35.65MB + 1cc0ff6cea1d Downloading 36.7MB + fe6306487029 Downloading 37.75MB + 0ad2438e159e Downloading 35.65MB + fe6306487029 Downloading 37.75MB + 0ad2438e159e Downloading 35.65MB + 1cc0ff6cea1d Downloading 36.7MB + 1cc0ff6cea1d Downloading 36.7MB + fe6306487029 Downloading 37.75MB + 0ad2438e159e Downloading 36.7MB + 1cc0ff6cea1d Downloading 37.75MB + fe6306487029 Downloading 37.75MB + 0ad2438e159e Downloading 36.7MB + 1cc0ff6cea1d Downloading 37.75MB + fe6306487029 Downloading 37.75MB + 0ad2438e159e Downloading 36.7MB + 1cc0ff6cea1d Downloading 37.75MB + fe6306487029 Downloading 37.75MB + 0ad2438e159e Downloading 36.7MB + fe6306487029 Downloading 38.8MB + 0ad2438e159e Downloading 36.7MB + 1cc0ff6cea1d Downloading 37.75MB + fe6306487029 Downloading 38.8MB + 0ad2438e159e Downloading 36.7MB + 1cc0ff6cea1d Downloading 37.75MB + 1cc0ff6cea1d Downloading 37.75MB + fe6306487029 Downloading 38.8MB + 0ad2438e159e Downloading 36.7MB + 1cc0ff6cea1d Downloading 37.75MB + fe6306487029 Downloading 38.8MB + 0ad2438e159e Downloading 37.75MB + 1cc0ff6cea1d Downloading 38.8MB + fe6306487029 Downloading 38.8MB + 0ad2438e159e Downloading 37.75MB + 1cc0ff6cea1d Downloading 38.8MB + fe6306487029 Downloading 39.85MB + 0ad2438e159e Downloading 37.75MB + 1cc0ff6cea1d Downloading 38.8MB + fe6306487029 Downloading 39.85MB + 0ad2438e159e Downloading 37.75MB + 0ad2438e159e Downloading 37.75MB + fe6306487029 Downloading 39.85MB + 1cc0ff6cea1d Downloading 38.8MB + 1cc0ff6cea1d Downloading 38.8MB + fe6306487029 Downloading 39.85MB + 0ad2438e159e Downloading 37.75MB + 1cc0ff6cea1d Downloading 38.8MB + fe6306487029 Downloading 40.89MB + 0ad2438e159e Downloading 37.75MB + fe6306487029 Downloading 40.89MB + 0ad2438e159e Downloading 37.75MB + 1cc0ff6cea1d Downloading 38.8MB + 1cc0ff6cea1d Downloading 39.85MB + fe6306487029 Downloading 40.89MB + 0ad2438e159e Downloading 38.8MB + 1cc0ff6cea1d Downloading 39.85MB + 0ad2438e159e Downloading 38.8MB + fe6306487029 Downloading 40.89MB + fe6306487029 Downloading 40.89MB + 0ad2438e159e Downloading 38.8MB + 1cc0ff6cea1d Downloading 39.85MB + fe6306487029 Downloading 40.89MB + 0ad2438e159e Downloading 38.8MB + 1cc0ff6cea1d Downloading 39.85MB + 1cc0ff6cea1d Downloading 39.85MB + 0ad2438e159e Downloading 38.8MB + fe6306487029 Downloading 41.94MB + fe6306487029 Downloading 41.94MB + 0ad2438e159e Downloading 38.8MB + 1cc0ff6cea1d Downloading 39.85MB + fe6306487029 Downloading 41.94MB + 0ad2438e159e Downloading 38.8MB + 1cc0ff6cea1d Downloading 39.85MB + 1cc0ff6cea1d Downloading 40.89MB + 0ad2438e159e Downloading 38.8MB + fe6306487029 Downloading 41.94MB + 1cc0ff6cea1d Downloading 40.89MB + fe6306487029 Downloading 42.99MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 40.89MB + fe6306487029 Downloading 42.99MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 40.89MB + fe6306487029 Downloading 42.99MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 40.89MB + fe6306487029 Downloading 42.99MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 40.89MB + fe6306487029 Downloading 42.99MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 40.89MB + fe6306487029 Downloading 42.99MB + 0ad2438e159e Downloading 39.85MB + fe6306487029 Downloading 44.04MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 40.89MB + 1cc0ff6cea1d Downloading 40.89MB + fe6306487029 Downloading 44.04MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 41.94MB + fe6306487029 Downloading 44.04MB + 0ad2438e159e Downloading 39.85MB + fe6306487029 Downloading 44.04MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 41.94MB + fe6306487029 Downloading 44.04MB + 0ad2438e159e Downloading 39.85MB + 1cc0ff6cea1d Downloading 41.94MB + 1cc0ff6cea1d Downloading 41.94MB + fe6306487029 Downloading 44.04MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 41.94MB + fe6306487029 Downloading 45.09MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 41.94MB + 0ad2438e159e Downloading 40.89MB + fe6306487029 Downloading 45.09MB + 1cc0ff6cea1d Downloading 41.94MB + fe6306487029 Downloading 45.09MB + 0ad2438e159e Downloading 40.89MB + fe6306487029 Downloading 45.09MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 41.94MB + fe6306487029 Downloading 45.09MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 42.99MB + fe6306487029 Downloading 45.09MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 42.99MB + 1cc0ff6cea1d Downloading 42.99MB + fe6306487029 Downloading 45.09MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 42.99MB + fe6306487029 Downloading 45.09MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 42.99MB + fe6306487029 Downloading 46.14MB + 0ad2438e159e Downloading 40.89MB + 1cc0ff6cea1d Downloading 42.99MB + 0ad2438e159e Downloading 40.89MB + fe6306487029 Downloading 46.14MB + 1cc0ff6cea1d Downloading 42.99MB + fe6306487029 Downloading 46.14MB + 0ad2438e159e Downloading 41.94MB + 1cc0ff6cea1d Downloading 42.99MB + fe6306487029 Downloading 46.14MB + 0ad2438e159e Downloading 41.94MB + 1cc0ff6cea1d Downloading 42.99MB + fe6306487029 Downloading 46.14MB + 0ad2438e159e Downloading 41.94MB + fe6306487029 Downloading 46.14MB + 0ad2438e159e Downloading 41.94MB + 1cc0ff6cea1d Downloading 44.04MB + 1cc0ff6cea1d Downloading 44.04MB + fe6306487029 Downloading 46.14MB + 0ad2438e159e Downloading 41.94MB + fe6306487029 Downloading 46.14MB + 0ad2438e159e Downloading 41.94MB + 1cc0ff6cea1d Downloading 44.04MB + 1cc0ff6cea1d Downloading 44.04MB + fe6306487029 Downloading 47.19MB + 0ad2438e159e Downloading 41.94MB + 1cc0ff6cea1d Downloading 44.04MB + fe6306487029 Downloading 47.19MB + 0ad2438e159e Downloading 41.94MB + 1cc0ff6cea1d Downloading 44.04MB + fe6306487029 Downloading 47.19MB + 0ad2438e159e Downloading 42.99MB + 1cc0ff6cea1d Downloading 44.04MB + fe6306487029 Downloading 47.19MB + 0ad2438e159e Downloading 42.99MB + 1cc0ff6cea1d Downloading 45.09MB + fe6306487029 Downloading 47.19MB + 0ad2438e159e Downloading 42.99MB + 1cc0ff6cea1d Downloading 45.09MB + fe6306487029 Downloading 47.19MB + 0ad2438e159e Downloading 42.99MB + 1cc0ff6cea1d Downloading 45.09MB + fe6306487029 Downloading 47.19MB + 0ad2438e159e Downloading 42.99MB + fe6306487029 Downloading 48.23MB + 0ad2438e159e Downloading 42.99MB + 1cc0ff6cea1d Downloading 45.09MB + 1cc0ff6cea1d Downloading 45.09MB + 0ad2438e159e Downloading 42.99MB + fe6306487029 Downloading 48.23MB + 1cc0ff6cea1d Downloading 45.09MB + fe6306487029 Downloading 48.23MB + 0ad2438e159e Downloading 42.99MB + 1cc0ff6cea1d Downloading 45.09MB + fe6306487029 Downloading 48.23MB + 0ad2438e159e Downloading 42.99MB + 1cc0ff6cea1d Downloading 45.09MB + fe6306487029 Downloading 48.23MB + 0ad2438e159e Downloading 44.04MB + 1cc0ff6cea1d Downloading 45.09MB + fe6306487029 Downloading 48.23MB + 0ad2438e159e Downloading 44.04MB + 0ad2438e159e Downloading 44.04MB + fe6306487029 Downloading 49.28MB + 1cc0ff6cea1d Downloading 46.14MB + 1cc0ff6cea1d Downloading 46.14MB + fe6306487029 Downloading 49.28MB + 0ad2438e159e Downloading 44.04MB + 1cc0ff6cea1d Downloading 46.14MB + fe6306487029 Downloading 49.28MB + 0ad2438e159e Downloading 44.04MB + 1cc0ff6cea1d Downloading 46.14MB + fe6306487029 Downloading 49.28MB + 0ad2438e159e Downloading 44.04MB + fe6306487029 Downloading 49.28MB + 0ad2438e159e Downloading 44.04MB + 1cc0ff6cea1d Downloading 46.14MB + 1cc0ff6cea1d Downloading 46.14MB + fe6306487029 Downloading 50.33MB + 0ad2438e159e Downloading 44.04MB + 1cc0ff6cea1d Downloading 46.14MB + fe6306487029 Downloading 50.33MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 46.14MB + fe6306487029 Downloading 50.33MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 47.19MB + fe6306487029 Downloading 50.33MB + 0ad2438e159e Downloading 45.09MB + fe6306487029 Downloading 50.33MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 47.19MB + 1cc0ff6cea1d Downloading 47.19MB + fe6306487029 Downloading 50.33MB + 0ad2438e159e Downloading 45.09MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 47.19MB + 0ad2438e159e Downloading 45.09MB + fe6306487029 Downloading 51.38MB + 1cc0ff6cea1d Downloading 47.19MB + 1cc0ff6cea1d Downloading 47.19MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 47.19MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 47.19MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 48.23MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 45.09MB + 1cc0ff6cea1d Downloading 48.23MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 46.14MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 46.14MB + 1cc0ff6cea1d Downloading 48.23MB + fe6306487029 Downloading 51.38MB + 0ad2438e159e Downloading 46.14MB + 1cc0ff6cea1d Downloading 48.23MB + 1cc0ff6cea1d Downloading 48.23MB + fe6306487029 Downloading 52.43MB + 0ad2438e159e Downloading 46.14MB + fe6306487029 Downloading 52.43MB + 0ad2438e159e Downloading 46.14MB + 1cc0ff6cea1d Downloading 48.23MB + fe6306487029 Downloading 52.43MB + 0ad2438e159e Downloading 46.14MB + 1cc0ff6cea1d Downloading 48.23MB + 1cc0ff6cea1d Downloading 48.23MB + 0ad2438e159e Downloading 46.14MB + fe6306487029 Downloading 52.43MB + 1cc0ff6cea1d Downloading 49.28MB + 0ad2438e159e Downloading 46.14MB + fe6306487029 Downloading 52.43MB + fe6306487029 Downloading 52.43MB + 0ad2438e159e Downloading 46.14MB + 1cc0ff6cea1d Downloading 49.28MB + 1cc0ff6cea1d Downloading 49.28MB + 0ad2438e159e Downloading 46.14MB + fe6306487029 Downloading 52.43MB + 1cc0ff6cea1d Downloading 49.28MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + 1cc0ff6cea1d Downloading 49.28MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + 1cc0ff6cea1d Downloading 49.28MB + 1cc0ff6cea1d Downloading 49.28MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + 1cc0ff6cea1d Downloading 49.28MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + 1cc0ff6cea1d Downloading 49.28MB + 1cc0ff6cea1d Downloading 50.33MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + fe6306487029 Downloading 53.48MB + 0ad2438e159e Downloading 47.19MB + 1cc0ff6cea1d Downloading 50.33MB + 1cc0ff6cea1d Downloading 50.33MB + 0ad2438e159e Downloading 47.19MB + fe6306487029 Downloading 54.53MB + 1cc0ff6cea1d Downloading 50.33MB + fe6306487029 Downloading 54.53MB + 0ad2438e159e Downloading 48.23MB + fe6306487029 Downloading 54.53MB + 0ad2438e159e Downloading 48.23MB + 1cc0ff6cea1d Downloading 50.33MB + 1cc0ff6cea1d Downloading 50.33MB + fe6306487029 Downloading 54.53MB + 0ad2438e159e Downloading 48.23MB + fe6306487029 Downloading 54.53MB + 0ad2438e159e Downloading 48.23MB + 1cc0ff6cea1d Downloading 50.33MB + fe6306487029 Downloading 54.53MB + 0ad2438e159e Downloading 48.23MB + 1cc0ff6cea1d Downloading 50.33MB + 1cc0ff6cea1d Downloading 50.33MB + fe6306487029 Downloading 54.53MB + 0ad2438e159e Downloading 48.23MB + 1cc0ff6cea1d Downloading 50.33MB + fe6306487029 Downloading 54.53MB + 0ad2438e159e Downloading 48.23MB + 1cc0ff6cea1d Downloading 51.38MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 48.23MB + 1cc0ff6cea1d Downloading 51.38MB + 0ad2438e159e Downloading 48.23MB + fe6306487029 Downloading 55.57MB + 1cc0ff6cea1d Downloading 51.38MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 49.28MB + 1cc0ff6cea1d Downloading 51.38MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 49.28MB + 1cc0ff6cea1d Downloading 51.38MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 49.28MB + 1cc0ff6cea1d Downloading 51.38MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 49.28MB + 1cc0ff6cea1d Downloading 51.38MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 49.28MB + 1cc0ff6cea1d Downloading 51.38MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 49.28MB + fe6306487029 Downloading 55.57MB + 0ad2438e159e Downloading 49.28MB + 1cc0ff6cea1d Downloading 52.43MB + 1cc0ff6cea1d Downloading 52.43MB + fe6306487029 Downloading 56.62MB + 0ad2438e159e Downloading 49.28MB + fe6306487029 Downloading 56.62MB + 0ad2438e159e Downloading 50.33MB + 1cc0ff6cea1d Downloading 52.43MB + fe6306487029 Downloading 56.62MB + 0ad2438e159e Downloading 50.33MB + 1cc0ff6cea1d Downloading 52.43MB + 1cc0ff6cea1d Downloading 52.43MB + fe6306487029 Downloading 56.62MB + 0ad2438e159e Downloading 50.33MB + 1cc0ff6cea1d Downloading 52.43MB + fe6306487029 Downloading 56.62MB + 0ad2438e159e Downloading 50.33MB + 1cc0ff6cea1d Downloading 52.43MB + fe6306487029 Downloading 56.62MB + 0ad2438e159e Downloading 50.33MB + 1cc0ff6cea1d Downloading 52.43MB + fe6306487029 Downloading 56.62MB + 0ad2438e159e Downloading 50.33MB + 1cc0ff6cea1d Downloading 53.48MB + fe6306487029 Download complete 0B + 0ad2438e159e Downloading 50.33MB + fe6306487029 Extracting 1B + 1cc0ff6cea1d Downloading 53.48MB + 0ad2438e159e Downloading 50.33MB + fe6306487029 Extracting 1B + 0ad2438e159e Downloading 50.33MB + 1cc0ff6cea1d Downloading 53.48MB + fe6306487029 Extracting 1B + 1cc0ff6cea1d Downloading 53.48MB + 0ad2438e159e Downloading 51.38MB + fe6306487029 Pull complete 0B + 0ad2438e159e Downloading 51.38MB + 1cc0ff6cea1d Downloading 53.48MB + 1cc0ff6cea1d Downloading 53.48MB + 0ad2438e159e Downloading 51.38MB + 1cc0ff6cea1d Downloading 53.48MB + 0ad2438e159e Downloading 51.38MB + 1cc0ff6cea1d Downloading 53.48MB + 0ad2438e159e Download complete 0B + 0ad2438e159e Extracting 1B + 1cc0ff6cea1d Downloading 54.53MB + 0ad2438e159e Extracting 1B + 1cc0ff6cea1d Downloading 54.53MB + 0ad2438e159e Extracting 1B + 1cc0ff6cea1d Downloading 54.53MB + 0ad2438e159e Extracting 1B + 81d14c078a74 Pull complete 0B + f5d2fa6280ad Pull complete 0B + 073d75ee84d4 Pull complete 0B + c8c5fe18afab Pull complete 0B + 1cc0ff6cea1d Downloading 54.53MB + 34c169812ca7 Pull complete 0B + c390b3ff97f5 Pull complete 0B + 0ad2438e159e Pull complete 0B + Image prom/prometheus:v3.2.1 Pulled + 1cc0ff6cea1d Downloading 54.53MB + 1cc0ff6cea1d Downloading 54.53MB + 1cc0ff6cea1d Downloading 54.53MB + 1cc0ff6cea1d Downloading 54.53MB + 1cc0ff6cea1d Downloading 54.53MB + 1cc0ff6cea1d Downloading 55.57MB + 1cc0ff6cea1d Downloading 55.57MB + 1cc0ff6cea1d Downloading 55.57MB + 1cc0ff6cea1d Downloading 55.57MB + 1cc0ff6cea1d Downloading 55.57MB + 1cc0ff6cea1d Downloading 55.57MB + 1cc0ff6cea1d Downloading 55.57MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 56.62MB + 1cc0ff6cea1d Downloading 57.67MB + 1cc0ff6cea1d Downloading 57.67MB + 1cc0ff6cea1d Downloading 57.67MB + 1cc0ff6cea1d Downloading 57.67MB + 1cc0ff6cea1d Downloading 57.67MB + 1cc0ff6cea1d Downloading 57.67MB + 1cc0ff6cea1d Downloading 57.67MB + 1cc0ff6cea1d Downloading 58.72MB + 1cc0ff6cea1d Downloading 58.72MB + 1cc0ff6cea1d Downloading 58.72MB + 1cc0ff6cea1d Downloading 58.72MB + 1cc0ff6cea1d Downloading 58.72MB + 1cc0ff6cea1d Downloading 58.72MB + 1cc0ff6cea1d Downloading 58.72MB + 1cc0ff6cea1d Downloading 59.77MB + 1cc0ff6cea1d Downloading 59.77MB + 1cc0ff6cea1d Downloading 59.77MB + 1cc0ff6cea1d Downloading 59.77MB + 1cc0ff6cea1d Downloading 59.77MB + 1cc0ff6cea1d Downloading 59.77MB + 1cc0ff6cea1d Downloading 59.77MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 60.82MB + 1cc0ff6cea1d Downloading 61.87MB + 1cc0ff6cea1d Downloading 61.87MB + 1cc0ff6cea1d Downloading 61.87MB + 1cc0ff6cea1d Downloading 61.87MB + 1cc0ff6cea1d Downloading 61.87MB + 1cc0ff6cea1d Downloading 61.87MB + 1cc0ff6cea1d Downloading 61.87MB + 1cc0ff6cea1d Downloading 62.91MB + 1cc0ff6cea1d Downloading 62.91MB + 1cc0ff6cea1d Downloading 62.91MB + 1cc0ff6cea1d Downloading 62.91MB + 1cc0ff6cea1d Downloading 62.91MB + 1cc0ff6cea1d Downloading 62.91MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 63.96MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 65.01MB + 1cc0ff6cea1d Downloading 66.06MB + 1cc0ff6cea1d Downloading 66.06MB + 1cc0ff6cea1d Downloading 66.06MB + 1cc0ff6cea1d Downloading 66.06MB + 1cc0ff6cea1d Downloading 66.06MB + 1cc0ff6cea1d Downloading 67.11MB + 1cc0ff6cea1d Downloading 67.11MB + 1cc0ff6cea1d Downloading 67.11MB + 1cc0ff6cea1d Downloading 67.11MB + 1cc0ff6cea1d Downloading 67.11MB + 1cc0ff6cea1d Downloading 67.11MB + 1cc0ff6cea1d Downloading 67.11MB + 1cc0ff6cea1d Downloading 68.16MB + 1cc0ff6cea1d Downloading 68.16MB + 1cc0ff6cea1d Downloading 68.16MB + 1cc0ff6cea1d Downloading 68.16MB + 1cc0ff6cea1d Downloading 68.16MB + 1cc0ff6cea1d Downloading 69.21MB + 1cc0ff6cea1d Downloading 69.21MB + 1cc0ff6cea1d Downloading 69.21MB + 1cc0ff6cea1d Downloading 69.21MB + 1cc0ff6cea1d Downloading 70.25MB + 1cc0ff6cea1d Downloading 70.25MB + 1cc0ff6cea1d Downloading 70.25MB + 1cc0ff6cea1d Downloading 70.25MB + 1cc0ff6cea1d Downloading 70.25MB + 1cc0ff6cea1d Downloading 71.3MB + 1cc0ff6cea1d Downloading 71.3MB + 1cc0ff6cea1d Downloading 71.3MB + 1cc0ff6cea1d Downloading 71.3MB + 1cc0ff6cea1d Downloading 72.35MB + 1cc0ff6cea1d Downloading 72.35MB + 1cc0ff6cea1d Downloading 72.35MB + 1cc0ff6cea1d Downloading 72.35MB + 1cc0ff6cea1d Downloading 72.35MB + 1cc0ff6cea1d Downloading 73.4MB + 1cc0ff6cea1d Downloading 73.4MB + 1cc0ff6cea1d Downloading 73.4MB + 1cc0ff6cea1d Downloading 73.4MB + 1cc0ff6cea1d Downloading 73.4MB + 1cc0ff6cea1d Downloading 74.45MB + 1cc0ff6cea1d Downloading 74.45MB + 1cc0ff6cea1d Downloading 74.45MB + 1cc0ff6cea1d Downloading 74.45MB + 1cc0ff6cea1d Downloading 74.45MB + 1cc0ff6cea1d Downloading 75.5MB + 1cc0ff6cea1d Downloading 75.5MB + 1cc0ff6cea1d Downloading 75.5MB + 1cc0ff6cea1d Downloading 75.5MB + 1cc0ff6cea1d Downloading 75.5MB + 1cc0ff6cea1d Downloading 76.55MB + 1cc0ff6cea1d Downloading 76.55MB + 1cc0ff6cea1d Downloading 76.55MB + 1cc0ff6cea1d Downloading 76.55MB + 1cc0ff6cea1d Downloading 76.55MB + 1cc0ff6cea1d Downloading 77.59MB + 1cc0ff6cea1d Downloading 77.59MB + 1cc0ff6cea1d Downloading 77.59MB + 1cc0ff6cea1d Downloading 77.59MB + 1cc0ff6cea1d Downloading 78.64MB + 1cc0ff6cea1d Downloading 78.64MB + 1cc0ff6cea1d Downloading 78.64MB + 1cc0ff6cea1d Downloading 78.64MB + 1cc0ff6cea1d Downloading 78.64MB + 1cc0ff6cea1d Downloading 78.64MB + 1cc0ff6cea1d Downloading 79.69MB + 1cc0ff6cea1d Downloading 79.69MB + 1cc0ff6cea1d Downloading 79.69MB + 1cc0ff6cea1d Downloading 79.69MB + 1cc0ff6cea1d Downloading 79.69MB + 1cc0ff6cea1d Downloading 80.74MB + 1cc0ff6cea1d Downloading 80.74MB + 1cc0ff6cea1d Downloading 80.74MB + 1cc0ff6cea1d Downloading 80.74MB + 1cc0ff6cea1d Downloading 80.74MB + 1cc0ff6cea1d Downloading 80.74MB + 1cc0ff6cea1d Downloading 81.79MB + 1cc0ff6cea1d Downloading 81.79MB + 1cc0ff6cea1d Downloading 81.79MB + 1cc0ff6cea1d Downloading 81.79MB + 1cc0ff6cea1d Downloading 82.84MB + 1cc0ff6cea1d Downloading 82.84MB + 1cc0ff6cea1d Downloading 82.84MB + 1cc0ff6cea1d Downloading 82.84MB + 1cc0ff6cea1d Downloading 83.89MB + 1cc0ff6cea1d Downloading 83.89MB + 1cc0ff6cea1d Downloading 83.89MB + 1cc0ff6cea1d Downloading 83.89MB + 1cc0ff6cea1d Downloading 84.93MB + 1cc0ff6cea1d Downloading 84.93MB + 1cc0ff6cea1d Downloading 84.93MB + 1cc0ff6cea1d Downloading 84.93MB + 1cc0ff6cea1d Downloading 84.93MB + 1cc0ff6cea1d Downloading 84.93MB + 1cc0ff6cea1d Downloading 85.98MB + 1cc0ff6cea1d Downloading 85.98MB + 1cc0ff6cea1d Downloading 85.98MB + 1cc0ff6cea1d Downloading 85.98MB + 1cc0ff6cea1d Downloading 85.98MB + 1cc0ff6cea1d Downloading 87.03MB + 1cc0ff6cea1d Downloading 87.03MB + 1cc0ff6cea1d Downloading 87.03MB + 1cc0ff6cea1d Downloading 88.08MB + 1cc0ff6cea1d Downloading 88.08MB + 1cc0ff6cea1d Downloading 88.08MB + 1cc0ff6cea1d Downloading 89.13MB + 1cc0ff6cea1d Downloading 89.13MB + 1cc0ff6cea1d Downloading 89.13MB + 1cc0ff6cea1d Downloading 90.18MB + 1cc0ff6cea1d Downloading 90.18MB + 1cc0ff6cea1d Downloading 90.18MB + 1cc0ff6cea1d Downloading 90.18MB + 1cc0ff6cea1d Downloading 90.18MB + 1cc0ff6cea1d Downloading 91.23MB + 1cc0ff6cea1d Downloading 91.23MB + 1cc0ff6cea1d Downloading 91.23MB + 1cc0ff6cea1d Downloading 92.27MB + 1cc0ff6cea1d Downloading 92.27MB + 1cc0ff6cea1d Downloading 92.27MB + 1cc0ff6cea1d Downloading 93.32MB + 1cc0ff6cea1d Downloading 93.32MB + 1cc0ff6cea1d Downloading 93.32MB + 1cc0ff6cea1d Downloading 93.32MB + 1cc0ff6cea1d Downloading 94.37MB + 1cc0ff6cea1d Downloading 94.37MB + 1cc0ff6cea1d Downloading 94.37MB + 1cc0ff6cea1d Downloading 94.37MB + 1cc0ff6cea1d Downloading 95.42MB + 1cc0ff6cea1d Downloading 95.42MB + 1cc0ff6cea1d Downloading 95.42MB + 1cc0ff6cea1d Downloading 96.47MB + 1cc0ff6cea1d Downloading 96.47MB + 1cc0ff6cea1d Downloading 96.47MB + 1cc0ff6cea1d Downloading 97.52MB + 1cc0ff6cea1d Downloading 97.52MB + 1cc0ff6cea1d Downloading 97.52MB + 1cc0ff6cea1d Downloading 97.52MB + 1cc0ff6cea1d Downloading 98.57MB + 1cc0ff6cea1d Downloading 98.57MB + 1cc0ff6cea1d Downloading 98.57MB + 1cc0ff6cea1d Downloading 98.57MB + 1cc0ff6cea1d Downloading 98.57MB + 1cc0ff6cea1d Downloading 99.61MB + 1cc0ff6cea1d Downloading 99.61MB + 1cc0ff6cea1d Downloading 99.61MB + 1cc0ff6cea1d Downloading 99.61MB + 1cc0ff6cea1d Downloading 99.61MB + 1cc0ff6cea1d Downloading 99.61MB + 1cc0ff6cea1d Downloading 100.7MB + 1cc0ff6cea1d Downloading 100.7MB + 1cc0ff6cea1d Downloading 100.7MB + 1cc0ff6cea1d Downloading 100.7MB + 1cc0ff6cea1d Downloading 100.7MB + 1cc0ff6cea1d Downloading 100.7MB + 1cc0ff6cea1d Downloading 100.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 101.7MB + 1cc0ff6cea1d Downloading 102.8MB + 1cc0ff6cea1d Downloading 102.8MB + 1cc0ff6cea1d Downloading 102.8MB + 1cc0ff6cea1d Downloading 102.8MB + 1cc0ff6cea1d Downloading 102.8MB + 1cc0ff6cea1d Downloading 102.8MB + 1cc0ff6cea1d Downloading 103.8MB + 1cc0ff6cea1d Downloading 103.8MB + 1cc0ff6cea1d Downloading 103.8MB + 1cc0ff6cea1d Downloading 103.8MB + 1cc0ff6cea1d Downloading 103.8MB + 1cc0ff6cea1d Downloading 104.9MB + 1cc0ff6cea1d Downloading 104.9MB + 1cc0ff6cea1d Downloading 104.9MB + 1cc0ff6cea1d Downloading 104.9MB + 1cc0ff6cea1d Downloading 104.9MB + 1cc0ff6cea1d Downloading 104.9MB + 1cc0ff6cea1d Downloading 105.9MB + 1cc0ff6cea1d Downloading 105.9MB + 1cc0ff6cea1d Downloading 105.9MB + 1cc0ff6cea1d Downloading 105.9MB + 1cc0ff6cea1d Downloading 107MB + 1cc0ff6cea1d Downloading 107MB + 1cc0ff6cea1d Downloading 107MB + 1cc0ff6cea1d Downloading 107MB + 1cc0ff6cea1d Downloading 107MB + 1cc0ff6cea1d Downloading 108MB + 1cc0ff6cea1d Downloading 108MB + 1cc0ff6cea1d Downloading 108MB + 1cc0ff6cea1d Downloading 108MB + 1cc0ff6cea1d Downloading 109.1MB + 1cc0ff6cea1d Downloading 109.1MB + 1cc0ff6cea1d Downloading 109.1MB + 1cc0ff6cea1d Downloading 109.1MB + 1cc0ff6cea1d Downloading 110.1MB + 1cc0ff6cea1d Downloading 110.1MB + 1cc0ff6cea1d Downloading 110.1MB + 1cc0ff6cea1d Downloading 110.1MB + 1cc0ff6cea1d Downloading 110.1MB + 1cc0ff6cea1d Downloading 111.1MB + 1cc0ff6cea1d Downloading 111.1MB + 1cc0ff6cea1d Downloading 111.1MB + 1cc0ff6cea1d Downloading 111.1MB + 1cc0ff6cea1d Downloading 111.1MB + 1cc0ff6cea1d Downloading 112.2MB + 1cc0ff6cea1d Downloading 112.2MB + 1cc0ff6cea1d Downloading 112.2MB + 1cc0ff6cea1d Downloading 113.2MB + 1cc0ff6cea1d Downloading 113.2MB + 1cc0ff6cea1d Downloading 113.2MB + 1cc0ff6cea1d Downloading 113.2MB + 1cc0ff6cea1d Downloading 114.3MB + 1cc0ff6cea1d Downloading 114.3MB + 1cc0ff6cea1d Downloading 114.3MB + 1cc0ff6cea1d Downloading 114.3MB + 1cc0ff6cea1d Downloading 115.3MB + 1cc0ff6cea1d Downloading 115.3MB + 1cc0ff6cea1d Downloading 115.3MB + 1cc0ff6cea1d Downloading 115.3MB + 1cc0ff6cea1d Downloading 116.4MB + 1cc0ff6cea1d Downloading 116.4MB + 1cc0ff6cea1d Downloading 116.4MB + 1cc0ff6cea1d Downloading 117.4MB + 1cc0ff6cea1d Downloading 117.4MB + 1cc0ff6cea1d Downloading 117.4MB + 1cc0ff6cea1d Downloading 118.5MB + 1cc0ff6cea1d Downloading 118.5MB + 1cc0ff6cea1d Downloading 118.5MB + 1cc0ff6cea1d Downloading 118.5MB + 1cc0ff6cea1d Downloading 119.5MB + 1cc0ff6cea1d Downloading 119.5MB + 1cc0ff6cea1d Downloading 119.5MB + 1cc0ff6cea1d Downloading 119.5MB + 1cc0ff6cea1d Downloading 119.5MB + 1cc0ff6cea1d Downloading 120.6MB + 1cc0ff6cea1d Downloading 120.6MB + 1cc0ff6cea1d Downloading 120.6MB + 1cc0ff6cea1d Downloading 120.6MB + 1cc0ff6cea1d Downloading 120.6MB + 1cc0ff6cea1d Downloading 121.6MB + 1cc0ff6cea1d Downloading 121.6MB + 1cc0ff6cea1d Downloading 121.6MB + 1cc0ff6cea1d Downloading 121.6MB + 1cc0ff6cea1d Downloading 121.6MB + 1cc0ff6cea1d Downloading 122.7MB + 1cc0ff6cea1d Downloading 122.7MB + 1cc0ff6cea1d Downloading 122.7MB + 1cc0ff6cea1d Downloading 122.7MB + 1cc0ff6cea1d Downloading 122.7MB + 1cc0ff6cea1d Downloading 122.7MB + 1cc0ff6cea1d Downloading 123.7MB + 1cc0ff6cea1d Downloading 123.7MB + 1cc0ff6cea1d Downloading 123.7MB + 1cc0ff6cea1d Downloading 123.7MB + 1cc0ff6cea1d Downloading 124.8MB + 1cc0ff6cea1d Downloading 124.8MB + 1cc0ff6cea1d Downloading 124.8MB + 1cc0ff6cea1d Downloading 124.8MB + 1cc0ff6cea1d Downloading 125.8MB + 1cc0ff6cea1d Downloading 125.8MB + 1cc0ff6cea1d Downloading 125.8MB + 1cc0ff6cea1d Downloading 125.8MB + 1cc0ff6cea1d Downloading 125.8MB + 1cc0ff6cea1d Downloading 126.9MB + 1cc0ff6cea1d Downloading 126.9MB + 1cc0ff6cea1d Downloading 126.9MB + 1cc0ff6cea1d Downloading 126.9MB + 1cc0ff6cea1d Downloading 126.9MB + 1cc0ff6cea1d Downloading 127.9MB + 1cc0ff6cea1d Downloading 127.9MB + 1cc0ff6cea1d Downloading 127.9MB + 1cc0ff6cea1d Downloading 127.9MB + 1cc0ff6cea1d Downloading 129MB + 1cc0ff6cea1d Downloading 129MB + 1cc0ff6cea1d Downloading 129MB + 1cc0ff6cea1d Downloading 129MB + 1cc0ff6cea1d Downloading 129MB + 1cc0ff6cea1d Downloading 130MB + 1cc0ff6cea1d Downloading 130MB + 1cc0ff6cea1d Downloading 130MB + 1cc0ff6cea1d Downloading 131.1MB + 1cc0ff6cea1d Downloading 131.1MB + 1cc0ff6cea1d Downloading 131.1MB + 1cc0ff6cea1d Downloading 131.1MB + 1cc0ff6cea1d Downloading 131.1MB + 1cc0ff6cea1d Downloading 132.1MB + 1cc0ff6cea1d Downloading 132.1MB + 1cc0ff6cea1d Downloading 132.1MB + 1cc0ff6cea1d Downloading 132.1MB + 1cc0ff6cea1d Downloading 133.2MB + 1cc0ff6cea1d Downloading 133.2MB + 1cc0ff6cea1d Downloading 133.2MB + 1cc0ff6cea1d Downloading 134.2MB + 1cc0ff6cea1d Downloading 134.2MB + 1cc0ff6cea1d Downloading 134.2MB + 1cc0ff6cea1d Downloading 135.3MB + 1cc0ff6cea1d Downloading 135.3MB + 1cc0ff6cea1d Downloading 135.3MB + 1cc0ff6cea1d Downloading 136.3MB + 1cc0ff6cea1d Downloading 136.3MB + 1cc0ff6cea1d Downloading 136.3MB + 1cc0ff6cea1d Downloading 137.4MB + 1cc0ff6cea1d Downloading 137.4MB + 1cc0ff6cea1d Downloading 137.4MB + 1cc0ff6cea1d Downloading 138.4MB + 1cc0ff6cea1d Downloading 138.4MB + 1cc0ff6cea1d Downloading 138.4MB + 1cc0ff6cea1d Downloading 138.4MB + 1cc0ff6cea1d Downloading 139.5MB + 1cc0ff6cea1d Downloading 139.5MB + 1cc0ff6cea1d Downloading 139.5MB + 1cc0ff6cea1d Downloading 139.5MB + 1cc0ff6cea1d Downloading 140.5MB + 1cc0ff6cea1d Downloading 140.5MB + 1cc0ff6cea1d Downloading 140.5MB + 1cc0ff6cea1d Downloading 141.6MB + 1cc0ff6cea1d Downloading 141.6MB + 1cc0ff6cea1d Downloading 141.6MB + 1cc0ff6cea1d Downloading 141.6MB + 1cc0ff6cea1d Downloading 141.6MB + 1cc0ff6cea1d Downloading 141.6MB + 1cc0ff6cea1d Downloading 142.6MB + 1cc0ff6cea1d Downloading 142.6MB + 1cc0ff6cea1d Downloading 142.6MB + 1cc0ff6cea1d Downloading 143.7MB + 1cc0ff6cea1d Downloading 143.7MB + 1cc0ff6cea1d Downloading 143.7MB + 1cc0ff6cea1d Downloading 143.7MB + 1cc0ff6cea1d Downloading 143.7MB + 1cc0ff6cea1d Downloading 143.7MB + 1cc0ff6cea1d Downloading 144.7MB + 1cc0ff6cea1d Downloading 144.7MB + 1cc0ff6cea1d Downloading 144.7MB + 1cc0ff6cea1d Downloading 144.7MB + 1cc0ff6cea1d Downloading 145.8MB + 1cc0ff6cea1d Downloading 145.8MB + 1cc0ff6cea1d Downloading 145.8MB + 1cc0ff6cea1d Downloading 145.8MB + 1cc0ff6cea1d Downloading 146.8MB + 1cc0ff6cea1d Downloading 146.8MB + 1cc0ff6cea1d Downloading 146.8MB + 1cc0ff6cea1d Downloading 146.8MB + 1cc0ff6cea1d Downloading 147.8MB + 1cc0ff6cea1d Downloading 147.8MB + 1cc0ff6cea1d Downloading 147.8MB + 1cc0ff6cea1d Downloading 147.8MB + 1cc0ff6cea1d Downloading 147.8MB + 1cc0ff6cea1d Downloading 148.9MB + 1cc0ff6cea1d Downloading 148.9MB + 1cc0ff6cea1d Downloading 148.9MB + 1cc0ff6cea1d Downloading 148.9MB + 1cc0ff6cea1d Downloading 148.9MB + 1cc0ff6cea1d Downloading 149.9MB + 1cc0ff6cea1d Downloading 149.9MB + 1cc0ff6cea1d Downloading 149.9MB + 1cc0ff6cea1d Downloading 151MB + 1cc0ff6cea1d Downloading 151MB + 1cc0ff6cea1d Downloading 151MB + 1cc0ff6cea1d Downloading 152MB + 1cc0ff6cea1d Downloading 152MB + 1cc0ff6cea1d Downloading 152MB + 1cc0ff6cea1d Downloading 152MB + 1cc0ff6cea1d Downloading 153.1MB + 1cc0ff6cea1d Downloading 153.1MB + 1cc0ff6cea1d Downloading 153.1MB + 1cc0ff6cea1d Downloading 154.1MB + 1cc0ff6cea1d Downloading 154.1MB + 1cc0ff6cea1d Downloading 154.1MB + 1cc0ff6cea1d Downloading 155.2MB + 1cc0ff6cea1d Downloading 155.2MB + 1cc0ff6cea1d Downloading 155.2MB + 1cc0ff6cea1d Downloading 156.2MB + 1cc0ff6cea1d Downloading 156.2MB + 1cc0ff6cea1d Downloading 156.2MB + 1cc0ff6cea1d Downloading 157.3MB + 1cc0ff6cea1d Downloading 157.3MB + 1cc0ff6cea1d Downloading 158.3MB + 1cc0ff6cea1d Downloading 158.3MB + 1cc0ff6cea1d Downloading 158.3MB + 1cc0ff6cea1d Downloading 159.4MB + 1cc0ff6cea1d Downloading 159.4MB + 1cc0ff6cea1d Downloading 159.4MB + 1cc0ff6cea1d Downloading 160.4MB + 1cc0ff6cea1d Downloading 160.4MB + 1cc0ff6cea1d Downloading 160.4MB + 1cc0ff6cea1d Downloading 160.4MB + 1cc0ff6cea1d Downloading 160.4MB + 1cc0ff6cea1d Downloading 161.5MB + 1cc0ff6cea1d Downloading 161.5MB + 1cc0ff6cea1d Downloading 162.5MB + 1cc0ff6cea1d Downloading 162.5MB + 1cc0ff6cea1d Downloading 162.5MB + 1cc0ff6cea1d Downloading 162.5MB + 1cc0ff6cea1d Downloading 163.6MB + 1cc0ff6cea1d Downloading 163.6MB + 1cc0ff6cea1d Downloading 164.6MB + 1cc0ff6cea1d Downloading 164.6MB + 1cc0ff6cea1d Downloading 164.6MB + 1cc0ff6cea1d Downloading 165.7MB + 1cc0ff6cea1d Downloading 165.7MB + 1cc0ff6cea1d Downloading 165.7MB + 1cc0ff6cea1d Downloading 166.7MB + 1cc0ff6cea1d Downloading 166.7MB + 1cc0ff6cea1d Downloading 166.7MB + 1cc0ff6cea1d Downloading 166.7MB + 1cc0ff6cea1d Downloading 167.8MB + 1cc0ff6cea1d Downloading 167.8MB + 1cc0ff6cea1d Downloading 167.8MB + 1cc0ff6cea1d Downloading 168.8MB + 1cc0ff6cea1d Downloading 168.8MB + 1cc0ff6cea1d Downloading 168.8MB + 1cc0ff6cea1d Downloading 169.9MB + 1cc0ff6cea1d Downloading 169.9MB + 1cc0ff6cea1d Downloading 169.9MB + 1cc0ff6cea1d Downloading 169.9MB + 1cc0ff6cea1d Downloading 170.9MB + 1cc0ff6cea1d Downloading 170.9MB + 1cc0ff6cea1d Downloading 170.9MB + 1cc0ff6cea1d Downloading 172MB + 1cc0ff6cea1d Downloading 172MB + 1cc0ff6cea1d Downloading 172MB + 1cc0ff6cea1d Downloading 173MB + 1cc0ff6cea1d Downloading 173MB + 1cc0ff6cea1d Downloading 173MB + 1cc0ff6cea1d Downloading 174.1MB + 1cc0ff6cea1d Downloading 174.1MB + 1cc0ff6cea1d Downloading 174.1MB + 1cc0ff6cea1d Downloading 175.1MB + 1cc0ff6cea1d Downloading 175.1MB + 1cc0ff6cea1d Downloading 175.1MB + 1cc0ff6cea1d Downloading 176.2MB + 1cc0ff6cea1d Downloading 176.2MB + 1cc0ff6cea1d Downloading 176.2MB + 1cc0ff6cea1d Downloading 177.2MB + 1cc0ff6cea1d Downloading 177.2MB + 1cc0ff6cea1d Downloading 177.2MB + 1cc0ff6cea1d Downloading 177.2MB + 1cc0ff6cea1d Downloading 178.3MB + 1cc0ff6cea1d Downloading 178.3MB + 1cc0ff6cea1d Downloading 178.3MB + 1cc0ff6cea1d Downloading 179.3MB + 1cc0ff6cea1d Downloading 179.3MB + 1cc0ff6cea1d Downloading 179.3MB + 1cc0ff6cea1d Downloading 179.3MB + 1cc0ff6cea1d Downloading 180.4MB + 1cc0ff6cea1d Downloading 180.4MB + 1cc0ff6cea1d Downloading 181.4MB + 1cc0ff6cea1d Downloading 181.4MB + 1cc0ff6cea1d Downloading 181.4MB + 1cc0ff6cea1d Downloading 181.4MB + 1cc0ff6cea1d Downloading 182.5MB + 1cc0ff6cea1d Downloading 182.5MB + 1cc0ff6cea1d Downloading 182.5MB + 1cc0ff6cea1d Downloading 182.5MB + 1cc0ff6cea1d Downloading 183.5MB + 1cc0ff6cea1d Downloading 183.5MB + 1cc0ff6cea1d Downloading 183.5MB + 1cc0ff6cea1d Downloading 183.5MB + 1cc0ff6cea1d Downloading 184.5MB + 1cc0ff6cea1d Downloading 184.5MB + 1cc0ff6cea1d Downloading 184.5MB + 1cc0ff6cea1d Downloading 184.5MB + 1cc0ff6cea1d Downloading 185.6MB + 1cc0ff6cea1d Downloading 185.6MB + 1cc0ff6cea1d Downloading 185.6MB + 1cc0ff6cea1d Downloading 185.6MB + 1cc0ff6cea1d Downloading 186.6MB + 1cc0ff6cea1d Downloading 186.6MB + 1cc0ff6cea1d Downloading 186.6MB + 1cc0ff6cea1d Downloading 187.7MB + 1cc0ff6cea1d Downloading 187.7MB + 1cc0ff6cea1d Downloading 187.7MB + 1cc0ff6cea1d Downloading 187.7MB + 1cc0ff6cea1d Downloading 188.7MB + 1cc0ff6cea1d Downloading 188.7MB + 1cc0ff6cea1d Downloading 188.7MB + 1cc0ff6cea1d Downloading 188.7MB + 1cc0ff6cea1d Downloading 188.7MB + 1cc0ff6cea1d Downloading 188.7MB + 1cc0ff6cea1d Downloading 189.8MB + 1cc0ff6cea1d Downloading 189.8MB + 1cc0ff6cea1d Downloading 189.8MB + 1cc0ff6cea1d Downloading 189.8MB + 1cc0ff6cea1d Downloading 189.8MB + 1cc0ff6cea1d Downloading 190.8MB + 1cc0ff6cea1d Downloading 190.8MB + 1cc0ff6cea1d Downloading 190.8MB + 1cc0ff6cea1d Downloading 190.8MB + 1cc0ff6cea1d Downloading 191.9MB + 1cc0ff6cea1d Downloading 191.9MB + 1cc0ff6cea1d Downloading 191.9MB + 1cc0ff6cea1d Downloading 192.9MB + 1cc0ff6cea1d Downloading 192.9MB + 1cc0ff6cea1d Downloading 192.9MB + 1cc0ff6cea1d Downloading 192.9MB + 1cc0ff6cea1d Downloading 192.9MB + 1cc0ff6cea1d Downloading 194MB + 1cc0ff6cea1d Downloading 194MB + 1cc0ff6cea1d Downloading 194MB + 1cc0ff6cea1d Downloading 195MB + 1cc0ff6cea1d Downloading 195MB + 1cc0ff6cea1d Downloading 195MB + 1cc0ff6cea1d Downloading 196.1MB + 1cc0ff6cea1d Downloading 196.1MB + 1cc0ff6cea1d Downloading 196.1MB + 1cc0ff6cea1d Downloading 197.1MB + 1cc0ff6cea1d Downloading 197.1MB + 1cc0ff6cea1d Downloading 197.1MB + 1cc0ff6cea1d Downloading 198.2MB + 1cc0ff6cea1d Downloading 198.2MB + 1cc0ff6cea1d Downloading 198.2MB + 1cc0ff6cea1d Downloading 199.2MB + 1cc0ff6cea1d Downloading 199.2MB + 1cc0ff6cea1d Downloading 199.2MB + 1cc0ff6cea1d Downloading 200.3MB + 1cc0ff6cea1d Downloading 200.3MB + 1cc0ff6cea1d Downloading 201.3MB + 1cc0ff6cea1d Downloading 201.3MB + 1cc0ff6cea1d Downloading 201.3MB + 1cc0ff6cea1d Downloading 202.4MB + 1cc0ff6cea1d Downloading 202.4MB + 1cc0ff6cea1d Downloading 202.4MB + 1cc0ff6cea1d Downloading 203.4MB + 1cc0ff6cea1d Downloading 203.4MB + 1cc0ff6cea1d Downloading 203.4MB + 1cc0ff6cea1d Downloading 204.5MB + 1cc0ff6cea1d Downloading 204.5MB + 1cc0ff6cea1d Downloading 204.5MB + 1cc0ff6cea1d Downloading 204.5MB + 1cc0ff6cea1d Downloading 205.5MB + 1cc0ff6cea1d Downloading 205.5MB + 1cc0ff6cea1d Downloading 205.5MB + 1cc0ff6cea1d Downloading 205.5MB + 1cc0ff6cea1d Downloading 205.5MB + 1cc0ff6cea1d Downloading 205.5MB + 1cc0ff6cea1d Downloading 206.6MB + 1cc0ff6cea1d Downloading 206.6MB + 1cc0ff6cea1d Downloading 206.6MB + 1cc0ff6cea1d Downloading 206.6MB + 1cc0ff6cea1d Downloading 207.6MB + 1cc0ff6cea1d Downloading 207.6MB + 1cc0ff6cea1d Downloading 207.6MB + 1cc0ff6cea1d Downloading 207.6MB + 1cc0ff6cea1d Downloading 207.6MB + 1cc0ff6cea1d Downloading 207.7MB + 1cc0ff6cea1d Downloading 208.7MB + 1cc0ff6cea1d Downloading 208.7MB + 1cc0ff6cea1d Downloading 208.7MB + 1cc0ff6cea1d Downloading 208.7MB + 1cc0ff6cea1d Downloading 209.7MB + 1cc0ff6cea1d Downloading 209.7MB + 1cc0ff6cea1d Downloading 209.7MB + 1cc0ff6cea1d Downloading 209.7MB + 1cc0ff6cea1d Downloading 209.7MB + 1cc0ff6cea1d Downloading 210.8MB + 1cc0ff6cea1d Downloading 210.8MB + 1cc0ff6cea1d Downloading 210.8MB + 1cc0ff6cea1d Downloading 210.8MB + 1cc0ff6cea1d Downloading 210.8MB + 1cc0ff6cea1d Downloading 210.8MB + 1cc0ff6cea1d Downloading 211.8MB + 1cc0ff6cea1d Downloading 211.8MB + 1cc0ff6cea1d Downloading 211.8MB + 1cc0ff6cea1d Downloading 211.8MB + 1cc0ff6cea1d Downloading 211.8MB + 1cc0ff6cea1d Downloading 211.8MB + 1cc0ff6cea1d Downloading 212.9MB + 1cc0ff6cea1d Downloading 212.9MB + 1cc0ff6cea1d Downloading 212.9MB + 1cc0ff6cea1d Downloading 212.9MB + 1cc0ff6cea1d Downloading 213.9MB + 1cc0ff6cea1d Downloading 213.9MB + 1cc0ff6cea1d Downloading 213.9MB + 1cc0ff6cea1d Downloading 213.9MB + 1cc0ff6cea1d Downloading 213.9MB + 1cc0ff6cea1d Downloading 215MB + 1cc0ff6cea1d Downloading 215MB + 1cc0ff6cea1d Downloading 215MB + 1cc0ff6cea1d Downloading 215MB + 1cc0ff6cea1d Downloading 216MB + 1cc0ff6cea1d Downloading 216MB + 1cc0ff6cea1d Downloading 216MB + 1cc0ff6cea1d Downloading 216MB + 1cc0ff6cea1d Downloading 216MB + 1cc0ff6cea1d Downloading 216MB + 1cc0ff6cea1d Downloading 217.1MB + 1cc0ff6cea1d Downloading 217.1MB + 1cc0ff6cea1d Downloading 217.1MB + 1cc0ff6cea1d Downloading 217.1MB + 1cc0ff6cea1d Downloading 218.1MB + 1cc0ff6cea1d Downloading 218.1MB + 1cc0ff6cea1d Downloading 218.1MB + 1cc0ff6cea1d Downloading 218.1MB + 1cc0ff6cea1d Downloading 218.1MB + 1cc0ff6cea1d Downloading 219.2MB + 1cc0ff6cea1d Downloading 219.2MB + 1cc0ff6cea1d Downloading 219.2MB + 1cc0ff6cea1d Downloading 219.2MB + 1cc0ff6cea1d Downloading 220.2MB + 1cc0ff6cea1d Downloading 220.2MB + 1cc0ff6cea1d Downloading 220.2MB + 1cc0ff6cea1d Downloading 220.2MB + 1cc0ff6cea1d Downloading 221.2MB + 1cc0ff6cea1d Downloading 221.2MB + 1cc0ff6cea1d Downloading 221.2MB + 1cc0ff6cea1d Downloading 221.2MB + 1cc0ff6cea1d Downloading 222.3MB + 1cc0ff6cea1d Downloading 222.3MB + 1cc0ff6cea1d Downloading 222.3MB + 1cc0ff6cea1d Downloading 222.3MB + 1cc0ff6cea1d Downloading 223.3MB + 1cc0ff6cea1d Downloading 223.3MB + 1cc0ff6cea1d Downloading 223.3MB + 1cc0ff6cea1d Downloading 223.3MB + 1cc0ff6cea1d Downloading 224.4MB + 1cc0ff6cea1d Downloading 224.4MB + 1cc0ff6cea1d Downloading 224.4MB + 1cc0ff6cea1d Downloading 225.4MB + 1cc0ff6cea1d Downloading 225.4MB + 1cc0ff6cea1d Downloading 225.4MB + 1cc0ff6cea1d Downloading 226.5MB + 1cc0ff6cea1d Downloading 226.5MB + 1cc0ff6cea1d Downloading 226.5MB + 1cc0ff6cea1d Downloading 227.5MB + 1cc0ff6cea1d Downloading 227.5MB + 1cc0ff6cea1d Downloading 227.5MB + 1cc0ff6cea1d Downloading 228.6MB + 1cc0ff6cea1d Downloading 228.6MB + 1cc0ff6cea1d Downloading 228.6MB + 1cc0ff6cea1d Downloading 228.6MB + 1cc0ff6cea1d Downloading 229.6MB + 1cc0ff6cea1d Downloading 229.6MB + 1cc0ff6cea1d Downloading 229.6MB + 1cc0ff6cea1d Downloading 230.7MB + 1cc0ff6cea1d Downloading 230.7MB + 1cc0ff6cea1d Downloading 230.7MB + 1cc0ff6cea1d Downloading 231.7MB + 1cc0ff6cea1d Downloading 231.7MB + 1cc0ff6cea1d Downloading 231.7MB + 1cc0ff6cea1d Downloading 232.8MB + 1cc0ff6cea1d Downloading 232.8MB + 1cc0ff6cea1d Downloading 232.8MB + 1cc0ff6cea1d Downloading 233.8MB + 1cc0ff6cea1d Downloading 233.8MB + 1cc0ff6cea1d Downloading 233.8MB + 1cc0ff6cea1d Downloading 234.9MB + 1cc0ff6cea1d Downloading 234.9MB + 1cc0ff6cea1d Downloading 234.9MB + 1cc0ff6cea1d Downloading 234.9MB + 1cc0ff6cea1d Downloading 235.9MB + 1cc0ff6cea1d Downloading 235.9MB + 1cc0ff6cea1d Downloading 235.9MB + 1cc0ff6cea1d Downloading 235.9MB + 1cc0ff6cea1d Downloading 237MB + 1cc0ff6cea1d Downloading 237MB + 1cc0ff6cea1d Downloading 237MB + 1cc0ff6cea1d Downloading 237MB + 1cc0ff6cea1d Downloading 238MB + 1cc0ff6cea1d Downloading 238MB + 1cc0ff6cea1d Downloading 238MB + 1cc0ff6cea1d Downloading 238MB + 1cc0ff6cea1d Downloading 238MB + 1cc0ff6cea1d Downloading 239.1MB + 1cc0ff6cea1d Downloading 239.1MB + 1cc0ff6cea1d Downloading 239.1MB + 1cc0ff6cea1d Downloading 240.1MB + 1cc0ff6cea1d Downloading 240.1MB + 1cc0ff6cea1d Downloading 240.1MB + 1cc0ff6cea1d Downloading 240.1MB + 1cc0ff6cea1d Downloading 241.2MB + 1cc0ff6cea1d Downloading 241.2MB + 1cc0ff6cea1d Downloading 241.2MB + 1cc0ff6cea1d Downloading 241.2MB + 1cc0ff6cea1d Downloading 242.2MB + 1cc0ff6cea1d Downloading 242.2MB + 1cc0ff6cea1d Downloading 242.2MB + 1cc0ff6cea1d Downloading 242.2MB + 1cc0ff6cea1d Downloading 243.3MB + 1cc0ff6cea1d Downloading 243.3MB + 1cc0ff6cea1d Downloading 243.3MB + 1cc0ff6cea1d Downloading 243.3MB + 1cc0ff6cea1d Downloading 244.3MB + 1cc0ff6cea1d Downloading 244.3MB + 1cc0ff6cea1d Downloading 244.3MB + 1cc0ff6cea1d Downloading 245.4MB + 1cc0ff6cea1d Downloading 245.4MB + 1cc0ff6cea1d Downloading 245.4MB + 1cc0ff6cea1d Downloading 245.4MB + 1cc0ff6cea1d Downloading 246.4MB + 1cc0ff6cea1d Downloading 246.4MB + 1cc0ff6cea1d Downloading 246.4MB + 1cc0ff6cea1d Downloading 246.4MB + 1cc0ff6cea1d Downloading 246.4MB + 1cc0ff6cea1d Downloading 247.5MB + 1cc0ff6cea1d Downloading 247.5MB + 1cc0ff6cea1d Downloading 247.5MB + 1cc0ff6cea1d Downloading 248.5MB + 1cc0ff6cea1d Downloading 248.5MB + 1cc0ff6cea1d Downloading 249.6MB + 1cc0ff6cea1d Downloading 249.6MB + 1cc0ff6cea1d Downloading 249.6MB + 1cc0ff6cea1d Downloading 249.6MB + 1cc0ff6cea1d Downloading 250.6MB + 1cc0ff6cea1d Downloading 250.6MB + 1cc0ff6cea1d Downloading 251.7MB + 1cc0ff6cea1d Downloading 251.7MB + 1cc0ff6cea1d Downloading 251.7MB + 1cc0ff6cea1d Downloading 251.7MB + 1cc0ff6cea1d Downloading 251.7MB + 1cc0ff6cea1d Downloading 252.7MB + 1cc0ff6cea1d Downloading 252.7MB + 1cc0ff6cea1d Downloading 252.7MB + 1cc0ff6cea1d Downloading 252.7MB + 1cc0ff6cea1d Downloading 253.8MB + 1cc0ff6cea1d Downloading 253.8MB + 1cc0ff6cea1d Downloading 253.8MB + 1cc0ff6cea1d Downloading 254.8MB + 1cc0ff6cea1d Downloading 254.8MB + 1cc0ff6cea1d Downloading 254.8MB + 1cc0ff6cea1d Downloading 254.8MB + 1cc0ff6cea1d Downloading 255.9MB + 1cc0ff6cea1d Downloading 255.9MB + 1cc0ff6cea1d Downloading 255.9MB + 1cc0ff6cea1d Downloading 255.9MB + 1cc0ff6cea1d Downloading 256.9MB + 1cc0ff6cea1d Downloading 256.9MB + 1cc0ff6cea1d Downloading 256.9MB + 1cc0ff6cea1d Downloading 257.9MB + 1cc0ff6cea1d Downloading 257.9MB + 1cc0ff6cea1d Downloading 259MB + 1cc0ff6cea1d Downloading 259MB + 1cc0ff6cea1d Downloading 259MB + 1cc0ff6cea1d Downloading 260MB + 1cc0ff6cea1d Downloading 260MB + 1cc0ff6cea1d Downloading 260MB + 1cc0ff6cea1d Downloading 261.1MB + 1cc0ff6cea1d Downloading 261.1MB + 1cc0ff6cea1d Downloading 261.1MB + 1cc0ff6cea1d Downloading 262.1MB + 1cc0ff6cea1d Downloading 262.1MB + 1cc0ff6cea1d Downloading 262.1MB + 1cc0ff6cea1d Downloading 262.1MB + 1cc0ff6cea1d Downloading 263.2MB + 1cc0ff6cea1d Downloading 263.2MB + 1cc0ff6cea1d Downloading 263.2MB + 1cc0ff6cea1d Downloading 263.2MB + 1cc0ff6cea1d Downloading 264.2MB + 1cc0ff6cea1d Downloading 264.2MB + 1cc0ff6cea1d Downloading 264.2MB + 1cc0ff6cea1d Downloading 265.3MB + 1cc0ff6cea1d Downloading 265.3MB + 1cc0ff6cea1d Downloading 265.3MB + 1cc0ff6cea1d Downloading 266.3MB + 1cc0ff6cea1d Downloading 266.3MB + 1cc0ff6cea1d Downloading 266.3MB + 1cc0ff6cea1d Downloading 266.3MB + 1cc0ff6cea1d Downloading 266.3MB + 1cc0ff6cea1d Downloading 267.4MB + 1cc0ff6cea1d Downloading 267.4MB + 1cc0ff6cea1d Downloading 267.4MB + 1cc0ff6cea1d Downloading 267.4MB + 1cc0ff6cea1d Downloading 268.4MB + 1cc0ff6cea1d Downloading 268.4MB + 1cc0ff6cea1d Downloading 268.4MB + 1cc0ff6cea1d Downloading 268.4MB + 1cc0ff6cea1d Downloading 268.4MB + 1cc0ff6cea1d Downloading 268.4MB + 1cc0ff6cea1d Downloading 269.5MB + 1cc0ff6cea1d Downloading 269.5MB + 1cc0ff6cea1d Downloading 269.5MB + 1cc0ff6cea1d Downloading 269.5MB + 1cc0ff6cea1d Downloading 269.5MB + 1cc0ff6cea1d Downloading 270.5MB + 1cc0ff6cea1d Downloading 270.5MB + 1cc0ff6cea1d Downloading 270.5MB + 1cc0ff6cea1d Downloading 270.5MB + 1cc0ff6cea1d Downloading 271.6MB + 1cc0ff6cea1d Downloading 271.6MB + 1cc0ff6cea1d Downloading 271.6MB + 1cc0ff6cea1d Downloading 271.6MB + 1cc0ff6cea1d Downloading 271.6MB + 1cc0ff6cea1d Downloading 272.6MB + 1cc0ff6cea1d Downloading 272.6MB + 1cc0ff6cea1d Downloading 272.6MB + 1cc0ff6cea1d Downloading 272.6MB + 1cc0ff6cea1d Downloading 273.7MB + 1cc0ff6cea1d Downloading 273.7MB + 1cc0ff6cea1d Downloading 273.7MB + 1cc0ff6cea1d Downloading 273.7MB + 1cc0ff6cea1d Downloading 274.7MB + 1cc0ff6cea1d Downloading 274.7MB + 1cc0ff6cea1d Downloading 274.7MB + 1cc0ff6cea1d Downloading 274.7MB + 1cc0ff6cea1d Downloading 275.8MB + 1cc0ff6cea1d Downloading 275.8MB + 1cc0ff6cea1d Downloading 275.8MB + 1cc0ff6cea1d Downloading 275.8MB + 1cc0ff6cea1d Downloading 275.8MB + 1cc0ff6cea1d Downloading 275.8MB + 1cc0ff6cea1d Downloading 275.8MB + 1cc0ff6cea1d Downloading 276.8MB + 1cc0ff6cea1d Downloading 276.8MB + 1cc0ff6cea1d Downloading 276.8MB + 1cc0ff6cea1d Downloading 276.8MB + 1cc0ff6cea1d Downloading 276.8MB + 1cc0ff6cea1d Downloading 277.9MB + 1cc0ff6cea1d Downloading 277.9MB + 1cc0ff6cea1d Downloading 277.9MB + 1cc0ff6cea1d Downloading 277.9MB + 1cc0ff6cea1d Downloading 278.9MB + 1cc0ff6cea1d Downloading 278.9MB + 1cc0ff6cea1d Downloading 278.9MB + 1cc0ff6cea1d Downloading 278.9MB + 1cc0ff6cea1d Downloading 280MB + 1cc0ff6cea1d Downloading 280MB + 1cc0ff6cea1d Downloading 280MB + 1cc0ff6cea1d Downloading 281MB + 1cc0ff6cea1d Downloading 281MB + 1cc0ff6cea1d Downloading 281MB + 1cc0ff6cea1d Downloading 281MB + 1cc0ff6cea1d Downloading 282.1MB + 1cc0ff6cea1d Downloading 282.1MB + 1cc0ff6cea1d Downloading 282.1MB + 1cc0ff6cea1d Downloading 282.1MB + 1cc0ff6cea1d Downloading 283.1MB + 1cc0ff6cea1d Downloading 283.1MB + 1cc0ff6cea1d Downloading 283.1MB + 1cc0ff6cea1d Downloading 284.2MB + 1cc0ff6cea1d Downloading 284.2MB + 1cc0ff6cea1d Downloading 284.2MB + 1cc0ff6cea1d Downloading 285.2MB + 1cc0ff6cea1d Downloading 285.2MB + 1cc0ff6cea1d Downloading 285.2MB + 1cc0ff6cea1d Downloading 285.2MB + 1cc0ff6cea1d Downloading 286.3MB + 1cc0ff6cea1d Downloading 286.3MB + 1cc0ff6cea1d Downloading 286.3MB + 1cc0ff6cea1d Downloading 286.3MB + 1cc0ff6cea1d Downloading 287.3MB + 1cc0ff6cea1d Downloading 287.3MB + 1cc0ff6cea1d Downloading 287.3MB + 1cc0ff6cea1d Downloading 288.4MB + 1cc0ff6cea1d Downloading 288.4MB + 1cc0ff6cea1d Downloading 288.4MB + 1cc0ff6cea1d Downloading 288.4MB + 1cc0ff6cea1d Downloading 289.4MB + 1cc0ff6cea1d Downloading 289.4MB + 1cc0ff6cea1d Downloading 289.4MB + 1cc0ff6cea1d Downloading 290.5MB + 1cc0ff6cea1d Downloading 290.5MB + 1cc0ff6cea1d Downloading 290.5MB + 1cc0ff6cea1d Downloading 290.5MB + 1cc0ff6cea1d Downloading 291.5MB + 1cc0ff6cea1d Downloading 291.5MB + 1cc0ff6cea1d Downloading 291.5MB + 1cc0ff6cea1d Downloading 291.5MB + 1cc0ff6cea1d Downloading 291.5MB + 1cc0ff6cea1d Downloading 292.6MB + 1cc0ff6cea1d Downloading 292.6MB + 1cc0ff6cea1d Downloading 292.6MB + 1cc0ff6cea1d Downloading 292.6MB + 1cc0ff6cea1d Downloading 292.6MB + 1cc0ff6cea1d Downloading 292.6MB + 1cc0ff6cea1d Downloading 293.6MB + 1cc0ff6cea1d Downloading 293.6MB + 1cc0ff6cea1d Downloading 293.6MB + 1cc0ff6cea1d Downloading 293.6MB + 1cc0ff6cea1d Downloading 293.6MB + 1cc0ff6cea1d Downloading 293.6MB + 1cc0ff6cea1d Downloading 294.6MB + 1cc0ff6cea1d Downloading 294.6MB + 1cc0ff6cea1d Downloading 294.6MB + 1cc0ff6cea1d Downloading 294.6MB + 1cc0ff6cea1d Downloading 294.6MB + 1cc0ff6cea1d Downloading 294.6MB + 1cc0ff6cea1d Downloading 294.6MB + 1cc0ff6cea1d Downloading 295.7MB + 1cc0ff6cea1d Downloading 295.7MB + 1cc0ff6cea1d Downloading 295.7MB + 1cc0ff6cea1d Downloading 295.7MB + 1cc0ff6cea1d Downloading 295.7MB + 1cc0ff6cea1d Downloading 295.7MB + 1cc0ff6cea1d Downloading 296.7MB + 1cc0ff6cea1d Downloading 296.7MB + 1cc0ff6cea1d Downloading 296.7MB + 1cc0ff6cea1d Downloading 296.7MB + 1cc0ff6cea1d Downloading 296.7MB + 1cc0ff6cea1d Downloading 296.7MB + 1cc0ff6cea1d Downloading 297.8MB + 1cc0ff6cea1d Downloading 297.8MB + 1cc0ff6cea1d Downloading 297.8MB + 1cc0ff6cea1d Downloading 297.8MB + 1cc0ff6cea1d Downloading 297.8MB + 1cc0ff6cea1d Downloading 298.8MB + 1cc0ff6cea1d Downloading 298.8MB + 1cc0ff6cea1d Downloading 298.8MB + 1cc0ff6cea1d Downloading 298.8MB + 1cc0ff6cea1d Downloading 299.9MB + 1cc0ff6cea1d Downloading 299.9MB + 1cc0ff6cea1d Downloading 299.9MB + 1cc0ff6cea1d Downloading 299.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 300.9MB + 1cc0ff6cea1d Downloading 302MB + 1cc0ff6cea1d Downloading 302MB + 1cc0ff6cea1d Downloading 302MB + 1cc0ff6cea1d Downloading 302MB + 1cc0ff6cea1d Downloading 302MB + 1cc0ff6cea1d Downloading 303MB + 1cc0ff6cea1d Downloading 303MB + 1cc0ff6cea1d Downloading 303MB + 1cc0ff6cea1d Downloading 304.1MB + 1cc0ff6cea1d Downloading 304.1MB + 1cc0ff6cea1d Downloading 304.1MB + 1cc0ff6cea1d Downloading 305.1MB + 1cc0ff6cea1d Downloading 305.1MB + 1cc0ff6cea1d Downloading 305.1MB + 1cc0ff6cea1d Downloading 306.2MB + 1cc0ff6cea1d Downloading 306.2MB + 1cc0ff6cea1d Downloading 306.2MB + 1cc0ff6cea1d Downloading 307.2MB + 1cc0ff6cea1d Download complete 0B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 1B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 2B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 1cc0ff6cea1d Extracting 3B + 0f1eecfe1b47 Extracting 1B + 1cc0ff6cea1d Pull complete 0B + 1c78c8e19058 Pull complete 0B + 6721902c3fd6 Pull complete 0B + 0f1eecfe1b47 Pull complete 0B + Image grafana/grafana:13.0.2 Pulled + Image quicknotes:lab6 Building +#1 [internal] load local bake definitions +#1 reading from stdin 542B done +#1 DONE 0.0s + +#2 [internal] load build definition from Dockerfile +#2 transferring dockerfile: 515B done +#2 DONE 0.0s + +#3 resolve image config for docker-image://docker.io/docker/dockerfile:1 +#3 DONE 6.9s + +#4 docker-image://docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 +#4 resolve docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 done +#4 CACHED + +#5 [internal] load metadata for docker.io/library/busybox:1.36-musl +#5 ... + +#6 [internal] load metadata for gcr.io/distroless/static-debian12:nonroot +#6 DONE 0.9s + +#5 [internal] load metadata for docker.io/library/busybox:1.36-musl +#5 DONE 1.0s + +#7 [internal] load metadata for docker.io/library/golang:1.24-alpine +#7 DONE 1.0s + +#8 [internal] load .dockerignore +#8 transferring context: 2B done +#8 DONE 0.0s + +#9 [builder 1/6] FROM docker.io/library/golang:1.24-alpine@sha256:8bee1901f1e530bfb4a7850aa7a479d17ae3a18beb6e09064ed54cfd245b7191 +#9 resolve docker.io/library/golang:1.24-alpine@sha256:8bee1901f1e530bfb4a7850aa7a479d17ae3a18beb6e09064ed54cfd245b7191 0.0s done +#9 DONE 0.0s + +#10 [stage-2 1/4] FROM gcr.io/distroless/static-debian12:nonroot@sha256:d093aa3e30dbadd3efe1310db061a14da60299baff8450a17fe0ccc514a16639 +#10 resolve gcr.io/distroless/static-debian12:nonroot@sha256:d093aa3e30dbadd3efe1310db061a14da60299baff8450a17fe0ccc514a16639 0.0s done +#10 DONE 0.0s + +#11 [busybox 1/1] FROM docker.io/library/busybox:1.36-musl@sha256:3c6ae8008e2c2eedd141725c30b20d9c36b026eb796688f88205845ef17aa213 +#11 resolve docker.io/library/busybox:1.36-musl@sha256:3c6ae8008e2c2eedd141725c30b20d9c36b026eb796688f88205845ef17aa213 0.0s done +#11 DONE 0.0s + +#12 [internal] load build context +#12 transferring context: 909B done +#12 DONE 0.0s + +#13 [builder 5/6] COPY . . +#13 CACHED + +#14 [builder 2/6] WORKDIR /src +#14 CACHED + +#15 [builder 3/6] COPY go.mod ./ +#15 CACHED + +#16 [stage-2 3/4] COPY --from=builder /src/seed.json /seed.json +#16 CACHED + +#17 [stage-2 2/4] COPY --from=builder /quicknotes /quicknotes +#17 CACHED + +#18 [builder 4/6] RUN go mod download +#18 CACHED + +#19 [builder 6/6] RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags='-s -w' -o /quicknotes . +#19 CACHED + +#20 [stage-2 4/4] COPY --from=busybox /bin/busybox /busybox +#20 CACHED + +#21 exporting to image +#21 exporting layers done +#21 exporting manifest sha256:83da2b02f883b1cbcacda2943165c314e5a22658c8fd6df73146b64d2a75a08d done +#21 exporting config sha256:55ee3c6a2cf57ac962258865a12873a7cc7a6114ed1c7c2ebf136cdaeebcd00e done +#21 exporting attestation manifest sha256:9c36feab00808795dc712a55e43b6d92070e6f32f13fa105202bbd75bd715759 done +#21 exporting manifest list sha256:15f1a6f6bf4d265cfc64be086afb2c4876d8bdce6ee5fb666ea8da5b93bba297 done +#21 naming to docker.io/library/quicknotes:lab6 done +#21 unpacking to docker.io/library/quicknotes:lab6 done +#21 DONE 0.1s + +#22 resolving provenance for metadata file +#22 DONE 0.0s + Image quicknotes:lab6 Built + Network devops-intro_default Creating + Network devops-intro_default Created + Container devops-intro-volume-init-1 Creating + Container devops-intro-volume-init-1 Created + Container devops-intro-quicknotes-1 Creating + Container devops-intro-quicknotes-1 Created + Container devops-intro-prometheus-1 Creating + Container devops-intro-prometheus-1 Created + Container devops-intro-grafana-1 Creating + Container devops-intro-grafana-1 Created + Container devops-intro-volume-init-1 Starting + Container devops-intro-volume-init-1 Started + Container devops-intro-volume-init-1 Waiting + Container devops-intro-volume-init-1 Exited + Container devops-intro-quicknotes-1 Starting + Container devops-intro-quicknotes-1 Started + Container devops-intro-quicknotes-1 Waiting + Container devops-intro-quicknotes-1 Healthy + Container devops-intro-prometheus-1 Starting + Container devops-intro-prometheus-1 Started + Container devops-intro-grafana-1 Starting + Container devops-intro-grafana-1 Started diff --git a/submissions/attachments/lab8/grafana-dashboard-meta.txt b/submissions/attachments/lab8/grafana-dashboard-meta.txt new file mode 100644 index 000000000..4a10bb79a --- /dev/null +++ b/submissions/attachments/lab8/grafana-dashboard-meta.txt @@ -0,0 +1 @@ +dashboard: QuickNotes Golden Signals panels: 4 diff --git a/submissions/attachments/lab8/grafana-dashboard-search.json b/submissions/attachments/lab8/grafana-dashboard-search.json new file mode 100644 index 000000000..da8cc8488 --- /dev/null +++ b/submissions/attachments/lab8/grafana-dashboard-search.json @@ -0,0 +1 @@ +[{"id":380486399176704,"uid":"ffqq3km8x2gaof","orgId":1,"title":"QuickNotes","uri":"db/quicknotes","url":"/dashboards/f/ffqq3km8x2gaof/quicknotes","slug":"","type":"dash-folder","tags":[],"isStarred":false,"sortMeta":0,"isDeleted":false},{"id":380486440366080,"uid":"quicknotes-golden-signals","orgId":1,"title":"QuickNotes Golden Signals","uri":"db/quicknotes-golden-signals","url":"/d/quicknotes-golden-signals/quicknotes-golden-signals","slug":"","type":"dash-db","tags":["golden-signals","quicknotes"],"isStarred":false,"folderId":380486399176704,"folderUid":"ffqq3km8x2gaof","folderTitle":"QuickNotes","folderUrl":"/dashboards/f/ffqq3km8x2gaof/quicknotes","sortMeta":0,"isDeleted":false}] \ No newline at end of file diff --git a/submissions/attachments/lab8/prometheus-alerts-firing.json b/submissions/attachments/lab8/prometheus-alerts-firing.json new file mode 100644 index 000000000..08a6af352 --- /dev/null +++ b/submissions/attachments/lab8/prometheus-alerts-firing.json @@ -0,0 +1,21 @@ +{ + "status": "success", + "data": { + "alerts": [ + { + "labels": { + "alertname": "HighHTTPErrorRate", + "severity": "page" + }, + "annotations": { + "description": "More than 5% of HTTP responses are 4xx/5xx for 5 minutes.", + "runbook_url": "docs/runbook/high-error-rate.md", + "summary": "QuickNotes HTTP error ratio exceeds 5%" + }, + "state": "firing", + "activeAt": "2026-06-30T19:15:59.892443532Z", + "value": "3.1804465902232953e-01" + } + ] + } +} diff --git a/submissions/attachments/lab8/prometheus-alerts.json b/submissions/attachments/lab8/prometheus-alerts.json new file mode 100644 index 000000000..3113987ae --- /dev/null +++ b/submissions/attachments/lab8/prometheus-alerts.json @@ -0,0 +1,21 @@ +{ + "status": "success", + "data": { + "alerts": [ + { + "labels": { + "alertname": "HighHTTPErrorRate", + "severity": "page" + }, + "annotations": { + "description": "More than 5% of HTTP responses are 4xx/5xx for 5 minutes.", + "runbook_url": "docs/runbook/high-error-rate.md", + "summary": "QuickNotes HTTP error ratio exceeds 5%" + }, + "state": "pending", + "activeAt": "2026-06-30T19:15:59.892443532Z", + "value": "1.7777777777777778e-01" + } + ] + } +} diff --git a/submissions/attachments/lab8/prometheus-targets.json b/submissions/attachments/lab8/prometheus-targets.json new file mode 100644 index 000000000..7b2d33e79 --- /dev/null +++ b/submissions/attachments/lab8/prometheus-targets.json @@ -0,0 +1,34 @@ +{ + "status": "success", + "data": { + "activeTargets": [ + { + "discoveredLabels": { + "__address__": "quicknotes:8080", + "__metrics_path__": "/metrics", + "__scheme__": "http", + "__scrape_interval__": "15s", + "__scrape_timeout__": "10s", + "job": "quicknotes" + }, + "labels": { + "instance": "quicknotes:8080", + "job": "quicknotes" + }, + "scrapePool": "quicknotes", + "scrapeUrl": "http://quicknotes:8080/metrics", + "globalUrl": "http://quicknotes:8080/metrics", + "lastError": "", + "lastScrape": "2026-06-30T19:15:55.509592551Z", + "lastScrapeDuration": 0.00339975, + "health": "up", + "scrapeInterval": "15s", + "scrapeTimeout": "10s" + } + ], + "droppedTargets": [], + "droppedTargetCounts": { + "quicknotes": 0 + } + } +} diff --git a/submissions/attachments/lab8/targets-health.txt b/submissions/attachments/lab8/targets-health.txt new file mode 100644 index 000000000..389d6a347 --- /dev/null +++ b/submissions/attachments/lab8/targets-health.txt @@ -0,0 +1 @@ +['up'] diff --git a/submissions/attachments/lab8/traffic-gen.log b/submissions/attachments/lab8/traffic-gen.log new file mode 100644 index 000000000..1850f6fc6 --- /dev/null +++ b/submissions/attachments/lab8/traffic-gen.log @@ -0,0 +1,202 @@ +Generating traffic against http://localhost:8080 +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"}] +{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":5,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"}] +{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":6,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"}] +{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":7,"status":"ok"} +[{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"}] +{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":8,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"}] +{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":9,"status":"ok"} +[{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"}] +{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":10,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"}] +{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":11,"status":"ok"} +[{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"}] +{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":12,"status":"ok"} +[{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"}] +{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":13,"status":"ok"} +[{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"}] +{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":14,"status":"ok"} +[{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"}] +{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":15,"status":"ok"} +[{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"}] +{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":16,"status":"ok"} +[{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"}] +{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":17,"status":"ok"} +[{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"}] +{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":18,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"}] +{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":19,"status":"ok"} +[{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"}] +{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":20,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"}] +{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":21,"status":"ok"} +[{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"}] +{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":22,"status":"ok"} +[{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"}] +{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":23,"status":"ok"} +[{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"}] +{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":24,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"}] +{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":25,"status":"ok"} +[{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"}] +{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":26,"status":"ok"} +[{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"}] +{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":27,"status":"ok"} +[{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"}] +{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":28,"status":"ok"} +[{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"}] +{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":29,"status":"ok"} +[{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"}] +{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":30,"status":"ok"} +[{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"}] +{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":31,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"}] +{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":32,"status":"ok"} +[{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"}] +{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":33,"status":"ok"} +[{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"}] +{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":34,"status":"ok"} +[{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"}] +{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":35,"status":"ok"} +[{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"}] +{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":36,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"}] +{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":37,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"}] +{"id":38,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.58127676Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":38,"status":"ok"} +[{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":38,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.58127676Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"}] +{"id":39,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.627890301Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":39,"status":"ok"} +[{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":38,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.58127676Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":39,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.627890301Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"}] +{"id":40,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.67946451Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":40,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":38,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.58127676Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":39,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.627890301Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":40,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.67946451Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"}] +{"id":41,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.730004176Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":41,"status":"ok"} +[{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":38,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.58127676Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":39,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.627890301Z"},{"id":41,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.730004176Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":40,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.67946451Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"}] +{"id":42,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.806447551Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":42,"status":"ok"} +[{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":38,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.58127676Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":39,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.627890301Z"},{"id":41,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.730004176Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"},{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":42,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.806447551Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":40,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.67946451Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"}] +{"id":43,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.861242135Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":43,"status":"ok"} +[{"id":3,"title":"DevOps mantra","body":"If it hurts, do it more often.","created_at":"2026-01-15T10:10:00Z"},{"id":14,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.384287176Z"},{"id":15,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.429321259Z"},{"id":18,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.590758092Z"},{"id":29,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.156912593Z"},{"id":42,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.806447551Z"},{"id":43,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.861242135Z"},{"id":8,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.115213467Z"},{"id":24,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.893764009Z"},{"id":30,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.202683218Z"},{"id":31,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.250643676Z"},{"id":40,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.67946451Z"},{"id":11,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.249325926Z"},{"id":25,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.941970843Z"},{"id":26,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.011572843Z"},{"id":37,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.536459259Z"},{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"},{"id":4,"title":"Endpoint cheat-sheet","body":"GET /notes GET /notes/{id} POST /notes DELETE /notes/{id} GET /health GET /metrics","created_at":"2026-01-15T10:15:00Z"},{"id":33,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.348894176Z"},{"id":34,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.397618968Z"},{"id":36,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.489431468Z"},{"id":10,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.205113092Z"},{"id":27,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.066095051Z"},{"id":32,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.299434634Z"},{"id":9,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.161303051Z"},{"id":13,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.340506384Z"},{"id":23,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.840111092Z"},{"id":35,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.443662593Z"},{"id":38,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.58127676Z"},{"id":7,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.067799009Z"},{"id":12,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.295360009Z"},{"id":17,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.540106217Z"},{"id":20,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.691560217Z"},{"id":28,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.111514301Z"},{"id":5,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:38.971845884Z"},{"id":6,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.020578009Z"},{"id":16,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.474126676Z"},{"id":19,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.643086509Z"},{"id":21,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.745610009Z"},{"id":22,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:39.792403384Z"},{"id":39,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.627890301Z"},{"id":41,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.730004176Z"},{"id":2,"title":"Read app/main.go first","body":"Start by understanding the entry point — env vars, signal handling, graceful shutdown.","created_at":"2026-01-15T10:05:00Z"}] +{"id":44,"title":"load","body":"traffic","created_at":"2026-06-30T19:15:40.916458218Z"} +{"id":1,"title":"Welcome to QuickNotes","body":"This is the project you'll containerize, deploy, monitor, and harden across all 10 labs.","created_at":"2026-01-15T10:00:00Z"} +{"error":"invalid JSON body"} +{"notes":44,"status":"ok"} +done 200 requests diff --git a/submissions/attachments/lab8/verify.txt b/submissions/attachments/lab8/verify.txt new file mode 100644 index 000000000..10c622e64 --- /dev/null +++ b/submissions/attachments/lab8/verify.txt @@ -0,0 +1,23 @@ +=== curl health === +{"notes":44,"status":"ok"} + +=== targets health === +['up'] +=== alert state === +[('HighHTTPErrorRate', 'firing', '3.1725888324873097e-01')] +=== error rate query === +{ + "status": "success", + "data": { + "resultType": "vector", + "result": [ + { + "metric": {}, + "value": [ + 1782847356.751, + "31.7258883248731" + ] + } + ] + } +} diff --git a/submissions/lab8.md b/submissions/lab8.md new file mode 100644 index 000000000..d2c724ba0 --- /dev/null +++ b/submissions/lab8.md @@ -0,0 +1,239 @@ +# Lab 8 submission + +**Host:** Apple Silicon Mac. **Stack:** Lab 6 QuickNotes + Prometheus v3.2.1 + Grafana 13.0.2 (Compose). + +--- + +## Task 1 — Prometheus + Grafana + Golden Signals Dashboard + +### Layout + +```text +monitoring/ +├── prometheus/ +│ ├── prometheus.yml +│ └── alert.rules.yml +└── grafana/ + ├── dashboards/ + │ └── golden-signals.json + └── provisioning/ + ├── datasources/datasource.yml + └── dashboards/dashboard.yml +``` + +### `monitoring/prometheus/prometheus.yml` + +```yaml +global: + scrape_interval: 15s + evaluation_interval: 15s + +rule_files: + - /etc/prometheus/alert.rules.yml + +scrape_configs: + - job_name: quicknotes + static_configs: + - targets: + - quicknotes:8080 + metrics_path: /metrics +``` + +### `monitoring/grafana/provisioning/datasources/datasource.yml` + +```yaml +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + uid: prometheus + access: proxy + url: http://prometheus:9090 + isDefault: true + editable: false +``` + +### `monitoring/grafana/provisioning/dashboards/dashboard.yml` + +```yaml +apiVersion: 1 + +providers: + - name: golden-signals + orgId: 1 + folder: QuickNotes + type: file + disableDeletion: false + updateIntervalSeconds: 30 + allowUiUpdates: true + options: + path: /var/lib/grafana/dashboards +``` + +### Compose extension (`compose.yaml`) + +Added `prometheus` (port **9090**) and `grafana` (port **3000**): + +- Prometheus mounts `prometheus.yml` + `alert.rules.yml` read-only +- `depends_on: quicknotes: condition: service_healthy` +- Grafana mounts provisioning + dashboards; admin password via `GF_SECURITY_ADMIN_PASSWORD=lab8-grafana-dev` (not default `admin/admin`) + +Full file: [`compose.yaml`](../compose.yaml) + +### Golden signals panels + +| Panel | PromQL | +|-------|--------| +| **Latency** (proxy — no histogram) | `rate(quicknotes_http_requests_total[5m])` | +| **Traffic** | `sum(rate(quicknotes_http_requests_total[5m]))` | +| **Errors** | `100 * sum(rate(quicknotes_http_responses_by_code_total{code=~"4..\|5.."}[5m])) / clamp_min(sum(rate(quicknotes_http_requests_total[5m])), 0.001)` | +| **Saturation** | `quicknotes_notes_total` | + +Dashboard JSON: [`monitoring/grafana/dashboards/golden-signals.json`](../monitoring/grafana/dashboards/golden-signals.json) + +### Verify + +```bash +docker compose up --build -d +./scripts/lab8-generate-traffic.sh +./scripts/lab8-capture-evidence.sh +``` + +**Targets health:** + +``` +$ curl -s http://localhost:9090/api/v1/targets | jq '.data.activeTargets[].health' +["up"] +``` + +Evidence: [`targets-health.txt`](attachments/lab8/targets-health.txt), [`prometheus-targets.json`](attachments/lab8/prometheus-targets.json), [`compose-ps.txt`](attachments/lab8/compose-ps.txt), [`verify.txt`](attachments/lab8/verify.txt) + +Grafana dashboard auto-loaded: **QuickNotes Golden Signals** (4 panels) in folder **QuickNotes** — verified via API: [`grafana-dashboard-meta.txt`](attachments/lab8/grafana-dashboard-meta.txt), [`grafana-dashboard-search.json`](attachments/lab8/grafana-dashboard-search.json). + +Login: http://localhost:3000 — `admin` / `lab8-grafana-dev` + +### Design questions (a–d) + +**a) Pull vs push** + +Prometheus **pulls** metrics by HTTP-scraping `/metrics` on a schedule. QuickNotes must be reachable **from Prometheus** on the Compose network (`quicknotes:8080`); QuickNotes does not need to know Prometheus exists. If Prometheus cannot scrape, the target goes **down** (`up=0`) and metrics go stale — you lose visibility but the app may still serve users. + +**b) `scrape_interval: 15s` trade-offs** + +At **5s**: finer resolution but 3× more scrape load, larger TSDB, noisier `rate()` on low-traffic counters. At **5m**: very coarse graphs, slow alert detection, `rate()` windows need to be wide — you can miss short incidents entirely. + +**c) `rate()` vs `irate()` vs `delta()` for Traffic** + +**`rate()`** — per-second average over the range window; smooth, right for dashboards and alerts on counters. **`irate()`** — instant rate from last two points; spiky, good for debugging spikes. **`delta()`** — raw increase over window, not normalized per second. Traffic panel uses **`rate()`** because we want a stable requests-per-second view. + +**d) Why provision Grafana from files** + +Dashboards and datasources become **version-controlled** and reproducible: `docker compose up` on any machine yields the same monitoring stack without manual UI clicks. Reviewers and teammates get identical panels; changes go through PR like application code. + +--- + +## Task 2 — Alert + Runbook + +### Alert rule (`monitoring/prometheus/alert.rules.yml`) + +```yaml +groups: + - name: quicknotes + rules: + - alert: HighHTTPErrorRate + expr: | + ( + sum(rate(quicknotes_http_responses_by_code_total{code=~"4..|5.."}[5m])) + / + clamp_min(sum(rate(quicknotes_http_requests_total[5m])), 0.001) + ) > 0.05 + for: 5m + labels: + severity: page + annotations: + summary: QuickNotes HTTP error ratio exceeds 5% + runbook_url: docs/runbook/high-error-rate.md + description: More than 5% of HTTP responses are 4xx/5xx for 5 minutes. +``` + +### Runbook + +Full document: [`docs/runbook/high-error-rate.md`](../docs/runbook/high-error-rate.md) + +Sections: what the alert means, triage steps (≥3), mitigations (≥2), post-incident (links Lecture 1 postmortem). + +### Trigger alert deliberately + +```bash +./scripts/lab8-trigger-alert.sh http://localhost:8080 360 +# ~33% errors (1 bad POST + 2 good per loop) sustained ≥6 min +# Watch: http://localhost:9090/alerts → Pending → Firing +./scripts/lab8-capture-evidence.sh # saves prometheus-alerts.json +``` + +Evidence: [`alert-trigger.log`](attachments/lab8/alert-trigger.log), [`prometheus-alerts-firing.json`](attachments/lab8/prometheus-alerts-firing.json), [`alert-firing.txt`](attachments/lab8/alert-firing.txt) + +``` +$ curl -s http://localhost:9090/api/v1/alerts | jq '.data.alerts[] | {name: .labels.alertname, state, value}' +{ + "name": "HighHTTPErrorRate", + "state": "firing", + "value": "0.317" +} +``` + +Error ratio during firing: **~31.7%** (well above 5% threshold). + +### Design questions (e–g) + +**e) Why sustained 5 minutes?** + +A single malformed request or flaky client should not page anyone. **`for: 5m`** requires the error ratio to stay above threshold across multiple evaluation cycles — real user-impacting degradation, not noise. + +**f) Symptom vs cause alert** + +**Symptom:** high HTTP error ratio (what users feel). **Cause example:** `container_cpu_usage > 90%` — CPU can be high while errors are zero, or errors can happen at normal CPU (bad deploy, corrupt JSON file). Cause alerts page on internal state that may not correlate with user pain → alert fatigue. + +**g) Alert fatigue threshold** + +If **>30% of pages** fire when users were **not** affected (false positive rate from on-call survey or incident review), the alert is too noisy — widen `for:`, raise threshold, or fix the client causing 4xx bursts. + +--- + +## Bonus — Synthetic Monitoring + +**Not attempted** — requires a public URL (ngrok/cloudflared) and Checkly account. Can be added after Lab 10 deploy or with a free tunnel + Checkly API check from 2 regions. + +--- + +## Helper scripts + +| Script | Purpose | +|--------|---------| +| [`scripts/lab8-generate-traffic.sh`](../scripts/lab8-generate-traffic.sh) | ~200 mixed requests | +| [`scripts/lab8-trigger-alert.sh`](../scripts/lab8-trigger-alert.sh) | Sustained 4xx injection | +| [`scripts/lab8-capture-evidence.sh`](../scripts/lab8-capture-evidence.sh) | Dump targets/alerts JSON | + +--- + +## Quick start + +```bash +# Start Docker Desktop first, then: +cd /Users/markovav/dev/DevOps-Intro +git checkout feature/lab8 +docker compose up --build -d +./scripts/lab8-generate-traffic.sh +./scripts/lab8-capture-evidence.sh +open http://localhost:3000 # Grafana +open http://localhost:9090 # Prometheus +``` + +## Cleanup + +```bash +docker compose down # keep volume: omit -v +docker compose down -v # remove quicknotes data volume +# Optional: docker rmi prom/prometheus:v3.2.1 grafana/grafana:13.0.2 +``` From 577dc1180acf5b3d5a714976ca180ac19139dbe7 Mon Sep 17 00:00:00 2001 From: Andrei Markov Date: Tue, 7 Jul 2026 23:42:37 +0300 Subject: [PATCH 04/18] feat(lab9): Trivy/ZAP scans, security headers middleware, govulncheck CI --- .github/workflows/ci.yml | 128 ++++ app/Dockerfile | 1 + app/handlers.go | 4 + app/handlers_test.go | 25 +- app/main.go | 2 +- app/security.go | 18 + .../attachments/lab9/govulncheck-green.txt | 76 ++ .../attachments/lab9/govulncheck-red.txt | 30 + .../lab9/trivy/config-scan-after.txt | 1 + .../attachments/lab9/trivy/config-scan.txt | 14 + .../attachments/lab9/trivy/fs-scan.txt | 1 + .../lab9/trivy/image-scan-after.txt | 65 ++ .../attachments/lab9/trivy/image-scan.txt | 65 ++ .../attachments/lab9/trivy/sbom-head.txt | 30 + .../attachments/lab9/trivy/sbom-log.txt | 3 + .../attachments/lab9/trivy/sbom.cdx.json | 425 ++++++++++ .../lab9/zap-after/headers-health-after.txt | 12 + .../lab9/zap-after/zap-baseline.log | 77 ++ .../lab9/zap-after/zap-report.html | 724 ++++++++++++++++++ .../lab9/zap-after/zap-report.json | 129 ++++ .../attachments/lab9/zap-after/zap.yaml | 41 + .../lab9/zap-before/headers-health-before.txt | 5 + .../lab9/zap-before/zap-baseline.log | 117 +++ .../lab9/zap-before/zap-report.html | 566 ++++++++++++++ .../lab9/zap-before/zap-report.json | 89 +++ .../attachments/lab9/zap-before/zap.yaml | 40 + submissions/lab9.md | 206 +++++ 27 files changed, 2892 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 app/security.go create mode 100644 submissions/attachments/lab9/govulncheck-green.txt create mode 100644 submissions/attachments/lab9/govulncheck-red.txt create mode 100644 submissions/attachments/lab9/trivy/config-scan-after.txt create mode 100644 submissions/attachments/lab9/trivy/config-scan.txt create mode 100644 submissions/attachments/lab9/trivy/fs-scan.txt create mode 100644 submissions/attachments/lab9/trivy/image-scan-after.txt create mode 100644 submissions/attachments/lab9/trivy/image-scan.txt create mode 100644 submissions/attachments/lab9/trivy/sbom-head.txt create mode 100644 submissions/attachments/lab9/trivy/sbom-log.txt create mode 100644 submissions/attachments/lab9/trivy/sbom.cdx.json create mode 100644 submissions/attachments/lab9/zap-after/headers-health-after.txt create mode 100644 submissions/attachments/lab9/zap-after/zap-baseline.log create mode 100644 submissions/attachments/lab9/zap-after/zap-report.html create mode 100644 submissions/attachments/lab9/zap-after/zap-report.json create mode 100644 submissions/attachments/lab9/zap-after/zap.yaml create mode 100644 submissions/attachments/lab9/zap-before/headers-health-before.txt create mode 100644 submissions/attachments/lab9/zap-before/zap-baseline.log create mode 100644 submissions/attachments/lab9/zap-before/zap-report.html create mode 100644 submissions/attachments/lab9/zap-before/zap-report.json create mode 100644 submissions/attachments/lab9/zap-before/zap.yaml create mode 100644 submissions/lab9.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..b0db8e1e1 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,128 @@ +name: ci + +on: + push: + branches: [main] + paths: + - 'app/**' + - '.github/workflows/**' + pull_request: + branches: [main] + paths: + - 'app/**' + - '.github/workflows/**' + +permissions: + contents: read + +env: + GOFLAGS: -buildvcs=false + +jobs: + changes: + name: changes + runs-on: ubuntu-24.04 + outputs: + app-go: ${{ steps.filter.outputs.app-go }} + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: filter + with: + filters: | + app-go: + - 'app/**/*.go' + - 'app/go.mod' + - 'app/go.sum' + - 'app/.golangci.yml' + + vet: + name: vet + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + go: ['1.23', '1.24'] + defaults: + run: + working-directory: app + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + with: + fetch-depth: 1 + - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + with: + go-version: ${{ matrix.go }} + cache: true + cache-dependency-path: app/go.mod + - run: go vet ./... + + test: + name: test + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + go: ['1.23', '1.24'] + defaults: + run: + working-directory: app + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + with: + fetch-depth: 1 + - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + with: + go-version: ${{ matrix.go }} + cache: true + cache-dependency-path: app/go.mod + - run: go test -race -count=1 ./... + + lint: + name: lint + needs: changes + if: needs.changes.outputs.app-go == 'true' + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + with: + fetch-depth: 1 + - uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 + with: + path: | + ~/.cache/golangci-lint + ~/go/bin + key: golangci-lint-${{ runner.os }}-v2.5.0-${{ hashFiles('app/.golangci.yml') }} + restore-keys: | + golangci-lint-${{ runner.os }}-v2.5.0- + - uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd # v7.0.0 + with: + version: v2.5.0 + working-directory: app + + govulncheck: + name: govulncheck + runs-on: ubuntu-24.04 + defaults: + run: + working-directory: app + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + with: + fetch-depth: 1 + - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + with: + go-version: '1.24' + cache: true + cache-dependency-path: app/go.mod + - run: go install golang.org/x/vuln/cmd/govulncheck@v1.1.4 + - run: govulncheck ./... + + ci-ok: + name: ci-ok + if: always() + needs: [vet, test, lint, govulncheck] + runs-on: ubuntu-24.04 + steps: + - run: | + test "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" = "false" diff --git a/app/Dockerfile b/app/Dockerfile index 5d69f923c..6580d2af1 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -16,5 +16,6 @@ FROM gcr.io/distroless/static-debian12:nonroot COPY --from=builder /quicknotes /quicknotes COPY --from=builder /src/seed.json /seed.json COPY --from=busybox /bin/busybox /busybox +USER nonroot:nonroot EXPOSE 8080 ENTRYPOINT ["/quicknotes"] diff --git a/app/handlers.go b/app/handlers.go index c534979c5..5c5907a77 100644 --- a/app/handlers.go +++ b/app/handlers.go @@ -26,6 +26,10 @@ func NewServer(store *Store) *Server { return &Server{store: store, requestsByCode: by} } +func (s *Server) Handler() http.Handler { + return securityHeaders(s.Routes()) +} + func (s *Server) Routes() *http.ServeMux { mux := http.NewServeMux() mux.HandleFunc("GET /health", s.wrap(s.handleHealth)) diff --git a/app/handlers_test.go b/app/handlers_test.go index 9dff2e3e5..0919ddb71 100644 --- a/app/handlers_test.go +++ b/app/handlers_test.go @@ -31,7 +31,7 @@ func do(t *testing.T, srv *Server, method, target string, body any) *httptest.Re } req := httptest.NewRequest(method, target, &buf) rec := httptest.NewRecorder() - srv.Routes().ServeHTTP(rec, req) + srv.Handler().ServeHTTP(rec, req) return rec } @@ -131,3 +131,26 @@ func TestMetrics_ExposesPrometheusFormat(t *testing.T) { } } +func TestSecurityHeaders_PresentOnAllRoutes(t *testing.T) { + srv := newTestServer(t) + rec := do(t, srv, http.MethodGet, "/health", nil) + for _, key := range []string{ + "X-Content-Type-Options", + "X-Frame-Options", + "Content-Security-Policy", + "Referrer-Policy", + "Permissions-Policy", + "Cache-Control", + } { + if got := rec.Header().Get(key); got == "" { + t.Errorf("missing %s header", key) + } + } + if got := rec.Header().Get("X-Frame-Options"); got != "DENY" { + t.Errorf("X-Frame-Options: got %q want DENY", got) + } + if got := rec.Header().Get("Content-Security-Policy"); got != "default-src 'none'" { + t.Errorf("CSP: got %q want default-src 'none'", got) + } +} + diff --git a/app/main.go b/app/main.go index e258ffcfe..aa3dd9e7c 100644 --- a/app/main.go +++ b/app/main.go @@ -28,7 +28,7 @@ func main() { server := NewServer(store) srv := &http.Server{ Addr: addr, - Handler: server.Routes(), + Handler: server.Handler(), ReadHeaderTimeout: 5 * time.Second, } diff --git a/app/security.go b/app/security.go new file mode 100644 index 000000000..8efd5d537 --- /dev/null +++ b/app/security.go @@ -0,0 +1,18 @@ +package main + +import "net/http" + +// securityHeaders applies baseline HTTP security headers to every response. +func securityHeaders(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + h := w.Header() + h.Set("X-Content-Type-Options", "nosniff") + h.Set("X-Frame-Options", "DENY") + h.Set("Content-Security-Policy", "default-src 'none'") + h.Set("Referrer-Policy", "no-referrer") + h.Set("Permissions-Policy", "geolocation=(), microphone=(), camera=()") + h.Set("Cache-Control", "no-cache, no-store, must-revalidate, private") + h.Set("Pragma", "no-cache") + next.ServeHTTP(w, r) + }) +} diff --git a/submissions/attachments/lab9/govulncheck-green.txt b/submissions/attachments/lab9/govulncheck-green.txt new file mode 100644 index 000000000..ccfb5ca5d --- /dev/null +++ b/submissions/attachments/lab9/govulncheck-green.txt @@ -0,0 +1,76 @@ +=== Symbol Results === + +Vulnerability #1: GO-2026-5039 + Arbitrary inputs are included in errors without any escaping in + net/textproto + More info: https://pkg.go.dev/vuln/GO-2026-5039 + Standard library + Found in: net/textproto@go1.26.1 + Fixed in: net/textproto@go1.26.4 + Example traces found: + #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls textproto.Reader.ReadMIMEHeader + +Vulnerability #2: GO-2026-5037 + Inefficient candidate hostname parsing in crypto/x509 + More info: https://pkg.go.dev/vuln/GO-2026-5037 + Standard library + Found in: crypto/x509@go1.26.1 + Fixed in: crypto/x509@go1.26.4 + Example traces found: + #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify + #2: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.VerifyHostname + #3: main.go:20:13: quicknotes.main calls log.Fatalf, which eventually calls x509.HostnameError.Error + +Vulnerability #3: GO-2026-4971 + Panic in Dial and LookupPort when handling NUL byte on Windows in net + More info: https://pkg.go.dev/vuln/GO-2026-4971 + Standard library + Found in: net@go1.26.1 + Fixed in: net@go1.26.3 + Example traces found: + #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which calls net.Listen + +Vulnerability #4: GO-2026-4947 + Unexpected work during chain building in crypto/x509 + More info: https://pkg.go.dev/vuln/GO-2026-4947 + Standard library + Found in: crypto/x509@go1.26.1 + Fixed in: crypto/x509@go1.26.2 + Example traces found: + #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify + +Vulnerability #5: GO-2026-4946 + Inefficient policy validation in crypto/x509 + More info: https://pkg.go.dev/vuln/GO-2026-4946 + Standard library + Found in: crypto/x509@go1.26.1 + Fixed in: crypto/x509@go1.26.2 + Example traces found: + #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify + +Vulnerability #6: GO-2026-4870 + Unauthenticated TLS 1.3 KeyUpdate record can cause persistent connection + retention and DoS in crypto/tls + More info: https://pkg.go.dev/vuln/GO-2026-4870 + Standard library + Found in: crypto/tls@go1.26.1 + Fixed in: crypto/tls@go1.26.2 + Example traces found: + #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls tls.Conn.HandshakeContext + #2: main.go:43:15: quicknotes.main calls signal.Notify, which eventually calls tls.Conn.Read + +Vulnerability #7: GO-2026-4866 + Case-sensitive excludedSubtrees name constraints cause Auth Bypass in + crypto/x509 + More info: https://pkg.go.dev/vuln/GO-2026-4866 + Standard library + Found in: crypto/x509@go1.26.1 + Fixed in: crypto/x509@go1.26.2 + Example traces found: + #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify + +Your code is affected by 7 vulnerabilities from the Go standard library. +This scan also found 4 vulnerabilities in packages you import and 7 +vulnerabilities in modules you require, but your code doesn't appear to call +these vulnerabilities. +Use '-show verbose' for more details. diff --git a/submissions/attachments/lab9/govulncheck-red.txt b/submissions/attachments/lab9/govulncheck-red.txt new file mode 100644 index 000000000..eb1fc5058 --- /dev/null +++ b/submissions/attachments/lab9/govulncheck-red.txt @@ -0,0 +1,30 @@ +=== Symbol Results === + +Vulnerability #1: GO-2026-5020 + Invoking infinite loop on large channel writes in golang.org/x/crypto/ssh + More info: https://pkg.go.dev/vuln/GO-2026-5020 + Module: golang.org/x/crypto + Found in: golang.org/x/crypto@v0.3.0 + Fixed in: golang.org/x/crypto@v0.52.0 + Example traces found: + #1: main.go:3:23: vulndemo.main calls ssh.Dial + +Vulnerability #2: GO-2026-5019 + Invoking bypass of FIDO/U2F security keys physical interaction in + golang.org/x/crypto/ssh + More info: https://pkg.go.dev/vuln/GO-2026-5019 + Module: golang.org/x/crypto + Found in: golang.org/x/crypto@v0.3.0 + Fixed in: golang.org/x/crypto@v0.52.0 + Example traces found: + #1: main.go:3:23: vulndemo.main calls ssh.Dial + +Vulnerability #3: GO-2026-5018 + Invoking pathological RSA/DSA parameters may cause DoS in + golang.org/x/crypto/ssh + More info: https://pkg.go.dev/vuln/GO-2026-5018 + Module: golang.org/x/crypto + Found in: golang.org/x/crypto@v0.3.0 + Fixed in: golang.org/x/crypto@v0.52.0 + Example traces found: + #1: main.go:3:23: vulndemo.main calls ssh.Dial diff --git a/submissions/attachments/lab9/trivy/config-scan-after.txt b/submissions/attachments/lab9/trivy/config-scan-after.txt new file mode 100644 index 000000000..ba3bfdb4b --- /dev/null +++ b/submissions/attachments/lab9/trivy/config-scan-after.txt @@ -0,0 +1 @@ +No HIGH/CRITICAL misconfigurations after adding `USER nonroot:nonroot` to `app/Dockerfile`. diff --git a/submissions/attachments/lab9/trivy/config-scan.txt b/submissions/attachments/lab9/trivy/config-scan.txt new file mode 100644 index 000000000..9ebb62e27 --- /dev/null +++ b/submissions/attachments/lab9/trivy/config-scan.txt @@ -0,0 +1,14 @@ + +app/Dockerfile (dockerfile) +=========================== +Tests: 21 (SUCCESSES: 20, FAILURES: 1) +Failures: 1 (HIGH: 1, CRITICAL: 0) + +AVD-DS-0002 (HIGH): Specify at least 1 USER command in Dockerfile with non-root user as argument +════════════════════════════════════════ +Running containers with 'root' user can lead to a container escape situation. It is a best practice to run containers as non-root users, which can be done by adding a 'USER' statement to the Dockerfile. + +See https://avd.aquasec.com/misconfig/ds002 +──────────────────────────────────────── + + diff --git a/submissions/attachments/lab9/trivy/fs-scan.txt b/submissions/attachments/lab9/trivy/fs-scan.txt new file mode 100644 index 000000000..fd78a4afd --- /dev/null +++ b/submissions/attachments/lab9/trivy/fs-scan.txt @@ -0,0 +1 @@ +No HIGH/CRITICAL findings (trivy fs --skip-dirs .vagrant --skip-dirs .git /repo). diff --git a/submissions/attachments/lab9/trivy/image-scan-after.txt b/submissions/attachments/lab9/trivy/image-scan-after.txt new file mode 100644 index 000000000..2a20e2055 --- /dev/null +++ b/submissions/attachments/lab9/trivy/image-scan-after.txt @@ -0,0 +1,65 @@ +2026-07-07T18:48:35Z INFO [vulndb] Need to update DB +2026-07-07T18:48:35Z INFO [vulndb] Downloading vulnerability DB... +2026-07-07T18:48:35Z INFO [vulndb] Downloading artifact... repo="mirror.gcr.io/aquasec/trivy-db:2" +2026-07-07T18:49:00Z INFO [vulndb] Artifact successfully downloaded repo="mirror.gcr.io/aquasec/trivy-db:2" +2026-07-07T18:49:00Z INFO [vuln] Vulnerability scanning is enabled +2026-07-07T18:49:00Z INFO [secret] Secret scanning is enabled +2026-07-07T18:49:00Z INFO [secret] If your scanning is slow, please try '--scanners vuln' to disable secret scanning +2026-07-07T18:49:00Z INFO [secret] Please see also https://aquasecurity.github.io/trivy/v0.59/docs/scanner/secret#recommendation for faster secret detection +2026-07-07T18:49:01Z INFO Detected OS family="debian" version="12.14" +2026-07-07T18:49:01Z INFO [debian] Detecting vulnerabilities... os_version="12" pkg_num=4 +2026-07-07T18:49:01Z INFO Number of language-specific files num=1 +2026-07-07T18:49:01Z INFO [gobinary] Detecting vulnerabilities... +2026-07-07T18:49:01Z WARN Using severities from other vendors for some vulnerabilities. Read https://aquasecurity.github.io/trivy/v0.59/docs/scanner/vulnerability#severity-selection for details. + +quicknotes:lab6 (debian 12.14) +============================== +Total: 0 (HIGH: 0, CRITICAL: 0) + + +quicknotes (gobinary) +===================== +Total: 10 (HIGH: 10, CRITICAL: 0) + +┌─────────┬────────────────┬──────────┬────────┬───────────────────┬─────────────────┬──────────────────────────────────────────────────────────────┐ +│ Library │ Vulnerability │ Severity │ Status │ Installed Version │ Fixed Version │ Title │ +├─────────┼────────────────┼──────────┼────────┼───────────────────┼─────────────────┼──────────────────────────────────────────────────────────────┤ +│ stdlib │ CVE-2026-25679 │ HIGH │ fixed │ v1.24.13 │ 1.25.8, 1.26.1 │ net/url: Incorrect parsing of IPv6 host literals in net/url │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-25679 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-27145 │ │ │ │ 1.25.11, 1.26.4 │ crypto/x509: golang: golang crypto/x509: Denial of Service │ +│ │ │ │ │ │ │ via excessive processing of DNS... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-27145 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32280 │ │ │ │ 1.25.9, 1.26.2 │ crypto/x509: crypto/tls: golang: Go: Denial of Service │ +│ │ │ │ │ │ │ vulnerability in certificate chain building... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32280 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32281 │ │ │ │ │ crypto/x509: golang: Go crypto/x509: Denial of Service via │ +│ │ │ │ │ │ │ inefficient certificate chain validation... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32281 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32283 │ │ │ │ │ crypto/tls: golang: Go crypto/tls: Denial of Service via │ +│ │ │ │ │ │ │ multiple TLS 1.3 key... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32283 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-33811 │ │ │ │ 1.25.10, 1.26.3 │ net: golang: Go net package: Denial of Service via long │ +│ │ │ │ │ │ │ CNAME response... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-33811 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-33814 │ │ │ │ │ net/http/internal/http2: golang: golang.org/x/net: Go │ +│ │ │ │ │ │ │ HTTP/2: Denial of Service via malformed │ +│ │ │ │ │ │ │ SETTINGS_MAX_FRAME_SIZE frame... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-33814 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39820 │ │ │ │ │ net/mail: golang: Go net/mail: Denial of Service via crafted │ +│ │ │ │ │ │ │ email inputs │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39820 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39836 │ │ │ │ │ ELSA-2026-22121: golang security update (IMPORTANT) │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39836 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-42499 │ │ │ │ │ net/mail: golang: net/mail: Denial of Service via │ +│ │ │ │ │ │ │ pathological email address parsing │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-42499 │ +└─────────┴────────────────┴──────────┴────────┴───────────────────┴─────────────────┴──────────────────────────────────────────────────────────────┘ diff --git a/submissions/attachments/lab9/trivy/image-scan.txt b/submissions/attachments/lab9/trivy/image-scan.txt new file mode 100644 index 000000000..409a99e05 --- /dev/null +++ b/submissions/attachments/lab9/trivy/image-scan.txt @@ -0,0 +1,65 @@ +2026-07-07T14:43:24Z INFO [vulndb] Need to update DB +2026-07-07T14:43:24Z INFO [vulndb] Downloading vulnerability DB... +2026-07-07T14:43:24Z INFO [vulndb] Downloading artifact... repo="mirror.gcr.io/aquasec/trivy-db:2" +2026-07-07T14:46:15Z INFO [vulndb] Artifact successfully downloaded repo="mirror.gcr.io/aquasec/trivy-db:2" +2026-07-07T14:46:15Z INFO [vuln] Vulnerability scanning is enabled +2026-07-07T14:46:15Z INFO [secret] Secret scanning is enabled +2026-07-07T14:46:15Z INFO [secret] If your scanning is slow, please try '--scanners vuln' to disable secret scanning +2026-07-07T14:46:15Z INFO [secret] Please see also https://aquasecurity.github.io/trivy/v0.59/docs/scanner/secret#recommendation for faster secret detection +2026-07-07T14:46:15Z INFO Detected OS family="debian" version="12.14" +2026-07-07T14:46:15Z INFO [debian] Detecting vulnerabilities... os_version="12" pkg_num=4 +2026-07-07T14:46:15Z INFO Number of language-specific files num=1 +2026-07-07T14:46:15Z INFO [gobinary] Detecting vulnerabilities... +2026-07-07T14:46:15Z WARN Using severities from other vendors for some vulnerabilities. Read https://aquasecurity.github.io/trivy/v0.59/docs/scanner/vulnerability#severity-selection for details. + +quicknotes:lab6 (debian 12.14) +============================== +Total: 0 (HIGH: 0, CRITICAL: 0) + + +quicknotes (gobinary) +===================== +Total: 10 (HIGH: 10, CRITICAL: 0) + +┌─────────┬────────────────┬──────────┬────────┬───────────────────┬─────────────────┬──────────────────────────────────────────────────────────────┐ +│ Library │ Vulnerability │ Severity │ Status │ Installed Version │ Fixed Version │ Title │ +├─────────┼────────────────┼──────────┼────────┼───────────────────┼─────────────────┼──────────────────────────────────────────────────────────────┤ +│ stdlib │ CVE-2026-25679 │ HIGH │ fixed │ v1.24.13 │ 1.25.8, 1.26.1 │ net/url: Incorrect parsing of IPv6 host literals in net/url │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-25679 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-27145 │ │ │ │ 1.25.11, 1.26.4 │ crypto/x509: golang: golang crypto/x509: Denial of Service │ +│ │ │ │ │ │ │ via excessive processing of DNS... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-27145 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32280 │ │ │ │ 1.25.9, 1.26.2 │ crypto/x509: crypto/tls: golang: Go: Denial of Service │ +│ │ │ │ │ │ │ vulnerability in certificate chain building... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32280 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32281 │ │ │ │ │ crypto/x509: golang: Go crypto/x509: Denial of Service via │ +│ │ │ │ │ │ │ inefficient certificate chain validation... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32281 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-32283 │ │ │ │ │ crypto/tls: golang: Go crypto/tls: Denial of Service via │ +│ │ │ │ │ │ │ multiple TLS 1.3 key... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-32283 │ +│ ├────────────────┤ │ │ ├─────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-33811 │ │ │ │ 1.25.10, 1.26.3 │ net: golang: Go net package: Denial of Service via long │ +│ │ │ │ │ │ │ CNAME response... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-33811 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-33814 │ │ │ │ │ net/http/internal/http2: golang: golang.org/x/net: Go │ +│ │ │ │ │ │ │ HTTP/2: Denial of Service via malformed │ +│ │ │ │ │ │ │ SETTINGS_MAX_FRAME_SIZE frame... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-33814 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39820 │ │ │ │ │ net/mail: golang: Go net/mail: Denial of Service via crafted │ +│ │ │ │ │ │ │ email inputs │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39820 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-39836 │ │ │ │ │ ELSA-2026-22121: golang security update (IMPORTANT) │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-39836 │ +│ ├────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2026-42499 │ │ │ │ │ net/mail: golang: net/mail: Denial of Service via │ +│ │ │ │ │ │ │ pathological email address parsing │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2026-42499 │ +└─────────┴────────────────┴──────────┴────────┴───────────────────┴─────────────────┴──────────────────────────────────────────────────────────────┘ diff --git a/submissions/attachments/lab9/trivy/sbom-head.txt b/submissions/attachments/lab9/trivy/sbom-head.txt new file mode 100644 index 000000000..712ae630a --- /dev/null +++ b/submissions/attachments/lab9/trivy/sbom-head.txt @@ -0,0 +1,30 @@ +{ + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6", + "serialNumber": "urn:uuid:960d50bf-33b6-4206-8f4a-29751974aabb", + "version": 1, + "metadata": { + "timestamp": "2026-07-07T18:49:01+00:00", + "tools": { + "components": [ + { + "type": "application", + "group": "aquasecurity", + "name": "trivy", + "version": "0.59.1" + } + ] + }, + "component": { + "bom-ref": "pkg:oci/quicknotes@sha256%3Af708ad475533dcf6d221d62bc69c3d62a8fb2f3a8c441d32a5a910a3ff10c0c6?arch=arm64&repository_url=index.docker.io%2Flibrary%2Fquicknotes", + "type": "container", + "name": "quicknotes:lab6", + "purl": "pkg:oci/quicknotes@sha256%3Af708ad475533dcf6d221d62bc69c3d62a8fb2f3a8c441d32a5a910a3ff10c0c6?arch=arm64&repository_url=index.docker.io%2Flibrary%2Fquicknotes", + "properties": [ + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:114dde0fefebbca13165d0da9c500a66190e497a82a53dcaabc3172d630be1e9" + }, + { + "name": "aquasecurity:trivy:DiffID", diff --git a/submissions/attachments/lab9/trivy/sbom-log.txt b/submissions/attachments/lab9/trivy/sbom-log.txt new file mode 100644 index 000000000..972ebb956 --- /dev/null +++ b/submissions/attachments/lab9/trivy/sbom-log.txt @@ -0,0 +1,3 @@ +2026-07-07T18:49:01Z INFO "--format cyclonedx" disables security scanning. Specify "--scanners vuln" explicitly if you want to include vulnerabilities in the "cyclonedx" report. +2026-07-07T18:49:01Z INFO Detected OS family="debian" version="12.14" +2026-07-07T18:49:01Z INFO Number of language-specific files num=1 diff --git a/submissions/attachments/lab9/trivy/sbom.cdx.json b/submissions/attachments/lab9/trivy/sbom.cdx.json new file mode 100644 index 000000000..35b41c982 --- /dev/null +++ b/submissions/attachments/lab9/trivy/sbom.cdx.json @@ -0,0 +1,425 @@ +{ + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6", + "serialNumber": "urn:uuid:960d50bf-33b6-4206-8f4a-29751974aabb", + "version": 1, + "metadata": { + "timestamp": "2026-07-07T18:49:01+00:00", + "tools": { + "components": [ + { + "type": "application", + "group": "aquasecurity", + "name": "trivy", + "version": "0.59.1" + } + ] + }, + "component": { + "bom-ref": "pkg:oci/quicknotes@sha256%3Af708ad475533dcf6d221d62bc69c3d62a8fb2f3a8c441d32a5a910a3ff10c0c6?arch=arm64&repository_url=index.docker.io%2Flibrary%2Fquicknotes", + "type": "container", + "name": "quicknotes:lab6", + "purl": "pkg:oci/quicknotes@sha256%3Af708ad475533dcf6d221d62bc69c3d62a8fb2f3a8c441d32a5a910a3ff10c0c6?arch=arm64&repository_url=index.docker.io%2Flibrary%2Fquicknotes", + "properties": [ + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:114dde0fefebbca13165d0da9c500a66190e497a82a53dcaabc3172d630be1e9" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:33b37ab0b0901175c2699d81c10b0c887f0dff944de74763cca00c155904d6fb" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:35b5ba6e08cdd034b8d1920f9c7203e5d66f258e1915f164a01de0af14f34710" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:4cde6b0bb6f50a5f255eef7b2a42162c661cf776b803225dcac9a659e396bb6b" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:4d049f83d9cf21d1f5cc0e11deaf36df02790d0e60c1a3829538fb4b61685368" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:531678dbb0358bce7a8a19ff56fcc39488beb8fe8bf17814e156d2986a47d43e" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:6e7fbcf090d09b73a4aa85f9dce690d0ace73877c150b7c56955487b6e7a822a" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:6f1cdceb6a3146f0ccb986521156bef8a422cdbb0863396f7f751f575ba308f4" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:80b1f42918092d58c439a051239e0788bf3e84802dae6f2ac4ecab0a7a08148e" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:8fa10c0194df9b7c054c90dbe482585f768a54428fc90a5b78a0066a123b1bba" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:a0ff877a11d72f1832840a3cddfeeb3962d2b3fae4e11aca8de212cb24ced9f3" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:ad51d0769d16ba578106a177987dfe3d2e02c1668c852b795b2f6b024068242a" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:af5aa97ebe6ce1604747ec1e21af7136ded391bcabe4acef882e718a87c86bcc" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:b3eb5fcfaf0fc8982e3f370bde32740bb83e3fb363c189290b4c58c2e1af965a" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:bd3cdfae1d3fdd83a2231d608969b38b82349777c2fff9a7c12d54f8ac5c9b38" + }, + { + "name": "aquasecurity:trivy:ImageID", + "value": "sha256:f708ad475533dcf6d221d62bc69c3d62a8fb2f3a8c441d32a5a910a3ff10c0c6" + }, + { + "name": "aquasecurity:trivy:Labels:com.docker.compose.project", + "value": "devops-intro" + }, + { + "name": "aquasecurity:trivy:Labels:com.docker.compose.service", + "value": "quicknotes" + }, + { + "name": "aquasecurity:trivy:Labels:com.docker.compose.version", + "value": "5.1.3" + }, + { + "name": "aquasecurity:trivy:RepoDigest", + "value": "quicknotes@sha256:f708ad475533dcf6d221d62bc69c3d62a8fb2f3a8c441d32a5a910a3ff10c0c6" + }, + { + "name": "aquasecurity:trivy:RepoTag", + "value": "quicknotes:lab6" + }, + { + "name": "aquasecurity:trivy:SchemaVersion", + "value": "2" + } + ] + } + }, + "components": [ + { + "bom-ref": "bb3b44f7-1ccf-4d1f-9352-0b50c061fb72", + "type": "operating-system", + "name": "debian", + "version": "12.14", + "properties": [ + { + "name": "aquasecurity:trivy:Class", + "value": "os-pkgs" + }, + { + "name": "aquasecurity:trivy:Type", + "value": "debian" + } + ] + }, + { + "bom-ref": "f9af8480-f80b-4eea-b10b-5fe3b1b6e2e5", + "type": "application", + "name": "quicknotes", + "properties": [ + { + "name": "aquasecurity:trivy:Class", + "value": "lang-pkgs" + }, + { + "name": "aquasecurity:trivy:Type", + "value": "gobinary" + } + ] + }, + { + "bom-ref": "pkg:deb/debian/base-files@12.4%2Bdeb12u14?arch=arm64&distro=debian-12.14", + "type": "library", + "supplier": { + "name": "Santiago Vila " + }, + "name": "base-files", + "version": "12.4+deb12u14", + "licenses": [ + { + "license": { + "name": "GPL-2.0-or-later" + } + } + ], + "purl": "pkg:deb/debian/base-files@12.4%2Bdeb12u14?arch=arm64&distro=debian-12.14", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:a0ff877a11d72f1832840a3cddfeeb3962d2b3fae4e11aca8de212cb24ced9f3" + }, + { + "name": "aquasecurity:trivy:LayerDigest", + "value": "sha256:36a0d76d579d99971aa6e12b2d5460703b2c27df78ecb53cfb5385c7cfc1c8ff" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "base-files@12.4+deb12u14" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "debian" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "base-files" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "12.4+deb12u14" + } + ] + }, + { + "bom-ref": "pkg:deb/debian/media-types@10.0.0?arch=all&distro=debian-12.14", + "type": "library", + "supplier": { + "name": "Mime-Support Packagers " + }, + "name": "media-types", + "version": "10.0.0", + "licenses": [ + { + "license": { + "name": "ad-hoc" + } + } + ], + "purl": "pkg:deb/debian/media-types@10.0.0?arch=all&distro=debian-12.14", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:114dde0fefebbca13165d0da9c500a66190e497a82a53dcaabc3172d630be1e9" + }, + { + "name": "aquasecurity:trivy:LayerDigest", + "value": "sha256:bf7a4185f01524837d19abde915ffde84e64368b250f5b5e9f6f75aea62a11d4" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "media-types@10.0.0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "debian" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "media-types" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "10.0.0" + } + ] + }, + { + "bom-ref": "pkg:deb/debian/netbase@6.4?arch=all&distro=debian-12.14", + "type": "library", + "supplier": { + "name": "Marco d'Itri " + }, + "name": "netbase", + "version": "6.4", + "licenses": [ + { + "license": { + "name": "GPL-2.0-only" + } + } + ], + "purl": "pkg:deb/debian/netbase@6.4?arch=all&distro=debian-12.14", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:8fa10c0194df9b7c054c90dbe482585f768a54428fc90a5b78a0066a123b1bba" + }, + { + "name": "aquasecurity:trivy:LayerDigest", + "value": "sha256:990a9c434e5e0f11549a8d4a41a1991e621b04e30cd63269adbc97b1dc38fd7e" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "netbase@6.4" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "debian" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "netbase" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "6.4" + } + ] + }, + { + "bom-ref": "pkg:deb/debian/tzdata@2026b-0%2Bdeb12u1?arch=all&distro=debian-12.14", + "type": "library", + "supplier": { + "name": "GNU Libc Maintainers " + }, + "name": "tzdata", + "version": "2026b-0+deb12u1", + "licenses": [ + { + "license": { + "name": "public-domain" + } + } + ], + "purl": "pkg:deb/debian/tzdata@2026b-0%2Bdeb12u1?arch=all&distro=debian-12.14", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:35b5ba6e08cdd034b8d1920f9c7203e5d66f258e1915f164a01de0af14f34710" + }, + { + "name": "aquasecurity:trivy:LayerDigest", + "value": "sha256:39dc083afc39bd8dc43d456fe7ff7d39292e593bb2769972c11bb2e5f9119386" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "tzdata@2026b-0+deb12u1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "debian" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "tzdata" + }, + { + "name": "aquasecurity:trivy:SrcRelease", + "value": "0+deb12u1" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2026b" + } + ] + }, + { + "bom-ref": "pkg:golang/quicknotes", + "type": "library", + "name": "quicknotes", + "purl": "pkg:golang/quicknotes", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:b3eb5fcfaf0fc8982e3f370bde32740bb83e3fb363c189290b4c58c2e1af965a" + }, + { + "name": "aquasecurity:trivy:LayerDigest", + "value": "sha256:3630744617d50ad32e922cad3f543eaa52c9d626e9a973b5de9cf2e36bb544c8" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "quicknotes" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "gobinary" + } + ] + }, + { + "bom-ref": "pkg:golang/stdlib@v1.24.13", + "type": "library", + "name": "stdlib", + "version": "v1.24.13", + "purl": "pkg:golang/stdlib@v1.24.13", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:b3eb5fcfaf0fc8982e3f370bde32740bb83e3fb363c189290b4c58c2e1af965a" + }, + { + "name": "aquasecurity:trivy:LayerDigest", + "value": "sha256:3630744617d50ad32e922cad3f543eaa52c9d626e9a973b5de9cf2e36bb544c8" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "stdlib@v1.24.13" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "gobinary" + } + ] + } + ], + "dependencies": [ + { + "ref": "bb3b44f7-1ccf-4d1f-9352-0b50c061fb72", + "dependsOn": [ + "pkg:deb/debian/base-files@12.4%2Bdeb12u14?arch=arm64&distro=debian-12.14", + "pkg:deb/debian/media-types@10.0.0?arch=all&distro=debian-12.14", + "pkg:deb/debian/netbase@6.4?arch=all&distro=debian-12.14", + "pkg:deb/debian/tzdata@2026b-0%2Bdeb12u1?arch=all&distro=debian-12.14" + ] + }, + { + "ref": "f9af8480-f80b-4eea-b10b-5fe3b1b6e2e5", + "dependsOn": [ + "pkg:golang/quicknotes" + ] + }, + { + "ref": "pkg:deb/debian/base-files@12.4%2Bdeb12u14?arch=arm64&distro=debian-12.14", + "dependsOn": [] + }, + { + "ref": "pkg:deb/debian/media-types@10.0.0?arch=all&distro=debian-12.14", + "dependsOn": [] + }, + { + "ref": "pkg:deb/debian/netbase@6.4?arch=all&distro=debian-12.14", + "dependsOn": [] + }, + { + "ref": "pkg:deb/debian/tzdata@2026b-0%2Bdeb12u1?arch=all&distro=debian-12.14", + "dependsOn": [] + }, + { + "ref": "pkg:golang/quicknotes", + "dependsOn": [ + "pkg:golang/stdlib@v1.24.13" + ] + }, + { + "ref": "pkg:golang/stdlib@v1.24.13", + "dependsOn": [] + }, + { + "ref": "pkg:oci/quicknotes@sha256%3Af708ad475533dcf6d221d62bc69c3d62a8fb2f3a8c441d32a5a910a3ff10c0c6?arch=arm64&repository_url=index.docker.io%2Flibrary%2Fquicknotes", + "dependsOn": [ + "bb3b44f7-1ccf-4d1f-9352-0b50c061fb72", + "f9af8480-f80b-4eea-b10b-5fe3b1b6e2e5" + ] + } + ], + "vulnerabilities": [] +} diff --git a/submissions/attachments/lab9/zap-after/headers-health-after.txt b/submissions/attachments/lab9/zap-after/headers-health-after.txt new file mode 100644 index 000000000..e7852cfe1 --- /dev/null +++ b/submissions/attachments/lab9/zap-after/headers-health-after.txt @@ -0,0 +1,12 @@ +HTTP/1.1 200 OK +Cache-Control: no-cache, no-store, must-revalidate, private +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Permissions-Policy: geolocation=(), microphone=(), camera=() +Pragma: no-cache +Referrer-Policy: no-referrer +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +Date: Tue, 07 Jul 2026 18:47:52 GMT +Content-Length: 27 + diff --git a/submissions/attachments/lab9/zap-after/zap-baseline.log b/submissions/attachments/lab9/zap-after/zap-baseline.log new file mode 100644 index 000000000..541f74f40 --- /dev/null +++ b/submissions/attachments/lab9/zap-after/zap-baseline.log @@ -0,0 +1,77 @@ +Using the Automation Framework +Total of 5 URLs +PASS: Vulnerable JS Library (Powered by Retire.js) [10003] +PASS: In Page Banner Information Leak [10009] +PASS: Cookie No HttpOnly Flag [10010] +PASS: Cookie Without Secure Flag [10011] +PASS: Re-examine Cache-control Directives [10015] +PASS: Cross-Domain JavaScript Source File Inclusion [10017] +PASS: Content-Type Header Missing [10019] +PASS: Anti-clickjacking Header [10020] +PASS: X-Content-Type-Options Header Missing [10021] +PASS: Information Disclosure - Debug Error Messages [10023] +PASS: Information Disclosure - Sensitive Information in URL [10024] +PASS: Information Disclosure - Sensitive Information in HTTP Referrer Header [10025] +PASS: HTTP Parameter Override [10026] +PASS: Information Disclosure - Suspicious Comments [10027] +PASS: Off-site Redirect [10028] +PASS: Cookie Poisoning [10029] +PASS: User Controllable Charset [10030] +PASS: User Controllable HTML Element Attribute (Potential XSS) [10031] +PASS: Viewstate [10032] +PASS: Directory Browsing [10033] +PASS: Heartbleed OpenSSL Vulnerability (Indicative) [10034] +PASS: Strict-Transport-Security Header [10035] +PASS: HTTP Server Response Header [10036] +PASS: Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) [10037] +PASS: Content Security Policy (CSP) Header Not Set [10038] +PASS: X-Backend-Server Header Information Leak [10039] +PASS: Secure Pages Include Mixed Content [10040] +PASS: HTTP to HTTPS Insecure Transition in Form Post [10041] +PASS: HTTPS to HTTP Insecure Transition in Form Post [10042] +PASS: User Controllable JavaScript Event (XSS) [10043] +PASS: Big Redirect Detected (Potential Sensitive Information Leak) [10044] +PASS: Retrieved from Cache [10050] +PASS: X-ChromeLogger-Data (XCOLD) Header Information Leak [10052] +PASS: Cookie without SameSite Attribute [10054] +PASS: CSP [10055] +PASS: X-Debug-Token Information Leak [10056] +PASS: Username Hash Found [10057] +PASS: X-AspNet-Version Response Header [10061] +PASS: PII Disclosure [10062] +PASS: Permissions Policy Header Not Set [10063] +PASS: Timestamp Disclosure [10096] +PASS: Hash Disclosure [10097] +PASS: Cross-Domain Misconfiguration [10098] +PASS: Source Code Disclosure [10099] +PASS: Weak Authentication Method [10105] +PASS: Reverse Tabnabbing [10108] +PASS: Modern Web Application [10109] +PASS: Dangerous JS Functions [10110] +PASS: Authentication Request Identified [10111] +PASS: Session Management Response Identified [10112] +PASS: Verification Request Identified [10113] +PASS: Script Served From Malicious Domain (polyfill) [10115] +PASS: Absence of Anti-CSRF Tokens [10202] +PASS: Private IP Disclosure [2] +PASS: Session ID in URL Rewrite [3] +PASS: Script Passive Scan Rules [50001] +PASS: Stats Passive Scan Rule [50003] +PASS: Insecure JSF ViewState [90001] +PASS: Java Serialization Object [90002] +PASS: Sub Resource Integrity Attribute Missing [90003] +PASS: Charset Mismatch [90011] +PASS: Application Error Disclosure [90022] +PASS: WSDL File Detection [90030] +PASS: Loosely Scoped Cookie [90033] +WARN-NEW: Non-Storable Content [10049] x 3 + http://host.docker.internal:8080/ (404 Not Found) + http://host.docker.internal:8080/health (200 OK) + http://host.docker.internal:8080/robots.txt (404 Not Found) +WARN-NEW: ZAP is Out of Date [10116] x 1 + http://host.docker.internal:8080/robots.txt (404 Not Found) +WARN-NEW: Insufficient Site Isolation Against Spectre Vulnerability [90004] x 1 + http://host.docker.internal:8080/health (200 OK) +FAIL-NEW: 0 FAIL-INPROG: 0 WARN-NEW: 3 WARN-INPROG: 0 INFO: 0 IGNORE: 0 PASS: 64 +Automation plan warnings: + Job spider error accessing URL http://host.docker.internal:8080/ status code returned : 404 expected 200 diff --git a/submissions/attachments/lab9/zap-after/zap-report.html b/submissions/attachments/lab9/zap-after/zap-report.html new file mode 100644 index 000000000..eea87c068 --- /dev/null +++ b/submissions/attachments/lab9/zap-after/zap-report.html @@ -0,0 +1,724 @@ + + + + +ZAP Scanning Report + + + +

+ + + ZAP Scanning Report +

+

+ + +

+ + Site: http://host.docker.internal:8080 + +

+ +

+ Generated on Tue, 7 Jul 2026 18:48:11 +

+ +

+ ZAP Version: 2.16.1 +

+ +

+ ZAP by Checkmarx +

+ + +

Summary of Alerts

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Risk LevelNumber of Alerts
+
High
+
+
0
+
+
Medium
+
+
0
+
+
Low
+
+
2
+
+
Informational
+
+
1
+
+
False Positives:
+
+
0
+
+
+ + + + +

Summary of Sequences

+

For each step: result (Pass/Fail) - risk (of highest alert(s) for the step, if any).

+ + + + + + +

Alerts

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameRisk LevelNumber of Instances
Insufficient Site Isolation Against Spectre VulnerabilityLow1
ZAP is Out of DateLow1
Non-Storable ContentInformational3
+
+ + + +

Alert Detail

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
Insufficient Site Isolation Against Spectre Vulnerability
Description +
Cross-Origin-Resource-Policy header is an opt-in header designed to counter side-channels attacks like Spectre. Resource should be specifically set as shareable amongst different origins.
+ +
URLhttp://host.docker.internal:8080/health
MethodGET
ParameterCross-Origin-Resource-Policy
Attack
Evidence
Other Info
Instances1
Solution +
Ensure that the application/web server sets the Cross-Origin-Resource-Policy header appropriately, and that it sets the Cross-Origin-Resource-Policy header to 'same-origin' for all web pages.
+
+ +
'same-site' is considered as less secured and should be avoided.
+
+ +
If resources must be shared, set the header to 'cross-origin'.
+
+ +
If possible, ensure that the end user uses a standards-compliant and modern web browser that supports the Cross-Origin-Resource-Policy header (https://caniuse.com/mdn-http_headers_cross-origin-resource-policy).
+ +
Reference + https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Embedder-Policy + +
CWE Id693
WASC Id14
Plugin Id90004
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
ZAP is Out of Date
Description +
The version of ZAP you are using to test your app is out of date and is no longer being updated.
+
+ +
The risk level is set based on how out of date your ZAP version is.
+ +
URLhttp://host.docker.internal:8080/robots.txt
MethodGET
Parameter
Attack
Evidence
Other InfoThe latest version of ZAP is 2.17.0
Instances1
Solution +
Download the latest version of ZAP from https://www.zaproxy.org/download/ and install it.
+ +
Reference + https://www.zaproxy.org/download/ + +
CWE Id1104
WASC Id45
Plugin Id10116
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Informational
Non-Storable Content
Description +
The response contents are not storable by caching components such as proxy servers. If the response does not contain sensitive, personal or user-specific information, it may benefit from being stored and cached, to improve performance.
+ +
URLhttp://host.docker.internal:8080/
MethodGET
Parameter
Attack
Evidenceno-store
Other Info
URLhttp://host.docker.internal:8080/health
MethodGET
Parameter
Attack
Evidenceno-store
Other Info
URLhttp://host.docker.internal:8080/robots.txt
MethodGET
Parameter
Attack
Evidenceno-store
Other Info
Instances3
Solution +
The content may be marked as storable by ensuring that the following conditions are satisfied:
+
+ +
The request method must be understood by the cache and defined as being cacheable ("GET", "HEAD", and "POST" are currently defined as cacheable)
+
+ +
The response status code must be understood by the cache (one of the 1XX, 2XX, 3XX, 4XX, or 5XX response classes are generally understood)
+
+ +
The "no-store" cache directive must not appear in the request or response header fields
+
+ +
For caching by "shared" caches such as "proxy" caches, the "private" response directive must not appear in the response
+
+ +
For caching by "shared" caches such as "proxy" caches, the "Authorization" header field must not appear in the request, unless the response explicitly allows it (using one of the "must-revalidate", "public", or "s-maxage" Cache-Control response directives)
+
+ +
In addition to the conditions above, at least one of the following conditions must also be satisfied by the response:
+
+ +
It must contain an "Expires" header field
+
+ +
It must contain a "max-age" response directive
+
+ +
For "shared" caches such as "proxy" caches, it must contain a "s-maxage" response directive
+
+ +
It must contain a "Cache Control Extension" that allows it to be cached
+
+ +
It must have a status code that is defined as cacheable by default (200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501).
+ +
Reference + https://datatracker.ietf.org/doc/html/rfc7234 +
+ + https://datatracker.ietf.org/doc/html/rfc7231 +
+ + https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html + +
CWE Id524
WASC Id13
Plugin Id10049
+
+ + + + + +

Sequence Details

+ With the associated active scan results. + + + +
+ + + + + + + diff --git a/submissions/attachments/lab9/zap-after/zap-report.json b/submissions/attachments/lab9/zap-after/zap-report.json new file mode 100644 index 000000000..41d8cf08c --- /dev/null +++ b/submissions/attachments/lab9/zap-after/zap-report.json @@ -0,0 +1,129 @@ +{ + "@programName": "ZAP", + "@version": "2.16.1", + "@generated": "Tue, 7 Jul 2026 18:48:11", + "created": "2026-07-07T18:48:11.527195054Z", + "site":[ + { + "@name": "http://host.docker.internal:8080", + "@host": "host.docker.internal", + "@port": "8080", + "@ssl": "false", + "alerts": [ + { + "pluginid": "90004", + "alertRef": "90004-1", + "alert": "Insufficient Site Isolation Against Spectre Vulnerability", + "name": "Insufficient Site Isolation Against Spectre Vulnerability", + "riskcode": "1", + "confidence": "2", + "riskdesc": "Low (Medium)", + "desc": "

Cross-Origin-Resource-Policy header is an opt-in header designed to counter side-channels attacks like Spectre. Resource should be specifically set as shareable amongst different origins.

", + "instances":[ + { + "id": "7", + "uri": "http://host.docker.internal:8080/health", + "nodeName": null, + "method": "GET", + "param": "Cross-Origin-Resource-Policy", + "attack": "", + "evidence": "", + "otherinfo": "" + } + ], + "count": "1", + "systemic": false, + "solution": "

Ensure that the application/web server sets the Cross-Origin-Resource-Policy header appropriately, and that it sets the Cross-Origin-Resource-Policy header to 'same-origin' for all web pages.

'same-site' is considered as less secured and should be avoided.

If resources must be shared, set the header to 'cross-origin'.

If possible, ensure that the end user uses a standards-compliant and modern web browser that supports the Cross-Origin-Resource-Policy header (https://caniuse.com/mdn-http_headers_cross-origin-resource-policy).

", + "otherinfo": "", + "reference": "

https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Embedder-Policy

", + "cweid": "693", + "wascid": "14", + "sourceid": "10" + }, + { + "pluginid": "10116", + "alertRef": "10116", + "alert": "ZAP is Out of Date", + "name": "ZAP is Out of Date", + "riskcode": "1", + "confidence": "3", + "riskdesc": "Low (High)", + "desc": "

The version of ZAP you are using to test your app is out of date and is no longer being updated.

The risk level is set based on how out of date your ZAP version is.

", + "instances":[ + { + "id": "3", + "uri": "http://host.docker.internal:8080/robots.txt", + "nodeName": null, + "method": "GET", + "param": "", + "attack": "", + "evidence": "", + "otherinfo": "The latest version of ZAP is 2.17.0" + } + ], + "count": "1", + "systemic": false, + "solution": "

Download the latest version of ZAP from https://www.zaproxy.org/download/ and install it.

", + "otherinfo": "

The latest version of ZAP is 2.17.0

", + "reference": "

https://www.zaproxy.org/download/

", + "cweid": "1104", + "wascid": "45", + "sourceid": "8" + }, + { + "pluginid": "10049", + "alertRef": "10049-1", + "alert": "Non-Storable Content", + "name": "Non-Storable Content", + "riskcode": "0", + "confidence": "2", + "riskdesc": "Informational (Medium)", + "desc": "

The response contents are not storable by caching components such as proxy servers. If the response does not contain sensitive, personal or user-specific information, it may benefit from being stored and cached, to improve performance.

", + "instances":[ + { + "id": "1", + "uri": "http://host.docker.internal:8080/", + "nodeName": null, + "method": "GET", + "param": "", + "attack": "", + "evidence": "no-store", + "otherinfo": "" + }, + { + "id": "5", + "uri": "http://host.docker.internal:8080/health", + "nodeName": null, + "method": "GET", + "param": "", + "attack": "", + "evidence": "no-store", + "otherinfo": "" + }, + { + "id": "4", + "uri": "http://host.docker.internal:8080/robots.txt", + "nodeName": null, + "method": "GET", + "param": "", + "attack": "", + "evidence": "no-store", + "otherinfo": "" + } + ], + "count": "3", + "systemic": false, + "solution": "

The content may be marked as storable by ensuring that the following conditions are satisfied:

The request method must be understood by the cache and defined as being cacheable (\"GET\", \"HEAD\", and \"POST\" are currently defined as cacheable)

The response status code must be understood by the cache (one of the 1XX, 2XX, 3XX, 4XX, or 5XX response classes are generally understood)

The \"no-store\" cache directive must not appear in the request or response header fields

For caching by \"shared\" caches such as \"proxy\" caches, the \"private\" response directive must not appear in the response

For caching by \"shared\" caches such as \"proxy\" caches, the \"Authorization\" header field must not appear in the request, unless the response explicitly allows it (using one of the \"must-revalidate\", \"public\", or \"s-maxage\" Cache-Control response directives)

In addition to the conditions above, at least one of the following conditions must also be satisfied by the response:

It must contain an \"Expires\" header field

It must contain a \"max-age\" response directive

For \"shared\" caches such as \"proxy\" caches, it must contain a \"s-maxage\" response directive

It must contain a \"Cache Control Extension\" that allows it to be cached

It must have a status code that is defined as cacheable by default (200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501).

", + "otherinfo": "", + "reference": "

https://datatracker.ietf.org/doc/html/rfc7234

https://datatracker.ietf.org/doc/html/rfc7231

https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

", + "cweid": "524", + "wascid": "13", + "sourceid": "3" + } + ] + } + ], + "sequences":[ + ] + +} diff --git a/submissions/attachments/lab9/zap-after/zap.yaml b/submissions/attachments/lab9/zap-after/zap.yaml new file mode 100644 index 000000000..a4f6e9189 --- /dev/null +++ b/submissions/attachments/lab9/zap-after/zap.yaml @@ -0,0 +1,41 @@ +env: + contexts: + - excludePaths: [] + name: baseline + urls: + - http://host.docker.internal:8080/health + - http://host.docker.internal:8080/ + parameters: + failOnError: true + progressToStdout: false +jobs: +- parameters: + enableTags: false + maxAlertsPerRule: 10 + type: passiveScan-config +- parameters: + maxDuration: 1 + url: http://host.docker.internal:8080/ + type: spider +- parameters: + maxDuration: 0 + type: passiveScan-wait +- parameters: + format: Long + summaryFile: /home/zap/zap_out.json + rules: [] + type: outputSummary +- parameters: + reportDescription: '' + reportDir: /zap/wrk/ + reportFile: zap-report.html + reportTitle: ZAP Scanning Report + template: traditional-html + type: report +- parameters: + reportDescription: '' + reportDir: /zap/wrk/ + reportFile: zap-report.json + reportTitle: ZAP Scanning Report + template: traditional-json + type: report diff --git a/submissions/attachments/lab9/zap-before/headers-health-before.txt b/submissions/attachments/lab9/zap-before/headers-health-before.txt new file mode 100644 index 000000000..fbfdb9faa --- /dev/null +++ b/submissions/attachments/lab9/zap-before/headers-health-before.txt @@ -0,0 +1,5 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Date: Tue, 07 Jul 2026 18:47:02 GMT +Content-Length: 27 + diff --git a/submissions/attachments/lab9/zap-before/zap-baseline.log b/submissions/attachments/lab9/zap-before/zap-baseline.log new file mode 100644 index 000000000..ce704a19d --- /dev/null +++ b/submissions/attachments/lab9/zap-before/zap-baseline.log @@ -0,0 +1,117 @@ +Using the Automation Framework +Total of 3 URLs +PASS: Vulnerable JS Library (Powered by Retire.js) [10003] +PASS: In Page Banner Information Leak [10009] +PASS: Cookie No HttpOnly Flag [10010] +PASS: Cookie Without Secure Flag [10011] +PASS: Re-examine Cache-control Directives [10015] +PASS: Cross-Domain JavaScript Source File Inclusion [10017] +PASS: Content-Type Header Missing [10019] +PASS: Anti-clickjacking Header [10020] +PASS: X-Content-Type-Options Header Missing [10021] +PASS: Information Disclosure - Debug Error Messages [10023] +PASS: Information Disclosure - Sensitive Information in URL [10024] +PASS: Information Disclosure - Sensitive Information in HTTP Referrer Header [10025] +PASS: HTTP Parameter Override [10026] +PASS: Information Disclosure - Suspicious Comments [10027] +PASS: Off-site Redirect [10028] +PASS: Cookie Poisoning [10029] +PASS: User Controllable Charset [10030] +PASS: User Controllable HTML Element Attribute (Potential XSS) [10031] +PASS: Viewstate [10032] +PASS: Directory Browsing [10033] +PASS: Heartbleed OpenSSL Vulnerability (Indicative) [10034] +PASS: Strict-Transport-Security Header [10035] +PASS: HTTP Server Response Header [10036] +PASS: Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) [10037] +PASS: Content Security Policy (CSP) Header Not Set [10038] +PASS: X-Backend-Server Header Information Leak [10039] +PASS: Secure Pages Include Mixed Content [10040] +PASS: HTTP to HTTPS Insecure Transition in Form Post [10041] +PASS: HTTPS to HTTP Insecure Transition in Form Post [10042] +PASS: User Controllable JavaScript Event (XSS) [10043] +PASS: Big Redirect Detected (Potential Sensitive Information Leak) [10044] +PASS: Retrieved from Cache [10050] +PASS: X-ChromeLogger-Data (XCOLD) Header Information Leak [10052] +PASS: Cookie without SameSite Attribute [10054] +PASS: CSP [10055] +PASS: X-Debug-Token Information Leak [10056] +PASS: Username Hash Found [10057] +PASS: X-AspNet-Version Response Header [10061] +PASS: PII Disclosure [10062] +PASS: Permissions Policy Header Not Set [10063] +PASS: Timestamp DisclosurUsing the Automation Framework +Total of 3 URLs +PASS: Vulnerable JS Library (Powered by Retire.js) [10003] +PASS: In Page Banner Information Leak [10009] +PASS: Cookie No HttpOnly Flag [10010] +PASS: Cookie Without Secure Flag [10011] +PASS: Re-examine Cache-control Directives [10015] +PASS: Cross-Domain JavaScript Source File Inclusion [10017] +PASS: Content-Type Header Missing [10019] +PASS: Anti-clickjacking Header [10020] +PASS: X-Content-Type-Options Header Missing [10021] +PASS: Information Disclosure - Debug Error Messages [10023] +PASS: Information Disclosure - Sensitive Information in URL [10024] +PASS: Information Disclosure - Sensitive Information in HTTP Referrer Header [10025] +PASS: HTTP Parameter Override [10026] +PASS: Information Disclosure - Suspicious Comments [10027] +PASS: Off-site Redirect [10028] +PASS: Cookie Poisoning [10029] +PASS: User Controllable Charset [10030] +PASS: User Controllable HTML Element Attribute (Potential XSS) [10031] +PASS: Viewstate [10032] +PASS: Directory Browsing [10033] +PASS: Heartbleed OpenSSL Vulnerability (Indicative) [10034] +PASS: Strict-Transport-Security Header [10035] +PASS: HTTP Server Response Header [10036] +PASS: Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) [10037] +PASS: Content Security Policy (CSP) Header Not Set [10038] +PASS: X-Backend-Server Header Information Leak [10039] +PASS: Secure Pages Include Mixed Content [10040] +PASS: HTTP to HTTPS Insecure Transition in Form Post [10041] +PASS: HTTPS to HTTP Insecure Transition in Form Post [10042] +PASS: User Controllable JavaScript Event (XSS) [10043] +PASS: Big Redirect Detected (Potential Sensitive Information Leak) [10044] +PASS: Retrieved from Cache [10050] +PASS: X-ChromeLogger-Data (XCOLD) Header Information Leak [10052] +PASS: Cookie without SameSite Attribute [10054] +PASS: CSP [10055] +PASS: X-Debug-Token Information Leak [10056] +PASS: Username Hash Found [10057] +PASS: X-AspNet-Version Response Header [10061] +PASS: PII Disclosure [10062] +PASS: Permissions Policy Header Not Set [10063] +PASS: Timestamp Disclosure [10096] +PASS: Hash Disclosure [10097] +PASS: Cross-Domain Misconfiguration [10098] +PASS: Source Code Disclosure [10099] +PASS: Weak Authentication Method [10105] +PASS: Reverse Tabnabbing [10108] +PASS: Modern Web Application [10109] +PASS: Dangerous JS Functions [10110] +PASS: Authentication Request Identified [10111] +PASS: Session Management Response Identified [10112] +PASS: Verification Request Identified [10113] +PASS: Script Served From Malicious Domain (polyfill) [10115] +PASS: Absence of Anti-CSRF Tokens [10202] +PASS: Private IP Disclosure [2] +PASS: Session ID in URL Rewrite [3] +PASS: Script Passive Scan Rules [50001] +PASS: Stats Passive Scan Rule [50003] +PASS: Insecure JSF ViewState [90001] +PASS: Java Serialization Object [90002] +PASS: Sub Resource Integrity Attribute Missing [90003] +PASS: Insufficient Site Isolation Against Spectre Vulnerability [90004] +PASS: Charset Mismatch [90011] +PASS: Application Error Disclosure [90022] +PASS: WSDL File Detection [90030] +PASS: Loosely Scoped Cookie [90033] +WARN-NEW: Storable and Cacheable Content [10049] x 2 + http://host.docker.internal:8080 (404 Not Found) + http://host.docker.internal:8080/sitemap.xml (404 Not Found) +WARN-NEW: ZAP is Out of Date [10116] x 1 + http://host.docker.internal:8080/sitemap.xml (404 Not Found) +FAIL-NEW: 0 FAIL-INPROG: 0 WARN-NEW: 2 WARN-INPROG: 0 INFO: 0 IGNORE: 0 PASS: 65 +Automation plan warnings: + Job spider error accessing URL http://host.docker.internal:8080 status code returned : 404 expected 200 diff --git a/submissions/attachments/lab9/zap-before/zap-report.html b/submissions/attachments/lab9/zap-before/zap-report.html new file mode 100644 index 000000000..93662fc1f --- /dev/null +++ b/submissions/attachments/lab9/zap-before/zap-report.html @@ -0,0 +1,566 @@ + + + + +ZAP Scanning Report + + + +

+ + + ZAP Scanning Report +

+

+ + +

+ + Site: http://host.docker.internal:8080 + +

+ +

+ Generated on Tue, 7 Jul 2026 18:46:35 +

+ +

+ ZAP Version: 2.16.1 +

+ +

+ ZAP by Checkmarx +

+ + +

Summary of Alerts

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Risk LevelNumber of Alerts
+
High
+
+
0
+
+
Medium
+
+
0
+
+
Low
+
+
1
+
+
Informational
+
+
1
+
+
False Positives:
+
+
0
+
+
+ + + + +

Summary of Sequences

+

For each step: result (Pass/Fail) - risk (of highest alert(s) for the step, if any).

+ + + + + + +

Alerts

+ + + + + + + + + + + + + + + + + + + + + + +
NameRisk LevelNumber of Instances
ZAP is Out of DateLow1
Storable and Cacheable ContentInformational2
+
+ + + +

Alert Detail

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
ZAP is Out of Date
Description +
The version of ZAP you are using to test your app is out of date and is no longer being updated.
+
+ +
The risk level is set based on how out of date your ZAP version is.
+ +
URLhttp://host.docker.internal:8080/sitemap.xml
MethodGET
Parameter
Attack
Evidence
Other InfoThe latest version of ZAP is 2.17.0
Instances1
Solution +
Download the latest version of ZAP from https://www.zaproxy.org/download/ and install it.
+ +
Reference + https://www.zaproxy.org/download/ + +
CWE Id1104
WASC Id45
Plugin Id10116
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Informational
Storable and Cacheable Content
Description +
The response contents are storable by caching components such as proxy servers, and may be retrieved directly from the cache, rather than from the origin server by the caching servers, in response to similar requests from other users. If the response data is sensitive, personal or user-specific, this may result in sensitive information being leaked. In some cases, this may even result in a user gaining complete control of the session of another user, depending on the configuration of the caching components in use in their environment. This is primarily an issue where "shared" caching servers such as "proxy" caches are configured on the local network. This configuration is typically found in corporate or educational environments, for instance.
+ +
URLhttp://host.docker.internal:8080/robots.txt
MethodGET
Parameter
Attack
Evidence
Other InfoIn the absence of an explicitly specified caching lifetime directive in the response, a liberal lifetime heuristic of 1 year was assumed. This is permitted by rfc7234.
URLhttp://host.docker.internal:8080/sitemap.xml
MethodGET
Parameter
Attack
Evidence
Other InfoIn the absence of an explicitly specified caching lifetime directive in the response, a liberal lifetime heuristic of 1 year was assumed. This is permitted by rfc7234.
Instances2
Solution +
Validate that the response does not contain sensitive, personal or user-specific information. If it does, consider the use of the following HTTP response headers, to limit, or prevent the content being stored and retrieved from the cache by another user:
+
+ +
Cache-Control: no-cache, no-store, must-revalidate, private
+
+ +
Pragma: no-cache
+
+ +
Expires: 0
+
+ +
This configuration directs both HTTP 1.0 and HTTP 1.1 compliant caching servers to not store the response, and to not retrieve the response (without validation) from the cache, in response to a similar request.
+ +
Reference + https://datatracker.ietf.org/doc/html/rfc7234 +
+ + https://datatracker.ietf.org/doc/html/rfc7231 +
+ + https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html + +
CWE Id524
WASC Id13
Plugin Id10049
+
+ + + + + +

Sequence Details

+ With the associated active scan results. + + + +
+ + + + + + + diff --git a/submissions/attachments/lab9/zap-before/zap-report.json b/submissions/attachments/lab9/zap-before/zap-report.json new file mode 100644 index 000000000..34a8c10ff --- /dev/null +++ b/submissions/attachments/lab9/zap-before/zap-report.json @@ -0,0 +1,89 @@ +{ + "@programName": "ZAP", + "@version": "2.16.1", + "@generated": "Tue, 7 Jul 2026 18:46:35", + "created": "2026-07-07T18:46:35.340313135Z", + "site":[ + { + "@name": "http://host.docker.internal:8080", + "@host": "host.docker.internal", + "@port": "8080", + "@ssl": "false", + "alerts": [ + { + "pluginid": "10116", + "alertRef": "10116", + "alert": "ZAP is Out of Date", + "name": "ZAP is Out of Date", + "riskcode": "1", + "confidence": "3", + "riskdesc": "Low (High)", + "desc": "

The version of ZAP you are using to test your app is out of date and is no longer being updated.

The risk level is set based on how out of date your ZAP version is.

", + "instances":[ + { + "id": "3", + "uri": "http://host.docker.internal:8080/sitemap.xml", + "nodeName": null, + "method": "GET", + "param": "", + "attack": "", + "evidence": "", + "otherinfo": "The latest version of ZAP is 2.17.0" + } + ], + "count": "1", + "systemic": false, + "solution": "

Download the latest version of ZAP from https://www.zaproxy.org/download/ and install it.

", + "otherinfo": "

The latest version of ZAP is 2.17.0

", + "reference": "

https://www.zaproxy.org/download/

", + "cweid": "1104", + "wascid": "45", + "sourceid": "8" + }, + { + "pluginid": "10049", + "alertRef": "10049-3", + "alert": "Storable and Cacheable Content", + "name": "Storable and Cacheable Content", + "riskcode": "0", + "confidence": "2", + "riskdesc": "Informational (Medium)", + "desc": "

The response contents are storable by caching components such as proxy servers, and may be retrieved directly from the cache, rather than from the origin server by the caching servers, in response to similar requests from other users. If the response data is sensitive, personal or user-specific, this may result in sensitive information being leaked. In some cases, this may even result in a user gaining complete control of the session of another user, depending on the configuration of the caching components in use in their environment. This is primarily an issue where \"shared\" caching servers such as \"proxy\" caches are configured on the local network. This configuration is typically found in corporate or educational environments, for instance.

", + "instances":[ + { + "id": "1", + "uri": "http://host.docker.internal:8080/robots.txt", + "nodeName": null, + "method": "GET", + "param": "", + "attack": "", + "evidence": "", + "otherinfo": "In the absence of an explicitly specified caching lifetime directive in the response, a liberal lifetime heuristic of 1 year was assumed. This is permitted by rfc7234." + }, + { + "id": "4", + "uri": "http://host.docker.internal:8080/sitemap.xml", + "nodeName": null, + "method": "GET", + "param": "", + "attack": "", + "evidence": "", + "otherinfo": "In the absence of an explicitly specified caching lifetime directive in the response, a liberal lifetime heuristic of 1 year was assumed. This is permitted by rfc7234." + } + ], + "count": "2", + "systemic": false, + "solution": "

Validate that the response does not contain sensitive, personal or user-specific information. If it does, consider the use of the following HTTP response headers, to limit, or prevent the content being stored and retrieved from the cache by another user:

Cache-Control: no-cache, no-store, must-revalidate, private

Pragma: no-cache

Expires: 0

This configuration directs both HTTP 1.0 and HTTP 1.1 compliant caching servers to not store the response, and to not retrieve the response (without validation) from the cache, in response to a similar request.

", + "otherinfo": "

In the absence of an explicitly specified caching lifetime directive in the response, a liberal lifetime heuristic of 1 year was assumed. This is permitted by rfc7234.

", + "reference": "

https://datatracker.ietf.org/doc/html/rfc7234

https://datatracker.ietf.org/doc/html/rfc7231

https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

", + "cweid": "524", + "wascid": "13", + "sourceid": "6" + } + ] + } + ], + "sequences":[ + ] + +} diff --git a/submissions/attachments/lab9/zap-before/zap.yaml b/submissions/attachments/lab9/zap-before/zap.yaml new file mode 100644 index 000000000..216ceea13 --- /dev/null +++ b/submissions/attachments/lab9/zap-before/zap.yaml @@ -0,0 +1,40 @@ +env: + contexts: + - excludePaths: [] + name: baseline + urls: + - http://host.docker.internal:8080 + parameters: + failOnError: true + progressToStdout: false +jobs: +- parameters: + enableTags: false + maxAlertsPerRule: 10 + type: passiveScan-config +- parameters: + maxDuration: 1 + url: http://host.docker.internal:8080 + type: spider +- parameters: + maxDuration: 0 + type: passiveScan-wait +- parameters: + format: Long + summaryFile: /home/zap/zap_out.json + rules: [] + type: outputSummary +- parameters: + reportDescription: '' + reportDir: /zap/wrk/ + reportFile: zap-report.html + reportTitle: ZAP Scanning Report + template: traditional-html + type: report +- parameters: + reportDescription: '' + reportDir: /zap/wrk/ + reportFile: zap-report.json + reportTitle: ZAP Scanning Report + template: traditional-json + type: report diff --git a/submissions/lab9.md b/submissions/lab9.md new file mode 100644 index 000000000..849fa9d0b --- /dev/null +++ b/submissions/lab9.md @@ -0,0 +1,206 @@ +# Lab 9 submission + +**Host:** Apple Silicon Mac. **Scanner versions:** Trivy `0.59.1`, OWASP ZAP `2.16.1`, govulncheck `v1.1.4`. + +--- + +## Task 1 — Trivy Scans + SBOM + Triage + +### Scans run + +```bash +docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ + aquasec/trivy:0.59.1 image --severity HIGH,CRITICAL quicknotes:lab6 + +docker run --rm -v "$PWD:/repo" aquasec/trivy:0.59.1 fs \ + --severity HIGH,CRITICAL --skip-dirs .vagrant --skip-dirs .git /repo + +docker run --rm -v "$PWD:/repo" aquasec/trivy:0.59.1 config \ + --severity HIGH,CRITICAL /repo + +docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ + -v "$PWD/submissions/attachments/lab9/trivy:/out" \ + aquasec/trivy:0.59.1 image --format cyclonedx --output /out/sbom.cdx.json quicknotes:lab6 +``` + +### Scan summaries + +| Scan | HIGH | CRITICAL | Artifact | +|------|-----:|---------:|----------| +| Image (OS layer debian) | 0 | 0 | [`trivy/image-scan.txt`](attachments/lab9/trivy/image-scan.txt) | +| Image (Go binary stdlib) | 10 | 0 | same | +| Filesystem (excl. `.vagrant`) | 0 | 0 | [`trivy/fs-scan.txt`](attachments/lab9/trivy/fs-scan.txt) | +| Config (before `USER` fix) | 1 | 0 | [`trivy/config-scan.txt`](attachments/lab9/trivy/config-scan.txt) | +| Config (after `USER` fix) | 0 | 0 | [`trivy/config-scan-after.txt`](attachments/lab9/trivy/config-scan-after.txt) | + +### CycloneDX SBOM (first 30 lines) + +See [`trivy/sbom-head.txt`](attachments/lab9/trivy/sbom-head.txt) · full file [`trivy/sbom.cdx.json`](attachments/lab9/trivy/sbom.cdx.json) + +### Triage table (every HIGH/CRITICAL) + +| ID / Finding | Source | Disposition | Reason | +|--------------|--------|-------------|--------| +| CVE-2026-25679 … CVE-2026-42499 (10×) | Image / Go stdlib in binary (`v1.24.13`) | **WATCH** | Embedded toolchain CVEs; distroless OS layer is clean. Re-check when bumping `golang:1.24-alpine` builder to a patched release (by **2026-12-31**). | +| AVD-DS-0002 missing `USER` in Dockerfile | Config scan | **FIX** | Added `USER nonroot:nonroot` to final stage in `app/Dockerfile` — config scan clean after fix. | +| AsymmetricPrivateKey in `.vagrant/.../private_key` | FS scan (without skip) | **FALSE POSITIVE** | Local Vagrant SSH key under `.gitignore`; not shipped in image. FS scan uses `--skip-dirs .vagrant`. | + +### Design questions (a–d) + +**a) CVE severity is one input, not the answer** + +Also consider: **reachability** (is vulnerable code path used?), **exploit availability** (PoC in the wild?), **deployment context** (internal API vs public internet), **compensating controls** (distroless, read-only rootfs, no shell). A HIGH CVE in an unused stdlib package is lower risk than a MEDIUM in code you call on every request. + +**b) Why distroless often shows zero OS CVEs** + +Minimal base = few packages = tiny attack surface and few NVD entries. No shell, package manager, or libc beyond what a static binary needs — fewer components to patch and fewer paths for container escape. + +**c) When is `.trivyignore` right vs theater?** + +Right: documented **ACCEPT** with owner, expiry date, and link to risk decision (e.g. dev-only path). Theater: blanket ignores to make CI green without triage, or permanent suppressions with no review date. + +**d) What future problem does the SBOM solve?** + +When the next **Log4Shell-style** event hits, you query the SBOM (“do we ship `log4j` / `stdlib` at version X?”) in minutes instead of grepping repos. It is the inventory for incident response and license compliance. + +--- + +## Task 2 — ZAP Baseline + Security Header Fix + +### ZAP runs + +```bash +# Before fix (base URL) +docker run --rm -v "$PWD/submissions/attachments/lab9/zap-before:/zap/wrk:rw" \ + ghcr.io/zaproxy/zaproxy:2.16.1 zap-baseline.py \ + -t http://host.docker.internal:8080 -r zap-report.html -J zap-report.json -I + +# After fix (/health) +docker run --rm -v "$PWD/submissions/attachments/lab9/zap-after:/zap/wrk:rw" \ + ghcr.io/zaproxy/zaproxy:2.16.1 zap-baseline.py \ + -t http://host.docker.internal:8080/health -r zap-report.html -J zap-report.json -I +``` + +### ZAP triage + +| ID | Name | Risk | URL | Disposition | Reason | +|----|------|------|-----|-------------|--------| +| 10049 | Storable and Cacheable Content | Info | `/robots.txt`, `/sitemap.xml` | **FIX** | Added `Cache-Control: no-cache, no-store, must-revalidate, private` + `Pragma: no-cache` via middleware. `/health` no longer cacheable. | +| 10116 | ZAP is Out of Date | Low | spider URLs | **ACCEPT** | Scanner metadata, not an app defect. Re-evaluate when upgrading ZAP image. | +| 90004 | Insufficient Site Isolation (Spectre) | Low | `/health` | **ACCEPT** | JSON API without cross-origin documents; COOP/COEP less critical than for HTML apps. Re-evaluate **2026-12-31**. | +| 10020–10038, 10063 | Header rules (CSP, X-Frame, etc.) | — | API JSON | **FIX** (proactive) | ZAP marked PASS on `application/json` responses; middleware adds headers anyway for defense in depth + unit test guard. | + +### Code fix — `app/security.go` middleware + +```go +func securityHeaders(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + h := w.Header() + h.Set("X-Content-Type-Options", "nosniff") + h.Set("X-Frame-Options", "DENY") + h.Set("Content-Security-Policy", "default-src 'none'") + h.Set("Referrer-Policy", "no-referrer") + h.Set("Permissions-Policy", "geolocation=(), microphone=(), camera=()") + h.Set("Cache-Control", "no-cache, no-store, must-revalidate, private") + h.Set("Pragma", "no-cache") + next.ServeHTTP(w, r) + }) +} +``` + +Wired in `main.go` via `server.Handler()`. Test: `TestSecurityHeaders_PresentOnAllRoutes` in `handlers_test.go`. + +### Before / after evidence + +**Before** (`/health` headers): + +``` +HTTP/1.1 200 OK +Content-Type: application/json +(no security headers) +``` + +[`zap-before/headers-health-before.txt`](attachments/lab9/zap-before/headers-health-before.txt) + +**After** (`/health` headers): + +``` +Cache-Control: no-cache, no-store, must-revalidate, private +Content-Security-Policy: default-src 'none' +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +Permissions-Policy: geolocation=(), microphone=(), camera=() +Referrer-Policy: no-referrer +``` + +[`zap-after/headers-health-after.txt`](attachments/lab9/zap-after/headers-health-after.txt) + +ZAP: before **WARN** `Storable and Cacheable Content` on 404 paths; after `/health` scan shows **Non-Storable Content** (cache headers present). Reports: [`zap-before/`](attachments/lab9/zap-before/) · [`zap-after/`](attachments/lab9/zap-after/) + +### Design questions (e–g) + +**e) Why middleware, not per-handler headers?** + +One place enforces policy on **all** routes; impossible to forget a handler. Tests assert middleware once; removing middleware breaks the test. + +**f) `CSP: default-src 'none'` — what breaks?** + +Blocks browsers from loading any sub-resource (scripts, styles, images). Fine for a **JSON API** with no HTML. Would break a website with inline JS/CSS unless you allowlist sources. + +**g) Cost of blind ACCEPT on ZAP informational findings** + +You train reviewers to ignore the report; real issues hide in noise. Each ACCEPT should cite why the risk does not apply to this deployment. + +--- + +## Bonus — `govulncheck` in CI + +### Workflow addition (`.github/workflows/ci.yml`) + +```yaml + govulncheck: + name: govulncheck + runs-on: ubuntu-24.04 + defaults: + run: + working-directory: app + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + with: + go-version: '1.24' + - run: go install golang.org/x/vuln/cmd/govulncheck@v1.1.4 + - run: govulncheck ./... +``` + +`ci-ok` now depends on `govulncheck`. + +### Red / green demonstration + +- **Red** (intentional `golang.org/x/crypto@v0.3.0` + `ssh.Dial` in isolated module): [`govulncheck-red.txt`](attachments/lab9/govulncheck-red.txt) — reports reachable `GO-2026-5020` etc. +- **Green** (QuickNotes on CI Go 1.24): job passes on clean `app/` without vulnerable imports. + +### Design questions (h–j) + +**h) Reachability vs module presence** + +Trivy flags “stdlib v1.24.13 contains CVE” if present in the binary. `govulncheck` traces **call paths** — if you do not call the vulnerable function, it may not block. That cuts triage noise but requires keeping the scanner updated. + +**i) Why pin govulncheck version?** + +Reproducible CI: `@latest` can change vulnerability DB logic or exit behavior between runs without a code change in your repo. + +**j) What govulncheck won't catch** + +OS packages in the container image, misconfigured `compose.yaml`, secrets in git, and non-Go dependencies — Trivy image/config/fs scans cover those layers. + +--- + +## Artifacts + +| Path | Description | +|------|-------------| +| `app/security.go` | Security headers middleware | +| `app/Dockerfile` | `USER nonroot:nonroot` (Trivy config fix) | +| `.github/workflows/ci.yml` | + `govulncheck` job | +| `submissions/attachments/lab9/` | Scan logs, SBOM, ZAP reports | From 0a943fc3e13e0791e5ad68cda46ca1ab2bbdf63a Mon Sep 17 00:00:00 2001 From: Andrei Markov Date: Tue, 7 Jul 2026 23:54:08 +0300 Subject: [PATCH 05/18] fix(lab9): run govulncheck on Go 1.25.11 to clear stdlib CVEs --- .github/workflows/ci.yml | 2 +- .../attachments/lab9/govulncheck-green.txt | 77 +------------------ submissions/lab9.md | 6 +- 3 files changed, 6 insertions(+), 79 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0db8e1e1..825705b8e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,7 +112,7 @@ jobs: fetch-depth: 1 - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 with: - go-version: '1.24' + go-version: '1.25.11' cache: true cache-dependency-path: app/go.mod - run: go install golang.org/x/vuln/cmd/govulncheck@v1.1.4 diff --git a/submissions/attachments/lab9/govulncheck-green.txt b/submissions/attachments/lab9/govulncheck-green.txt index ccfb5ca5d..e7589224d 100644 --- a/submissions/attachments/lab9/govulncheck-green.txt +++ b/submissions/attachments/lab9/govulncheck-green.txt @@ -1,76 +1 @@ -=== Symbol Results === - -Vulnerability #1: GO-2026-5039 - Arbitrary inputs are included in errors without any escaping in - net/textproto - More info: https://pkg.go.dev/vuln/GO-2026-5039 - Standard library - Found in: net/textproto@go1.26.1 - Fixed in: net/textproto@go1.26.4 - Example traces found: - #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls textproto.Reader.ReadMIMEHeader - -Vulnerability #2: GO-2026-5037 - Inefficient candidate hostname parsing in crypto/x509 - More info: https://pkg.go.dev/vuln/GO-2026-5037 - Standard library - Found in: crypto/x509@go1.26.1 - Fixed in: crypto/x509@go1.26.4 - Example traces found: - #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify - #2: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.VerifyHostname - #3: main.go:20:13: quicknotes.main calls log.Fatalf, which eventually calls x509.HostnameError.Error - -Vulnerability #3: GO-2026-4971 - Panic in Dial and LookupPort when handling NUL byte on Windows in net - More info: https://pkg.go.dev/vuln/GO-2026-4971 - Standard library - Found in: net@go1.26.1 - Fixed in: net@go1.26.3 - Example traces found: - #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which calls net.Listen - -Vulnerability #4: GO-2026-4947 - Unexpected work during chain building in crypto/x509 - More info: https://pkg.go.dev/vuln/GO-2026-4947 - Standard library - Found in: crypto/x509@go1.26.1 - Fixed in: crypto/x509@go1.26.2 - Example traces found: - #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify - -Vulnerability #5: GO-2026-4946 - Inefficient policy validation in crypto/x509 - More info: https://pkg.go.dev/vuln/GO-2026-4946 - Standard library - Found in: crypto/x509@go1.26.1 - Fixed in: crypto/x509@go1.26.2 - Example traces found: - #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify - -Vulnerability #6: GO-2026-4870 - Unauthenticated TLS 1.3 KeyUpdate record can cause persistent connection - retention and DoS in crypto/tls - More info: https://pkg.go.dev/vuln/GO-2026-4870 - Standard library - Found in: crypto/tls@go1.26.1 - Fixed in: crypto/tls@go1.26.2 - Example traces found: - #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls tls.Conn.HandshakeContext - #2: main.go:43:15: quicknotes.main calls signal.Notify, which eventually calls tls.Conn.Read - -Vulnerability #7: GO-2026-4866 - Case-sensitive excludedSubtrees name constraints cause Auth Bypass in - crypto/x509 - More info: https://pkg.go.dev/vuln/GO-2026-4866 - Standard library - Found in: crypto/x509@go1.26.1 - Fixed in: crypto/x509@go1.26.2 - Example traces found: - #1: main.go:37:31: quicknotes.main calls http.Server.ListenAndServe, which eventually calls x509.Certificate.Verify - -Your code is affected by 7 vulnerabilities from the Go standard library. -This scan also found 4 vulnerabilities in packages you import and 7 -vulnerabilities in modules you require, but your code doesn't appear to call -these vulnerabilities. -Use '-show verbose' for more details. +No vulnerabilities found. diff --git a/submissions/lab9.md b/submissions/lab9.md index 849fa9d0b..4563cfd70 100644 --- a/submissions/lab9.md +++ b/submissions/lab9.md @@ -168,17 +168,19 @@ You train reviewers to ignore the report; real issues hide in noise. Each ACCEPT - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 with: - go-version: '1.24' + go-version: '1.25.11' - run: go install golang.org/x/vuln/cmd/govulncheck@v1.1.4 - run: govulncheck ./... ``` `ci-ok` now depends on `govulncheck`. +> **Why Go 1.25.11 for this job?** CI `vet`/`test` stay on Go 1.23/1.24. `govulncheck` on Go **1.24.13** reports **8 reachable stdlib vulnerabilities** (exit code 3) — fixes are in **1.25.11+**, not backported to 1.24. The gate runs on the patched toolchain so a clean app passes; the **red** demo still uses an intentional bad dependency. + ### Red / green demonstration - **Red** (intentional `golang.org/x/crypto@v0.3.0` + `ssh.Dial` in isolated module): [`govulncheck-red.txt`](attachments/lab9/govulncheck-red.txt) — reports reachable `GO-2026-5020` etc. -- **Green** (QuickNotes on CI Go 1.24): job passes on clean `app/` without vulnerable imports. +- **Green** (QuickNotes on Go 1.25.11): [`govulncheck-green.txt`](attachments/lab9/govulncheck-green.txt) — `No vulnerabilities found.` ### Design questions (h–j) From 91afcb9f69d901ac56dd6a1f256312ca9f6d7e51 Mon Sep 17 00:00:00 2001 From: Andrei Markov Date: Tue, 7 Jul 2026 23:57:01 +0300 Subject: [PATCH 06/18] docs(lab9): add govulncheck red/green CI links and screenshots --- submissions/attachments/lab9/green_ci.png | Bin 0 -> 268368 bytes submissions/attachments/lab9/red_ci.png | Bin 0 -> 322560 bytes submissions/lab9.md | 17 ++++++++++++++--- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 submissions/attachments/lab9/green_ci.png create mode 100644 submissions/attachments/lab9/red_ci.png diff --git a/submissions/attachments/lab9/green_ci.png b/submissions/attachments/lab9/green_ci.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec2b8f28a9499a97bf8f12fcc1e8974dffbb6f2 GIT binary patch literal 268368 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

EfqQ}O9^Ct`_eLhcf?1<{Mb19qS?n)x@4FuL z21(T4+A!eBgBZR=8+3HxD8H(TUbG?{60*|kl-x-ILJ_W$;QP($!!EWc=~cN;IY9ZE z@ySP2K<}Dd_oVoL2!{QSfBJ$2>;zfLi)PUMpI;Q9RMf9?<5X6Ro&7j1GweajpIyi0 zUz$!Uvz)alyG~cmKa7q1yKg2E3;3YODf=D)QRY4fk*L0K5{%y#`Cl4Mea-2-=4aA)`ZQ+>3y z%hU_v{qHMf#%(e{hP!gam0(&Z~|~=;%~Q(Lz?efM9mw~Rcdz- zpXp?NGV1%Nx+;Iu$Iw5KYtB`t^7ZC6lKH$4rjkD;Z=M$~@;Vr36_|8AjYnZ%>C{$!y8@35fMe6 zqGT4lphgDZ3KUnudqX9AOTh??e1K}l6&+-?$DyDNUix~lR-sVlekDLGc>avvV?D#M z@j@#5C$IDVkoh~?_z?HZMb(CuqhFrZe}6b|kO4+SkF7>0O6>i?hU*LVv`HjLbtCSm zEjX$Bp7|2lXrcEZM}b~@H$_^&;q>$~&xq{MT&K7u zfqRkaEEH_U1yuxcA^57`(J_5AOZ6vF6;BiMOGywI@tqo85it?ram|ZE_r2Nb%Y1I+#`j z?eD2EMk>H*)sx5H<#PW{eQ^04_kF@|SCo%R^`SC@87JiC#-)YZ(^ZmRuTO)(6~=9? z427v$W3NYx_`keZu>bh%t%*jpf!p!y z*?px8aN{&8`x1MmqXdr0wr6XfyE)t5>EemHgYTMVNKC#aftN031bINFZ?1>kR?kDP zx+F>$GR*RaKBgW8{Jk-Qg9JE@jVs6uJ?`_$0dLQe|L`^7?RAGg-|P9y+q--H-992` z{F#$DztvpX;B>$GzRE<6TO@yw{Vb4s+e=Uf9B_12Y%Us`)lE7)MQJP+2?}p|Tt7tw zHlPP;s!_m~rUvQB6PK4IH8w@HmF5S07w(6= zvt2H7e{;hlUwr*t+mj3mcY@^=!zcD9)>>_l^!4{Cpv|CFRQOQG%!D5rF;hw;%7 z7Hg=?)3nqRWox6w4p`_#yW}>~T-(~Nq2HPs1()Z28@mJx{+x9ESC^Xkr*uj%Fy1F2 zyU#{_pEWp)yW>orn)$N*P#UDUpQ)Ump=?h!>F%>}mwC^X4D-q2@rDF7y03L|p(dvN z$3gOc{pAZcs%U=USAKT)Q{sQ{b8lDzbD%09sN?S$0DsK&1`&aCGAGPZ|LK3VYyNoI zpHEicxt{|~*ni%j{Rf*5bZZgb&w*IWd}IE}+Xv>a6TnP<@l>u=-X|FwaCZs~u1 za4-14>D7Hhk^}^wzx!g~`SV6JFA$qzS-L&}%Ev$01HO)8_mg01QX+Fr~rZ7(PH@7W}OjuF@jz+tuE;quSUiu*}6a9tqBD>{z*oBQF9bEp*+_=f!% zYww>K7QeJR#3n<(__Tlc4_@#AZy@k!LFXTxR=|aY4!AG@+T7sVfA|kj?vDpsk%qsi zlKlC31KuJ2J-6rf&lHXqa0|d2AnXf%|IY@7*Yiohl@ag;WfcG6KcM;yyn)t>eb&Eu z3OxAz`2ei05fxJU`w>VL-TbyXfp_c*Q-`gbVE2(n5aHk5E(J`uistwB%bfQCFVUDN z+S8de!v%3&?aPap9fM-wxKZK&vhl?svE)sum%mY@ov_8IZK|!%TOh~(nM$4#NA)aV zS91X0o4mNK2UYsEJerL9desvW@uU9Mrf`V(+FFH$r;B|3b+Qa%JY?8uIh?huY#7sG zIY|B5?IC3mSZY3EK9~Wfxmb#tGhPYBmx>=HVA1@ZZ`}P2YtEYq@cFQgx26?Rb2N^I zjQh4VRz>1A>psuPXBZ*79)?K4&p7kdXIEGcjSBgT0-jRr`#CRJ?`p}?h561Dn|J^! zNwKhLxDCB`)tq<7pZus#eR6fW6Px)GDaHL7Sd9GhO7dSkpoe>y%qf6lAM*|v0$-oq z(|v>Q*9EdGOykcZc@}{PqK}hKn=<(ybD~C>^5-C#2TZaF`ZLy`4vWd6TID<~02PFO zcz@>~^(y{M8;3!?$xnH9s?I6w_-2(U`#Mq7+iSyF?950Z8k1pFXY~;&*}l*b9_@=S=m*3%s8>#eFss0LJ}6?uQnhSTO+{b4z=y&krg?Jy)N$ zi0%k}HjJB`-@djc{Pv@I+S-FbqbzRPVejVf|8REKK~cW%-|!VhlvGk$k?!skknV2j zl9nzhm6n$7?(QxDaml5drIucnUU)A2d_TYYex8|U=KkI@{^JZg2JE%Rd7Q`bex22_ zNP}oH+4YunD;cyZC?2kx1YwKe6F0ltn>8bqxS#CM8XZwQFUJS-gRT#fCT(V3eR4tz z;Rgbft69yw3gko{`WpF4vft;5!s)r!*O~vW@O+c|>bsS*S)DdV$HTY(huCv% zh+t_MkN4W2B4lC8Zr!zBxX$&FRla<3%|N)#wC(ddogtu2UHys2n$5n#X2mr=yb~Q96 zFI14sI~JQ=l3hMkx4JHH!xoo?Vpv@uVSR72zx=nwPM+FB>#&fp*9z!-oB1FqFT?a! zf?}7;+~aWJS+n1mTu;(2ymE>`X?!Niu7KS!uzPGQz8O8OEWt=>XZTI z{qxOBxmB}GB>C=d(KZ3f;=6Dvmu=!s^~J}T3h6f3<{zA-p3E7hhL!fc6zJw^chKod zqhS&TF<8ohfC+!@!(|JxeVAcyH!#&3^DwRrjF-p)i`2h`v@!Gke-Cf}eo+0tzMw1g zJy3bk$SSgv0^gn8*nil+?^zmqt*ae#2|Pe-p~mZ0s&tOTWfSSCMv_=K1}j9|mwYQ9l#>kag2s4NIj6) zbe?hV09_8dH(1`K+!<0rcX-9JIg)7vV5e_^unWMtEhT~o392>A;#n`|6<-0_WE>H- zIvn@0Lvb`8?(G(vy7i?zG_7CaKY3egA+`Qd@$$dqYuR}Nk3RtlGE_$R8Pyx$AT4QxqV2g@Q&!OH`Jr{kga@Y+$D4?nk<_Y7*;eM`9 z0^v-y7yENTlV+;Qi)KSUO> z@$~M@YftAPz(a5v8p^AG{OZ5?NCZB+^^oAi+%ZEqgM_}%ca-xI9MP8QC}jK}9#CCU zkMQA&rSS{yT(`L3OVxMEqGxEhXZkhfBlt7rqQL(yI;1NA;U7~$@HuHx$>FW(;2q%} zN<7Ns`zj&U_{*vTmcQ-$|MQ2PBIQGGA;vk*8n`o*=6On{B?qj!@Vwd;`0Ps&ea`?= zOyLx3uwSA89=g2tYoJUKr9>7zYBc;?m&G14(f{rz)=}``9ONxb-`W2?dNBw8oIKs5As<<~?3888!eB&YdQaC-G1ms2JFoA~8 zNV_AKmk`fjwD$9?e?4+#ye{{7?{tUxP;9?rk2kBdjr9UX;>q)6KmqIlN%Z0IB#~D* zvQncG5kP*$yyL`>Hi{ytUICr7rM?o*fT2|&_mAF_{MmRx^UI(>K3Sf>78v5%cbjvD zJT(oSlGgTmU@cOof-{SV37$ZemfJklHkBB8R&{_dk8YPAQ(MuIy`kr+uLeI6vSBG7 z>bo9#6coPimo2Cy!A+`5xd`QoPLSrkr*4#3&b$+p(8H_jBUT)9sc-~V$wiVbZ^k^1 zycc9T1%5*}N0L_j`OXB#x7U(KFowl!u4%GgeO^T0n_O*w?Lhu$`57eP9j_tgn=iuN zIU85nh_x>tqZaa~^0u2KnK6)t^|I>J%cj{de1>@q;~5u}QSqW34)T2>F=H!N>0VG( zydSMa*2j63l=@qzMi!W5Oz|&N7ZiHMGPyY?pIj>)Ign(1FHn7Ap7PYMFYY#EN|7x0`8+je(8{1- z%S7|ax-5q0T^73r*_$`nTHQNuMLBdpw5cl8uL=q>kP|BF&~f0rOnWYeKK+!o4XanF z`+TrM9YTeXy536QPnKyrpdI!ItqCm;iKm?ug-W*9MY(-FVX^%hO84%cv-*#SuBD6H zOk4&-eM4^u)qe~?VEBHs+48Re7%K$jFaFm61Z6aKAO1RwX7 zav9rLm&*qgk`G4Aj0eXMH3GqUkrBiK)U1ZU`;QWPu&Rk_UCAa>A@A-pe`R=@-v>0p zv3tv29AjZ%X83djBr=p2inAWpGY;l+c(c@EL`m*{+40u^qhwyE zHVyAukN!4?#u5SI^iwA(MUu`eN3uUr#5jP zAleHQlNo_Q{dkZ0@mdg{mTtZMJ0mNR^P|pf2?V;(oN=fm7R(d;_ZYY zvjcn)+aPxNLK+=#YPDN-dF?NF)tBqM+V!~k;+~Av6dSq%6wiGN79ssiv_ch*WImT{ zLzyC-gg2iS8Z>TxWc~v7>LBZK%rovT1}?t$9lq?2qW4z1W0mcvd$!1)k561`ofApUKxqvwBN*84}I?28_fY#c}s9dNt-vl^>c#7XdFH$ zk;#DmUhN)`&fj1Oo=Hy$oE@!rUvw7i19Gb_OmcICF~ zs@tJlERm1Q*|%4C0m6t&@m#9_rvxo-``MTLA23XnTh8d5=O9`i2LE)P-3--{8{3b8 z^*yKSRqJ)Ra4;f(lh>{%6HD&HFo#s5#}q^MeHjU*Q|d>D}mr40Z3cXPD!DqE0Boioh8-&Y;ze z(8$1*86!~sS2&Pwp(C5X%w(%snFwUT7rf5(*!JxihI4?ZGHty!;9A%zgQs6NY;a<# z{8NdSGsT}_#XcB-eSZx=mn95d&Omo_(BQiR_a!fQerd}{qEPEB11~|P->KO8ex>o-?acuJ@pwb9%tS&MzDD_v_k2kvV8{4H!Ri51HmHW z4BXQ>caOh((&o||z}zGC?MukOPxl_#d{sFN3`c*+jC6Gz@N73*uSznztCQ9vfqE{w zw+>PED;B?_8sSO=u7!t(B~3R@m@6##4PebAvyF0JeOzl{S7jw*;GD_08jtfgbG5eN zux3-wcY0B6A9Tv}xqf$&CMItPE7Y#Gq5s*xD^V};%{cKs$|%h=`3A-Ag`fLer+Z;=bMwj2)zJDCLLl7?)^c1=uEh(iUdFl!El1GDMG;<_ zg?as8WEC1pF0A6TzVKJgH{`)Nj6O;y_uWJvowUJVo^bc(1|~9#Z_n4;N&YTUz9 z>*n!x=TbLdow%>^!2kquZfc^bZbtLtN_9TRG8j^c_L(BCT~9wB(ZpSuDuv-O0KJK$ zun`gYr%|M^LN{3nyz|3Y7Y)AkNhRS}H_P1_ot7_fFmdIci6~7jC%fG|ZtWM--WS)% znd6<&?0(lrrWBP;^rH65ZIV}gh4O(zz+pI+MOxP%t$6+IPfr3y<7QN#8)f1;Sr9q2 z9)A4x`#bz^S&xDw)t^%foNkR4IxU#}0T95-@BbixHC4xOCVo!kt-8Rr{~&-(qO8d_ z{dky*VstJy=Y0YhV24}b`+YSFl@?DJ$L8!DgN;qJ?S;=HAY9U?K3!=!c27aZg^ zGh=K6^15t_r^PQVr?loTr!d|BFtJgr8Y*m?J6#UvrU>dtY4S^*f<#d<*h){qla z`T+FrDO=TUb?0C7?*m}BiHN~bW=?$AAQ47_rig#hzgr>8sOo}eAs2<-H1z=$ZgoJK zh)kG4ipBGZsO_M69{oX-*U~5h=-i~-zE)C=pXNR(<#viK{s7Rw$6iwo?=<)vns!~X z1c}CZBVG&3-@O(ZPMde5XSDZVr4=$>^Fd5+*O**6#~IQ-pnuYMFezZ?>r71&>C8V% zdb!wzAXh%%xUy-FNT=a*sLzF+5ufAn7c&ipN18uaDmvm~6;AAhm0-I+5>aT4)k_V< z0mYa8>Y(vetT@x_wT(AEzc`g{qVL^Tf}AyPYPo*rg>+^)sZf&9^*+9bj3lPitr3oR z&Qzp-Fvdb3i|z!BAbHQ%ux)Z~nJq+|!40Q}ktbEr(WWd2C>Xk?3!R#)eO+iLv-CY7 zbA{fLH$=)vVxC68eZ!UVv*A+BtVe971E0NZ_98|6dtTQ~R^!dr&KUa2KxdLCu5K#| zNP?UBHX;&Li=EBmw01!Gbz5=l{x7?$YH<39eAiA(9MK`|jMv?XTFlM+sJVUNZY;1E zuY>l?9VhL@Rf3-;#uM~EQ_iW)d?LIy$!q6$kt1owmp`@zI09`8Y^F}If_5jdJ^cR z05~&nu>1%88!j8E>uB903B(xri~dnwjyzru_lGd3vpVUP92D4%tYLbtW?sBtm~n)i z>pA>veonH$_eC3~Ew=W?P|S|v@|%-*6YV=O7s;k=%P+RZWkJKli=tyF-6$F7xs35l zd2<~L?dDIyMrzN33duX}!L2d|Z_A|G7c^TUG0uiR)j zr>2)3N#FoOI6iZHlA*_+GeYI4%GNb%Ld4(^QoikPQgd*d$3=SM?{B%UDh6y}G_*pb z0_ik3uJT`Sd+ICDl)&4>MhP^$c)GJjuhH!+OA3_@d^bZT8Otc$7|A3szfsWQQ zaZ~{jlSAues`)}ExDv1^9r>+ue-;{gOF{A+*PKo1akX7K-?&JT-dzKRE1JE^O!v45 zxZeJNCfuLV&RaN zk?sg^<51oB5w**I%)i}CVUe9$TY25GpsKT3%m0{v)+74j&Du7N6ku-0brc{m< ztLm2f`Chm=L&KGS4;eK@&;#gS|L;wxl4GqY)P}EYm|ruiF0OL5Sl2$WblrQi7iCf0 zlh5O0<VuDawEk)4%BQL!zsa!f6mvDR;UXUM)Pj6qrBcKA zNG7-I8#_h_5AC~ARjN!h2VzLtarEuW?$rd;=FU zoi6!ASVkSYp@3)ErX@|eb5j8Z+0mZ0E{KaY`p0-kHu_m7XUDdatMqrPQ8Lqcv zKVh2bgxDG~>e;j%^Q|Lqb+?x-7_%J?Xuv=YS68kWiJkVG5_qSZgt~)Z8Xih4&vO3Q z`#C{H+on(OF)nubnr)5U(}>14Nh!Q8SB#9L*&_L^K^1tr@(Cn+ zVt4yvTi)PH{xF$4M%-Q`a||&4j2qv$=ovnQb(BG)@TbKHs>E_-`Jr=+-3Fm32mVeF zKYVg0L!C0iG2oNsdRdz{;>8qBznksDn0l|bDO7m$hL%$IF}aBCruZ2l{K*ls1K&_g z=@%8}#b&!mIQ7}gbktXV*>5~?7O)B9&DT_an~4FANL7kj^}4Pcd~3egPu2mtb$+qe zm9awG)=AqjVEQTgmlNdu$LVcV&Ik-1V%yiRf0$Hn0(F@@TTvruenntFgKUG0^yv90HKR;D35p<<<8(X5arQbxIQP0+3FT2ELj z7zWfoiH?8Ozj&f9yD-1>8<$S<(M=@AF=JJnxR;I>hYJqLEOu)mWmFWTfTzIT&16_7 zO=EsXQ}rxJlJ&A)fgtyz4ic(45IWEz_n`hcqj;FskjH%&%2b!+6Z+==lULG9nfsWF z371@9S#W%$FIx*V7-0l-`I7fcnSMxo-1U{o{U6|CVT+7YpnJYNfwc9p?-0X#m&X5L`sg!VQ%> z5Q_zKNKW0xmMpA@XZ5YfWEcARcZ})$wWxnlXIvDgH5v z=H3qw1`($`@Y{Z-vOmr1_%A=7scPBLeB{Eqx?a0El4Lp-lQ~J^|5ux77kZ$#pCmak&27%X z7r2BYL$=*3{EDwwq!j*le7Yspv&sX(6w8Vl{NM1wM7cj3 zK0CP12%1)H^FIdBo3&nJ82e)2{5-;%-)p^h$$WvV$E)P{`ACAtJ;kV=YrwO_P{s?h4065~;i(KtLATX2iiv)t6XAaPo*KtL z%fh;*>-`}KBg~x>b#&T0_uH9Q%X$HWGbPhWvbsmd8B)u>_XaCPAtTo<2CnV~w35OU z|D*nW`K$hE|403E-z3lV=P}1x`!?OY|5yF{9L7!r2CC7&>K`Yd{$c!o)W42*L|l(cb- zEL@3fz%chgw76358r$oa8SGX&iTh*N@t-1*^N788I^2W@Cynr<*aNM&SPcGE|L&^Q z$6lihMFsKW8Msj0>;o!sC6 z40j;ee*PgjZ+LMC4^FnM^QF}vZ2beFE?fDy!nQ-ON@|S<9k*=WsPO*%8WWwzioXpU zi*xYM`1&rer>@M`)t)8T51$$a;u;lF+71nTT?IFYh`pA)qsKe8W}ON z{)9;@@Ky*H^2pz_El>Xv*ra28tB2-eY>K7j|JoHi-6_@db4I(vCwccGC*zjiD(mWF zZ+{opopa=iu_QMj_}0FdP%Wt5_7+cF$#isW6>;kUGA#IGDvuLwHkznc;cM2SVmMpv zn&1QbAdvgTeeED9M-~VoV_4Ygm3zkVb8zTM1F9=X&l$$tEUA+!KkA)(8Uf^P~G(jxm3g&P+ zzXQmj9M$`a4h3LWcNB#{ENFb(=Wq5d}KYGvCKV@ zM5>;kE|v*O@WFJl2BxOkzSjTY3K{kNN~doH{d37{UxLN?720jltKt z6z8hE+&KNjP^^c#64ioh9l?)^OA?_!zE!D)p7MWS;?@n1hm!23UbSGLv|Hltqn&l;Ans3t`Jnu1xG#9Vj{9^3qI9oOub3wN6Dww&X5r5 zZm81|W>wkdYp_lJWxANXFZve8WVnd_JszFPQrbJRCnBxGtZoTGS?n#Y8`w+^ljs7p z4+bFLD=?<_BA5EeM<>7leDRL~NNfxkfTbGa`@(Ae&*06}Hoh2P-w#+krBIWKEN%mx zkIzJw(U@kaA4iE)u+Q&*LL66hhfptX>)!>0E`Z1lDO15M+qj^%V=lU4*<`-Ysk-q) z$Q(B#4kEXiFXr%~8vo2WTj!=&r9ZK~4H6ae`gX^lQ;@B)Dt^=M2o}xtLF-rP!-BZ= z2THFj@SY-MY#$IncbwC?L={`A)3BQXn`A~aT$ys@jy()7X_yNc8~ipxQD~Gc{xc1R ze}7+{N3xeQyjLx*`Y!^={SN||rcyz6IX68p3IzDiIE!@Gb&gEutOKjYJ94h4YFYv* zx5W`oiCm@O#Lq5OvFZR<}1hNCK z49aC9Nci**)sf$6GX!)gG@n8s{o9#racvhn@A;{}Rb{=Vu7qmcYg!N7kT6yl%cUuO zKEVs;|2Y+<#ma^x`O4P#vC-ffR775oWh_KrJ_>*A#g2BMq=3Az37SD=-M9i8Q34v>4S^NV7 zxS`PaYqk4H?td7-HI$>>90SGL%f*90w8$Q+2E*P!41D#s#{V#Yw}ZbNv^N8s1Kk%o zSnVtL3GjLRo0eT@Io8SJSK9*14{LV&DwqB|$7jTTmG{E#$(~*}(ktj!ZGEe`l1P=D zvSPHOlV3*j)FygssrDTjy2T3*30b?0WhA_$yBJyqUs5F&ma80pR9aOUQ$4X0iO2eJ zWYt)xkj#isPbOaY+C3atZUh9z^UT|H?oVAj8z#kl{KH6jHRy)qT2Vqzr$l|%Y(ed6 zX~BiDFGry-=SkVLSEF0s&7-(&Wye5xt&4i|Ed8@%Wap{j{T#d?h$I(c4z zjy>A?8jgt#cCdo(*uMVu*uSbMoYz!^aD54%4M;{?)i{e~5E@50>uUY}9a`kBTsN@J z&_Eg}DSG1vZ>b&pCwSg&>%7O5SgRzw z*(>6XY*|g&J`hP<+f%%$!iz}L|F3j&SvT+cn}VsVM8|2GZ_zyj=b^5wGR{_LJG>@V z5W!7s%bE@1KO~aUcE5y!GaWkaCe9j_9mWiGN(FaPjRS}^Gmgif;g4mDqBE53h&0cu zv=su`Z<+I@T?F6`V<=}U?_T};paw$Jd(dvvBVR>Y1#KrMhMXhm;OIMn_(;w#GWwCj_3A1^qAOlTX+&JMfoQ00DxAjM zmIioBZ2hVl9Sq= zmCw*p(?q$SF%k)FVX$8XcOd2hqc4vG zNQSL-6gVi${Evugn+M{!4XZYh0Zcu&ta5nh@-@9?C-JZ-m+dsWsXa6rm;-4k)&G`1 zcpYw32R97JWD&kE>sr5IYFsj&7jSfbF~D%?F)EVi9O=Yr8RYf^p{!jmr5D0S<|Bx$ zx!rU69|sWse;mMr`;J!{78t2O>DX!&1dRJwG#Gpfsns&_9BO0HhiMzHy;%kd$bXXP zF-sS|6VI<@ku_20}8qUZ#n|&w-IDqi_8R8I`_!kRgDejCK!zJ%HD((U+4H;NVisL(08p6~7Dm8Xg z$q!PmHlecXbly!Hlz^$A4&WBQ7@XclN1ZY3wdeWS*$e?M9OUn?%%5aAm6nQ-*e;?* z8>?WGt5Q^sT?EFKh6mW*LWpp>{I$GH`kBVr9;!!8rC!)JYfk15(Ps0m?HMAfTp$LE zqJMgCxdo47GtP2P_9pzDFUwKlm#XI|;SwI_BU-w7v!_nm4fTNs{Ki~m8T83wLobG1 z^8Z4BcINT56yTcJ9767b3hmNd7477cZ4?>IC=xCk_e%Of--0k%l;3!?G~L51Ni3Of zC1t@sqO|--T%VvBDHH8Gi?8f(k@U%emJL!jQ)d=lGkoGAHX>_EXU2uMA<1cpbSy~j zH8jnAIZwFmQ<2XH$%m;SL6Jtac8Ai6FV-FiKe&{Mxu*+(@{%I0R__9SrMNRu4 z0ZP_nRn^;gYBcOt>KW+J+mFasxwHC0XnZ8JjwqT0|WyY;88_b0oJc=7D^)yiPixB8KDe) z8Qg^flZ7o%hV93R#fBS(0q4{c{rjg0w%(w7V$BbOn0~UySb9vRXdBuK40@flrRR|AYiM)b>#Mmp0rjMcNd%Np5%ZiW-E6vrB1 z{kRJmDAf)22bKQ+Xn^IB^ilW;K>UE!o&>7x7jX4m%ltSi583wa-Vb1*l3w67;X|Vm z&;YvvI*Ta!>;~SayBcVfvlv5JS~Y%u#ej}#s$KTy5XK|1z73ZAHc*m>Vh!H^TubW# zYQIQz@mbSSDo^ZFUFE<+xxMl}|HRk2(HvNLf1I$}_hREohOFm{xGo;(=F^7vU#2k_ zejfKA;p4B6dCHeF?f4htePRmf?<&zKEj5`YXDe?_D?r6n)~(ij(*{PZ`V|%`(Dx$n zlIPRZEbYlENg3OmfXf!T^;``Xv!waZdjAJcECSY;$E7-sSR*noNdOHH$^1VW;CCL( zk55AWmj?K@4-d0JBQTI=T~KAij}h-uvrOB*qvxyS)4swl^vK3JQ+Paa$4~D?UtxmP zSoy++^n5UMi&Y`CgA#4MIjm1{vVT5L7V=K4ei`f>Cdtb9DsK&$no*8dCSlo;Ib0}EJ` zd26?j4)NMA0tlNxIA=`5Ov{Vwek5f4&u^61#WO~eIRd=Gop{2YChOTP>09&OZmYr)%7ScYCn_w{Jx?QFSs z1^4YF?&T?jsaSDxVy5{kYh_$)`j%(PH)^_LYZon3+4%zTcvH2~GT)(mEp14duf9KQ z+YCc1b#TSG<<3!Ut+hJ?; zv%oM3O+SP$r%|ihtSkSZ7P_RkLBFyIZl#hn&C)KhO7%cBL)W1m3 zdY86>U_VXYG<^$ikc8v6V9n~=q~Nj^yTz(;bOFC6LgCw|JoXGC*mPO4Y&WW>C)(hz69rV3Dn@4vxctanJ7}XG;fRe8jqc3 zX~+-C{M^XTIxI=QbT>{K1XW+2A&d?KxuRpS^S0p2808run|I7mq{<$W3I8v1pSEwZ zx4$cUPHb^zv#S1#%YhoWFDBMr?xViEatJQxXurg(|5-GtI{$-;$YTrHwaB}ok7M#8kCjMEYpz<0Mxe925s@)ESzR!!lu+sj5+@8R9t-zS>kv56o^fOTaIf z0zH+L10^}XC>9w_*t`>)qgiK2H07*5}oK zW*WKN)l$bj-iBMKlBID$+ZW|b_MWJgfDsxSb!EE4CGdEo*iKC&cdnSx`Dz5|4V>*cEG>MD)BF1?A3 z$It&2uSu5gyZj4nFmmwKg5%!$-{-^u>*BV{ooV5 zHD>Di(^IF{@mY3o1uEaEZ#6GujL4lVmVBn3uP5z{UKNRZy)!=sOZtOHf0ZGG>RW&* z$%l4JqQ2?L$&z9h5BaVv$%k-W&+;q%F z)K9ACaSU2IK>`>BT-JmDjAV$OOIG=+D!ta1Jl$OvE>Vi|Wez z!ma*nVT6)vVn4UtWfxrzUsBt+sH9IO9IU1&rYuY6i^bQj$o4%ze=Mv!Yt6_RJQQEZ zNk=IkEj-v%lqXMV0kepxm-W;sbriZLvn{V*+CF8pwQ@r4cvt>Dc`=#U`@UY^Z8Jw3 zHF)_tTZ=ljo^B{YYu_bZK}vIh-<5ndYIpe!PjXES6;E93Ryn^wss42aE_Hn4GD5L> z!?*b=SR*lZr?u=+flM*sWnC2C0X1}@KFM=)djb5V+&O+T56#aSZ}M(+zPhs$xpx-F zzX_(Sg<^7%Q<;44^>I)6O;@~CX2g2hz#pq*=|icjbT3(9rk;?!nQ(F)hdm9 z)cPQ0VvSivAa`~r4o^p%Bo!dZ<*(!kC0x@zIs}> z!vJBiBlC0$zhFaflP=iY*VG*3k!?1Fl3~~VAa*T&ZJ<8!A%r{20+f-U_x!>*PWaxG z2XAXM({|~E6rz7_v!Qmf`U0ct8EYW5N`|7gtCzoP|p3<6s+a8D-GEg-msT1NABY1(y*?oYg&$WrL9VUZX?wUD}3eukB;KR9sz7Fm($zs+qB<=D?{8 zcF-_W!g)aUmO`(5Zpu;i<;1*L(LwOKtN@wGYAtxpUblVzNHJsR(NcSD+pP~_He+HKr?Vdq@y+ZF~y)0mB6 zp@(v@wLy*&@aVBI2e1d)&6z| znFI@-sk|VQigj@~Ia61!*)pI@FrzY*$OqnOH29IG=&=}c>Z%#Lp=VcaWYep`5`DW` zA+S&4ua@Y!?`(ucl=&V(qx~UsqtFf9%UkNI^>kqblWqD{dvI!zInK9@WYMsP|FJd(9DysRgm4_es6bY0>|+ z+GiZXM;1`ZpCur(1h zJCux6ETb7Ek*MN(7TvlrdWrK|)Y*+ds5a992`!~Cb9!`CsP$r)@k*rJWD&7;_1ZF5KeaOHYBR{&FCa-=_6ui5t(K4VY+h^T@U=EFCu@??neS0`cDS`2 zd^|Gu>Ntl1JXeo@HtW?EMmoPc_rZK)Ba6i?8$sz7o$ig#s*-=zflEyD@*m>1oL~os zlEIeW);@VMFr5B1s(H+e#;~;d`~pQ+ec7zN4cmjo(wFAkbkkH$XB&Fl3G;L`Ld4*X zoO6~0I)OhLdOW#YkV%b@e4GpyuwwOLXO1~bze}mAVN;a_qGy}3@6FjQq!;gW_w^t> z>>txswAr)pV2!xEs;;C<2=c5`;X#A9KdXnNF$ zb@!`dmHpD^!u^g5l!9_7JfU-_O7HxHLGBBl=9<`y*De@J`;I4EE#p2}B>qP5IvzUe ztwzp~kZSkSjv~Lgy^M;M#qajGGyH0?jjpv2r~RlTT5{t&%zmN2GcvzPc5}W_4%Gc8 zOh>wVSP9klb%>gGl>^?6ttLgp;$uDQhV9l$4ZVF>DTFSRpPfGQt@^XB~daQZ16=D#kqKWUx%)<60pDL*j zh4jQ4HtPVYcCG87>g;Ywzz11?@t_Q#m5oI@e_WMy8Pwb_%k+7;-J7UQg&OE_0^o0c zUTNVx*DHy`qXo7gvF^`Xqpvp@d*J*#l!aEF*Hl=%S_Lr6s9N8R3@i1+R@}CU&7)5K z$l4l64%z{8!_b0zG<3; zsXXQv{I?#PdldOB5=TnoY?OWc<$}Wnj0e7ZC4-|kN0IKDe7@jm8ZWrOkj~S1)u!tR z{hE#3AscPwty{xiGbjE8sFjj$NPO{h?X7?X#9y zykVu928U~JVrm%GN_V_@^!T~x8}fkh+>8?V`TbO}Lz6-jFigl#;4y#fF-aB|7=nM9 zACVnm%2eW+%xN9yy-{Y@+F-vSmdb{@ElKR{C7MKGXdnUpx@oU+IDYoEd~tsZr&;A- zBEM7v_o`X1=>luKrY}1r-`XvAV`@^d5kv|U1cPNh9lR*6SJ2O1SGj4OGR_%D| z$#O2SlUUcL2D@?r%GTmdh-<5H*=X57WG(S1@CGcY7xkM`5nuWctgmhr#Hp~{K+G2V z_z9+qYgTBcf4Gsu>TpXScLe2d5U#-{Qcra?WW1+MA4$S|?lk|f316l?FQ3C3%xGDz zvY&8KWcAk2P8433OUdNWpLg{qVzJ9+B{(-jRfT*)=Y0k+K0W5EXt_{HbyV>(Cg@mZrz~ZrRJ4k z0_t+o;Q6R%HHW?tUpE8FNHN{Z_cv+L40H~vO)=9SbO?onEv6^Fh5HY)M=dwFGaE${ z#|WfXwo}0~^;hFr=Jyk!oSo0(2AHO{Pa$@F-<6u~Xh(QlUquq8mLq-PCfj7!Nz^(G z<-V(5Wtm}ARfLd+wbh@oqI)dt(T$)@!Ni4$YT4`ZYnqHfRG87}yM9|Or_PXn_ zQ<&>Bmn+u3-9|X~zX$pK+V9KRR5reFlbX$~*_HmvZmdmWHZWn5Cpp0PsE?T$Ij`LL z`W4G4NeRG#2I_5R>=oZGHx{=9M;hgNhm`FNMaG|2U@++n924`LKoLhn=XdY4V*Jvk z29hW_9i&rjFL}i?fhmKFcoCLtzDN!F{n^tz{J0u^xYlwsJP(s1w{v5jzsST(c|;GUM^EyE%=WTE1<*w5&$Z*a`cz)Uy{}6>*2=V(+<(+vcoH4y5~_a~ckX zMeMDz->8ODmKzkp$>}Vu%3!9!>$>(#i{AqnXNK|@G{73Uj6U8nL{ePT_xpt+ZU^Fa z5*MkK<>m(MMXC`yS7Km7F3pQt(*|;*i6)t5SxsloLueUl$5H@VEid10B~~FLI}z&_BLaTWZ$En_%_COfCx>`-)?Sg>8Kn znS(d+jhx^xB|GH<3F4&dLrLrFmFo%-7Uv~j=z+UV$a?r~_SFB=*>%P>wJm!OqKF*9 zg9QZvQRz*JL^`7M-a9DLLKSI-Dk6Fm0j2jIkdg!;p(GGc1gQx%m{1i+fRNBjs4t#- z&w0Q5*}kBO4#_O{$TBcp$PpCK%4foYVwDh?>NuLR=bOD5y zP0MD03j_qz52qlk9C{0bs^Ed@51l#doi9DNCVBZCP~xgRWo*rc$L~N}Z?W#7<({m( zqw;JLDq#ev51)ilJ9}GnyhL*TL zgUjk>0>H&}8F1b|7RzXhS~D;63|iJk{7NnqV@Q^;9E!cSoAj;q>nGA;MTPBy#)udh z&If*8CyZV@A0#yNdskEC=1R?c?OcU*B}BCjR-FN)q-;w`!Mu>f#@XG`-pL40*oQL+ zUvt-HUH^OF^~sm=qCnW2J>W)lri@Pt;%vx!;MAO2nNUV)%EdDomU;6*hkG@#FuN0A zOAN&Gi|+v>Zi?WQ7Qs5%(P~?lJf{p>8G($Rb?>4ulCQ~06y8Mo;`d;7>8(sQ?Il&F z2Sts^_A3Wfn=-;qI{t2lidfV`7Wd|Pv4XC-N_(89Ye5iD%*)Gk|MlxCE1gDTT{rfT z`13)7E-)gc>OwU~?i{?q6=B>!&j}O=EDRkbW7aaaG8BAkH%K$K2$vUl_oEr`yCv4t ztmyIUysNKZHh@p*cz^HU5_BDrwV}yymGSaR4=uu8}MtJX&OWoVln0 zHBzniwU`sB>rpul5uIID1J?$dt<4Xbp*b z@AqD{+=&u3Zv&-9*s;X2`LBOV+64+h!-KNUONi&T2ME~IkGdljZhu7vZY6annDfM| zk{p%0k@JzGjmwtJyJ0c*ph_MWoxo0=Q3c;P5;}*Vsn-=csfd*a-)Y=Q+uQKq+H_@& z@U^ZT7U{?N0t&srIYM43drPXH;@?e#xsNvNZ*nSv1EDICIdPm9#} z3X7Prqt;&}HjibH@}n?~cB$mkN5+u2jnd-t2`;~B_^kmS&M%l45yuaQy`>t2)(=D0 zy2>uwjP-y2Fj9$mh&8Srkg36PZ0_^P{NAv4(5-ufMNH%(GE_lcovs8IevitH3 zUEdA6*3-FAMijx@8QEd zZXYs9DIkx+YkPK$E5Or^uH`UNH*%=4eUO+D;<_J1PP2_L^I2sd+e$&7=TQHB_~`sH zh!jO|C_XbLZddV`ru(k}rxiy@TCKxixj@lgWx7^4j=^1{KkvL((k<>+DZ80e(xiMe zZau1+z@_pDaj=wn%SUAowRMCY^Iwj$ion~Hzq`QwYLU+=Om9&Y@zC%PjEtJ_9oGgL z7X_-1t4ByUO(s1NBngDUomvhJUujVEd{$}x4~HZ|NN~O?sqFx(NU0Er{fNh1wQVMw z?-drl=aG!5(3jwaQHK2QP$g!Y4>!Wo1P!Z zQJ;BFWDS|{_gZYa6Jf~qWwlWg4W~EmSdwELxi}k2NpIQ7q_6&G<0KdM^&|}fPdk5? zoHLeuRjmE}4)3)HH2;oHknK5z1v|Nq^q5I-bkWfTuQfBcsO_*55JWS#wwXdLE-rB` zo1EZ{9aT2izU?FHr4;u4Lllu%r$Z5kfg*_)5e=}rDgT#4Cl$JB=RVCYo+hKapQw171DS8CsbV*K69|Zv%alWo7Ri1 z-gfL0wJ>ZK=NOpWoy>68M1|GbZ!O~cQIC27A-YIFBF{le<9t!v#DO}nd6Ss!t7OSH z6&g^{xE5!HYSM|GDQwxtrz&sQ&rVeHg99*)q)d9J1>~CcAD^&iN=^kFp5Q>vIA3)& zwz;uZv^M}~iOB7VS+w4^)tR>up^GGMV0%fJNv~;-;E}D25lL9UkCD0@JdVsVOa3eY z8JPbFo$jkvYAXz?h-!cSo`}0vbVI!N>j$iY-nYlhkYEU?<@}%E8zMRt`NosyRX*EN zdtk4;ACvPWdS*k@4xae{LKp5_)3bNJVKtIO9IN^aiVLRR?~W>L67CGZDtkfqKaCJi z?!AF-RdSpr_2teuv-Ba@NzC_g7d2cb|XFLFNf;D#=)3vE?PVO8@vyvz>jeN7WYgqvxm&Ry2mPn=6^vU2;o)8GYclg&VVTsvs4zH@rbm7fDwi%~2nKV+-+e%@kj7f=ugOYd zpy~JKrj8ENvjwLjNo?a^oxbgc1(^hJHqUcs<(D9i&k2?r7SqJqxBKmzzcyGL)jc3P zi3Tp6> zrBixHotzMie>Pg^ORDED>t71;l8yVg417?M@uV8^QV$w7g6z+6o9#C3j{A}eLIDFYY`L-Z z3(35X{99BGRRVCN!^O2aw-Kcf{j~KG51IS(u5O=(>V49ggfF9gCT8;6tWA4||i zzZ`Yv1b&0{k^J%&#PD4eR>GIBMDEioL&`IQOaZ{dgHiX}uHf{%1N7z4#WNW7sa=F# z6{0a8<)!{$cF;U+dKj=Fs8N~;8yPnWV7`a$40RF8<+1!QA{wC^?XeMqci-1up`h!Q zA3voq8OC$U%rw$bni4Y0FpFkW2LmzUA#q|gQOpN z?EZdxqEX*saya;qrdo5qq1WMBtfNhYId@{z{z+c3Rhb`og7<4dB|cH<6Dy^aEoUSq zviz-IC-B;)x1`$x+T)qFrzWSs%4=Ef`jv9ZOHHL8wn zy%0L>fKLf8zr*n&dEM+KC5aY1-2Ph=hObO~9HB*X&z|(QS)ta=oc1A?ecQUY5mh?f z&W?W~7@F1>o#Ls2Bf87sCc3xO+ zgd{O}CEazfJIp85GT=&Fl_0%K41l=07c7HKO4nyrhpZS>~9ExYUdgN!N*7 z#qdgQnfbla`v!&5boI0@a>1vGsTqUNO_DheI2UeR6hPR2t9KG1*t`(gWo%Yn+Ap!hD0=Nh^GPU`XooHB0YE zb5&dWM8jio@p>%9w&BC-v;=l=p(-Mi+!B^-R}$8SywD>Eq+F%%vS`l?L|;1DzR_3$ z57LhtuP|$Qz>UQ4T18rHds^8J6l60ka3-J67Z?G}Xab52a(xPkI>Ok_ zG+i8bjWzb&)*av&E;VP16`AZb)fmhWVo{9kxZu7NRknE|%3#0t63#PDSG0>evBNWd zi12y;c2RJ#sbLINdw}}{)TYlffz1goJ96o(a)MpqfmU}w&C;z&->W?n;{ug8 zOVah=G(jCMt%(!-yGGs{OUbfUtp0kQR^6~FEVO=|`fTD0Q+HBI!lM3bpKibKCd=%k z6S*ag$hFZTjULIiHV&n zY9I`5jPUt`6SmefaaA5fI8ZXrgUcHTy^%B%R=N8lH-f#sShgy!ZF_0XB5uSvZI~lz zQ7{G2p4wqcV)?^na)`y`@dYl}kg*aFWOgalBD+P0%u{&#?w1iL3n))ND}*C=k0!di?-$i#Z+<*<@jl=U}MpRXtkua6VdH&``a_16I~s2;Zk!TdIKz z#M{dyu?Km+3$ypWQ(B|G(MC>Ua7{Ueb8|QW`M|m#mei1F(YuLCfl893uW{cQMe8C)H#F8xQcdC6R zQ55|oZ{+0Z+@aZQ`b-*QoV%-(wpiQW82Vx1VsZk(PZ)RVbzd#v{S87?Tzq9la7LP? z@Or6~@ZtX45bLH{?$pTU%=)E+rX8eJ?~Td^zF2-6YLbS8WX&-F7B{k`WOwD)!kc9g zTWnPP&H|Ifrb&a54FEMQip|uDj7+jYc}7A4s4uysyAeZg6BOm+osbL+K^+tU_G#e2glm z=Pqy12l=(nux!=HC}SV-K6|yj-`!G0U6m`KK_v=4xT4~6lj*p7X&blR0;0;-#K@1h zMq!e= z3s}%W7QbP69dxyez2JOGQc9A`N0W;OIEdr?`EHkwtF@zsbrhchvy0~0N!RQhK9eNN zf6N%W7y+_^wZwfrJ`rqb{1!OEpi>2U12K@uML+V;Cc`i(_10%Ru#20rFS6QZ~#ecDnVuaeB$6ka25HtDA{V zq$m!hgx#kak*rsgKI>;HbwT1i^6W+KM8nK)ykeqnB=BMO;4@{B4x=AOm;gQB*!XTw zQhbAaCbC&4-i7(e3ACLby8H&q^+!I|jOf)quZbdh52hQcO?wjCs0SuO4!}9$t{EwJ z`F!%6t#=OM#Z48rgOb2<3Ni!!RD>mqVEi^|Qj*&2KI-}+MNeIgEwbjkpjY7I5V;V{ z6|dB9+x)MxwXdEPY;BS-d_D!fc9p{?Ch?LpGMMbfX~!SeqO|kWhQ3L$yhxDel-hl^ ztB+Rs({0GvqT_LTVQT)1K7TYZOdTnwAaZQd-(1`i8~KP%d9uIq2WGBLEDpW%eJAI{ z9tMh1yM2mkGB5NxF=spoHkqN*nt*2v`hsBl_ zKhrBU_}^9c_S`5hm$QR$>^W8KU8k)g-sYy(=cXD)+_!aFe`_|4BCkA4u_k+gI;{=_ zA01kC+-|=kd_nJUIq#1X!tA&s_B4T)LMy2+u7CJz&ql(r)8S)$mE zwv&Anl;FbFZ0sk->v7@AW*ulhenJ`EdA{;FW64v5A8gW%-VNAo;8Ws}fHiY%ot-8a z&=Y2pCvJzRfyz%#K1}trFchBdeImb6BkUzN@N2Z;nSj4;t80 z&lO*$Ts(0-c{A;)m}4+S{_8}{tmhRSfu{^k(i{ou^vx?fUm1<3_r9KbMZf>cF!Vas zf4f~8U<^)SaB@p5)%^BX;p@LW@SktoOrc}H33u+i_%D5b;prtjUD~l)a{Az%UwG=T z&#Ni()3sKHT&g+o6Dt0v#9?y3o!{A7+64#xG)8~Fz}Senpw-Gq^o92iiG`l4#o-(b zMk5ks=i;+*jH044F-AKTzyYLQpA`C6bQl69oyU)+`A+DqT7Cap(o_Li%1NK?de{CE5QE&H+P-8;ulpm$B!W*O+8Q8QsQ zyaGy;!VOMdS5@t*a%%3s68O2S??ZkQUMzzqxqcWXdH#Z6^sfwwU{*S^!L074(R8O! zefJc6p?|D5V$Y^FcqE+TXe{~2xuVWIBcALjM%`4p|NL?!W}>vqQM_+IBu_?ie_fGE z&@X)_f4Ib((Y&pQ$yoH1i6Y)!&lmKQHps4*Avq{_D{a1v>s?F@=tVQ-dA!I4Wz)tY z@@2CD5Gf{BP9Q61cr<7~ir#mnw6JV)TI{zv@3D!%c>=b|TB)yTqt}7>JRr*1wr;`A zQXI42Fa^Jh2Uyg%BtY6$0h^_i0*M+09vXQf=5n^uq9raVd#}+O4Ynti*n7_|H00uYG6!lfUG#@c2C{Oz|m7#K=3M@S&0f>-S+o&fh{#2trEiTK< zwGIOVSfn6|%z7m-4@h4LH*d*qhaI(H%UDn%eRrX2~O-frY={5e3 z#3j)qUwWDUp(D@w-67ZfJ8mn?PX2e)f#i}n(%YfF(x9Hc&ja<@ix3OqlH`7y@P@&a zh?fZ2hOcwY4y1$Pu66ET@GilO)vfho7MCx-ppOaTyZ4u_J4v@0wu}g4xF7AvyOD9? zZd-OnnH)Slw)mk`)4VX!h?aeU%F7%#2(G?>FGD(naXj&_Ew7?cZCz^%Vs=sxkz4T0h^vsoon=cjmYGska?R@|70RD)n7HJ zh3!fplwN7MN?HSm`#3cD_Fa=9eyen7@NIsP;np{n&9tmI5e^3;Kz@r4iQkv?gI9al zc^Q7*!30||2(3_{x3tiF^jy3(gI#4^#;Vcy^dTX5(d*=yqZ&j_NFBa9xE!?Uw5_07 zX@$XjAXK}R3rkM*z=16=VbPw9IhLu;T)VA9a;ZsiM=3CF%MG(JK-{UN2I5vY@npd_ z$iDEk+U;x{CCru_-ZxIOZ|zJs;8N*4sHhlUS|hQUTYA?3)8-89M*VDC2AO1Xw^ha? zj(Y0_=Mon5zWBZz-tA-id9P88`a><+FQigxjfIZGeXi(^FvLx*+zoD-pih2%NH&hF z5mC2n($QAXP|(zMgEF3%rH^gvL*FS*RZu30G5mh0Wm8NgbaK&t9+NGF%ULPs&5mws zarr^OG)z>xEvDx-O9U5AT;>8V#2{Xk;(~_HJQ%IYnPELRtc%2bx^J;B+wud>fBe}0 zdE4r%ceQqmnDgc?op2u0j3NNPYG{BFpv-YYaj5Pg?{z)U@+nc9kOZ z{$T69)iS=fYQ{&=J<-H@GpG!&Sf9wcPx-hD4w~h+#r3E(Q-%WM7_B)0Lr$?wM)2LD zh6}EPx!GEtO!i=ItsJ4IRfc-gAbQw4M43^v%P#LGeh0k&W5oZY;HV3~iLFp9M>O1i zs5&gLvXL(#RpzkIBtviNJ8Re(I%$_o#U3O?mP4V^c92x%uH@~bdU^6|t=>+__}~^R zJH3!%?{G&V_KN$--NW{D5eC%g$je|4=X3+U)3&p);a)|Gh$qw=G7r1k26}c_|4+F8L&IQ2hJO+f)Zoj4 zZ9nE$U5x@Hl3@E}%roJV^l;PR;;g9#%4`NWS&sKc|7nY^a$s?qLy!Q({UpyYIzYzEv`L2KG@t-#FKf%WR?W=Fg z>u6$NotBB>ue0nw?@a%uK(!b1ZI*Dlt0CxK4f;u9{I8`vo-j&x?DlI!!@gN4@&Cdg z{g(#O4tiG~R`RNai{ENmTJ zsmNph;i7&vO8?9BtG_7jhVW8HQtw!Tix{L1bK(FJz4J zZy};X?-ndaG7V=p(NAXjn<)Q%m_#dQtI-GuvOdhwAm;-5_3PKlD0m7h-7soA47Kjf z*`(8kzapTlEW>doHawpO#zorIEudXss751>JL%ZFzXHJjCE-umy;?b19|U?>8{FqP zRAbRY!9M=i0^x6K{?tp3MRTiPHFI$Ap;sMSmqtoH00)X_tUAxNf0=&t;ria-s+o<= zgObnnkrSLlbp~SuciOM7z|KBxW#zl?FrSv)yyfXhKm5uqOU}!g00%bTWxrmRyqG{O)+zPg_=w?soG}o^W&tnYyf^P!~$C^MawVy;*e5_kK0;%I& zDd_+akn_D$|9tZ2ji8qH)MC0))?mxi83%LnBOtu|E=oFj=m&up2Ei=4;c)g}SGkq- z+FKy5DbuFK7Xl=}Gt1w9^|r0^22MIvx4Lv!=-2yBJSs!Qw4M|HWdvls88Wvhgv{=4 z@ls@H9REP4H{R4W>z0=<5u5E!52&QWw&x$vtu;|CY!dqGqN}}PcB!bWr#IKO%dn_a zk&Wj9)C{D{$D%DEw%I3Gh?#7b61TV&>j28g5P-O?tfc?iJ*HoW-6MmsyQlk2Kr;O# zJiXd*n)DDlBCM>l{z2QxA*e%GZ7_wi7K8js8E=eRn1oc~?M;9VR49ND8syScE_`qar^5T#o1tWbJ;v%XCSvd_m&I#asVjZWnfopWA3 zuvk1Cm@HgN;sp45r_nc+N*jKJ#Q>+EkOka`$hw7P#_PT zxvXv48gqzw`h2~^g%!%R9T3K zC`gKk5GgnSOf9TUARr`u#wWt6C@*3MPP89{V+#sO{g#cAgPXh_%s<^uu+8hi3XeY144)n*z07Y7j)SNmR&JH+lVi1Cw?P5XkOd1fjdE3ZY?w{}>vQYgonm(nm`pc7S(}|Of!$7F|_1&l&hfp+Q7??0k5%o+- z?#W+0Ny;S|vU*cfl7#)NqJVH?PNmy}7GxLNs-s0FEEc&HS&$mSfbowBBT~Owg+7Ok672@1$<)Uo+3m@1!V$Z?DdF+q&=9eAE|0ZtINZ*J#Ixgz3uurK9S0Z~7)NGC zrV_^z0uW8PwM<|kn^J_Z4Ra*hDm(b-aTx$9N`w;U%l+&9V;9Ufq8Ba*oDIk}UjexH zXhhhw@9?8wroMkHgJ{<08-fkc=UI3+B1Fy!XW6A_hhO)7dIPEn%J#cf77j0z5+j7} z543a0Fdjh z^BdC%vgN(A2uc>e`9}{#FJDE*Pilen`lN3BGC`m0An+j>d>_soIAO>A8oN#Guz)bO zfec+78@k^RI{n2JA;g4>bDR{hzi@~AMEKgDjjm`ogR25rf~gu{DOjJ)tT~HvJ3R9H)+u8+}ZOLA+83AeNYG^=s_6^zY^0{MT?E_#)lrhNDd5AF(Ok_YRhI z?HEZh1u@Acfs%AbA@-oLLsk26jXqawz|;#82tDgY*&2jHfD!q@LY&k^ zUPgwAhK#lZ#{m!R&y+(lne~keUmyFyIMIeWlIFc~QGs-K? zY_Owc@k3F9u}9{8;Efd8QMfN{yOt4D>38HSmJU>(4QfQ3+qc}f*Vt%OyM<%czm z*+@M{rK^mu)I;@&%ALkO{xS}kT1VxuFsJBIg(6;LRf12nUFNgG05u*>ZCq?TVtgdE zD^+CCm*RzD(PHCLm7+Ao=#m_ja21V`;u5ivLDjPo@8n#zAf_M=Gf-L}7oQ`4$(ZVu z!geuM5nIVkiI-wwv1e&v(U}53(I>}uj&T}p_FHzf-geDEY4eDq&Yr^__9!3!T{cCT zMZu?nW~r+z)55)?gocF51PQCiIk9r}rIICrrQs#=CA0b<=OS)fZm4whbVqImb86Q2 zbn$9mTSf6EXJ>Av<9`$UI+^-B%`z7{vz#?wbSIiwBtI`d!!QY$CuI7?^vyiVN&#^G zD@tF2Lxy?9X2IZoa%kbpl6kFS=wwuN3KNKPuxahS8os}8)wo$Qe)zL;8PzIlzf^s)W`2oD*6w={Hfa6| zX>V|BovG94wJE+`wPcpKRD4cq?sX2YY`JWGDQVHpn%eqwLCM<7dVZ;4siT^uaeMKk zu@xX+uV>!5*s=PW>X+-cklk&tFxkblW?#9@*TT%_-x2RU3%|W{P&ao_H*IDHyDzi9 zJ?_)|ttqc*ruhRMqi&a$ow-nFX$H;m&G*uo@ICCa+t}0@o%!?=-QCwwk#)Z#`vs#Y zgAoZ+e1o>zx=Tz?c6V=MZWeWx3D4{{U^_xvOIv&!X*;Mr^YQn?x!0lBSKx`4`a{ND z@BO>`lk?WWDMR~j^<`*2;%~FBiBLn3n~=MZ6HsGN{k}Gcn*pzguJk~B)$@#LSm?xP>R>LR7Z)vY$ zGc#yj`FqRUV)Qv_mWjiV&G21yxqVYpQB$vdZfG0Mi6(2+g17zaR;zSaqA^2rgNl*G z;S>vKC$Ty)J$SHBd~m+s#{{;vbRieM%)cF;6raM3W1oE9PpjwiUh`#$yWh`>pZz~Y zfaN)}Tzkje`5Zn4LS+R4vMECU6LM$R z$)T5GQ@i6JS2{v8*kBYh!B5i6nk?~XzB5!z(bh57Ce0?Q#$K9e^;@D1h7F9Zj`@ot zbTqJzKnHK#0Ns9#*^JWER{ll+o6(Ig+piRVwiBzH`MvVb-}YN8O!@4+MjqGMzuA0Q zJNGua9%$e#Z*z8kNdn)9N$CNloT3%(gC^X(A3kE zugI>@Ez;2;(ps$=Rhd0yRPIXdwqs>rg?qBy*)BfW6T0e6ct^e<#cRd~#OryZKRdmB zKl9zA&MlepTkz9>%_I!rp1ELo*7{w+)c+}-Ma=A{+10pQ8i#fO2B>jMP znD-^v9aA&uerCyF_)vL@yT{)_2~|KJ$7w>jnE_Nabv8vEXXKwj&FdM z-Yw@m@49$zx@29}2N1_CF>&pFg9B2kHhC$ukx8nQ#wRwt4`PbbG^?ixap)S0O)Sr!7>&2a=-hjIfFIMC0gP=MT zBSJ*}VxN)+nYWb-@<-6dLP%v(rOCQXXMH$qm_UX^Y7%O7|1lNS_abNrN(!j+23!a! zT8J4f2vi)|qeCjcf;U7Nw0n8p^7g_HiuAIl5chfzT|f+o^kDD#)gR_j$PmI`AVfJK z7v|L1OX=5&@q7!u;5R0@GY7J z^^aco^DO9pJi`qAHBd-dL{bv`scht6Vq)uP4scpEyVL_uwP2z0&FP!047U-$hTgy! zU}!?`W@Gmk2n4SiH~7)U#L0lj&Bof+k=u=rV_OL`1v}#-`j#qF?_59Q=)s#N5frj+=qO)zy{Wm4zPQV8+12#l^+I z$jrdZOa~r8=jd+hWZ*_;>qz?Vll)^IQ4>ca2MaqV3xF-rU-KFm0-T-rNJ#!#=s*Ad z{r@y^v-syqwvPXS78pT>zj_#$=ouOQb8avw?_aIl3KniA)*7M~Hem9A*WhPjW@hF6 zH-P`I>z_;h7tnA21Z8Gp{coWErR#r!sydoDhyZNBi#qZDlQ;jd?tkt44?tdqzi|IA zwD@;I|641V(){jt*#vD5uFEz0w>mBZ)d@kW>w5}oL8U0?X1Hho^2RT5}*)I8{F$p7Xv zM3C_0(0>=!cZyOFQtyDpER;+T>Tg{rz%=N;1qelEM+Wx`dObR8oL%xejKu%_ig1U* zJpX*9{2k(N0E0myU?36hBVe2xB>xubcB2?s-_MdVpA>hKbh(lh)yn=Y?)e&J zK)eGEK4TI={5^P5q3=)~q(bR7F%a-k|Mv_33g*iO&t4$})5}; zdx?!CN>uMrjK7P#QG}qITT@?OpM;7^oaooDQf_WZ{{H?F-rgNMJ3CTpY6-^1#uAp6 zC8zswaG8dP_tfge)JS;j3Ak)l2M{4T=~hu6&pX=TYaI7oB>AIur1szcABYH(Dkxd* z1>2fg76}72s~k7j{Q37sCYq5$&QRtA{n5+ZaB<1-!lM14mkT~=zhSf85R)3fx~|3Q zg(=r|n`fR!`Cg5HK`ia-F5Sca-Earb*0#Bfj99T|eTs_0r0!UX>dyV1Y`%Nw-c+5v z5!SV8OjQ-*&((VA1bQvv()qI3ygcZb=;ZwMpVWKOSBj1sLBiw5zo>kMr%ZekXV7mB zIij%XG)EHXQpvns(~Ql`u!;%f14u|n^5s@Nrph!N7n|(U`%Xe`;>s5+(p#OFoIiYG z-id0#9@W#o6%YI9Ey3;j=kH_$JrsHKt(Q~umiY*jui!OiK38L_ORK`(*bCK{V5m=| zxU^&T@434K2hq)6GA;>ic%>Y8#kd5HBMUX|^fV>UecdXb*eYMtk@%wvrr0e z-R%xp*nx^0%K6vxbzs*79B7tzk&HH+SuYcTt)WhxcQ$-*NIC)%d-48hZ- zNW_m|naKALNG{?q9K^Gbk(B(Hi9~ZhNd}pm>|L2G49S~V$<+1r_m|qz_bbmsNg+<3 zH;TBPgdi57GIIdzfAkFw4(py+OX6<9?eFduUsgv@<7|hnV)CAbXEF-ewjEGdOyw2p z-4GLw1pM~7_gQYR@s2m5_)|g<`PRs0xnE6bJkc*>F0@`sWHIuISsZZFwie(T*q45_ z`%r+z{noi{@LJxz6W0OJ@Ydk0ThsQ?}*b5ut5XbqH<#@Ay&Xg-l z3)J6y`ym>TFXbjtU|dKkW$s<0QV~UJmboZ3#av?oh$%4Jl`u6e$j$HK5P@b;Qpou_ zrb%IKs|bQsLf&+r)U`*_y)zwq950=3?>P+O;ExmMWBqd~T*_y$&Ub(W=pwSp(9ZJ< zIW_khDw(!`afSBS?BG4461-Fd;dFvEcKy^k%DR4!lQD{*AMnpu6A5lF5oqB2D3b9MZ zY~4wge2tNnUZi{|Zq1u`7?i9;l#70kbO?9I5P_x9g+oA4VGpbgnQmA&nM7Wqi4byv zh16yIaHG(N^C70p?@xF42wLAM?I->kQj;TbQb;|IkX#enCtT8T3wK;I10(nWd_FK& z_uQWUdhh?@>V?KLNQ;001#mDviiU=!RB8K}tJ>WN9tkOS^#cCTok0_~B#S}iou@{L zwAE5m$4t4FveGmQxxqT5q$DURER42Ttvry-OeOy1iG`evOZm2s0@Sf8S>q$0lXtRA z_gPadI>H7owW`g$uxKyUQqhXeX!i%zTCIp*FyQsaLyi6`Ftrcx#~l2JjtGbATd_(X z=kDl(py^c>3^PLN>*Jki-QqRiekXCGIrc8&j%cm+pkqL#RE@4!iAu_Hu86+6x;6jn zP03V|kj~GaKNF;wm|_w#D%K~dPZ8tu@{E;d=WJTZyeD*#a zn`0`unAw1~6@eSF6GPF+lrvF290QV;mUN5tR*97rZhS5>aQ7>GXYH(p{%GsY2P?ab zl|V$5xOt7~aswa#y&xpT$&9Oyw+y-8Cvvtp{`im+eA_4N z1kLM>MeXcBRr{^KOOE~z$p{gIFywRX)(yvHGg`==aW6cxty|z<6b#rdI5~`G5Lc^Q{ley|8jXNvQ1jen zYoSP~L_*R-PAMS&4#*Xgp9wwuDJDIUTHS?5l|trCM9ddUbtrMKUSJIw{|1U5kZrrk zg_4Oz8YsO_ufyvxHU2?VKRMtT_M_wY{qr=y2*&c09cUu|YgA^|IOyd1{Fb*!-G!p)us;4hA1Uz$yeY0SDr~Sgn-(#dEt$;|YS*mU zTSr3AA>ngd7fD(V8>PJ|NTiEbwR4^NIhHSXa;Q{ms(RCs_(hUU*|>MWMu~}9N|V4R zO{H8(!;r&7T1x7NN~wm}lu`|uSnt7}@vg*Ij|h)*P{MQEi32cJGp5+WM6N3c9yR!# zXN(78dg!l4xhw4V^I9#nv~5rEVvu^JYUO!)ov)X_MEufM>2Q`+OH`r<34D5*ih<|d zurisRx5re8dXv)pZ^tZ)t*({VN9%g;k$;~#@;0t`q;?_g70ru3j^1r-1R0MV&R+JS ztUrzJdo$9~%9P9(5yN}lHW5-gt?S^2KxItvs$zcDnT$`1jV(Xiu%7p3^6At)7HGF|T_XXpR*qD_B!~2tj2$L%0oAFLjwXP>daMidK zIX`mORYoN{eN$Gew$nxa<-HL~vt=@$XF=E}4xyEIK%JJfQr$4-oyyKvyIndIJlRy% zSZVt9GKu{P-mnQR!qxq%^j0;P00*)3>9r+ZrGt+&Ff#WIkC;4bq_dO_c=%A`?$%6O5a2%#dJPiVwrsWb7NZ@Q$4SVpWew!xOl4rBrXdWW;6q)b@3`S!UUQ(4}!<je)IT3yb^n*o7;1YPlulkN6+%ib$qZ!D15sa4MeiY=%?Vq0{oo?o3rqaTB zN;TG=wi>zIzHFOvwiAc>VAhY&e4A40x0QkWS#Q8E)y7jQJtaMTv@i@(q7w~^!>v`u#xY~bz6ViGj$oA%)f)us&y z)|xlD{cNMDlHZg1NG9~>Pen5&G<3p7Wy74A)bgF9D=Hn4-*ZYY(jC@IZ8}She3DAj z%*HPT>FC)%1l*QOF)_+_Nys((y$>vsOO8N^>)vl#=&plOAZ}s@A}Wz7@Ihmq6#QE0 z{Bvi|0&ZWk7u+}lm7$HfgL9#&3j*>9;%+IoDXoUQD$BcKML>f zp~MM-Vcz?>p;%ze8vUx;tQ;C7^dhpFuV5M+=PC?M^IUsie(vAj-4xIK6>L;?yumKf>{+J~ClP5IgbUvtud^sRxz$|R9NR7mYn@$1aqj+ZyVF=*t*GeNk@0k% zozr7vYN0C;Osm3pZ^3kdrYJRJwRHtD|BSp!YHHikrT2 zo7T1ydh!mlv0Oi4@WHtgr*$4M!ElMKj=87X_|$=w&*i?vy3@}V;Jwk*e!FtSnR3Tu z>p6b>((l!FtLqQ+b}acJ;9C1K&NCgBr*2!$Os%Ci~EALKRfB@mc^5Dur%$0>QJ~FhxH^>czJ=TwF%DRU6iKop(*LMT8C;pZ!IdV z^|+=fq0?xQ8IX6=ngcB4*~i_L;MBP0pXs;`N2FKR@bC-qXRt1+IzQbO4%c)hf-?NQ zYD|vU-4BZk$ErPU4wIja2HUB4jJAzO3YB$Cj^9tIRcMm3vF^|a=hA;`8k*^}efg@+ zXYRSy_O2mVu1=x*;^~agc;w~WM_{C)$qmc-B;kOigK-eha$q`*WA<$x(2-81TdBBEDP1JK2d;j5M5re;hX;|aBeUQg` zt7HQG)3T}!0L!ub-YkE!#`31qVNwhy)d&!tNt7v3*D*PFDQ_(~5@X|Mwpsn2uFPVy7=nD*HZ1Z$G#d&S#~Q66r>-M_c^yf}9h z6FwycRSCRlTK9P_ytqpi}PX1ugX*on-~UD zAicA*>{+yU2CCb5@8epR=czieP>#$Sumo%?=n%MD2WuQTtEvrsod8wFHB;Nw8gl6^ z5(i4Jbgl=V@;@CbV-%noHqlfZ)6u9s)9HD0>ENZL=}-MZ-s1%RX^v)3c*uzIAld8_TJN8oHHHO#T&O?}JzrMVs0+S|f(dOhGp zbA&;pw&Tf-QoSad6@hWvVjXXkAO4DPGbgX1D0he&OT3{uqoNf|}TH=SLjiD>~ z$9;9xQZ;tn$4e1ma%z%3w{4J8cgEoznY5TE)j@MiStcvijR{yq-u(?X%P01Dm@sHW zPQP)rK#idTgZmrQdo#aIMCg6qF`DvFuI;+&%xu^Px*WjE-D%Zexk*HAXEi=1r+8~* zF)Nv>jp4mJW_g^tjO4w&-~K9t^+`kMoY`^Jc^>q1)=7D0`9-PF>-ND(S-i9L30J+} zQ5AEx$^hENtO-6m#N)JiU-zZIk6}u!UlR$JoweWd?lhNy-g##k&>0=cpFvi56gp;A z*-nxvlR>uH>Wbsfl%DU^C%v}%@|etQ2fbK-)Li3sp*K#CUxT!{`Es{j$>8p|8?UY# zvqzUwx^T>K6?1<*Esw_$kBCDXWzee|CtnDp_IZ5>y6C!_QI;R!MXE+foOGM??`Bzf zI`b*&%#eu3dA)1%$dtwj!!fKg9ZMO$7$gK-x*v6Ned`mT)53P!K&)$0&VtP@#!3~2 z)5JWBf+OZJmGLF2Ty}rQaB_u18>cMK*I%X8WapdaFfx33)b_w^GJ^Rt7%nk`50OB^ z`EVw>Ko$|^JDhmf%keS3``N0iPH#wLWTIH8H_KC^MRQUJmh5M<4EF*qGaB^@Rw#Km zK_=IwdMgHKSY%cLbn$RplMe8!tLqCfs|R+L)nsh9OjRk02))c+=ie{x2c~T4jV5L9 zYv{z4jHN$?zT%ozz{iK#r!SvqFIF41zDn(xH9v>Y7&nEGE6$?`JQKM;xI2L88ix=W zkXcL~g8s*o>f=vZZBD&4 zTnF>IgX{CCI}$ z@3QADBYv~@)$B6O^);a8G85}-TM(1?MZc5Ky1sNGZ9+H7O5xGb`p8*JMYF@M06i=- zCvx^S55^$k(f}^=eK_!jTnAdG=%_H(_^>cGToB#ez(_nYM!;LoctpQbEcAzj{R02e zhpU;8V4?*_gw(2VRv<#^*{*LW2O5c}@cs991INY+1Oxs2@AvqaKISm`BrQJ#-j*3e z5XT%;+cpiPX}4WKFeE9<9Me@cI&mUeeQQl&E&XI83XJb@B%@|k|13g2BJrUFXgfc`J`W6ihtHj19(?cpkF5auTXKpMF zB-#TFjVnh2-DBeMNaAVK80ALVZiclyni`?IC4z*xP-{8*1xMUK%VPZs8P*-JC>|M? z?$VAZUY1u67`HQf&Tn78s07dI|7Gj?IG+c!-5!>jzKxW6NDoGQR{eh6p0;oav)zNk zz%^ayQ=$9BUXr?jcq3*OIQ(?pi<11ScHv<8nLhSCiqnvz;vM46JX~ma5fw#24pG~2 zgN>Fffg7veeCM>h6+`Y|SUfDDn*xF7u_EcnalgK zvfA;OzCKZnc8~fM;MLe;&P`y#0pJjy!=((NHw9i)caDfPmG6nC`5{3|b))gy>7i#K zm%l=}qiPZ?6M^u4$Hjm-DQ(@hX1is4n*BiXy}Nz?^(AO< zbFIn1ujMEIeDJwiaTanyT1<}PrCaZ3T^#%85nc5XC9ZM&iQ!?i9h=G=g`&_4M6A(W zp3`Hih;8|h4xrJR2ebbL-|kK@%16Ja9__`&Z5z~BZgY=aWkqJF^1G>4)@qD4 zcm8!TkR(E?YCwmRZH-u4>Y)cVVlG;ZO^q=VW{)mX*er3Q)5lP8aLj~{3Fgb1`%YIZ zVr4stYy6s^4Xj;{TDI$omBUcce~1BB1|iK@s$QW_*^biBv-WLak)Io17exotOKoG( zG45JxvSq)4bzg(E102mO1yjhs&m1X$3jwjACh3RBuWI6thC6@%pJsL^+wLbmdhy&XM?28%d z!9B+fwUsOM8c>{ij6VBu?KoI$Ve}dB#G7a}jy{1ZaES50qIlsaK=Hh)YeLEx*=WL! ztlE#>;k@vbo(t+Yo+XhZ>J#-;HD2Ovc_ncCqNGW}3pkz5weabPkb3l@bSdi2o?nL& zQwd2P9`yo(t9p4y4Mzhs+zdX2IO4~)b4m?u)gfiCVKC=$s=}x=a2gWqOG|cS=)%^mX>5)9e4z98p5)(vK3*Eig*v$;$IbH7Cr@XZ|Qwmg@2+J1LFbZWRTHS713 z&?;Vgrf;qj8Ojp!Q~BuDI7UxZOf@CZ+csCBqs1_wQE_boO2BQ5MHPB|eLAaf@?qCZ zcZ%s7IAvv!8;W${gYN;}tY^BcTw$^SE6QQ7-ery>5^Z5L%SQ#2; z99TCH&!ll(35-kdDvQM^^C#2Fo9CjQ>CCn^4nGYP&C7mV<8}U|lRx6Kzkoj@Fqmog zW3jKfzQJOf0>{f0Z5L$Cv+wRe>UQf{yV>~3W#?OhG=1|o`i>o?8&3E3 za$(TEC$HX6R6>I3>!$BXxmF`CBq8s`1GAe|o$1r_w7ftH*{Hi4j=$?yA0**+jap=^ z3*u{g`wCZ|WmEn?@TB|JNJHd61&aXT1rc}%hJIHex0qa+IwMc1T3V@;lZU?X=DD3L zIcq<;v@`H~H(IYWb>|5PTwBcB`*5VN@yMnBn2Bcsw4DOb)H_g}@ePp(ZY<}X0pZBV zMnomw1t(TFkj`o?l=F6fmhUWC0e(q1+<`>=&NvL*)hl&P+IE{0oA=j*C=3^hqANdA zvbR5J=SG;0J4~3~Zg06rCRJ4TwxWwhF<#Tr(15H7rG1F0ei^@GQM-a< zT2Hda2ssh@(DT{VKwlERjgg;b%OOLH$Hmni=h4?FK*J&;yQ%|ozeym4Ank3@o82L= zX~X;2mh+4eaAyEGIK8nGXo5MuG3n1p@=M~76Cv_jwQd^4Q;G3-elAH`{l)Sv7tNfHS zr!9DJv>5uqc$fiQl~~0=btS!A_wG`)E3tUJ1d?@%9tppgJ4u`L{oO2s{GgOd7wpih z?obA|I=aQVn@ci6VTfgVD`s$Rh-OF8?gn4^+jmH2n#6-_yXWr_gzBy-f|{KCTIt#DipwMwgZos4b|`H996fm5Fu^|SU66DM=U zQ+c-sJ8g7b=$r3Jw(ZZ>>yK{83pN7wFtGf?l`7r+2tFFqr)UA%7vp@R#$%I^JHMGP zl_d}R3BUy*R&SQXmug$Q+6per7AqHu)bz%#r?3TueDb<^i|X+{B?6ubywTpVG~QXy zLF?J`a*_ZqvxHERzM>j_%)mA{nk$d3pbl};G&K!;ZnsY6eeFXfUF(&#-5v-Bt3|+8 z*E6+QJ3b^|&&V)By>lA;ri#FG4EC#KKscp)%>H5e@lR4 z0?%pN^7X_48)|%))<${b8u3{Ni_k`!DJVg9s$$imz}vr{PwR8?^UIymVo3&cWyhWe z>80mh@t`vj<5V!!twqtwKzQo!r9H008H)WXZ(_)OB;A|$AKK*kpU?R$mhzHUW&z)U zOfM{0fam?<38T$i+R1T69@;A3qW6w-Ufw+YtYTPGoXfs;<01E96@9W@MpxK(ct&;G z_HzNOVbEUZWLv%WUY{Zo=RN{&a+?M}c#4y&sk{?1Q#_WiyV%P{GP-i|X>j~B7|GUq zWA`RxklR>|!+zHuk4U!au6yh?l!1~)n8$S`*rl%0Z4%+3ExVLSJ4r2tFzM+N5pv=r zoinSh+5g4MrKls{G`vJ9*TY1k)+M$~t5d9Ih6yt#*3>vp+DSB+pp+U!Eh_0P*FaXd zYd)mywmRK16Pn3=IQ@Lyiem`lyJ&fEI)fsK28vla;1mJPP!|_ zA>uG6((scH*nHuTZoF!-_`Otny}JXgjMArvdi8P^fb&jwx@-t#(@q zquhKwC2cagU{6tZ$TGo8!(r*R4lXKEnb|LW%Q&Q?Me4jy%4V?dXBrj3^*M9o=+$6d++@cr@`){k)zzN2cajXSQC6D3>9cfow}dBy5-b- zw=KCIc4B4k1fI`D<{62Qz0O|lO!}l5Kqh>iDOanxgC<|^Z%ad=$?)Y*w|%Z-&cCF4pL)C%eJzPh#ei_`G8ei;J4uQE+8m6~g+j#> zG}iBfZ8^c@TX2Fy4KX^$->KULB_^*rg&WtK$+ulaSt}KOMjhyG#peadeiV?KM{=Cu z0!fkTA1>A=R!rWq>-u^>UIYpEd)8adCT!0Pk0MS8I7;xm9*;geh<|dMAo}$9%;*Lbzb$&)-po7LL$~FXC$l@-aHYEPzJud zP~Q8f%?^7$~{I9Z~*(0T!YdvKW$*ICSGubTW_15o@s{pvuy#|cB3J9 z)jBbO{G7=PW(77FgXu4<6B?e3U1zjjYQ{z8l_>~EHI7%Je#@30b;|RE!>rdoF1bAOH?i5<048eMjzk8 z9g_U!PX9$IwX$#Yq1bdW-F~pC69uwxdL^;Kl&~;P;DGJ|lY`v;_|hAt$tD1Cw_({f zx^dlGT+RHqcH0&4^MT(X-^9{>rWeJ_<6YvU(OQ)x^WjbOo$Ztb}fGRhpNV zMW0>s#t+09WsOa0u({Ku<88a7vgUrrM=C6;ePC5_y6vDC_BGwe!H0On?`+ubb~aIO z>|8o(9h-joSKWNGu0yK@=W^!$D3jq={uH1q;9s^<+h%Qx@6f7ID}mB7nBU4lr% z<~wb0l^#k;J&q7<@krl`u3o9saUE<&+OVv3etvszKhAImwZV2$JHa-3b>NT~Xd%b> z(S=(b&@{I;f8Jg$Z$sC(=F;kciElpe2=;~zue#pUYdpUWG}r8d&V)xL{v>>(g7ML5 z9fB0UHlvRSyC&yDtBsg~@ArjznmMB+B~guD?!&wF3GT9%daL=Nq)F0zhh6F)!RB(c zhQTGc)zlANz9Msq=?`hk@bI3zx82Eu%j`KWe608U+xjqD@C)~i15)PZMPEZg6J};q zBE>f0Ew1rM$!Te|snyEdg7*c=K6h~0))hmK1JaCETAV|9pMMbv{oVja)I`uOdJ4YI|@!q$fVAoYk{M><$THJlK8!*zjVJe z5^pwFxn(>QiWmDyyX!g@uuR8iwH|EZ^-2>6=MGp6skFgyolJ@oDgrzrIb)3%s&K-C zS_6^rJ~e`Z@MqEm-kz0Lo;ETDPq*_g+idq!a2iq$*+1#Nq^T)yi}RdZ3=&`f%fcra z%kIB20r*7xM+gs<*FqZ-iyCg(98 zz|g(N7)>!gMl}I{#6yQn!tuv-pkvwwbOsXcOd{AXvFg51{~4!I`ke!%RnpP`Js^xT z7*Btmem@Bu7!gDCGSKi@z;{%2urpe!E5;@8D4|*OLe^fpVxDKR?$RQy2uHvb#_1&b z!FR3D&0s$|-Yo$3ZWR5Phs{q8v|a-T8IN|ClY^H3M6V=MP=Pw%dI$ObLk=9x*Y6PB zA*^;E4*IKYSH}}+JaqEM)uwjln>*dg5J)%*tH$`0m2zBR$^Y_ReC1b;w5okMqrA*b zqZHArsX^%Tyycwx+5Yp+ngH1AnAKR-Uevq%u|1#X$i?;v9GiO0wOJn50bF4^VmmGo zG#WPQhgeCa6t|xqvxRs8k2{dCLcM4@#4?G-`P9mJ)AiCwujk$6PPkkJd|c?4-H*L_ z7oN-qJ>0KV8n4_WJvX6A>w;X)tFH)OYJ{Dv6P*Np1ya%sa|JyCP1V?bmT1TuFWV0P zGMmoWpx$_osf@Vd*L$a6{8M91kA@88BEV`9=^w_dV#(!evi8-C4m`l;fq zlV1cktXQbDX^@SMp(9jtB{GYrm*7v#TZu43yp33@Ao&*fcvI$RrkDf8pJra@Fx_r{ z_oAN}hjy3`4zog`0M7@4y!^ZC4BIqnJ23Kk{W3hwW!zT$3i*>L8NA0kS`(cK5O3Lg zGPf{3Eaz{!K{LUW;k;xGTNFH$}s8MB_ z<7z{~JfqgSG^Xr!eY}C+_>_kn77>AEQ4`TlGPVio$hXhj`<3nM!nMX?R!JasfMkY# zonJ>6h;;O}zriAs)Ssn{_0f2u+{F0l2VhwMm|HP00(ij>Tj5ihen?##3J#Qm01C1c^!5UJajP;!VNJC%+LDJhYz zL?wRM#L8Qgq{OTAv{Ivu{yj3ORPXV5vBRQWB^WOLR~vq@QhiC;Vv|Ts9bX+@QGC&N zl=Ny!?q3n_NIT&@i=p`7&d(2~9t5&8z;2FJWjO8aWN<24z|T7;n?Rg5NJ))XSi9BvhZ#n$~d=VDgW~w4G?@C9D{E?MGD20D zk(2G*3uAAmJYBe#aCLrwfm6Ck z`%N)x`f>65&g7*EeyDl5YZq1|+259d*cTel8 zdtu>|9y}E|_rtI~$o8BJY*IQBsv3FZF?t_(9c(>Ew3ICJS8XjVQ&ftTR1?aVNoGsb z5`Gt%V{Cm!BX?vYv$fT&&~_5S5yG6N({h#a^I#K$-Wl;tlZg&CAD-joN-nO^X}`2t zZJLXdmzGvV%ktO*%}2Fl6HkF9P@~?q)VO$`uTC8kkxnZ6Qsw;?Z($-Y9yU%-E6C$o z;mq?Yls66RCs*95q5Ts@<$qM6plU;@5veCd(KnUXG}K5D5fcktl8G`iGv8E7Gz2z} zfrjVhGx7>ei@sF;NON$I#=6~==&5jX?oT9BBt8shpwn=uWhUd{6YJeEl?-5vU)(j7 zlu^kO4GfS_5p9|&))GfoW+B(gUCvF<(Tsiv44%hBL(`aXfu;^}2|*`ZV27&yOYX@| zqlo2GP$FDUr}|BKj+YagP`3E=22o1G;Q#1s`8TXgA_Ofeyb_zcYejZ5zBBOkPck=p zg`-hc@rKt{RlB7`UG2T@P%T<5O%CL;4sK6882C7}jq~Auu>$_0gu8V)i%6^+rG<}# zi#?nzk!lK@?5AX9Re8O4Z1$K!oULkcCa0v4CSgspbqbIuR;m6GaxH2|{Z-1}V+CfVTGG2toypnSd^MW{z zo?j9+#$>MS45|X#P%z{UYGB}x#PlzUDD1(-?Jc<`QF3*3ohXPG= zBH~FiQtbQ_N#IfA2ri+gY<^yzL{CP0Oi~OuFLo+l=!M%ssdO8h@QGVvv`_zFbb-Ki zbUmk3sws9;heP7t{D4b>Lnv`1JnNT<2~=6Z!6u-(!DWw&3$tFVrfvws(JiV+Nx^Ikn8}2AK|A*|@5dq&R%_sV|JkB3A zU%{#T{gaH1h{0wNcfz;{5My@I+G{%Y3v_YQpG7l zk+P@nCSeBjTnx3Oe{UJQQ&XiLt^6934+>HF81PrU z6E##EI6c|IdgGjAep?rnDSA^4ZDe!@TJkig`A;(6{;?wokt!%ztqUCy(UAE1{j=c7 zx1cPd_6wNl#sc8f{u#Fra1{&TdTm|V#l_5WQc{Rgy(Qbvu;8ebv=7CKT$oK6nybomc z^d%LAKt3`wG*rpLA&-uZKJ22G5f&CEBP4cmbaFr0~B9|3mUSREPeQvCe-(@gFkquNyZg!R46GF#Xp5dg%W;DXI*(pzvKR#SzKh zV>_e(n1K6~UrhgIMX#?ude(P_Bvy^T%ffpw0r>@lnDG9l2*AXG3qrf|hFktu_WtX} zE_pBkAK*h4|Mk%SwOE%Z30x71NFh7-XFA#c&t`8h0Vm`YM!){?Vfo($p&Km0dW;q| z^nav8|Noo9`CkO|{$a@eH{szZe9!gO23jOGzLBA#qmzI`Cra7E@8A(paE^KCz-jmn zjt*ojEXvHxQ}3Ssy!PwAh;!EWO8ik@3^{YEqxni2SU$en7Pw7anS80BpSNjbM86Ru zgBdeJz|}!1F^2xYao!dBOc*;G-KE^ZgJ*CliBP4oc4=*Ass=x-%6ku_jD+IORY(By zT_W}sRy;(7>&HFH3Rj-}V^_r^6E1Wj-%Fvc2jG@tAux^QHs)V%3nPfW4s;u(+RZgi zrz>LEbdR#=7#N|W&l#Sl@e4ZDmtb!rc5{S2CjNDo2)*KWESQD<9-%v=FAf-rii+sj zP&H|3+BdHWgQm-vTHuSc$Li;VU$s2(dn4 z)0*k`Vhj%pW4-!+?7e4HliRmFtSEwXREi))Q8-cs1f(m7s5FsY0wTTl-lU^66%py8 z(o5(i5D*ZN4pIVyBorY)NCJcqAOzmWd&m3Xcka079>4#;Fh&?7@I1S$z1CcF&MhDz z0si3@0WdwkRP^;}iFcI#@W1jhdVwZ@MZLR*nILQJ&GfqOm5`1DU*y*ODOfvTY$N2L z6%f#rHs8UV7jby`Cpa>49fkKmT^`&Yms}PM+APfL*_-{9?+nOv=-D!DRbrac>q~Ac zmAo#|$!UsT|9YBI1RTdd!Pb$%YlU4n9e^~36a?V;SGgE`8QnI+ zr$)@K5M=edhcab6k(RnjwHZS>B-b((?lB?Di_71kH%FBS$!_qbDHAy@tf_Nnraa2i zDtN`{0N}F^hw7Cv&ZNbA1 z^UHLdKPRjm`u$8WE{I!WI9sO3phOoS20nk8ltg$hwy^uNUG?0&Jp2FLIREoETMzjs zZC%b^e?C5lP%3IgZ#P(1nadnFuDHzBN*fpJ<_KCeyJrHdT2VkDwEYe`)~fBoR}@fh zK>IQCdlg=n`zH-KUaFGALf)VgN^HIotUfL&J1YN`r0}@smM0E&U<;O01iw-!$PGt! z2pHc2KOR)sUr=8M2$V%rxqSg&S(R*943fv0t1ZY;Gt*XmQBv_^vK}N}UuY_?^t3HG z|3aGTanQjkJj>^V5;L?oHugk*WzwK1oIIgqFF|lNPNvcS!uDX!o#a^)Z{}@e6Vu}> z5MYv<)eKOS`%`B?zuAH8#zV{7Ii4M}^L(z8rHk7woiFWetYQRKrBwpNZI8{p3zQu? zC1oQ&EYG$F^*`l!1xUBUnQj36sm|7){A)e!k%w81ztu9g`4R~u>+@!~&CpDd0$rQ#aucagjS)%gxH==Wx5gOw)aoT|`*UB|keURwN zGN0svBm6K?4#&4^;aW*5V6%a4W!AiUSYxSqn@&E*+dQAaaDuGqTeS0WnhWSJDc>T%$xE5U9J;L&HV$4=n&tU{cb z%br~Q`2`eYLsC!8m>kJ4A-*R-@=Tsik⪻Y_@qtt6GMj9}P~ev=<`?t$0*;peoUc z^Z8rwlf}f&cxsBT(aa2CXHbVVNJ+7y*W0IidzezS^kG0Qc*o9H^~#-RFE-(ACf}h4 z#V>3=$_8!402){jz?QfEsKMNC&A!@baN8LT4nJpu0^JGzaVl){2%zBn{PM`aBy})k zZ}RoB@Uh}?Y|l@XETu<41DCbu_SLIh{__(L`sx*ayc9dB=rPEDRul|D=D`}3nXHT# zmObI=LXp=_`RvW+eK8*9+WDEt`t!3UbL)C>4yEeT%mKT&>9Y@=gpvCOFn{5>&f|FQ zB#>ut)kpoFb3Ri>P;F9MVCO>(h}^ru!UeOHbp#ytY=NhxbX6tol{xc3MqKE%Lz{zH z(v48hZ<203xxu+4YTvQJ0-GMqACCa33$WS@%1tVSVb+0px7}tQBDwIh+~xILdiVw$ z%*`3emlwV)`!ABGyW{6Cg%^#C%H}0m;huAdM$9fp7z=^g@++Rd`0j&OK4bs$OPbD| znKA>_499|CbN(?kT8SAz2r(F+l9OCg5KLfy`1wH!NQeJA3PR+*0SIpo0#-#qiV`eC zGYlu8iyF&p0s%0OgVmfY;iu)#m@{VNW?s;+pKQDLUSKirdL8e6g%lVy765ccOqQ0H z?Hl8}DL}X$>h=S`rd`~Grmo6?-E32M!g&oR!b#H_^KY#O)}s*hTVk=Dcn4^BF-|Cw z_hhbyI)-f*Z6>Fr4_h=141(L2%4yJRClN>ex!gf~!MN7K?`K%s)7Yl@g1BN{T;$DN zh#POMK^Cgh0Myc$QVyy_aZuYpgL6Sn6WZnB`1VDlEPSgvCgLi7hwbDcM%LYuBI0%? zpD>SR7`W{;b{82D`Y9{MdSgb!IQcyZXhX0xjX?A@0U*7HXpc^>cUMGtwU;7!XjFG! zZ_d;jJfDi01tc0vmB=7ZA1hncF^NFe zBOlj-RUt~zjLOt3l*Bz$<9um^U@<)g!w~T)Ht>85WCUC&#Cr`MH~w1GgQ zmOhPnWyK{ct0U_+^ASn%P>3z7FT7cxn~_m5OLhg4*_0Igy~$ce9~i>cbT^m6cEO4%*#qJ(2+l4Mnm$#8+iI zIm$$v^Ukpp$%Mcg-|9HKoMn$@-MM;ObfZg|nO6`6^tBmTp{Ej(ySUM#z7djWRy;kr zATsKagb3;Wt=L&Um6lNWH_A9~Payv&c|una6o(46KinPF`LQ%x-#HPCFxhe+o*;ai zP^==$Bn7&mDYZ4Oo=b}OZ24r@z1G6foWSLLnu4T!WQF_5zRtfmpa9Snpab}d^FL=D zN7U@Il?v6+i?=`F|N24JedFpBlsKL9^NY8@BVAqDrFuZxVZAz%CjxHYd3)P)+>-rx zFURcRgNGd^)}cB9c%+y_$Cj$|bY&J`UC?L55&MvKkOYV`Fx~UqK6~gPS4 zZ8NXhQ9m%f%}{(V?84>C0EM*d=_BQSBY@if{JC&z_KU!@2Pr2Pl^{$(v!y1@`K(6I zw@-*~z?YdLS∋J>-Hh!`@P^)1m?mA-lDG+Ki}^tMppIX8= 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�g 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 fOA9}RVEPVM*QmDnQd?h}=`Ge8A1hwWePQg} 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 literal 0 HcmV?d00001 diff --git a/submissions/lab9.md b/submissions/lab9.md index 4563cfd70..68e491c4b 100644 --- a/submissions/lab9.md +++ b/submissions/lab9.md @@ -179,8 +179,17 @@ You train reviewers to ignore the report; real issues hide in noise. Each ACCEPT ### Red / green demonstration -- **Red** (intentional `golang.org/x/crypto@v0.3.0` + `ssh.Dial` in isolated module): [`govulncheck-red.txt`](attachments/lab9/govulncheck-red.txt) — reports reachable `GO-2026-5020` etc. -- **Green** (QuickNotes on Go 1.25.11): [`govulncheck-green.txt`](attachments/lab9/govulncheck-green.txt) — `No vulnerabilities found.` +**Red CI** — `govulncheck` on Go 1.24.13 (8 reachable stdlib vulns, run [#16](https://github.com/markovav-official/DevOps-Intro/actions/runs/28897363064)): + +![govulncheck failed on Go 1.24.13](attachments/lab9/red_ci.png) + +Local trace with intentional bad dependency: [`govulncheck-red.txt`](attachments/lab9/govulncheck-red.txt) — `golang.org/x/crypto@v0.3.0` + `ssh.Dial` reports reachable `GO-2026-5020` etc. + +**Green CI** — `govulncheck` on Go 1.25.11 (clean QuickNotes, run [#17](https://github.com/markovav-official/DevOps-Intro/actions/runs/28897987423)): + +![govulncheck passed on Go 1.25.11](attachments/lab9/green_ci.png) + +[`govulncheck-green.txt`](attachments/lab9/govulncheck-green.txt) — `No vulnerabilities found.` ### Design questions (h–j) @@ -205,4 +214,6 @@ OS packages in the container image, misconfigured `compose.yaml`, secrets in git | `app/security.go` | Security headers middleware | | `app/Dockerfile` | `USER nonroot:nonroot` (Trivy config fix) | | `.github/workflows/ci.yml` | + `govulncheck` job | -| `submissions/attachments/lab9/` | Scan logs, SBOM, ZAP reports | +| `submissions/attachments/lab9/` | Scan logs, SBOM, ZAP reports, CI screenshots | +| `submissions/attachments/lab9/red_ci.png` | Failed CI run #16 (`govulncheck` on Go 1.24) | +| `submissions/attachments/lab9/green_ci.png` | Successful CI run #17 (`govulncheck` on Go 1.25.11) | From 8354a448a3d35598b277b88e5105c8bf94f381b9 Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Tue, 7 Jul 2026 23:58:24 +0300 Subject: [PATCH 07/18] docs(lab10): add submission template for deadline MR --- submissions/attachments/lab10/.gitkeep | 0 submissions/lab10.md | 113 +++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 submissions/attachments/lab10/.gitkeep create mode 100644 submissions/lab10.md diff --git a/submissions/attachments/lab10/.gitkeep b/submissions/attachments/lab10/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/submissions/lab10.md b/submissions/lab10.md new file mode 100644 index 000000000..918661f11 --- /dev/null +++ b/submissions/lab10.md @@ -0,0 +1,113 @@ +# Lab 10 submission + +**Host:** <!-- e.g. Apple Silicon Mac -->. **Image:** <!-- ghcr.io/... -->. **HF Space:** <!-- URL -->. + +--- + +## Task 1 — CI push to `ghcr.io` + +### Release workflow + +<!-- Paste or link `.github/workflows/release.yml` --> + +### Registry & pull evidence + +- **Image URL:** <!-- ghcr.io/<user>/<repo>/quicknotes:v0.1.0 --> +- **Clean pull:** <!-- `docker pull ...` output or screenshot --> + +### CI release run + +- **Green run:** <!-- https://github.com/.../actions/runs/... --> + +### Design questions (a–c) + +**a) OIDC vs `GITHUB_TOKEN`** + +<!-- TODO --> + +**b) `:latest` vs immutable `:v0.1.0`** + +<!-- TODO --> + +**c) `packages: write` scope only** + +<!-- TODO --> + +--- + +## Task 2 — Hugging Face Spaces + +### Space URL & health check + +- **Space:** <!-- https://<user>-<space>.hf.space --> +- **`curl -v` `/health`:** <!-- paste output --> + +### Space repo files + +<!-- Paste or link `cloud/` Dockerfile + README.md (frontmatter) --> + +### Latency (scale-to-zero) + +| Measurement | Value (s) | +|-------------|----------:| +| Warm p50 (5 requests) | | +| Cold #1 | | +| Cold #2 | | +| Cold #3 | | + +### Design questions (d–f) + +**d) HF sleep vs Cloud Run scale-to-zero** + +<!-- TODO --> + +**e) Why `app_port: 8080`?** + +<!-- TODO --> + +**f) Pull from ghcr.io vs build in Space** + +<!-- TODO --> + +--- + +## Bonus — Cloudflare Tunnel + comparison + +### Quick tunnel + +- **URL:** <!-- https://<random>.trycloudflare.com --> +- **Verified from other network:** <!-- cellular / other IP evidence --> + +### Comparison table + +| Metric | HF Spaces (hosted) | Cloudflare Tunnel (local-via-edge) | +|--------|-------------------:|-----------------------------------:| +| Warm p50 | | | +| Warm p95 | | | +| Cold start | | N/A (continuously local) | +| Public URL stability | stable | ephemeral on restart | +| Cost | free | free | + +### Design questions (g–i) + +**g) Which is "really cloud"?** + +<!-- TODO --> + +**h) Latency dominator (HF vs Tunnel)** + +<!-- TODO --> + +**i) When is Tunnel right for production?** + +<!-- TODO --> + +--- + +## Artifacts + +| Path | Description | +|------|-------------| +| `.github/workflows/release.yml` | Tag → build → push to ghcr.io | +| `cloud/` | HF Space Dockerfile, README, tunnel notes | +| `submissions/attachments/lab10/` | Screenshots, curl logs, latency captures | From f989754edbd949b0376efc6b27524a743a13ac16 Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 00:05:13 +0300 Subject: [PATCH 08/18] feat(lab10): ghcr release workflow, HF Space config, cloud tunnel scripts --- .github/workflows/release.yml | 39 ++++++ cloud/hf-space/Dockerfile | 4 + cloud/hf-space/README.md | 19 +++ cloud/scripts/measure-cold.sh | 9 ++ cloud/scripts/measure-warm.sh | 20 +++ cloud/scripts/tunnel-hyperfine.sh | 21 +++ cloud/teardown.md | 22 ++++ submissions/attachments/lab10/.gitkeep | 0 submissions/attachments/lab10/docker-pull.txt | 3 + submissions/attachments/lab10/hf-cold.txt | 2 + submissions/attachments/lab10/hf-health.txt | 2 + submissions/attachments/lab10/hf-warm.txt | 2 + submissions/attachments/lab10/tunnel-curl.txt | 2 + submissions/lab10.md | 123 ++++++++++++++---- 14 files changed, 240 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 cloud/hf-space/Dockerfile create mode 100644 cloud/hf-space/README.md create mode 100755 cloud/scripts/measure-cold.sh create mode 100755 cloud/scripts/measure-warm.sh create mode 100755 cloud/scripts/tunnel-hyperfine.sh create mode 100644 cloud/teardown.md delete mode 100644 submissions/attachments/lab10/.gitkeep create mode 100644 submissions/attachments/lab10/docker-pull.txt create mode 100644 submissions/attachments/lab10/hf-cold.txt create mode 100644 submissions/attachments/lab10/hf-health.txt create mode 100644 submissions/attachments/lab10/hf-warm.txt create mode 100644 submissions/attachments/lab10/tunnel-curl.txt diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..d5acf7b43 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,39 @@ +name: release + +on: + push: + tags: + - 'v*' + +permissions: + contents: read + packages: write + +env: + REGISTRY: ghcr.io + IMAGE: ghcr.io/${{ github.repository }}/quicknotes + +jobs: + release: + name: release + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + + - uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 + + - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + with: + context: app + file: app/Dockerfile + platforms: linux/amd64 + push: true + tags: | + ${{ env.IMAGE }}:${{ github.ref_name }} + ${{ env.IMAGE }}:latest diff --git a/cloud/hf-space/Dockerfile b/cloud/hf-space/Dockerfile new file mode 100644 index 000000000..661cbf272 --- /dev/null +++ b/cloud/hf-space/Dockerfile @@ -0,0 +1,4 @@ +# Pull the CI-built image (linux/amd64) instead of rebuilding in HF. +# Trade-off: faster Space builds and identical artifact to ghcr.io release; +# requires public package visibility on first push. +FROM ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 diff --git a/cloud/hf-space/README.md b/cloud/hf-space/README.md new file mode 100644 index 000000000..db04154fe --- /dev/null +++ b/cloud/hf-space/README.md @@ -0,0 +1,19 @@ +--- +title: QuickNotes Lab 10 +emoji: 📝 +colorFrom: blue +colorTo: green +sdk: docker +app_port: 8080 +pinned: false +license: mit +--- + +# QuickNotes on Hugging Face Spaces + +DevOps Intro Lab 10 — same container image as [`ghcr.io/markovav-official/devops-intro/quicknotes`](https://github.com/markovav-official/DevOps-Intro/pkgs/container/devops-intro%2Fquicknotes). + +- `/health` — liveness +- `/notes` — JSON API + +Built from the course fork; image pushed by `.github/workflows/release.yml` on `v*` tags. diff --git a/cloud/scripts/measure-cold.sh b/cloud/scripts/measure-cold.sh new file mode 100755 index 000000000..6189435e5 --- /dev/null +++ b/cloud/scripts/measure-cold.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Single request after idle sleep — use between runs when Space is sleeping. +set -euo pipefail + +URL="${1:?usage: $0 <base-url>}" +PATH_SUFFIX="${2:-/health}" +TARGET="${URL%/}${PATH_SUFFIX}" + +curl -w 'time_total=%{time_total}s http_code=%{http_code}\n' -o /dev/null -s "$TARGET" diff --git a/cloud/scripts/measure-warm.sh b/cloud/scripts/measure-warm.sh new file mode 100755 index 000000000..b592dcae4 --- /dev/null +++ b/cloud/scripts/measure-warm.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Warm latency: 5 consecutive requests, print times and p50 (median). +set -euo pipefail + +URL="${1:?usage: $0 <base-url>}" +PATH_SUFFIX="${2:-/health}" +TARGET="${URL%/}${PATH_SUFFIX}" + +times=() +for _ in 1 2 3 4 5; do + t=$(curl -w '%{time_total}' -o /dev/null -s "$TARGET") + times+=("$t") + printf '%s\n' "$t" +done + +python3 - <<'PY' "${times[@]}" +import statistics, sys +vals = [float(x) for x in sys.argv[1:]] +print(f"p50: {statistics.median(vals):.4f}s") +PY diff --git a/cloud/scripts/tunnel-hyperfine.sh b/cloud/scripts/tunnel-hyperfine.sh new file mode 100755 index 000000000..62032703d --- /dev/null +++ b/cloud/scripts/tunnel-hyperfine.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Bonus: warm p50/p95 via hyperfine (50 runs) against a public tunnel URL. +set -euo pipefail + +URL="${1:?usage: $0 <https://xxx.trycloudflare.com>}" +TARGET="${URL%/}/health" + +command -v hyperfine >/dev/null || { echo "install hyperfine: brew install hyperfine"; exit 1; } + +hyperfine --warmup 5 --runs 50 --export-json /dev/stdout \ + "curl -fsS -o /dev/null $TARGET" | python3 -c " +import json, sys, statistics +d = json.load(sys.stdin) +t = [r['times'][0] for r in d['results']] +t.sort() +n = len(t) +p50 = t[n//2] +p95 = t[int(n*0.95)-1] +print(f'p50: {p50:.4f}s') +print(f'p95: {p95:.4f}s') +" diff --git a/cloud/teardown.md b/cloud/teardown.md new file mode 100644 index 000000000..5a0200d74 --- /dev/null +++ b/cloud/teardown.md @@ -0,0 +1,22 @@ +# Teardown + +## Hugging Face Space + +1. Open [huggingface.co/spaces](https://huggingface.co/spaces) → your Space → **Settings**. +2. Scroll to **Delete this Space** → confirm. + +## ghcr.io package + +The image stays in GitHub Packages (free). To remove: + +1. Repo → **Packages** → `devops-intro/quicknotes` → **Package settings** → **Delete package**. + +## Cloudflare quick tunnel + +Stop the `cloudflared` process (`Ctrl+C`). The `*.trycloudflare.com` URL is discarded automatically. + +## Local containers + +```bash +docker compose down +``` diff --git a/submissions/attachments/lab10/.gitkeep b/submissions/attachments/lab10/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/submissions/attachments/lab10/docker-pull.txt b/submissions/attachments/lab10/docker-pull.txt new file mode 100644 index 000000000..312bbddf0 --- /dev/null +++ b/submissions/attachments/lab10/docker-pull.txt @@ -0,0 +1,3 @@ +# Run after release workflow succeeds (no local image present): +# docker rmi ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 2>/dev/null || true +# docker pull ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 diff --git a/submissions/attachments/lab10/hf-cold.txt b/submissions/attachments/lab10/hf-cold.txt new file mode 100644 index 000000000..b8a7a6b47 --- /dev/null +++ b/submissions/attachments/lab10/hf-cold.txt @@ -0,0 +1,2 @@ +# Paste 3 cold runs (35+ min idle between sessions): +# ./cloud/scripts/measure-cold.sh https://<your-user>-quicknotes-lab10.hf.space diff --git a/submissions/attachments/lab10/hf-health.txt b/submissions/attachments/lab10/hf-health.txt new file mode 100644 index 000000000..88b46e11d --- /dev/null +++ b/submissions/attachments/lab10/hf-health.txt @@ -0,0 +1,2 @@ +# Paste output of: +# curl -v https://<your-user>-quicknotes-lab10.hf.space/health diff --git a/submissions/attachments/lab10/hf-warm.txt b/submissions/attachments/lab10/hf-warm.txt new file mode 100644 index 000000000..ad38bdd6b --- /dev/null +++ b/submissions/attachments/lab10/hf-warm.txt @@ -0,0 +1,2 @@ +# Paste output of: +# ./cloud/scripts/measure-warm.sh https://<your-user>-quicknotes-lab10.hf.space diff --git a/submissions/attachments/lab10/tunnel-curl.txt b/submissions/attachments/lab10/tunnel-curl.txt new file mode 100644 index 000000000..6eeea3468 --- /dev/null +++ b/submissions/attachments/lab10/tunnel-curl.txt @@ -0,0 +1,2 @@ +# Paste curl from phone/cellular or second machine: +# curl -fsS https://<random>.trycloudflare.com/health diff --git a/submissions/lab10.md b/submissions/lab10.md index 918661f11..8e6dc5c25 100644 --- a/submissions/lab10.md +++ b/submissions/lab10.md @@ -1,6 +1,6 @@ # Lab 10 submission -**Host:** <!-- e.g. Apple Silicon Mac -->. **Image:** <!-- ghcr.io/... -->. **HF Space:** <!-- URL -->. +**Host:** Apple Silicon Mac. **Image:** `ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0`. **HF Space:** `https://markovav-official-quicknotes-lab10.hf.space` *(replace with your Space slug after create)*. --- @@ -8,66 +8,119 @@ ### Release workflow -<!-- Paste or link `.github/workflows/release.yml` --> +[`.github/workflows/release.yml`](../.github/workflows/release.yml) — triggers on `v*` tags, builds `app/Dockerfile`, pushes `linux/amd64` to ghcr with version + `latest`. + +```yaml +on: + push: + tags: + - 'v*' +permissions: + contents: read + packages: write +# ... +tags: | + ghcr.io/${{ github.repository }}/quicknotes:${{ github.ref_name }} + ghcr.io/${{ github.repository }}/quicknotes:latest +``` + +All third-party actions SHA-pinned (`checkout`, `setup-buildx`, `login`, `build-push`). ### Registry & pull evidence -- **Image URL:** <!-- ghcr.io/<user>/<repo>/quicknotes:v0.1.0 --> -- **Clean pull:** <!-- `docker pull ...` output or screenshot --> +- **Image URL:** `ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0` +- **Package:** https://github.com/markovav-official/DevOps-Intro/pkgs/container/devops-intro%2Fquicknotes +- **Clean pull:** see [`attachments/lab10/docker-pull.txt`](attachments/lab10/docker-pull.txt) + +> After first push the package is **private** by default — set visibility to **Public** in GitHub Packages UI once. ### CI release run -- **Green run:** <!-- https://github.com/.../actions/runs/... --> +- **Green run:** <!-- paste https://github.com/markovav-official/DevOps-Intro/actions/runs/... after `git push origin v0.1.0` --> ### Design questions (a–c) **a) OIDC vs `GITHUB_TOKEN`** -<!-- TODO --> +`GITHUB_TOKEN` is minted per workflow run, scoped to this repo, and sufficient for `docker push` to `ghcr.io` in the same repository. **OIDC** (federated identity to AWS/GCP/Azure) is for pushing or deploying to **external** accounts without long-lived cloud secrets — the workflow proves its identity to a third party. OIDC gives cross-account, auditable, short-lived credentials; `GITHUB_TOKEN` cannot leave GitHub's trust boundary. **b) `:latest` vs immutable `:v0.1.0`** -<!-- TODO --> +`:v0.1.0` is the **audit trail** — rollbacks and incident response reference an exact digest. `:latest` is the **convenience pointer** for `docker pull` without a version and for Spaces/compose defaults that always want "current release". Production deploys should pin immutable tags; `latest` is mutable by design. **c) `packages: write` scope only** -<!-- TODO --> +**Principle:** least privilege. `packages: write` lets the job publish container images only. A compromised action cannot rewrite `main`, open PRs, or modify other repos — attacks like retagging unrelated packages or force-pushing code require permissions this job does not have (`contents: write`, `id-token` to foreign clouds, etc.). --- ## Task 2 — Hugging Face Spaces +### Space setup + +```bash +# 1. Create Space at https://huggingface.co/new-space — Docker SDK, public +# 2. Clone and copy cloud/hf-space files: +git clone https://huggingface.co/spaces/<your-user>/quicknotes-lab10 hf-space-repo +cp cloud/hf-space/Dockerfile cloud/hf-space/README.md hf-space-repo/ +cd hf-space-repo && git add . && git commit -m "Deploy QuickNotes from ghcr.io" && git push +``` + ### Space URL & health check -- **Space:** <!-- https://<user>-<space>.hf.space --> -- **`curl -v` `/health`:** <!-- paste output --> +- **Space:** `https://markovav-official-quicknotes-lab10.hf.space` +- **`curl -v` `/health`:** see [`attachments/lab10/hf-health.txt`](attachments/lab10/hf-health.txt) ### Space repo files -<!-- Paste or link `cloud/` Dockerfile + README.md (frontmatter) --> +**`cloud/hf-space/Dockerfile`** — pull pre-built release (no rebuild on HF): + +```dockerfile +FROM ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 +``` + +**`cloud/hf-space/README.md`** frontmatter: + +```yaml +--- +title: QuickNotes Lab 10 +emoji: 📝 +sdk: docker +app_port: 8080 +--- +``` ### Latency (scale-to-zero) +Measured with [`cloud/scripts/measure-warm.sh`](../cloud/scripts/measure-warm.sh) and [`measure-cold.sh`](../cloud/scripts/measure-cold.sh) after 35+ min idle. + | Measurement | Value (s) | |-------------|----------:| -| Warm p50 (5 requests) | | -| Cold #1 | | -| Cold #2 | | -| Cold #3 | | +| Warm p50 (5 requests) | <!-- fill --> | +| Cold #1 | <!-- fill --> | +| Cold #2 | <!-- fill --> | +| Cold #3 | <!-- fill --> | + +Raw logs: [`attachments/lab10/hf-warm.txt`](attachments/lab10/hf-warm.txt) · [`attachments/lab10/hf-cold.txt`](attachments/lab10/hf-cold.txt) ### Design questions (d–f) **d) HF sleep vs Cloud Run scale-to-zero** -<!-- TODO --> +Same pattern (no traffic → no running container), different SLO. HF free tier optimizes for **cost and sharing demos**, not low latency: cold start includes scheduler wake, **image pull/layer cache**, and container boot — often tens of seconds. Cloud Run targets **production HTTP** with faster scale-from-zero, regional capacity, and tuned networking. HF trades wake time for zero card and zero bill. **e) Why `app_port: 8080`?** -<!-- TODO --> +HF defaults to **7860** (Gradio/streamlit convention). QuickNotes listens on **8080** (`ADDR=:8080`). Without `app_port: 8080` the platform probes the wrong port → health checks fail and the Space shows "container exited". **f) Pull from ghcr.io vs build in Space** -<!-- TODO --> +| Pull from ghcr | Build in Space | +|----------------|----------------| +| Same artifact as CI release | Reproduces build on HF builders | +| Fast Space deploy (no compile) | Slower, needs `app/` source in Space repo | +| Debug needs ghcr access/logs | Dockerfile self-contained on HF | +| **Chosen:** pull — single source of truth from Task 1 tag | --- @@ -75,16 +128,26 @@ ### Quick tunnel -- **URL:** <!-- https://<random>.trycloudflare.com --> -- **Verified from other network:** <!-- cellular / other IP evidence --> +```bash +docker compose up -d quicknotes +cloudflared tunnel --url http://localhost:8080 +# copy https://<random>.trycloudflare.com from output +``` + +- **URL:** <!-- paste trycloudflare URL --> +- **Verified from other network:** <!-- phone on cellular screenshot or curl from another host --> + +Evidence: [`attachments/lab10/tunnel-curl.txt`](attachments/lab10/tunnel-curl.txt) + +Warm stats: `./cloud/scripts/tunnel-hyperfine.sh https://<random>.trycloudflare.com` ### Comparison table | Metric | HF Spaces (hosted) | Cloudflare Tunnel (local-via-edge) | |--------|-------------------:|-----------------------------------:| -| Warm p50 | | | -| Warm p95 | | | -| Cold start | | N/A (continuously local) | +| Warm p50 | <!-- HF --> | <!-- tunnel --> | +| Warm p95 | <!-- HF --> | <!-- tunnel --> | +| Cold start | <!-- HF avg of 3 --> | N/A (continuously local) | | Public URL stability | stable | ephemeral on restart | | Cost | free | free | @@ -92,15 +155,17 @@ **g) Which is "really cloud"?** -<!-- TODO --> +HF runs **your container in their datacenter** — classic PaaS. Tunnel runs the app **on your machine**; only routing/DDoS/TLS termination is cloud. Users see HTTPS either way; the distinction matters for **data residency, uptime SLA, and who patches the host**. For a course demo both are "cloud-delivered"; for compliance only HF counts as app hosting in a third-party DC. **h) Latency dominator (HF vs Tunnel)** -<!-- TODO --> +- **HF warm:** container process + HF ingress + geographic distance to their region. +- **HF cold:** **wake + image pull** dominates. +- **Tunnel warm:** **last-mile internet path** (phone → Cloudflare edge → your home uplink → localhost). Often RTT and upload bandwidth, not Go handler time. **i) When is Tunnel right for production?** -<!-- TODO --> +**Right:** exposing **on-prem/home lab** services without public IP, temporary **stakeholder demos**, webhooks to a dev laptop, internal tools behind NAT. **Never right:** user-facing production APIs needing **HA, stable URL, predictable egress IP, or 24/7** — laptop sleep, ephemeral URL, and residential bandwidth are blockers. Use managed hosting (HF, Cloud Run, k8s) instead. --- @@ -109,5 +174,7 @@ | Path | Description | |------|-------------| | `.github/workflows/release.yml` | Tag → build → push to ghcr.io | -| `cloud/` | HF Space Dockerfile, README, tunnel notes | -| `submissions/attachments/lab10/` | Screenshots, curl logs, latency captures | +| `cloud/hf-space/` | HF Space Dockerfile + README frontmatter | +| `cloud/scripts/` | Warm/cold/tunnel latency helpers | +| `cloud/teardown.md` | Delete Space, stop tunnel | +| `submissions/attachments/lab10/` | Pull logs, curl, latency captures | From 7a05f2e28227b95f2077f3a24f1a9c67efe0d3f9 Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 00:11:25 +0300 Subject: [PATCH 09/18] fix(lab10): lowercase ghcr image name for registry rules --- .github/workflows/release.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d5acf7b43..743757265 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,6 @@ permissions: env: REGISTRY: ghcr.io - IMAGE: ghcr.io/${{ github.repository }}/quicknotes jobs: release: @@ -20,6 +19,11 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + - id: image + run: | + repo="$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" + echo "name=ghcr.io/${repo}/quicknotes" >> "$GITHUB_OUTPUT" + - uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 @@ -35,5 +39,5 @@ jobs: platforms: linux/amd64 push: true tags: | - ${{ env.IMAGE }}:${{ github.ref_name }} - ${{ env.IMAGE }}:latest + ${{ steps.image.outputs.name }}:${{ github.ref_name }} + ${{ steps.image.outputs.name }}:latest From 11c4b263a41ad5564c4c4f4dc4c7b1c6fafe58ed Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 00:15:27 +0300 Subject: [PATCH 10/18] docs(lab10): add Task 1 release run and docker pull evidence --- submissions/attachments/lab10/docker-pull.txt | 15 ++++++++++++--- submissions/lab10.md | 6 +++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/submissions/attachments/lab10/docker-pull.txt b/submissions/attachments/lab10/docker-pull.txt index 312bbddf0..5b264a247 100644 --- a/submissions/attachments/lab10/docker-pull.txt +++ b/submissions/attachments/lab10/docker-pull.txt @@ -1,3 +1,12 @@ -# Run after release workflow succeeds (no local image present): -# docker rmi ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 2>/dev/null || true -# docker pull ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 +$ docker rmi ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 2>/dev/null || true +$ docker pull --platform linux/amd64 ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 +v0.1.0: Pulling from markovav-official/devops-intro/quicknotes +2baffef0768b: Pull complete +561e2a537016: Pull complete +15d4e2e513f5: Pull complete +Digest: sha256:f540e365de05543453674d4cdc48e61111e1c2459da295a258ea9b7a63010544 +Status: Downloaded newer image for ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 +ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0 + +# Image is linux/amd64 only (CI release workflow). On arm64 host use --platform linux/amd64 +# (matches HF Spaces builders). diff --git a/submissions/lab10.md b/submissions/lab10.md index 8e6dc5c25..7e6ee55f1 100644 --- a/submissions/lab10.md +++ b/submissions/lab10.md @@ -30,13 +30,13 @@ All third-party actions SHA-pinned (`checkout`, `setup-buildx`, `login`, `build- - **Image URL:** `ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0` - **Package:** https://github.com/markovav-official/DevOps-Intro/pkgs/container/devops-intro%2Fquicknotes -- **Clean pull:** see [`attachments/lab10/docker-pull.txt`](attachments/lab10/docker-pull.txt) +- **Clean pull:** see [`attachments/lab10/docker-pull.txt`](attachments/lab10/docker-pull.txt) — public package, digest `sha256:f540e365…` -> After first push the package is **private** by default — set visibility to **Public** in GitHub Packages UI once. +Package visibility set to **Public** (required for HF Spaces pull without auth). ### CI release run -- **Green run:** <!-- paste https://github.com/markovav-official/DevOps-Intro/actions/runs/... after `git push origin v0.1.0` --> +- **Green run:** [release #2 — `v0.1.0`](https://github.com/markovav-official/DevOps-Intro/actions/runs/28899025918) ### Design questions (a–c) From e874eb2c2b630361116faf17536c1684fe72fabb Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 00:42:18 +0300 Subject: [PATCH 11/18] docs(lab10): HF Space, tunnel bonus, and latency evidence --- .../attachments/lab10/comparison-vm.txt | 21 +++++++++++ submissions/attachments/lab10/hf-cold.txt | 7 +++- submissions/attachments/lab10/hf-health.txt | 12 +++++- submissions/attachments/lab10/hf-warm.txt | 8 +++- submissions/attachments/lab10/tunnel-curl.txt | 19 +++++++++- submissions/lab10.md | 37 ++++++++++--------- 6 files changed, 79 insertions(+), 25 deletions(-) create mode 100644 submissions/attachments/lab10/comparison-vm.txt diff --git a/submissions/attachments/lab10/comparison-vm.txt b/submissions/attachments/lab10/comparison-vm.txt new file mode 100644 index 000000000..f49f31f38 --- /dev/null +++ b/submissions/attachments/lab10/comparison-vm.txt @@ -0,0 +1,21 @@ +# Warm latency — 5 consecutive curl requests from University VM + +## HF Spaces (https://markovav-devops-intro.hf.space/health) +0.721615 +0.648529 +0.650473 +0.752180 +0.587449 +p50: 0.6505s +p95: 0.7216s + +## Cloudflare Tunnel (https://tenant-voting-composer-highly.trycloudflare.com/health) +0.565016 +0.342548 +0.391951 +0.370219 +60.530293 +p50: 0.3920s +p95: 0.5650s + +# Tunnel run #5 spike (~60s) — likely cloudflared/Mac uplink blip; p50/p95 use all 5 samples. diff --git a/submissions/attachments/lab10/hf-cold.txt b/submissions/attachments/lab10/hf-cold.txt index b8a7a6b47..5da449b72 100644 --- a/submissions/attachments/lab10/hf-cold.txt +++ b/submissions/attachments/lab10/hf-cold.txt @@ -1,2 +1,5 @@ -# Paste 3 cold runs (35+ min idle between sessions): -# ./cloud/scripts/measure-cold.sh https://<your-user>-quicknotes-lab10.hf.space +time_total=1.238s http_code=200 +time_total=2.084s http_code=200 +time_total=1.871s http_code=200 + +# avg: 1.73s (after ~40 min idle; image cached on HF builders) diff --git a/submissions/attachments/lab10/hf-health.txt b/submissions/attachments/lab10/hf-health.txt index 88b46e11d..02fef8939 100644 --- a/submissions/attachments/lab10/hf-health.txt +++ b/submissions/attachments/lab10/hf-health.txt @@ -1,2 +1,10 @@ -# Paste output of: -# curl -v https://<your-user>-quicknotes-lab10.hf.space/health +* Connected to markovav-devops-intro.hf.space (52.48.128.222) port 443 +> GET /health HTTP/2 +> Host: markovav-devops-intro.hf.space +< HTTP/2 200 +< content-type: application/json +< cache-control: no-cache, no-store, must-revalidate, private +< content-security-policy: default-src 'none' +< x-content-type-options: nosniff +< x-frame-options: DENY +{"notes":0,"status":"ok"} diff --git a/submissions/attachments/lab10/hf-warm.txt b/submissions/attachments/lab10/hf-warm.txt index ad38bdd6b..7218eff43 100644 --- a/submissions/attachments/lab10/hf-warm.txt +++ b/submissions/attachments/lab10/hf-warm.txt @@ -1,2 +1,6 @@ -# Paste output of: -# ./cloud/scripts/measure-warm.sh https://<your-user>-quicknotes-lab10.hf.space +0.970229 +1.039932 +0.773275 +0.900680 +0.812027 +p50: 0.9007s diff --git a/submissions/attachments/lab10/tunnel-curl.txt b/submissions/attachments/lab10/tunnel-curl.txt index 6eeea3468..3f35a3e3a 100644 --- a/submissions/attachments/lab10/tunnel-curl.txt +++ b/submissions/attachments/lab10/tunnel-curl.txt @@ -1,2 +1,17 @@ -# Paste curl from phone/cellular or second machine: -# curl -fsS https://<random>.trycloudflare.com/health +# curl from University VM — different network than Mac running cloudflared +# URL: https://tenant-voting-composer-highly.trycloudflare.com/health + +* Connected to tenant-voting-composer-highly.trycloudflare.com (104.16.231.132) port 443 +> GET /health HTTP/2 +> Host: tenant-voting-composer-highly.trycloudflare.com +< HTTP/2 200 +< server: cloudflare +< cf-ray: a179ed132c12bb02-ARN +< content-type: application/json +< cache-control: no-cache, no-store, must-revalidate, private +< content-security-policy: default-src 'none' +< x-content-type-options: nosniff +< x-frame-options: DENY +{"notes":44,"status":"ok"} + +# Total time (first request, includes TLS + cold path): ~15s diff --git a/submissions/lab10.md b/submissions/lab10.md index 7e6ee55f1..7514e42f7 100644 --- a/submissions/lab10.md +++ b/submissions/lab10.md @@ -1,6 +1,6 @@ # Lab 10 submission -**Host:** Apple Silicon Mac. **Image:** `ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0`. **HF Space:** `https://markovav-official-quicknotes-lab10.hf.space` *(replace with your Space slug after create)*. +**Host:** Apple Silicon Mac. **Image:** `ghcr.io/markovav-official/devops-intro/quicknotes:v0.1.0`. **HF Space:** https://markovav-devops-intro.hf.space --- @@ -59,17 +59,16 @@ Package visibility set to **Public** (required for HF Spaces pull without auth). ### Space setup ```bash -# 1. Create Space at https://huggingface.co/new-space — Docker SDK, public -# 2. Clone and copy cloud/hf-space files: -git clone https://huggingface.co/spaces/<your-user>/quicknotes-lab10 hf-space-repo +git clone git@hf.co:spaces/markovav/DevOps-Intro hf-space-repo cp cloud/hf-space/Dockerfile cloud/hf-space/README.md hf-space-repo/ -cd hf-space-repo && git add . && git commit -m "Deploy QuickNotes from ghcr.io" && git push +cd hf-space-repo && git add . && git commit -m "Deploy QuickNotes from ghcr.io v0.1.0" && git push ``` ### Space URL & health check -- **Space:** `https://markovav-official-quicknotes-lab10.hf.space` -- **`curl -v` `/health`:** see [`attachments/lab10/hf-health.txt`](attachments/lab10/hf-health.txt) +- **Space:** https://markovav-devops-intro.hf.space +- **`curl -v` `/health`:** [`attachments/lab10/hf-health.txt`](attachments/lab10/hf-health.txt) — HTTP 200, security headers from Lab 9 middleware +- **`/notes`:** `[]` (empty store on fresh Space) ### Space repo files @@ -96,10 +95,12 @@ Measured with [`cloud/scripts/measure-warm.sh`](../cloud/scripts/measure-warm.sh | Measurement | Value (s) | |-------------|----------:| -| Warm p50 (5 requests) | <!-- fill --> | -| Cold #1 | <!-- fill --> | -| Cold #2 | <!-- fill --> | -| Cold #3 | <!-- fill --> | +| Warm p50 (5 requests) | 0.901 | +| Cold #1 | 1.24 | +| Cold #2 | 2.08 | +| Cold #3 | 1.87 | + +Warm p50 **0.9 s** → cold avg **~1.7 s** (~2×) after idle; image already on HF so wake is seconds, not tens of seconds. Raw logs: [`attachments/lab10/hf-warm.txt`](attachments/lab10/hf-warm.txt) · [`attachments/lab10/hf-cold.txt`](attachments/lab10/hf-cold.txt) @@ -134,20 +135,22 @@ cloudflared tunnel --url http://localhost:8080 # copy https://<random>.trycloudflare.com from output ``` -- **URL:** <!-- paste trycloudflare URL --> -- **Verified from other network:** <!-- phone on cellular screenshot or curl from another host --> +- **URL:** https://tenant-voting-composer-highly.trycloudflare.com +- **Verified from other network:** `curl` from **University VM** (different network than Mac running `cloudflared`) → HTTP **200** `{"notes":44,"status":"ok"}` via Cloudflare (`cf-ray: a179ed132c12bb02-ARN`, edge **ARN**) Evidence: [`attachments/lab10/tunnel-curl.txt`](attachments/lab10/tunnel-curl.txt) -Warm stats: `./cloud/scripts/tunnel-hyperfine.sh https://<random>.trycloudflare.com` +Warm stats (University VM, 5 requests each): [`attachments/lab10/comparison-vm.txt`](attachments/lab10/comparison-vm.txt) ### Comparison table +Measured from **University VM** (same client, 5 warm `curl` requests to `/health`). + | Metric | HF Spaces (hosted) | Cloudflare Tunnel (local-via-edge) | |--------|-------------------:|-----------------------------------:| -| Warm p50 | <!-- HF --> | <!-- tunnel --> | -| Warm p95 | <!-- HF --> | <!-- tunnel --> | -| Cold start | <!-- HF avg of 3 --> | N/A (continuously local) | +| Warm p50 | 0.651 | 0.392 | +| Warm p95 | 0.722 | 0.565 | +| Cold start | ~1.7 (avg) | N/A (continuously local) | | Public URL stability | stable | ephemeral on restart | | Cost | free | free | From b2af60b7116db4f14ae87e1c1c5ece86b12a9f15 Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 20:04:29 +0300 Subject: [PATCH 12/18] feat(lab11): Nix flake for reproducible QuickNotes build and OCI image --- .github/workflows/nix-repro.yml | 53 +++++++ flake.lock | 61 +++++++ flake.nix | 62 ++++++++ .../attachments/lab11/docker-lab6-compare.txt | 7 + .../lab11/nix-build-quicknotes.log | 13 ++ .../attachments/lab11/nix-docker-digests.txt | 6 + submissions/lab11.md | 150 ++++++++++++++++++ 7 files changed, 352 insertions(+) create mode 100644 .github/workflows/nix-repro.yml create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 submissions/attachments/lab11/docker-lab6-compare.txt create mode 100644 submissions/attachments/lab11/nix-build-quicknotes.log create mode 100644 submissions/attachments/lab11/nix-docker-digests.txt create mode 100644 submissions/lab11.md diff --git a/.github/workflows/nix-repro.yml b/.github/workflows/nix-repro.yml new file mode 100644 index 000000000..6df539adf --- /dev/null +++ b/.github/workflows/nix-repro.yml @@ -0,0 +1,53 @@ +name: nix-repro + +on: + push: + branches: ['**'] + pull_request: + branches: [main] + +permissions: + contents: read + +jobs: + build-a: + name: nix-build-a + runs-on: ubuntu-24.04 + outputs: + digest: ${{ steps.hash.outputs.digest }} + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + + - uses: DeterminateSystems/nix-installer-action@90bb610b90bf290cad97484ba341453bd1cbefea # v19 + + - id: build + run: nix build .#docker --print-build-logs --print-out-paths > out-path.txt + + - id: hash + run: echo "digest=$(sha256sum "$(cat out-path.txt)" | awk '{print $1}')" >> "$GITHUB_OUTPUT" + + build-b: + name: nix-build-b + runs-on: ubuntu-24.04 + outputs: + digest: ${{ steps.hash.outputs.digest }} + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.2.2 + + - uses: DeterminateSystems/nix-installer-action@90bb610b90bf290cad97484ba341453bd1cbefea # v19 + + - id: build + run: nix build .#docker --print-build-logs --print-out-paths > out-path.txt + + - id: hash + run: echo "digest=$(sha256sum "$(cat out-path.txt)" | awk '{print $1}')" >> "$GITHUB_OUTPUT" + + compare: + name: nix-repro-ok + needs: [build-a, build-b] + runs-on: ubuntu-24.04 + steps: + - run: | + echo "build-a: ${{ needs.build-a.outputs.digest }}" + echo "build-b: ${{ needs.build-b.outputs.digest }}" + test "${{ needs.build-a.outputs.digest }}" = "${{ needs.build-b.outputs.digest }}" diff --git a/flake.lock b/flake.lock new file mode 100644 index 000000000..032fb8b8e --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1751274312, + "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 000000000..5106098e6 --- /dev/null +++ b/flake.nix @@ -0,0 +1,62 @@ +{ + description = "QuickNotes — reproducible Go binary and OCI image (Lab 11)"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + quicknotes = pkgs.buildGoModule { + pname = "quicknotes"; + version = "0.1.0"; + src = ./app; + + vendorHash = null; + + # nixos-24.11 ships Go 1.23; patch only inside the Nix sandbox. + postPatch = '' + substituteInPlace go.mod --replace-fail 'go 1.24' 'go 1.23' + ''; + + CGO_ENABLED = 0; + ldflags = [ "-s" "-w" ]; + }; + + imageRoot = pkgs.runCommand "quicknotes-image-root" {} '' + mkdir -p $out/data + cp ${quicknotes}/bin/quicknotes $out/quicknotes + cp ${./app/seed.json} $out/seed.json + ''; + in { + packages.quicknotes = quicknotes; + packages.default = quicknotes; + + packages.docker = pkgs.dockerTools.buildImage { + name = "quicknotes"; + tag = "nix"; + copyToRoot = imageRoot; + config = { + Entrypoint = [ "/quicknotes" ]; + ExposedPorts = { "8080/tcp" = {}; }; + User = "65532:65532"; + Env = [ + "ADDR=:8080" + "DATA_PATH=/data/notes.json" + "SEED_PATH=/seed.json" + ]; + }; + }; + + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + go_1_24 + gopls + golangci-lint + ]; + }; + }); +} diff --git a/submissions/attachments/lab11/docker-lab6-compare.txt b/submissions/attachments/lab11/docker-lab6-compare.txt new file mode 100644 index 000000000..6ad6931f2 --- /dev/null +++ b/submissions/attachments/lab11/docker-lab6-compare.txt @@ -0,0 +1,7 @@ +$ docker build --no-cache -t qn-lab6:run1 ./app +$ docker build --no-cache -t qn-lab6:run2 ./app +$ docker images --no-trunc qn-lab6 + +REPOSITORY TAG IMAGE ID SIZE +qn-lab6 run2 sha256:fbcdbd2e78cedf9b7e904f11b561c388b28abd5f75e396baa851a102aca0df12 16MB +qn-lab6 run1 sha256:01073da0688e9b8a22df65b857da54bf64d4b7fda60234cc7d821485e8da3ce8 16MB diff --git a/submissions/attachments/lab11/nix-build-quicknotes.log b/submissions/attachments/lab11/nix-build-quicknotes.log new file mode 100644 index 000000000..15ca2f3fa --- /dev/null +++ b/submissions/attachments/lab11/nix-build-quicknotes.log @@ -0,0 +1,13 @@ +building '/nix/store/c2084xfai8pv8zylc209398qg136ly09-quicknotes-0.1.0.drv'... +quicknotes> Running phase: buildPhase +quicknotes> Building subPackage . +quicknotes> Running phase: checkPhase +quicknotes> ok quicknotes 0.009s +quicknotes> Running phase: installPhase +quicknotes> Running phase: fixupPhase + +# store hash (env A & B identical): +sha256:1xh9z7n1ax8hbissdcr7ivj2zcx56fhb1aj4i1l7hs5axq29xrym + +# health: +curl http://127.0.0.1:18080/health -> {"notes":4,"status":"ok"} diff --git a/submissions/attachments/lab11/nix-docker-digests.txt b/submissions/attachments/lab11/nix-docker-digests.txt new file mode 100644 index 000000000..b0a6be745 --- /dev/null +++ b/submissions/attachments/lab11/nix-docker-digests.txt @@ -0,0 +1,6 @@ +# nix build .#docker (University VM, two independent checkouts) + +env A: 28db2a32677bb3eb3c133ec33072ff4ad4350ea67d4445b30c422a349bd24874 +env B: 28db2a32677bb3eb3c133ec33072ff4ad4350ea67d4445b30c422a349bd24874 + +image size: 2.9M (docker-image-quicknotes.tar.gz) diff --git a/submissions/lab11.md b/submissions/lab11.md new file mode 100644 index 000000000..866e21cde --- /dev/null +++ b/submissions/lab11.md @@ -0,0 +1,150 @@ +# Lab 11 submission + +**Host:** Apple Silicon Mac (no local Nix). **Build env:** University VM + Determinate Nix 2.34.7. **nixpkgs:** `nixos-24.11` (see `flake.lock`). + +--- + +## Task 1 — Reproducible Go build + +### `flake.nix` + +See [`flake.nix`](../flake.nix) · lockfile [`flake.lock`](../flake.lock) + +Uses **`buildGoModule`** with `vendorHash = null` (no third-party Go modules). `postPatch` rewrites `go 1.24` → `go 1.23` inside the sandbox because `nixos-24.11` ships Go 1.23. + +### Build log excerpt + +[`attachments/lab11/nix-build-quicknotes.log`](attachments/lab11/nix-build-quicknotes.log) + +```text +quicknotes> ok quicknotes 0.009s +``` + +### Reproducibility proof (store hashes) + +Two independent checkouts on **University VM** (`/root/lab11-work/DevOps-Intro` and `/root/lab11-fresh`): + +| Environment | `nix-store --query --hash` | +|-------------|----------------------------| +| A | `sha256:1xh9z7n1ax8hbissdcr7ivj2zcx56fhb1aj4i1l7hs5axq29xrym` | +| B | `sha256:1xh9z7n1ax8hbissdcr7ivj2zcx56fhb1aj4i1l7hs5axq29xrym` | + +### Runtime proof + +```bash +ADDR=:18080 DATA_PATH=/tmp/qn-notes.json SEED_PATH=$PWD/app/seed.json ./result/bin/quicknotes & +curl -fsS http://127.0.0.1:18080/health +# {"notes":4,"status":"ok"} +``` + +### Design questions (a–d) + +**a) Why isn't `go build` bit-identical across machines?** + +Build IDs embed timestamps and VCS metadata; module cache paths differ; `-trimpath` behavior varies; floating `go` toolchain versions change compiler output. Two laptops with the same Git SHA can still produce different ELF hashes. + +**b) What is `vendorHash`?** + +SHA-256 over the output of `go mod vendor` (the `vendor/` tree). If wrong, Nix fails with `hash mismatch` and prints the correct `got:` value. With `vendorHash = null`, Nix skips the check — fine for hacking, useless for reproducibility. + +**c) Why is `flake.lock` critical?** + +It pins **every flake input** (nixpkgs revision, flake-utils, etc.) to exact commits. Delete it before the second build and Nix may fetch a newer nixpkgs → different Go compiler → different binary hash. + +**d) `buildGoModule` vs `buildGoApplication`** + +`buildGoModule` expects `go.mod`/`go.sum` and vendors deps (`vendorHash`). `buildGoApplication` is for projects already using a checked-in `vendor/` tree or simpler layouts. **Pick `buildGoModule`** for QuickNotes — standard for Go modules, explicit vendor pinning. + +--- + +## Task 2 — Deterministic OCI image + +### Docker output in flake + +```nix +packages.docker = pkgs.dockerTools.buildImage { ... }; +``` + +`nix build .#docker` → OCI tarball at `result` (load with `docker load < result`). + +### Image digest proof + +[`attachments/lab11/nix-docker-digests.txt`](attachments/lab11/nix-docker-digests.txt) + +| Environment | `sha256sum` (OCI tarball) | +|-------------|---------------------------| +| A | `28db2a32677bb3eb3c133ec33072ff4ad4350ea67d4445b30c422a349bd24874` | +| B | `28db2a32677bb3eb3c133ec33072ff4ad4350ea67d4445b30c422a349bd24874` | + +### vs Lab 6 Dockerfile (non-reproducible) + +```bash +docker build --no-cache -t qn-lab6:run1 ./app +docker build --no-cache -t qn-lab6:run2 ./app +docker images --no-trunc qn-lab6 +``` + +| Tag | Image ID | +|-----|----------| +| run1 | `sha256:01073da0688e9b8a22df65b857da54bf64d4b7fda60234cc7d821485e8da3ce8` | +| run2 | `sha256:fbcdbd2e78cedf9b7e904f11b561c388b28abd5f75e396baa851a102aca0df12` | + +Same Dockerfile + same source, **different digests** — non-reproducible layer metadata. + +### Image size + +| Build | Size | +|-------|-----:| +| Nix `dockerTools.buildImage` | 2.9 MB | +| Lab 6 distroless Dockerfile | ~16 MB | + +### Design questions (e–g) + +**e) What does `docker build` do that Nix doesn't?** + +Docker layers embed creation timestamps, may include non-deterministic file ordering, and `FROM` pulls mutable tags. `dockerTools.buildImage` builds from a fixed store path closure — same inputs → same tarball bytes. + +**f) What can an auditor prove with reproducible images?** + +Anyone can rebuild from source + flake.lock and verify the digest matches the published image — supply-chain integrity without trusting only a signature on opaque bits. + +**g) Trade-off vs `docker build`** + +Nix buys reproducibility and pinned toolchains at the cost of learning curve, larger store, and slower cold builds. Docker wins on familiarity, ecosystem, and incremental layer cache for most teams. + +--- + +## Bonus — CI-verified reproducibility + +### Workflow + +[`.github/workflows/nix-repro.yml`](../.github/workflows/nix-repro.yml) — two parallel `nix build .#docker` jobs; `nix-repro-ok` compares `sha256sum` outputs. + +### CI runs + +- **Green:** <!-- Actions URL — digests match --> +- **Red (intentional `SOURCE_DATE_EPOCH` break in job A):** <!-- Actions URL --> + +### Design questions (h–j) + +**h) Laptop vs CI reproducibility** + +CI proves any reviewer can trigger the same check on ephemeral runners — not just the author's machine. Auditors trust automation + logs, not screenshots. + +**i) Why two parallel jobs?** + +A single job running twice shares runner state, store paths, and timing — could hide environment leaks. Independent runners start from the same checkout with empty stores. + +**j) `SOURCE_DATE_EPOCH`** + +Timestamps leak into archive metadata and build IDs. `dockerTools.buildImage` respects `SOURCE_DATE_EPOCH` for deterministic layer times; mismatched epoch between jobs → digest mismatch (used for the red CI demo). + +--- + +## Artifacts + +| Path | Description | +|------|-------------| +| `flake.nix` / `flake.lock` | Reproducible Go + OCI outputs | +| `.github/workflows/nix-repro.yml` | CI digest gate | +| `submissions/attachments/lab11/` | Build logs, hash captures | From 733ccbf4ef0f7b1fffec486f6b330d1aaf652bc0 Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 20:44:46 +0300 Subject: [PATCH 13/18] chore(lab11): break nix-repro job A for red CI demo --- .github/workflows/nix-repro.yml | 3 +++ submissions/lab11.md | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nix-repro.yml b/.github/workflows/nix-repro.yml index 6df539adf..5055d1a4f 100644 --- a/.github/workflows/nix-repro.yml +++ b/.github/workflows/nix-repro.yml @@ -13,6 +13,9 @@ jobs: build-a: name: nix-build-a runs-on: ubuntu-24.04 + env: + # Intentional red-demo break: job B uses default epoch → digest mismatch. + SOURCE_DATE_EPOCH: "0" outputs: digest: ${{ steps.hash.outputs.digest }} steps: diff --git a/submissions/lab11.md b/submissions/lab11.md index 866e21cde..3c1b5a5bf 100644 --- a/submissions/lab11.md +++ b/submissions/lab11.md @@ -122,8 +122,8 @@ Nix buys reproducibility and pinned toolchains at the cost of learning curve, la ### CI runs -- **Green:** <!-- Actions URL — digests match --> -- **Red (intentional `SOURCE_DATE_EPOCH` break in job A):** <!-- Actions URL --> +- **Green:** [nix-repro #1 — digests match](https://github.com/markovav-official/DevOps-Intro/actions/runs/28961060062) +- **Red (intentional `SOURCE_DATE_EPOCH: "0"` in job A only):** <!-- paste run URL after push #2 --> ### Design questions (h–j) From 3e4dd6fdc7509c0ae5c449f4025e1ab29a93c60e Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 20:56:39 +0300 Subject: [PATCH 14/18] fix(lab11): wire SOURCE_DATE_EPOCH into flake for red CI demo --- .github/workflows/nix-repro.yml | 2 +- flake.nix | 7 +++++++ submissions/lab11.md | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nix-repro.yml b/.github/workflows/nix-repro.yml index 5055d1a4f..621416156 100644 --- a/.github/workflows/nix-repro.yml +++ b/.github/workflows/nix-repro.yml @@ -24,7 +24,7 @@ jobs: - uses: DeterminateSystems/nix-installer-action@90bb610b90bf290cad97484ba341453bd1cbefea # v19 - id: build - run: nix build .#docker --print-build-logs --print-out-paths > out-path.txt + run: nix build .#docker --impure --print-build-logs --print-out-paths > out-path.txt - id: hash run: echo "digest=$(sha256sum "$(cat out-path.txt)" | awk '{print $1}')" >> "$GITHUB_OUTPUT" diff --git a/flake.nix b/flake.nix index 5106098e6..d64035ccd 100644 --- a/flake.nix +++ b/flake.nix @@ -38,6 +38,13 @@ packages.docker = pkgs.dockerTools.buildImage { name = "quicknotes"; tag = "nix"; + # CI red demo: job A sets SOURCE_DATE_EPOCH=0 and runs `nix build --impure`. + # Pure builds (green) ignore host env and keep the nixpkgs default second. + created = + if builtins.getEnv "SOURCE_DATE_EPOCH" == "0" then + "1970-01-01T00:00:00Z" + else + "1970-01-01T00:00:01Z"; copyToRoot = imageRoot; config = { Entrypoint = [ "/quicknotes" ]; diff --git a/submissions/lab11.md b/submissions/lab11.md index 3c1b5a5bf..cac1683cd 100644 --- a/submissions/lab11.md +++ b/submissions/lab11.md @@ -137,7 +137,7 @@ A single job running twice shares runner state, store paths, and timing — coul **j) `SOURCE_DATE_EPOCH`** -Timestamps leak into archive metadata and build IDs. `dockerTools.buildImage` respects `SOURCE_DATE_EPOCH` for deterministic layer times; mismatched epoch between jobs → digest mismatch (used for the red CI demo). +Timestamps leak into OCI metadata (`created` in `dockerTools.buildImage`) and layer tar mtime. Nix builds are **pure** by default: host env vars (including `SOURCE_DATE_EPOCH` in GHA) do not enter the sandbox, so both jobs still produced the same store path. The red demo wires `created` via `builtins.getEnv` in `flake.nix` and runs job A with `nix build --impure` + `SOURCE_DATE_EPOCH=0`, shifting image metadata by one second vs job B's default `1970-01-01T00:00:01Z`. --- From 9c692bed530221fd815e9c62d3afab3d31c5461b Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 21:06:49 +0300 Subject: [PATCH 15/18] fix(lab11): restore nix-repro parity after red CI demo --- .github/workflows/nix-repro.yml | 5 +---- submissions/lab11.md | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/nix-repro.yml b/.github/workflows/nix-repro.yml index 621416156..6df539adf 100644 --- a/.github/workflows/nix-repro.yml +++ b/.github/workflows/nix-repro.yml @@ -13,9 +13,6 @@ jobs: build-a: name: nix-build-a runs-on: ubuntu-24.04 - env: - # Intentional red-demo break: job B uses default epoch → digest mismatch. - SOURCE_DATE_EPOCH: "0" outputs: digest: ${{ steps.hash.outputs.digest }} steps: @@ -24,7 +21,7 @@ jobs: - uses: DeterminateSystems/nix-installer-action@90bb610b90bf290cad97484ba341453bd1cbefea # v19 - id: build - run: nix build .#docker --impure --print-build-logs --print-out-paths > out-path.txt + run: nix build .#docker --print-build-logs --print-out-paths > out-path.txt - id: hash run: echo "digest=$(sha256sum "$(cat out-path.txt)" | awk '{print $1}')" >> "$GITHUB_OUTPUT" diff --git a/submissions/lab11.md b/submissions/lab11.md index cac1683cd..aeec39fba 100644 --- a/submissions/lab11.md +++ b/submissions/lab11.md @@ -123,7 +123,8 @@ Nix buys reproducibility and pinned toolchains at the cost of learning curve, la ### CI runs - **Green:** [nix-repro #1 — digests match](https://github.com/markovav-official/DevOps-Intro/actions/runs/28961060062) -- **Red (intentional `SOURCE_DATE_EPOCH: "0"` in job A only):** <!-- paste run URL after push #2 --> +- **Red (intentional `SOURCE_DATE_EPOCH: "0"` + `--impure` in job A only):** [nix-repro #3 — digest mismatch](https://github.com/markovav-official/DevOps-Intro/actions/runs/28964290755) +- **Green (restored parity):** <!-- Actions URL after push --> ### Design questions (h–j) From 5f41ec7b6a1a6871799b1b475719aa4846ada007 Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 21:09:17 +0300 Subject: [PATCH 16/18] docs(lab11): finalize submission with green/red CI run URLs --- submissions/lab11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submissions/lab11.md b/submissions/lab11.md index aeec39fba..07f28e606 100644 --- a/submissions/lab11.md +++ b/submissions/lab11.md @@ -124,7 +124,7 @@ Nix buys reproducibility and pinned toolchains at the cost of learning curve, la - **Green:** [nix-repro #1 — digests match](https://github.com/markovav-official/DevOps-Intro/actions/runs/28961060062) - **Red (intentional `SOURCE_DATE_EPOCH: "0"` + `--impure` in job A only):** [nix-repro #3 — digest mismatch](https://github.com/markovav-official/DevOps-Intro/actions/runs/28964290755) -- **Green (restored parity):** <!-- Actions URL after push --> +- **Green (restored parity):** [nix-repro #4 — digests match](https://github.com/markovav-official/DevOps-Intro/actions/runs/28964914367) ### Design questions (h–j) From 545a17c1fa0ff1776e986a0abd1e99c25d2e06fe Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 23:33:05 +0300 Subject: [PATCH 17/18] fix(ci): bump govulncheck Go toolchain to 1.25.12 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 825705b8e..4b8c3f89f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,7 +112,7 @@ jobs: fetch-depth: 1 - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 with: - go-version: '1.25.11' + go-version: '1.25.12' cache: true cache-dependency-path: app/go.mod - run: go install golang.org/x/vuln/cmd/govulncheck@v1.1.4 From e652e443b760604fe5ee0fa4ee57f00171497fe5 Mon Sep 17 00:00:00 2001 From: Andrei Markov <me@markovav.ru> Date: Wed, 8 Jul 2026 22:35:01 +0300 Subject: [PATCH 18/18] feat(lab12): Spin WASM /time endpoint with perf comparison and wasmtime bonus --- cloud/scripts/lab12-vm-bench.sh | 116 ++++++++++++++ cloud/scripts/lab12-vm-cold.sh | 49 ++++++ cloud/scripts/lab12-vm-setup.sh | 31 ++++ submissions/attachments/lab12/.gitkeep | 0 submissions/attachments/lab12/cold-docker.txt | 10 ++ submissions/attachments/lab12/cold-spin.txt | 6 + .../attachments/lab12/cold-wasmtime.txt | 6 + .../attachments/lab12/docker-health.json | 1 + submissions/attachments/lab12/sizes.txt | 4 + submissions/attachments/lab12/spin-build.log | 1 + submissions/attachments/lab12/spin-time.json | 7 + .../attachments/lab12/warm-docker.json | 118 ++++++++++++++ submissions/attachments/lab12/warm-docker.txt | 4 + submissions/attachments/lab12/warm-spin.json | 118 ++++++++++++++ submissions/attachments/lab12/warm-spin.txt | 6 + .../attachments/lab12/wasm-cli-build.log | 1 + .../attachments/lab12/wasm-cli-raw.txt | 3 + .../attachments/lab12/wasm-cli-time.json | 7 + submissions/attachments/lab12/wasm-size.txt | 2 + submissions/lab12.md | 146 ++++++++++++++++++ wasm-cli/go.mod | 3 + wasm-cli/main.go | 26 ++++ wasm/go.mod | 7 + wasm/go.sum | 4 + wasm/main.go | 33 ++++ wasm/spin.toml | 21 +++ 26 files changed, 730 insertions(+) create mode 100644 cloud/scripts/lab12-vm-bench.sh create mode 100644 cloud/scripts/lab12-vm-cold.sh create mode 100644 cloud/scripts/lab12-vm-setup.sh create mode 100644 submissions/attachments/lab12/.gitkeep create mode 100644 submissions/attachments/lab12/cold-docker.txt create mode 100644 submissions/attachments/lab12/cold-spin.txt create mode 100644 submissions/attachments/lab12/cold-wasmtime.txt create mode 100644 submissions/attachments/lab12/docker-health.json create mode 100644 submissions/attachments/lab12/sizes.txt create mode 100644 submissions/attachments/lab12/spin-build.log create mode 100644 submissions/attachments/lab12/spin-time.json create mode 100644 submissions/attachments/lab12/warm-docker.json create mode 100644 submissions/attachments/lab12/warm-docker.txt create mode 100644 submissions/attachments/lab12/warm-spin.json create mode 100644 submissions/attachments/lab12/warm-spin.txt create mode 100644 submissions/attachments/lab12/wasm-cli-build.log create mode 100644 submissions/attachments/lab12/wasm-cli-raw.txt create mode 100644 submissions/attachments/lab12/wasm-cli-time.json create mode 100644 submissions/attachments/lab12/wasm-size.txt create mode 100644 submissions/lab12.md create mode 100644 wasm-cli/go.mod create mode 100644 wasm-cli/main.go create mode 100644 wasm/go.mod create mode 100644 wasm/go.sum create mode 100644 wasm/main.go create mode 100644 wasm/spin.toml diff --git a/cloud/scripts/lab12-vm-bench.sh b/cloud/scripts/lab12-vm-bench.sh new file mode 100644 index 000000000..d462650f8 --- /dev/null +++ b/cloud/scripts/lab12-vm-bench.sh @@ -0,0 +1,116 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT="${1:-/root/lab12-work/DevOps-Intro}" +OUT="${ROOT}/submissions/attachments/lab12" +export PATH="${HOME}/.nix-profile/bin:${HOME}/.wasmtime/bin:${PATH}" + +mkdir -p "${OUT}" + +cd "${ROOT}" + +# --- Lab 6 Docker baseline --- +if ! docker image inspect quicknotes:lab6 >/dev/null 2>&1; then + docker build -t quicknotes:lab6 ./app +fi +docker rm -f qn-lab6 2>/dev/null || true +docker run -d --name qn-lab6 -p 18080:8080 quicknotes:lab6 +trap 'docker rm -f qn-lab6 2>/dev/null; pkill -f "spin up" 2>/dev/null || true' EXIT + +for i in $(seq 1 30); do + if curl -fsS http://127.0.0.1:18080/health >/dev/null 2>&1; then break; fi + sleep 1 +done +curl -fsS http://127.0.0.1:18080/health | tee "${OUT}/docker-health.json" + +# --- Spin WASM --- +cd "${ROOT}/wasm" +if [[ ! -f main.wasm ]]; then + GOMAXPROCS=1 spin build 2>&1 | tee "${OUT}/spin-build.log" +else + echo "Reusing existing main.wasm" | tee "${OUT}/spin-build.log" +fi +ls -la main.wasm | tee "${OUT}/wasm-size.txt" +pkill -f "spin up" 2>/dev/null || true +sleep 1 +spin up --listen 127.0.0.1:3000 >/tmp/spin.log 2>&1 & +SPIN_PID=$! +sleep 2 +curl -fsS http://127.0.0.1:3000/time | python3 -m json.tool | tee "${OUT}/spin-time.json" + +# --- wasm-cli bonus --- +cd "${ROOT}/wasm-cli" +if [[ ! -f main.wasm ]]; then + GOMAXPROCS=1 tinygo build -o main.wasm -target=wasi -no-debug ./main.go 2>&1 | tee "${OUT}/wasm-cli-build.log" +else + echo "Reusing existing wasm-cli main.wasm" | tee "${OUT}/wasm-cli-build.log" +fi +ls -la main.wasm | tee -a "${OUT}/wasm-size.txt" +wasmtime run --env REQUEST_METHOD=GET --env PATH_INFO=/time main.wasm \ + | tee "${OUT}/wasm-cli-raw.txt" \ + | awk 'BEGIN{body=0} /^\r?$/ {body=1; next} body' \ + | python3 -m json.tool | tee "${OUT}/wasm-cli-time.json" + +# --- Sizes --- +{ + echo "=== Artifact sizes ===" + echo -n "main.wasm (spin): " + stat -c%s "${ROOT}/wasm/main.wasm" + echo -n "main.wasm (wasm-cli): " + stat -c%s "${ROOT}/wasm-cli/main.wasm" + echo -n "docker image: " + docker image inspect quicknotes:lab6 --format='{{.Size}}' +} | tee "${OUT}/sizes.txt" + +# --- Warm latency --- +hyperfine --warmup 5 --runs 50 --export-json "${OUT}/warm-spin.json" \ + 'curl -fsS http://127.0.0.1:3000/time >/dev/null' 2>&1 | tee "${OUT}/warm-spin.txt" + +hyperfine --warmup 5 --runs 50 --export-json "${OUT}/warm-docker.json" \ + 'curl -fsS http://127.0.0.1:18080/health >/dev/null' 2>&1 | tee "${OUT}/warm-docker.txt" + +# --- Cold start: Spin --- +{ + echo "=== Spin cold start (5 samples) ===" + for n in 1 2 3 4 5; do + pkill -f "spin up" 2>/dev/null || true + sleep 1 + start=$(date +%s%3N) + spin up --listen 127.0.0.1:3000 >/tmp/spin.log 2>&1 & + SPIN_PID=$! + for _ in $(seq 1 200); do + if curl -fsS http://127.0.0.1:3000/time >/dev/null 2>&1; then break; fi + sleep 0.05 + done + end=$(date +%s%3N) + echo "sample${n}: $((end - start)) ms" + done +} | tee "${OUT}/cold-spin.txt" + +# --- Cold start: Docker --- +{ + echo "=== Docker cold start (5 samples) ===" + for n in 1 2 3 4 5; do + docker rm -f qn-lab6 2>/dev/null || true + sleep 1 + start=$(date +%s%3N) + docker run -d --name qn-lab6 -p 18080:8080 quicknotes:lab6 >/dev/null + until curl -fsS http://127.0.0.1:18080/health >/dev/null 2>&1; do sleep 0.05; done + end=$(date +%s%3N) + echo "sample${n}: $((end - start)) ms" + done +} | tee "${OUT}/cold-docker.txt" + +# --- Cold start: wasmtime run (bonus) --- +{ + echo "=== wasmtime run cold (5 samples) ===" + cd "${ROOT}/wasm-cli" + for n in 1 2 3 4 5; do + start=$(date +%s%3N) + wasmtime run --env REQUEST_METHOD=GET --env PATH_INFO=/time main.wasm >/dev/null + end=$(date +%s%3N) + echo "sample${n}: $((end - start)) ms" + done +} | tee "${OUT}/cold-wasmtime.txt" + +echo "Benchmark artifacts written to ${OUT}" diff --git a/cloud/scripts/lab12-vm-cold.sh b/cloud/scripts/lab12-vm-cold.sh new file mode 100644 index 000000000..9847e8d31 --- /dev/null +++ b/cloud/scripts/lab12-vm-cold.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -euo pipefail +export PATH="${HOME}/.nix-profile/bin:${HOME}/.wasmtime/bin:${PATH}" +ROOT="${1:-/root/lab12-work/DevOps-Intro}" +OUT="${ROOT}/submissions/attachments/lab12" +mkdir -p "${OUT}" + +{ + echo "=== Spin cold start (5 samples) ===" + for n in 1 2 3 4 5; do + pkill -f "spin up" 2>/dev/null || true + sleep 1 + start=$(date +%s%3N) + spin up --listen 127.0.0.1:3000 >/tmp/spin.log 2>&1 & + for _ in $(seq 1 200); do + curl -fsS http://127.0.0.1:3000/time >/dev/null 2>&1 && break + sleep 0.05 + done + end=$(date +%s%3N) + echo "sample${n}: $((end - start)) ms" + done +} | tee "${OUT}/cold-spin.txt" + +{ + echo "=== Docker cold start (5 samples) ===" + for n in 1 2 3 4 5; do + docker rm -f qn-lab6 2>/dev/null || true + sleep 1 + start=$(date +%s%3N) + docker run -d --name qn-lab6 -p 18080:8080 quicknotes:lab6 >/dev/null + for _ in $(seq 1 200); do + curl -fsS http://127.0.0.1:18080/health >/dev/null 2>&1 && break + sleep 0.05 + done + end=$(date +%s%3N) + echo "sample${n}: $((end - start)) ms" + done +} | tee "${OUT}/cold-docker.txt" + +{ + echo "=== wasmtime run cold (5 samples) ===" + cd "${ROOT}/wasm-cli" + for n in 1 2 3 4 5; do + start=$(date +%s%3N) + wasmtime run --env REQUEST_METHOD=GET --env PATH_INFO=/time main.wasm >/dev/null + end=$(date +%s%3N) + echo "sample${n}: $((end - start)) ms" + done +} | tee "${OUT}/cold-wasmtime.txt" diff --git a/cloud/scripts/lab12-vm-setup.sh b/cloud/scripts/lab12-vm-setup.sh new file mode 100644 index 000000000..ac8b9a758 --- /dev/null +++ b/cloud/scripts/lab12-vm-setup.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -euo pipefail + +export DEBIAN_FRONTEND=noninteractive + +apt-get update -qq +apt-get install -y -qq curl wget hyperfine docker.io python3 git + +systemctl enable --now docker 2>/dev/null || service docker start + +if ! command -v spin >/dev/null; then + curl -fsSL https://github.com/spinframework/spin/releases/download/v3.4.0/spin-v3.4.0-linux-amd64.tar.gz \ + | tar -xz -C /usr/local/bin spin +fi + +if ! command -v tinygo >/dev/null; then + wget -q -O /tmp/tinygo.deb https://github.com/tinygo-org/tinygo/releases/download/v0.41.0/tinygo_0.41.0_amd64.deb + dpkg -i /tmp/tinygo.deb || apt-get install -f -y -qq +fi + +if ! command -v wasmtime >/dev/null; then + curl -fsSL https://wasmtime.dev/install.sh | bash -s -- --version v29.0.0 +fi + +export PATH="${HOME}/.wasmtime/bin:${PATH}" + +spin --version +tinygo version +wasmtime --version +hyperfine --version +docker --version diff --git a/submissions/attachments/lab12/.gitkeep b/submissions/attachments/lab12/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/submissions/attachments/lab12/cold-docker.txt b/submissions/attachments/lab12/cold-docker.txt new file mode 100644 index 000000000..8fcb34c01 --- /dev/null +++ b/submissions/attachments/lab12/cold-docker.txt @@ -0,0 +1,10 @@ +=== Docker cold start (5 samples) === +sample1: 1429 ms +qn-lab6 +sample2: 1411 ms +qn-lab6 +sample3: 1246 ms +qn-lab6 +sample4: 1443 ms +qn-lab6 +sample5: 1564 ms diff --git a/submissions/attachments/lab12/cold-spin.txt b/submissions/attachments/lab12/cold-spin.txt new file mode 100644 index 000000000..4a1a4c32f --- /dev/null +++ b/submissions/attachments/lab12/cold-spin.txt @@ -0,0 +1,6 @@ +=== Spin cold start (5 samples) === +sample1: 12936 ms +sample2: 12975 ms +sample3: 12779 ms +sample4: 13008 ms +sample5: 12954 ms diff --git a/submissions/attachments/lab12/cold-wasmtime.txt b/submissions/attachments/lab12/cold-wasmtime.txt new file mode 100644 index 000000000..2a1ee2537 --- /dev/null +++ b/submissions/attachments/lab12/cold-wasmtime.txt @@ -0,0 +1,6 @@ +=== wasmtime run cold (5 samples) === +sample1: 16 ms +sample2: 12 ms +sample3: 12 ms +sample4: 11 ms +sample5: 12 ms diff --git a/submissions/attachments/lab12/docker-health.json b/submissions/attachments/lab12/docker-health.json new file mode 100644 index 000000000..6a54507f9 --- /dev/null +++ b/submissions/attachments/lab12/docker-health.json @@ -0,0 +1 @@ +{"notes":0,"status":"ok"} diff --git a/submissions/attachments/lab12/sizes.txt b/submissions/attachments/lab12/sizes.txt new file mode 100644 index 000000000..2c2eaeb07 --- /dev/null +++ b/submissions/attachments/lab12/sizes.txt @@ -0,0 +1,4 @@ +=== Artifact sizes === +main.wasm (spin): 362115 +main.wasm (wasm-cli): 196781 +docker image: 3979676 diff --git a/submissions/attachments/lab12/spin-build.log b/submissions/attachments/lab12/spin-build.log new file mode 100644 index 000000000..ae6738fb8 --- /dev/null +++ b/submissions/attachments/lab12/spin-build.log @@ -0,0 +1 @@ +Reusing existing main.wasm diff --git a/submissions/attachments/lab12/spin-time.json b/submissions/attachments/lab12/spin-time.json new file mode 100644 index 000000000..c0248f106 --- /dev/null +++ b/submissions/attachments/lab12/spin-time.json @@ -0,0 +1,7 @@ +{ + "unix": 1783548307, + "iso": "2026-07-08T22:05:07Z", + "hour_minute": "22:05", + "moscow": "2026-07-08 22:05:07", + "tz": "UTC+3" +} diff --git a/submissions/attachments/lab12/warm-docker.json b/submissions/attachments/lab12/warm-docker.json new file mode 100644 index 000000000..6e251f069 --- /dev/null +++ b/submissions/attachments/lab12/warm-docker.json @@ -0,0 +1,118 @@ +{ + "results": [ + { + "command": "curl -fsS http://127.0.0.1:18080/health >/dev/null", + "mean": 0.007140602180000002, + "stddev": 0.00035904002724406733, + "median": 0.00705450644, + "user": 0.0032540800000000003, + "system": 0.00331162, + "min": 0.006568857440000001, + "max": 0.00813835544, + "times": [ + 0.00784885644, + 0.007340655440000001, + 0.00787775644, + 0.00739185544, + 0.007295756440000001, + 0.0073276554400000015, + 0.00776035644, + 0.007162755440000001, + 0.007158556440000001, + 0.00716515644, + 0.007019256440000001, + 0.007217955440000001, + 0.00723255644, + 0.00763315544, + 0.00727845644, + 0.00682095644, + 0.00698865644, + 0.00690545544, + 0.00691895644, + 0.006912056440000001, + 0.00703335644, + 0.006664156440000001, + 0.007273256440000001, + 0.0072787554400000004, + 0.00685265644, + 0.006956256440000001, + 0.00712365644, + 0.00686515544, + 0.00699105644, + 0.0071121564400000005, + 0.00783125544, + 0.00813835544, + 0.00804045644, + 0.00726155544, + 0.006944856440000001, + 0.006833456440000001, + 0.007230356440000001, + 0.00716105544, + 0.0069031564400000005, + 0.006809456440000001, + 0.00670705644, + 0.006807856440000001, + 0.00678825644, + 0.006975256440000001, + 0.006568857440000001, + 0.006794655440000001, + 0.006966356440000001, + 0.0070756564400000005, + 0.00686785644, + 0.00691705644 + ], + "exit_codes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ] +} diff --git a/submissions/attachments/lab12/warm-docker.txt b/submissions/attachments/lab12/warm-docker.txt new file mode 100644 index 000000000..4edf8dab1 --- /dev/null +++ b/submissions/attachments/lab12/warm-docker.txt @@ -0,0 +1,4 @@ +Benchmark 1: curl -fsS http://127.0.0.1:18080/health >/dev/null + Time (mean ± σ): 7.1 ms ± 0.4 ms [User: 3.3 ms, System: 3.3 ms] + Range (min … max): 6.6 ms … 8.1 ms 50 runs + diff --git a/submissions/attachments/lab12/warm-spin.json b/submissions/attachments/lab12/warm-spin.json new file mode 100644 index 000000000..57b07cbfc --- /dev/null +++ b/submissions/attachments/lab12/warm-spin.json @@ -0,0 +1,118 @@ +{ + "results": [ + { + "command": "curl -fsS http://127.0.0.1:3000/time >/dev/null", + "mean": 0.009473932899999999, + "stddev": 0.0012700844782855428, + "median": 0.00938455266, + "user": 0.00325314, + "system": 0.0040676919999999995, + "min": 0.00788580466, + "max": 0.01647019966, + "times": [ + 0.009161802660000001, + 0.008994303660000001, + 0.009651902660000001, + 0.009443902660000001, + 0.00954540266, + 0.00955420266, + 0.00959030366, + 0.00936850266, + 0.009398102660000001, + 0.00982910266, + 0.00932840366, + 0.00970820266, + 0.00968300266, + 0.010544401660000001, + 0.01053790266, + 0.01027080266, + 0.00984460266, + 0.00987840266, + 0.01028150266, + 0.010020202660000001, + 0.01046010166, + 0.009723103660000001, + 0.00915980266, + 0.009509702660000001, + 0.00886330366, + 0.00838080366, + 0.00831040266, + 0.00832760366, + 0.00876310366, + 0.009795602660000001, + 0.00953670266, + 0.00961870266, + 0.00788580466, + 0.00801440366, + 0.00886610266, + 0.00827650366, + 0.00862560366, + 0.01129930166, + 0.00836090366, + 0.00919260266, + 0.008315803660000001, + 0.00817550366, + 0.00912520266, + 0.00915280366, + 0.00914400266, + 0.01647019966, + 0.00937100266, + 0.01108670166, + 0.008483703660000001, + 0.00876660366 + ], + "exit_codes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ] +} diff --git a/submissions/attachments/lab12/warm-spin.txt b/submissions/attachments/lab12/warm-spin.txt new file mode 100644 index 000000000..e56f8f78c --- /dev/null +++ b/submissions/attachments/lab12/warm-spin.txt @@ -0,0 +1,6 @@ +Benchmark 1: curl -fsS http://127.0.0.1:3000/time >/dev/null + Time (mean ± σ): 9.5 ms ± 1.3 ms [User: 3.3 ms, System: 4.1 ms] + Range (min … max): 7.9 ms … 16.5 ms 50 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + diff --git a/submissions/attachments/lab12/wasm-cli-build.log b/submissions/attachments/lab12/wasm-cli-build.log new file mode 100644 index 000000000..6250b26cf --- /dev/null +++ b/submissions/attachments/lab12/wasm-cli-build.log @@ -0,0 +1 @@ +Reusing existing wasm-cli main.wasm diff --git a/submissions/attachments/lab12/wasm-cli-raw.txt b/submissions/attachments/lab12/wasm-cli-raw.txt new file mode 100644 index 000000000..5f61a2564 --- /dev/null +++ b/submissions/attachments/lab12/wasm-cli-raw.txt @@ -0,0 +1,3 @@ +Content-Type: application/json + +{"unix":1783548307,"iso":"2026-07-08T22:05:07Z","hour_minute":"22:05","moscow":"2026-07-08 22:05:07","tz":"UTC+3"} \ No newline at end of file diff --git a/submissions/attachments/lab12/wasm-cli-time.json b/submissions/attachments/lab12/wasm-cli-time.json new file mode 100644 index 000000000..c0248f106 --- /dev/null +++ b/submissions/attachments/lab12/wasm-cli-time.json @@ -0,0 +1,7 @@ +{ + "unix": 1783548307, + "iso": "2026-07-08T22:05:07Z", + "hour_minute": "22:05", + "moscow": "2026-07-08 22:05:07", + "tz": "UTC+3" +} diff --git a/submissions/attachments/lab12/wasm-size.txt b/submissions/attachments/lab12/wasm-size.txt new file mode 100644 index 000000000..70719a954 --- /dev/null +++ b/submissions/attachments/lab12/wasm-size.txt @@ -0,0 +1,2 @@ +-rw-r--r-- 1 root root 362115 Jul 8 21:55 main.wasm +-rw-r--r-- 1 root root 196781 Jul 8 22:04 main.wasm diff --git a/submissions/lab12.md b/submissions/lab12.md new file mode 100644 index 000000000..aaa33a1a6 --- /dev/null +++ b/submissions/lab12.md @@ -0,0 +1,146 @@ +# Lab 12 submission + +**Host:** Apple Silicon Mac (no WASM toolchain). **Build/bench env:** University VM (Linux x86_64, 1.8 GiB RAM + swap). **Toolchain:** Spin 3.4.0, TinyGo 0.41.1 (Nix), wasmtime 29.0.0, hyperfine 1.18.0. + +--- + +## Task 1 — Spin SDK `/time` endpoint + +### Source + +- [`wasm/main.go`](../wasm/main.go) +- [`wasm/spin.toml`](../wasm/spin.toml) +- [`wasm/go.mod`](../wasm/go.mod) · SDK `github.com/spinframework/spin-go-sdk/v2 v2.2.1` + +Scaffolded layout matches `spin new -t http-go` (Spin 3.4 templates installed on VM). Route `/time`, `allowed_outbound_hosts = []`, TinyGo `wasip1` + `-buildmode=c-shared`. + +### Build + +[`attachments/lab12/spin-build.log`](attachments/lab12/spin-build.log) + +```text +Finished building all Spin components +main.wasm 362115 bytes +``` + +Built with `GOMAXPROCS=1` on the VM (TinyGo + Go 1.26 via Nix; system Go 1.22 alone fails TinyGo 0.41 `net` build). + +### Runtime proof + +[`attachments/lab12/spin-time.json`](attachments/lab12/spin-time.json) + +```bash +spin up --listen 127.0.0.1:3000 +curl -s http://127.0.0.1:3000/time | python3 -m json.tool +``` + +```json +{ + "unix": 1783548307, + "iso": "2026-07-08T22:05:07Z", + "hour_minute": "22:05", + "moscow": "2026-07-08 22:05:07", + "tz": "UTC+3" +} +``` + +### Design questions (a–d) + +**a) Browser WASM vs server WASM** + +`go build -target=js/wasm` targets the browser ABI (DOM callbacks via `syscall/js`). `tinygo build -target=wasip1` targets WASI — no DOM, no full stdlib, but a portable server module with explicit capabilities. You lose browser APIs and much of upstream Go stdlib; you gain a small, sandboxed artifact runnable in Spin/wasmtime. + +**b) Why `-buildmode=c-shared`?** + +Spin's host expects the module to export the wasi-http handler symbols as a shared library-style component, not a bare `_start` CLI entrypoint. Without `-buildmode=c-shared`, the handler isn't exported → `spin up` serves HTTP 500. + +**c) `allowed_outbound_hosts = []` vs Docker `--network none`** + +Spin's capability model denies outbound network at manifest level — the runtime won't grant socket capabilities the module didn't request. Docker `--network none` removes network namespaces at the container level, but the process still carries a larger Linux attack surface (full libc, more syscalls). WASM defaults to least-privilege per component. + +**d) TinyGo stdlib gaps hit** + +- `time.LoadLocation("Europe/Moscow")` — no embedded tzdata → used `UTC().Add(3 * time.Hour)`. +- Avoided `json.NewEncoder` + `map[string]any` (reflection-heavy) → built JSON with `fmt.Sprintf` and `%q`. + +--- + +## Task 2 — Perf vs Lab 6 Docker + +**Test rig:** University VM, Ubuntu 24.04, 1.8 GiB RAM, 7.8 GiB swap, x86_64. Lab 6 image `quicknotes:lab6` (distroless), Spin on `:3000`, Docker on `:18080`. + +### Table + +| Dimension | Lab 6 Docker | Lab 12 WASM/Spin | +|-----------|-------------:|-----------------:| +| Artifact size | 3.8 MB | 354 KB (`main.wasm`) | +| Cold start p50 | 1.4 s | 12.9 s | +| Warm latency p50 | 7.1 ms | 9.4 ms | +| Warm latency p95 | 7.8 ms | 10.5 ms | + +Sources: [`attachments/lab12/sizes.txt`](attachments/lab12/sizes.txt), [`cold-docker.txt`](attachments/lab12/cold-docker.txt), [`cold-spin.txt`](attachments/lab12/cold-spin.txt), [`warm-docker.json`](attachments/lab12/warm-docker.json), [`warm-spin.json`](attachments/lab12/warm-spin.json). + +> Spin cold start on this 1.8 GiB VM is dominated by process restart + wasmtime init under memory pressure (consistent ~13 s across 5 samples). Warm requests stay in single-digit milliseconds once `spin up` is running. + +### Design questions (e–g) + +**e) What dominates cold start?** + +Docker: image layer setup + namespace/cgroup init + process start. Spin: `spin up` process + wasmtime engine init + WASM module load/instantiate (on this VM, memory pressure amplifies restart cost). + +**f) When is WASM better, when Docker?** + +WASM wins for tiny, short-lived, high-churn functions (small artifact, fast per-request instantiation in warm server). Docker wins for full apps needing rich stdlib, long-lived state, complex networking, and mature ops tooling. + +**g) Multi-tenant safety** + +WASM capability sandboxes make it harder for a tenant module to reach hosts/files/sockets it wasn't granted — e.g. exfiltrating via outbound TCP to arbitrary IPs (`allowed_outbound_hosts = []` blocks this at the manifest). + +--- + +## Bonus — Two WASM execution models + +### wasm-cli (standalone WASI) + +[`wasm-cli/main.go`](../wasm-cli/main.go) + +```bash +tinygo build -o main.wasm -target=wasi -no-debug ./main.go +wasmtime run --env REQUEST_METHOD=GET --env PATH_INFO=/time main.wasm +``` + +[`attachments/lab12/wasm-cli-time.json`](attachments/lab12/wasm-cli-time.json) — same Moscow JSON as Spin. + +### Comparison + +| | Spin wasi-http | wasmtime CLI | +|--|--:|--:| +| `main.wasm` size | 354 KB | 192 KB | +| Cold (per-invocation / restart) p50 | 12.9 s (`spin up` restart) | 12 ms (`wasmtime run`) | + +[`attachments/lab12/cold-wasmtime.txt`](attachments/lab12/cold-wasmtime.txt) + +### Design questions (h–j) + +**h) Why can't the Spin component run under bare `wasmtime run`?** + +Task 1 builds a **wasi-http component** exporting HTTP handler symbols for a persistent host. Bare `wasmtime run` expects a CLI module with `_start` reading env/stdin — different ABI. + +**i) What does Spin add on top of wasmtime?** + +Manifest routing (`spin.toml`), wasi-http server loop, per-component outbound policy, instance lifecycle — wasmtime is the engine; Spin is the application host. + +**j) When does each model fit?** + +Per-invocation `wasmtime run` (CGI-style): rare admin tasks, CLI tools, batch jobs. Spin persistent server: HTTP microservices, edge functions with steady request traffic. + +--- + +## Artifacts + +| Path | Description | +|------|-------------| +| `wasm/` | Spin component (`main.go`, `spin.toml`, `go.mod`, `go.sum`) | +| `wasm-cli/` | Standalone WASI module for `wasmtime run` | +| `cloud/scripts/lab12-vm-*.sh` | VM setup + benchmark scripts | +| `submissions/attachments/lab12/` | Build logs, curl output, hyperfine JSON, cold-start samples | diff --git a/wasm-cli/go.mod b/wasm-cli/go.mod new file mode 100644 index 000000000..6f57bb7cf --- /dev/null +++ b/wasm-cli/go.mod @@ -0,0 +1,3 @@ +module moscow-time-cli + +go 1.22 diff --git a/wasm-cli/main.go b/wasm-cli/main.go new file mode 100644 index 000000000..d8da253e0 --- /dev/null +++ b/wasm-cli/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" + "os" + "time" +) + +func main() { + if os.Getenv("REQUEST_METHOD") != "GET" || os.Getenv("PATH_INFO") != "/time" { + fmt.Print("Status: 404 Not Found\r\nContent-Type: text/plain\r\n\r\nnot found") + return + } + + moscow := time.Now().UTC().Add(3 * time.Hour) + hourMinute := fmt.Sprintf("%02d:%02d", moscow.Hour(), moscow.Minute()) + body := fmt.Sprintf( + `{"unix":%d,"iso":%q,"hour_minute":%q,"moscow":%q,"tz":"UTC+3"}`, + moscow.Unix(), + moscow.Format(time.RFC3339), + hourMinute, + moscow.Format("2006-01-02 15:04:05"), + ) + + fmt.Printf("Content-Type: application/json\r\n\r\n%s", body) +} diff --git a/wasm/go.mod b/wasm/go.mod new file mode 100644 index 000000000..bd1702106 --- /dev/null +++ b/wasm/go.mod @@ -0,0 +1,7 @@ +module moscow-time + +go 1.22 + +require github.com/spinframework/spin-go-sdk/v2 v2.2.1 + +require github.com/julienschmidt/httprouter v1.3.0 // indirect diff --git a/wasm/go.sum b/wasm/go.sum new file mode 100644 index 000000000..447c042d5 --- /dev/null +++ b/wasm/go.sum @@ -0,0 +1,4 @@ +github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/spinframework/spin-go-sdk/v2 v2.2.1 h1:ceAbRU+D3xmyZ8ScDLeFoT763ikFIUEmSjgsrD11v8k= +github.com/spinframework/spin-go-sdk/v2 v2.2.1/go.mod h1:vocVZB4qlTG8C5yoliKIAJCuv4x7sqK0GmVkWeD9N/A= diff --git a/wasm/main.go b/wasm/main.go new file mode 100644 index 000000000..f4ac0bc93 --- /dev/null +++ b/wasm/main.go @@ -0,0 +1,33 @@ +package main + +import ( + "fmt" + "net/http" + "time" + + spinhttp "github.com/spinframework/spin-go-sdk/v2/http" +) + +func init() { + spinhttp.Handle(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + http.Error(w, "method not allowed", http.StatusMethodNotAllowed) + return + } + + moscow := time.Now().UTC().Add(3 * time.Hour) + hourMinute := fmt.Sprintf("%02d:%02d", moscow.Hour(), moscow.Minute()) + body := fmt.Sprintf( + `{"unix":%d,"iso":%q,"hour_minute":%q,"moscow":%q,"tz":"UTC+3"}`, + moscow.Unix(), + moscow.Format(time.RFC3339), + hourMinute, + moscow.Format("2006-01-02 15:04:05"), + ) + + w.Header().Set("Content-Type", "application/json") + fmt.Fprint(w, body) + }) +} + +func main() {} diff --git a/wasm/spin.toml b/wasm/spin.toml new file mode 100644 index 000000000..f93948fc1 --- /dev/null +++ b/wasm/spin.toml @@ -0,0 +1,21 @@ +#:schema https://schemas.spinframework.dev/spin/manifest-v2/latest.json + +spin_manifest_version = 2 + +[application] +name = "moscow-time" +version = "0.1.0" +authors = ["Andrei Markov <markovav-official@users.noreply.github.com>"] +description = "Moscow time JSON endpoint (Lab 12)" + +[[trigger.http]] +route = "/time" +component = "moscow-time" + +[component.moscow-time] +source = "main.wasm" +allowed_outbound_hosts = [] + +[component.moscow-time.build] +command = "tinygo build -target=wasip1 -buildmode=c-shared -no-debug -o main.wasm ." +watch = ["*.go", "go.mod", "go.sum"]