---
# System prepended metadata

title: 9021 Collective

---

# 9021 Collective

### Dear 9021 collectors, 

This is Johnny, the designer for the 9021 project (Not the developper). First and foremost I would like to clear some controversy with the project, the art, and our team. I’ll start with our team. I want to clear any hate towards our photographers, this includes Jake, Chip, and Joey. All they contributed were beautiful photos and sentiments for the 9021 project, they had no other involvement. These are some of the most wonderful human beings and they would never pull a stunt like this on their respected followers and communities, all sentimental hate towards them needs to stop. Now in terms of the art, let me clear some things up. We started this project about a month ago, and the theme of the project was “Pop Art”, the art had to be colourful and memorable. To get some inspiration I searched Pop Art on Pinterest (A common social media I use for inspiration). While browsing I found this awesome, fun, playful pattern (No more than 400x400 in size). Looking at the pattern I was hooked and I thought it fit the theme of “Pop Art” quite well. The pattern was just a simple arc() function with randomly placed circles(). To build the pattern I referenced the documentation section of p5.js under 2D primitive shapes. The syntax is as follows: arc(x, y, w, h, start, stop, [mode], [detail]). Creating basic shapes on p5.js is as easy as reading the documentation, and there are a lot of different ways to produce the same result. For the symbols, these were created in Illustrator (AI) → I copied the SVG code of each of the patterns I produced in Illustrator, and I ran them through an HTML5 Canvas generator. I was not aware of who Roni was, but evidently, the pattern I saw on Pinterest was his creation and I only found out about his creative license after the case. I just want to finally say, I’m really sorry for those who believed in me and wanted the project to succeed, in no way did I want this to happen, I just wanted the best for everyone, and I’m really truly sorry. 

Best regards,

Johnny


References: 

https://p5js.org/reference/#/p5/arc
https://p5js.org/learn/curves.html
https://stackoverflow.com/questions/29107502/function-arc-doesnt-render-right-in-p5-js
https://discourse.processing.org/t/i-have-a-question-about-arc/20396







let canvas;
let ctx;
let leaf2RW;
let leaf2RH;
let colours;
let colour;
let nValue;
let nRemove;
let frag = [];
let idName_num = 0;
let image_count = 0;
let json_count = 0;

let size;
let sizeOutput;
let nHeight;
let xWidth;
let img;
let nRandom = 0.5;
let proportion = 2;

let split = 3;
let fragments = 25;
let imagePos = 0;

let json = {};

let rarities = [{
  type: "palm",
  chance: 0 // 37%
}, {
  type: "carnation",
  chance: 35
}, {
  type: "sun",
  chance: 10
}, {
  type: "x",
  chance: 10
}, {
  type: "rodman",
  chance: 8
}, {
  type: "coral",
  chance: 1
}];

colours = ['#8CF499', '#F3E6D6', '#F0749D', '#F7EE40', '#B3A1E8', '#67DAAF', '#7C93F6'];

function preload() {
  // img = loadImage("4.png");
}

function setup() {
  canvas = createCanvas(1500, 500);
  ctx = canvas.elt.getContext('2d');
  imageMode(CENTER);
   noLoop();
  //frameRate(2);

}

function draw() {
  colour = random(colours);
  background(colour);

  // image(img, width / 2, height / 2, img.width / 5, img.height / 5);
  
  sizeOutput = [2, 3, 5, 6, 8, 9];
  
  producePattern();
  

  //saveCanvas(canvas, image_count + ".png");
  //saveJSON(json, json_count + ".json");

  idName_num++;
  json_count++;
  image_count++;
  }
  
  function producePattern() {

  nValue = floor(random(sizeOutput));

  size = width / nValue;
  
  nHeight = size / split;
  
  nWidth = size / fragments;
  
  frag = [];

  pickRandom();

  let roy = createGraphics(size, size);
  roy.noFill();
  roy.stroke("black");
  roy.strokeWeight(nWidth);
  roy.arc(nHeight, 0, nHeight, nHeight, 0, radians(90));
  roy.arc(nHeight, nHeight, nHeight, nHeight, radians(180), radians(270));
  roy.arc(0, nHeight, nHeight, nHeight, 0, radians(90));
  roy.arc(2 * nHeight, nHeight, nHeight, nHeight, radians(180), radians(90));
  roy.arc(nHeight, nHeight, nHeight, nHeight, 0, radians(90));
  roy.arc(nHeight, 2 * nHeight, nHeight, nHeight, 0, radians(270));
  roy.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  roy.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, 0, radians(90));
  roy.arc(3 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  roy.arc(2 * nHeight, 3 * nHeight, nHeight, nHeight, radians(180), radians(270));
  frag.push(roy);

  //let keith = createGraphics(size, size);
  //keith.noFill();
  //keith.stroke("black");
  //keith.strokeWeight(nWidth);
  //keith.arc(nHeight, 0, nHeight, nHeight, 0, radians(90));
  //keith.arc(nHeight, nHeight, nHeight, nHeight, radians(90), radians(270));
  //keith.arc(nHeight, 2 * nHeight, nHeight, nHeight, radians(270), radians(180));
  //keith.arc(0, 2 * nHeight, nHeight, nHeight, radians(270), 0);
  //keith.arc(2 * nHeight, 3 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //keith.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, radians(270), radians(90));
  //keith.arc(2 * nHeight, nHeight, nHeight, nHeight, radians(90), 0);
  //keith.arc(3 * nHeight, nHeight, nHeight, nHeight, radians(90), radians(180));
  //frag.push(keith);

  //let andy = createGraphics(size, size);
  //andy.noFill();
  //andy.stroke("black");
  //andy.strokeWeight(nWidth);
  //andy.arc(2 * nHeight, 0, nHeight, nHeight, radians(90), radians(180));
  //andy.arc(2 * nHeight, nHeight, nHeight, nHeight, radians(270), radians(90));
  //andy.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //andy.arc(nHeight, 2 * nHeight, nHeight, nHeight, 0, radians(180));
  //andy.arc(0, 2 * nHeight, nHeight, nHeight, radians(270), 0);
  //andy.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, 0, radians(90));
  //andy.arc(3 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //andy.arc(2 * nHeight, 3 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //frag.push(andy);

  //let david = createGraphics(size, size);
  //david.noFill();
  //david.stroke("black");
  //david.strokeWeight(nWidth);
  //david.arc(nHeight, nHeight, nHeight, nHeight, 0, radians(90));
  //david.arc(nHeight, 2 * nHeight, nHeight, nHeight, radians(90), radians(270));
  //david.arc(nHeight, 2 * nHeight, nHeight, nHeight, radians(0), radians(90));
  //david.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //david.arc(2 * nHeight, nHeight, nHeight, nHeight, radians(270), radians(90));
  //david.arc(2 * nHeight, nHeight, nHeight, nHeight, radians(180), radians(270));
  //david.arc(2 * nHeight, 0, nHeight, nHeight, radians(90), radians(180));
  //david.arc(2 * nHeight, nHeight, nHeight, nHeight, radians(270), radians(90));
  //david.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //david.arc(nHeight, 2 * nHeight, nHeight, nHeight, 0, radians(180));
  //david.arc(nHeight, 2 * nHeight, nHeight, nHeight, radians(270), 0);
  //david.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, 0, radians(90));
  //david.arc(3 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //david.arc(2 * nHeight, 3 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //frag.push(david);

  //let richard = createGraphics(size, size);
  //richard.noFill();
  //richard.stroke("black");
  //richard.strokeWeight(nWidth);
  //richard.arc(nHeight, nHeight, nHeight, nHeight, 0, radians(90));
  //richard.arc(nHeight, 2 * nHeight, nHeight, nHeight, radians(90), radians(270));
  //richard.arc(nHeight, 2 * nHeight, nHeight, nHeight, radians(0), radians(90));
  //richard.arc(nHeight, nHeight, nHeight, nHeight, radians(270), 0);
  //richard.arc(nHeight, 0, nHeight, nHeight, 0, radians(90));
  //richard.arc(nHeight, nHeight, nHeight, nHeight, radians(90), radians(270));
  //richard.arc(nHeight, 2 * nHeight, nHeight, nHeight, radians(270), radians(180));
  //richard.arc(0, 2 * nHeight, nHeight, nHeight, radians(270), 0);
  //richard.arc(2 * nHeight, nHeight, nHeight, nHeight, 0, radians(360));
  //richard.arc(2 * nHeight, 2 * nHeight, nHeight, nHeight, 0, radians(90));
  //richard.arc(3 * nHeight, 2 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //richard.arc(2 * nHeight, 3 * nHeight, nHeight, nHeight, radians(180), radians(270));
  //frag.push(richard);

  randomize();
  
   for (let xSize = size / (4 / proportion); xSize <= width; xSize = xSize + size) {
    for (let ySize = size / (4 / proportion); ySize <= height; ySize = ySize + size) {
      
      if (Math.random() < nRandom) {
        fill(random(["#F7EE40", "#A8F5F1", "#F0749D", "#B3A1E8", '#4CFFA0']));
        noStroke();
        circle(xSize + random([nHeight / proportion, nHeight / proportion]), ySize + random([nHeight / proportion, nHeight / proportion]), random([nHeight / proportion, nHeight, nHeight / proportion]));
      }
      
        // pushMatrix() for processing only
        push();
        
        translate(xSize / 1, ySize / 1);
        
        rotate(random([3.14159, 6.2831900003544, 2 * 3.14159]));
        
        image(random(frag), imagePos, imagePos);
        
        // popMatrix(0 for processing only
        pop();
      }
    }  
 
  }
  
  function randomize() {
    nRemove = Math.floor(Math.random(frag.length));
  
    this.nRemove = nRemove;
  
    
    for (let j = 0; j < nRemove; j++) {
    frag(Math.floor(Math.random(frag.length)));
  }
  }

function pickRandom() {
  // Calculate chances for common
  let filler = 100 - rarities.map(r => r.chance).reduce((sum, current) => sum + current);

  if (filler <= 0) {
    console.log("chances sum is higher than 100!");
    return;
  }

  // Create an array of 100 elements, based on the chances field
  let probability = rarities.map((r, i) => Array(r.chance === 0 ? filler : r.chance).fill(i)).reduce((c, v) => c.concat(v), []);

  // Pick one
  let pIndex = Math.floor(Math.random() * 100);
  let rarity = rarities[probability[pIndex]];

  if (rarity.type === "palm") {
    fill(random(["#F7EE40", "#A8F5F1", "#F0749D", "#B3A1E8", '#4CFFA0', '#FE9C74', '#7C93F6']));
    push();
    palm(ctx);
    pop();
  }

  if (rarity.type === "carnation") {
    fill(random(["#F7EE40", "#A8F5F1", "#F0749D", "#B3A1E8", '#4CFFA0', '#FE9C74', '#7C93F6']));
    push();
    carnation(ctx);
    pop();
  }

  if (rarity.type === "sun") {
    fill(random(["#F7EE40", "#A8F5F1", "#F0749D", "#B3A1E8", '#4CFFA0', '#FE9C74', '#7C93F6']));
    push();
    sun(ctx);
    pop();
  }

  if (rarity.type === "x") {
    fill(random(["#F7EE40", "#A8F5F1", "#F0749D", "#B3A1E8", '#4CFFA0', '#FE9C74', '#7C93F6']));
    push();
    x(ctx);
    pop();
  }

  if (rarity.type === "rodman") {
    fill(random(["#F7EE40", "#A8F5F1", "#F0749D", "#B3A1E8", '#4CFFA0', '#FE9C74', '#7C93F6']));
    push();
    rodman(ctx);
    pop();
  }

  if (rarity.type === "coral") {
    fill(random(["#F7EE40", "#A8F5F1", "#F0749D", "#B3A1E8", '#4CFFA0', '#FE9C74', '#7C93F6']));
    push();
    coral(ctx);
    pop();
  }

  json.image = "https://ipfs.io/ipfs/QmaQQvX5KsaDwHgnzXebQKCvYA6fWfmMHiKtQF8nPC1Npm/1.png";
  json.tokenId = idName_num;
  json.name = "9021" + " " + idName_num;
  json.attributes = [{
      "trait_type": "Pattern",
      "value": nRemove
    },
    {
      "trait_type": "Symbol",
      "value": rarity.type
    },
    {
      "trait_type": "Background",
      "value": colour
    },
    {
      "trait_type": "Size",
      "value": sizeOutput
    },
    {
      "trait_type": "Photographer",
      "value": "Jake"
    }
  ]
}


function coral(ctx) {
  let a1 = random(-600, 1000);
  let a2 = random(-200, 300);

  translate(a1, a2);
  scale(0.8);

  ctx.beginPath();
  ctx.moveTo(605.4, 110.3);
  ctx.bezierCurveTo(605.4, 110.3, 565.4, 110.3, 576.4, 156.3);
  ctx.bezierCurveTo(576.4, 156.3, 579.4, 173.3, 592.4, 184.3);
  ctx.bezierCurveTo(592.4, 184.3, 603.4, 195.3, 595.4, 201.3);
  ctx.bezierCurveTo(595.4, 201.3, 590.6, 213.60000000000002, 574.5, 195.4);
  ctx.bezierCurveTo(574.5, 195.4, 545.4, 143.3, 532.4, 140.3);
  ctx.bezierCurveTo(532.4, 140.3, 495.4, 115.30000000000001, 494.4, 169.3);
  ctx.bezierCurveTo(494.4, 169.3, 491.4, 210.4, 549.9, 235.3);
  ctx.bezierCurveTo(549.9, 235.3, 609.4, 261.3, 624.4, 325.3);
  ctx.bezierCurveTo(624.4, 325.3, 624.4, 355.3, 627.4, 365.3);
  ctx.bezierCurveTo(627.4, 365.3, 635.4, 436.3, 618.4, 459.3);
  ctx.bezierCurveTo(618.4, 459.3, 606.4, 467.3, 608.4, 444.3);
  ctx.bezierCurveTo(608.4, 444.3, 613.4, 410.3, 611.4, 403.3);
  ctx.bezierCurveTo(611.4, 403.3, 615.4, 385.3, 611.4, 361.3);
  ctx.bezierCurveTo(611.4, 361.3, 598.4, 298.3, 578.4, 289.3);
  ctx.bezierCurveTo(578.4, 289.3, 545.4, 276.3, 526.4, 279.3);
  ctx.bezierCurveTo(526.4, 279.3, 499.4, 294.3, 501.4, 320.3);
  ctx.bezierCurveTo(501.4, 320.3, 493.4, 360.3, 540.4, 384.3);
  ctx.bezierCurveTo(540.4, 384.3, 563.4, 408.3, 576.4, 439.3);
  ctx.lineTo(597.4, 486.3);
  ctx.bezierCurveTo(597.4, 486.3, 608.3, 511.7, 561.8, 516);
  ctx.bezierCurveTo(561.8, 516, 529.4, 510.3, 519.4, 556.3);
  ctx.bezierCurveTo(519.4, 556.3, 511.4, 579.3, 558.4, 572.3);
  ctx.bezierCurveTo(558.4, 572.3, 606.4, 551.3, 614.4, 544.3);
  ctx.bezierCurveTo(614.4, 544.3, 646.4, 530.3, 650.4, 524.3);
  ctx.bezierCurveTo(650.4, 524.3, 662.4, 518.3, 673.4, 530.3);
  ctx.bezierCurveTo(673.4, 530.3, 685.4, 540.3, 678.4, 549.3);
  ctx.bezierCurveTo(678.4, 549.3, 634.4, 570.3, 596.4, 571.3);
  ctx.bezierCurveTo(596.4, 571.3, 546.4, 576.3, 531.4, 586.3);
  ctx.bezierCurveTo(531.4, 586.3, 497.4, 610.3, 525.4, 628.3);
  ctx.bezierCurveTo(525.4, 628.3, 539.4, 644.3, 550.4, 637.3);
  ctx.bezierCurveTo(550.4, 637.3, 567.4, 623.3, 568.4, 620.3);
  ctx.bezierCurveTo(568.4, 620.3, 576.4, 618.3, 581.4, 615.3);
  ctx.bezierCurveTo(586.4, 612.3, 606.4, 605.3, 592.4, 621.3);
  ctx.bezierCurveTo(592.4, 621.3, 575.4, 631.3, 578.4, 641.3);
  ctx.bezierCurveTo(578.4, 641.3, 579.4, 650.3, 577.4, 652.3);
  ctx.bezierCurveTo(577.4, 652.3, 574.6, 660, 587.5, 663.5999999999999);
  ctx.bezierCurveTo(587.5, 663.5999999999999, 616.4, 686.3, 632.4, 654.3);
  ctx.bezierCurveTo(632.4, 654.3, 659.4, 599.3, 671.4, 592.3);
  ctx.bezierCurveTo(671.4, 592.3, 685.4, 576.3, 695.4, 580.3);
  ctx.bezierCurveTo(695.4, 580.3, 712.4, 577.3, 699.4, 609.3);
  ctx.bezierCurveTo(699.4, 609.3, 681.4, 641.3, 698.4, 650.3);
  ctx.bezierCurveTo(698.4, 650.3, 705.4, 661.3, 732.4, 643.3);
  ctx.bezierCurveTo(732.4, 643.3, 743.4, 644.3, 753.4, 639.3);
  ctx.bezierCurveTo(753.4, 639.3, 768.4, 630.3, 777.4, 626.3);
  ctx.bezierCurveTo(777.4, 626.3, 808.4, 623.3, 820.4, 615.3);
  ctx.bezierCurveTo(820.4, 615.3, 862.4, 604.3, 867.4, 584.3);
  ctx.bezierCurveTo(867.4, 584.3, 883.4, 541.3, 853.4, 535.3);
  ctx.bezierCurveTo(853.4, 535.3, 819.4, 519.3, 792.4, 558.3);
  ctx.bezierCurveTo(792.4, 558.3, 772, 590.3, 755.6999999999999, 589.3);
  ctx.bezierCurveTo(755.6999999999999, 589.3, 729.4, 585.3, 750.4, 554.3);
  ctx.bezierCurveTo(750.4, 554.3, 768.4, 543.3, 769.4, 540.3);
  ctx.bezierCurveTo(769.4, 540.3, 795.4, 531.3, 800.4, 525.3);
  ctx.bezierCurveTo(800.4, 525.3, 865.4, 493.29999999999995, 865.4, 463.29999999999995);
  ctx.bezierCurveTo(865.4, 463.29999999999995, 869.4, 423.29999999999995, 832.4, 439.29999999999995);
  ctx.bezierCurveTo(832.4, 439.29999999999995, 814.4, 477.29999999999995, 797.4, 450.29999999999995);
  ctx.bezierCurveTo(797.4, 450.29999999999995, 781.4, 438.29999999999995, 799.4, 420.29999999999995);
  ctx.bezierCurveTo(799.4, 420.29999999999995, 850.4, 372.29999999999995, 852.4, 364.29999999999995);
  ctx.bezierCurveTo(852.4, 364.29999999999995, 871.4, 339.79999999999995, 835.4, 331.49999999999994);
  ctx.bezierCurveTo(835.4, 331.49999999999994, 808.4, 317.29999999999995, 777.4, 354.29999999999995);
  ctx.bezierCurveTo(777.4, 354.29999999999995, 747.3, 368.4, 754.4, 390.9);
  ctx.bezierCurveTo(754.4, 390.9, 758.4, 462.29999999999995, 754.4, 472.29999999999995);
  ctx.bezierCurveTo(754.4, 472.29999999999995, 745.4, 514.3, 726.4, 523.3);
  ctx.bezierCurveTo(726.4, 523.3, 702.4, 530.3, 721.4, 485.29999999999995);
  ctx.lineTo(731.4, 424.29999999999995);
  ctx.bezierCurveTo(731.4, 424.29999999999995, 744.4, 380.29999999999995, 749.4, 372.29999999999995);
  ctx.bezierCurveTo(749.4, 372.29999999999995, 768.4, 329.29999999999995, 772.4, 325.79999999999995);
  ctx.bezierCurveTo(772.4, 325.79999999999995, 810.4, 278.29999999999995, 815.4, 254.29999999999995);
  ctx.bezierCurveTo(815.4, 254.29999999999995, 824.4, 209.29999999999995, 792.4, 210.29999999999995);
  ctx.bezierCurveTo(792.4, 210.29999999999995, 757.4, 217.29999999999995, 752.4, 269.29999999999995);
  ctx.bezierCurveTo(752.4, 269.29999999999995, 718.4, 272.29999999999995, 721.4, 240.29999999999995);
  ctx.bezierCurveTo(721.4, 240.29999999999995, 724.4, 208.29999999999995, 748.4, 193.29999999999995);
  ctx.bezierCurveTo(748.4, 193.29999999999995, 812.4, 158.29999999999995, 808.4, 137.29999999999995);
  ctx.bezierCurveTo(808.4, 137.29999999999995, 794.4, 102.29999999999995, 765.4, 100.29999999999995);
  ctx.bezierCurveTo(765.4, 100.29999999999995, 731.4, 81.29999999999995, 705.4, 129.29999999999995);
  ctx.bezierCurveTo(705.4, 129.29999999999995, 688.4, 152.29999999999995, 696.4, 186.29999999999995);
  ctx.bezierCurveTo(696.4, 186.29999999999995, 694.4, 253.29999999999995, 704.4, 271.29999999999995);
  ctx.bezierCurveTo(704.4, 271.29999999999995, 722.4, 362.29999999999995, 695.4, 426.29999999999995);
  ctx.bezierCurveTo(695.4, 426.29999999999995, 685.4, 484.29999999999995, 660.4, 491.29999999999995);
  ctx.bezierCurveTo(660.4, 491.29999999999995, 636.4, 505.29999999999995, 652.4, 452.29999999999995);
  ctx.bezierCurveTo(652.4, 452.29999999999995, 686.4, 360.29999999999995, 685.4, 306.29999999999995);
  ctx.bezierCurveTo(685.4, 306.29999999999995, 680.4, 187.29999999999995, 654.4, 156.29999999999995);
  ctx.bezierCurveTo(654.4, 156.3, 637.4, 118.3, 605.4, 110.3);
  ctx.closePath();
  ctx.fill();
}

function palm(ctx) {
  let a1 = random(-200, 1000);
  let a2 = random(-200, 300);

  translate(a1, a2);
  scale(0.5);

  ctx.beginPath();
  ctx.moveTo(1154.7, 399.2);
  ctx.bezierCurveTo(1015.1, 185.2, 805, 202.3, 805, 202.3);
  ctx.lineTo(805, 81);
  ctx.bezierCurveTo(805, 81, 438, 51, 194, 425);
  ctx.bezierCurveTo(194, 425, 188, 440, 240, 404);
  ctx.bezierCurveTo(240, 404, 485, 208, 805, 303);
  ctx.lineTo(805, 303);
  ctx.bezierCurveTo(805, 303, 530, 270, 334, 508);
  ctx.bezierCurveTo(334, 508, 334, 513, 388, 490);
  ctx.bezierCurveTo(388, 490, 548, 403, 700, 451);
  ctx.bezierCurveTo(700, 451, 488, 498, 426, 640);
  ctx.bezierCurveTo(426, 640, 407.8, 672.5, 499.4, 615.7);
  ctx.bezierCurveTo(499.4, 615.7, 668, 530.6, 805, 578.8000000000001);
  ctx.lineTo(805, 487.20000000000005);
  ctx.bezierCurveTo(883.4, 459.6, 979.9, 508.30000000000007, 979.9, 508.30000000000007);
  ctx.bezierCurveTo(1032.3, 540.8000000000001, 1021.9, 522.2, 1021.9, 522.2);
  ctx.bezierCurveTo(986.4, 441, 865.1, 414.1, 865.1, 414.1);
  ctx.bezierCurveTo(952.1, 386.6, 1043.7, 436.40000000000003, 1043.7, 436.40000000000003);
  ctx.bezierCurveTo(1074.6000000000001, 449.6, 1074.6000000000001, 446.70000000000005, 1074.6000000000001, 446.70000000000005);
  ctx.bezierCurveTo(962.4, 310.5, 805, 329.4, 805, 329.4);
  ctx.lineTo(805, 329.4);
  ctx.bezierCurveTo(988.2, 275, 1128.4, 387.2, 1128.4, 387.2);
  ctx.bezierCurveTo(1158.2, 407.8, 1154.7, 399.2, 1154.7, 399.2);
  ctx.closePath();
  ctx.fill();
}

function carnation(ctx) {
  let a1 = random(-600, 900);
  let a2 = random(-300, 200);

  translate(a1, a2);
  scale(0.9);

  ctx.beginPath();
  ctx.moveTo(697.3, 178);
  ctx.bezierCurveTo(696.9, 177.8, 696.5, 177.6, 696.1999999999999, 177.2);
  ctx.bezierCurveTo(693.3, 174.39999999999998, 676.5999999999999, 160, 656.6999999999999, 172.7);
  ctx.bezierCurveTo(656.6999999999999, 172.7, 645.6999999999999, 179.7, 647.6999999999999, 213.7);
  ctx.bezierCurveTo(647.6999999999999, 213.7, 649.5999999999999, 241.1, 654.3, 250);
  ctx.bezierCurveTo(654.5999999999999, 250.5, 654.6999999999999, 251.1, 654.8, 251.7);
  ctx.bezierCurveTo(655, 256.59999999999997, 656.3, 278.5, 661.0999999999999, 285.8);
  ctx.bezierCurveTo(661.4999999999999, 286.5, 661.8, 287.2, 661.8999999999999, 288);
  ctx.bezierCurveTo(662.0999999999999, 293.5, 662.0999999999999, 312.9, 647.6999999999998, 294.8);
  ctx.bezierCurveTo(647.5999999999998, 294.7, 647.5999999999998, 294.6, 647.4999999999998, 294.6);
  ctx.bezierCurveTo(646.2999999999997, 292.8, 632.7999999999997, 273.3, 628.8999999999997, 259.90000000000003);
  ctx.bezierCurveTo(628.7999999999997, 259.70000000000005, 628.7999999999997, 259.50000000000006, 628.7999999999997, 259.40000000000003);
  ctx.bezierCurveTo(628.2999999999997, 256.3, 623.5999999999997, 228.30000000000004, 619.7999999999997, 222.70000000000005);
  ctx.bezierCurveTo(615.8999999999997, 216.80000000000004, 610.9999999999998, 199.50000000000006, 602.3999999999997, 195.00000000000006);
  ctx.bezierCurveTo(601.9999999999998, 194.80000000000007, 601.6999999999997, 194.60000000000005, 601.3999999999997, 194.30000000000007);
  ctx.bezierCurveTo(598.5999999999998, 191.70000000000007, 582.3999999999997, 178.10000000000008, 575.8999999999997, 201.20000000000007);
  ctx.bezierCurveTo(575.7999999999997, 201.50000000000009, 575.6999999999997, 201.70000000000007, 575.5999999999998, 201.90000000000006);
  ctx.bezierCurveTo(574.5999999999998, 203.90000000000006, 569.1999999999998, 217.40000000000006, 584.6999999999998, 247.60000000000008);
  ctx.bezierCurveTo(584.6999999999998, 247.60000000000008, 601.2999999999998, 283.80000000000007, 622.8999999999999, 299.1000000000001);
  ctx.bezierCurveTo(623.3999999999999, 299.4000000000001, 623.7999999999998, 299.9000000000001, 624.0999999999999, 300.4000000000001);
  ctx.bezierCurveTo(626.3, 304.1000000000001, 636.1999999999999, 320.0000000000001, 644.8999999999999, 323.4000000000001);
  ctx.bezierCurveTo(645.4999999999999, 323.6000000000001, 645.9999999999999, 324.0000000000001, 646.3999999999999, 324.5000000000001);
  ctx.bezierCurveTo(649.2999999999998, 327.5000000000001, 658.3999999999999, 337.7000000000001, 638.8999999999999, 325.9000000000001);
  ctx.bezierCurveTo(638.6999999999998, 325.80000000000007, 638.5999999999999, 325.7000000000001, 638.3999999999999, 325.6000000000001);
  ctx.lineTo(603, 297);
  ctx.bezierCurveTo(602.7, 296.8, 602.5, 296.5, 602.3, 296.3);
  ctx.bezierCurveTo(600.5, 293.90000000000003, 590.9, 282.2, 584.5999999999999, 286.7);
  ctx.bezierCurveTo(584.5999999999999, 286.7, 570.5999999999999, 296.7, 575.5999999999999, 312.7);
  ctx.bezierCurveTo(575.5999999999999, 312.7, 576.5999999999999, 325.59999999999997, 606.3999999999999, 349.5);
  ctx.bezierCurveTo(606.4999999999999, 349.6, 606.6999999999998, 349.7, 606.7999999999998, 349.9);
  ctx.bezierCurveTo(608.9999999999999, 352.2, 630.6999999999998, 374.79999999999995, 631.5999999999998, 375.7);
  ctx.bezierCurveTo(632.4999999999998, 376.59999999999997, 640.6999999999998, 385.9, 637.6999999999998, 393.7);
  ctx.bezierCurveTo(636.7999999999998, 396.2, 633.7999999999998, 397.2, 631.4999999999998, 395.8);
  ctx.bezierCurveTo(628.5999999999998, 394.1, 624.6999999999998, 390.90000000000003, 622.7999999999997, 385.3);
  ctx.bezierCurveTo(622.6999999999997, 384.90000000000003, 622.4999999999998, 384.5, 622.1999999999997, 384.1);
  ctx.bezierCurveTo(619.7999999999997, 380.90000000000003, 607.3999999999997, 364, 603.9999999999997, 361.8);
  ctx.bezierCurveTo(603.6999999999997, 361.6, 603.3999999999996, 361.40000000000003, 603.1999999999997, 361.2);
  ctx.bezierCurveTo(600.6999999999997, 358.7, 587.7999999999997, 346.59999999999997, 576.2999999999997, 350.4);
  ctx.bezierCurveTo(575.8999999999997, 350.5, 575.4999999999998, 350.59999999999997, 574.9999999999998, 350.59999999999997);
  ctx.bezierCurveTo(572.0999999999998, 350.7, 559.8999999999997, 352.2, 567.2999999999997, 372.7);
  ctx.bezierCurveTo(567.4999999999998, 373.3, 567.7999999999997, 373.8, 568.1999999999997, 374.2);
  ctx.bezierCurveTo(572.9999999999997, 379.2, 603.0999999999997, 410.59999999999997, 610.1999999999997, 413.4);
  ctx.bezierCurveTo(610.4999999999997, 413.5, 610.7999999999997, 413.7, 611.0999999999997, 413.9);
  ctx.bezierCurveTo(614.3999999999996, 416.4, 632.1999999999997, 430.59999999999997, 642.1999999999997, 450.2);
  ctx.bezierCurveTo(644.1999999999997, 454.09999999999997, 639.6999999999997, 458.2, 635.8999999999997, 455.8);
  ctx.bezierCurveTo(628.9999999999998, 451.40000000000003, 619.9999999999998, 447.1, 611.9999999999998, 447.40000000000003);
  ctx.bezierCurveTo(611.6999999999998, 447.40000000000003, 611.3999999999997, 447.40000000000003, 611.0999999999998, 447.3);
  ctx.bezierCurveTo(607.4999999999998, 446.6, 581.4999999999998, 442.3, 567.4999999999998, 454.40000000000003);
  ctx.bezierCurveTo(567.4999999999998, 454.40000000000003, 551.5999999999998, 464.3, 582.0999999999998, 469.3);
  ctx.bezierCurveTo(582.3999999999997, 469.3, 582.6999999999998, 469.40000000000003, 582.8999999999997, 469.5);
  ctx.lineTo(621.7999999999997, 484.1);
  ctx.bezierCurveTo(622.2999999999997, 484.3, 622.7999999999997, 484.40000000000003, 623.2999999999997, 484.40000000000003);
  ctx.bezierCurveTo(626.2999999999997, 484.40000000000003, 637.7999999999997, 484.8, 644.7999999999997, 487.1);
  ctx.bezierCurveTo(645.2999999999997, 487.3, 645.7999999999997, 487.6, 646.1999999999997, 487.90000000000003);
  ctx.bezierCurveTo(650.0999999999997, 491.20000000000005, 669.6999999999997, 509.00000000000006, 646.0999999999997, 508.40000000000003);
  ctx.bezierCurveTo(645.6999999999997, 508.40000000000003, 645.3999999999996, 508.3, 644.9999999999997, 508.20000000000005);
  ctx.bezierCurveTo(640.8999999999996, 507.00000000000006, 614.2999999999996, 499.20000000000005, 611.4999999999997, 497.40000000000003);
  ctx.bezierCurveTo(608.4999999999997, 495.40000000000003, 581.4999999999997, 486.40000000000003, 576.4999999999997, 487.40000000000003);
  ctx.bezierCurveTo(571.5999999999997, 488.40000000000003, 560.6999999999997, 492.3, 568.2999999999996, 505.00000000000006);
  ctx.bezierCurveTo(568.4999999999997, 505.30000000000007, 568.5999999999996, 505.50000000000006, 568.7999999999996, 505.70000000000005);
  ctx.bezierCurveTo(571.2999999999996, 508.40000000000003, 587.8999999999996, 525.8000000000001, 605.4999999999997, 531.4000000000001);
  ctx.bezierCurveTo(605.4999999999997, 531.4000000000001, 622.2999999999996, 537.3000000000001, 639.1999999999997, 536.4000000000001);
  ctx.bezierCurveTo(639.3999999999997, 536.4000000000001, 639.5999999999997, 536.4000000000001, 639.6999999999997, 536.3000000000001);
  ctx.bezierCurveTo(642.2999999999997, 535.8000000000001, 663.6999999999997, 532.3000000000001, 651.0999999999997, 541.2);
  ctx.bezierCurveTo(650.0999999999997, 541.9000000000001, 648.7999999999997, 542.2, 647.4999999999997, 541.9000000000001);
  ctx.bezierCurveTo(640.8999999999996, 540.3000000000001, 618.1999999999997, 535.2, 609.8999999999996, 538.1000000000001);
  ctx.bezierCurveTo(609.4999999999997, 538.2000000000002, 608.9999999999997, 538.3000000000002, 608.5999999999997, 538.3000000000002);
  ctx.bezierCurveTo(605.5999999999997, 538.4000000000002, 594.1999999999997, 540.2000000000002, 592.3999999999996, 565.7000000000002);
  ctx.bezierCurveTo(592.3999999999996, 566.1000000000001, 592.3999999999996, 566.5000000000001, 592.4999999999997, 566.9000000000002);
  ctx.bezierCurveTo(593.2999999999996, 570.5000000000002, 597.8999999999996, 589.2000000000002, 612.0999999999997, 591.2000000000002);
  ctx.bezierCurveTo(612.2999999999997, 591.2000000000002, 612.4999999999997, 591.2000000000002, 612.6999999999997, 591.2000000000002);
  ctx.bezierCurveTo(616.0999999999997, 591.3000000000002, 648.2999999999997, 591.5000000000001, 664.3999999999997, 579.2000000000002);
  ctx.bezierCurveTo(664.3999999999997, 579.2000000000002, 689.9999999999998, 559.8000000000002, 695.4999999999998, 552.8000000000002);
  ctx.bezierCurveTo(696.0999999999998, 552.0000000000002, 696.3999999999997, 551.1000000000001, 696.3999999999997, 550.1000000000001);
  ctx.bezierCurveTo(696.3999999999997, 547.1000000000001, 696.5999999999998, 539.2000000000002, 697.1999999999997, 532.5000000000001);
  ctx.bezierCurveTo(697.5999999999997, 528.3000000000001, 703.1999999999997, 527.1000000000001, 705.2999999999997, 530.8000000000001);
  ctx.bezierCurveTo(711.7999999999997, 542.2, 722.4999999999998, 561.5000000000001, 723.2999999999997, 566.7);
  ctx.bezierCurveTo(723.3999999999997, 567.1, 723.4999999999998, 567.5, 723.6999999999997, 567.9000000000001);
  ctx.bezierCurveTo(725.8999999999997, 572.3000000000001, 738.1999999999997, 596.0000000000001, 752.9999999999997, 599.9000000000001);
  ctx.bezierCurveTo(753.7999999999996, 600.1000000000001, 754.6999999999997, 600.1000000000001, 755.4999999999997, 599.8000000000001);
  ctx.bezierCurveTo(759.7999999999996, 598.3000000000001, 773.8999999999996, 592.0000000000001, 776.9999999999997, 571.1);
  ctx.bezierCurveTo(778.7999999999996, 558.9, 775.8999999999996, 546.4, 769.0999999999997, 536.1);
  ctx.bezierCurveTo(759.6999999999997, 521.8000000000001, 741.2999999999997, 498.1, 715.3999999999996, 484.20000000000005);
  ctx.bezierCurveTo(715.2999999999996, 484.20000000000005, 715.1999999999996, 484.1, 715.0999999999997, 484.00000000000006);
  ctx.bezierCurveTo(712.4999999999997, 482.30000000000007, 673.5999999999997, 456.6000000000001, 673.1999999999997, 445.6000000000001);
  ctx.bezierCurveTo(673.1999999999997, 445.2000000000001, 673.0999999999997, 444.7000000000001, 672.8999999999997, 444.30000000000007);
  ctx.bezierCurveTo(672.0999999999998, 442.30000000000007, 670.0999999999998, 436.80000000000007, 671.5999999999998, 433.20000000000005);
  ctx.bezierCurveTo(672.4999999999998, 431.00000000000006, 675.0999999999998, 430.00000000000006, 677.2999999999998, 430.90000000000003);
  ctx.bezierCurveTo(684.3999999999999, 433.90000000000003, 709.1999999999998, 445.40000000000003, 731.0999999999998, 468.90000000000003);
  ctx.bezierCurveTo(731.1999999999998, 469.00000000000006, 731.2999999999998, 469.1, 731.4999999999998, 469.3);
  ctx.bezierCurveTo(734.4999999999998, 471.8, 772.3999999999997, 502.90000000000003, 780.6999999999998, 512);
  ctx.bezierCurveTo(781.8999999999999, 513.3, 783.8999999999999, 513.8, 785.4999999999998, 513.1);
  ctx.bezierCurveTo(793.2999999999997, 510, 811.3999999999997, 498.90000000000003, 796.3999999999997, 465.5);
  ctx.bezierCurveTo(796.2999999999997, 465.3, 796.1999999999997, 465.1, 796.0999999999998, 464.9);
  ctx.bezierCurveTo(793.9999999999998, 461.79999999999995, 775.9999999999998, 435.59999999999997, 751.8999999999997, 434.2);
  ctx.bezierCurveTo(751.4999999999998, 434.2, 751.1999999999997, 434.09999999999997, 750.7999999999997, 434);
  ctx.bezierCurveTo(744.6999999999997, 431.9, 687.8999999999997, 412.4, 680.7999999999997, 399.1);
  ctx.bezierCurveTo(680.4999999999998, 398.5, 679.9999999999998, 397.90000000000003, 679.3999999999997, 397.5);
  ctx.bezierCurveTo(674.9999999999998, 394.5, 657.8999999999997, 381, 668.3999999999997, 359.1);
  ctx.bezierCurveTo(668.3999999999997, 359.1, 674.3999999999997, 338.1, 707.3999999999997, 367.1);
  ctx.bezierCurveTo(707.3999999999997, 367.1, 772.3999999999997, 424.1, 786.3999999999997, 422.1);
  ctx.bezierCurveTo(786.3999999999997, 422.1, 815.1999999999997, 426.1, 792.6999999999997, 376.70000000000005);
  ctx.bezierCurveTo(792.4999999999997, 376.30000000000007, 792.2999999999997, 376.00000000000006, 791.9999999999997, 375.6);
  ctx.bezierCurveTo(788.1999999999997, 371.3, 759.4999999999997, 339.5, 741.7999999999996, 339.1);
  ctx.bezierCurveTo(741.5999999999996, 339.1, 741.2999999999996, 339.1, 741.0999999999996, 339);
  ctx.lineTo(740.9999999999995, 339);
  ctx.bezierCurveTo(736.1999999999996, 338.1, 736.2999999999995, 331.1, 741.1999999999996, 330.4);
  ctx.bezierCurveTo(741.7999999999996, 330.29999999999995, 742.4999999999995, 330.2, 743.1999999999996, 330.09999999999997);
  ctx.bezierCurveTo(743.3999999999996, 330.09999999999997, 743.4999999999995, 330.09999999999997, 743.5999999999996, 329.99999999999994);
  ctx.bezierCurveTo(747.2999999999996, 329.09999999999997, 795.7999999999996, 316.49999999999994, 799.2999999999996, 297.49999999999994);
  ctx.bezierCurveTo(799.2999999999996, 297.29999999999995, 799.3999999999996, 296.99999999999994, 799.4999999999997, 296.79999999999995);
  ctx.bezierCurveTo(800.3999999999996, 294.49999999999994, 805.1999999999997, 280.49999999999994, 793.8999999999996, 269.59999999999997);
  ctx.bezierCurveTo(793.5999999999997, 269.29999999999995, 793.2999999999996, 268.99999999999994, 793.0999999999997, 268.59999999999997);
  ctx.bezierCurveTo(791.1999999999997, 265.2, 779.0999999999997, 246.09999999999997, 754.3999999999996, 266.99999999999994);
  ctx.bezierCurveTo(754.2999999999996, 266.99999999999994, 754.2999999999996, 267.09999999999997, 754.1999999999996, 267.09999999999997);
  ctx.bezierCurveTo(752.2999999999996, 268.49999999999994, 717.2999999999996, 294.7, 711.6999999999996, 303.29999999999995);
  ctx.bezierCurveTo(711.3999999999996, 303.79999999999995, 710.8999999999996, 304.29999999999995, 710.3999999999996, 304.59999999999997);
  ctx.bezierCurveTo(707.0999999999997, 306.7, 695.3999999999996, 313.29999999999995, 691.0999999999997, 304.9);
  ctx.bezierCurveTo(690.4999999999997, 303.79999999999995, 690.4999999999997, 302.5, 690.9999999999997, 301.29999999999995);
  ctx.bezierCurveTo(692.7999999999996, 296.9, 698.1999999999997, 285.19999999999993, 707.4999999999997, 282.19999999999993);
  ctx.bezierCurveTo(708.0999999999997, 281.99999999999994, 708.5999999999997, 281.69999999999993, 709.0999999999997, 281.29999999999995);
  ctx.bezierCurveTo(714.7999999999997, 276.4, 752.6999999999997, 243.69999999999996, 756.3999999999996, 240.89999999999995);
  ctx.bezierCurveTo(760.3999999999996, 237.89999999999995, 787.3999999999996, 208.89999999999995, 789.3999999999996, 197.89999999999995);
  ctx.bezierCurveTo(789.3999999999996, 197.89999999999995, 794.3999999999996, 173.09999999999994, 769.7999999999996, 173.89999999999995);
  ctx.bezierCurveTo(769.5999999999996, 173.89999999999995, 769.2999999999996, 173.89999999999995, 769.0999999999996, 173.99999999999994);
  ctx.bezierCurveTo(765.1999999999996, 174.79999999999995, 731.1999999999996, 181.69999999999993, 727.4999999999995, 194.89999999999995);
  ctx.bezierCurveTo(727.4999999999995, 194.89999999999995, 698.4999999999995, 251.89999999999995, 694.4999999999995, 254.89999999999995);
  ctx.bezierCurveTo(694.4999999999995, 254.89999999999995, 681.8999999999995, 269.4, 675.7999999999995, 253.69999999999996);
  ctx.bezierCurveTo(675.5999999999995, 253.09999999999997, 675.4999999999995, 252.59999999999997, 675.4999999999995, 251.99999999999997);
  ctx.bezierCurveTo(675.6999999999996, 248.79999999999998, 676.7999999999995, 238.19999999999996, 684.0999999999996, 232.19999999999996);
  ctx.bezierCurveTo(684.3999999999995, 231.99999999999997, 684.5999999999996, 231.79999999999995, 684.7999999999996, 231.49999999999997);
  ctx.bezierCurveTo(688.3, 227.8, 717.7, 187.9, 697.3, 178);
  ctx.closePath();
  ctx.fill();
}

function sun(ctx) {
  let a1 = random(-600, 900);
  let a2 = random(-200, 300);

  translate(a1, a2);
  scale(0.9);

  ctx.beginPath();
  ctx.moveTo(814.5, 364.9);
  ctx.bezierCurveTo(814.5, 364.9, 796.6, 311.29999999999995, 780.1, 301.59999999999997);
  ctx.bezierCurveTo(780.1, 301.59999999999997, 733.3000000000001, 261.7, 722.3000000000001, 258.99999999999994);
  ctx.bezierCurveTo(722.3000000000001, 258.99999999999994, 690.7, 247.99999999999994, 674.2, 252.09999999999994);
  ctx.bezierCurveTo(674.2, 252.09999999999994, 626.1, 256.19999999999993, 596.5, 282.99999999999994);
  ctx.bezierCurveTo(596.5, 282.99999999999994, 552.5, 340.79999999999995, 548.4, 373.79999999999995);
  ctx.bezierCurveTo(548.4, 373.79999999999995, 534, 456.99999999999994, 561.5, 495.49999999999994);
  ctx.bezierCurveTo(561.5, 495.49999999999994, 594.5, 536.8, 635.8, 543.5999999999999);
  ctx.bezierCurveTo(635.8, 543.5999999999999, 669.5, 554.5999999999999, 698.6999999999999, 543.5999999999999);
  ctx.bezierCurveTo(698.6999999999999, 543.5999999999999, 719.5999999999999, 535.3, 737.4999999999999, 538.0999999999999);
  ctx.bezierCurveTo(737.4999999999999, 538.0999999999999, 791.0999999999999, 524.3, 796.5999999999999, 505.0999999999999);
  ctx.bezierCurveTo(796.5999999999999, 505.0999999999999, 822.6999999999999, 462.4999999999999, 821.3999999999999, 443.19999999999993);
  ctx.bezierCurveTo(821.4, 443.3, 824.1, 386.9, 814.5, 364.9);
  ctx.moveTo(556, 177.9);
  ctx.bezierCurveTo(556, 177.9, 532.6, 180.70000000000002, 529.9, 179.3);
  ctx.bezierCurveTo(527.1, 177.9, 506.5, 177.9, 516.1, 191.70000000000002);
  ctx.bezierCurveTo(516.1, 191.70000000000002, 538.1, 234.3, 554.6, 237.10000000000002);
  ctx.bezierCurveTo(554.6, 237.10000000000002, 597.2, 224.70000000000002, 606.9, 226.10000000000002);
  ctx.bezierCurveTo(606.9, 226.10000000000002, 642.6999999999999, 222.00000000000003, 646.8, 220.60000000000002);
  ctx.bezierCurveTo(650.9, 219.20000000000002, 678.4, 216.50000000000003, 686.6999999999999, 217.8);
  ctx.bezierCurveTo(694.9999999999999, 219.20000000000002, 714.1999999999999, 219.20000000000002, 721.0999999999999, 216.4);
  ctx.bezierCurveTo(727.9999999999999, 213.6, 751.3999999999999, 209.5, 759.5999999999999, 209.5);
  ctx.bezierCurveTo(767.8999999999999, 209.5, 794.4999999999999, 212.3, 799.8, 207.4);
  ctx.bezierCurveTo(805, 202.6, 835.1999999999999, 190.20000000000002, 838.6999999999999, 177.8);
  ctx.bezierCurveTo(838.6999999999999, 177.8, 853.1999999999999, 164, 853.1999999999999, 159.9);
  ctx.bezierCurveTo(853, 160, 573.8, 161.4, 556, 177.9);
  ctx.closePath();
  ctx.fill();
}

function x(ctx) {
  let a1 = random(-600, 900);
  let a2 = random(-200, 200);

  translate(a1, a2);
  scale(0.8);

  ctx.beginPath();
  ctx.moveTo(664.3, 154.5);
  ctx.bezierCurveTo(664.3, 154.5, 645, 160.9, 630.8, 219);
  ctx.bezierCurveTo(630.8, 219, 607.5999999999999, 336.3, 601.0999999999999, 341.5);
  ctx.bezierCurveTo(601.0999999999999, 341.5, 597.1999999999999, 362.1, 570.1999999999999, 359.6);
  ctx.bezierCurveTo(570.1999999999999, 359.6, 534.0999999999999, 354.40000000000003, 527.6999999999999, 354.40000000000003);
  ctx.bezierCurveTo(527.6999999999999, 354.40000000000003, 517.4, 351.8, 510.8999999999999, 371.20000000000005);
  ctx.lineTo(501.8999999999999, 397.00000000000006);
  ctx.bezierCurveTo(501.8999999999999, 397.00000000000006, 503.19999999999993, 406.00000000000006, 509.5999999999999, 409.90000000000003);
  ctx.bezierCurveTo(509.5999999999999, 409.90000000000003, 549.5999999999999, 425.40000000000003, 555.9999999999999, 426.70000000000005);
  ctx.bezierCurveTo(555.9999999999999, 426.70000000000005, 566.2999999999998, 433.1, 553.3999999999999, 449.90000000000003);
  ctx.bezierCurveTo(553.3999999999999, 449.90000000000003, 534.0999999999999, 475.70000000000005, 522.4999999999999, 479.6);
  ctx.bezierCurveTo(522.4999999999999, 479.6, 501.89999999999986, 493.8, 506.9999999999999, 510.5);
  ctx.bezierCurveTo(506.9999999999999, 510.5, 512.1999999999999, 549.2, 519.8999999999999, 554.3);
  ctx.bezierCurveTo(519.8999999999999, 554.3, 549.5999999999999, 602, 553.3999999999999, 603.3);
  ctx.bezierCurveTo(553.3999999999999, 603.3, 561.0999999999999, 613.5999999999999, 562.3999999999999, 613.5999999999999);
  ctx.bezierCurveTo(562.3999999999999, 613.5999999999999, 568.7999999999998, 604.5999999999999, 568.7999999999998, 600.6999999999999);
  ctx.bezierCurveTo(568.7999999999998, 600.6999999999999, 570.0999999999998, 568.4999999999999, 568.7999999999998, 563.3);
  ctx.bezierCurveTo(568.7999999999998, 563.3, 573.9999999999999, 532.4, 573.9999999999999, 529.8);
  ctx.bezierCurveTo(573.9999999999999, 529.8, 582.9999999999999, 488.49999999999994, 585.5999999999999, 484.69999999999993);
  ctx.bezierCurveTo(585.5999999999999, 484.69999999999993, 606.1999999999999, 438.29999999999995, 611.3999999999999, 436.99999999999994);
  ctx.bezierCurveTo(611.3999999999999, 436.99999999999994, 646.1999999999998, 395.69999999999993, 668.0999999999999, 396.99999999999994);
  ctx.bezierCurveTo(668.0999999999999, 396.99999999999994, 696.4999999999999, 395.69999999999993, 709.3999999999999, 413.79999999999995);
  ctx.bezierCurveTo(709.3999999999999, 413.79999999999995, 741.5999999999999, 461.49999999999994, 748.0999999999999, 464.09999999999997);
  ctx.bezierCurveTo(748.0999999999999, 464.09999999999997, 768.6999999999999, 485.99999999999994, 782.8999999999999, 489.9);
  ctx.bezierCurveTo(782.8999999999999, 489.9, 815.0999999999999, 501.5, 835.7999999999998, 495.09999999999997);
  ctx.bezierCurveTo(835.7999999999998, 495.09999999999997, 858.9999999999999, 495.09999999999997, 861.5999999999998, 483.49999999999994);
  ctx.bezierCurveTo(861.5999999999998, 483.49999999999994, 870.5999999999998, 470.59999999999997, 855.1999999999998, 466.69999999999993);
  ctx.bezierCurveTo(855.1999999999998, 466.69999999999993, 820.3999999999999, 456.3999999999999, 817.7999999999998, 452.49999999999994);
  ctx.bezierCurveTo(817.7999999999998, 452.49999999999994, 807.4999999999999, 442.19999999999993, 806.1999999999998, 436.99999999999994);
  ctx.bezierCurveTo(806.1999999999998, 436.99999999999994, 804.8999999999999, 413.79999999999995, 804.8999999999999, 409.8999999999999);
  ctx.bezierCurveTo(804.8999999999999, 409.8999999999999, 803.5999999999999, 382.7999999999999, 799.6999999999998, 377.69999999999993);
  ctx.bezierCurveTo(799.6999999999998, 377.69999999999993, 789.3999999999999, 359.5999999999999, 779.0999999999998, 357.0999999999999);
  ctx.bezierCurveTo(779.0999999999998, 357.0999999999999, 750.6999999999998, 348.0999999999999, 731.3999999999997, 351.8999999999999);
  ctx.bezierCurveTo(731.3999999999997, 351.8999999999999, 705.5999999999998, 355.7999999999999, 701.6999999999997, 355.7999999999999);
  ctx.bezierCurveTo(701.6999999999997, 355.7999999999999, 682.3999999999997, 358.3999999999999, 678.4999999999997, 357.0999999999999);
  ctx.bezierCurveTo(678.4999999999997, 357.0999999999999, 668.1999999999997, 355.7999999999999, 664.2999999999996, 349.3999999999999);
  ctx.bezierCurveTo(664.2999999999996, 349.3999999999999, 660.3999999999996, 335.19999999999993, 666.8999999999996, 324.8999999999999);
  ctx.bezierCurveTo(666.8999999999996, 324.8999999999999, 697.7999999999996, 274.5999999999999, 714.5999999999997, 268.19999999999993);
  ctx.bezierCurveTo(714.5999999999997, 268.19999999999993, 728.7999999999997, 256.5999999999999, 728.7999999999997, 251.39999999999992);
  ctx.bezierCurveTo(728.7999999999997, 251.39999999999992, 724.8999999999997, 241.0999999999999, 719.7999999999997, 238.49999999999991);
  ctx.bezierCurveTo(719.7999999999997, 238.49999999999991, 700.4999999999998, 215.29999999999993, 697.8999999999997, 211.39999999999992);
  ctx.bezierCurveTo(697.8999999999997, 211.39999999999992, 683.6999999999997, 184.29999999999993, 683.6999999999997, 180.49999999999991);
  ctx.bezierCurveTo(683.6999999999997, 180.49999999999991, 678.4999999999997, 168.89999999999992, 678.4999999999997, 164.99999999999991);
  ctx.bezierCurveTo(678.5, 164.8, 679.8, 155.8, 664.3, 154.5);
  ctx.closePath();
  ctx.fill();
}

function rodman(ctx) {
  let a1 = random(-400, 1000);
  let a2 = random(-200, 300);

  translate(a1, a2);
  scale(0.5);

  ctx.beginPath();
  ctx.moveTo(464.6, 247.8);
  ctx.bezierCurveTo(464.6, 247.8, 494.20000000000005, 241, 478.20000000000005, 291);
  ctx.bezierCurveTo(478.20000000000005, 291, 464.6, 336.5, 475.90000000000003, 341);
  ctx.bezierCurveTo(475.90000000000003, 341, 482.70000000000005, 370.6, 532.8000000000001, 304.6);
  ctx.bezierCurveTo(532.8000000000001, 304.6, 599.6, 227.10000000000002, 574.2, 210.10000000000002);
  ctx.bezierCurveTo(574.2, 210.10000000000002, 526, 205.40000000000003, 510.1, 190.20000000000002);
  ctx.bezierCurveTo(510.1, 190.20000000000002, 496.5, 177.20000000000002, 514.6, 163.60000000000002);
  ctx.bezierCurveTo(514.6, 163.60000000000002, 544.2, 134.00000000000003, 544.2, 124.90000000000002);
  ctx.bezierCurveTo(544.2, 124.90000000000002, 582.9000000000001, 74.90000000000002, 551, 72.60000000000002);
  ctx.bezierCurveTo(551, 72.60000000000002, 457.7, 134.00000000000003, 421.4, 213.60000000000002);
  ctx.bezierCurveTo(421.4, 213.7, 419.1, 250.1, 464.6, 247.8);
  ctx.moveTo(373.6, 413.8);
  ctx.bezierCurveTo(389.5, 422.90000000000003, 394.1, 493.4, 394.1, 493.4);
  ctx.bezierCurveTo(396.40000000000003, 507, 430.5, 548, 430.5, 548);
  ctx.bezierCurveTo(446.4, 545.7, 453.2, 523, 453.2, 523);
  ctx.bezierCurveTo(455.5, 500.3, 441.8, 450.2, 441.8, 450.2);
  ctx.bezierCurveTo(419.1, 438.8, 423.6, 384.2, 423.6, 384.2);
  ctx.bezierCurveTo(425.90000000000003, 336.4, 403.1, 327.3, 403.1, 327.3);
  ctx.bezierCurveTo(371.3, 315.90000000000003, 321.20000000000005, 368.2, 321.20000000000005, 368.2);
  ctx.bezierCurveTo(278.00000000000006, 434.2, 321.20000000000005, 424.09999999999997, 321.20000000000005, 424.09999999999997);
  ctx.bezierCurveTo(330.4, 409.6, 373.6, 413.8, 373.6, 413.8);
  ctx.moveTo(487.4, 582.2);
  ctx.bezierCurveTo(476, 584.5, 445.7, 602.2, 445.7, 602.2);
  ctx.bezierCurveTo(431.3, 606.2, 426, 618.6, 426, 618.6);
  ctx.bezierCurveTo(412.4, 618.6, 398.7, 655, 398.7, 655);
  ctx.bezierCurveTo(387.3, 659.5, 372.59999999999997, 625.4, 372.59999999999997, 625.4);
  ctx.bezierCurveTo(341.9, 573.1, 337.29999999999995, 625.4, 337.29999999999995, 625.4);
  ctx.lineTo(389.59999999999997, 709.6);
  ctx.bezierCurveTo(407.79999999999995, 739.2, 441.9, 734.6, 441.9, 734.6);
  ctx.bezierCurveTo(466.9, 730.1, 496.09999999999997, 655.4, 496.09999999999997, 655.4);
  ctx.bezierCurveTo(507.09999999999997, 649, 514.6999999999999, 623.1, 514.6999999999999, 623.1);
  ctx.bezierCurveTo(512.4, 616.3000000000001, 521.4999999999999, 602.6, 521.4999999999999, 602.6);
  ctx.bezierCurveTo(519.2, 557.1, 487.4, 582.2, 487.4, 582.2);
  ctx.moveTo(664.8, 589);
  ctx.bezierCurveTo(664.8, 589, 625.1999999999999, 577.6, 625.6999999999999, 548.1);
  ctx.bezierCurveTo(625.6999999999999, 548.1, 591.9999999999999, 486.70000000000005, 596.5999999999999, 466.20000000000005);
  ctx.bezierCurveTo(596.5999999999999, 466.20000000000005, 578.3999999999999, 416.20000000000005, 541.9999999999999, 443.50000000000006);
  ctx.bezierCurveTo(541.9999999999999, 443.50000000000006, 501.0999999999999, 480.30000000000007, 521.4999999999999, 550.6);
  ctx.bezierCurveTo(521.4999999999999, 550.6, 557.8999999999999, 627.7, 639.7999999999998, 639.1);
  ctx.bezierCurveTo(639.7999999999998, 639.1, 783.0999999999999, 666.4, 760.2999999999998, 616.4);
  ctx.bezierCurveTo(760.3, 616.3, 755.7, 591.3, 664.8, 589);
  ctx.moveTo(673.9, 332);
  ctx.bezierCurveTo(673.9, 332, 826.3, 259.2, 828.5999999999999, 222.8);
  ctx.bezierCurveTo(828.5999999999999, 222.8, 760.3999999999999, 147.70000000000002, 746.6999999999999, 147.70000000000002);
  ctx.bezierCurveTo(746.6999999999999, 147.70000000000002, 733.0999999999999, 118.10000000000002, 764.9, 104.50000000000001);
  ctx.bezierCurveTo(764.9, 104.50000000000001, 817.6999999999999, 81.80000000000001, 819.6999999999999, 72.70000000000002);
  ctx.bezierCurveTo(819.6999999999999, 72.70000000000002, 835.4, 38.600000000000016, 808.0999999999999, 34.000000000000014);
  ctx.bezierCurveTo(808.0999999999999, 34.000000000000014, 651.1999999999999, 115.90000000000002, 653.3999999999999, 129.5);
  ctx.bezierCurveTo(653.3999999999999, 129.5, 753.4999999999999, 204.6, 757.9999999999999, 225);
  ctx.bezierCurveTo(757.9999999999999, 225, 623.8, 297.8, 623.8, 313.7);
  ctx.bezierCurveTo(623.8, 313.8, 605.6, 352.4, 673.9, 332);
  ctx.moveTo(987.7, 532.1);
  ctx.bezierCurveTo(987.7, 532.1, 969.5, 507.1, 951.3000000000001, 507.1);
  ctx.bezierCurveTo(951.3000000000001, 507.1, 896.7, 493.5, 878.5000000000001, 488.90000000000003);
  ctx.bezierCurveTo(878.5000000000001, 488.90000000000003, 783.1000000000001, 450.3, 781.9000000000001, 440.00000000000006);
  ctx.bezierCurveTo(781.9000000000001, 440.00000000000006, 783.0000000000001, 377.40000000000003, 805.7, 368.30000000000007);
  ctx.bezierCurveTo(805.7, 368.30000000000007, 819.3000000000001, 316.00000000000006, 773.9000000000001, 320.50000000000006);
  ctx.bezierCurveTo(773.9000000000001, 320.50000000000006, 676.1000000000001, 443.30000000000007, 696.6000000000001, 486.50000000000006);
  ctx.bezierCurveTo(696.6000000000001, 486.50000000000006, 949.1000000000001, 534.3000000000001, 976.4000000000001, 559.3000000000001);
  ctx.bezierCurveTo(976.4, 559.4, 1049.2, 561.7, 987.7, 532.1);
  ctx.moveTo(1167.4, 252.8);
  ctx.bezierCurveTo(1167.4, 252.8, 994.5000000000001, 179.60000000000002, 908.1000000000001, 231.9);
  ctx.bezierCurveTo(908.1000000000001, 231.9, 896.7000000000002, 259.2, 924.0000000000001, 272.8);
  ctx.bezierCurveTo(924.0000000000001, 272.8, 967.2000000000002, 309.2, 978.6000000000001, 327.40000000000003);
  ctx.bezierCurveTo(978.6000000000001, 327.40000000000003, 1037.7, 379.70000000000005, 1040.0000000000002, 386.50000000000006);
  ctx.bezierCurveTo(1040.0000000000002, 386.50000000000006, 1090.0000000000002, 409.20000000000005, 1083.2000000000003, 377.40000000000003);
  ctx.bezierCurveTo(1083.2000000000003, 377.40000000000003, 1079.2000000000003, 321.6, 1056.2000000000003, 313.1);
  ctx.bezierCurveTo(1056.2000000000003, 313.1, 1019.5000000000002, 270.5, 1055.9000000000003, 284.1);
  ctx.bezierCurveTo(1055.9000000000003, 284.1, 1162.8000000000004, 315.90000000000003, 1167.4000000000003, 304.6);
  ctx.bezierCurveTo(1167.4, 304.7, 1197, 266.8, 1167.4, 252.8);
  ctx.closePath();
  ctx.fill();
}

function keyTyped() {
  if (key === 's') {
    saveCanvas(canvas, 'myCanvas', 'png');
  }

  if (key === 'j') {
    saveJSON(json, '9021.json');
  }
}

// function keyTyped() {
//   if (key === 'j') {
//     // selectFolder("Select a folder to process:", "folderSelected");
//     saveJSON(json, '9021.json');
//   }
// }