diff --git a/cli/commands/play.go b/cli/commands/play.go index f43007f..5456cfa 100644 --- a/cli/commands/play.go +++ b/cli/commands/play.go @@ -16,46 +16,19 @@ import ( "sync" "time" - // adding custom stuff here - "context" - "github.com/BattlesnakeOfficial/rules" "github.com/BattlesnakeOfficial/rules/board" "github.com/BattlesnakeOfficial/rules/client" "github.com/BattlesnakeOfficial/rules/maps" "github.com/google/uuid" - - // _ "github.com/mattn/go-sqlite3" // the SQLite driver for local development - + _ "github.com/mattn/go-sqlite3" // the SQLite driver (underscore means we only init it) + "github.com/pkg/browser" "github.com/spf13/cobra" log "github.com/spf13/jwalterweatherman" - - "github.com/BattlesnakeOfficial/rules/db" ) -// will write to db at end of game var frames []board.GameEvent -func setupDb(dsn string) *db.Database { - // Replace with your Postgres DSN or set DATABASE_URL - - if dsn == "" { - print("Using default DSN for local development. Please set DATABASE_URL in production.\n") - dsn = "removeditdidnotpushtoproductionhaha" // DO NOT PUSH TO PRODUCTION - - } - - // Connect to DB - database, err := db.Connect(dsn) - if err != nil { - log.ERROR.Fatalf("Failed to connect: %v", err) - } - - print("SUCCESS: Connected to database\n") - // os.Exit(0) // Exit after successful connection for testing purposes - return database -} - // Used to store state for each SnakeState while running a local game type SnakeState struct { URL string @@ -107,172 +80,6 @@ type GameState struct { idGenerator func(int) string } -var ( - activeGame *GameState - // Mutex to protect activeGame from concurrent access - activeGameMutex sync.Mutex -) - -func NewHostCommand() *cobra.Command { - - var hostCmd = &cobra.Command{ - Use: "host", - Short: "Host an HTTP server to start Battlesnake games via /play endpoint.", - Long: "Runs an HTTP server that accepts /play requests with query parameters instead of CLI flags. Each request will initialize and run a new game in the background.", - Run: func(cmd *cobra.Command, args []string) { - http.HandleFunc("/play", func(w http.ResponseWriter, r *http.Request) { - activeGameMutex.Lock() - - defer activeGameMutex.Unlock() - - if activeGame != nil { - log.WARN.Print("A game is already running. Please wait for it to finish before starting a new one.") - w.WriteHeader(http.StatusConflict) // 409 Conflict - json.NewEncoder(w).Encode(map[string]string{ - "status": "busy", - "message": "A game is already running. Please wait for it to finish before starting a new one.", - }) - return - } - - // Create a new game state with defaults - gameState := &GameState{ - Width: 11, - Height: 11, - Timeout: 500, - GameType: "standard", - MapName: "standard", - Seed: time.Now().UTC().UnixNano(), - TurnDelay: 0, - TurnDuration: 0, - OutputPath: "", - ViewInBrowser: true, - BoardURL: "https://board.battlesnake.com", - FoodSpawnChance: 15, - MinimumFood: 1, - HazardDamagePerTurn: 14, - ShrinkEveryNTurns: 25, - } - - q := r.URL.Query() - - // Map query params to fields - if v := q.Get("width"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.Width = i - } - } - if v := q.Get("height"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.Height = i - } - } - if v := q["name"]; len(v) > 0 { - gameState.Names = v - } - if v := q["url"]; len(v) > 0 { - gameState.URLs = v - } - if v := q.Get("timeout"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.Timeout = i - } - } - if v := q.Get("sequential"); v == "true" { - gameState.Sequential = true - } - if v := q.Get("gametype"); v != "" { - gameState.GameType = v - } - if v := q.Get("map"); v != "" { - gameState.MapName = v - } - if v := q.Get("viewmap"); v == "true" { - gameState.ViewMap = true - } - if v := q.Get("color"); v == "true" { - gameState.UseColor = true - } - if v := q.Get("seed"); v != "" { - if i, err := strconv.ParseInt(v, 10, 64); err == nil { - gameState.Seed = i - } - } - if v := q.Get("delay"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.TurnDelay = i - } - } - if v := q.Get("duration"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.TurnDuration = i - } - } - if v := q.Get("output"); v != "" { - gameState.OutputPath = v - } - if v := q.Get("browser"); v == "true" { - gameState.ViewInBrowser = true - } - if v := q.Get("board-url"); v != "" { - gameState.BoardURL = v - } - if v := q.Get("foodSpawnChance"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.FoodSpawnChance = i - } - } - if v := q.Get("minimumFood"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.MinimumFood = i - } - } - if v := q.Get("hazardDamagePerTurn"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.HazardDamagePerTurn = i - } - } - if v := q.Get("shrinkEveryNTurns"); v != "" { - if i, err := strconv.Atoi(v); err == nil { - gameState.ShrinkEveryNTurns = i - } - } - - if err := gameState.Initialize(); err != nil { - log.FATAL.Printf("Error initializing game: %v", err) - http.Error(w, fmt.Sprintf("failed to initialize: %v", err), http.StatusBadRequest) - return - } - - // Set active game - activeGame = gameState - - // Run game asynchronously - go func(gs *GameState) { - - if err := gs.Run(); err != nil { - log.FATAL.Printf("Error running game: %v", err) - } - }(gameState) - - w.Header().Set("Content-Type", "application/json") - - w.WriteHeader(http.StatusOK) - resp := map[string]string{ - "id": gameState.gameID, - } - print("gameState.gameID", gameState.gameID) - json.NewEncoder(w).Encode(resp) - }) - - log.INFO.Print("Hosting Battlesnake HTTP server on :6969") - log.INFO.Print(http.ListenAndServe(":6969", nil)) - }, - } - - return hostCmd -} - func NewPlayCommand() *cobra.Command { gameState := &GameState{} @@ -371,11 +178,6 @@ func (gameState *GameState) Initialize() error { // Setup and run a full game. func (gameState *GameState) Run() error { - - var dbconnection string = os.Getenv("DATABASE_URL") - var ctx context.Context = context.Background() - var database *db.Database = setupDb(dbconnection) - defer database.Pool.Close() var gameOver bool var err error @@ -405,7 +207,7 @@ func (gameState *GameState) Run() error { boardGame := board.Game{ ID: gameState.gameID, - Status: "running", // switch to comlpeted before pushing to prod + Status: "running", Width: gameState.Width, Height: gameState.Height, Ruleset: map[string]string{ @@ -417,24 +219,21 @@ func (gameState *GameState) Run() error { } boardServer := board.NewBoardServer(boardGame) - // commented out for now, we will write to db at end of game, and we modified the functionality - // if gameState.outputFile != nil { - // // insert initial game start into database - // // direct db call since this is the first event + if gameState.outputFile != nil { + // insert initial game start into database + bytes, err := json.Marshal(boardGame) - // bytes, err := json.Marshal(boardGame) // remove this later - - // if err != nil { - // log.WARN.Printf("Failed to serialize frame event for turn%v", err) - // } else { - // bytes = append(bytes, '\n') // write each event on its own line - // if _, err := gameState.outputFile.Write(bytes); err != nil { - // log.WARN.Printf("Failed to write frame event to file: %v", err) - // } else { - // log.INFO.Printf("Wrote initial get state to output file") - // } - // } - // } + if err != nil { + log.WARN.Printf("Failed to serialize frame event for turn%v", err) + } else { + bytes = append(bytes, '\n') // write each event on its own line + if _, err := gameState.outputFile.Write(bytes); err != nil { + log.WARN.Printf("Failed to write frame event to file: %v", err) + } else { + log.INFO.Printf("Wrote initial get state to output file") + } + } + } if gameState.ViewInBrowser { serverURL, err := boardServer.Listen() @@ -443,13 +242,13 @@ func (gameState *GameState) Run() error { } defer boardServer.Shutdown() log.INFO.Printf("Board server listening on %s", serverURL) - // no need to open the browser automatically since our primary use case is to run this headlessly - // boardURL := fmt.Sprintf(gameState.BoardURL+"?engine=%s&game=%s&autoplay=true", serverURL, gameState.gameID) - // log.INFO.Printf("Opening board URL: %s", boardURL) - // if err := browser.OpenURL(boardURL); err != nil { - // log.ERROR.Printf("Failed to open browser: %v", err) - // } + boardURL := fmt.Sprintf(gameState.BoardURL+"?engine=%s&game=%s&autoplay=true", serverURL, gameState.gameID) + + log.INFO.Printf("Opening board URL: %s", boardURL) + if err := browser.OpenURL(boardURL); err != nil { + log.ERROR.Printf("Failed to open browser: %v", err) + } // send turn zero to websocket server boardServer.SendEvent(gameState.buildFrameEvent(boardState)) @@ -463,7 +262,6 @@ func (gameState *GameState) Run() error { gameState.printState(boardState) } - // Bhavnoor's notes: This is straight up a lie, the default output is nothing like a valid API request. // Export game first, if enabled, so that we capture the request for turn zero. if exportGame { // The output file was designed in a way so that (nearly) every entry is equivalent to a valid API request. @@ -555,11 +353,16 @@ func (gameState *GameState) Run() error { Data: boardGame, } + // boardServer.SendEvent(board.GameEvent{ + // EventType: board.EVENT_TYPE_GAME_END, + // Data: boardGame, + // }) + boardServer.SendEvent(endEvent) - frames = append(frames, endEvent) // add game end to frames array if gameState.outputFile != nil { - + // write frames array to db + // insert game end into database bytes, err := json.Marshal(endEvent) if err != nil { // log.WARN.Printf("Unable to serialize game end event: %v", err) @@ -571,36 +374,23 @@ func (gameState *GameState) Run() error { } } + // // log.INFO.Printf("wrote frame event for game end") } } - // the magic happens here: - err = database.WriteInfo(ctx, boardGame, frames) - if err != nil { - log.WARN.Printf("Failed to write game end event to database: %v", err) - } else { - log.INFO.Printf("Wrote game end event to database") + + if exportGame { + // lines, err := gameExporter.FlushToFile(gameState.outputFile) + + lines, err := gameExporter.FlushToFile(io.Discard) + + if err != nil { + return fmt.Errorf("Unable to export game: %w", err) + } + log.INFO.Printf("Fake Wrote %d lines to output file: %s", lines, gameState.OutputPath) } - activeGameMutex.Lock() - activeGame = nil - activeGameMutex.Unlock() - - // if exportGame { - // // lines, err := gameExporter.FlushToFile(gameState.outputFile) - - // lines, err := gameExporter.FlushToFile(io.Discard) - - // if err != nil { - // return fmt.Errorf("Unable to export game: %w", err) - // } - // log.INFO.Printf("Fake Wrote %d lines to output file: %s", lines, gameState.OutputPath) - // } - - // return nil - // os.Exit(0) // Exit after successful run for testing purposes return nil - } func (gameState *GameState) initializeBoardFromArgs() (bool, *rules.BoardState, error) { @@ -1042,12 +832,10 @@ func (gameState *GameState) buildFrameEvent(boardState *rules.BoardState) board. Data: gameFrame, } - frames = append(frames, gameEvent) - // === New: Write frame event to output file if set === if gameState.outputFile != nil { // add frame event to array for now, will write to db at end of game - // frames = append(frames, gameEvent) + frames = append(frames, gameEvent) bytes, err := json.Marshal(gameEvent) if err != nil { diff --git a/cli/commands/root.go b/cli/commands/root.go index c44b61c..72bab2b 100644 --- a/cli/commands/root.go +++ b/cli/commands/root.go @@ -22,9 +22,7 @@ var rootCmd = &cobra.Command{ } func Execute() { - rootCmd.AddCommand(NewPlayCommand()) - rootCmd.AddCommand(NewHostCommand()) mapCommand := NewMapCommand() mapCommand.AddCommand(NewMapListCommand()) diff --git a/db/db.go b/db/db.go deleted file mode 100644 index c36cb58..0000000 --- a/db/db.go +++ /dev/null @@ -1,97 +0,0 @@ -package db - -import ( - "context" - "encoding/json" - "fmt" - - "github.com/BattlesnakeOfficial/rules/board" - "github.com/jackc/pgx/v5/pgxpool" -) - -// the db package provides a simple interface to interact with a PostgreSQL database, it is extremely simple and only writing, reading and deleting game info - -// @ author Bhavnoor Singh Saroya - -// Database wraps pgxpool -type Database struct { - Pool *pgxpool.Pool -} - -// Connect initializes the pool and creates the table if needed -func Connect(dsn string) (*Database, error) { - ctx := context.Background() - - pool, err := pgxpool.New(ctx, dsn) - if err != nil { - return nil, fmt.Errorf("db connect: %w", err) - } - - // Ensure table exists - _, err = pool.Exec(ctx, ` - CREATE TABLE IF NOT EXISTS items ( - id UUID PRIMARY KEY, - info JSONB NOT NULL, - frames JSONB[] - ) - `) - if err != nil { - return nil, fmt.Errorf("create table: %w", err) - } - - return &Database{Pool: pool}, nil -} - -func (db *Database) GetInfo(ctx context.Context, id string) (*board.Game, error) { - var gameData []byte - var it board.Game - err := db.Pool.QueryRow(ctx, - "SELECT info FROM items WHERE id=$1", id). - Scan(&gameData) - if err != nil { - return nil, err - } - // 2. Unmarshal the byte slice into the struct. - err = json.Unmarshal(gameData, &it) - if err != nil { - return nil, err - } - return &it, nil -} - -func (db *Database) WriteInfo(ctx context.Context, info board.Game, frames []board.GameEvent) error { - var err error - var uuid string = info.ID - // 1. Marshal the struct into a byte slice. - gameData, err := json.Marshal(info) - if err != nil { - return fmt.Errorf("marshal game info: %w", err) - } - - // convert []board.GameEvent to []json.RawMessage - var framesData []json.RawMessage - for _, f := range frames { - b, err := json.Marshal(f) - if err != nil { - return fmt.Errorf("marshal frame: %w", err) - } - framesData = append(framesData, b) - } - - // use pgtype to wrap into postgres []JSONB - _, errr := db.Pool.Exec(ctx, - "INSERT INTO items (id, info, frames) VALUES ($1, $2, $3)", - uuid, gameData, framesData) - if errr != nil { - print("error writing to db, bad stuff happened: ") - // panic(fmt.Sprintf("Error inserting item: %v", err)) - return fmt.Errorf("insert item: %w", errr) - } - return nil -} - -func (db *Database) Delete(ctx context.Context, id int) error { - _, err := db.Pool.Exec(ctx, - "DELETE FROM items WHERE id=$1", id) - return err -} diff --git a/examplestate.json b/examplestate.json new file mode 100644 index 0000000..2e89a2d --- /dev/null +++ b/examplestate.json @@ -0,0 +1,91 @@ +{"ID":"25c502f3-a05c-49af-8dbf-4c0fd17e8544","Status":"running","Width":11,"Height":11,"Ruleset":{"name":"standard"},"SnakeTimeout":0,"Source":"","RulesetName":"standard","RulesStages":[],"Map":"standard"} +{"Type":"frame","Data":{"Turn":0,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":5,"Y":1},{"X":5,"Y":1},{"X":5,"Y":1}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"1","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":5},{"X":9,"Y":5},{"X":9,"Y":5}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"1","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":1,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":6,"Y":1},{"X":5,"Y":1},{"X":5,"Y":1}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":6},{"X":9,"Y":5},{"X":9,"Y":5}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":2,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":6,"Y":0},{"X":6,"Y":1},{"X":5,"Y":1}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":6},{"X":9,"Y":6},{"X":9,"Y":5}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":3,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":6},{"X":8,"Y":6},{"X":9,"Y":6}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":4,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":0}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"45","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":6},{"X":7,"Y":6},{"X":8,"Y":6}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"44","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":5,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":5},{"X":6,"Y":6},{"X":7,"Y":6}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":6,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":4},{"X":6,"Y":5},{"X":6,"Y":6}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":7,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0},{"X":4,"Y":0}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"37","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":4},{"X":6,"Y":4},{"X":6,"Y":5}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"37","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":8,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":3},{"X":7,"Y":4},{"X":6,"Y":4}],"Health":92,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"17","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":9,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":3},{"X":7,"Y":3},{"X":7,"Y":4}],"Health":91,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":10,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":3,"Y":2}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":3},{"X":6,"Y":3},{"X":7,"Y":3}],"Health":90,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":11,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":4},{"X":5,"Y":3},{"X":6,"Y":3}],"Health":89,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":12,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":4},{"X":5,"Y":4},{"X":5,"Y":3}],"Health":88,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":13,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":3},{"X":6,"Y":4},{"X":5,"Y":4}],"Health":87,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":14,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":2},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":3},{"X":6,"Y":3},{"X":6,"Y":4}],"Health":86,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":15,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3},{"X":1,"Y":3}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"18","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":3},{"X":7,"Y":3},{"X":6,"Y":3}],"Health":85,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"18","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5},{"X":7,"Y":2}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":16,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3},{"X":0,"Y":3}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":2},{"X":8,"Y":3},{"X":7,"Y":3}],"Health":84,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":17,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":2},{"X":8,"Y":2},{"X":8,"Y":3}],"Health":83,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":18,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2}],"Health":82,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":19,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2}],"Health":81,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":20,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":10,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1}],"Health":80,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":21,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":10,"Y":1},{"X":10,"Y":0},{"X":9,"Y":0}],"Health":79,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":22,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":10,"Y":1},{"X":10,"Y":0}],"Health":78,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":23,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":1},{"X":9,"Y":1},{"X":10,"Y":1}],"Health":77,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":24,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":0},{"X":8,"Y":1},{"X":9,"Y":1}],"Health":76,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":25,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":0},{"X":8,"Y":0},{"X":8,"Y":1}],"Health":75,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":26,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":0},{"X":7,"Y":0},{"X":8,"Y":0}],"Health":74,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":1,"Y":3}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":27,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":1},{"X":6,"Y":0},{"X":7,"Y":0}],"Health":73,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":1,"Y":3}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":28,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":2}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":2},{"X":6,"Y":1},{"X":6,"Y":0}],"Health":72,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":29,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":2},{"X":6,"Y":2},{"X":6,"Y":1},{"X":6,"Y":1}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":30,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":2},{"X":7,"Y":2},{"X":6,"Y":2},{"X":6,"Y":1}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":31,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":2},{"X":8,"Y":2},{"X":7,"Y":2},{"X":6,"Y":2}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":32,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2},{"X":7,"Y":2}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":33,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"11","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":34,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"44","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"26","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":35,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":0},{"X":8,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":36,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":1},{"X":7,"Y":0},{"X":8,"Y":0},{"X":9,"Y":0}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":37,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":1},{"X":7,"Y":1},{"X":7,"Y":0},{"X":8,"Y":0}],"Health":92,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":38,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":0},{"X":6,"Y":1},{"X":7,"Y":1},{"X":7,"Y":0}],"Health":91,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":39,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1},{"X":7,"Y":1}],"Health":90,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"11","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":40,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7}],"Health":88,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1}],"Health":89,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":41,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6}],"Health":87,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0}],"Health":88,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":42,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6}],"Health":86,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0}],"Health":87,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"22","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":43,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5}],"Health":85,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":0},{"X":2,"Y":0},{"X":3,"Y":0},{"X":4,"Y":0}],"Health":86,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":44,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5}],"Health":84,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":0},{"X":1,"Y":0},{"X":2,"Y":0},{"X":3,"Y":0}],"Health":85,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":45,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6}],"Health":83,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":1},{"X":0,"Y":0},{"X":1,"Y":0},{"X":2,"Y":0}],"Health":84,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":46,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7}],"Health":82,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":2},{"X":0,"Y":1},{"X":0,"Y":0},{"X":1,"Y":0}],"Health":83,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":47,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7}],"Health":81,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":3},{"X":0,"Y":2},{"X":0,"Y":1},{"X":0,"Y":0}],"Health":82,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":48,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":80,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":3},{"X":0,"Y":3},{"X":0,"Y":2},{"X":0,"Y":1}],"Health":81,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":49,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9}],"Health":79,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":2},{"X":1,"Y":3},{"X":0,"Y":3},{"X":0,"Y":2}],"Health":80,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":50,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10}],"Health":78,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":0,"Y":3}],"Health":79,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"18","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":51,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10}],"Health":77,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3}],"Health":78,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":52,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10}],"Health":76,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"19","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":2,"Y":1},{"X":2,"Y":2},{"X":1,"Y":2}],"Health":77,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":53,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9}],"Health":75,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":0},{"X":2,"Y":0},{"X":2,"Y":1},{"X":2,"Y":2}],"Health":76,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":54,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9}],"Health":74,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":1},{"X":3,"Y":0},{"X":2,"Y":0},{"X":2,"Y":1}],"Health":75,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":55,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8}],"Health":73,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0},{"X":2,"Y":0}],"Health":74,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":56,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":72,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0}],"Health":73,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":57,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9}],"Health":71,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"21","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1}],"Health":72,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"28","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":58,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9}],"Health":70,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":1},{"X":2,"Y":1},{"X":2,"Y":2},{"X":3,"Y":2}],"Health":71,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":59,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10}],"Health":69,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":1},{"X":1,"Y":1},{"X":2,"Y":1},{"X":2,"Y":2}],"Health":70,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":60,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10}],"Health":68,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":0},{"X":0,"Y":1},{"X":1,"Y":1},{"X":2,"Y":1}],"Health":69,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":61,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10}],"Health":67,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":0},{"X":0,"Y":0},{"X":0,"Y":1},{"X":1,"Y":1}],"Health":68,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":62,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9}],"Health":66,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":1,"Y":0},{"X":0,"Y":0},{"X":0,"Y":1}],"Health":67,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":63,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8}],"Health":65,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":0},{"X":1,"Y":0},{"X":0,"Y":0}],"Health":66,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":64,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7}],"Health":64,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":1},{"X":2,"Y":1},{"X":2,"Y":0},{"X":1,"Y":0}],"Health":65,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":65,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7}],"Health":63,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":1},{"X":3,"Y":1},{"X":2,"Y":1},{"X":2,"Y":0}],"Health":64,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":66,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":62,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":2,"Y":1}],"Health":63,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":67,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9}],"Health":61,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1}],"Health":62,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":68,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9}],"Health":60,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1}],"Health":61,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":69,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8}],"Health":59,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2}],"Health":60,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"11","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":70,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7}],"Health":58,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3}],"Health":59,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":71,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6}],"Health":57,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"22","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3}],"Health":58,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"23","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":72,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5}],"Health":56,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":3}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":73,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5}],"Health":55,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"39","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"39","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":74,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":54,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"17","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":75,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3}],"Health":53,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":76,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2}],"Health":52,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":77,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2}],"Health":51,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":78,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1}],"Health":50,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":79,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1}],"Health":49,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":80,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":48,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":8}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":81,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2}],"Health":47,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":82,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2}],"Health":46,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":83,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1}],"Health":45,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":84,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1}],"Health":44,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":85,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2}],"Health":43,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":86,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3}],"Health":42,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":5,"Y":10}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":87,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3}],"Health":41,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} +{"Type":"frame","Data":{"Turn":88,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":40,"Death":{"Cause":"head-collision","Turn":88,"EliminatedBy":"6afa331f-14c7-43c9-89cb-324a5c8dda4d"},"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":7},{"X":2,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} +{"Type":"game_end","Data":{"ID":"25c502f3-a05c-49af-8dbf-4c0fd17e8544","Status":"running","Width":11,"Height":11,"Ruleset":{"name":"standard"},"SnakeTimeout":0,"Source":"","RulesetName":"standard","RulesStages":[],"Map":"standard"}} \ No newline at end of file diff --git a/go.mod b/go.mod index 6c3a1dd..fb07760 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/BattlesnakeOfficial/rules -go 1.23.0 - -toolchain go1.24.6 +go 1.21 require ( github.com/google/uuid v1.5.0 @@ -21,10 +19,6 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.5 // indirect - github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-sqlite3 v1.14.32 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -38,12 +32,10 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.37.0 // indirect golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/sync v0.13.0 // indirect - golang.org/x/sys v0.32.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/text v0.14.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index c597dcf..3874865 100644 --- a/go.sum +++ b/go.sum @@ -17,14 +17,6 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= -github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs= -github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= -github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= -github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -71,8 +63,6 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= @@ -81,29 +71,18 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=