{"id":820,"date":"2023-02-13T05:42:06","date_gmt":"2023-02-13T05:42:06","guid":{"rendered":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/?page_id=820"},"modified":"2023-04-26T10:42:02","modified_gmt":"2023-04-26T10:42:02","slug":"single-image-colorful-light","status":"publish","type":"page","link":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/single-image-colorful-light\/","title":{"rendered":"Single Image colorful light"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"820\" class=\"elementor elementor-820\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6cbed9d2 elementor-section-full_width elementor-section-content-middle bramha_header mobile_header elementor-section-height-default elementor-section-height-default\" data-id=\"6cbed9d2\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-21eff783\" data-id=\"21eff783\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4ec1dadc elementor-widget elementor-widget-image\" data-id=\"4ec1dadc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/envato\/bramha\/preview\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"40\" src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/Logo.png\" class=\"attachment-full size-full wp-image-36\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-40cce435\" data-id=\"40cce435\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6a5d4720 menu-icon elementor-align-right elementor-widget__width-auto elementor-widget elementor-widget-button\" data-id=\"6a5d4720\" data-element_type=\"widget\" id=\"open_offcanvas_mobile\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\"><\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-409b34b elementor-section-full_width elementor-section-height-full elementor-section-items-stretch elementor-section-height-default\" data-id=\"409b34b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-6a98514a page-left content_main_left elementor-hidden-mobile\" data-id=\"6a98514a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3234eec7 elementor-widget elementor-widget-image\" data-id=\"3234eec7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/envato\/bramha\/preview\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"40\" height=\"160\" src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/desktop-logo.png\" class=\"attachment-full size-full wp-image-508\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2d86e81c menu-icon elementor-widget elementor-widget-button\" data-id=\"2d86e81c\" data-element_type=\"widget\" id=\"open_offcanvas\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\"><\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3632b050 social_icons elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"3632b050\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/elementor\/css\/custom-widget-icon-list.min.css?ver=1676633232\">\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">FB<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">TW<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">IN<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-7fcb65eb content_main_middle slider-content\" data-id=\"7fcb65eb\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d078440 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"d078440\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n    \/*\n  Click and drag to attract\n  Right click to repulse\n  Mouse-wheel click to create a time dilation field\n  Use the Controls to decrease or increase\n  the particle count to tweak performance.\n*\/\n\n+(function(root) {\n  'use strict';\n  var Vector3D = function Vector3D(x, y, z) {\n    this.set(x, y, z);\n  }, v3dp = Vector3D.prototype;\n\n  v3dp.dot2d = function(x, y) {\n    return ((this.x * x) + (this.y * y));\n  };\n\n  v3dp.dot3d = function(x, y, z) {\n    return ((this.x * x) + (this.y * y) + (this.z * z));\n  };\n\n  v3dp.set = function(x, y, z) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    \n    return this;\n  };\n\n  v3dp.add = function(other) {\n    if(typeof other === \"number\") {\n      this.x += other, this.y += other, this.z += other;\n      return this;\n    }\n    this.x += other.x, this.y += other.y, this.z += other.z;\n    return this;\n  };\n\n  v3dp.sub = function(other) {\n    if(typeof other === \"number\") {\n      this.x -= other, this.y -= other, this.z -= other;\n      return this;\n    }\n    this.x -= other.x, this.y -= other.y, this.z -= other.z;\n    return this;\n  };\n\n  v3dp.mul = function(other) {\n    if(typeof other === \"number\") {\n      this.x *= other, this.y *= other, this.z *= other;\n      return this;\n    }\n    this.x *= other.x, this.y *= other.y, this.z *= other.z;\n    return this;\n  };\n\n  v3dp.div = function(other) {\n    if(typeof other === \"number\") {\n      this.x \/= other, this.y \/= other, this.z \/= other;\n      return this;\n    }\n    this.x \/= other.x, this.y \/= other.y, this.z \/= other.z;\n    return this;\n  };\n\n  v3dp.move = function(dest) {\n    if(dest instanceof Vector3D) {\n      dest.x = this.x, dest.y = this.y, dest.z = this.z;\n    }\n    return this;\n  };\n\n  v3dp.within2d = function(bounds) {\n    return (this.x >= 0 && this.x < bounds.x && this.y >= 0 && this.y < bounds.y);\n  };\n\n  v3dp.wrap2d = function(bounds) {\n    if(this.x > bounds.x) {\n      this.x = 0;\n      return true;\n    }\n\n    if(this.x < 0) {\n      this.x = bounds.x;\n      return true;\n    }\n\n    if(this.y > bounds.y) {\n      this.y = 0;\n      return true;\n    }\n\n    if(this.y < 0) {\n      this.y = bounds.y;\n      return true;\n    }\n  };\n\n  v3dp.eq = function(other) {\n    return (other instanceof Vector3D) && this.x === other.x && this.y === other.y && this.z === other.z;\n  };\n  \n  v3dp.distance = function(other) {\n    var dx = (this.x - other.x),\n        dy = (this.y - other.y);\n    \n    return Math.sqrt(dx * dx + dy * dy);\n  };\n  \n  v3dp.clone = function() {\n    return new Vector3D(this.x, this.y, this.z);\n  };\n\n  root.Vector3D = Vector3D;\n}(window));\n\n+(function(root) {\n  'use strict';\n  \/\/ a simple non-optimized Perlin Simplex Noise. I wrote this\n  \/\/ to understand Simplex Noise a bit more.\n\n  \/\/ fully self-contained state, so you can influence the outcome\n  \/\/ of each simplex noise state\n  var Perlin = function Perlin() {\n    this.grad3 = [\n      new Vector3D(1,1,0), new Vector3D(-1,1,0), new Vector3D(1,-1,0), new Vector3D(-1,-1,0),\n      new Vector3D(1,0,1), new Vector3D(-1,0,1), new Vector3D(1,0,-1), new Vector3D(-1,0,-1),\n      new Vector3D(0,1,1), new Vector3D(0,-1,1), new Vector3D(0,1,-1), new Vector3D(0,-1,-1)\n    ];\n\n    this.p = [\n      0x97, 0xa0, 0x89, 0x5b, 0x5a, 0x0f, 0x83, 0x0d, 0xc9, 0x5f, 0x60, 0x35, 0xc2, 0xe9, 0x07, 0xe1, \n      0x8c, 0x24, 0x67, 0x1e, 0x45, 0x8e, 0x08, 0x63, 0x25, 0xf0, 0x15, 0x0a, 0x17, 0xbe, 0x06, 0x94, \n      0xf7, 0x78, 0xea, 0x4b, 0x00, 0x1a, 0xc5, 0x3e, 0x5e, 0xfc, 0xdb, 0xcb, 0x75, 0x23, 0x0b, 0x20, \n      0x39, 0xb1, 0x21, 0x58, 0xed, 0x95, 0x38, 0x57, 0xae, 0x14, 0x7d, 0x88, 0xab, 0xa8, 0x44, 0xaf, \n      0x4a, 0xa5, 0x47, 0x86, 0x8b, 0x30, 0x1b, 0xa6, 0x4d, 0x92, 0x9e, 0xe7, 0x53, 0x6f, 0xe5, 0x7a, \n      0x3c, 0xd3, 0x85, 0xe6, 0xdc, 0x69, 0x5c, 0x29, 0x37, 0x2e, 0xf5, 0x28, 0xf4, 0x66, 0x8f, 0x36, \n      0x41, 0x19, 0x3f, 0xa1, 0x01, 0xd8, 0x50, 0x49, 0xd1, 0x4c, 0x84, 0xbb, 0xd0, 0x59, 0x12, 0xa9, \n      0xc8, 0xc4, 0x87, 0x82, 0x74, 0xbc, 0x9f, 0x56, 0xa4, 0x64, 0x6d, 0xc6, 0xad, 0xba, 0x03, 0x40, \n      0x34, 0xd9, 0xe2, 0xfa, 0x7c, 0x7b, 0x05, 0xca, 0x26, 0x93, 0x76, 0x7e, 0xff, 0x52, 0x55, 0xd4, \n      0xcf, 0xce, 0x3b, 0xe3, 0x2f, 0x10, 0x3a, 0x11, 0xb6, 0xbd, 0x1c, 0x2a, 0xdf, 0xb7, 0xaa, 0xd5, \n      0x77, 0xf8, 0x98, 0x02, 0x2c, 0x9a, 0xa3, 0x46, 0xdd, 0x99, 0x65, 0x9b, 0xa7, 0x2b, 0xac, 0x09, \n      0x81, 0x16, 0x27, 0xfd, 0x13, 0x62, 0x6c, 0x6e, 0x4f, 0x71, 0xe0, 0xe8, 0xb2, 0xb9, 0x70, 0x68, \n      0xda, 0xf6, 0x61, 0xe4, 0xfb, 0x22, 0xf2, 0xc1, 0xee, 0xd2, 0x90, 0x0c, 0xbf, 0xb3, 0xa2, 0xf1, \n      0x51, 0x33, 0x91, 0xeb, 0xf9, 0x0e, 0xef, 0x6b, 0x31, 0xc0, 0xd6, 0x1f, 0xb5, 0xc7, 0x6a, 0x9d, \n      0xb8, 0x54, 0xcc, 0xb0, 0x73, 0x79, 0x32, 0x2d, 0x7f, 0x04, 0x96, 0xfe, 0x8a, 0xec, 0xcd, 0x5d, \n      0xde, 0x72, 0x43, 0x1d, 0x18, 0x48, 0xf3, 0x8d, 0x80, 0xc3, 0x4e, 0x42, 0xd7, 0x3d, 0x9c, 0xb4\n    ];\n\n    this.permutation = new Array(512);\n    this.gradP       = new Array(512);\n\n    \/\/ skew and unskew factors for 2D or 3D, can be modified per state!\n    this.F2 = (0.5 * (Math.sqrt(3) - 1));\n    this.G2 = ((3 - Math.sqrt(3)) \/ 6);\n    this.F3 = (1 \/ 3);\n    this.G3 = (1 \/ 6);\n  }, pp = Perlin.prototype;\n\n  pp.init = function(prng) {\n    if(typeof prng !== \"function\") {\n      throw new TypeError(\"prng needs to be a function returning an int between 0 and 255\");\n    }\n\n    for(var i = 0; i < 400; i += 1) {\n      var randval = (this.p[i] ^ prng());\n      this.permutation[i] = this.permutation[i + 256] = randval;\n      this.gradP[i] = this.gradP[i + 256] = this.grad3[randval % this.grad3.length];\n    }\n  };\n\n  \/\/ I removed the pp.simplex2d function, because I don't need it in this project\n  \/\/ pp.simplex2d = function(x, y) {};\n\n  pp.simplex3d = function(x, y, z) {\n    var n0, n1, n2, n3, i1, j1, k1, i2, j2, k2,\n        x1, y1, z1, x2, y2, z2, x3, y3, z3,\n        gi0, gi1, gi2, gi3, t0, t1, t2, t3,\n        s = ((x + y + z) * this.F3),\n        i = Math.floor(x + s), j = Math.floor(y + s), k = Math.floor(z + s),\n        t = ((i + j + k) * this.G3),\n        x0 = (x - i + t), y0 = (y - j + t), z0 = (z - k + t);\n\n    if(x0 >= y0) {\n      if(y0 >= z0)      { \n        i1=1; j1=0; k1=0; i2=1; j2=1; k2=0; \n      } else if(x0 >= z0) { \n        i1=1; j1=0; k1=0; i2=1; j2=0; k2=1; \n      } else { \n        i1=0; j1=0; k1=1; i2=1; j2=0; k2=1; \n      }\n    } else {\n      if(y0 < z0) { \n        i1=0; j1=0; k1=1; i2=0; j2=1; k2=1; \n      } else if(x0 < z0) { \n        i1=0; j1=1; k1=0; i2=0; j2=1; k2=1; \n      } else { \n        i1=0; j1=1; k1=0; i2=1; j2=1; k2=0; \n      }\n    }\n\n    x1 = (x0 - i1 + this.G3), y1 = (y0 - j1 + this.G3), z1 = (z0 - k1 + this.G3);\n    x2 = (x0 - i2 + 2 * this.G3), y2 = (y0 - j2 + 2 * this.G3), z2 = (z0 - k2 + 2 * this.G3);\n    x3 = (x0 - 1 + 3 * this.G3), y3 = (y0 - 1 + 3 * this.G3), z3 = (z0 - 1 + 3 * this.G3);\n\n    i &= 255, j &= 255, k &= 255;\n\n    gi0 = this.gradP[i + this.permutation[j + this.permutation[k]]];\n    gi1 = this.gradP[i + i1 + this.permutation[j + j1 + this.permutation[k + k1]]];\n    gi2 = this.gradP[i + i2 + this.permutation[j + j2 + this.permutation[k + k2]]];\n    gi3 = this.gradP[i + 1 + this.permutation[j + 1 + this.permutation[k + 1]]];\n\n    t0 = (0.6 - x0 * x0 - y0 * y0 - z0 * z0);\n    t1 = (0.6 - x1 * x1 - y1 * y1 - z1 * z1);\n    t2 = (0.6 - x2 * x2 - y2 * y2 - z2 * z2);\n    t3 = (0.6 - x3 * x3 - y3 * y3 - z3 * z3);\n    n0 = (t0 < 0 ? 0 : (t0 *= t0, t0 * t0 * gi0.dot3d(x0, y0, z0)));\n    n1 = (t1 < 0 ? 0 : (t1 *= t1, t1 * t1 * gi1.dot3d(x1, y1, z1)));\n    n2 = (t2 < 0 ? 0 : (t2 *= t2, t2 * t2 * gi2.dot3d(x2, y2, z2)));\n    n3 = (t3 < 0 ? 0 : (t3 *= t3, t3 * t3 * gi3.dot3d(x3, y3, z3)));\n\n    return (32 * (n0 + n1 + n2 + n3));\n  };\n\n  root.Perlin = Perlin;\n}(window));\n\n;(function(root) {\n  'use strict';\n\n  var MouseMonitor = function(element) {\n    this.position = new Vector3D(0, 0, 0);\n    this.state    = {left: false, middle: false, right: false};\n    this.element  = element;\n    \n    var that = this;\n    element.addEventListener('mousemove', function(event) {\n      var dot, eventDoc, doc, body, pageX, pageY;\n      event = event || window.event;\n      if (event.pageX == null && event.clientX != null) {\n        eventDoc = (event.target && event.target.ownerDocument) || document;\n        doc = eventDoc.documentElement;\n        body = eventDoc.body;\n        event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n        event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0 );\n      }\n\n      that.position.x = event.pageX;\n      that.position.y = event.pageY;\n    });\n\n    element.addEventListener('contextmenu', function(event) {\n      return event.preventDefault();\n    });\n    \n    element.addEventListener('mousedown', function(event) {\n      if(event.which === 1) that.state.left = true;\n      if(event.which === 2) that.state.middle = true;\n      if(event.which === 3) that.state.right = true;\n      \n      return event.preventDefault();\n    });\n\n    element.addEventListener('mouseup', function(event) {\n      that.state.left = that.state.middle = that.state.right = false;\n      \n      return event.preventDefault();\n    });\n  };\n  \n  root.MouseMonitor = MouseMonitor;\n}(window));\n\n+(function(root) {\n  'use strict';\n  \n  var Particle = function Particle(generator, bounds, rctx, mon) {\n    this.p = new Vector3D(); \/\/ position\n    this.t = new Vector3D(); \/\/ trail to\n    this.v = new Vector3D(); \/\/ velocity\n    this.g = generator; \/\/ simplex noise generator\n    this.b = bounds;    \/\/ window bounds for wrapping\n    this.r = rctx;      \/\/ random context\n    this.m = mon;       \/\/ mouse position monitor\n    \n    this.reset();\n  }, pp = Particle.prototype;\n\n  pp.reset = function() {\n    \/\/ new random position\n    this.p.x = this.t.x = Math.floor(this.r.random() * this.b.x);\n    this.p.y = this.t.y = Math.floor(this.r.random() * this.b.y);\n    \n    \/\/ reset velocity\n    this.v.set(1, 1, 0);\n    \n    \/\/ iteration and life\n    this.i = 0; \n    this.l = this.r.random(1000, 10000); \/\/ life time before particle respawns\n  };\n\n  pp.step = function() {\n    if(this.i++ > this.l) {\n      this.reset();\n    }\n    \n    var xx = (this.p.x \/ 200),\n        yy = (this.p.y \/ 200),\n        zz = (Date.now() \/ 5000),\n        a  = (this.r.random() * Math.Tau),\n        rnd= (this.r.random()  \/ 4);\n\n    \/\/ calculate the new velocity based on the noise\n    \/\/ random velocity in a random direction\n    this.v.x += (rnd * Math.sin(a) + this.g.simplex3d(xx, yy, -zz)); \/\/ sin or cos, no matter\n    this.v.y += (rnd * Math.cos(a) + this.g.simplex3d(xx, yy, zz));  \/\/ opposite zz's matters\n    \n    if(this.m.state.left) {\n      \/\/ add a difference between mouse pos and particle pos (a fraction of it) to the velocity.\n      this.v.add(this.m.position.clone().sub(this.p).mul(.00085));\n    }\n    \n    \/\/ repulse the particles if the right mouse button is down and the distance between\n    \/\/ the mouse and particle is below an arbitrary value between 200 and 250.\n    if(this.m.state.right && this.p.distance(this.m.position) < this.r.random(200, 250)) {\n      this.v.add(this.p.clone().sub(this.m.position).mul(.02));\n    }\n    \n    \/\/ time dilation field, stuff moves at 10% here, depending on distance\n    if(this.m.state.middle) {\n      var d = this.p.distance(this.m.position),\n          l = this.r.random(200, 250);\n      \n      if(d < l) {\n        this.v.mul(d \/ l);\n      }\n    }\n    \n    \/\/ keep a copy of the current position, for a nice line between then and now and add velocity\n    this.p.move(this.t).add(this.v.mul(.94)); \/\/ slow down the velocity slightly\n\n    \/\/ wrap around the edges\n    if(this.p.wrap2d(this.b)) {\n      this.p.move(this.t);\n    }\n  };\n\n  \/\/ plot the line, but do not stroke yet.\n  pp.render = function(context) {\n    context.moveTo(this.t.x, this.t.y);\n    context.lineTo(this.p.x, this.p.y);\n  };\n\n  root.Particle = Particle;\n}(window));\n\nwindow.addEventListener('load', function() {\n  var rctx = new SmallPRNG(+new Date()), \/\/ random generator, see ref\n      p = new Perlin(), \/\/ simplex noise generator\n      canvas = document.getElementById(\"swarm\"),\n      context = canvas.getContext(\"2d\"),\n      stats = new Stats(),\n      monitor = new MouseMonitor(canvas),\n      gui = new dat.GUI(),\n      hue = 0, particles = [], resize,\n      width, height, bounds = new Vector3D(0, 0, 0),\n      settings = {\n        particleNum: 5000,\n        fadeOverlay: true,\n        rotateColor: true,\n        staticColor: {r: 0, g: 75, b: 50},\n        staticColorString: 'rgba(0, 75, 50, 0.55)'\n      };\n\n  stats.setMode(0); \/\/ Start off with FPS mode\n\n  \/\/ Place the statistics at the bottom right.\n  stats.domElement.style.position = 'absolute';\n  stats.domElement.style.right = '5px';\n  stats.domElement.style.bottom = '5px';\n\n  document.body.appendChild(stats.domElement);\n  \n  \/\/ dat.gui stuff, 2 folders with a few properties\n  var f1 = gui.addFolder('Particles'),\n      f2 = gui.addFolder('Colors');\n  \n  f1.add(settings, 'particleNum', 1000, 15000).step(10).name(\"Particles\").onChange(function() {\n    if(settings.particleNum < particles.length) {\n      var toDelete = (particles.length - settings.particleNum);\n      particles.splice(particles.length - toDelete, toDelete);\n    } else {\n      for(var i = particles.length; i < settings.particleNum; i += 1) {\n        particles.push(new Particle(p, bounds, rctx, monitor));\n      }\n    }\n  });\n  \n  f2.add(settings, 'fadeOverlay').name(\"Fade Clear\").onChange(function() {\n    if(settings.fadeOverlay) {\n      resize();\n    }\n  });\n  \n  f2.add(settings, 'rotateColor').name(\"Rotate Color\");\n  f2.addColor(settings, 'staticColor').name(\"Static Color\").onChange(function() {\n    settings.staticColorString = 'rgba(' + \n      Math.floor(settings.staticColor.r) + ', ' + \n      Math.floor(settings.staticColor.g) + ', ' + \n      Math.floor(settings.staticColor.b) + ', ' + .55 + ')';\n  });\n  \n  f1.open();\n  f2.open();\n  gui.close();\n  \n  \/\/ seed perlin with random bytes from SmallPRNG\n  p.init(function() {\n    \/\/ called for each permutation (256 times)\n    return rctx.random(0, 255);\n  });\n\n  resize = function() {\n    \/\/ resize the canvas\n    canvas.width  = width  = bounds.x = window.innerWidth;\n    canvas.height = height = bounds.y = window.innerHeight;\n    \n    \/\/ remove this and see weird gorgeous stuffs, the history of particles.\n    context.fillStyle = '#ffffff';\n    context.fillRect(0, 0, width, height);\n  }; resize();\n\n  window.addEventListener('resize', resize); \n\n  \/\/ generate a few particles\n  for(var i = 0; i < settings.particleNum; i += 1) {\n    particles.push(new Particle(p, bounds, rctx, monitor));\n  }\n  \n  +(function render() {\n    requestAnimFrame(render);\n\n    stats.begin();\n      context.beginPath();\n        \/\/ render each particle and trail\n        for(var i = 0; i < particles.length; i += 1) {\n          particles[i].step(), particles[i].render(context);\n        }\n\n        context.globalCompositeOperation = 'source-over';\n        if(settings.fadeOverlay) {\n          context.fillStyle = 'rgba(0, 0, 0, .085)';\n        } else {\n          context.fillStyle = 'rgba(0, 0, 0, 1)';\n        }\n        context.fillRect(0, 0, width, height);\n\n        context.globalCompositeOperation = 'lighter';\n        if(settings.rotateColor) {\n          context.strokeStyle = 'hsla(' + hue + ', 75%, 50%, .55)';\n        } else {\n          context.strokeStyle = settings.staticColorString;\n        }\n        context.stroke();\n      context.closePath();\n    \n    stats.end();\n    \n    hue = ((hue + .5) % 360);\n  }());\n});\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-98a73a5 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"98a73a5\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n\/**\nSmallPRNG library for JavaScript. Not special, \nnot optimized, not perfect. It produces pseudo-\nrandom numbers by manipulating a context which \nwas initialized with a seed. \n\nMIT licensed, use wherever you like, but a link\nback to my CodePen (ImagineProgramming) or website\nis appreciated (http:\/\/www.imagine-programming.com)\n\nBased on:\nhttp:\/\/burtleburtle.net\/bob\/rand\/smallprng.html\n*\/\n\n(function(target, name) {\n\/\/ maximum randval for .random([max\/min [, max]])\nvar RMAX = 0x7FFFFFFF;\n\nvar floor = Math.floor,\nabs = Math.abs;\n\n\/\/ 32-bits rotate\nvar rot = function(x, k) {\nreturn (((x << k) & 0xffffffff) | (x >>> (32 - k)))>>>0;\n};\n\n\/\/ constructor for the context\nvar SmallPRNG = function(seed) {\nthis.a = 0xf1ea5eed;\nthis.b = seed;\nthis.c = seed;\nthis.d = seed;\nthis.s = 0;\n};\n\n\/\/ reseed the context\nSmallPRNG.prototype.seed = function(seed) {\nthis.a = 0xf1ea5eed;\nthis.b = seed;\nthis.c = seed;\nthis.d = seed;\nthis.s = 0;\n};\n\n\/\/ reseed the context b, c and d fields\nSmallPRNG.prototype.seedAll = function(b, c, d) {\nthis.a = 0xf1ea5eed;\nthis.b = b;\nthis.c = c;\nthis.d = d;\nthis.s = 0;\n};\n\n\/\/ get the next randval in the ctx\nSmallPRNG.prototype.randval = function() {\n\/\/ notice the >>>0, which is to get an unsigned integer.\nvar e  = ((this.a - rot(this.b, 27)) & 0xffffffff)>>>0;\nthis.a = ((this.b ^ rot(this.c, 17)) & 0xffffffff)>>>0;\nthis.b = ((this.c + this.d) & 0xffffffff)>>>0;\nthis.c = ((this.d + e) & 0xffffffff)>>>0;\nthis.d = ((e + this.a) & 0xffffffff)>>>0;\nthis.s++;\nreturn this.d;\n};\n\n\/\/ step `times' times in the CTX\nSmallPRNG.prototype.step = function(times) {\ntimes = (typeof(times) === \"number\" ? times : 1);\nif(times === 0) {\ntimes = 1;\n}\n\nfor(var i = 0; i < times; i++) {\nvar e  = ((this.a - rot(this.b, 27)) & 0xffffffff)>>>0;\nthis.a = ((this.b ^ rot(this.c, 17)) & 0xffffffff)>>>0;\nthis.b = ((this.c + this.d) & 0xffffffff)>>>0;\nthis.c = ((this.d + e) & 0xffffffff)>>>0;\nthis.d = ((e + this.a) & 0xffffffff)>>>0;\nthis.s++;\n}\n};\n\nSmallPRNG.prototype.random = function() {\nvar r = ((this.randval() % RMAX) \/ RMAX);\nswitch(arguments.length) {\n\/\/ zero arguments, return the 0-1 random factor\ncase 0: {\nreturn r;\n} break;\n\n\/\/ 1 argument (max val), return random between 1 and max\ncase 1: {\nvar u = arguments[0];\nif(u < 1) {\nconsole.log(\"upper limit invalid\");\nreturn null;\n}\n\nreturn (floor(r * u) + 1);\n\n} break;\n\n\/\/ 2 arguments (min, max val), return random between min and max\ncase 2: {\nvar l = arguments[0];\nvar u = arguments[1];\n\nif(l >= u) {\nconsole.log(\"upper limit invalid\");\nreturn null;\n}\n\nreturn (floor(r * (u - l + 1)) + l);\n} break;\n\ndefault: {\nconsole.log(\"invalid amount of arguments\");\n} break;\n}\n\nreturn null;\n};\n\ntarget[name] = SmallPRNG;\n}(window, \"SmallPRNG\"));\n\n\/*\njQuery was only used to set up a quick\ninterface. Don't be mad :(\n\nThis code is not required, use the lib\nabove if you really really want to use\nthis junk.\n\nmainPen is used to detect the showcase pen,\nfuture pens might refer to this one and they\nshould not execute this code.\n*\/\n\nvar mainPen = document.getElementById(\"main-pen\");\nif(mainPen) {\n$(function() {\nvar rctx = new SmallPRNG(1337);\nvar $seedField = $('input[name=\"seed\"]');\nvar $timeSeed = $('input[name=\"time\"]');\nvar $min = $('input[name=\"min\"]');\nvar $max = $('input[name=\"max\"]');\nvar $rval = $('input[name=\"rval\"]');\nvar $rmax = $('input[name=\"rmax\"]');\nvar $rmm = $('input[name=\"rmm\"]');\nvar $stp = $('#stepper');\n\n$timeSeed.click(function() {\nvar time = (new Date()).getTime();\n$seedField.val(time);\nrctx = new SmallPRNG(+time);\nreturn false;\n});\n\n$seedField.change(function() {\nrctx = new SmallPRNG(+$(this).val());\nreturn false;\n});\n\nvar dumpCTX = function(r) {\nif(r) {\n$(\"#rr\").text(r);\n}\n$(\"#ra\").text(rctx.a);\n$(\"#rb\").text(rctx.b);\n$(\"#rc\").text(rctx.c);\n$(\"#rd\").text(rctx.d);\n$(\"#rs\").text(rctx.s);\n};\n\n$rval.click(function() {\nvar r = rctx.randval();\ndumpCTX(r);\nreturn false;\n});\n\n$rmax.click(function() {\nvar max = +$max.val();\nvar r = rctx.random(max);\ndumpCTX(r);\nreturn false;\n});\n\n$rmm.click(function() {\nvar min = +$min.val();\nvar max = +$max.val();\nvar r = rctx.random(min, max);\ndumpCTX(r);\nreturn false;\n});\n\n$stp.click(function() {\nrctx.step();\ndumpCTX();\nreturn false;\n});\n\n$rval.click();\n});  \n}\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eeae1b9 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"eeae1b9\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\nthis.Element&&Element.prototype.attachEvent&&!Element.prototype.addEventListener&&function(){function t(t,n){Window.prototype[t]=HTMLDocument.prototype[t]=Element.prototype[t]=n}function n(){n.interval&&document.body&&(n.interval=clearInterval(n.interval),document.dispatchEvent(new CustomEvent(\"DOMContentLoaded\")))}t(\"addEventListener\",function(t,n){var e=this,r=e.addEventListener.listeners=e.addEventListener.listeners||{},a=r[t]=r[t]||[];a.length||e.attachEvent(\"on\"+t,a.event=function(t){var n=e.document&&e.document.documentElement||e.documentElement||{scrollLeft:0,scrollTop:0};t.currentTarget=e,t.pageX=t.clientX+n.scrollLeft,t.pageY=t.clientY+n.scrollTop,t.preventDefault=function(){t.returnValue=!1},t.relatedTarget=t.fromElement||null,t.stopImmediatePropagation=function(){u=!1,t.cancelBubble=!0},t.stopPropagation=function(){t.cancelBubble=!0},t.target=t.srcElement||e,t.timeStamp=+new Date;for(var r,o=0,i=[].concat(a),u=!0;u&&(r=i[o]);++o)for(var c,s=0;c=a[s];++s)if(c==r){c.call(e,t);break}}),a.push(n)}),t(\"removeEventListener\",function(t,n){for(var e,r=this,a=r.addEventListener.listeners=r.addEventListener.listeners||{},o=a[t]=a[t]||[],i=o.length-1;e=o[i];--i)if(e==n){o.splice(i,1);break}!o.length&&o.event&&r.detachEvent(\"on\"+t,o.event)}),t(\"dispatchEvent\",function(t){var n=this,e=t.type,r=n.addEventListener.listeners=n.addEventListener.listeners||{},a=r[e]=r[e]||[];try{return n.fireEvent(\"on\"+e,t)}catch(o){return void(a.event&&a.event(t))}}),Object.defineProperty(Window.prototype,\"CustomEvent\",{get:function(){var t=this;return function(n,e){var r,a=t.document.createEventObject();a.type=n;for(r in e)\"cancelable\"==r?a.returnValue=!e.cancelable:\"bubbles\"==r?a.cancelBubble=!e.bubbles:\"detail\"==r&&(a.detail=e.detail);return a}}}),n.interval=setInterval(n,1),window.addEventListener(\"load\",n)}(),!this.CustomEvent&&function(){window.CustomEvent=function(t,n){var e;n=n||{bubbles:!1,cancelable:!1,detail:void 0};try{e=document.createEvent(\"CustomEvent\"),e.initCustomEvent(t,n.bubbles,n.cancelable,n.detail)}catch(r){e=document.createEvent(\"Event\"),e.initEvent(t,n.bubbles,n.cancelable),e.detail=n.detail}return e}}(),function(){\"use strict\";window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3\/60)}}(),\"create\"in Object&&\"function\"==typeof Object.create||(Object.create=function(){var t=function(){};return function(n){if(arguments.length>1)throw Error(\"Second argument not supported\");if(\"object\"!=typeof n)throw TypeError(\"Argument must be an object\");t.prototype=n;var e=new t;return t.prototype=null,e}}())}(),function(){\"use strict\";function t(t,n){return n.prototype=Object.create(t.prototype),n.parent=t,n.prototype.constructor=n,n}\"extend\"in Function.prototype&&\"function\"==typeof Function.prototype.extend||(Function.prototype.extend=function(n){return t(this,n)})}(),function(t){\"use strict\";t.Easing={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}}(window),function(t){\"use strict\";\"Math\"in t||(t.Math={}),\"Util\"in t||(t.Util={});var n=t.Math,e=t.Util;n.Tau=2*n.PI,n.map=function(t,n,e,r,a){return(t-n)*(a-r)\/(e-n)+r},n.dist=function(t,n,e,r){var a=t-e,o=n-r;return Math.sqrt(a*a+o*o)},n.lineIntersect=function(t,n,e,r,a,o,i,u){if(!(that instanceof PointLine))return null;var c,s,l,d,f,m;return c=e-t,s=r-n,l=i-a,d=u-o,f=(-s*(t-a)+c*(n-o))\/(-l*s+c*d),m=(l*(n-o)-d*(t-a))\/(-l*s+c*d),f>=0&&1>=f&&m>=0&&1>=m?{x:Math.floor(t+m*c),y:Math.floor(n+m*s)}:null},n.rad=function(t){return t*(Math.PI\/180)},n.deg=function(t){return t*(180\/Math.PI)},n.pointOnCircle=function(t,e,r,a){var o=t+r*Math.cos(n.rad(a)),i=e+r*Math.sin(n.rad(a));return{x:o,y:i}},n.lineProgress=function(t,n,e,r,a){return{x:t+(e-t)*a,y:n+(r-n)*a}},n.randInt=function(t,n){return Math.floor(Math.random()*(n-t+1))+t},n.mrandInt=function(t){return Math.floor(Math.random()*t)},n.randFloat=function(t,n){return Math.random()*(n-t+1)+t},n.mrandFloat=function(t){return Math.random()*t},n.randSign=function(){return Math.random()>.5?-1:1},n.scale=function(t,n,e,r){var a,o,i;return t>e&&(a=e\/t,o=e,i=a*n),n>r&&(a=r\/n,o=a*t,i=r),{w:Math.floor(o),h:Math.floor(i)}},e.easer=function(t,n,e){var r=Date.now()-n,a=r\/e,o=t(a);return r>=e&&(o=1),o}}(window),function(t){\"use strict\";var n=function(t){return 2!==t.length?t+t:t},e=\/\\#([0-9a-f]{1,2})([0-9a-f]{1,2})([0-9a-f]{1,2})\/i,r=function(t,n,e,r){r=r||1,this.r=t,this.g=n,this.b=e,this.a=r};r.prototype.toString=function(){return\"rgba(\"+this.r+\", \"+this.g+\", \"+this.b+\", \"+this.a+\")\"},r.fromHex=function(t){if(\"string\"!=typeof t)throw new TypeError(\"hexadecimal color must be a string\");if(4!==t.length&&7!==t.length)throw new TypeError(\"invalid hexadecimal format\");var a=new r,o=t.match(e);if(!o)throw new TypeError(\"invalid hexadecimal format\");return a.r=parseInt(n(o[1]),16),a.g=parseInt(n(o[2]),16),a.b=parseInt(n(o[3]),16),a.a=1,a},r.random=function(t,n){return new r(Math.randInt(t,n),Math.randInt(t,n),Math.randInt(t,n),1)},r.randomEx=function(t){return new r(Math.randInt(t.rmin,t.rmax),Math.randInt(t.gmin,t.gmax),Math.randInt(t.bmin,t.bmax),1)};var a=function(t,n,e){this.r=t,this.g=n,this.b=e};a.prototype.toString=function(){return\"rgb(\"+this.r+\", \"+this.g+\", \"+this.b+\")\"},a.fromHex=function(t){if(\"string\"!=typeof t)throw new TypeError(\"hexadecimal color must be a string\");if(4!==t.length&&7!==t.length)throw new TypeError(\"invalid hexadecimal format\");var r=new a,o=t.match(e);if(!o)throw new TypeError(\"invalid hexadecimal format\");return r.r=parseInt(n(o[1]),16),r.g=parseInt(n(o[2]),16),r.b=parseInt(n(o[3]),16),r},a.random=function(t,n){return new a(Math.randInt(t,n),Math.randInt(t,n),Math.randInt(t,n))},a.randomEx=function(t){return new a(Math.randInt(t.rmin,t.rmax),Math.randInt(t.gmin,t.gmax),Math.randInt(t.bmin,t.bmax))},t.RGBA=r,t.RGB=a}(window);\n\/\/# sourceMappingURL=codepen-utilities.min.js.map\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-acaf706 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"acaf706\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n    \/**\n * dat-gui JavaScript Controller Library\n * http:\/\/code.google.com\/p\/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http:\/\/www.apache.org\/licenses\/LICENSE-2.0\n *\/\nvar dat=dat||{};dat.gui=dat.gui||{};dat.utils=dat.utils||{};dat.controllers=dat.controllers||{};dat.dom=dat.dom||{};dat.color=dat.color||{};dat.utils.css=function(){return{load:function(f,a){a=a||document;var d=a.createElement(\"link\");d.type=\"text\/css\";d.rel=\"stylesheet\";d.href=f;a.getElementsByTagName(\"head\")[0].appendChild(d)},inject:function(f,a){a=a||document;var d=document.createElement(\"style\");d.type=\"text\/css\";d.innerHTML=f;a.getElementsByTagName(\"head\")[0].appendChild(d)}}}();\ndat.utils.common=function(){var f=Array.prototype.forEach,a=Array.prototype.slice;return{BREAK:{},extend:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(a[c])||(d[c]=a[c])},this);return d},defaults:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(d[c])&&(d[c]=a[c])},this);return d},compose:function(){var d=a.call(arguments);return function(){for(var e=a.call(arguments),c=d.length-1;0<=c;c--)e=[d[c].apply(this,e)];return e[0]}},\neach:function(a,e,c){if(a)if(f&&a.forEach&&a.forEach===f)a.forEach(e,c);else if(a.length===a.length+0)for(var b=0,p=a.length;b<p&&!(b in a&&e.call(c,a[b],b)===this.BREAK);b++);else for(b in a)if(e.call(c,a[b],b)===this.BREAK)break},defer:function(a){setTimeout(a,0)},toArray:function(d){return d.toArray?d.toArray():a.call(d)},isUndefined:function(a){return void 0===a},isNull:function(a){return null===a},isNaN:function(a){return a!==a},isArray:Array.isArray||function(a){return a.constructor===Array},\nisObject:function(a){return a===Object(a)},isNumber:function(a){return a===a+0},isString:function(a){return a===a+\"\"},isBoolean:function(a){return!1===a||!0===a},isFunction:function(a){return\"[object Function]\"===Object.prototype.toString.call(a)}}}();\ndat.controllers.Controller=function(f){var a=function(a,e){this.initialValue=a[e];this.domElement=document.createElement(\"div\");this.object=a;this.property=e;this.__onFinishChange=this.__onChange=void 0};f.extend(a.prototype,{onChange:function(a){this.__onChange=a;return this},onFinishChange:function(a){this.__onFinishChange=a;return this},setValue:function(a){this.object[this.property]=a;this.__onChange&&this.__onChange.call(this,a);this.updateDisplay();return this},getValue:function(){return this.object[this.property]},\nupdateDisplay:function(){return this},isModified:function(){return this.initialValue!==this.getValue()}});return a}(dat.utils.common);\ndat.dom.dom=function(f){function a(b){if(\"0\"===b||f.isUndefined(b))return 0;b=b.match(e);return f.isNull(b)?0:parseFloat(b[1])}var d={};f.each({HTMLEvents:[\"change\"],MouseEvents:[\"click\",\"mousemove\",\"mousedown\",\"mouseup\",\"mouseover\"],KeyboardEvents:[\"keydown\"]},function(b,a){f.each(b,function(b){d[b]=a})});var e=\/(\\d+(\\.\\d+)?)px\/,c={makeSelectable:function(b,a){void 0!==b&&void 0!==b.style&&(b.onselectstart=a?function(){return!1}:function(){},b.style.MozUserSelect=a?\"auto\":\"none\",b.style.KhtmlUserSelect=\na?\"auto\":\"none\",b.unselectable=a?\"on\":\"off\")},makeFullscreen:function(b,a,c){f.isUndefined(a)&&(a=!0);f.isUndefined(c)&&(c=!0);b.style.position=\"absolute\";a&&(b.style.left=0,b.style.right=0);c&&(b.style.top=0,b.style.bottom=0)},fakeEvent:function(b,a,c,e){c=c||{};var r=d[a];if(!r)throw Error(\"Event type \"+a+\" not supported.\");var n=document.createEvent(r);switch(r){case \"MouseEvents\":n.initMouseEvent(a,c.bubbles||!1,c.cancelable||!0,window,c.clickCount||1,0,0,c.x||c.clientX||0,c.y||c.clientY||0,!1,\n!1,!1,!1,0,null);break;case \"KeyboardEvents\":r=n.initKeyboardEvent||n.initKeyEvent;f.defaults(c,{cancelable:!0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,keyCode:void 0,charCode:void 0});r(a,c.bubbles||!1,c.cancelable,window,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,c.keyCode,c.charCode);break;default:n.initEvent(a,c.bubbles||!1,c.cancelable||!0)}f.defaults(n,e);b.dispatchEvent(n)},bind:function(a,e,d,f){a.addEventListener?a.addEventListener(e,d,f||!1):a.attachEvent&&a.attachEvent(\"on\"+e,d);return c},\nunbind:function(a,e,d,f){a.removeEventListener?a.removeEventListener(e,d,f||!1):a.detachEvent&&a.detachEvent(\"on\"+e,d);return c},addClass:function(a,e){if(void 0===a.className)a.className=e;else if(a.className!==e){var d=a.className.split(\/ +\/);-1==d.indexOf(e)&&(d.push(e),a.className=d.join(\" \").replace(\/^\\s+\/,\"\").replace(\/\\s+$\/,\"\"))}return c},removeClass:function(a,e){if(e){if(void 0!==a.className)if(a.className===e)a.removeAttribute(\"class\");else{var d=a.className.split(\/ +\/),f=d.indexOf(e);-1!=\nf&&(d.splice(f,1),a.className=d.join(\" \"))}}else a.className=void 0;return c},hasClass:function(a,c){return(new RegExp(\"(?:^|\\\\s+)\"+c+\"(?:\\\\s+|$)\")).test(a.className)||!1},getWidth:function(b){b=getComputedStyle(b);return a(b[\"border-left-width\"])+a(b[\"border-right-width\"])+a(b[\"padding-left\"])+a(b[\"padding-right\"])+a(b.width)},getHeight:function(b){b=getComputedStyle(b);return a(b[\"border-top-width\"])+a(b[\"border-bottom-width\"])+a(b[\"padding-top\"])+a(b[\"padding-bottom\"])+a(b.height)},getOffset:function(a){var c=\n{left:0,top:0};if(a.offsetParent){do c.left+=a.offsetLeft,c.top+=a.offsetTop;while(a=a.offsetParent)}return c},isActive:function(a){return a===document.activeElement&&(a.type||a.href)}};return c}(dat.utils.common);\ndat.controllers.OptionController=function(f,a,d){var e=function(c,b,f){e.superclass.call(this,c,b);var q=this;this.__select=document.createElement(\"select\");if(d.isArray(f)){var l={};d.each(f,function(a){l[a]=a});f=l}d.each(f,function(a,b){var c=document.createElement(\"option\");c.innerHTML=b;c.setAttribute(\"value\",a);q.__select.appendChild(c)});this.updateDisplay();a.bind(this.__select,\"change\",function(){q.setValue(this.options[this.selectedIndex].value)});this.domElement.appendChild(this.__select)};\ne.superclass=f;d.extend(e.prototype,f.prototype,{setValue:function(a){a=e.superclass.prototype.setValue.call(this,a);this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue());return a},updateDisplay:function(){this.__select.value=this.getValue();return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);\ndat.controllers.NumberController=function(f,a){function d(a){a=a.toString();return-1<a.indexOf(\".\")?a.length-a.indexOf(\".\")-1:0}var e=function(c,b,f){e.superclass.call(this,c,b);f=f||{};this.__min=f.min;this.__max=f.max;this.__step=f.step;a.isUndefined(this.__step)?this.__impliedStep=0==this.initialValue?1:Math.pow(10,Math.floor(Math.log(this.initialValue)\/Math.LN10))\/10:this.__impliedStep=this.__step;this.__precision=d(this.__impliedStep)};e.superclass=f;a.extend(e.prototype,f.prototype,{setValue:function(a){void 0!==\nthis.__min&&a<this.__min?a=this.__min:void 0!==this.__max&&a>this.__max&&(a=this.__max);void 0!==this.__step&&0!=a%this.__step&&(a=Math.round(a\/this.__step)*this.__step);return e.superclass.prototype.setValue.call(this,a)},min:function(a){this.__min=a;return this},max:function(a){this.__max=a;return this},step:function(a){this.__impliedStep=this.__step=a;this.__precision=d(a);return this}});return e}(dat.controllers.Controller,dat.utils.common);\ndat.controllers.NumberControllerBox=function(f,a,d){var e=function(c,b,f){function q(){var a=parseFloat(n.__input.value);d.isNaN(a)||n.setValue(a)}function l(a){var b=u-a.clientY;n.setValue(n.getValue()+b*n.__impliedStep);u=a.clientY}function r(){a.unbind(window,\"mousemove\",l);a.unbind(window,\"mouseup\",r)}this.__truncationSuspended=!1;e.superclass.call(this,c,b,f);var n=this,u;this.__input=document.createElement(\"input\");this.__input.setAttribute(\"type\",\"text\");a.bind(this.__input,\"change\",q);a.bind(this.__input,\n\"blur\",function(){q();n.__onFinishChange&&n.__onFinishChange.call(n,n.getValue())});a.bind(this.__input,\"mousedown\",function(b){a.bind(window,\"mousemove\",l);a.bind(window,\"mouseup\",r);u=b.clientY});a.bind(this.__input,\"keydown\",function(a){13===a.keyCode&&(n.__truncationSuspended=!0,this.blur(),n.__truncationSuspended=!1)});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype,f.prototype,{updateDisplay:function(){var a=this.__input,b;if(this.__truncationSuspended)b=\nthis.getValue();else{b=this.getValue();var d=Math.pow(10,this.__precision);b=Math.round(b*d)\/d}a.value=b;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.NumberController,dat.dom.dom,dat.utils.common);\ndat.controllers.NumberControllerSlider=function(f,a,d,e,c){function b(a,b,c,e,d){return e+(a-b)\/(c-b)*(d-e)}var p=function(c,e,d,f,u){function A(c){c.preventDefault();var e=a.getOffset(k.__background),d=a.getWidth(k.__background);k.setValue(b(c.clientX,e.left,e.left+d,k.__min,k.__max));return!1}function g(){a.unbind(window,\"mousemove\",A);a.unbind(window,\"mouseup\",g);k.__onFinishChange&&k.__onFinishChange.call(k,k.getValue())}p.superclass.call(this,c,e,{min:d,max:f,step:u});var k=this;this.__background=\ndocument.createElement(\"div\");this.__foreground=document.createElement(\"div\");a.bind(this.__background,\"mousedown\",function(b){a.bind(window,\"mousemove\",A);a.bind(window,\"mouseup\",g);A(b)});a.addClass(this.__background,\"slider\");a.addClass(this.__foreground,\"slider-fg\");this.updateDisplay();this.__background.appendChild(this.__foreground);this.domElement.appendChild(this.__background)};p.superclass=f;p.useDefaultStyles=function(){d.inject(c)};e.extend(p.prototype,f.prototype,{updateDisplay:function(){var a=\n(this.getValue()-this.__min)\/(this.__max-this.__min);this.__foreground.style.width=100*a+\"%\";return p.superclass.prototype.updateDisplay.call(this)}});return p}(dat.controllers.NumberController,dat.dom.dom,dat.utils.css,dat.utils.common,\"\/**\\n * dat-gui JavaScript Controller Library\\n * http:\/\/code.google.com\/p\/dat-gui\\n *\\n * Copyright 2011 Data Arts Team, Google Creative Lab\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http:\/\/www.apache.org\/licenses\/LICENSE-2.0\\n *\/\\n\\n.slider {\\n  box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\\n  height: 1em;\\n  border-radius: 1em;\\n  background-color: #eee;\\n  padding: 0 0.5em;\\n  overflow: hidden;\\n}\\n\\n.slider-fg {\\n  padding: 1px 0 2px 0;\\n  background-color: #aaa;\\n  height: 1em;\\n  margin-left: -0.5em;\\n  padding-right: 0.5em;\\n  border-radius: 1em 0 0 1em;\\n}\\n\\n.slider-fg:after {\\n  display: inline-block;\\n  border-radius: 1em;\\n  background-color: #fff;\\n  border:  1px solid #aaa;\\n  content: '';\\n  float: right;\\n  margin-right: -1em;\\n  margin-top: -1px;\\n  height: 0.9em;\\n  width: 0.9em;\\n}\");\ndat.controllers.FunctionController=function(f,a,d){var e=function(c,b,d){e.superclass.call(this,c,b);var f=this;this.__button=document.createElement(\"div\");this.__button.innerHTML=void 0===d?\"Fire\":d;a.bind(this.__button,\"click\",function(a){a.preventDefault();f.fire();return!1});a.addClass(this.__button,\"button\");this.domElement.appendChild(this.__button)};e.superclass=f;d.extend(e.prototype,f.prototype,{fire:function(){this.__onChange&&this.__onChange.call(this);this.getValue().call(this.object);\nthis.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);\ndat.controllers.BooleanController=function(f,a,d){var e=function(c,b){e.superclass.call(this,c,b);var d=this;this.__prev=this.getValue();this.__checkbox=document.createElement(\"input\");this.__checkbox.setAttribute(\"type\",\"checkbox\");a.bind(this.__checkbox,\"change\",function(){d.setValue(!d.__prev)},!1);this.domElement.appendChild(this.__checkbox);this.updateDisplay()};e.superclass=f;d.extend(e.prototype,f.prototype,{setValue:function(a){a=e.superclass.prototype.setValue.call(this,a);this.__onFinishChange&&\nthis.__onFinishChange.call(this,this.getValue());this.__prev=this.getValue();return a},updateDisplay:function(){!0===this.getValue()?(this.__checkbox.setAttribute(\"checked\",\"checked\"),this.__checkbox.checked=!0):this.__checkbox.checked=!1;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);\ndat.color.toString=function(f){return function(a){if(1==a.a||f.isUndefined(a.a)){for(a=a.hex.toString(16);6>a.length;)a=\"0\"+a;return\"#\"+a}return\"rgba(\"+Math.round(a.r)+\",\"+Math.round(a.g)+\",\"+Math.round(a.b)+\",\"+a.a+\")\"}}(dat.utils.common);\ndat.color.interpret=function(f,a){var d,e,c=[{litmus:a.isString,conversions:{THREE_CHAR_HEX:{read:function(a){a=a.match(\/^#([A-F0-9])([A-F0-9])([A-F0-9])$\/i);return null===a?!1:{space:\"HEX\",hex:parseInt(\"0x\"+a[1].toString()+a[1].toString()+a[2].toString()+a[2].toString()+a[3].toString()+a[3].toString())}},write:f},SIX_CHAR_HEX:{read:function(a){a=a.match(\/^#([A-F0-9]{6})$\/i);return null===a?!1:{space:\"HEX\",hex:parseInt(\"0x\"+a[1].toString())}},write:f},CSS_RGB:{read:function(a){a=a.match(\/^rgb\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)\/);\nreturn null===a?!1:{space:\"RGB\",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3])}},write:f},CSS_RGBA:{read:function(a){a=a.match(\/^rgba\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\,\\s*(.+)\\s*\\)\/);return null===a?!1:{space:\"RGB\",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3]),a:parseFloat(a[4])}},write:f}}},{litmus:a.isNumber,conversions:{HEX:{read:function(a){return{space:\"HEX\",hex:a,conversionName:\"HEX\"}},write:function(a){return a.hex}}}},{litmus:a.isArray,conversions:{RGB_ARRAY:{read:function(a){return 3!=\na.length?!1:{space:\"RGB\",r:a[0],g:a[1],b:a[2]}},write:function(a){return[a.r,a.g,a.b]}},RGBA_ARRAY:{read:function(a){return 4!=a.length?!1:{space:\"RGB\",r:a[0],g:a[1],b:a[2],a:a[3]}},write:function(a){return[a.r,a.g,a.b,a.a]}}}},{litmus:a.isObject,conversions:{RGBA_OBJ:{read:function(b){return a.isNumber(b.r)&&a.isNumber(b.g)&&a.isNumber(b.b)&&a.isNumber(b.a)?{space:\"RGB\",r:b.r,g:b.g,b:b.b,a:b.a}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b,a:a.a}}},RGB_OBJ:{read:function(b){return a.isNumber(b.r)&&\na.isNumber(b.g)&&a.isNumber(b.b)?{space:\"RGB\",r:b.r,g:b.g,b:b.b}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b}}},HSVA_OBJ:{read:function(b){return a.isNumber(b.h)&&a.isNumber(b.s)&&a.isNumber(b.v)&&a.isNumber(b.a)?{space:\"HSV\",h:b.h,s:b.s,v:b.v,a:b.a}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v,a:a.a}}},HSV_OBJ:{read:function(b){return a.isNumber(b.h)&&a.isNumber(b.s)&&a.isNumber(b.v)?{space:\"HSV\",h:b.h,s:b.s,v:b.v}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v}}}}}];return function(){e=!1;\nvar b=1<arguments.length?a.toArray(arguments):arguments[0];a.each(c,function(c){if(c.litmus(b))return a.each(c.conversions,function(c,f){d=c.read(b);if(!1===e&&!1!==d)return e=d,d.conversionName=f,d.conversion=c,a.BREAK}),a.BREAK});return e}}(dat.color.toString,dat.utils.common);\ndat.GUI=dat.gui.GUI=function(f,a,d,e,c,b,p,q,l,r,n,u,A,g,k){function v(a,b,h,d){if(void 0===b[h])throw Error(\"Object \"+b+' has no property \"'+h+'\"');d.color?b=new n(b,h):(b=[b,h].concat(d.factoryArgs),b=e.apply(a,b));d.before instanceof c&&(d.before=d.before.__li);y(a,b);g.addClass(b.domElement,\"c\");h=document.createElement(\"span\");g.addClass(h,\"property-name\");h.innerHTML=b.property;var f=document.createElement(\"div\");f.appendChild(h);f.appendChild(b.domElement);d=w(a,f,d.before);g.addClass(d,m.CLASS_CONTROLLER_ROW);\ng.addClass(d,typeof b.getValue());t(a,d,b);a.__controllers.push(b);return b}function w(a,b,h){var c=document.createElement(\"li\");b&&c.appendChild(b);h?a.__ul.insertBefore(c,params.before):a.__ul.appendChild(c);a.onResize();return c}function t(a,c,h){h.__li=c;h.__gui=a;k.extend(h,{options:function(b){if(1<arguments.length)return h.remove(),v(a,h.object,h.property,{before:h.__li.nextElementSibling,factoryArgs:[k.toArray(arguments)]});if(k.isArray(b)||k.isObject(b))return h.remove(),v(a,h.object,h.property,\n{before:h.__li.nextElementSibling,factoryArgs:[b]})},name:function(a){h.__li.firstElementChild.firstElementChild.innerHTML=a;return h},listen:function(){h.__gui.listen(h);return h},remove:function(){h.__gui.remove(h);return h}});if(h instanceof l){var d=new q(h.object,h.property,{min:h.__min,max:h.__max,step:h.__step});k.each([\"updateDisplay\",\"onChange\",\"onFinishChange\"],function(a){var K=h[a],b=d[a];h[a]=d[a]=function(){var a=Array.prototype.slice.call(arguments);K.apply(h,a);return b.apply(d,a)}});\ng.addClass(c,\"has-slider\");h.domElement.insertBefore(d.domElement,h.domElement.firstElementChild)}else if(h instanceof q){var e=function(b){return k.isNumber(h.__min)&&k.isNumber(h.__max)?(h.remove(),v(a,h.object,h.property,{before:h.__li.nextElementSibling,factoryArgs:[h.__min,h.__max,h.__step]})):b};h.min=k.compose(e,h.min);h.max=k.compose(e,h.max)}else h instanceof b?(g.bind(c,\"click\",function(){g.fakeEvent(h.__checkbox,\"click\")}),g.bind(h.__checkbox,\"click\",function(a){a.stopPropagation()})):\nh instanceof p?(g.bind(c,\"click\",function(){g.fakeEvent(h.__button,\"click\")}),g.bind(c,\"mouseover\",function(){g.addClass(h.__button,\"hover\")}),g.bind(c,\"mouseout\",function(){g.removeClass(h.__button,\"hover\")})):h instanceof n&&(g.addClass(c,\"color\"),h.updateDisplay=k.compose(function(a){c.style.borderLeftColor=h.__color.toString();return a},h.updateDisplay),h.updateDisplay());h.setValue=k.compose(function(b){a.getRoot().__preset_select&&h.isModified()&&E(a.getRoot(),!0);return b},h.setValue)}function y(a,\nb){var c=a.getRoot(),d=c.__rememberedObjects.indexOf(b.object);if(-1!=d){var e=c.__rememberedObjectIndecesToControllers[d];void 0===e&&(e={},c.__rememberedObjectIndecesToControllers[d]=e);e[b.property]=b;if(c.load&&c.load.remembered){c=c.load.remembered;if(c[a.preset])c=c[a.preset];else if(c.Default)c=c.Default;else return;c[d]&&void 0!==c[d][b.property]&&(d=c[d][b.property],b.initialValue=d,b.setValue(d))}}}function L(a){var b=a.__save_row=document.createElement(\"li\");g.addClass(a.domElement,\"has-save\");\na.__ul.insertBefore(b,a.__ul.firstChild);g.addClass(b,\"save-row\");var c=document.createElement(\"span\");c.innerHTML=\"&nbsp;\";g.addClass(c,\"button gears\");var d=document.createElement(\"span\");d.innerHTML=\"Save\";g.addClass(d,\"button\");g.addClass(d,\"save\");var e=document.createElement(\"span\");e.innerHTML=\"New\";g.addClass(e,\"button\");g.addClass(e,\"save-as\");var f=document.createElement(\"span\");f.innerHTML=\"Revert\";g.addClass(f,\"button\");g.addClass(f,\"revert\");var r=a.__preset_select=document.createElement(\"select\");\na.load&&a.load.remembered?k.each(a.load.remembered,function(b,c){F(a,c,c==a.preset)}):F(a,\"Default\",!1);g.bind(r,\"change\",function(){for(var b=0;b<a.__preset_select.length;b++)a.__preset_select[b].innerHTML=a.__preset_select[b].value;a.preset=this.value});b.appendChild(r);b.appendChild(c);b.appendChild(d);b.appendChild(e);b.appendChild(f);if(x){var n=function(){u.style.display=a.useLocalStorage?\"block\":\"none\"},b=document.getElementById(\"dg-save-locally\"),u=document.getElementById(\"dg-local-explain\");\nb.style.display=\"block\";b=document.getElementById(\"dg-local-storage\");\"true\"===localStorage.getItem(document.location.href+\".isLocal\")&&b.setAttribute(\"checked\",\"checked\");n();g.bind(b,\"change\",function(){a.useLocalStorage=!a.useLocalStorage;n()})}var m=document.getElementById(\"dg-new-constructor\");g.bind(m,\"keydown\",function(a){!a.metaKey||67!==a.which&&67!=a.keyCode||B.hide()});g.bind(c,\"click\",function(){m.innerHTML=JSON.stringify(a.getSaveObject(),void 0,2);B.show();m.focus();m.select()});g.bind(d,\n\"click\",function(){a.save()});g.bind(e,\"click\",function(){var b=prompt(\"Enter a new preset name.\");b&&a.saveAs(b)});g.bind(f,\"click\",function(){a.revert()})}function M(a){function b(f){f.preventDefault();e=f.clientX;g.addClass(a.__closeButton,m.CLASS_DRAG);g.bind(window,\"mousemove\",c);g.bind(window,\"mouseup\",d);return!1}function c(b){b.preventDefault();a.width+=e-b.clientX;a.onResize();e=b.clientX;return!1}function d(){g.removeClass(a.__closeButton,m.CLASS_DRAG);g.unbind(window,\"mousemove\",c);g.unbind(window,\n\"mouseup\",d)}a.__resize_handle=document.createElement(\"div\");k.extend(a.__resize_handle.style,{width:\"6px\",marginLeft:\"-3px\",height:\"200px\",cursor:\"ew-resize\",position:\"absolute\"});var e;g.bind(a.__resize_handle,\"mousedown\",b);g.bind(a.__closeButton,\"mousedown\",b);a.domElement.insertBefore(a.__resize_handle,a.domElement.firstElementChild)}function G(a,b){a.domElement.style.width=b+\"px\";a.__save_row&&a.autoPlace&&(a.__save_row.style.width=b+\"px\");a.__closeButton&&(a.__closeButton.style.width=b+\"px\")}\nfunction C(a,b){var c={};k.each(a.__rememberedObjects,function(d,e){var f={};k.each(a.__rememberedObjectIndecesToControllers[e],function(a,c){f[c]=b?a.initialValue:a.getValue()});c[e]=f});return c}function F(a,b,c){var d=document.createElement(\"option\");d.innerHTML=b;d.value=b;a.__preset_select.appendChild(d);c&&(a.__preset_select.selectedIndex=a.__preset_select.length-1)}function E(a,b){var c=a.__preset_select[a.__preset_select.selectedIndex];c.innerHTML=b?c.value+\"*\":c.value}function H(a){0!=a.length&&\nu(function(){H(a)});k.each(a,function(a){a.updateDisplay()})}f.inject(d);var x;try{x=\"localStorage\"in window&&null!==window.localStorage}catch(N){x=!1}var B,I=!0,z,D=!1,J=[],m=function(a){function b(){var a=c.getRoot();a.width+=1;k.defer(function(){--a.width})}var c=this;this.domElement=document.createElement(\"div\");this.__ul=document.createElement(\"ul\");this.domElement.appendChild(this.__ul);g.addClass(this.domElement,\"dg\");this.__folders={};this.__controllers=[];this.__rememberedObjects=[];this.__rememberedObjectIndecesToControllers=\n[];this.__listening=[];a=a||{};a=k.defaults(a,{autoPlace:!0,width:m.DEFAULT_WIDTH});a=k.defaults(a,{resizable:a.autoPlace,hideable:a.autoPlace});k.isUndefined(a.load)?a.load={preset:\"Default\"}:a.preset&&(a.load.preset=a.preset);k.isUndefined(a.parent)&&a.hideable&&J.push(this);a.resizable=k.isUndefined(a.parent)&&a.resizable;a.autoPlace&&k.isUndefined(a.scrollable)&&(a.scrollable=!0);var d=x&&\"true\"===localStorage.getItem(document.location.href+\".isLocal\"),e;Object.defineProperties(this,{parent:{get:function(){return a.parent}},\nscrollable:{get:function(){return a.scrollable}},autoPlace:{get:function(){return a.autoPlace}},preset:{get:function(){return c.parent?c.getRoot().preset:a.load.preset},set:function(b){c.parent?c.getRoot().preset=b:a.load.preset=b;for(b=0;b<this.__preset_select.length;b++)this.__preset_select[b].value==this.preset&&(this.__preset_select.selectedIndex=b);c.revert()}},width:{get:function(){return a.width},set:function(b){a.width=b;G(c,b)}},name:{get:function(){return a.name},set:function(b){a.name=\nb;r&&(r.innerHTML=a.name)}},closed:{get:function(){return a.closed},set:function(b){a.closed=b;a.closed?g.addClass(c.__ul,m.CLASS_CLOSED):g.removeClass(c.__ul,m.CLASS_CLOSED);this.onResize();c.__closeButton&&(c.__closeButton.innerHTML=b?m.TEXT_OPEN:m.TEXT_CLOSED)}},load:{get:function(){return a.load}},useLocalStorage:{get:function(){return d},set:function(a){x&&((d=a)?g.bind(window,\"unload\",e):g.unbind(window,\"unload\",e),localStorage.setItem(document.location.href+\".isLocal\",a))}}});if(k.isUndefined(a.parent)){a.closed=\n!1;g.addClass(this.domElement,m.CLASS_MAIN);g.makeSelectable(this.domElement,!1);if(x&&d){c.useLocalStorage=!0;var f=localStorage.getItem(document.location.href+\".gui\");f&&(a.load=JSON.parse(f))}this.__closeButton=document.createElement(\"div\");this.__closeButton.innerHTML=m.TEXT_CLOSED;g.addClass(this.__closeButton,m.CLASS_CLOSE_BUTTON);this.domElement.appendChild(this.__closeButton);g.bind(this.__closeButton,\"click\",function(){c.closed=!c.closed})}else{void 0===a.closed&&(a.closed=!0);var r=document.createTextNode(a.name);\ng.addClass(r,\"controller-name\");f=w(c,r);g.addClass(this.__ul,m.CLASS_CLOSED);g.addClass(f,\"title\");g.bind(f,\"click\",function(a){a.preventDefault();c.closed=!c.closed;return!1});a.closed||(this.closed=!1)}a.autoPlace&&(k.isUndefined(a.parent)&&(I&&(z=document.createElement(\"div\"),g.addClass(z,\"dg\"),g.addClass(z,m.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(z),I=!1),z.appendChild(this.domElement),g.addClass(this.domElement,m.CLASS_AUTO_PLACE)),this.parent||G(c,a.width));g.bind(window,\"resize\",\nfunction(){c.onResize()});g.bind(this.__ul,\"webkitTransitionEnd\",function(){c.onResize()});g.bind(this.__ul,\"transitionend\",function(){c.onResize()});g.bind(this.__ul,\"oTransitionEnd\",function(){c.onResize()});this.onResize();a.resizable&&M(this);this.saveToLocalStorageIfPossible=e=function(){x&&\"true\"===localStorage.getItem(document.location.href+\".isLocal\")&&localStorage.setItem(document.location.href+\".gui\",JSON.stringify(c.getSaveObject()))};c.getRoot();a.parent||b()};m.toggleHide=function(){D=\n!D;k.each(J,function(a){a.domElement.style.zIndex=D?-999:999;a.domElement.style.opacity=D?0:1})};m.CLASS_AUTO_PLACE=\"a\";m.CLASS_AUTO_PLACE_CONTAINER=\"ac\";m.CLASS_MAIN=\"main\";m.CLASS_CONTROLLER_ROW=\"cr\";m.CLASS_TOO_TALL=\"taller-than-window\";m.CLASS_CLOSED=\"closed\";m.CLASS_CLOSE_BUTTON=\"close-button\";m.CLASS_DRAG=\"drag\";m.DEFAULT_WIDTH=245;m.TEXT_CLOSED=\"Close Controls\";m.TEXT_OPEN=\"Open Controls\";g.bind(window,\"keydown\",function(a){\"text\"===document.activeElement.type||72!==a.which&&72!=a.keyCode||\nm.toggleHide()},!1);k.extend(m.prototype,{add:function(a,b){return v(this,a,b,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(a,b){return v(this,a,b,{color:!0})},remove:function(a){this.__ul.removeChild(a.__li);this.__controllers.splice(this.__controllers.indexOf(a),1);var b=this;k.defer(function(){b.onResize()})},destroy:function(){this.autoPlace&&z.removeChild(this.domElement)},addFolder:function(a){if(void 0!==this.__folders[a])throw Error('You already have a folder in this GUI by the name \"'+\na+'\"');var b={name:a,parent:this};b.autoPlace=this.autoPlace;this.load&&this.load.folders&&this.load.folders[a]&&(b.closed=this.load.folders[a].closed,b.load=this.load.folders[a]);b=new m(b);this.__folders[a]=b;a=w(this,b.domElement);g.addClass(a,\"folder\");return b},open:function(){this.closed=!1},close:function(){this.closed=!0},onResize:function(){var a=this.getRoot();if(a.scrollable){var b=g.getOffset(a.__ul).top,c=0;k.each(a.__ul.childNodes,function(b){a.autoPlace&&b===a.__save_row||(c+=g.getHeight(b))});\nwindow.innerHeight-b-20<c?(g.addClass(a.domElement,m.CLASS_TOO_TALL),a.__ul.style.height=window.innerHeight-b-20+\"px\"):(g.removeClass(a.domElement,m.CLASS_TOO_TALL),a.__ul.style.height=\"auto\")}a.__resize_handle&&k.defer(function(){a.__resize_handle.style.height=a.__ul.offsetHeight+\"px\"});a.__closeButton&&(a.__closeButton.style.width=a.width+\"px\")},remember:function(){k.isUndefined(B)&&(B=new A,B.domElement.innerHTML=a);if(this.parent)throw Error(\"You can only call remember on a top level GUI.\");var b=\nthis;k.each(Array.prototype.slice.call(arguments),function(a){0==b.__rememberedObjects.length&&L(b);-1==b.__rememberedObjects.indexOf(a)&&b.__rememberedObjects.push(a)});this.autoPlace&&G(this,this.width)},getRoot:function(){for(var a=this;a.parent;)a=a.parent;return a},getSaveObject:function(){var a=this.load;a.closed=this.closed;0<this.__rememberedObjects.length&&(a.preset=this.preset,a.remembered||(a.remembered={}),a.remembered[this.preset]=C(this));a.folders={};k.each(this.__folders,function(b,\nc){a.folders[c]=b.getSaveObject()});return a},save:function(){this.load.remembered||(this.load.remembered={});this.load.remembered[this.preset]=C(this);E(this,!1);this.saveToLocalStorageIfPossible()},saveAs:function(a){this.load.remembered||(this.load.remembered={},this.load.remembered.Default=C(this,!0));this.load.remembered[a]=C(this);this.preset=a;F(this,a,!0);this.saveToLocalStorageIfPossible()},revert:function(a){k.each(this.__controllers,function(b){this.getRoot().load.remembered?y(a||this.getRoot(),\nb):b.setValue(b.initialValue)},this);k.each(this.__folders,function(a){a.revert(a)});a||E(this.getRoot(),!1)},listen:function(a){var b=0==this.__listening.length;this.__listening.push(a);b&&H(this.__listening)}});return m}(dat.utils.css,'<div id=\"dg-save\" class=\"dg dialogue\">\\n\\n  Here\\'s the new load parameter for your <code>GUI<\/code>\\'s constructor:\\n\\n  <textarea id=\"dg-new-constructor\"><\/textarea>\\n\\n  <div id=\"dg-save-locally\">\\n\\n    <input id=\"dg-local-storage\" type=\"checkbox\"\/> Automatically save\\n    values to <code>localStorage<\/code> on exit.\\n\\n    <div id=\"dg-local-explain\">The values saved to <code>localStorage<\/code> will\\n      override those passed to <code>dat.GUI<\/code>\\'s constructor. This makes it\\n      easier to work incrementally, but <code>localStorage<\/code> is fragile,\\n      and your friends may not see the same values you do.\\n      \\n    <\/div>\\n    \\n  <\/div>\\n\\n<\/div>',\n\".dg {\\n  \/** Clear list styles *\/\\n  \/* Auto-place container *\/\\n  \/* Auto-placed GUI's *\/\\n  \/* Line items that don't contain folders. *\/\\n  \/** Folder names *\/\\n  \/** Hides closed items *\/\\n  \/** Controller row *\/\\n  \/** Name-half (left) *\/\\n  \/** Controller-half (right) *\/\\n  \/** Controller placement *\/\\n  \/** Shorter number boxes when slider is present. *\/\\n  \/** Ensure the entire boolean and function row shows a hand *\/ }\\n  .dg ul {\\n    list-style: none;\\n    margin: 0;\\n    padding: 0;\\n    width: 100%;\\n    clear: both; }\\n  .dg.ac {\\n    position: fixed;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    height: 0;\\n    z-index: 0; }\\n  .dg:not(.ac) .main {\\n    \/** Exclude mains in ac so that we don't hide close button *\/\\n    overflow: hidden; }\\n  .dg.main {\\n    -webkit-transition: opacity 0.1s linear;\\n    -o-transition: opacity 0.1s linear;\\n    -moz-transition: opacity 0.1s linear;\\n    transition: opacity 0.1s linear; }\\n    .dg.main.taller-than-window {\\n      overflow-y: auto; }\\n      .dg.main.taller-than-window .close-button {\\n        opacity: 1;\\n        \/* TODO, these are style notes *\/\\n        margin-top: -1px;\\n        border-top: 1px solid #2c2c2c; }\\n    .dg.main ul.closed .close-button {\\n      opacity: 1 !important; }\\n    .dg.main:hover .close-button,\\n    .dg.main .close-button.drag {\\n      opacity: 1; }\\n    .dg.main .close-button {\\n      \/*opacity: 0;*\/\\n      -webkit-transition: opacity 0.1s linear;\\n      -o-transition: opacity 0.1s linear;\\n      -moz-transition: opacity 0.1s linear;\\n      transition: opacity 0.1s linear;\\n      border: 0;\\n      position: absolute;\\n      line-height: 19px;\\n      height: 20px;\\n      \/* TODO, these are style notes *\/\\n      cursor: pointer;\\n      text-align: center;\\n      background-color: #000; }\\n      .dg.main .close-button:hover {\\n        background-color: #111; }\\n  .dg.a {\\n    float: right;\\n    margin-right: 15px;\\n    overflow-x: hidden; }\\n    .dg.a.has-save > ul {\\n      margin-top: 27px; }\\n      .dg.a.has-save > ul.closed {\\n        margin-top: 0; }\\n    .dg.a .save-row {\\n      position: fixed;\\n      top: 0;\\n      z-index: 1002; }\\n  .dg li {\\n    -webkit-transition: height 0.1s ease-out;\\n    -o-transition: height 0.1s ease-out;\\n    -moz-transition: height 0.1s ease-out;\\n    transition: height 0.1s ease-out; }\\n  .dg li:not(.folder) {\\n    cursor: auto;\\n    height: 27px;\\n    line-height: 27px;\\n    overflow: hidden;\\n    padding: 0 4px 0 5px; }\\n  .dg li.folder {\\n    padding: 0;\\n    border-left: 4px solid rgba(0, 0, 0, 0); }\\n  .dg li.title {\\n    cursor: pointer;\\n    margin-left: -4px; }\\n  .dg .closed li:not(.title),\\n  .dg .closed ul li,\\n  .dg .closed ul li > * {\\n    height: 0;\\n    overflow: hidden;\\n    border: 0; }\\n  .dg .cr {\\n    clear: both;\\n    padding-left: 3px;\\n    height: 27px; }\\n  .dg .property-name {\\n    cursor: default;\\n    float: left;\\n    clear: left;\\n    width: 40%;\\n    overflow: hidden;\\n    text-overflow: ellipsis; }\\n  .dg .c {\\n    float: left;\\n    width: 60%; }\\n  .dg .c input[type=text] {\\n    border: 0;\\n    margin-top: 4px;\\n    padding: 3px;\\n    width: 100%;\\n    float: right; }\\n  .dg .has-slider input[type=text] {\\n    width: 30%;\\n    \/*display: none;*\/\\n    margin-left: 0; }\\n  .dg .slider {\\n    float: left;\\n    width: 66%;\\n    margin-left: -5px;\\n    margin-right: 0;\\n    height: 19px;\\n    margin-top: 4px; }\\n  .dg .slider-fg {\\n    height: 100%; }\\n  .dg .c input[type=checkbox] {\\n    margin-top: 9px; }\\n  .dg .c select {\\n    margin-top: 5px; }\\n  .dg .cr.function,\\n  .dg .cr.function .property-name,\\n  .dg .cr.function *,\\n  .dg .cr.boolean,\\n  .dg .cr.boolean * {\\n    cursor: pointer; }\\n  .dg .selector {\\n    display: none;\\n    position: absolute;\\n    margin-left: -9px;\\n    margin-top: 23px;\\n    z-index: 10; }\\n  .dg .c:hover .selector,\\n  .dg .selector.drag {\\n    display: block; }\\n  .dg li.save-row {\\n    padding: 0; }\\n    .dg li.save-row .button {\\n      display: inline-block;\\n      padding: 0px 6px; }\\n  .dg.dialogue {\\n    background-color: #222;\\n    width: 460px;\\n    padding: 15px;\\n    font-size: 13px;\\n    line-height: 15px; }\\n\\n\/* TODO Separate style and structure *\/\\n#dg-new-constructor {\\n  padding: 10px;\\n  color: #222;\\n  font-family: Monaco, monospace;\\n  font-size: 10px;\\n  border: 0;\\n  resize: none;\\n  box-shadow: inset 1px 1px 1px #888;\\n  word-wrap: break-word;\\n  margin: 12px 0;\\n  display: block;\\n  width: 440px;\\n  overflow-y: scroll;\\n  height: 100px;\\n  position: relative; }\\n\\n#dg-local-explain {\\n  display: none;\\n  font-size: 11px;\\n  line-height: 17px;\\n  border-radius: 3px;\\n  background-color: #333;\\n  padding: 8px;\\n  margin-top: 10px; }\\n  #dg-local-explain code {\\n    font-size: 10px; }\\n\\n#dat-gui-save-locally {\\n  display: none; }\\n\\n\/** Main type *\/\\n.dg {\\n  color: #eee;\\n  font: 11px 'Lucida Grande', sans-serif;\\n  text-shadow: 0 -1px 0 #111;\\n  \/** Auto place *\/\\n  \/* Controller row, <li> *\/\\n  \/** Controllers *\/ }\\n  .dg.main {\\n    \/** Scrollbar *\/ }\\n    .dg.main::-webkit-scrollbar {\\n      width: 5px;\\n      background: #1a1a1a; }\\n    .dg.main::-webkit-scrollbar-corner {\\n      height: 0;\\n      display: none; }\\n    .dg.main::-webkit-scrollbar-thumb {\\n      border-radius: 5px;\\n      background: #676767; }\\n  .dg li:not(.folder) {\\n    background: #1a1a1a;\\n    border-bottom: 1px solid #2c2c2c; }\\n  .dg li.save-row {\\n    line-height: 25px;\\n    background: #dad5cb;\\n    border: 0; }\\n    .dg li.save-row select {\\n      margin-left: 5px;\\n      width: 108px; }\\n    .dg li.save-row .button {\\n      margin-left: 5px;\\n      margin-top: 1px;\\n      border-radius: 2px;\\n      font-size: 9px;\\n      line-height: 7px;\\n      padding: 4px 4px 5px 4px;\\n      background: #c5bdad;\\n      color: #fff;\\n      text-shadow: 0 1px 0 #b0a58f;\\n      box-shadow: 0 -1px 0 #b0a58f;\\n      cursor: pointer; }\\n      .dg li.save-row .button.gears {\\n        background: #c5bdad url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB\/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU\/P\/\/PwGIC\/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+\/vWT4e7N82AMYoPAx\/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6\/YWm\/Acx5IPb7ty\/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR\/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow\/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;\\n        height: 7px;\\n        width: 8px; }\\n      .dg li.save-row .button:hover {\\n        background-color: #bab19e;\\n        box-shadow: 0 -1px 0 #b0a58f; }\\n  .dg li.folder {\\n    border-bottom: 0; }\\n  .dg li.title {\\n    padding-left: 16px;\\n    background: black url(data:image\/gif;base64,R0lGODlhBQAFAJEAAP\/\/\/\/Pz8\/\/\/\/\/\/\/\/yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\\n    cursor: pointer;\\n    border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\\n  .dg .closed li.title {\\n    background-image: url(data:image\/gif;base64,R0lGODlhBQAFAJEAAP\/\/\/\/Pz8\/\/\/\/\/\/\/\/yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\\n  .dg .cr.boolean {\\n    border-left: 3px solid #806787; }\\n  .dg .cr.function {\\n    border-left: 3px solid #e61d5f; }\\n  .dg .cr.number {\\n    border-left: 3px solid #2fa1d6; }\\n    .dg .cr.number input[type=text] {\\n      color: #2fa1d6; }\\n  .dg .cr.string {\\n    border-left: 3px solid #1ed36f; }\\n    .dg .cr.string input[type=text] {\\n      color: #1ed36f; }\\n  .dg .cr.function:hover, .dg .cr.boolean:hover {\\n    background: #111; }\\n  .dg .c input[type=text] {\\n    background: #303030;\\n    outline: none; }\\n    .dg .c input[type=text]:hover {\\n      background: #3c3c3c; }\\n    .dg .c input[type=text]:focus {\\n      background: #494949;\\n      color: #fff; }\\n  .dg .c .slider {\\n    background: #303030;\\n    cursor: ew-resize; }\\n  .dg .c .slider-fg {\\n    background: #2fa1d6; }\\n  .dg .c .slider:hover {\\n    background: #3c3c3c; }\\n    .dg .c .slider:hover .slider-fg {\\n      background: #44abda; }\\n\",\ndat.controllers.factory=function(f,a,d,e,c,b,p){return function(q,l,r,n){var u=q[l];if(p.isArray(r)||p.isObject(r))return new f(q,l,r);if(p.isNumber(u))return p.isNumber(r)&&p.isNumber(n)?new d(q,l,r,n):new a(q,l,{min:r,max:n});if(p.isString(u))return new e(q,l);if(p.isFunction(u))return new c(q,l,\"\");if(p.isBoolean(u))return new b(q,l)}}(dat.controllers.OptionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.StringController=function(f,a,d){var e=\nfunction(c,b){function d(){f.setValue(f.__input.value)}e.superclass.call(this,c,b);var f=this;this.__input=document.createElement(\"input\");this.__input.setAttribute(\"type\",\"text\");a.bind(this.__input,\"keyup\",d);a.bind(this.__input,\"change\",d);a.bind(this.__input,\"blur\",function(){f.__onFinishChange&&f.__onFinishChange.call(f,f.getValue())});a.bind(this.__input,\"keydown\",function(a){13===a.keyCode&&this.blur()});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype,\nf.prototype,{updateDisplay:function(){a.isActive(this.__input)||(this.__input.value=this.getValue());return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common),dat.controllers.FunctionController,dat.controllers.BooleanController,dat.utils.common),dat.controllers.Controller,dat.controllers.BooleanController,dat.controllers.FunctionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.OptionController,\ndat.controllers.ColorController=function(f,a,d,e,c){function b(a,b,d,e){a.style.background=\"\";c.each(l,function(c){a.style.cssText+=\"background: \"+c+\"linear-gradient(\"+b+\", \"+d+\" 0%, \"+e+\" 100%); \"})}function p(a){a.style.background=\"\";a.style.cssText+=\"background: -moz-linear-gradient(top,  #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);\";a.style.cssText+=\"background: -webkit-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\";\na.style.cssText+=\"background: -o-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\";a.style.cssText+=\"background: -ms-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\";a.style.cssText+=\"background: linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);\"}var q=function(f,n){function u(b){v(b);a.bind(window,\"mousemove\",v);a.bind(window,\n\"mouseup\",l)}function l(){a.unbind(window,\"mousemove\",v);a.unbind(window,\"mouseup\",l)}function g(){var a=e(this.value);!1!==a?(t.__color.__state=a,t.setValue(t.__color.toOriginal())):this.value=t.__color.toString()}function k(){a.unbind(window,\"mousemove\",w);a.unbind(window,\"mouseup\",k)}function v(b){b.preventDefault();var c=a.getWidth(t.__saturation_field),d=a.getOffset(t.__saturation_field),e=(b.clientX-d.left+document.body.scrollLeft)\/c;b=1-(b.clientY-d.top+document.body.scrollTop)\/c;1<b?b=1:0>\nb&&(b=0);1<e?e=1:0>e&&(e=0);t.__color.v=b;t.__color.s=e;t.setValue(t.__color.toOriginal());return!1}function w(b){b.preventDefault();var c=a.getHeight(t.__hue_field),d=a.getOffset(t.__hue_field);b=1-(b.clientY-d.top+document.body.scrollTop)\/c;1<b?b=1:0>b&&(b=0);t.__color.h=360*b;t.setValue(t.__color.toOriginal());return!1}q.superclass.call(this,f,n);this.__color=new d(this.getValue());this.__temp=new d(0);var t=this;this.domElement=document.createElement(\"div\");a.makeSelectable(this.domElement,!1);\nthis.__selector=document.createElement(\"div\");this.__selector.className=\"selector\";this.__saturation_field=document.createElement(\"div\");this.__saturation_field.className=\"saturation-field\";this.__field_knob=document.createElement(\"div\");this.__field_knob.className=\"field-knob\";this.__field_knob_border=\"2px solid \";this.__hue_knob=document.createElement(\"div\");this.__hue_knob.className=\"hue-knob\";this.__hue_field=document.createElement(\"div\");this.__hue_field.className=\"hue-field\";this.__input=document.createElement(\"input\");\nthis.__input.type=\"text\";this.__input_textShadow=\"0 1px 1px \";a.bind(this.__input,\"keydown\",function(a){13===a.keyCode&&g.call(this)});a.bind(this.__input,\"blur\",g);a.bind(this.__selector,\"mousedown\",function(b){a.addClass(this,\"drag\").bind(window,\"mouseup\",function(b){a.removeClass(t.__selector,\"drag\")})});var y=document.createElement(\"div\");c.extend(this.__selector.style,{width:\"122px\",height:\"102px\",padding:\"3px\",backgroundColor:\"#222\",boxShadow:\"0px 1px 3px rgba(0,0,0,0.3)\"});c.extend(this.__field_knob.style,\n{position:\"absolute\",width:\"12px\",height:\"12px\",border:this.__field_knob_border+(.5>this.__color.v?\"#fff\":\"#000\"),boxShadow:\"0px 1px 3px rgba(0,0,0,0.5)\",borderRadius:\"12px\",zIndex:1});c.extend(this.__hue_knob.style,{position:\"absolute\",width:\"15px\",height:\"2px\",borderRight:\"4px solid #fff\",zIndex:1});c.extend(this.__saturation_field.style,{width:\"100px\",height:\"100px\",border:\"1px solid #555\",marginRight:\"3px\",display:\"inline-block\",cursor:\"pointer\"});c.extend(y.style,{width:\"100%\",height:\"100%\",\nbackground:\"none\"});b(y,\"top\",\"rgba(0,0,0,0)\",\"#000\");c.extend(this.__hue_field.style,{width:\"15px\",height:\"100px\",display:\"inline-block\",border:\"1px solid #555\",cursor:\"ns-resize\"});p(this.__hue_field);c.extend(this.__input.style,{outline:\"none\",textAlign:\"center\",color:\"#fff\",border:0,fontWeight:\"bold\",textShadow:this.__input_textShadow+\"rgba(0,0,0,0.7)\"});a.bind(this.__saturation_field,\"mousedown\",u);a.bind(this.__field_knob,\"mousedown\",u);a.bind(this.__hue_field,\"mousedown\",function(b){w(b);a.bind(window,\n\"mousemove\",w);a.bind(window,\"mouseup\",k)});this.__saturation_field.appendChild(y);this.__selector.appendChild(this.__field_knob);this.__selector.appendChild(this.__saturation_field);this.__selector.appendChild(this.__hue_field);this.__hue_field.appendChild(this.__hue_knob);this.domElement.appendChild(this.__input);this.domElement.appendChild(this.__selector);this.updateDisplay()};q.superclass=f;c.extend(q.prototype,f.prototype,{updateDisplay:function(){var a=e(this.getValue());if(!1!==a){var f=!1;\nc.each(d.COMPONENTS,function(b){if(!c.isUndefined(a[b])&&!c.isUndefined(this.__color.__state[b])&&a[b]!==this.__color.__state[b])return f=!0,{}},this);f&&c.extend(this.__color.__state,a)}c.extend(this.__temp.__state,this.__color.__state);this.__temp.a=1;var l=.5>this.__color.v||.5<this.__color.s?255:0,p=255-l;c.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+\"px\",marginTop:100*(1-this.__color.v)-7+\"px\",backgroundColor:this.__temp.toString(),border:this.__field_knob_border+\"rgb(\"+l+\n\",\"+l+\",\"+l+\")\"});this.__hue_knob.style.marginTop=100*(1-this.__color.h\/360)+\"px\";this.__temp.s=1;this.__temp.v=1;b(this.__saturation_field,\"left\",\"#fff\",this.__temp.toString());c.extend(this.__input.style,{backgroundColor:this.__input.value=this.__color.toString(),color:\"rgb(\"+l+\",\"+l+\",\"+l+\")\",textShadow:this.__input_textShadow+\"rgba(\"+p+\",\"+p+\",\"+p+\",.7)\"})}});var l=[\"-moz-\",\"-o-\",\"-webkit-\",\"-ms-\",\"\"];return q}(dat.controllers.Controller,dat.dom.dom,dat.color.Color=function(f,a,d,e){function c(a,\nb,c){Object.defineProperty(a,b,{get:function(){if(\"RGB\"===this.__state.space)return this.__state[b];p(this,b,c);return this.__state[b]},set:function(a){\"RGB\"!==this.__state.space&&(p(this,b,c),this.__state.space=\"RGB\");this.__state[b]=a}})}function b(a,b){Object.defineProperty(a,b,{get:function(){if(\"HSV\"===this.__state.space)return this.__state[b];q(this);return this.__state[b]},set:function(a){\"HSV\"!==this.__state.space&&(q(this),this.__state.space=\"HSV\");this.__state[b]=a}})}function p(b,c,d){if(\"HEX\"===\nb.__state.space)b.__state[c]=a.component_from_hex(b.__state.hex,d);else if(\"HSV\"===b.__state.space)e.extend(b.__state,a.hsv_to_rgb(b.__state.h,b.__state.s,b.__state.v));else throw\"Corrupted color state\";}function q(b){var c=a.rgb_to_hsv(b.r,b.g,b.b);e.extend(b.__state,{s:c.s,v:c.v});e.isNaN(c.h)?e.isUndefined(b.__state.h)&&(b.__state.h=0):b.__state.h=c.h}var l=function(){this.__state=f.apply(this,arguments);if(!1===this.__state)throw\"Failed to interpret color arguments\";this.__state.a=this.__state.a||\n1};l.COMPONENTS=\"r g b h s v hex a\".split(\" \");e.extend(l.prototype,{toString:function(){return d(this)},toOriginal:function(){return this.__state.conversion.write(this)}});c(l.prototype,\"r\",2);c(l.prototype,\"g\",1);c(l.prototype,\"b\",0);b(l.prototype,\"h\");b(l.prototype,\"s\");b(l.prototype,\"v\");Object.defineProperty(l.prototype,\"a\",{get:function(){return this.__state.a},set:function(a){this.__state.a=a}});Object.defineProperty(l.prototype,\"hex\",{get:function(){\"HEX\"!==!this.__state.space&&(this.__state.hex=\na.rgb_to_hex(this.r,this.g,this.b));return this.__state.hex},set:function(a){this.__state.space=\"HEX\";this.__state.hex=a}});return l}(dat.color.interpret,dat.color.math=function(){var f;return{hsv_to_rgb:function(a,d,e){var c=a\/60-Math.floor(a\/60),b=e*(1-d),f=e*(1-c*d);d=e*(1-(1-c)*d);a=[[e,d,b],[f,e,b],[b,e,d],[b,f,e],[d,b,e],[e,b,f]][Math.floor(a\/60)%6];return{r:255*a[0],g:255*a[1],b:255*a[2]}},rgb_to_hsv:function(a,d,e){var c=Math.min(a,d,e),b=Math.max(a,d,e),c=b-c;if(0==b)return{h:NaN,s:0,v:0};\na=(a==b?(d-e)\/c:d==b?2+(e-a)\/c:4+(a-d)\/c)\/6;0>a&&(a+=1);return{h:360*a,s:c\/b,v:b\/255}},rgb_to_hex:function(a,d,e){a=this.hex_with_component(0,2,a);a=this.hex_with_component(a,1,d);return a=this.hex_with_component(a,0,e)},component_from_hex:function(a,d){return a>>8*d&255},hex_with_component:function(a,d,e){return e<<(f=8*d)|a&~(255<<f)}}}(),dat.color.toString,dat.utils.common),dat.color.interpret,dat.utils.common),dat.utils.requestAnimationFrame=function(){return window.webkitRequestAnimationFrame||\nwindow.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(f,a){window.setTimeout(f,1E3\/60)}}(),dat.dom.CenteredDiv=function(f,a){var d=function(){this.backgroundElement=document.createElement(\"div\");a.extend(this.backgroundElement.style,{backgroundColor:\"rgba(0,0,0,0.8)\",top:0,left:0,display:\"none\",zIndex:\"1000\",opacity:0,WebkitTransition:\"opacity 0.2s linear\",transition:\"opacity 0.2s linear\"});f.makeFullscreen(this.backgroundElement);this.backgroundElement.style.position=\n\"fixed\";this.domElement=document.createElement(\"div\");a.extend(this.domElement.style,{position:\"fixed\",display:\"none\",zIndex:\"1001\",opacity:0,WebkitTransition:\"-webkit-transform 0.2s ease-out, opacity 0.2s linear\",transition:\"transform 0.2s ease-out, opacity 0.2s linear\"});document.body.appendChild(this.backgroundElement);document.body.appendChild(this.domElement);var d=this;f.bind(this.backgroundElement,\"click\",function(){d.hide()})};d.prototype.show=function(){var d=this;this.backgroundElement.style.display=\n\"block\";this.domElement.style.display=\"block\";this.domElement.style.opacity=0;this.domElement.style.webkitTransform=\"scale(1.1)\";this.layout();a.defer(function(){d.backgroundElement.style.opacity=1;d.domElement.style.opacity=1;d.domElement.style.webkitTransform=\"scale(1)\"})};d.prototype.hide=function(){var a=this,c=function(){a.domElement.style.display=\"none\";a.backgroundElement.style.display=\"none\";f.unbind(a.domElement,\"webkitTransitionEnd\",c);f.unbind(a.domElement,\"transitionend\",c);f.unbind(a.domElement,\n\"oTransitionEnd\",c)};f.bind(this.domElement,\"webkitTransitionEnd\",c);f.bind(this.domElement,\"transitionend\",c);f.bind(this.domElement,\"oTransitionEnd\",c);this.backgroundElement.style.opacity=0;this.domElement.style.opacity=0;this.domElement.style.webkitTransform=\"scale(1.1)\"};d.prototype.layout=function(){this.domElement.style.left=window.innerWidth\/2-f.getWidth(this.domElement)\/2+\"px\";this.domElement.style.top=window.innerHeight\/2-f.getHeight(this.domElement)\/2+\"px\"};return d}(dat.dom.dom,dat.utils.common),\ndat.dom.dom,dat.utils.common);\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-299d717 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"299d717\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n    \/**\n * @author mrdoob \/ http:\/\/mrdoob.com\/\n *\/\n\nvar Stats = function () {\n\n\tvar startTime = Date.now(), prevTime = startTime;\n\tvar ms = 0, msMin = Infinity, msMax = 0;\n\tvar fps = 0, fpsMin = Infinity, fpsMax = 0;\n\tvar frames = 0, mode = 0;\n\n\tvar container = document.createElement( 'div' );\n\tcontainer.id = 'stats';\n\tcontainer.addEventListener( 'mousedown', function ( event ) { event.preventDefault(); setMode( ++ mode % 2 ) }, false );\n\tcontainer.style.cssText = 'width:80px;opacity:0.9;cursor:pointer';\n\n\tvar fpsDiv = document.createElement( 'div' );\n\tfpsDiv.id = 'fps';\n\tfpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002';\n\tcontainer.appendChild( fpsDiv );\n\n\tvar fpsText = document.createElement( 'div' );\n\tfpsText.id = 'fpsText';\n\tfpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';\n\tfpsText.innerHTML = 'FPS';\n\tfpsDiv.appendChild( fpsText );\n\n\tvar fpsGraph = document.createElement( 'div' );\n\tfpsGraph.id = 'fpsGraph';\n\tfpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff';\n\tfpsDiv.appendChild( fpsGraph );\n\n\twhile ( fpsGraph.children.length < 74 ) {\n\n\t\tvar bar = document.createElement( 'span' );\n\t\tbar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113';\n\t\tfpsGraph.appendChild( bar );\n\n\t}\n\n\tvar msDiv = document.createElement( 'div' );\n\tmsDiv.id = 'ms';\n\tmsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none';\n\tcontainer.appendChild( msDiv );\n\n\tvar msText = document.createElement( 'div' );\n\tmsText.id = 'msText';\n\tmsText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';\n\tmsText.innerHTML = 'MS';\n\tmsDiv.appendChild( msText );\n\n\tvar msGraph = document.createElement( 'div' );\n\tmsGraph.id = 'msGraph';\n\tmsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0';\n\tmsDiv.appendChild( msGraph );\n\n\twhile ( msGraph.children.length < 74 ) {\n\n\t\tvar bar = document.createElement( 'span' );\n\t\tbar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131';\n\t\tmsGraph.appendChild( bar );\n\n\t}\n\n\tvar setMode = function ( value ) {\n\n\t\tmode = value;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 0:\n\t\t\t\tfpsDiv.style.display = 'block';\n\t\t\t\tmsDiv.style.display = 'none';\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tfpsDiv.style.display = 'none';\n\t\t\t\tmsDiv.style.display = 'block';\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\tvar updateGraph = function ( dom, value ) {\n\n\t\tvar child = dom.appendChild( dom.firstChild );\n\t\tchild.style.height = value + 'px';\n\n\t}\n\n\treturn {\n\n\t\tREVISION: 11,\n\n\t\tdomElement: container,\n\n\t\tsetMode: setMode,\n\n\t\tbegin: function () {\n\n\t\t\tstartTime = Date.now();\n\n\t\t},\n\n\t\tend: function () {\n\n\t\t\tvar time = Date.now();\n\n\t\t\tms = time - startTime;\n\t\t\tmsMin = Math.min( msMin, ms );\n\t\t\tmsMax = Math.max( msMax, ms );\n\n\t\t\tmsText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')';\n\t\t\tupdateGraph( msGraph, Math.min( 30, 30 - ( ms \/ 200 ) * 30 ) );\n\n\t\t\tframes ++;\n\n\t\t\tif ( time > prevTime + 1000 ) {\n\n\t\t\t\tfps = Math.round( ( frames * 1000 ) \/ ( time - prevTime ) );\n\t\t\t\tfpsMin = Math.min( fpsMin, fps );\n\t\t\t\tfpsMax = Math.max( fpsMax, fps );\n\n\t\t\t\tfpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')';\n\t\t\t\tupdateGraph( fpsGraph, Math.min( 30, 30 - ( fps \/ 100 ) * 30 ) );\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tstartTime = this.end();\n\n\t\t}\n\n\t}\n\n};\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c90117 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"6c90117\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<canvas id=\"swarm\" class=\"bg-animation\" width=\"1920\" height=\"937\" ><\/canvas>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-721d44c8 elementor-widget elementor-widget-heading\" data-id=\"721d44c8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><span class=\"elementor-heading-title elementor-size-default\">WE ARE<\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-476a67ee content_main_left_wrapper_top elementor-widget elementor-widget-heading\" data-id=\"476a67ee\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Coming Soon<\/h1>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4aa4393b elementor-widget elementor-widget-text-editor\" data-id=\"4aa4393b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\tOur website is under construction. We are working very hard to give you the best experience with this one.\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2935ab48 elementor-widget elementor-widget-html\" data-id=\"2935ab48\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"countdown\" class=\"datecountdown row\">\r\n<div id=\"day\"><\/div>\r\n<div id=\"hours\"><\/div>\r\n<div id=\"minutes\"><\/div>\r\n<div id=\"seconds\"><\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2930ba elementor-widget elementor-widget-html\" data-id=\"c2930ba\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"btn_wrapper\">\r\n<a class=\"btn_notify btn-hover btn-item\"><span><\/span>NOTIFY ME<\/a>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-b120eab notify-form  elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b120eab\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-973b05d contents_in \" data-id=\"973b05d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2a8bde1 elementor-widget elementor-widget-heading\" data-id=\"2a8bde1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><span class=\"close\">\u00d7<\/span>\n<small class=\"tagline\">STAY IN TOUCH<\/small><\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-174b755 elementor-widget elementor-widget-heading\" data-id=\"174b755\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"> <h2 class=\"site-title\">We Are Almost Here<\/h2> <\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-997a234 elementor-widget elementor-widget-heading\" data-id=\"997a234\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><div class=\"notify_desc\">Subscribe to our newsletter and we will send you a notification about the launch of our brand new site.<\/div><\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33c87b7 eael-contact-form-7-button-align-left eael-contact-form-7-button-custom elementor-widget elementor-widget-eael-contact-form-7\" data-id=\"33c87b7\" data-element_type=\"widget\" data-widget_type=\"eael-contact-form-7.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"eael-contact-form-7-wrapper\">\n                <div class=\"eael-contact-form eael-contact-form-7 eael-contact-form-33c87b7 placeholder-show eael-contact-form-align-default\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f5410-o1\" lang=\"en-US\" dir=\"ltr\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/820#wpcf7-f5410-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"5410\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"5.7.4\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f5410-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/div>\n<div class=\"contact-top\">\n\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email form-control\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Email Address*\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n\t<\/p>\n\t<div class=\"notify_submit_btn\">\n\t\t<p><input class=\"wpcf7-form-control has-spinner wpcf7-submit submit-btn\" type=\"submit\" value=\"SEND\" \/>\n\t\t<\/p>\n\t<\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n            <\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-1eff2657 content_main_right h-100\" data-id=\"1eff2657\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-158cac4e h-100 elementor-widget elementor-widget-html\" data-id=\"158cac4e\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"h_sidebar_slider h-100\">\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/header_sidebar_slider_1.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/contact_sidebar_image.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/header_sidebar_slider_1.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-10010a7 social_icons main_social_icons elementor-list-item-link-inline elementor-hidden-desktop elementor-hidden-tablet elementor-icon-list--layout-traditional elementor-widget elementor-widget-icon-list\" data-id=\"10010a7\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.facebook.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">FB<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/twitter.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">TW<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">IN<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5b7dc038 elementor-section-full_width elementor-section-height-full elementor-section-items-stretch offcanvas__area elementor-section-height-default\" data-id=\"5b7dc038\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-634d600a offcanvas__left\" data-id=\"634d600a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-4925866f offcanvas__middle\" data-id=\"4925866f\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3ee087e6 eael-hamburger--none offcanvas__links h-100 eael-simple-menu-hamburger-align-right elementor-widget elementor-widget-eael-simple-menu\" data-id=\"3ee087e6\" data-element_type=\"widget\" data-widget_type=\"eael-simple-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div data-hamburger-icon=\"&lt;i aria-hidden=&quot;true&quot; class=&quot;fas fa-bars&quot;&gt;&lt;\/i&gt;\" data-indicator-class=\"fas fa-angle-down\" data-dropdown-indicator-class=\"fas fa-angle-down\" class=\"eael-simple-menu-container eael-simple-menu-align-left eael-simple-menu--stretch eael-simple-menu-dropdown-align-left preset-2\" data-hamburger-breakpoints=\"{&quot;mobile&quot;:&quot;Mobile (&gt; 768px)&quot;,&quot;tablet&quot;:&quot;Tablet (&gt; 1024px)&quot;,&quot;none&quot;:&quot;None&quot;}\" data-hamburger-device=\"none\"><ul id=\"menu-theme-header-menu\" class=\"eael-simple-menu eael-simple-menu-dropdown-animate-to-top eael-simple-menu-indicator eael-simple-menu-vertical\"><li id=\"menu-item-4872\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4872\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/\">Home<\/a><\/li>\n<li id=\"menu-item-546\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-546\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/about\/\">About Us<\/a><\/li>\n<li id=\"menu-item-547\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-547\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/portfolio\/\">Portfolio<\/a><\/li>\n<li id=\"menu-item-548\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-548\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/contact\/\">Contact<\/a><\/li>\n<\/ul><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-525a8960 offcanvas__right\" data-id=\"525a8960\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-664ea5a4 elementor-widget elementor-widget-html\" data-id=\"664ea5a4\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"offcanvas__contact\">\r\n<h3>Get In Touch<\/h3>\r\n<ul>\r\n<li><a href=\"tel:+1 234 567 8899\">+1 234 567 8899<\/a>\r\n<\/li>\r\n\r\n<li><a href=\"mailto:hello@bramha.com\">hello@bramha.com<\/a>\r\n<\/li>\r\n\r\n<li>230 Norman Street New York,QC (USA) H8R 1A1<\/li>\r\n<\/ul>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1dec1853 elementor-widget elementor-widget-html\" data-id=\"1dec1853\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div>Design By The_Krishna 2023<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>FB TW IN WE ARE Coming Soon Our website is under construction. We are working very hard to give you the best experience with this one. NOTIFY ME \u00d7 STAY IN TOUCH We Are Almost Here Subscribe to our newsletter and we will send you a notification about the launch of our brand new site. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-820","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/820"}],"collection":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/comments?post=820"}],"version-history":[{"count":57,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/820\/revisions"}],"predecessor-version":[{"id":5547,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/820\/revisions\/5547"}],"wp:attachment":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/media?parent=820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}