CINXE.COM
EarthLink - Geospatial Social Media | Devpost
<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7 lte-ie9"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8 lte-ie9"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9 lte-ie9"> <![endif]--> <!--[if IE 9]> <html class="no-js lte-ie9"> <![endif]--> <!--[if gt IE 9]><!--> <html lang="en" class="no-js" xmlns:fb="http://ogp.me/ns/fb#" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" itemscope="itemscope" itemtype="http://schema.org/SoftwareApplication"> <!--<![endif]--> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# challengepost: http://ogp.me/ns/fb/challengepost#"> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-WCFRZ3V');</script> <!-- End Google Tag Manager --> <script type="text/javascript"> window.awsWafCookieDomainList = ['devpost.com'] </script> <script type="text/javascript" src="https://1723d2289425.us-east-1.sdk.awswaf.com/1723d2289425/7d12beff1256/challenge.js" defer></script> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <script>window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"f9082fa052","applicationID":"7341974","transactionName":"IQpdERFeXFVVRhpbCw8AHBYMV0ROUUZQQEsRDVwS","queueTime":1,"applicationTime":199,"agent":""}</script> <script>(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"f9082fa052",applicationID:"7341974"};;/*! For license information please see nr-loader-rum-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>g,gD:()=>h,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function g(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function h(e,t){if(!e)throw new Error(f);var r=g(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.274.0",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>d,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,d=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=h(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=m()[s[e]];p&&p.push([f,e,r,a]);return a},get:v,listeners:h,context:g,buffer:function(e,t){const r=m();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!m()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=h(e).concat(t)}function h(e){return n[e]||[]}function v(t){return d[t]=d[t]||e(f,t)}function m(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>P});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),g=r(384),p=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],v=["setErrorHandler","finished","addToTrace","addRelease"];var m=r(1863),b=r(2614),y=r(993);var w=r(2646),A=r(3434);function R(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function E(){const e=(0,g.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function _(e,t,g=!1){t||(0,c.Ak)(e,"api");const h={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var E="api-",_=E+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(E,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}h.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,m.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},h.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),R(w,e,t,{customAttributes:r,level:i})},v.forEach((e=>{h[e]=j(E,e,!0,"api")})),h.addPageAction=j(E,"addPageAction",!0,n.K7.genericEvents),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(E,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},h.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},h.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},h.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},h[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},h[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},h.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const S=T.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,m.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,m.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,m.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[(0,m.t)(),...arguments],r?null:this,i,w),r?void 0:this}}function k(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{S[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),h.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(E,"routeName",!0,n.K7.spa),h.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,m.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},d.RI?(0,u.GG)((()=>k()),!0):k(),h}var N=r(9417),T=r(8122);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},j={};var k=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let O=!1;function P(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:l={},exposed:f=!0}=t;l.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,N.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");j[e]=(0,T.a)(t,S);const r=(0,g.nY)(e);r&&(r.loader_config=j[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},d.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const h=(0,N.D0)(e.agentIdentifier),v=[c.beacon,c.errorBeacon];O||(h.proxy.assets&&(I(h.proxy.assets),v.push(h.proxy.assets)),h.proxy.beacon&&v.push(h.proxy.beacon),E(),(0,g.US)("activatedFeatures",k.B),e.runSoftNavOverSpa&&=!0===h.soft_navigations.enabled&&h.feature_flags.includes("soft_nav")),l.denyList=[...h.ajax.deny_list||[],...h.ajax.block_internal?v:[]],l.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,l),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=_(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),O=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.274.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={296:"sha512-gkYkZDAwQ9PwaDXs2YM+rNIdRej1Ac1mupWobRJ8eahQcXz6/sunGZCKklrzi5kWxhOGRZr2tn0rEKuLTXzfAA=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={840:0,374:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(7603);var l=i(1687),f=i(4234),g=i(5289),p=i(6154),h=i(384);const v=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function m(e){return!!(0,h.dV)().o.MO&&v(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(v(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(296).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return m(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var R=i(9908),E=i(2843),x=i(3878),_=i(782),N=i(1863);class T extends y{static featureName=_.T;constructor(e,t=!0){super(e,_.T,t),p.RI&&((0,E.u)((()=>(0,R.p)("docHidden",[(0,N.t)()],void 0,_.T,this.ee)),!0),(0,x.sp)("pagehide",(()=>(0,R.p)("winPagehide",[(0,N.t)()],void 0,_.T,this.ee))),this.importAggregator(e))}}var S=i(3969);class j extends y{static featureName=S.TZ;constructor(e,t=!0){super(e,S.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,h.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,h.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,T,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width"> <title>EarthLink - Geospatial Social Media | Devpost</title> <meta name="description" content="EarthLink - Geospatial Social Media - EarthLink is the first geospatial social media platform that uses 3D photorealistic tiles to enable users to ..." /> <meta property="fb:app_id" content="115745995110194" /> <meta property="og:title" content="EarthLink - Geospatial Social Media" /> <meta property="og:description" content="EarthLink is the first geospatial social media platform that uses 3D photorealistic tiles to enable users to create and share immersive experiences with their friends." /> <meta property="og:type" content="challengepost:app" /> <meta property="og:site_name" content="Devpost" /> <meta property="og:image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/002/676/212/datas/medium.png" /> <meta property="og:url" content="https://devpost.com/software/earthlink" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@Devpost" /> <meta name="twitter:title" content="EarthLink - Geospatial Social Media" /> <meta name="twitter:description" content="EarthLink is the first geospatial social media platform that uses 3D photorealistic tiles to enable users to create and share immersive experiences with their friends." /> <meta name="twitter:image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/002/676/212/datas/medium.png" /> <meta name="twitter:domain" content="devpost.com" /> <meta name="twitter:url" content="https://devpost.com/software/earthlink" /> <meta itemprop="name" content="EarthLink - Geospatial Social Media" /> <meta itemprop="description" content="EarthLink is the first geospatial social media platform that uses 3D photorealistic tiles to enable users to create and share immersive experiences with their friends." /> <meta itemprop="image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/002/676/212/datas/medium.png" /> <meta itemprop="screenshot" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/002/676/212/datas/medium.png" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="Sm8oZHBhVgZKTZkUhZBgeP7qMHmZDlRrmpJv4fWOeCLmBr7PwcLto/l5vfQm/5sGSyzJy28p7012wilGVkKcpg==" /> <!--[if gt IE 7]><!--> <script src="https://kit.fontawesome.com/0c13a9f144.js" crossorigin="anonymous"></script> <link rel="stylesheet" media="screen" href="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2-9f6db45ae28c3f142e5568add2b33f098323bf45106215f33013b431cdc2eb86.css" /> <link rel="stylesheet" media="screen" href="https://d2dmyh35ffsxbl.cloudfront.net/assets/home/home_application-0c78d29bcd70511da344dde76d14e5dccf6273f3d519aed15d0d183a69c7792e.css" /> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/modernizr-58ea6a8d3054105c74975c648df5d77247ea7b62e2c3ed291aace5e4139d5eb5.js"></script> <!--<![endif]--> </head> <body id="body-softwares" class="foundation-grid action-show controller-softwares engine-home"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WCFRZ3V" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!--googleoff: anchor--> <!--[if lte IE 9 ]> <div id="unsupported_browser_version" class="persistent_message alert-box alert"> <p> We've detected that you are using an unsupported browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to Internet Explorer 10 or higher. </p> </div> <![endif]--> <!--googleon: anchor--> <header id="global-nav"> <div class="contain-to-grid hide-for-large-up"> <nav class="top-bar" data-topbar> <ul class="title-area top-bar-section"> <li> <a class="toggle-topbar has-dropdown text-center" data-target-menu="world" id="hamburger" href="#"> <i class="ss-icon ss-rows"></i> </a> </li> <li class="name"> <span id="logo"> <a href="https://devpost.com"> <img alt="Devpost" class="show-for-small" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <img alt="Devpost" class="show-for-medium-up" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-25d0005ec83e3b9ef6fce93235bb6d642d7c828f31758ebdb5b7ee87de7d45c3.svg" /> </a></span> </li> <li id="mobile-search-form-container" class="search-form-container mobile hide"> <form class="flex-row align-items-center search-form" action="https://devpost.com/hackathons" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" /> <div class="search-field-wrapper flex-row align-items-stretch mx-4"> <span class="align-items-center"> <i class="fas fa-search search-icon"></i> </span> <input type="search" name="search" id="search" title="Search" placeholder="Search hackathons..." /> <a href="#" class="align-items-center close-icon" data-toggle-mobile-search> <i class="fas fa-times"></i> </a> </div> </form> </li> <li class="right logged-out"> <ul> <li> <a id="main-link" href="https://secure.devpost.com/users/login?ref=top-nav-login"> Log in </a> </li> <li class="show-for-medium-up"> <a id="signup-link" href="https://secure.devpost.com/users/register?ref_content=signup_global_nav&ref_feature=signup&ref_medium=button"> <span class="inner-button"> Sign up </span> </a> </li> </ul> </li> <li class="search-expand-container mobile right"> <a data-toggle-mobile-search><i class="fas fa-search"></i></a> </li> </ul> <section class="top-bar-section" data-top-nav-menu="user"> </section> <section class="top-bar-section" data-top-nav-menu="world"> <ul class="right"> <li class="divider"></li> <li class="mobile-product-menu panel-container"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/public-hackathons"> <img alt="Devpost" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <p class="title bold">Devpost</p> </a> <div class="panel-content"> <a href="https://devpost.com/hackathons">Hackathons</a> <a href="https://devpost.com/software">Projects</a> <a href="https://info.devpost.com/product/public-hackathons">Host a public hackathon</a> </div> </li> <li class="divider"></li> <li class="mobile-product-menu panel-container"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/devpost-for-teams"> <img alt="Devpost for Teams" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <p class="title bold">Devpost for Teams</p> </a> <div class="panel-content"> <a href="https://devpost.team">Teams login</a> <a href="https://info.devpost.com/product/devpost-for-teams">Request a demo</a> </div> </li> <li class="divider"></li> <li> <a class="main-link" data-role="discover" href="https://devpost.com/hackathons"> Hackathons </a></li> <li class="divider"></li> <li> <a class="main-link" data-role="projects" href="https://devpost.com/software"> Projects </a></li> <li class="divider"></li> <li> <a class="main-link" href="https://info.devpost.com/blog">Blog</a> </li> <li class="divider"></li> <li> <a class="main-link" data-role="for-orgs" href="https://info.devpost.com"> Host a hackathon </a></li> </ul> </section> </nav> </div> <div class="contain-to-grid hide-for-small hide-for-medium"> <nav class="top-bar" data-topbar> <ul class="title-area"> <li class="name"> <span id="logo"> <a href="https://devpost.com"> <img alt="Devpost" class="show-for-small" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <img alt="Devpost" class="show-for-medium-up" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-25d0005ec83e3b9ef6fce93235bb6d642d7c828f31758ebdb5b7ee87de7d45c3.svg" /> </a></span> </li> </ul> <section class="top-bar-section"> <ul class="left"> <li class="divider"></li> <li class="has-dropdown"> <a class="main-link" href="#">Product</a> <ul class="dropdown float-left"> <li id="floating-menu-wrapper"> <div class="floating-menu"> <div class="panel-container"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/public-hackathons"> <img alt="Devpost" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Grow your developer ecosystem and promote your platform.</p> </div> </a> <div class="panel-content"> <a href="https://devpost.com/hackathons">Hackathons</a> <a href="https://devpost.com/software">Projects</a> <a href="https://info.devpost.com/product/public-hackathons">Host a public hackathon</a> </div> </div> <div class="panel-container"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/devpost-for-teams"> <img alt="Devpost for Teams" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Drive innovation, collaboration, and retention within your organization.</p> </div> </a> <div class="panel-content"> <a href="https://devpost.team">Teams login</a> <a href="https://info.devpost.com/product/devpost-for-teams">Request a demo</a> </div> </div> </div> </li> </ul> </li> <li class="divider"></li> <li> <a class="main-link" data-role="discover" href="https://devpost.com/hackathons"> Hackathons </a></li> <li class="divider"></li> <li> <a class="main-link" data-role="projects" href="https://devpost.com/software"> Projects </a></li> <li class="divider"></li> <li> <a class="main-link" href="https://info.devpost.com/blog">Blog</a> </li> </ul> <div class="right"> <ul> <li> <a class="main-link" data-role="for-orgs" href="https://info.devpost.com">Host a hackathon</a> </li> <li class="search-expand-container desktop main-link"> <a data-toggle-desktop-search><i class="fas fa-search"></i></a> </li> <li id="desktop-search-form-container" class="search-form-container hide"> <form class="flex-row align-items-center search-form" action="https://devpost.com/hackathons" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" /> <div class="search-field-wrapper flex-row align-items-stretch mx-4"> <span class="align-items-center"> <i class="fas fa-search search-icon"></i> </span> <input type="search" name="search" id="search" title="Search" placeholder="Search hackathons..." /> <a href="#" class="align-items-center close-icon" data-toggle-desktop-search> <i class="fas fa-times"></i> </a> </div> </form> </li> </ul> <ul> <li> <a id="main-link" href="https://secure.devpost.com/users/login?ref=top-nav-login"> Log in </a> </li> <li class="show-for-medium-up"> <a id="signup-link" href="https://secure.devpost.com/users/register?ref_content=signup_global_nav&ref_feature=signup&ref_medium=button"> <span class="inner-button"> Sign up </span> </a> </li> </ul> </div> </section> </nav> </div> </header> <section id="container" class=""> <header class="page-header text-center" id="software-header"> <div class="row"> <div class="small-12 columns"> <h1 id="app-title">EarthLink - Geospatial Social Media</h1> <p class="large"> EarthLink is the first geospatial social media platform that uses 3D photorealistic tiles to enable users to create and share immersive experiences with their friends. </p> </div> </div> <div class="row"> <div class="small-12 columns"> <div class="software-likes"> <div data-like="base"> <a class="like-button button radius secondary" href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bsoftware_id%5D=576618&flow%5Bname%5D=like_software&return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fearthlink"> <span class="ss-icon ss-heart"></span> Like <span class="side-count">5</span> </a> </div> </div> <a id="software-comment-button" class="button radius comment-button" href="/software/earthlink#updates"> <span class="ss-icon ss-quote"></span> Comment <span class="side-count">3</span> </a> </div> </div> </header> <nav id="software-nav"> <div class="row"> <div class="large-12 columns"> <ul class="left no-bullet"> <li> <h4> <a class="active" href="/software/earthlink">Story</a> </h4> </li> <li> <h4> <a href="/software/earthlink#updates">Updates</a> </h4> </li> </ul> </div> </div> </nav> <article id="app-details" class="content-section"> <div class="row"> <div class="large-9 columns" id="app-details-left"> <div id="gallery"> <ul data-slick="true"> <li> <div class="flex-video "> <iframe type="text/html" width="660" height="371" src="https://www.youtube.com/embed/C_pWSJ8BNm0?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent" allowfullscreen="allowfullscreen" frameborder="0" allowscriptaccess="always" webkitAllowFullScreen="true" wmode="transparent" mode="transparent" class="video-embed"></iframe> </div> </li> <li class="text-center"> <a data-lightbox="2676569" data-title="home view showing a whole world" href="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/676/569/datas/original.png"> <img alt="EarthLink - Geospatial Social Media – screenshot 1" class="software_photo_image image-replacement" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/thumbnail-placeholder-8c916ef4da99a222ce6ece077c71c7e282f071f830747b2abb5718018cbfa699.gif';" src="//d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/676/569/datas/gallery.jpg" /> </a> <span class="expand-tag"><i class="fas fa-expand"></i></span> <p> <i>home view showing a whole world</i> </p> </li> <li class="text-center"> <a data-lightbox="2676786" data-title="view of 3d tile and video" href="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/676/786/datas/original.png"> <img alt="EarthLink - Geospatial Social Media – screenshot 2" class="software_photo_image image-replacement" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/thumbnail-placeholder-8c916ef4da99a222ce6ece077c71c7e282f071f830747b2abb5718018cbfa699.gif';" src="//d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/676/786/datas/gallery.jpg" /> </a> <span class="expand-tag"><i class="fas fa-expand"></i></span> <p> <i>view of 3d tile and video</i> </p> </li> <li class="text-center"> <a data-lightbox="2676788" data-title="view of 3d tile and firework effect" href="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/676/788/datas/original.png"> <img alt="EarthLink - Geospatial Social Media – screenshot 3" class="software_photo_image image-replacement" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/thumbnail-placeholder-8c916ef4da99a222ce6ece077c71c7e282f071f830747b2abb5718018cbfa699.gif';" src="//d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/676/788/datas/gallery.jpg" /> </a> <span class="expand-tag"><i class="fas fa-expand"></i></span> <p> <i>view of 3d tile and firework effect</i> </p> </li> </ul> </div> <div> <h2>Inspiration</h2> <p>People enjoy sharing their experiences with others on social media, including traditional text, images, and videos. To enrich the content of sharing, I have come up with an idea - influencers can share their content with a 3D realistic view of the place where they are, allowing their followers to feel like they're there too.</p> <h2>What it does</h2> <p>I have created a social media platform that transforms the earth into a canvas, allowing influencers to share their travel experiences in a unique and interactive way. Users can choose a location they are visiting and create a 3D map of that place, adding text, marks, 3D models, videos, weather simulations, and even planes to showcase their journey. The platform allows users to search for friends and connect with others across the globe, and when they zoom in on a specific location, they will be amazed by the photorealistic tiles combined with the stories shared by the influencers. This platform offers a new way for people to share their story.</p> <h2>How I built it</h2> <p>I have use the Google 3D photorealistic tile. The renderer used is Cesium. The other part is built with Svelte.js.</p> <h2>Challenges I ran into</h2> <p>I wasn't a web developer before starting this project. In fact, this is the first time I've ever tried to build a web application. I had to learn Svelte.js, Cesium.js, and Google's 3D photorealistic tile from scratch. Believe it or not, I spent 70% of my time on this project learning these technologies. It's been a challenging but rewarding experience, and I'm grateful for the opportunity to develop my skills. I'm excited to see how I can apply what I've learned in the future.</p> <h2>Accomplishments that I'm proud of</h2> <p>I feel like I have the power to shape the earth itself, as if it were my canvas, whenever I write code. It's a magical feeling, being able to create and control something so powerful and complex with just a few lines of code.</p> <h2>What I learned</h2> <p>Committed to learning and self-improvement, even after a long day at work Google's 3D photorealistic GIS Cesium.js Svelte.js</p> <h2>Category</h2> <p>EarthLink resist easy categorization, as it incorporates elements of both entertainment and travel. Its user-generated storytelling feature makes it akin to an entertainment and event platform, while its ability to share information about famous attractions visited by users aligns it with travel and local delivery platforms. Thus, it's challenging to categorize EarthLink neatly into any of the five listed categories.</p> <h2>What's next for EarthLink</h2> <p>This is still a pure frontend project. I may use Firebase to provide a backend environment to EarthLink.</p> </div> <div id="built-with" class=""> <h2>Built With</h2> <ul class="no-bullet inline-list"><li><span class="cp-tag">cesiumjs</span></li><li><span class="cp-tag recognized-tag"><a href="https://devpost.com/software/built-with/javascript">javascript</a></span></li><li><span class="cp-tag">photorealistic-tile</span></li></ul> </div> <nav class="app-links section"> <h2>Try it out</h2> <ul data-role="software-urls" class="no-bullet"> <li><a target="_blank" title="https://github.com/lky2431/earth_link" rel="nofollow" href="https://github.com/lky2431/earth_link"> <i class="ss-icon ss-link"></i> <span>github.com</span> </a></li> </ul> </nav> </div> <aside class="large-3 columns" id="app-details-right"> <div id="submissions" class="section"> <h4 class="clearfix"> Submitted to </h4> <ul class="software-list-with-thumbnail"> <li> <figure class="software-list-thumbnail challenge_avatar"> <a href="https://googlesimmersive.devpost.com/"><img alt="image" class="thumbnail_image image-replacement" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="//d112y698adiu2z.cloudfront.net/photos/production/challenge_thumbnails/002/602/058/datas/medium.png" /></a> </figure> <div class="software-list-content"> <p> <a href="https://googlesimmersive.devpost.com/">Google’s Immersive Geospatial Challenge</a> </p> <ul class="no-bullet"> <li> <span class="winner label radius small all-caps">Winner</span> Photorealistic 3D Tiles | Best of Sustainability </li> </ul> </div> </li> </ul> </div> <section id="app-team"> <h4 class="clearfix"> Created by </h4> <ul class="no-bullet"> <li class="software-team-member" itemprop="member"> <div class="row"> <div class="small-2 large-4 columns"> <figure> <a class="user-profile-link" href="https://devpost.com/lky2431"><img alt="Mike Lam" class="software-member-photo user-photo photo_image image-replacement" title="Mike Lam" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/002/807/621/datas/profile.png" /></a> </figure> </div> <div class="small-10 large-8 columns"> <a class="user-profile-link" href="https://devpost.com/lky2431">Mike Lam</a> <span class="follow-button-wrapper" data-context="software-detail" data-layout="condensed" data-follow-through-id="1110014"></span> <br> <small></small> </div> </div> </li> </ul> </section> </aside> </div> </article> <section id="share-and-like"> <div class="row"> <div class="small-12 columns"> <div class="clearfix"> <div class="left"> <div class="software-likes"> <div data-like="base"> <a class="like-button button radius secondary" href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bsoftware_id%5D=576618&flow%5Bname%5D=like_software&return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fearthlink"> <span class="ss-icon ss-heart"></span> Like <span class="side-count">5</span> </a> </div> <span class="like-counts"> 5 people like this: </span> <ul class="like-users inline-list"> <li> <a class="user-profile-link" href="https://devpost.com/lky2431"><img alt="Mike Lam" class="user-photo has-tip user-photo photo_image image-replacement" title="Mike Lam" data-tooltip="69950155340140" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/002/807/621/datas/medium.png" /></a> </li> <li> <a class="user-profile-link" href="https://devpost.com/r0628i"><img alt="Jack Chan" class="user-photo has-tip user-photo facebook_avatar_image image-replacement" title="Jack Chan" data-tooltip="69950155339940" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="https://lh3.googleusercontent.com/a/ACg8ocJzg8sbfbcAa4ZTEV2WZnmLqHY1xRTdXGdG48fc0yy52w=s96-c?type=square" /></a> </li> <li> <a class="user-profile-link" href="https://devpost.com/360socialms"><img alt="360-SMS WowVideo" class="user-photo has-tip user-photo facebook_avatar_image image-replacement" title="360-SMS WowVideo" data-tooltip="69950155339700" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="https://lh3.googleusercontent.com/a/ACg8ocJgZoaTUS-URBvg9fp6pZvL1RVJspJBOL8D0vf-WBkQeXGE=s96-c?type=square" /></a> </li> <li> <a class="user-profile-link" href="https://devpost.com/tsotros"><img alt="Manolis Tsotros" class="user-photo has-tip user-photo photo_image image-replacement" title="Manolis Tsotros" data-tooltip="69950155339480" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/002/368/042/datas/medium.jpg" /></a> </li> <li> <a class="user-profile-link" href="https://devpost.com/benson-e-benny"><img alt="Benson E B" class="user-photo has-tip user-photo facebook_avatar_image image-replacement" title="Benson E B" data-tooltip="69950155339240" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="https://lh3.googleusercontent.com/a/ACg8ocLtZMMNmGjLz1qi51_to6rNn1SMl6AZ7VQdDd71cQBAKw=s96-c?type=square" /></a> </li> </ul> </div> </div> <div class="right hide-for-small"> <div id="software-share" class="hide" data-add-this-buttons="true"> Share this project: <ul class="h-nav clearfix inline-list" id="social-links"> <li id="promote-twitter"> <div class="social-icon"> <div class="addthis_32x32_style addthis_toolbox addthis_default_style" addthis:url="https://devpost.com/software/earthlink?utm_campaign=portfolio-share&utm_medium=twitter&utm_source=cp" addthis:title="Check out EarthLink - Geospatial Social Media" addthis:description="https://devpost.com/software/earthlink"> <a class="addthis_button_twitter" tw:count="false" tw:counturl="https://devpost.com/software/earthlink" tw:url="https://devpost.com/software/earthlink?utm_campaign=portfolio-share&utm_medium=twitter&utm_source=cp" tw:via="Devpost" tw:text="Check out EarthLink - Geospatial Social Media"> </a> </div> </div> </li> <li id="promote-fb-li"> <div class="social-icon"> <div class="addthis_32x32_style addthis_toolbox addthis_default_style" addthis:url="https://devpost.com/software/earthlink" addthis:title="EarthLink - Geospatial Social Media" addthis:description=""> <div class="custom_images"> <a class="addthis_button_facebook" fb:like:show_faces="false"> </a> </div> </div> </div> </li> <li id="promote-reddit-li"> <div class="social-icon"> <a class="addthis_32x32_style addthis_button_reddit" addthis:url="https://devpost.com/software/earthlink?utm_campaign=portfolio-share&utm_medium=reddit&utm_source=cp" addthis:title="EarthLink - Geospatial Social Media" ></a> </div> </li> </ul> </div> </div> </div> </div> </div> </section> <article class="content-section"> <div class="row"> <div class="large-12 columns software-updates"> <h2 id="updates">Updates</h2> <article class="content-section software-update with-sidebar" data-commentable-id="404311"> <div class="row"> <div class="large-8 small-12 columns"> <div data-region="actions"></div> <div class="media"> <div class="media-left"> <a class="update-user-avatar user-profile-link" href="https://devpost.com/lky2431"><img alt="Mike Lam" class="user-avatar user-photo photo_image image-replacement" title="Mike Lam" onerror="this.onerror=null;this.src='https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png';" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/002/807/621/datas/profile.png" /></a> </div> <div class="media-content"> <p class="author small"> <a class="user-profile-link" href="https://devpost.com/lky2431">Mike Lam</a> started this project <span class="light-text"> — <a class="timestamp light-text" href="/software/earthlink/updates/404311"> <time class="timeago" datetime="2023-11-19T12:33:26-05:00"> Nov 19, 2023 12:33 PM EST </time> </a> </span> </p> <p><i>Leave feedback in the comments!</i></p> <section class="software-update-comments" data-layout="comments"> <div data-region="load-more"></div> <div data-region="comments"></div> <p class="join-the-conversation"> <strong><a href="https://secure.devpost.com/users/login">Log in</a></strong> or <strong><a href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bcommentable_id%5D=404311&flow%5Bname%5D=comment_on_software_update&return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fearthlink">sign up for Devpost</a></strong> to join the conversation. </p> </section> </div> </div> </div> <div class="columns"></div> </div> </article> </div> </div> </article> </section> <footer id="devpost-footer"> <div class="row body"> <div class="small-6 large-3 columns with-bottom-margin"> <nav> <h4>Devpost</h4> <ul> <li><a href="https://info.devpost.com/about">About</a></li> <li><a href="https://info.devpost.com/careers">Careers</a></li> <li><a href="https://info.devpost.com/contact">Contact</a></li> <li><a href="https://help.devpost.com/">Help</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns with-bottom-margin"> <nav> <h4>Hackathons</h4> <ul> <li><a href="https://devpost.com/hackathons">Browse hackathons</a></li> <li><a href="https://devpost.com/software">Explore projects</a></li> <li><a href="https://info.devpost.com">Host a hackathon</a></li> <li><a href="https://info.devpost.com/guides">Hackathon guides</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns"> <nav> <h4>Portfolio</h4> <ul> <li><a href="https://devpost.com/portfolio/redirect?page=projects">Your projects</a></li> <li><a href="https://devpost.com/portfolio/redirect?page=hackathons">Your hackathons</a></li> <li><a href="https://devpost.com/settings">Settings</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns"> <nav> <h4>Connect</h4> <ul class="social-links"> <li> <a href="https://twitter.com/devpost"> <div class="icon"> <i class="fab fa-twitter"></i> </div> <span> Twitter </span> </a> </li> <li> <a href="https://discord.com/invite/HP4BhW3hnp"> <div class="icon"> <i class="fab fa-discord"></i> </div> <span> Discord </span> </a> </li> <li> <a href="https://www.facebook.com/devposthacks" target="_blank"> <div class="icon"> <i class="fab fa-facebook-f"></i> </div> <span> Facebook </span> </a> </li> <li> <a href="https://www.linkedin.com/company/devpost/" target="_blank"> <div class="icon"> <i class="fab fa-linkedin-in"></i> </div> <span> LinkedIn </span> </a> </li> </ul> </nav> </div> </div> <div class="legal-bar-container"> <nav class="row"> <div class="columns"> <div class="legal-bar"> <div class="copyright-notice">© 2024 Devpost, Inc. All rights reserved.</div> <ul> <li><a href="https://info.devpost.com/legal/community-guidelines">Community guidelines</a></li> <li><a href="https://info.devpost.com/legal/security">Security</a></li> <li><a href="https://info.devpost.com/legal/california-consumer-privacy-act">CA notice</a></li> <li><a href="https://info.devpost.com/legal/privacy-policy">Privacy policy</a></li> <li><a href="https://info.devpost.com/legal/terms-of-service">Terms of service</a> </ul> </div> </div> </nav> </div> </footer> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/platform-880b32e6224574219a6262682bf30232e6d3cf413fbad0b34ef1dc688bcd0e81.js"></script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2-a3ac820ed12013fcadf17d797c6a74bdb299123048bb2d192e8aab1f460dc8dd.js"></script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/home/home_application-0dbf2c6bbe8e88a45ae9fcc471fb499fc7a3e7b01f2f9a530e92566522736d96.js"></script> <script type="text/javascript" charset="utf-8"> (function() { mixpanel.identify("c4d443ab11b89792063610697d82a0a1f33fbe0f9af0a73bd49e00236008f03f2905d0012ed2eba06583a26c9207287299dd"); mixpanel.register({}); })(); </script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/slick-be61a9e761cc4aeb92940d6e5e9745b77acadbdaedada42659083117c28c4d00.js"></script> <script type="text/javascript"> (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <script type="text/javascript"> (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); var addthis_config = { data_ga_property: "UA-2233558-21", ui_508_compliant: true, ui_use_addressbook: true, ui_email_note: "I thought you might be interested in EarthLink - Geospatial Social Media - EarthLink is the first geospatial social media platform that uses 3D photorealistic tiles to enable users to create and share immersive experiences with their friends. It was built with photorealistic-tile, cesiumjs, and javascript.", ui_email_from: "" }; var addthis_share = { url_transforms: { shorten: { twitter: 'bitly' } }, shorteners: { bitly: {} }, email_template: "software_share_template", email_vars: { Title: "EarthLink - Geospatial Social Media", Subject: "Check out this project on Devpost", HomepageLink: "https://devpost.com/?utm_campaign=friends_share&utm_medium=email" }, passthrough : { twitter: { via: "Devpost", text: "Check out EarthLink - Geospatial Social Media" }, facebook: { app_id: 115745995110194, redirect_uri: "https://devpost.com/software/earthlink" } } }; var DEVPOST_ADDTHIS = { show: function() { $('[data-add-this-buttons]').each(function() {$(this).removeClass("hide")}); }, hide: function() { $('[data-add-this-buttons]').each(function() {$(this).addClass("hide")}); } } </script> <script type="text/javascript" charset="utf-8"> CP.env.addRoutes({ follows_url: "https://devpost.com/follows", search_softwares_url: "https://devpost.com/software/search", new_software_url: "https://devpost.com/software/new", search_hackathons_url: "https://devpost.com/api/hackathons", notifications_url: "https://devpost.com/notifications", api: { users_url: "https://api.devpost.com/users" } }) new Reimagine2(); $(function onDocumentReady() { CP.Home.SoftwareCommentButton.setup(); new CP.ChallengeStateInfoTzConverter( '#app-details', '[data-date-info-tag]', '[data-dates-text]', '' ).convert("Edit up to the submission deadline: "); new CP.GifPlayer CP.Carousel.setup() new CP.Home.EditableContribution('[data-contribution="editable-contribution"]') new CP.Home.LikesModal() CP.Historic.setup(".software-updates"); ventChannel().trigger("updates:list", "earthlink"); CP.LinkCollectionTracker.setup(".recognized-tag a", "#app-details-right").track( "Tag Gallery", { "Tag displayed on": "software details page"} ); new CP.Home.SoftwareLinks("[data-role=software-urls]").enhance(); CP.Home.DismissableMessage.setup("[data-alert]"); CP.ChallengeStateInfoTimeago.setup('#submissions, #draft-submissions'); CP.SendFormOnCommandEnter.setup($("#masqueradee")); (function(inputs) { if (typeof inputs.cp_autocomplete === "function") inputs.cp_autocomplete(); inputs.on('click', function(event) { return false; }); })($("#masqueradee")); var FollowButtonApp = new CP.FollowButtonApp({ user: { screen_name: "", follow_through_id: 0 }, urls: { register_url: "https://secure.devpost.com/users/register", user_follows_url: "https://devpost.com//follows", follow_through_url: "https://devpost.com/software_members/follows", follow_request_url: "https://devpost.com/follow_requests" }, follow_through_scope: "software_member" }); FollowButtonApp.start(); var appOptions = {}; CP.Mn.app.start(appOptions); }); </script> <!--[if lt IE 9 ]> <script type="text/javascript"> $(function onDocumentReady() { CP.IE.Notifications.setup(); }); </script> <![endif]--> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebSite", "url": "https://devpost.com/", "potentialAction": { "@type": "SearchAction", "target": "https://devpost.com/software/search?query={query}", "query-input": "name=query" } } </script> </body></html>