diff --git a/scouting/www/notes/notes.component.ts b/scouting/www/notes/notes.component.ts
index 09178f8..0f0eb82 100644
--- a/scouting/www/notes/notes.component.ts
+++ b/scouting/www/notes/notes.component.ts
@@ -2,11 +2,14 @@
 import {Builder, ByteBuffer} from 'flatbuffers';
 import {ErrorResponse} from 'org_frc971/scouting/webserver/requests/messages/error_response_generated';
 import {RequestNotesForTeam} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_generated';
-import {Note as NoteFb, RequestNotesForTeamResponse} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_response_generated';
+import {
+  Note as NoteFb,
+  RequestNotesForTeamResponse,
+} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_response_generated';
 import {SubmitNotes} from 'org_frc971/scouting/webserver/requests/messages/submit_notes_generated';
 import {SubmitNotesResponse} from 'org_frc971/scouting/webserver/requests/messages/submit_notes_response_generated';
 
-type Section = 'TeamSelection'|'Data';
+type Section = 'TeamSelection' | 'Data';
 
 interface Note {
   readonly data: string;
@@ -15,7 +18,7 @@
 @Component({
   selector: 'frc971-notes',
   templateUrl: './notes.ng.html',
-  styleUrls: ['../common.css', './notes.component.css']
+  styleUrls: ['../common.css', './notes.component.css'],
 })
 export class Notes {
   section: Section = 'TeamSelection';
@@ -33,8 +36,10 @@
     builder.finish(RequestNotesForTeam.endRequestNotesForTeam(builder));
 
     const buffer = builder.asUint8Array();
-    const res = await fetch(
-        '/requests/request/notes_for_team', {method: 'POST', body: buffer});
+    const res = await fetch('/requests/request/notes_for_team', {
+      method: 'POST',
+      body: buffer,
+    });
 
     const resBuffer = await res.arrayBuffer();
     const fbBuffer = new ByteBuffer(new Uint8Array(resBuffer));
@@ -42,8 +47,9 @@
     if (res.ok) {
       this.notes = [];
       const parsedResponse =
-          RequestNotesForTeamResponse.getRootAsRequestNotesForTeamResponse(
-              fbBuffer);
+        RequestNotesForTeamResponse.getRootAsRequestNotesForTeamResponse(
+          fbBuffer
+        );
       for (let i = 0; i < parsedResponse.notesLength(); i++) {
         const fbNote = parsedResponse.notes(i);
         this.notes.push({data: fbNote.data()});
@@ -53,24 +59,26 @@
       const parsedResponse = ErrorResponse.getRootAsErrorResponse(fbBuffer);
 
       const errorMessage = parsedResponse.errorMessage();
-      this.errorMessage =
-          `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
+      this.errorMessage = `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
     }
   }
 
   changeTeam() {
-    this.section = "TeamSelection";
+    this.section = 'TeamSelection';
   }
-  
+
   async submitData() {
     const builder = new Builder();
     const dataFb = builder.createString(this.newData);
     builder.finish(
-        SubmitNotes.createSubmitNotes(builder, this.teamNumber, dataFb));
+      SubmitNotes.createSubmitNotes(builder, this.teamNumber, dataFb)
+    );
 
     const buffer = builder.asUint8Array();
-    const res = await fetch(
-        '/requests/submit/submit_notes', {method: 'POST', body: buffer});
+    const res = await fetch('/requests/submit/submit_notes', {
+      method: 'POST',
+      body: buffer,
+    });
 
     if (res.ok) {
       this.newData = '';
@@ -82,9 +90,7 @@
       const parsedResponse = ErrorResponse.getRootAsErrorResponse(fbBuffer);
 
       const errorMessage = parsedResponse.errorMessage();
-      this.errorMessage =
-          `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
+      this.errorMessage = `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
     }
   }
 }
-
