/*
 * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

// ------ Main bundle for example application ------

require("example-frontend");
require("style.css");
