Avoid compiler/optimizer crash (StackOverflowError).
authorTomas Zeman <tomas@functionals.cz>
Tue, 11 May 2021 14:10:07 +0200
changeset 43 1152fc8faf63
parent 42 e6e070b3a80f
child 44 ad85035e4d90
Avoid compiler/optimizer crash (StackOverflowError). Code cleanup.
build.sc
shared/src/main/scala/fontawesome/generic/FA.scala
--- a/build.sc	Tue May 11 10:59:51 2021 +0200
+++ b/build.sc	Tue May 11 14:10:07 2021 +0200
@@ -103,13 +103,13 @@
     ujson.read(os.read! pwd / "icons.json").obj.map(e => (e._1, e._2.obj("styles").arr.map(_.str).toSet)).toList
   }
 
-  private def tpl(d: IcoDef): String = {
+  private def tpl(d: IcoDef): Set[String] = {
     val sym = d._1
     d._2.map {
-      case "brands" =>  s"""      val ${camelCase(s"fab-$sym")}: T = fab("$sym")\n"""
-      case "solid" =>   s"""      val ${camelCase(s"fas-$sym")}: T = fas("$sym")\n"""
-      case "regular" => s"""      val ${camelCase(s"far-$sym")}: T = far("$sym")\n"""
-    }.mkString
+      case "brands" =>  s"""  def ${camelCase(s"fab-$sym")}: FA = fab("$sym")"""
+      case "solid" =>   s"""  def ${camelCase(s"fas-$sym")}: FA = fas("$sym")"""
+      case "regular" => s"""  def ${camelCase(s"far-$sym")}: FA = far("$sym")"""
+    }
   }
 
   override def generatedSources: Sources = T.sources{
@@ -117,27 +117,26 @@
     val icons = parseIcons()
     write(d / "generated.scala",
       s"""
-        | package fontawesome.generic
-        | import scalatags.generic._
-        | class GenericFA[Builder, Output <: FragT, FragT](
-        |   val bun: Bundle[Builder, Output, FragT]) {
+        |package fontawesome.generic
+        |import scalatags.generic._
+        |class GenericFA[Builder, Output <: FragT, FragT](
+        |  val bun: Bundle[Builder, Output, FragT]) {
         |
-        |   import bun.all._
+        |  import bun.all._
         |
-        |   type T = FA[Builder, Output, FragT]
-        |
-        |   val faStack: Modifier = cls := "fa-stack fa-lg"
+        |  val faStack: Modifier = cls := "fa-stack fa-lg"
         |
-        |   implicit val bundle: Bundle[Builder, Output, FragT] = bun
-        |   implicit def fa2tag(x: T): TypedTag[Builder, Output, FragT] = x()
+        |  implicit val bundle: Bundle[Builder, Output, FragT] = bun
+        |  //implicit def fa2tag(x: FA): TypedTag[Builder, Output, FragT] = x()
+        |  implicit def fa2mod(x: FA): Modifier = x()
         |
-        |   private def fab(w: String): T = FA(FaStyle.Brands, w)
-        |   private def far(w: String): T = FA(FaStyle.Regular, w)
-        |   private def fas(w: String): T = FA(FaStyle.Solid, w)
+        |  private def fab(w: String): FA = FA(FaStyle.Brands, w)
+        |  private def far(w: String): FA = FA(FaStyle.Regular, w)
+        |  private def fas(w: String): FA = FA(FaStyle.Solid, w)
         |
-        |   ${icons map tpl mkString}
+        |${icons flatMap tpl mkString "\n"}
         |
-        | }
+        |}
       """.stripMargin)
     d
   }
--- a/shared/src/main/scala/fontawesome/generic/FA.scala	Tue May 11 10:59:51 2021 +0200
+++ b/shared/src/main/scala/fontawesome/generic/FA.scala	Tue May 11 14:10:07 2021 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2020 Tomas Zeman <tomas@functionals.cz>
+ * Copyright 2017-2021 Tomas Zeman <tomas@functionals.cz>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@
   }
 }
 
-case class FA[Builder, Output <: FragT, FragT](fs: FaStyle, what: String,
+case class FA(fs: FaStyle, what: String,
   _fw: Boolean = true, _li: Boolean = false,
   _border: Boolean = false, _pull: Option[Pull] = None,
   _animate: Option[Animate] = None, _rotate: Option[Rotate] = None,
@@ -68,40 +68,38 @@
   _inverse: Boolean = false, _stack: Option[Stack] = None,
   _css: Option[String] = None) {
 
-  type Self = FA[Builder, Output, FragT]
+  def li: FA = copy(_li = true, _fw = false)
+  def noFw: FA = copy(_fw = false)
 
-  def li: Self = copy(_li = true, _fw = false)
-  def noFw: Self = copy(_fw = false)
+  def border: FA = copy(_border = true)
+  def pullLeft: FA = copy(_pull = Some(PullLeft))
+  def pullRight: FA = copy(_pull = Some(PullRight))
 
-  def border: Self = copy(_border = true)
-  def pullLeft: Self = copy(_pull = Some(PullLeft))
-  def pullRight: Self = copy(_pull = Some(PullRight))
+  def spin: FA = copy(_animate = Some(Spin))
+  def pulse: FA = copy(_animate = Some(Pulse))
 
-  def spin: Self = copy(_animate = Some(Spin))
-  def pulse: Self = copy(_animate = Some(Pulse))
-
-  def rotate90: Self = copy(_rotate = Some(Rotate90))
-  def rotate180: Self = copy(_rotate = Some(Rotate180))
-  def rotate270: Self = copy(_rotate = Some(Rotate270))
+  def rotate90: FA = copy(_rotate = Some(Rotate90))
+  def rotate180: FA = copy(_rotate = Some(Rotate180))
+  def rotate270: FA = copy(_rotate = Some(Rotate270))
 
-  def flipHorizontal: Self = copy(_flip = Some(FlipHorizontal))
-  def flipVertical: Self = copy(_flip = Some(FlipVertical))
+  def flipHorizontal: FA = copy(_flip = Some(FlipHorizontal))
+  def flipVertical: FA = copy(_flip = Some(FlipVertical))
 
-  private def size(sz: Int): Self = copy(_size = Some(SizeX(sz)))
-  def lg: Self = copy(_size = Some(Lg))
-  def x2: Self = size(2)
-  def x3: Self = size(3)
-  def x4: Self = size(4)
-  def x5: Self = size(5)
+  private def size(sz: Int): FA = copy(_size = Some(SizeX(sz)))
+  def lg: FA = copy(_size = Some(Lg))
+  def x2: FA = size(2)
+  def x3: FA = size(3)
+  def x4: FA = size(4)
+  def x5: FA = size(5)
 
-  def inverse: Self = copy(_inverse = true)
+  def inverse: FA = copy(_inverse = true)
 
-  def stack1x: Self = copy(_stack = Some(Stack(1)))
-  def stack2x: Self = copy(_stack = Some(Stack(2)))
+  def stack1x: FA = copy(_stack = Some(Stack(1)))
+  def stack2x: FA = copy(_stack = Some(Stack(2)))
 
-  def css(v: String): Self = copy(_css = Option(v))
+  def css(v: String): FA = copy(_css = Option(v))
 
-  def apply(xs: Modifier[Builder]*)(
+  def apply[Builder, Output <: FragT, FragT](xs: Modifier[Builder]*)(
     implicit bundle: Bundle[Builder, Output, FragT]):
   TypedTag[Builder, Output, FragT] = {
 
@@ -128,823 +126,4 @@
     import bundle.all._
     i((cls := sb.toString) +: xs:_*)
   }
-}
-
-/*
-class GenericFA[Builder, Output <: FragT, FragT](
-  val bun: Bundle[Builder, Output, FragT]) {
-
-  import bun.all._
-
-  type T = FA[Builder, Output, FragT]
-
-  val faStack: Modifier = cls := "fa-stack fa-lg"
-
-  implicit val bundle: Bundle[Builder, Output, FragT] = bun
-
-  implicit def fa2tag(x: T): TypedTag[Builder, Output, FragT] = x()
-
-  object fab {
-    private def fa(w: String): T = FA(FaStyle.Brands, w)
-    val fa500px: T = fa("500px")
-  }
-
-  object fas {
-    private def fa(w: String): T = FA(FaStyle.Solid, w)
-    val addressBook: T = fa("address-book")
-  }
-
-  object far {
-    private def fa(w: String): T = FA(FaStyle.Regular, w)
-    val addressBook: T =  fa("address-book")
-  }
-
-  // 4.7.0
-  val fa500px: T = fa("500px")
-  val faAddressBook: T = fa("address-book")
-  val faAddressBookO: T = fa("address-book-o")
-  val faAddressCard: T = fa("address-card")
-  val faAddressCardO: T = fa("address-card-o")
-  val faAdjust: T = fa("adjust")
-  val faAdn: T = fa("adn")
-  val faAlignCenter: T = fa("align-center")
-  val faAlignJustify: T = fa("align-justify")
-  val faAlignLeft: T = fa("align-left")
-  val faAlignRight: T = fa("align-right")
-  val faAmazon: T = fa("amazon")
-  val faAmbulance: T = fa("ambulance")
-  val faAmericanSignLanguageInterpreting: T = fa("american-sign-language-interpreting")
-  val faAnchor: T = fa("anchor")
-  val faAndroid: T = fa("android")
-  val faAngellist: T = fa("angellist")
-  val faAngleDoubleDown: T = fa("angle-double-down")
-  val faAngleDoubleLeft: T = fa("angle-double-left")
-  val faAngleDoubleRight: T = fa("angle-double-right")
-  val faAngleDoubleUp: T = fa("angle-double-up")
-  val faAngleDown: T = fa("angle-down")
-  val faAngleLeft: T = fa("angle-left")
-  val faAngleRight: T = fa("angle-right")
-  val faAngleUp: T = fa("angle-up")
-  val faApple: T = fa("apple")
-  val faArchive: T = fa("archive")
-  val faAreaChart: T = fa("area-chart")
-  val faArrowCircleDown: T = fa("arrow-circle-down")
-  val faArrowCircleLeft: T = fa("arrow-circle-left")
-  val faArrowCircleODown: T = fa("arrow-circle-o-down")
-  val faArrowCircleOLeft: T = fa("arrow-circle-o-left")
-  val faArrowCircleORight: T = fa("arrow-circle-o-right")
-  val faArrowCircleOUp: T = fa("arrow-circle-o-up")
-  val faArrowCircleRight: T = fa("arrow-circle-right")
-  val faArrowCircleUp: T = fa("arrow-circle-up")
-  val faArrowDown: T = fa("arrow-down")
-  val faArrowLeft: T = fa("arrow-left")
-  val faArrowRight: T = fa("arrow-right")
-  val faArrows: T = fa("arrows")
-  val faArrowsAlt: T = fa("arrows-alt")
-  val faArrowsH: T = fa("arrows-h")
-  val faArrowsV: T = fa("arrows-v")
-  val faArrowUp: T = fa("arrow-up")
-  val faAslInterpreting: T = fa("asl-interpreting")
-  val faAssistiveListeningSystems: T = fa("assistive-listening-systems")
-  val faAsterisk: T = fa("asterisk")
-  val faAt: T = fa("at")
-  val faAudioDescription: T = fa("audio-description")
-  val faAutomobile: T = fa("automobile")
-  val faBackward: T = fa("backward")
-  val faBalanceScale: T = fa("balance-scale")
-  val faBan: T = fa("ban")
-  val faBandcamp: T = fa("bandcamp")
-  val faBank: T = fa("bank")
-  val faBarChart: T = fa("bar-chart")
-  val faBarChartO: T = fa("bar-chart-o")
-  val faBarcode: T = fa("barcode")
-  val faBars: T = fa("bars")
-  val faBath: T = fa("bath")
-  val faBathtub: T = fa("bathtub")
-  val faBattery: T = fa("battery")
-  val faBattery0: T = fa("battery-0")
-  val faBattery1: T = fa("battery-1")
-  val faBattery2: T = fa("battery-2")
-  val faBattery3: T = fa("battery-3")
-  val faBattery4: T = fa("battery-4")
-  val faBatteryEmpty: T = fa("battery-empty")
-  val faBatteryFull: T = fa("battery-full")
-  val faBatteryHalf: T = fa("battery-half")
-  val faBatteryQuarter: T = fa("battery-quarter")
-  val faBatteryThreeQuarters: T = fa("battery-three-quarters")
-  val faBed: T = fa("bed")
-  val faBeer: T = fa("beer")
-  val faBehance: T = fa("behance")
-  val faBehanceSquare: T = fa("behance-square")
-  val faBell: T = fa("bell")
-  val faBellO: T = fa("bell-o")
-  val faBellSlash: T = fa("bell-slash")
-  val faBellSlashO: T = fa("bell-slash-o")
-  val faBicycle: T = fa("bicycle")
-  val faBinoculars: T = fa("binoculars")
-  val faBirthdayCake: T = fa("birthday-cake")
-  val faBitbucket: T = fa("bitbucket")
-  val faBitbucketSquare: T = fa("bitbucket-square")
-  val faBitcoin: T = fa("bitcoin")
-  val faBlackTie: T = fa("black-tie")
-  val faBlind: T = fa("blind")
-  val faBluetooth: T = fa("bluetooth")
-  val faBluetoothB: T = fa("bluetooth-b")
-  val faBold: T = fa("bold")
-  val faBolt: T = fa("bolt")
-  val faBomb: T = fa("bomb")
-  val faBook: T = fa("book")
-  val faBookmark: T = fa("bookmark")
-  val faBookmarkO: T = fa("bookmark-o")
-  val faBraille: T = fa("braille")
-  val faBriefcase: T = fa("briefcase")
-  val faBtc: T = fa("btc")
-  val faBug: T = fa("bug")
-  val faBuilding: T = fa("building")
-  val faBuildingO: T = fa("building-o")
-  val faBullhorn: T = fa("bullhorn")
-  val faBullseye: T = fa("bullseye")
-  val faBus: T = fa("bus")
-  val faBuysellads: T = fa("buysellads")
-  val faCab: T = fa("cab")
-  val faCalculator: T = fa("calculator")
-  val faCalendar: T = fa("calendar")
-  val faCalendarCheckO: T = fa("calendar-check-o")
-  val faCalendarMinusO: T = fa("calendar-minus-o")
-  val faCalendarO: T = fa("calendar-o")
-  val faCalendarPlusO: T = fa("calendar-plus-o")
-  val faCalendarTimesO: T = fa("calendar-times-o")
-  val faCamera: T = fa("camera")
-  val faCameraRetro: T = fa("camera-retro")
-  val faCar: T = fa("car")
-  val faCaretDown: T = fa("caret-down")
-  val faCaretLeft: T = fa("caret-left")
-  val faCaretRight: T = fa("caret-right")
-  val faCaretSquareODown: T = fa("caret-square-o-down")
-  val faCaretSquareOLeft: T = fa("caret-square-o-left")
-  val faCaretSquareORight: T = fa("caret-square-o-right")
-  val faCaretSquareOUp: T = fa("caret-square-o-up")
-  val faCaretUp: T = fa("caret-up")
-  val faCartArrowDown: T = fa("cart-arrow-down")
-  val faCartPlus: T = fa("cart-plus")
-  val faCc: T = fa("cc")
-  val faCcAmex: T = fa("cc-amex")
-  val faCcDinersClub: T = fa("cc-diners-club")
-  val faCcDiscover: T = fa("cc-discover")
-  val faCcJcb: T = fa("cc-jcb")
-  val faCcMastercard: T = fa("cc-mastercard")
-  val faCcPaypal: T = fa("cc-paypal")
-  val faCcStripe: T = fa("cc-stripe")
-  val faCcVisa: T = fa("cc-visa")
-  val faCertificate: T = fa("certificate")
-  val faChain: T = fa("chain")
-  val faChainBroken: T = fa("chain-broken")
-  val faCheck: T = fa("check")
-  val faCheckCircle: T = fa("check-circle")
-  val faCheckCircleO: T = fa("check-circle-o")
-  val faCheckSquare: T = fa("check-square")
-  val faCheckSquareO: T = fa("check-square-o")
-  val faChevronCircleDown: T = fa("chevron-circle-down")
-  val faChevronCircleLeft: T = fa("chevron-circle-left")
-  val faChevronCircleRight: T = fa("chevron-circle-right")
-  val faChevronCircleUp: T = fa("chevron-circle-up")
-  val faChevronDown: T = fa("chevron-down")
-  val faChevronLeft: T = fa("chevron-left")
-  val faChevronRight: T = fa("chevron-right")
-  val faChevronUp: T = fa("chevron-up")
-  val faChild: T = fa("child")
-  val faChrome: T = fa("chrome")
-  val faCircle: T = fa("circle")
-  val faCircleO: T = fa("circle-o")
-  val faCircleONotch: T = fa("circle-o-notch")
-  val faCircleThin: T = fa("circle-thin")
-  val faClipboard: T = fa("clipboard")
-  val faClockO: T = fa("clock-o")
-  val faClone: T = fa("clone")
-  val faClose: T = fa("close")
-  val faCloud: T = fa("cloud")
-  val faCloudDownload: T = fa("cloud-download")
-  val faCloudUpload: T = fa("cloud-upload")
-  val faCny: T = fa("cny")
-  val faCode: T = fa("code")
-  val faCodeFork: T = fa("code-fork")
-  val faCodepen: T = fa("codepen")
-  val faCodiepie: T = fa("codiepie")
-  val faCoffee: T = fa("coffee")
-  val faCog: T = fa("cog")
-  val faCogs: T = fa("cogs")
-  val faColumns: T = fa("columns")
-  val faComment: T = fa("comment")
-  val faCommenting: T = fa("commenting")
-  val faCommentingO: T = fa("commenting-o")
-  val faCommentO: T = fa("comment-o")
-  val faComments: T = fa("comments")
-  val faCommentsO: T = fa("comments-o")
-  val faCompass: T = fa("compass")
-  val faCompress: T = fa("compress")
-  val faConnectdevelop: T = fa("connectdevelop")
-  val faContao: T = fa("contao")
-  val faCopy: T = fa("copy")
-  val faCopyright: T = fa("copyright")
-  val faCreativeCommons: T = fa("creative-commons")
-  val faCreditCard: T = fa("credit-card")
-  val faCreditCardAlt: T = fa("credit-card-alt")
-  val faCrop: T = fa("crop")
-  val faCrosshairs: T = fa("crosshairs")
-  val faCss3: T = fa("css3")
-  val faCube: T = fa("cube")
-  val faCubes: T = fa("cubes")
-  val faCut: T = fa("cut")
-  val faCutlery: T = fa("cutlery")
-  val faDashboard: T = fa("dashboard")
-  val faDashcube: T = fa("dashcube")
-  val faDatabase: T = fa("database")
-  val faDeaf: T = fa("deaf")
-  val faDeafness: T = fa("deafness")
-  val faDedent: T = fa("dedent")
-  val faDelicious: T = fa("delicious")
-  val faDesktop: T = fa("desktop")
-  val faDeviantart: T = fa("deviantart")
-  val faDiamond: T = fa("diamond")
-  val faDigg: T = fa("digg")
-  val faDollar: T = fa("dollar")
-  val faDotCircleO: T = fa("dot-circle-o")
-  val faDownload: T = fa("download")
-  val faDribbble: T = fa("dribbble")
-  val faDriversLicense: T = fa("drivers-license")
-  val faDriversLicenseO: T = fa("drivers-license-o")
-  val faDropbox: T = fa("dropbox")
-  val faDrupal: T = fa("drupal")
-  val faEdge: T = fa("edge")
-  val faEdit: T = fa("edit")
-  val faEercast: T = fa("eercast")
-  val faEject: T = fa("eject")
-  val faEllipsisH: T = fa("ellipsis-h")
-  val faEllipsisV: T = fa("ellipsis-v")
-  val faEmpire: T = fa("empire")
-  val faEnvelope: T = fa("envelope")
-  val faEnvelopeO: T = fa("envelope-o")
-  val faEnvelopeOpen: T = fa("envelope-open")
-  val faEnvelopeOpenO: T = fa("envelope-open-o")
-  val faEnvelopeSquare: T = fa("envelope-square")
-  val faEnvira: T = fa("envira")
-  val faEraser: T = fa("eraser")
-  val faEtsy: T = fa("etsy")
-  val faEur: T = fa("eur")
-  val faEuro: T = fa("euro")
-  val faExchange: T = fa("exchange")
-  val faExclamation: T = fa("exclamation")
-  val faExclamationCircle: T = fa("exclamation-circle")
-  val faExclamationTriangle: T = fa("exclamation-triangle")
-  val faExpand: T = fa("expand")
-  val faExpeditedssl: T = fa("expeditedssl")
-  val faExternalLink: T = fa("external-link")
-  val faExternalLinkSquare: T = fa("external-link-square")
-  val faEye: T = fa("eye")
-  val faEyedropper: T = fa("eyedropper")
-  val faEyeSlash: T = fa("eye-slash")
-  val faFa: T = fa("fa")
-  val faFacebook: T = fa("facebook")
-  val faFacebookF: T = fa("facebook-f")
-  val faFacebookOfficial: T = fa("facebook-official")
-  val faFacebookSquare: T = fa("facebook-square")
-  val faFastBackward: T = fa("fast-backward")
-  val faFastForward: T = fa("fast-forward")
-  val faFax: T = fa("fax")
-  val faFeed: T = fa("feed")
-  val faFemale: T = fa("female")
-  val faFighterJet: T = fa("fighter-jet")
-  val faFile: T = fa("file")
-  val faFileArchiveO: T = fa("file-archive-o")
-  val faFileAudioO: T = fa("file-audio-o")
-  val faFileCodeO: T = fa("file-code-o")
-  val faFileExcelO: T = fa("file-excel-o")
-  val faFileImageO: T = fa("file-image-o")
-  val faFileMovieO: T = fa("file-movie-o")
-  val faFileO: T = fa("file-o")
-  val faFilePdfO: T = fa("file-pdf-o")
-  val faFilePhotoO: T = fa("file-photo-o")
-  val faFilePictureO: T = fa("file-picture-o")
-  val faFilePowerpointO: T = fa("file-powerpoint-o")
-  val faFilesO: T = fa("files-o")
-  val faFileSoundO: T = fa("file-sound-o")
-  val faFileText: T = fa("file-text")
-  val faFileTextO: T = fa("file-text-o")
-  val faFileVideoO: T = fa("file-video-o")
-  val faFileWordO: T = fa("file-word-o")
-  val faFileZipO: T = fa("file-zip-o")
-  val faFilm: T = fa("film")
-  val faFilter: T = fa("filter")
-  val faFire: T = fa("fire")
-  val faFireExtinguisher: T = fa("fire-extinguisher")
-  val faFirefox: T = fa("firefox")
-  val faFirstOrder: T = fa("first-order")
-  val faFlag: T = fa("flag")
-  val faFlagCheckered: T = fa("flag-checkered")
-  val faFlagO: T = fa("flag-o")
-  val faFlash: T = fa("flash")
-  val faFlask: T = fa("flask")
-  val faFlickr: T = fa("flickr")
-  val faFloppyO: T = fa("floppy-o")
-  val faFolder: T = fa("folder")
-  val faFolderO: T = fa("folder-o")
-  val faFolderOpen: T = fa("folder-open")
-  val faFolderOpenO: T = fa("folder-open-o")
-  val faFont: T = fa("font")
-  val faFontAwesome: T = fa("font-awesome")
-  val faFonticons: T = fa("fonticons")
-  val faFortAwesome: T = fa("fort-awesome")
-  val faForumbee: T = fa("forumbee")
-  val faForward: T = fa("forward")
-  val faFoursquare: T = fa("foursquare")
-  val faFreeCodeCamp: T = fa("free-code-camp")
-  val faFrownO: T = fa("frown-o")
-  val faFutbolO: T = fa("futbol-o")
-  val faGamepad: T = fa("gamepad")
-  val faGavel: T = fa("gavel")
-  val faGbp: T = fa("gbp")
-  val faGe: T = fa("ge")
-  val faGear: T = fa("gear")
-  val faGears: T = fa("gears")
-  val faGenderless: T = fa("genderless")
-  val faGetPocket: T = fa("get-pocket")
-  val faGg: T = fa("gg")
-  val faGgCircle: T = fa("gg-circle")
-  val faGift: T = fa("gift")
-  val faGit: T = fa("git")
-  val faGithub: T = fa("github")
-  val faGithubAlt: T = fa("github-alt")
-  val faGithubSquare: T = fa("github-square")
-  val faGitlab: T = fa("gitlab")
-  val faGitSquare: T = fa("git-square")
-  val faGittip: T = fa("gittip")
-  val faGlass: T = fa("glass")
-  val faGlide: T = fa("glide")
-  val faGlideG: T = fa("glide-g")
-  val faGlobe: T = fa("globe")
-  val faGoogle: T = fa("google")
-  val faGooglePlus: T = fa("google-plus")
-  val faGooglePlusCircle: T = fa("google-plus-circle")
-  val faGooglePlusOfficial: T = fa("google-plus-official")
-  val faGooglePlusSquare: T = fa("google-plus-square")
-  val faGoogleWallet: T = fa("google-wallet")
-  val faGraduationCap: T = fa("graduation-cap")
-  val faGratipay: T = fa("gratipay")
-  val faGrav: T = fa("grav")
-  val faGroup: T = fa("group")
-  val faHackerNews: T = fa("hacker-news")
-  val faHandGrabO: T = fa("hand-grab-o")
-  val faHandLizardO: T = fa("hand-lizard-o")
-  val faHandODown: T = fa("hand-o-down")
-  val faHandOLeft: T = fa("hand-o-left")
-  val faHandORight: T = fa("hand-o-right")
-  val faHandOUp: T = fa("hand-o-up")
-  val faHandPaperO: T = fa("hand-paper-o")
-  val faHandPeaceO: T = fa("hand-peace-o")
-  val faHandPointerO: T = fa("hand-pointer-o")
-  val faHandRockO: T = fa("hand-rock-o")
-  val faHandScissorsO: T = fa("hand-scissors-o")
-  val faHandshakeO: T = fa("handshake-o")
-  val faHandSpockO: T = fa("hand-spock-o")
-  val faHandStopO: T = fa("hand-stop-o")
-  val faHardOfHearing: T = fa("hard-of-hearing")
-  val faHashtag: T = fa("hashtag")
-  val faHddO: T = fa("hdd-o")
-  val faHeader: T = fa("header")
-  val faHeadphones: T = fa("headphones")
-  val faHeart: T = fa("heart")
-  val faHeartbeat: T = fa("heartbeat")
-  val faHeartO: T = fa("heart-o")
-  val faHistory: T = fa("history")
-  val faHome: T = fa("home")
-  val faHospitalO: T = fa("hospital-o")
-  val faHotel: T = fa("hotel")
-  val faHourglass: T = fa("hourglass")
-  val faHourglass1: T = fa("hourglass-1")
-  val faHourglass2: T = fa("hourglass-2")
-  val faHourglass3: T = fa("hourglass-3")
-  val faHourglassEnd: T = fa("hourglass-end")
-  val faHourglassHalf: T = fa("hourglass-half")
-  val faHourglassO: T = fa("hourglass-o")
-  val faHourglassStart: T = fa("hourglass-start")
-  val faHouzz: T = fa("houzz")
-  val faHSquare: T = fa("h-square")
-  val faHtml5: T = fa("html5")
-  val faICursor: T = fa("i-cursor")
-  val faIdBadge: T = fa("id-badge")
-  val faIdCard: T = fa("id-card")
-  val faIdCardO: T = fa("id-card-o")
-  val faIls: T = fa("ils")
-  val faImage: T = fa("image")
-  val faImdb: T = fa("imdb")
-  val faInbox: T = fa("inbox")
-  val faIndent: T = fa("indent")
-  val faIndustry: T = fa("industry")
-  val faInfo: T = fa("info")
-  val faInfoCircle: T = fa("info-circle")
-  val faInr: T = fa("inr")
-  val faInstagram: T = fa("instagram")
-  val faInstitution: T = fa("institution")
-  val faInternetExplorer: T = fa("internet-explorer")
-  val faIntersex: T = fa("intersex")
-  val faIoxhost: T = fa("ioxhost")
-  val faItalic: T = fa("italic")
-  val faJoomla: T = fa("joomla")
-  val faJpy: T = fa("jpy")
-  val faJsfiddle: T = fa("jsfiddle")
-  val faKey: T = fa("key")
-  val faKeyboardO: T = fa("keyboard-o")
-  val faKrw: T = fa("krw")
-  val faLanguage: T = fa("language")
-  val faLaptop: T = fa("laptop")
-  val faLastfm: T = fa("lastfm")
-  val faLastfmSquare: T = fa("lastfm-square")
-  val faLeaf: T = fa("leaf")
-  val faLeanpub: T = fa("leanpub")
-  val faLegal: T = fa("legal")
-  val faLemonO: T = fa("lemon-o")
-  val faLevelDown: T = fa("level-down")
-  val faLevelUp: T = fa("level-up")
-  val faLifeBouy: T = fa("life-bouy")
-  val faLifeBuoy: T = fa("life-buoy")
-  val faLifeRing: T = fa("life-ring")
-  val faLifeSaver: T = fa("life-saver")
-  val faLightbulbO: T = fa("lightbulb-o")
-  val faLineChart: T = fa("line-chart")
-  val faLink: T = fa("link")
-  val faLinkedin: T = fa("linkedin")
-  val faLinkedinSquare: T = fa("linkedin-square")
-  val faLinode: T = fa("linode")
-  val faLinux: T = fa("linux")
-  val faList: T = fa("list")
-  val faListAlt: T = fa("list-alt")
-  val faListOl: T = fa("list-ol")
-  val faListUl: T = fa("list-ul")
-  val faLocationArrow: T = fa("location-arrow")
-  val faLock: T = fa("lock")
-  val faLongArrowDown: T = fa("long-arrow-down")
-  val faLongArrowLeft: T = fa("long-arrow-left")
-  val faLongArrowRight: T = fa("long-arrow-right")
-  val faLongArrowUp: T = fa("long-arrow-up")
-  val faLowVision: T = fa("low-vision")
-  val faMagic: T = fa("magic")
-  val faMagnet: T = fa("magnet")
-  val faMailForward: T = fa("mail-forward")
-  val faMailReply: T = fa("mail-reply")
-  val faMailReplyAll: T = fa("mail-reply-all")
-  val faMale: T = fa("male")
-  val faMap: T = fa("map")
-  val faMapMarker: T = fa("map-marker")
-  val faMapO: T = fa("map-o")
-  val faMapPin: T = fa("map-pin")
-  val faMapSigns: T = fa("map-signs")
-  val faMars: T = fa("mars")
-  val faMarsDouble: T = fa("mars-double")
-  val faMarsStroke: T = fa("mars-stroke")
-  val faMarsStrokeH: T = fa("mars-stroke-h")
-  val faMarsStrokeV: T = fa("mars-stroke-v")
-  val faMaxcdn: T = fa("maxcdn")
-  val faMeanpath: T = fa("meanpath")
-  val faMedium: T = fa("medium")
-  val faMedkit: T = fa("medkit")
-  val faMeetup: T = fa("meetup")
-  val faMehO: T = fa("meh-o")
-  val faMercury: T = fa("mercury")
-  val faMicrochip: T = fa("microchip")
-  val faMicrophone: T = fa("microphone")
-  val faMicrophoneSlash: T = fa("microphone-slash")
-  val faMinus: T = fa("minus")
-  val faMinusCircle: T = fa("minus-circle")
-  val faMinusSquare: T = fa("minus-square")
-  val faMinusSquareO: T = fa("minus-square-o")
-  val faMixcloud: T = fa("mixcloud")
-  val faMobile: T = fa("mobile")
-  val faMobilePhone: T = fa("mobile-phone")
-  val faModx: T = fa("modx")
-  val faMoney: T = fa("money")
-  val faMoonO: T = fa("moon-o")
-  val faMortarBoard: T = fa("mortar-board")
-  val faMotorcycle: T = fa("motorcycle")
-  val faMousePointer: T = fa("mouse-pointer")
-  val faMusic: T = fa("music")
-  val faNavicon: T = fa("navicon")
-  val faNeuter: T = fa("neuter")
-  val faNewspaperO: T = fa("newspaper-o")
-  val faObjectGroup: T = fa("object-group")
-  val faObjectUngroup: T = fa("object-ungroup")
-  val faOdnoklassniki: T = fa("odnoklassniki")
-  val faOdnoklassnikiSquare: T = fa("odnoklassniki-square")
-  val faOpencart: T = fa("opencart")
-  val faOpenid: T = fa("openid")
-  val faOpera: T = fa("opera")
-  val faOptinMonster: T = fa("optin-monster")
-  val faOutdent: T = fa("outdent")
-  val faPagelines: T = fa("pagelines")
-  val faPaintBrush: T = fa("paint-brush")
-  val faPaperclip: T = fa("paperclip")
-  val faPaperPlane: T = fa("paper-plane")
-  val faPaperPlaneO: T = fa("paper-plane-o")
-  val faParagraph: T = fa("paragraph")
-  val faPaste: T = fa("paste")
-  val faPause: T = fa("pause")
-  val faPauseCircle: T = fa("pause-circle")
-  val faPauseCircleO: T = fa("pause-circle-o")
-  val faPaw: T = fa("paw")
-  val faPaypal: T = fa("paypal")
-  val faPencil: T = fa("pencil")
-  val faPencilSquare: T = fa("pencil-square")
-  val faPencilSquareO: T = fa("pencil-square-o")
-  val faPercent: T = fa("percent")
-  val faPhone: T = fa("phone")
-  val faPhoneSquare: T = fa("phone-square")
-  val faPhoto: T = fa("photo")
-  val faPictureO: T = fa("picture-o")
-  val faPieChart: T = fa("pie-chart")
-  val faPiedPiper: T = fa("pied-piper")
-  val faPiedPiperAlt: T = fa("pied-piper-alt")
-  val faPiedPiperPp: T = fa("pied-piper-pp")
-  val faPinterest: T = fa("pinterest")
-  val faPinterestP: T = fa("pinterest-p")
-  val faPinterestSquare: T = fa("pinterest-square")
-  val faPlane: T = fa("plane")
-  val faPlay: T = fa("play")
-  val faPlayCircle: T = fa("play-circle")
-  val faPlayCircleO: T = fa("play-circle-o")
-  val faPlug: T = fa("plug")
-  val faPlus: T = fa("plus")
-  val faPlusCircle: T = fa("plus-circle")
-  val faPlusSquare: T = fa("plus-square")
-  val faPlusSquareO: T = fa("plus-square-o")
-  val faPodcast: T = fa("podcast")
-  val faPowerOff: T = fa("power-off")
-  val faPrint: T = fa("print")
-  val faProductHunt: T = fa("product-hunt")
-  val faPuzzlePiece: T = fa("puzzle-piece")
-  val faQq: T = fa("qq")
-  val faQrcode: T = fa("qrcode")
-  val faQuestion: T = fa("question")
-  val faQuestionCircle: T = fa("question-circle")
-  val faQuestionCircleO: T = fa("question-circle-o")
-  val faQuora: T = fa("quora")
-  val faQuoteLeft: T = fa("quote-left")
-  val faQuoteRight: T = fa("quote-right")
-  val faRa: T = fa("ra")
-  val faRandom: T = fa("random")
-  val faRavelry: T = fa("ravelry")
-  val faRebel: T = fa("rebel")
-  val faRecycle: T = fa("recycle")
-  val faReddit: T = fa("reddit")
-  val faRedditAlien: T = fa("reddit-alien")
-  val faRedditSquare: T = fa("reddit-square")
-  val faRefresh: T = fa("refresh")
-  val faRegistered: T = fa("registered")
-  val faRemove: T = fa("remove")
-  val faRenren: T = fa("renren")
-  val faReorder: T = fa("reorder")
-  val faRepeat: T = fa("repeat")
-  val faReply: T = fa("reply")
-  val faReplyAll: T = fa("reply-all")
-  val faResistance: T = fa("resistance")
-  val faRetweet: T = fa("retweet")
-  val faRmb: T = fa("rmb")
-  val faRoad: T = fa("road")
-  val faRocket: T = fa("rocket")
-  val faRotateLeft: T = fa("rotate-left")
-  val faRotateRight: T = fa("rotate-right")
-  val faRouble: T = fa("rouble")
-  val faRss: T = fa("rss")
-  val faRssSquare: T = fa("rss-square")
-  val faRub: T = fa("rub")
-  val faRuble: T = fa("ruble")
-  val faRupee: T = fa("rupee")
-  val faS15: T = fa("s15")
-  val faSafari: T = fa("safari")
-  val faSave: T = fa("save")
-  val faScissors: T = fa("scissors")
-  val faScribd: T = fa("scribd")
-  val faSearch: T = fa("search")
-  val faSearchMinus: T = fa("search-minus")
-  val faSearchPlus: T = fa("search-plus")
-  val faSellsy: T = fa("sellsy")
-  val faSend: T = fa("send")
-  val faSendO: T = fa("send-o")
-  val faServer: T = fa("server")
-  val faShare: T = fa("share")
-  val faShareAlt: T = fa("share-alt")
-  val faShareAltSquare: T = fa("share-alt-square")
-  val faShareSquare: T = fa("share-square")
-  val faShareSquareO: T = fa("share-square-o")
-  val faShekel: T = fa("shekel")
-  val faSheqel: T = fa("sheqel")
-  val faShield: T = fa("shield")
-  val faShip: T = fa("ship")
-  val faShirtsinbulk: T = fa("shirtsinbulk")
-  val faShoppingBag: T = fa("shopping-bag")
-  val faShoppingBasket: T = fa("shopping-basket")
-  val faShoppingCart: T = fa("shopping-cart")
-  val faShower: T = fa("shower")
-  val faSignal: T = fa("signal")
-  val faSignIn: T = fa("sign-in")
-  val faSigning: T = fa("signing")
-  val faSignLanguage: T = fa("sign-language")
-  val faSignOut: T = fa("sign-out")
-  val faSimplybuilt: T = fa("simplybuilt")
-  val faSitemap: T = fa("sitemap")
-  val faSkyatlas: T = fa("skyatlas")
-  val faSkype: T = fa("skype")
-  val faSlack: T = fa("slack")
-  val faSliders: T = fa("sliders")
-  val faSlideshare: T = fa("slideshare")
-  val faSmileO: T = fa("smile-o")
-  val faSnapchat: T = fa("snapchat")
-  val faSnapchatGhost: T = fa("snapchat-ghost")
-  val faSnapchatSquare: T = fa("snapchat-square")
-  val faSnowflakeO: T = fa("snowflake-o")
-  val faSoccerBallO: T = fa("soccer-ball-o")
-  val faSort: T = fa("sort")
-  val faSortAlphaAsc: T = fa("sort-alpha-asc")
-  val faSortAlphaDesc: T = fa("sort-alpha-desc")
-  val faSortAmountAsc: T = fa("sort-amount-asc")
-  val faSortAmountDesc: T = fa("sort-amount-desc")
-  val faSortAsc: T = fa("sort-asc")
-  val faSortDesc: T = fa("sort-desc")
-  val faSortDown: T = fa("sort-down")
-  val faSortNumericAsc: T = fa("sort-numeric-asc")
-  val faSortNumericDesc: T = fa("sort-numeric-desc")
-  val faSortUp: T = fa("sort-up")
-  val faSoundcloud: T = fa("soundcloud")
-  val faSpaceShuttle: T = fa("space-shuttle")
-  val faSpinner: T = fa("spinner")
-  val faSpoon: T = fa("spoon")
-  val faSpotify: T = fa("spotify")
-  val faSquare: T = fa("square")
-  val faSquareO: T = fa("square-o")
-  val faStackExchange: T = fa("stack-exchange")
-  val faStackOverflow: T = fa("stack-overflow")
-  val faStar: T = fa("star")
-  val faStarHalf: T = fa("star-half")
-  val faStarHalfEmpty: T = fa("star-half-empty")
-  val faStarHalfFull: T = fa("star-half-full")
-  val faStarHalfO: T = fa("star-half-o")
-  val faStarO: T = fa("star-o")
-  val faSteam: T = fa("steam")
-  val faSteamSquare: T = fa("steam-square")
-  val faStepBackward: T = fa("step-backward")
-  val faStepForward: T = fa("step-forward")
-  val faStethoscope: T = fa("stethoscope")
-  val faStickyNote: T = fa("sticky-note")
-  val faStickyNoteO: T = fa("sticky-note-o")
-  val faStop: T = fa("stop")
-  val faStopCircle: T = fa("stop-circle")
-  val faStopCircleO: T = fa("stop-circle-o")
-  val faStreetView: T = fa("street-view")
-  val faStrikethrough: T = fa("strikethrough")
-  val faStumbleupon: T = fa("stumbleupon")
-  val faStumbleuponCircle: T = fa("stumbleupon-circle")
-  val faSubscript: T = fa("subscript")
-  val faSubway: T = fa("subway")
-  val faSuitcase: T = fa("suitcase")
-  val faSunO: T = fa("sun-o")
-  val faSuperpowers: T = fa("superpowers")
-  val faSuperscript: T = fa("superscript")
-  val faSupport: T = fa("support")
-  val faTable: T = fa("table")
-  val faTablet: T = fa("tablet")
-  val faTachometer: T = fa("tachometer")
-  val faTag: T = fa("tag")
-  val faTags: T = fa("tags")
-  val faTasks: T = fa("tasks")
-  val faTaxi: T = fa("taxi")
-  val faTelegram: T = fa("telegram")
-  val faTelevision: T = fa("television")
-  val faTencentWeibo: T = fa("tencent-weibo")
-  val faTerminal: T = fa("terminal")
-  val faTextHeight: T = fa("text-height")
-  val faTextWidth: T = fa("text-width")
-  val faTh: T = fa("th")
-  val faThemeisle: T = fa("themeisle")
-  val faThermometer: T = fa("thermometer")
-  val faThermometer0: T = fa("thermometer-0")
-  val faThermometer1: T = fa("thermometer-1")
-  val faThermometer2: T = fa("thermometer-2")
-  val faThermometer3: T = fa("thermometer-3")
-  val faThermometer4: T = fa("thermometer-4")
-  val faThermometerEmpty: T = fa("thermometer-empty")
-  val faThermometerFull: T = fa("thermometer-full")
-  val faThermometerHalf: T = fa("thermometer-half")
-  val faThermometerQuarter: T = fa("thermometer-quarter")
-  val faThermometerThreeQuarters: T = fa("thermometer-three-quarters")
-  val faThLarge: T = fa("th-large")
-  val faThList: T = fa("th-list")
-  val faThumbsDown: T = fa("thumbs-down")
-  val faThumbsODown: T = fa("thumbs-o-down")
-  val faThumbsOUp: T = fa("thumbs-o-up")
-  val faThumbsUp: T = fa("thumbs-up")
-  val faThumbTack: T = fa("thumb-tack")
-  val faTicket: T = fa("ticket")
-  val faTimes: T = fa("times")
-  val faTimesCircle: T = fa("times-circle")
-  val faTimesCircleO: T = fa("times-circle-o")
-  val faTimesRectangle: T = fa("times-rectangle")
-  val faTimesRectangleO: T = fa("times-rectangle-o")
-  val faTint: T = fa("tint")
-  val faToggleDown: T = fa("toggle-down")
-  val faToggleLeft: T = fa("toggle-left")
-  val faToggleOff: T = fa("toggle-off")
-  val faToggleOn: T = fa("toggle-on")
-  val faToggleRight: T = fa("toggle-right")
-  val faToggleUp: T = fa("toggle-up")
-  val faTrademark: T = fa("trademark")
-  val faTrain: T = fa("train")
-  val faTransgender: T = fa("transgender")
-  val faTransgenderAlt: T = fa("transgender-alt")
-  val faTrash: T = fa("trash")
-  val faTrashO: T = fa("trash-o")
-  val faTree: T = fa("tree")
-  val faTrello: T = fa("trello")
-  val faTripadvisor: T = fa("tripadvisor")
-  val faTrophy: T = fa("trophy")
-  val faTruck: T = fa("truck")
-  val faTry: T = fa("try")
-  val faTty: T = fa("tty")
-  val faTumblr: T = fa("tumblr")
-  val faTumblrSquare: T = fa("tumblr-square")
-  val faTurkishLira: T = fa("turkish-lira")
-  val faTv: T = fa("tv")
-  val faTwitch: T = fa("twitch")
-  val faTwitter: T = fa("twitter")
-  val faTwitterSquare: T = fa("twitter-square")
-  val faUmbrella: T = fa("umbrella")
-  val faUnderline: T = fa("underline")
-  val faUndo: T = fa("undo")
-  val faUniversalAccess: T = fa("universal-access")
-  val faUniversity: T = fa("university")
-  val faUnlink: T = fa("unlink")
-  val faUnlock: T = fa("unlock")
-  val faUnlockAlt: T = fa("unlock-alt")
-  val faUnsorted: T = fa("unsorted")
-  val faUpload: T = fa("upload")
-  val faUsb: T = fa("usb")
-  val faUsd: T = fa("usd")
-  val faUser: T = fa("user")
-  val faUserCircle: T = fa("user-circle")
-  val faUserCircleO: T = fa("user-circle-o")
-  val faUserMd: T = fa("user-md")
-  val faUserO: T = fa("user-o")
-  val faUserPlus: T = fa("user-plus")
-  val faUsers: T = fa("users")
-  val faUserSecret: T = fa("user-secret")
-  val faUserTimes: T = fa("user-times")
-  val faVcard: T = fa("vcard")
-  val faVcardO: T = fa("vcard-o")
-  val faVenus: T = fa("venus")
-  val faVenusDouble: T = fa("venus-double")
-  val faVenusMars: T = fa("venus-mars")
-  val faViacoin: T = fa("viacoin")
-  val faViadeo: T = fa("viadeo")
-  val faViadeoSquare: T = fa("viadeo-square")
-  val faVideoCamera: T = fa("video-camera")
-  val faVimeo: T = fa("vimeo")
-  val faVimeoSquare: T = fa("vimeo-square")
-  val faVine: T = fa("vine")
-  val faVk: T = fa("vk")
-  val faVolumeControlPhone: T = fa("volume-control-phone")
-  val faVolumeDown: T = fa("volume-down")
-  val faVolumeOff: T = fa("volume-off")
-  val faVolumeUp: T = fa("volume-up")
-  val faWarning: T = fa("warning")
-  val faWechat: T = fa("wechat")
-  val faWeibo: T = fa("weibo")
-  val faWeixin: T = fa("weixin")
-  val faWhatsapp: T = fa("whatsapp")
-  val faWheelchair: T = fa("wheelchair")
-  val faWheelchairAlt: T = fa("wheelchair-alt")
-  val faWifi: T = fa("wifi")
-  val faWikipediaW: T = fa("wikipedia-w")
-  val faWindowClose: T = fa("window-close")
-  val faWindowCloseO: T = fa("window-close-o")
-  val faWindowMaximize: T = fa("window-maximize")
-  val faWindowMinimize: T = fa("window-minimize")
-  val faWindowRestore: T = fa("window-restore")
-  val faWindows: T = fa("windows")
-  val faWon: T = fa("won")
-  val faWordpress: T = fa("wordpress")
-  val faWpbeginner: T = fa("wpbeginner")
-  val faWpexplorer: T = fa("wpexplorer")
-  val faWpforms: T = fa("wpforms")
-  val faWrench: T = fa("wrench")
-  val faXing: T = fa("xing")
-  val faXingSquare: T = fa("xing-square")
-  val faYahoo: T = fa("yahoo")
-  val faYc: T = fa("yc")
-  val faYCombinator: T = fa("y-combinator")
-  val faYCombinatorSquare: T = fa("y-combinator-square")
-  val faYcSquare: T = fa("yc-square")
-  val faYelp: T = fa("yelp")
-  val faYen: T = fa("yen")
-  val faYoast: T = fa("yoast")
-  val faYoutube: T = fa("youtube")
-  val faYoutubePlay: T = fa("youtube-play")
-  val faYoutubeSquare: T = fa("youtube-square")
-}
-*/
+}
\ No newline at end of file