{"version":3,"sources":["vendor/ember-cli/app-prefix.js","appappv2/algolia_config.js","appappv2/app.js","appappv2/components/app-reviews.js","appappv2/components/browse-by-category.js","appappv2/components/fast-link-to.js","appappv2/components/image-carousel.js","appappv2/components/main-layout.js","appappv2/components/md-loader.js","appappv2/components/md-modal-container.js","appappv2/components/md-modal.js","appappv2/components/more-apps-by.js","appappv2/components/nav-bar.js","appappv2/components/price_slider.js","appappv2/components/range-slider.js","appappv2/components/related-apps.js","appappv2/components/screenshot-tabs.js","appappv2/components/star-rating.js","appappv2/controllers/app.js","appappv2/controllers/array.js","appappv2/controllers/faq.js","appappv2/controllers/index.js","appappv2/controllers/object.js","appappv2/controllers/redirect_search.js","appappv2/controllers/search.js","appappv2/controllers/searchbar.js","appappv2/helpers/app-version.js","appappv2/helpers/description.js","appappv2/helpers/fa-icon.js","appappv2/helpers/full_month_and_year.js","appappv2/helpers/number_format.js","appappv2/initializers/app-version.js","appappv2/initializers/container-debug-adapter.js","appappv2/initializers/controller-router-injector.js","appappv2/initializers/device_initializer.js","appappv2/initializers/export-application-global.js","appappv2/initializers/locale_initializer.js","appappv2/mixins/scroll.js","appappv2/models/age_facet.js","appappv2/models/app.js","appappv2/models/facet.js","appappv2/models/genre_facet.js","appappv2/models/iap_facet.js","appappv2/models/numeric_facet.js","appappv2/models/price_facet.js","appappv2/models/rating_facet.js","appappv2/models/result_set.js","appappv2/router.js","appappv2/routes/app.js","appappv2/routes/application.js","appappv2/routes/faceted_search.js","appappv2/routes/home.js","appappv2/routes/index.js","appappv2/routes/redirect_search.js","appappv2/routes/search.js","appappv2/services/app_from_search_api.js","appappv2/services/number_format.js","appappv2/templates/-age-modal.js","appappv2/templates/-app-card.js","appappv2/templates/-error-modal.js","appappv2/templates/-facet-modal.js","appappv2/templates/-facets.js","appappv2/templates/-price-facet-modal.js","appappv2/templates/-rating-modal.js","appappv2/templates/about.js","appappv2/templates/app.js","appappv2/templates/application.js","appappv2/templates/components/app-reviews.js","appappv2/templates/components/browse-by-category.js","appappv2/templates/components/fast-link-to.js","appappv2/templates/components/image-carousel.js","appappv2/templates/components/main-layout.js","appappv2/templates/components/md-loader.js","appappv2/templates/components/md-modal-container.js","appappv2/templates/components/md-modal.js","appappv2/templates/components/more-apps-by.js","appappv2/templates/components/nav-bar.js","appappv2/templates/components/price-slider.js","appappv2/templates/components/related-apps.js","appappv2/templates/components/screenshot-tabs.js","appappv2/templates/components/star-rating.js","appappv2/templates/faq.js","appappv2/templates/four-oh-four.js","appappv2/templates/index.js","appappv2/templates/privacy.js","appappv2/templates/search.js","appappv2/templates/searchbar.js","appappv2/templates/terms.js","vendor/ember-cli/app-suffix.js","vendor/ember-cli/app-config.js","vendor/ember-cli/app-boot.js"],"sourcesContent":["\"use strict\";\n\n\n","define('appappv2/algolia_config', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  var algolia,\n      client,\n      helper,\n      params,\n      relatedAppsParams,\n      relatedAppsHelper,\n      index,\n      indexName = 'pay_once_games_production';\n\n  params = {\n    hitsPerPage: 12,\n    facets: [],\n    advancedSyntax: true,\n    attributesToSnippet: \"description:30\"\n  };\n\n  relatedAppsParams = {\n    hitsPerPage: 16,\n    facets: ['genre_ids', 'countries']\n  };\n\n  client = algoliasearch('DPZZECX311', '74c377fa9430e59cc7bb49a1865f9fac');\n  helper = algoliasearchHelper(client, indexName, params);\n  relatedAppsHelper = algoliasearchHelper(client, indexName, relatedAppsParams);\n  index = client.initIndex(indexName);\n\n  algolia = {\n    client: client,\n    helper: helper,\n    relatedAppsHelper: relatedAppsHelper,\n    index: index\n  };\n\n  exports.default = algolia;\n});","define('appappv2/app', ['exports', 'ember-resolver', 'ember-load-initializers', 'appappv2/config/environment'], function (exports, _emberResolver, _emberLoadInitializers, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var App;\n\n  Ember.MODEL_FACTORY_INJECTIONS = true;\n\n  App = Ember.Application.extend({\n    modulePrefix: _environment.default.modulePrefix,\n    podModulePrefix: _environment.default.podModulePrefix,\n    Resolver: _emberResolver.default\n  });\n\n  (0, _emberLoadInitializers.default)(App, _environment.default.modulePrefix);\n\n  exports.default = App;\n});","define('appappv2/components/app-reviews', ['exports', 'appappv2/models/app'], function (exports, _app) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var AppReviewsComponent = Ember.Component.extend({\n    classNames: ['app-reviews'],\n    app: null,\n    locale: null,\n    reviews: [],\n    transitionTo: 'transitionTo',\n    showMoreModal: false,\n\n    didInsertElement: function didInsertElement() {\n      this.fetch();\n    },\n\n    fetch: function () {\n      var that = this;\n      Ember.$.ajax({\n        url: 'https://itunes.apple.com/' + this.get('locale') + '/rss/customerreviews/id=' + this.get('app.objectID') + '/json',\n        dataType: 'jsonp',\n        cache: true,\n        jsonpCallback: 'reviewsCallback' + this.get('app.objectID')\n      }).then(function (apiResult) {\n        that.processResults(apiResult);\n      });\n    }.observes('app'),\n\n    processResults: function processResults(apiResult) {\n      var that = this;\n      var entries = apiResult['feed']['entry'];\n      if (!entries) {\n        return;\n      }\n      this.set('reviews', entries.map(function (review) {\n        if (review['author']) {\n          return {\n            reviewer: review['author']['name']['label'],\n            title: review['title']['label'],\n            content: review['content']['label'],\n            rating: review['im:rating']['label']\n          };\n        }\n      }).compact());\n    },\n\n    firstReviews: function () {\n      return this.get('reviews').slice(0, 3);\n    }.property('app', 'reviews'),\n\n    fullReviews: function () {\n      return this.get('reviews').slice(3);\n    }.property('app', 'reviews'),\n\n    moreReviewsExist: function () {\n      return this.get('reviews').length > 3;\n    }.property('app', 'reviews'),\n\n    actions: {\n      showMoreReviews: function showMoreReviews() {\n        this.toggleProperty('showMoreModal');\n      },\n\n      closeModal: function closeModal() {\n        this.toggleProperty('showMoreModal');\n      },\n\n      transitionTo: function transitionTo(url) {\n        this.sendAction('transitionTo', url);\n      }\n    }\n  });\n\n  exports.default = AppReviewsComponent;\n});","define('appappv2/components/browse-by-category', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var BrowseByCategoryComponent = Ember.Component.extend({\n    locale: null,\n    start: 0,\n\n    links: function () {\n      return [{\n        'Top all time pay once games': 'genre=Games;has_iap=false;price=Paid',\n        'Top new pay once games': 'genre=Games;has_iap=false;released=>=1%20month%20ago;price=Paid'\n      }, {\n        'Top pay once strategy games': 'genre=Games,Strategy;has_iap=false;price=Paid',\n        'Top pay once arcade games': 'genre=Games,Arcade;has_iap=false;price=Paid',\n        'Top pay once puzzle games': 'genre=Games,Puzzle;has_iap=false;price=Paid',\n        'Top pay once family games': 'genre=Games,Family;has_iap=false;price=Paid'\n      }, {\n        'Top pay once iPad games': 'genre=Games;has_iap=false;supported_devices=iPad;price=Paid',\n        'Top pay once iPhone games': 'genre=Games;has_iap=false;supported_devices=iPhone;price=Paid',\n        'Top pay once iPod Touch games': 'genre=Games;has_iap=false;supported_devices=iPod;price=Paid',\n        'Top pay once Apple Watch games': 'genre=Games;has_iap=false;supported_devices=Watch;price=Paid'\n      }];\n\n      return [{\n        'Pay once games': 'genre=Games;has_iap=false;price=Paid',\n        'Free to play games': 'genre=Games;has_iap=true;price=0',\n        'Apps with no in-app purchases': 'has_iap=false',\n        'Games with no in-app purchases': 'genre=Games;has_iap=false'\n      }, {\n        'Top new apps': 'released=>=1%20month%20ago',\n        'Top new games': 'genre=Games;released=>=1%20month%20ago'\n      }, {\n        'Top free apps': 'price=0',\n        'Top paid apps': 'price=Paid',\n        'Top free games': 'genre=Games;price=0',\n        'Top paid games': 'genre=Games;price=Paid'\n      }, {\n        'Top music apps': 'genre=Music',\n        'Top education apps': 'genre=Education',\n        'Top lifestyle apps': 'genre=Lifestyle',\n        'Top productivity apps': 'genre=Productivity',\n        'Top news apps': 'genre=News'\n      }, {\n        'Top Apple Watch apps': 'supported_devices=Watch',\n        'Top iPhone apps': 'supported_devices=iPhone',\n        'Top iPad apps': 'supported_devices=iPad',\n        'Top iPod Touch apps': 'supported_devices=iPod'\n      }, {\n        'Top weather apps': 'genre=Weather',\n        'Top social networking apps': 'genre=Social%20Networking',\n        'Top sports apps': 'genre=Sports',\n        'Top business apps': 'genre=Business'\n      }];\n    }.property(),\n\n    step: function () {\n      if (this.get('device').isDesktop) {\n        return 2;\n      }\n\n      return 1;\n    }.property(),\n\n    getCategories: function getCategories(start) {\n      var key,\n          links = this.get('links')[start],\n          categories = [];\n\n      for (key in links) {\n        if (links.hasOwnProperty(key)) {\n          categories.push({\n            'label': key,\n            'path': ('/' + this.get('locale') + '/' + links[key] + '/search').replace('//', '/')\n          });\n        }\n      }\n\n      return categories;\n    },\n\n    categories: function () {\n      var start = this.get('start') % this.get('links').length;\n      var categories = this.getCategories(start);\n      // Desktop shows more categories.\n      if (this.get('device').isDesktop) {\n        categories = categories.concat(this.getCategories(start + 1));\n      }\n\n      return categories;\n    }.property('start'),\n\n    actions: {\n      transitionFromFront: function transitionFromFront(path) {\n        Globals['transitioningFromFront'] = true;\n        // Hacky hack hack\n        Ember.run.later(function () {\n          Globals['transitioningFromFront'] = false;\n        }, 500);\n        this.get('router').transitionTo(path);\n      },\n\n      more: function more() {\n        var that = this,\n            $categories = Ember.$('.categories');\n        $categories.animate({ opacity: 0 }, 200, function () {\n          that.set('start', that.get('start') + that.get('step'));\n          $categories.animate({ opacity: 100 }, 200);\n        });\n      }\n    }\n\n  });\n\n  exports.default = BrowseByCategoryComponent;\n});","define('appappv2/components/fast-link-to', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var FastLinkTo = Ember.Component.extend({\n    transitionTo: 'transitionTo',\n    href: null,\n    tagName: 'span',\n\n    actions: {\n      transitionTo: function transitionTo(href) {\n        this.get('router').transitionTo(href);\n        // Close mobile menu after a click.\n        Ember.$('#sidenav-overlay').trigger('click');\n        // Scroll to top.\n        window.scrollTo(0, 0);\n      }\n    }\n  });\n\n  exports.default = FastLinkTo;\n});","define(\"appappv2/components/image-carousel\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var ImageCarouselComponent = Ember.Component.extend({\n    app: null,\n    show: true,\n\n    didInsertElement: function didInsertElement() {\n      this.draw();\n    },\n\n    redraw: function () {\n      var that = this;\n      Ember.$(\"#carousel\").slick('unslick');\n      // Have to hide and show carousel so it it fully initialised.\n      this.set('show', false);\n\n      Ember.run.next(function () {\n        that.set('show', true);\n        that.draw();\n      });\n    }.observes('app'),\n\n    draw: function draw() {\n      var that = this;\n      Ember.run.next(function () {\n        var portrait = false;\n        var firstImage = Ember.$(\"#carousel\").find('img').first();\n\n        if (firstImage && firstImage.height() > firstImage.width()) {\n          portrait = true;\n        }\n\n        var opts = {\n          dots: true,\n          arrows: false,\n          infinite: false,\n          slidesToShow: portrait ? 3.2 : 1.8,\n          slidesToScroll: 1\n        };\n\n        if (Ember.$(window).width() <= 600) {\n          if (portrait) {\n            opts['slidesToShow'] = 1.5;\n          } else {\n            opts['slidesToShow'] = 1.1;\n          }\n        }\n\n        Ember.$(\"#carousel\").slick(opts);\n      }, 10);\n    }\n  });\n\n  exports.default = ImageCarouselComponent;\n});","define('appappv2/components/main-layout', ['exports', 'appappv2/mixins/scroll', 'appappv2/algolia_config'], function (exports, _scroll, _algolia_config) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var MainLayoutComponent = Ember.Component.extend(_scroll.default, {\n    query: null,\n    transitionOnSearch: false,\n    locale: null,\n    isSearchResultsPage: false,\n    searchAction: 'search',\n    searchBlurred: 'searchBlurred',\n    searchFocussed: 'searchFocussed',\n    slideUpFilters: 'slideUpFilters',\n    getMore: 'getMore',\n    lastScrollTop: null,\n    isDesktop: false,\n\n    init: function init() {\n      var that = this;\n      this._super();\n\n      if (this.get('isSearchResultsPage')) {\n        Ember.$(document).on('focus', 'input[type=search]', function () {\n          that.sendAction('searchFocussed');\n        });\n      }\n\n      Ember.run.next(function () {\n        if (that.get('transitionOnSearch')) {\n          that.addObserver('query', function () {\n            var query = that.get('query');\n            // Debounce to avoid overlapping route transitions that corrupt Ember's QP state.\n            if (query && query.length) {\n              Ember.run.debounce(that, that._doSearchTransition, 300);\n            }\n          });\n        }\n      });\n    },\n\n    _doSearchTransition: function _doSearchTransition() {\n      var query = this.get('query');\n      if (query && query.length) {\n        this.sendAction('searchAction', this.get('locale'), query);\n      }\n    },\n\n    didInsertElement: function didInsertElement() {\n      var that = this;\n      if (!this.get('isDesktop') && this.get('isSearchResultsPage')) {\n        Ember.run.scheduleOnce('afterRender', this, function () {\n          // We only want this to run on a back button click, so if the query has changed that can't have happened.\n          // TODO - move to results handler.\n          if (that.get('targetObject.resultSet.query') === that.get('targetObject.query')) {\n            window.scrollTo(0, that.get('targetObject.lastScrollTop'));\n          }\n        });\n      }\n\n      this.bindScrolling();\n    },\n\n    willDestroyElement: function willDestroyElement() {\n      this.unbindScrolling();\n    },\n\n    isScrolledToBottom: function isScrolledToBottom() {\n      var distanceToViewportTop = Ember.$(document).height() - $(window).height();\n      var viewPortTop = $(document).scrollTop();\n\n      if (viewPortTop === 0) {\n        // if we are at the top of the page, don't do\n        // the infinite scroll thing\n        return false;\n      }\n\n      return viewPortTop - distanceToViewportTop > -100;\n    },\n\n    scrolled: function scrolled() {\n      var that = this;\n      var scrollTop = Ember.$(window).scrollTop();\n      var windowHeight = Ember.$(window).height();\n      var generalOffset = 55;\n      var scrollingDown = this.get('lastScrollTop') && this.get('lastScrollTop') <= scrollTop;\n\n      if (!this.get('isDesktop') && this.get('isSearchResultsPage')) {\n        this.set('targetObject.lastScrollTop', scrollTop);\n      }\n\n      // Header and search input blur.\n      if (scrollTop > generalOffset) {\n        Ember.$('.sticky').css('position', 'fixed').css('top', '0');\n\n        Ember.$('.content').css('margin-top', '80px');\n\n        if (this.get('isSearchResultsPage') && scrollingDown) {\n\n          Ember.$('input[type=search]').blur();\n          this.sendAction('searchBlurred');\n\n          if (this.isScrolledToBottom() && !this.get('isDesktop')) {\n            that.sendAction('getMore');\n          }\n        }\n      } else {\n        Ember.$('.sticky').css('position', 'relative');\n\n        Ember.$('.content').css('margin-top', '-25px');\n      }\n\n      if (scrollingDown) {\n        this.sendAction('slideUpFilters');\n      }\n\n      this.set('lastScrollTop', scrollTop);\n    }\n\n  });\n\n  exports.default = MainLayoutComponent;\n});","define('appappv2/components/md-loader', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['preloader-wrapper', 'active'],\n    attributeBindings: ['style'],\n    style: Ember.String.htmlSafe('width: 36px; height: 36px;')\n  });\n});","define('appappv2/components/md-modal-container', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    tagName: ''\n  });\n});","define('appappv2/components/md-modal', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['modal-wrapper'],\n    isOpen: true,\n\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      // Move to body to escape parent stacking contexts (e.g. #facets-pull-down z-index).\n      // The original ember-cli-materialize addon rendered modals as portals to body.\n      this.$().appendTo(document.body);\n    },\n\n    willDestroyElement: function willDestroyElement() {\n      this.$().remove();\n      this._super.apply(this, arguments);\n    },\n\n    actions: {\n      close: function close() {\n        this.sendAction('close');\n      }\n    }\n  });\n});","define('appappv2/components/more-apps-by', ['exports', 'appappv2/models/app', 'appappv2/services/app_from_search_api'], function (exports, _app, _app_from_search_api) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var MoreAppsByComponent = Ember.Component.extend({\n    app: null,\n    locale: null,\n    moreAppsIncludingCurrent: [],\n    transitionTo: 'transitionTo',\n\n    didInsertElement: function didInsertElement() {\n      this.fetch();\n    },\n\n    fetch: function () {\n      var that = this;\n      Ember.$.getJSON('https://itunes.apple.com/lookup?id=' + this.get('app.app_by_id') + '&country=' + this.get('locale') + '&media=software&entity=software%2CiPadSoftware&limit=16&callback=?').then(function (apiResult) {\n        that.processResults(apiResult.results);\n      });\n    }.observes('app'),\n\n    processResults: function processResults(hits) {\n      var that = this;\n      this.set('moreAppsIncludingCurrent', hits.map(function (hit) {\n        var app = (0, _app_from_search_api.default)(hit, that.get('locale'));\n        if (app) {\n          return app;\n        }\n      }).compact());\n\n      Ember.run.next(function () {\n        Ember.$('.related-apps').scrollLeft(0);\n      });\n    },\n\n    priceFacet: function () {\n      return this.get('locale') + '_price';\n    }.property('locale'),\n\n    moreApps: function () {\n      var currentApp = this.get('app');\n      return this.get('moreAppsIncludingCurrent').filter(function (app) {\n        return currentApp.objectID != app.objectID;\n      });\n    }.property('moreAppsIncludingCurrent', 'app'),\n\n    actions: {\n      transitionTo: function transitionTo(href) {\n        this.sendAction('transitionTo', href);\n      }\n    }\n  });\n\n  exports.default = MoreAppsByComponent;\n});","define('appappv2/components/nav-bar', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var NavBarComponent = Ember.Component.extend({\n    locale: null,\n    chooseCountryModalOpen: false,\n\n    flagUrl: function () {\n      return '/assets/flags/' + this.get('locale') + '.png';\n    }.property(),\n\n    didInsertElement: function didInsertElement() {\n      // Initialize mobile menu.\n      Ember.$(\".button-collapse\").sideNav();\n    },\n\n    locales: function () {\n      var that = this;\n      return Object.keys(Globals.locales).map(function (locale) {\n        return {\n          locale: locale,\n          label: Globals.locales[locale][1],\n          flagUrl: '/assets/flags/' + locale + '.png'\n        };\n      });\n    }.property(),\n\n    actions: {\n      toggleChooseCountry: function toggleChooseCountry() {\n        this.toggleProperty('chooseCountryModalOpen');\n      },\n\n      switchLocale: function switchLocale(locale) {\n        Ember.$.cookie('locale', locale, { expires: 7 });\n        var url = window.location.protocol + '//' + window.location.host + window.location.pathname.replace(this.get('locale'), locale);\n        if (window.location.search) {\n          url += window.location.search;\n        }\n        window.location.href = url;\n      }\n    }\n\n  });\n\n  exports.default = NavBarComponent;\n});","define('appappv2/components/price_slider', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var PriceSliderComponent = Ember.Component.extend({\n    facet: null,\n    minSelectedPrice: null,\n    maxSelectedPrice: null,\n    notifyFacetChange: 'notifyFacetChange',\n    toggleMinRefinement: 'toggleMinRefinement',\n    toggleMaxRefinement: 'toggleMaxRefinement',\n    isDesktop: false,\n\n    init: function init() {\n      this._super();\n\n      var facet = this.get('facet');\n\n      this.set('minSelectedPrice', facet.get('minInitial'));\n      this.set('maxSelectedPrice', facet.get('maxInitial'));\n\n      this.set('minSelectedLabel', facet.getLabel(facet.get('minInitial')));\n      this.set('maxSelectedLabel', facet.getLabel(facet.get('maxInitial')));\n    },\n\n    margin: function () {\n      if (this.get('facet.isAge')) {\n        return 1;\n      }\n    }.property(),\n\n    fromSliderStart: function () {\n      var facet = this.get('facet');\n      var availablePrices = facet.get('availableValues');\n\n      return availablePrices.indexOf(parseFloat(this.get('minSelectedPrice')));\n    }.property(),\n\n    toSliderStart: function () {\n      var facet = this.get('facet');\n      var availablePrices = facet.get('availableValues');\n\n      return availablePrices.indexOf(parseFloat(this.get('maxSelectedPrice')));\n    }.property(),\n\n    range: function () {\n      return {\n        min: 0,\n        max: this.get('facet').get('availableValues').length - 1\n      };\n    }.property(),\n\n    actions: {\n      toChangedAction: function toChangedAction() {\n        var that = this,\n            facet = this.get('facet');\n\n        facet.refineMax(that.get('maxSelectedPrice'));\n\n        this.sendAction('notifyFacetChange');\n      },\n\n      fromChangedAction: function fromChangedAction() {\n        var that = this,\n            facet = this.get('facet');\n\n        facet.refineMin(that.get('minSelectedPrice'));\n\n        this.sendAction('notifyFacetChange');\n      },\n\n      toSlideAction: function toSlideAction(value) {\n        var facet = this.get('facet'),\n            facetValue = facet.get('availableValues')[parseInt(value)];\n\n        if (facetValue < this.get('minSelectedPrice')) {\n          return false;\n        }\n\n        // Age facet shoudldn't allow equal values.\n        if (facet.get('isAge') && facetValue == this.get('minSelectedPrice')) {\n          return false;\n        }\n\n        this.set('maxSelectedPrice', facetValue);\n        this.set('maxSelectedLabel', facet.getLabel(facetValue));\n      },\n\n      fromSlideAction: function fromSlideAction(value) {\n        var facet = this.get('facet'),\n            facetValue = facet.get('availableValues')[parseInt(value)];\n\n        if (facetValue > this.get('maxSelectedPrice')) {\n          return false;\n        }\n\n        // Age facet shoudldn't allow equal values.\n        if (facet.get('isAge') && facetValue == this.get('maxSelectedPrice')) {\n          return false;\n        }\n\n        this.set('minSelectedPrice', facetValue);\n        this.set('minSelectedLabel', facet.getLabel(facetValue));\n      },\n\n      toggleMinRefinement: function toggleMinRefinement(facet) {\n        // Disable deselection of min price facet.\n        if (this.get('facet.name').match('_price')) {\n          return;\n        }\n        this.sendAction('toggleMinRefinement', facet);\n        this.sendAction('notifyFacetChange');\n      },\n\n      toggleMaxRefinement: function toggleMaxRefinement(facet) {\n        this.sendAction('toggleMaxRefinement', facet);\n        this.sendAction('notifyFacetChange');\n      }\n    }\n  });\n\n  exports.default = PriceSliderComponent;\n});","define('appappv2/components/range-slider', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['nouislider-component'],\n    slider: null,\n\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n\n      var that = this;\n      var element = this.$()[0];\n      var start = this.get('start');\n      var range = this.get('range');\n      var step = this.get('step') || 1;\n      var animate = this.get('animate') || false;\n\n      if (typeof start === 'string') {\n        start = parseFloat(start);\n      }\n      if (typeof start !== 'number' || isNaN(start)) {\n        start = range ? range.min : 0;\n      }\n\n      var sliderOptions = {\n        start: [start],\n        step: step,\n        animate: animate,\n        range: range || { min: 0, max: 100 }\n      };\n\n      noUiSlider.create(element, sliderOptions);\n\n      this.set('slider', element.noUiSlider);\n\n      element.noUiSlider.on('change', function (values) {\n        that.sendAction('change', parseFloat(values[0]));\n      });\n\n      element.noUiSlider.on('slide', function (values) {\n        that.sendAction('slide', parseFloat(values[0]));\n      });\n    },\n\n    startChanged: Ember.observer('start', function () {\n      var slider = this.get('slider');\n      if (slider) {\n        var start = this.get('start');\n        if (typeof start === 'string') {\n          start = parseFloat(start);\n        }\n        if (typeof start === 'number' && !isNaN(start)) {\n          slider.set(start);\n        }\n      }\n    }),\n\n    rangeChanged: Ember.observer('range', function () {\n      var slider = this.get('slider');\n      if (slider) {\n        slider.updateOptions({\n          range: this.get('range')\n        });\n      }\n    }),\n\n    willDestroyElement: function willDestroyElement() {\n      var slider = this.get('slider');\n      if (slider) {\n        slider.destroy();\n      }\n      this._super.apply(this, arguments);\n    }\n  });\n});","define('appappv2/components/related-apps', ['exports', 'appappv2/algolia_config', 'appappv2/models/app'], function (exports, _algolia_config, _app) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var RelatedAppsComponent = Ember.Component.extend({\n    app: null,\n    locale: null,\n    relatedAppsIncludingCurrent: [],\n    transitionTo: 'transitionTo',\n\n    didInsertElement: function didInsertElement() {\n      this.fetch();\n    },\n\n    fetch: function () {\n      var that = this;\n      var helper = _algolia_config.default.relatedAppsHelper;\n      var priceFacet = this.get('priceFacet');\n      var appPrice = parseFloat(this.get('app').get(this.get('priceFacet')));\n\n      helper.setQueryParameter('facets', ['genre_ids', this.get('priceFacet'), 'has_iap', 'supported_devices', 'countries']);\n\n      helper.once('result', function (content, state) {\n        that.processResults(content.hits);\n      });\n\n      helper.clearRefinements();\n      this.get('app.genre_ids').forEach(function (genre_id) {\n        helper.addRefine('genre_ids', parseInt(genre_id));\n      });\n      helper.addRefine('countries', this.get('locale'));\n      helper.addRefine('has_iap', this.get('app.has_iap'));\n\n      // Ignore watch for the purposes of similar apps.\n      this.get('app.supported_devices').forEach(function (device) {\n        if (device !== 'Watch') {\n          helper.addRefine('supported_devices', device);\n        }\n      });\n\n      // If this app is free, only find free apps.\n      if (appPrice == 0) {\n        helper.addNumericRefinement(priceFacet, '=', 0);\n      } else {\n        // If not free find apps between 25% and 200% of price.\n        helper.addNumericRefinement(priceFacet, '>=', appPrice / 4);\n        helper.addNumericRefinement(priceFacet, '<=', appPrice * 2);\n      }\n\n      helper.search();\n    }.observes('app'),\n\n    processResults: function processResults(hits) {\n      var that = this;\n      this.set('relatedAppsIncludingCurrent', hits.map(function (hit) {\n        var app = _app.default.create(hit);\n        Globals.cache[app.objectID] = app;\n        app.set('locale', that.get('locale'));\n        return app;\n      }));\n\n      Ember.run.next(function () {\n        Ember.$('.related-apps').scrollLeft(0);\n      });\n    },\n\n    priceFacet: function () {\n      return this.get('locale') + '_price';\n    }.property('locale'),\n\n    relatedApps: function () {\n      var currentApp = this.get('app');\n      return this.get('relatedAppsIncludingCurrent').filter(function (relatedApp) {\n        return currentApp.objectID != relatedApp.objectID;\n      });\n    }.property('relatedAppsIncludingCurrent', 'app'),\n\n    actions: {\n      transitionTo: function transitionTo(href) {\n        this.sendAction('transitionTo', href);\n      }\n    }\n  });\n\n  exports.default = RelatedAppsComponent;\n});","define('appappv2/components/screenshot-tabs', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var ScreenshotTabsComponent = Ember.Component.extend({\n    showIphoneScreenshots: 'showIphoneScreenshots',\n    showIpadScreenshots: 'showIpadScreenshots',\n\n    didInsertElement: function didInsertElement() {\n      Ember.run.next(function () {\n        Ember.$('ul.tabs').tabs();\n      });\n    },\n\n    actions: {\n      showIpadScreenshots: function showIpadScreenshots() {\n        this.sendAction('showIpadScreenshots');\n      },\n\n      showIphoneScreenshots: function showIphoneScreenshots() {\n        this.sendAction('showIphoneScreenshots');\n      }\n    }\n\n  });\n\n  exports.default = ScreenshotTabsComponent;\n});","define('appappv2/components/star-rating', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var StarRatingComponent = Ember.Component.extend({\n    tagName: 'span',\n    classNames: ['star-rating'],\n    rating: null,\n\n    stars: function () {\n      var array = [];\n      for (var i = 0; i < this.get('rating'); i++) {\n        array.push({});\n      }\n      return array;\n    }.property('rating')\n  });\n\n  exports.default = StarRatingComponent;\n});","define('appappv2/controllers/app', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    expandDescription: function () {\n      return this.get('model').get('descriptionLines').length > 2;\n    }.property(),\n\n    actions: {\n      toggleMoreDescription: function toggleMoreDescription() {\n        this.get('model').toggleProperty('showMoreDescription');\n      },\n\n      showIphoneScreenshots: function showIphoneScreenshots() {\n        this.get('model').set('showIphoneScreenShots', true);\n      },\n\n      showIpadScreenshots: function showIpadScreenshots() {\n        this.get('model').set('showIphoneScreenShots', false);\n      }\n    }\n  });\n});","define('appappv2/controllers/array', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller;\n});","define('appappv2/controllers/faq', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n\n    actions: {\n      exampleSearch: function exampleSearch(term) {\n        this.transitionTo('/' + this.get('locale') + '/search?q=' + term);\n      }\n    }\n  });\n});","define('appappv2/controllers/index', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    query: '',\n\n    init: function init() {\n      this._super();\n    },\n\n    search: function () {\n      var query = this.get('query');\n      // Transition to search for any query.\n      if (query.length) {\n        this.transitionToRoute('/' + this.get('model').locale + '/search?q=' + query);\n      }\n    }.observes('query')\n\n  });\n});","define('appappv2/controllers/object', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller;\n});","define('appappv2/controllers/redirect_search', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    queryParams: ['q'],\n    q: null\n  });\n});","define('appappv2/controllers/search', ['exports', 'appappv2/algolia_config', 'appappv2/models/result_set', 'appappv2/models/age_facet', 'appappv2/models/genre_facet'], function (exports, _algolia_config, _result_set, _age_facet, _genre_facet) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    queryParams: ['q', 'page'],\n    page: 0,\n    query: null,\n    q: null,\n    resultCount: 0,\n    resultSet: null,\n    oldResultSet: null,\n    lastScrollTop: null,\n    completeResultSet: null,\n    pages: [],\n    prevPage: null,\n    nextPage: null,\n    itemsPerPage: 12,\n    noMoreResults: false,\n    noMoreResultsQuery: '',\n    noResults: false,\n    noResultsQuery: '',\n    isLoading: false,\n    totalResults: 0,\n    showSummary: false,\n    numberOfRefinements: 0,\n    currentlyRefining: null,\n    locale: null,\n    searchHasFocus: true,\n    initialising: true,\n    showErrorModal: true,\n    showSeoDescription: true,\n\n    init: function init() {\n      var that = this,\n          helper = _algolia_config.default.helper,\n          isDesktop;\n      this._super();\n      this.setLocale();\n\n      isDesktop = this.get('isDesktop');\n\n      helper.on('error', function (content, state) {\n        that.send('errorModal');\n      });\n\n      // Set the algolia search callback once.\n      helper.on('result', function (content, state) {\n        // Clear any seoDescription.\n        that.set('seoDescription', null);\n\n        // Query has already changed. Cancel this operation. (Not if we have not yet set the complete result set.)\n        if (Ember.$('#visibleSearch').is(':focus') && that.get('query') !== content.query && that.get('completeResultSet')) {\n          return;\n        }\n\n        if ((helper.getCurrentPage() === 0 || that.get('device.isDesktop')) && $(window).scrollTop() >= $('#header').height()) {\n          if (that.get('searchHasFocus')) {\n            window.scrollTo(0, 0);\n          } else {\n            that.scrollTop();\n          }\n        }\n\n        that.set('isLoading', true);\n        that.setNumberOfRefinements(state);\n\n        // Add locale to packet so result set can remove the prices we don't care about.\n        content['locale'] = that.get('locale');\n        // Add whether we are on desktop.\n        content['isDesktop'] = that.get('device.isDesktop');\n\n        // Set the empty result set (should be called once from #setEmptyResultSet).\n        if (!that.get('completeResultSet') && content.query === '' && that.get('numberOfRefinements') === 0) {\n          that.set('completeResultSet', _result_set.default.create(content));\n          // If we are not even currently searching (e.g. background loading complete result set from front page) stop now.\n          if (!['search', 'facetedSearch'].includes(that.get('router.currentPath'))) {\n            that.set('initialising', false);\n            that.set('resultSet', that.get('completeResultSet'));\n            return;\n          }\n\n          // Return early if this is only to get the complete result set.\n          if (that.get('page') > 0 || that.get('query') !== null || that.get('router.currentPath') === 'facetedSearch') {\n            // Process facets in URL here.\n            that.parseFacets();\n            that.setSearchResults();\n            return;\n          }\n        }\n\n        // Add complete resultSet to facet so all values are available.\n        content['completeResultSet'] = that.get('completeResultSet');\n\n        // If the search has focus, only render what we need to\n        // to keep things responsive.\n        if (that.get('searchHasFocus')) {\n          if (that.get('device').isIphone || that.get('device').isIpod) {\n            content['highPerformance'] = true;\n            content['highPerformanceInView'] = 2;\n            that.set('lastScrollTop', 0);\n          }\n        }\n\n        // If we have results, and they are not just the high performance results, append rather than replace.\n        if (!that.get('device.isDesktop') && that.get('resultSet') && helper.getCurrentPage() > 0) {\n          that.get('resultSet').append(content);\n        } else {\n          that.set('lastScrollTop', 0);\n          that.set('oldResultSet', that.get('resultSet'));\n          that.set('resultSet', _result_set.default.create(content));\n        }\n\n        // Cache results.\n        that.get('resultSet').get('results').forEach(function (app) {\n          Globals.cache[app.get('objectID')] = app;\n        });\n\n        that.set('resultCount', that.get('resultSet').get('nbHits'));\n        that.set('showSummary', true);\n        that.set('callbackSet', true);\n        that.setIsRefining();\n\n        if (that.get('device.isDesktop')) {\n          that.setIsMinimised();\n          // This is a normal search, so set the controllers page property to match the results.\n          that.set('page', helper.getCurrentPage());\n          that.setUpPages();\n        } else {\n          // Remove page from query if not on desktop.\n          that.set('page', 0);\n        }\n\n        Ember.run.next(function () {\n          that.set('isLoading', false);\n        });\n\n        if (!that.get('initialising')) {\n          Ember.run.next(function () {\n            that.updateFacetsPath();\n          });\n        }\n\n        if (content.hits.length < that.get('itemsPerPage')) {\n          that.set('noMoreResults', true);\n        }\n\n        if (that.get('showSeoDescription')) {\n          if (that.get('query') === '' && ['search', 'facetedSearch'].includes(that.get('router.currentPath'))) {\n            // This is when we want to display the SEO header.\n            that.set('seoDescription', that.get('resultSet.seoDescription'));\n            document.title = \"AppApp.io | \" + that.get('seoDescription');\n          } else {\n            seoToDefault();\n          }\n\n          that.set('showSeoDescription', false);\n        } else {\n          seoToDefault();\n        }\n\n        if (!that.get('device.isDesktop')) {\n          Ember.run.next(function () {\n            that.initializeFilters();\n          });\n        }\n\n        if (that.get('initialising')) {\n          that.set('initialising', false);\n\n          Ember.run.next(function () {\n            // Hide filters by default.\n            that.send('hideFilters');\n          });\n        }\n      });\n\n      Ember.run.next(function () {\n        that.setCompleteResultSet();\n\n        that.set('query', that.get('q'));\n\n        Ember.run.next(function () {\n          that.createQueryObserver();\n        });\n\n        // Trigger search.\n        if (that.get('query') === null) {\n          that.set('query', '');\n        }\n      });\n    },\n\n    // Weird render errors on ios if the pulldown is not properly initialized.\n    // This outs it in the state it is in after sliding down then up.\n    initializeFilters: function initializeFilters() {\n      var $pullDown = $('#facets-pull-down');\n\n      // Do nothing if the pull down is open.\n      if ($pullDown.is(':visible')) {\n        return;\n      }\n\n      // Only do something if the facet data has been rendered.\n      if ($pullDown.find('.facet-links').length > 0) {\n        $pullDown.css({\n          'z-index': -1,\n          'display': 'block',\n          'margin-top': 0 - $pullDown.height()\n        });\n      }\n    },\n\n    createQueryObserver: function createQueryObserver() {\n      var that = this;\n\n      that.addObserver('query', function () {\n        var query = this.get('query');\n        // Query can be null on a transition. We don't want that to trigger a spurious search.\n        if (query !== null) {\n          that.set('noMoreResults', false);\n          // Only set page QP when the change didn't originate from qObserver,\n          // to avoid triggering Ember's QP delegate during transitions.\n          if (!that._syncingFromQ) {\n            that.set('page', 0);\n          }\n          that.setSearchResults();\n        }\n\n        // Only sync query → q when the change didn't originate from qObserver,\n        // to avoid the q ↔ query observer cascade that crashes the QP delegate.\n        if (!that._syncingFromQ) {\n          if (query === '' || query === null) {\n            this.set('q', null);\n          } else {\n            this.set('q', query);\n          }\n        }\n      });\n    },\n\n    qObserver: function () {\n      if (this.get('q') !== null) {\n        this._syncingFromQ = true;\n        this.set('query', this.get('q'));\n        this._syncingFromQ = false;\n      }\n    }.observes('q'),\n\n    // Override the built-in _qpChanged to guard against Ember 2.x QP delegate\n    // map mismatches that cause \"urlKey of undefined\" errors during transitions.\n    _qpChanged: function _qpChanged(controller, _prop) {\n      var prop = _prop.substr(0, _prop.length - 3);\n      var delegate = controller._qpDelegate;\n      if (!delegate) {\n        return;\n      }\n      var value = Ember.get(controller, prop);\n      try {\n        delegate(prop, value);\n      } catch (e) {\n        // Suppress QP delegate errors during route transitions\n      }\n    },\n\n    helper: function () {\n      return _algolia_config.default.helper;\n    }.property(),\n\n    setLocale: function setLocale() {\n      // Locale is provided by the initialiser, but if the URL disagrees, we want to override it.\n      var firstPathElement = window.location.pathname.split('/')[1];\n\n      if (firstPathElement && Object.keys(Globals.locales).includes(firstPathElement)) {\n        this.set('locale', firstPathElement);\n      }\n\n      // Now we know the locale we can set the facets we are looking for.\n      _algolia_config.default.helper.setQueryParameter('facets', ['genre_ids', this.get('locale') + '_price', 'average_rating', 'has_iap', 'supported_devices', 'countries', 'release_date_i']);\n    },\n\n    scrollTop: function scrollTop() {\n      if (this.get('device').isDesktop) {\n        window.scrollTo(0, 0);\n      } else {\n        window.scrollTo(0, $('#header').height() - 1);\n      }\n    },\n\n    facetIsNumeric: function facetIsNumeric(facetName) {\n      return facetName.match('_price') || ['average_rating', 'release_date_i'].includes(facetName);\n    },\n\n    parseFacets: function parseFacets() {\n      _algolia_config.default.helper.clearRefinements();\n\n      try {\n        var that = this,\n            facetName,\n            facetValue,\n            params = this.get('model'),\n            min,\n            max,\n            dummyAgeFacet,\n            dummyGenreFacet;\n\n        // If no facets in URL, return early.\n        if (!params || !params.facets) {\n          return;\n        }\n\n        // Replace escaped &amp;\n        params.facets = params.facets.replace(\"&amp;\", \"&\").replace(\"&gt;\", \">\").replace(\"&lt;\", \"<\");\n\n        params.facets.split(';').forEach(function (facet) {\n          // Split om only first occurrence of '='.\n          facetName = facet.split(/=(.+)/)[0];\n          facetValue = facet.split(/=(.+)/)[1];\n\n          // Convert friendly values to algolia facet names.\n          if (facetName === 'price') {\n            facetName = that.get('locale') + '_price';\n          }\n          if (facetName === 'released') {\n            facetName = 'release_date_i';\n          }\n          if (facetName === 'genre') {\n            facetName = 'genre_ids';\n          }\n\n          if (that.facetIsNumeric(facetName) && (facetValue.slice(0, 2) === '<=' || facetValue.slice(0, 2) === '>=')) {\n            var relation = facetValue.slice(0, 2);\n            var value = facetValue.slice(2);\n\n            if (facetName === 'release_date_i') {\n              // Special case for parsing relative facet labels in URL to absolute values.\n              dummyAgeFacet = _age_facet.default.create({ data: {} });\n              value = dummyAgeFacet.getValueFromLabel(value);\n            }\n\n            _algolia_config.default.helper.addNumericRefinement(facetName, relation, parseFloat(value));\n          }\n          // Special case for min price.\n          else if (facetName == that.get('locale') + '_price') {\n              if (facetValue == 'Paid') {\n                var value = that.getCompletePriceFacet().get('minAvailable');\n                _algolia_config.default.helper.addNumericRefinement(facetName, '>=', parseFloat(value));\n              }\n              if (facetValue == '0') {\n                _algolia_config.default.helper.addNumericRefinement(facetName, '=', 0);\n              }\n            } else {\n              facetValue.split(',').forEach(function (fv) {\n                if (facetName === 'genre_ids') {\n                  dummyGenreFacet = _genre_facet.default.create({ data: {} });\n                  fv = dummyGenreFacet.getValueFromLabel(fv);\n                }\n                _algolia_config.default.helper.addRefine(facetName, fv);\n              });\n            }\n        });\n      } catch (exception) {\n        // Don't break page on incorrect parsing of facets.\n        console.log(exception);\n        return;\n      }\n    },\n\n    generatedPath: function generatedPath() {\n      var refinements = [],\n          refine,\n          facetsRefinements = _algolia_config.default.helper.state.facetsRefinements,\n          numericRefinements = _algolia_config.default.helper.state.numericRefinements,\n          label,\n          refineFragment = '',\n          min,\n          max,\n          zero;\n\n      for (var i = 0; i < Object.keys(numericRefinements).length; i++) {\n        refine = Object.keys(numericRefinements).sort()[i];\n        if (numericRefinements[refine]) {\n          min = numericRefinements[refine]['>='];\n          max = numericRefinements[refine]['<='];\n          zero = numericRefinements[refine]['='];\n          label = refine;\n\n          if (refine.match('_price')) {\n            label = 'price';\n          } else if (refine === 'release_date_i') {\n            // Special case for turning absolute age facet integers into relative human labels.\n            var dummyAgeFacet = _age_facet.default.create({ data: {} });\n            if (min) {\n              min = dummyAgeFacet.getLabel(min);\n            }\n            if (max) {\n              max = dummyAgeFacet.getLabel(max);\n            }\n            label = 'released';\n          }\n\n          if (min) {\n            // Special case for min price.\n            if (min[0] === this.getCompletePriceFacet().get('minAvailable')) {\n              refinements.push(label + '=Paid');\n            } else {\n              refinements.push(label + '=>=' + min);\n            }\n          }\n          if (max) {\n            refinements.push(label + '=<=' + max);\n          }\n          if (zero) {\n            refinements.push(label + '=0');\n          }\n        }\n      }\n\n      for (var refine in facetsRefinements) {\n        if (facetsRefinements[refine]) {\n          if (refine !== 'countries') {\n\n            if (refine === 'genre_ids') {\n              var dummyGenreFacet = _genre_facet.default.create({ data: {} });\n              refinements.push('genre=' + facetsRefinements[refine].map(function (genreId) {\n                return dummyGenreFacet.getLabel(genreId);\n              }).join(','));\n            } else {\n              label = refine;\n\n              if (refine.match('_price')) {\n                label = 'price';\n              }\n              refinements.push(label + '=' + facetsRefinements[refine].join(','));\n            }\n          }\n        }\n      }\n\n      // This is so no refinements don't leave an empty facet path fragment.\n      if (refinements.length) {\n        // Reverse so they are added to the URL in the correct order.\n        refineFragment = '/' + refinements.reverse().join(';');\n      }\n\n      // Why do we need this? Please comment next time.\n      var queryString = window.location.search;\n      if (!queryString && this.get('query')) {\n        queryString = \"?q=\" + this.get('query');\n      }\n\n      return '/' + this.get('locale') + refineFragment + '/search' + queryString;\n    },\n\n    updateFacetsPath: function updateFacetsPath(type) {\n      if (decodeURI(window.location.pathname) == this.generatedPath()) {\n        return;\n      }\n\n      if (!['search', 'facetedSearch'].includes(this.get('router.currentPath'))) {\n        this.replaceRoute(this.generatedPath());\n      } else {\n        this.transitionToRoute(this.generatedPath());\n      }\n    },\n\n    getCompletePriceFacet: function getCompletePriceFacet() {\n      return this.get('completeResultSet').getFacetByName(this.get('locale') + '_price');\n    },\n\n    setNumberOfRefinements: function setNumberOfRefinements(state) {\n      // Subtract 1 as we always have the hidden countries facet.\n      var i = -1;\n\n      for (var facet in state.facetsRefinements) {\n        if (state.facetsRefinements.hasOwnProperty(facet)) {\n          i += state.facetsRefinements[facet].length;\n        }\n      }\n\n      for (var facet in state.numericRefinements) {\n        if (state.numericRefinements.hasOwnProperty(facet)) {\n          if (state.numericRefinements[facet]['>='] && state.numericRefinements[facet]['>='] > this.getCompletePriceFacet().get('minAvailable')) {\n            i += 1;\n          }\n          if (state.numericRefinements[facet]['<=']) {\n            i += 1;\n          }\n          if (state.numericRefinements[facet]['=']) {\n            i += 1;\n          }\n        }\n      }\n\n      // Not sure how it happens, but this fixes it.\n      if (i < 0) {\n        i = 0;\n      }\n\n      this.set('numberOfRefinements', i);\n      this.set('numberOfRefinementsLabel', i - 2);\n\n      if (i < 2) {\n        this.set('numberOfRefinementsLabel', 0);\n      }\n    },\n\n    setIsRefining: function setIsRefining() {\n      var currentlyRefining = this.get('currentlyRefining');\n\n      this.get('resultSet').get('facets').forEach(function (facet) {\n        if (facet.get('name') === currentlyRefining) {\n          facet.set('isRefining', true);\n        }\n      });\n    },\n\n    setIsMinimised: function setIsMinimised() {\n      if (!this.get('oldResultSet.facets')) {\n        return;\n      }\n\n      var minimisedFacets = this.get('oldResultSet.facets').filter(function (facet) {\n        return facet.get('minimised');\n      }).map(function (facet) {\n        return facet.get('name');\n      });\n\n      this.get('resultSet.facets').forEach(function (facet) {\n        if (minimisedFacets.includes(facet.get('name'))) {\n          facet.set('minimised', true);\n        }\n      });\n    },\n\n    setCompleteResultSet: function setCompleteResultSet() {\n      _algolia_config.default.helper.addRefine('countries', this.get('locale'));\n\n      _algolia_config.default.helper.setQuery('').search();\n    },\n\n    setSearchResults: function setSearchResults() {\n      var that = this,\n          helper = _algolia_config.default.helper,\n          query = this.get('query');\n\n      // Always add the locale refinement.\n      helper.addRefine('countries', this.get('locale'));\n\n      that.setFixedFacets();\n\n      // Wait for typing to pause for 40ms before rendering.\n      //Ember.run.debounce(function() {\n      helper.setQuery(that.get('query'));\n      //}, 5);\n\n      if (this.get('device.isDesktop') && this.get('page')) {\n        helper.setCurrentPage(parseInt(this.get('page')));\n      }\n\n      helper.search();\n    },\n\n    setFixedFacets: function setFixedFacets() {\n      var that = this,\n          helper = _algolia_config.default.helper;\n      // Updates for the Pay once Game version.\n      // Always add the Games refinement\n      helper.addRefine('genre_ids', 6014);\n\n      // Always add the paid refinement\n      var value = that.getCompletePriceFacet().get('minAvailable');\n      var priceFacetName = that.get('locale') + '_price';\n      if (!helper.hasRefinements(priceFacetName)) {\n        helper.addNumericRefinement(priceFacetName, '>=', parseFloat(value));\n      }\n\n      // Always add the no_iap refinement.\n      helper.addRefine('has_iap', false);\n      // End of updates for the Pay once Game version.\n    },\n\n    facetRows: function () {\n      if (this.get('resultSet') && this.get('resultSet').get('facets')) {\n        return [this.get('resultSet').get('facets').slice(0, 3), this.get('resultSet').get('facets').slice(3, 6)];\n      }\n    }.property('resultSet', 'resultSet.facets'),\n\n    refine: function refine(facet, value) {\n      var refinements = [],\n          that = this;\n\n      // Ignore changes to preset facets.\n      if (facet.get('name') == 'has_iap' && value.key == \"false\") {\n        return;\n      }\n      if (facet.get('name') == 'genre_ids' && value.key == 6014) {\n        return;\n      }\n      if (facet.get('name').match('_price') && value.key === '0') {\n        return;\n      }\n\n      _algolia_config.default.helper.toggleRefine(facet.get('name'), value.key);\n\n      // Special case for free facet.\n      if (facet.get('name').match('_price') && value.key === '0') {\n        // Remove the numeric facets.\n        facet.removeRefinements();\n      }\n\n      // Remove any existing child refinements (e.g. if parent category is clicked off).\n      for (var i = 0; i < value.children.length; i++) {\n        _algolia_config.default.helper.removeRefine(facet.get('name'), value.children[i].key);\n      }\n\n      this.setNumberOfRefinements(_algolia_config.default.helper);\n\n      this.set('noMoreResults', false);\n      facet.doSearch();\n    },\n\n    setUpPages: function setUpPages() {\n      var pages = [];\n      var resultSet = this.get('resultSet');\n      var maxPage = resultSet.get('nbPages');\n      var baseHref = this.generatedPath();\n      baseHref = baseHref.replace(/(\\?|\\&)page=\\d+/, \"\");\n      baseHref += baseHref.match(/\\?q=/) ? '&page=' : '?page=';\n\n      if (maxPage > 50) {\n        maxPage = 50;\n      }\n\n      if (resultSet.get('nbHits') <= 10) {\n        this.set('prevPage', false);\n        this.set('nextPage', false);\n        this.set('pages', []);\n        return;\n      }\n\n      if (resultSet.get('page') > 5) {\n        pages.push({ current: false, number: 1, href: baseHref + '1' });\n        pages.push({ current: false, number: '...', disabled: true });\n      }\n\n      for (var p = resultSet.get('page') - 5; p < resultSet.get('page') + 5; ++p) {\n        if (p < 0 || p >= maxPage) {\n          continue;\n        }\n        pages.push({ current: resultSet.get('page') == p, number: p + 1, href: baseHref + p });\n      }\n\n      if (resultSet.get('page') + 5 < maxPage) {\n        pages.push({ current: false, number: '...', disabled: true });\n        pages.push({ current: false, number: maxPage, href: baseHref + maxPage });\n      }\n\n      this.set('pages', pages);\n      this.set('prevPage', resultSet.get('page') > 0 ? resultSet.get('page') : false);\n      this.set('nextPage', resultSet.get('page') + 1 < maxPage ? resultSet.get('page') + 2 : false);\n    },\n\n    showPages: function () {\n      return this.get('device.isDesktop') && this.get('resultSet.nbHits') > this.get('itemsPerPage');\n    }.property('resultSet.nbHits'),\n\n    actions: {\n      refine: function refine(facet, value) {\n        this.refine(facet, value);\n      },\n\n      setZero: function setZero(facet) {\n        facet.setZero();\n      },\n\n      removeZero: function removeZero(facet) {\n        facet.removeZero();\n      },\n\n      paginate: function paginate(page) {\n        this.set('page', page - 1);\n        _algolia_config.default.helper.setCurrentPage(page - 1).search();\n      },\n\n      toggleExpand: function toggleExpand(facet) {\n        facet.toggleExpand();\n\n        // Expanding means scroll logic needs recalculating, so trigger a scroll event.\n        Ember.run.next(function () {\n          $(window).trigger('scroll');\n        });\n      },\n\n      // Action components can call to tell the controller to update the URL.\n      notifyFacetChange: function notifyFacetChange() {\n        // Deprecated for now.\n        // Path is updated after search.\n      },\n\n      searchBlurred: function searchBlurred() {\n        if (!this.get('device.isDesktop') && this.get('searchHasFocus')) {\n          _algolia_config.default.helper.search();\n          this.set('searchHasFocus', false);\n        }\n      },\n\n      searchFocussed: function searchFocussed() {\n        this.set('searchHasFocus', true);\n      },\n\n      getMore: function getMore() {\n        if (this.get('isLoading') === false && this.get('noMoreResults') === false) {\n          this.set('isLoading', true);\n          _algolia_config.default.helper.setCurrentPage(_algolia_config.default.helper.getCurrentPage() + 1).search();\n        }\n      },\n\n      toggleMinRefinement: function toggleMinRefinement(facet) {\n        facet.toggleMinRefinement();\n      },\n\n      toggleMaxRefinement: function toggleMaxRefinement(facet) {\n        facet.toggleMaxRefinement();\n      },\n\n      toggleMinimised: function toggleMinimised(facet) {\n        facet.toggleProperty('minimised');\n      },\n\n      dismissLandingPageTitle: function dismissLandingPageTitle() {\n        $(\".landing-wrapper\").fadeOut(500);\n      }\n    }\n  });\n});","define('appappv2/controllers/searchbar', ['exports', 'appappv2/algolia_config'], function (exports, _algolia_config) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    search: Ember.inject.controller(),\n    query: '',\n\n    init: function init() {\n      var that = this;\n      this._super();\n\n      // initialize search bar value if present\n      Ember.run.next(function () {\n        if (that.isOnSearchPage()) {\n          that.set('query', that.get('search.query'));\n        }\n      });\n    },\n\n    placeholder: function () {\n      if ($(window).width() < 500) {\n        return 'Type to search...';\n      } else if (this.get('router').get('currentPath') == 'facetedSearch' && this.get('search.seoDescription')) {\n        return \"Search this category...\";\n      }\n\n      return \"Start typing to search for pay once games...\";\n    }.property('isFront', 'search.seoDescription'),\n\n    searchController: function searchController() {\n      return this.get('search');\n    },\n\n    errorUrl: function () {\n      return 'mailto:errors@appapp.io?subject=Error report for ' + window.location.href;\n    }.property(),\n\n    isOnSearchPage: function isOnSearchPage() {\n      return ['search', 'facetedSearch'].includes(this.get('router').get('currentPath'));\n    },\n\n    isFront: function () {\n      return this.get('router').get('currentPath') === 'index';\n    }.property('router.currentPath'),\n\n    showSummary: function () {\n      return this.isOnSearchPage();\n    }.property('router.currentPath'),\n\n    displayPage: function () {\n      return this.searchController().get('page') + 1;\n    }.property('search.page'),\n\n    actions: {\n      cancelSearch: function cancelSearch() {\n        Ember.$(\"input[name='search']\").val('').focus().trigger('change');\n\n        _algolia_config.default.helper.setQuery('').search();\n      },\n\n      // Facet actions.\n      openRefineModal: function openRefineModal(facet) {\n        if (facet.get('disabled')) {\n          return;\n        };\n\n        trackEvent(\"open refine modal\", facet.get('name'));\n\n        facet.set('isRefining', true);\n        // Let controller remember what is currently being refined on subsequent searches.\n        this.searchController().set('currentlyRefining', facet.get('name'));\n      },\n\n      refine: function refine(facet, value) {\n        trackEvent(\"refine facet\", facet.get('name') + ':' + value.key);\n        this.searchController().refine(facet, value);\n      },\n\n      setZero: function setZero(facet) {\n        facet.setZero();\n      },\n\n      removeZero: function removeZero(facet) {\n        facet.removeZero();\n      },\n\n      removeAllRefinements: function removeAllRefinements() {\n        var state = _algolia_config.default.helper.state;\n\n        for (var facet in state.facetsRefinements) {\n          if (state.facetsRefinements.hasOwnProperty(facet)) {\n            if (facet != 'countries') {\n              _algolia_config.default.helper.removeRefine(facet);\n            }\n          }\n        }\n\n        for (var facet in state.numericRefinements) {\n          if (state.numericRefinements.hasOwnProperty(facet)) {\n            _algolia_config.default.helper.removeNumericRefinement(facet, '<=');\n            _algolia_config.default.helper.removeNumericRefinement(facet, '>=');\n            _algolia_config.default.helper.removeNumericRefinement(facet, '=');\n          }\n        }\n\n        // Reset fixed refinements.\n        this.searchController().setFixedFacets();\n\n        this.searchController().setNumberOfRefinements(_algolia_config.default.helper);\n\n        this.searchController().set('noMoreResults', false);\n        _algolia_config.default.helper.setCurrentPage(0);\n        _algolia_config.default.helper.search();\n      },\n\n      closeRefineModal: function closeRefineModal() {\n        var that = this.searchController();\n        that.get('resultSet').get('facets').forEach(function (facet) {\n          facet.set('isRefining', false);\n          that.set('currentlyRefining', null);\n        });\n      },\n\n      toggleExpand: function toggleExpand(facet) {\n        facet.toggleExpand();\n\n        // Expanding means scroll logic needs recalculating, so trigger a scroll event.\n        Ember.run.next(function () {\n          $(window).trigger('scroll');\n        });\n      },\n\n      toggleMinRefinement: function toggleMinRefinement(facet) {\n        facet.toggleMinRefinement();\n      },\n\n      toggleMaxRefinement: function toggleMaxRefinement(facet) {\n        facet.toggleMaxRefinement();\n      },\n\n      minimizeFacets: function minimizeFacets() {\n        this.set('filtersHidden', true);\n      },\n\n      revealFilters: function revealFilters() {\n        this.set('filtersHidden', false);\n      },\n\n      toggleNotFreeSelected: function toggleNotFreeSelected(priceFacet) {\n        priceFacet.toggleProperty('notFreeSelected');\n\n        if (priceFacet.get('notFreeSelected')) {\n          priceFacet.refine();\n        } else {\n          priceFacet.removeRefinements();\n        }\n\n        this.searchController();\n      },\n\n      toggleRatingSelected: function toggleRatingSelected(ratingFacet) {\n        ratingFacet.toggleProperty('selected');\n\n        if (ratingFacet.get('selected')) {\n          ratingFacet.refine();\n        } else {\n          ratingFacet.removeRefinements();\n        }\n\n        this.searchController();\n      },\n\n      // Action components can call to tell the controller to update the URL.\n      notifyFacetChange: function notifyFacetChange() {\n        this.searchController();\n      }\n    }\n  });\n});","define('appappv2/helpers/app-version', ['exports', 'appappv2/config/environment', 'ember-cli-app-version/utils/regexp'], function (exports, _environment, _regexp) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.appVersion = appVersion;\n  function appVersion(_) {\n    var hash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    var version = _environment.default.APP.version;\n    // e.g. 1.0.0-alpha.1+4jds75hf\n\n    // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility\n    var versionOnly = hash.versionOnly || hash.hideSha;\n    var shaOnly = hash.shaOnly || hash.hideVersion;\n\n    var match = null;\n\n    if (versionOnly) {\n      if (hash.showExtended) {\n        match = version.match(_regexp.versionExtendedRegExp); // 1.0.0-alpha.1\n      }\n      // Fallback to just version\n      if (!match) {\n        match = version.match(_regexp.versionRegExp); // 1.0.0\n      }\n    }\n\n    if (shaOnly) {\n      match = version.match(_regexp.shaRegExp); // 4jds75hf\n    }\n\n    return match ? match[0] : version;\n  }\n\n  exports.default = Ember.Helper.helper(appVersion);\n});","define('appappv2/helpers/description', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Helper.helper(function (params) {\n    var description = params[0];\n\n    // Escape content.\n    description = Ember.Handlebars.Utils.escapeExpression(description);\n\n    // Replace new lines.\n    description = description.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n\n    return Ember.String.htmlSafe(description);\n  });\n});","define('appappv2/helpers/fa-icon', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.faIcon = faIcon;\n  function faIcon(params) {\n    var iconName = params[0] || '';\n    return Ember.String.htmlSafe('<i class=\"fa fa-' + iconName + '\"></i>');\n  }\n\n  exports.default = Ember.Helper.helper(faIcon);\n});","define('appappv2/helpers/full_month_and_year', ['exports', 'moment'], function (exports, _moment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.fullMonthAndYear = fullMonthAndYear;\n  function fullMonthAndYear(params) {\n    var date = params[0];\n\n    if (Ember.isBlank(date)) {\n      return '';\n    }\n\n    return (0, _moment.default)(date).format('MMMM YYYY');\n  }\n\n  exports.default = Ember.Helper.helper(fullMonthAndYear);\n});","define('appappv2/helpers/number_format', ['exports', 'appappv2/services/number_format'], function (exports, _number_format) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Helper.helper(function (params) {\n    return (0, _number_format.default)(params[0]);\n  });\n});","define('appappv2/initializers/app-version', ['exports', 'ember-cli-app-version/initializer-factory', 'appappv2/config/environment'], function (exports, _initializerFactory, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var name = void 0,\n      version = void 0;\n  if (_environment.default.APP) {\n    name = _environment.default.APP.name;\n    version = _environment.default.APP.version;\n  }\n\n  exports.default = {\n    name: 'App Version',\n    initialize: (0, _initializerFactory.default)(name, version)\n  };\n});","define('appappv2/initializers/container-debug-adapter', ['exports', 'ember-resolver/resolvers/classic/container-debug-adapter'], function (exports, _containerDebugAdapter) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'container-debug-adapter',\n\n    initialize: function initialize() {\n      var app = arguments[1] || arguments[0];\n\n      app.register('container-debug-adapter:main', _containerDebugAdapter.default);\n      app.inject('container-debug-adapter:main', 'namespace', 'application:main');\n    }\n  };\n});","define('appappv2/initializers/controller-router-injector', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.initialize = initialize;\n  function initialize(application) {\n    // Injects all Ember components with a router object:\n    application.inject('controller', 'router', 'router:main');\n    application.inject('component', 'router', 'router:main');\n  }\n\n  exports.default = {\n    name: 'controller-router-injector',\n    initialize: initialize\n  };\n});","define('appappv2/initializers/device_initializer', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'device',\n\n    initialize: function initialize(app) {\n      var device = {\n        userAgent: navigator.userAgent,\n        isIphone: false,\n        isIpad: false,\n        isGeneric: false,\n        isDesktop: false\n      };\n\n      if (navigator.userAgent.match(/iPhone/) || navigator.userAgent.match(/iPod/)) {\n        device.isIphone = true;\n      } else if (navigator.userAgent.match(/iPad/)) {\n        device.isIpad = true;\n        device.isDesktop = true;\n      } else {\n        device.isGeneric = true;\n\n        if ('ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 || $(window).width() < 768) {\n          device.isDesktop = false;\n        } else {\n          device.isDesktop = true;\n        }\n      }\n\n      // Special case for screenshots.\n      if (navigator.userAgent == 'appapp-screenshots') {\n        device.isDesktop = false;\n        Ember.$('body').css('width', '360px');\n      }\n\n      app.deferReadiness();\n\n      app.register('device:main', device, { instantiate: false });\n      app.inject('controller', 'device', 'device:main');\n      app.inject('route', 'device', 'device:main');\n\n      app.advanceReadiness();\n    }\n  };\n});","define('appappv2/initializers/export-application-global', ['exports', 'appappv2/config/environment'], function (exports, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.initialize = initialize;\n  function initialize() {\n    var application = arguments[1] || arguments[0];\n    if (_environment.default.exportApplicationGlobal !== false) {\n      var theGlobal;\n      if (typeof window !== 'undefined') {\n        theGlobal = window;\n      } else if (typeof global !== 'undefined') {\n        theGlobal = global;\n      } else if (typeof self !== 'undefined') {\n        theGlobal = self;\n      } else {\n        // no reasonable global, just bail\n        return;\n      }\n\n      var value = _environment.default.exportApplicationGlobal;\n      var globalName;\n\n      if (typeof value === 'string') {\n        globalName = value;\n      } else {\n        globalName = Ember.String.classify(_environment.default.modulePrefix);\n      }\n\n      if (!theGlobal[globalName]) {\n        theGlobal[globalName] = application;\n\n        application.reopen({\n          willDestroy: function willDestroy() {\n            this._super.apply(this, arguments);\n            delete theGlobal[globalName];\n          }\n        });\n      }\n    }\n  }\n\n  exports.default = {\n    name: 'export-application-global',\n\n    initialize: initialize\n  };\n});","define('appappv2/initializers/locale_initializer', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'locale-set',\n\n    initialize: function initialize(app) {\n      app.deferReadiness();\n\n      var localeValue;\n      var that = this;\n\n      // See if we are on a path with a locale set\n      var firstPathElement = window.location.pathname.split('/')[1];\n\n      if (firstPathElement && Object.keys(Globals.locales).includes(firstPathElement)) {\n        localeValue = firstPathElement.toLowerCase();\n        Ember.$.cookie('locale', localeValue, { expires: 7 });\n        this.registerLocale(app, localeValue);\n        return;\n      }\n\n      // Do nothing if cookie already exists.\n      if (Ember.$.cookie('locale')) {\n        this.registerLocale(app, Ember.$.cookie('locale'));\n        return;\n      }\n\n      Ember.$.ajax({\n        url: 'https://appappgeo.appspot.com/',\n        dataType: 'jsonp',\n        success: function success(response) {\n          var locale = response['X-Appengine-Country'].toLowerCase();\n\n          // Check we have a supported country.\n          if (Object.keys(Globals.locales).includes(locale)) {\n            localeValue = locale;\n          } else {\n            // Default to US if outside one of the supported countries.\n            localeValue = 'us';\n          }\n\n          Ember.$.cookie('locale', localeValue, { expires: 7 });\n\n          that.registerLocale(app, localeValue);\n        },\n        error: function error() {\n          // If the lookup fails, lets default to US.\n          that.registerLocale(app, 'us');\n        }\n      });\n    },\n\n    registerLocale: function registerLocale(app, locale) {\n      app.register('locale:main', locale, { instantiate: false });\n      app.inject('controller', 'locale', 'locale:main');\n      app.inject('route', 'locale', 'locale:main');\n\n      app.advanceReadiness();\n    }\n  };\n});","define('appappv2/mixins/scroll', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Mixin.create({\n    bindScrolling: function bindScrolling(opts) {\n      var onScroll,\n          _this = this;\n      opts = opts || { debounce: 100 };\n\n      onScroll = function onScroll() {\n        return _this.scrolled();\n      };\n\n      $(document).bind('touchmove', onScroll);\n      $(window).bind('scroll', onScroll);\n    },\n\n    unbindScrolling: function unbindScrolling() {\n      $(window).unbind('scroll');\n      $(document).unbind('touchmove');\n    }\n  });\n});","define('appappv2/models/age_facet', ['exports', 'appappv2/algolia_config', 'appappv2/models/numeric_facet', 'moment'], function (exports, _algolia_config, _numeric_facet, _moment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _numeric_facet.default.extend({\n\n    isAge: function () {\n      return true;\n    }.property(),\n\n    setRange: function setRange() {\n      var availableValues = Object.keys(this.keyedAvailableValues()).map(function (key) {\n        return parseInt(key);\n      });\n\n      this.set('availableValues', availableValues.sort(function (a, b) {\n        return a - b;\n      }));\n\n      this.set('maxAvailable', Math.max.apply(null, availableValues));\n      this.set('minAvailable', Math.min.apply(null, availableValues.filter(function (value) {\n        return value > 0;\n      })));\n    },\n\n    keyedAvailableValues: function keyedAvailableValues() {\n      var today = parseInt((0, _moment.default)().startOf('day').format('X'));\n      var month = 30 * 24 * 60 * 60;\n      var year = 365 * 24 * 60 * 60;\n\n      var values = {};\n      values[today.toString()] = 'Today';\n      values[(today - month).toString()] = '1 month ago';\n      values[(today - 3 * month).toString()] = '3 months ago';\n      values[(today - 6 * month).toString()] = '6 months ago';\n      values[(today - year).toString()] = '1 year ago';\n      values[(today - 2 * year).toString()] = '2 years ago';\n      values[(today - 3 * year).toString()] = '3 years ago';\n      values[(today - 5 * year).toString()] = '5 years ago';\n      values['1'] = 'All time';\n\n      return values;\n    },\n\n    getLabel: function getLabel(property) {\n      var availableValues = this.keyedAvailableValues(),\n          property = parseInt(property);\n\n      if (availableValues[property]) {\n        return availableValues[property];\n      }\n\n      return property;\n    },\n\n    getValueFromLabel: function getValueFromLabel(label) {\n      var availableValues = this.keyedAvailableValues();\n\n      for (var key in availableValues) {\n        if (availableValues[key] === label) {\n          return key;\n        }\n      }\n    },\n\n    minSelectedLabel: function () {\n      return ' Within ' + this.getLabel(this.get('minSelected'));\n    }.property(),\n\n    maxSelectedLabel: function () {\n      return ' Before ' + this.getLabel(this.get('maxSelected'));\n    }.property(),\n\n    seoDescription: function seoDescription() {\n      var hasMin = this.get('hasMin'),\n          hasMax = this.get('hasMax');\n\n      if (hasMin && hasMax) {\n        return \" released between \" + this.getLabel(this.get('minSelected')).replace(' ago', '') + \" and \" + this.getLabel(this.get('maxSelected'));\n      }\n\n      if (hasMin) {\n        return \" released within the last \" + this.getLabel(this.get('minSelected')).replace(' ago', '').replace('1 year', 'year');\n      }\n\n      if (hasMax) {\n        return \" released before \" + this.get('minSelectedLabel');\n      }\n\n      return ' ';\n    },\n\n    isNew: function isNew() {\n      return this.getLabel(this.get('minSelected')) == \"1 month ago\";\n    }\n  });\n});","define('appappv2/models/app', ['exports', 'appappv2/models/iap_facet', 'appappv2/algolia_config', 'appappv2/services/number_format'], function (exports, _iap_facet, _algolia_config, _number_format) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Object.extend({\n    app_by: null,\n    app_url: null,\n    artwork: [],\n    average_rating: null,\n    average_rating_for_current_version: null,\n    description: null,\n    file_size_bytes: null,\n    genres: [],\n    iap_category: null,\n    screenshot_urls: [],\n    ipad_screenshot_urls: [],\n    release_data: null,\n    release_date_i: null,\n    supports_watch: null,\n    locale: null,\n    showIphoneScreenShots: true,\n    screenShotsTabbed: false,\n    showMoreDescription: false,\n    fromSearchApi: false,\n\n    init: function init() {\n      var that = this;\n      this._super();\n\n      Ember.run.next(function () {\n        if (that.get('screenshot_urls.length') && that.get('ipad_screenshot_urls.length')) {\n          that.set('screenShotsTabbed', true);\n        } else if (that.get('screenshot_urls.length') === 0) {\n          that.set('showIphoneScreenShots', false);\n        }\n      });\n    },\n\n    href: function () {\n      return '/' + this.get('locale') + '/app/' + this.get('slug') + '/' + this.get('objectID');\n    }.property(),\n\n    iTunesLink: function () {\n      return 'https://itunes.apple.com/' + this.get('locale') + '/app/' + this.get('slug') + '/id' + this.get('objectID') + '?mt=8&uo=4&at=1000l3jZ';\n    }.property(),\n\n    slug: function () {\n      return this.get('name').replace(/[^a-z0-9]+/ig, '-').toLowerCase();\n    }.property(),\n\n    name: function () {\n      var name = this.get('full_name');\n\n      if (!name) {\n        name = this.get('name1') + ' ' + this.get('name2');\n      }\n\n      return name;\n    }.property(),\n\n    highlightedName: function () {\n      var highlighted = this.get('name');\n\n      if (this._highlightResult && this._highlightResult.full_name && this._highlightResult.full_name.value) {\n        highlighted = new Ember.Handlebars.SafeString(this._highlightResult.full_name.value);\n      }\n\n      return highlighted;\n    }.property('name'),\n\n    highlightedDescription: function () {\n      var firstChar, description;\n\n      // Only highlight description if at least 3 chars (one char looks stupid)\n      if (_algolia_config.default.helper.state.query.length < 3) {\n        return this.get('description');\n      }\n\n      if (this._snippetResult && this._snippetResult.description) {\n        description = this._snippetResult.description.value;\n        firstChar = description.slice(0, 1);\n\n        if (firstChar !== firstChar.toUpperCase()) {\n          description = '...' + description;\n        }\n\n        return new Ember.Handlebars.SafeString(description + '...');\n      }\n      return this.get('description');\n    }.property('description'),\n\n    descriptionLines: function () {\n      // Deal with absent description (bug in search api?)\n      if (!this.get('description')) {\n        return [];\n      }\n\n      return this.get('description').split(/(?:\\r\\n|\\r|\\n)/g).filter(function (line) {\n        return line.length > 0;\n      });\n    }.property('description'),\n\n    shortDescription: function () {\n      // Get short description.\n      var descriptionLines = this.get('descriptionLines');\n\n      return descriptionLines.slice(0, 2).join('\\r\\n');\n    }.property('description'),\n\n    smallLogo: function () {\n      return this.get('artwork')[0];\n    }.property(),\n\n    mediumLogo: function () {\n      return this.get('artwork')[1];\n    }.property(),\n\n    largeLogo: function () {\n      return this.get('artwork')[2];\n    }.property(),\n\n    price: function () {\n      return this.get(this.get('locale') + '_price');\n    }.property(),\n\n    formattedPrice: function () {\n      var symbol = '$',\n          price = this.get('price');\n\n      if (price == 0) {\n        return 'Free';\n      }\n\n      if (this.get('locale') === 'gb') {\n        symbol = '£';\n      }\n\n      if (this.get('locale') === 'in') {\n        symbol = '₹';\n      }\n\n      return symbol + ' ' + (0, _number_format.default)(price);\n    }.property(),\n\n    averageRating: function () {\n      if (this.get('average_rating') == parseInt(this.get('average_rating'))) {\n        return this.get('average_rating');\n      }\n      return parseInt(this.get('average_rating') * 10) / 10;\n    }.property(),\n\n    currencyCode: function () {\n      return {\n        'gb': 'GBP',\n        'us': 'USD',\n        'ca': 'CAD',\n        'au': 'AUD',\n        'in': 'INR'\n      }[this.get('locale')];\n    }.property(),\n\n    getScreenshotUrls: function getScreenshotUrls() {\n      if (this.get('screenshot_urls').length) {\n        return this.get('screenshot_urls');\n      } else {\n        return this.get('ipad_screenshot_urls');\n      }\n    },\n\n    backgroundImageCss1: function () {\n      return (\"background-image: url('\" + this.getScreenshotUrls()[0] + \"')\").htmlSafe();\n    }.property(),\n\n    backgroundImageCss2: function () {\n      return (\"background-image: url('\" + this.getScreenshotUrls()[1] + \"')\").htmlSafe();\n    }.property(),\n\n    firstScreenShot: function () {\n      return this.getScreenshotUrls()[0];\n    }.property(),\n\n    hasRating: function () {\n      return !!this.get('average_rating');\n    }.property(),\n\n    genresDesc: function () {\n      return this.get('genres').join(', ');\n    }.property(),\n\n    advisoriesDesc: function () {\n      return this.get('advisories').join(', ');\n    }.property(),\n\n    releaseDate: function () {\n      return new Date(this.get('release_date'));\n    }.property(),\n\n    supports: function supports(device) {\n      return this.get('supported_devices').indexOf(device) > -1;\n    },\n\n    devicesDesc: function () {\n      var supportsIphone = this.supports('iPhone');\n      var supportsIpad = this.supports('iPad');\n      var supportsIpod = this.supports('iPod');\n      var suppportsWatch = this.get('supports_watch');\n      var desc = '';\n\n      if (supportsIpad && supportsIphone && supportsIpod) {\n        desc = 'iPad, iPhone and iPod Touch';\n      } else if (supportsIpad && supportsIphone) {\n        desc = 'iPhone and iPad';\n      } else if (supportsIpad) {\n        desc = 'iPad';\n      } else if (supportsIphone) {\n        desc = 'iPhone';\n      }\n\n      if (suppportsWatch) {\n        desc += '. Also supports Apple Watch';\n      }\n\n      return desc;\n    }.property(),\n\n    tags: function () {\n      var tags = this.get('genres');\n\n      if (!this.get('fromSearchApi')) {\n        var tags = tags.concat(_iap_facet.default.create({ data: {} }).getLabel(this.get('has_iap'))).uniq();\n      }\n\n      if (this.get('supports_watch')) {\n        tags.push('Apple Watch');\n      }\n\n      return tags;\n    }.property(),\n\n    hasIapLabel: function () {\n      // If we don't know return null which means we don't display yes or no.\n      if (this.get('fromSearchApi')) {\n        return null;\n      }\n\n      if (this.get('has_iap')) {\n        return 'Yes';\n      }\n\n      return 'No';\n    }.property()\n  });\n});","define('appappv2/models/facet', ['exports', 'appappv2/algolia_config'], function (exports, _algolia_config) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Object.extend({\n    name: null,\n    values: [],\n    completeValues: [],\n    expanded: true,\n    expandable: false,\n    isRefining: false,\n    completeData: null,\n    isGenreFacet: false,\n    isDesktop: false,\n    isNumeric: false,\n    minimised: false,\n\n    init: function init() {\n      this._super();\n\n      this.setFacets(this.get('data'), 'values');\n      this.setFacets(this.get('completeData'), 'completeValues');\n    },\n\n    doSearch: function doSearch() {\n      _algolia_config.default.helper.setCurrentPage(0);\n      _algolia_config.default.helper.search();\n    },\n\n    setFacets: function setFacets(data, propToSet) {\n      // Data is the property returned by algolia.\n      var values = [];\n\n      for (var property in data) {\n        if (data.hasOwnProperty(property)) {\n          if (!this.isChild(property)) {\n            values.push(this.valueObj(data, property));\n          }\n        }\n      }\n\n      this.set(propToSet, values);\n    },\n\n    valueObj: function valueObj(data, property) {\n      return {\n        key: property,\n        label: this.getLabel(property),\n        count: data[property],\n        refined: _algolia_config.default.helper.isRefined(this.get('name'), property),\n        children: this.getChildren(property)\n      };\n    },\n\n    isChild: function isChild(value) {\n      return false;\n    },\n\n    getChildren: function getChildren(value) {\n      return [];\n    },\n\n    getLabel: function getLabel(property) {\n      var valueLabels = this.get('valueLabels'),\n          property = property.toString();\n\n      if (valueLabels[property]) {\n        return valueLabels[property];\n      }\n\n      return property;\n    },\n\n    isPrice: function () {\n      return false;\n    }.property(),\n\n    title: function () {\n      return {\n        'has_iap': 'IAPs',\n        'release_date_i': 'Released',\n        'genre_ids': 'Category',\n        'average_rating': 'Rating',\n        'supported_devices': 'Device'\n      }[this.get('name')];\n    }.property('name'),\n\n    icon: function () {\n      return {\n        'has_iap': 'fa-credit-card',\n        'release_date_i': 'fa-clock-o',\n        'genre_ids': 'list-alt',\n        'average_rating': 'star',\n        'supported_devices': 'mobile'\n      }[this.get('name')];\n    }.property('name'),\n\n    valueLabels: function () {\n      return {\n        'iPod': 'iPod Touch',\n        'Watch': 'Apple Watch'\n      };\n    }.property(),\n\n    seoDescription: function seoDescription() {\n      var description = [],\n          andIndex;;\n\n      this.get('values').forEach(function (value) {\n        if (value.refined) {\n          if (description.length) {\n            andIndex = description.indexOf(\"and\");\n            if (andIndex !== -1) {\n              description[andIndex] = ', ';\n            }\n            description.push(\"and\");\n          }\n\n          description.push(value.label);\n        }\n      });\n\n      if (description.length) {\n        description.unshift(\" for\");\n        return description.join(\" \").replace(/ ,/g, \",\");\n      }\n\n      return '';\n    }\n  });\n});","define('appappv2/models/genre_facet', ['exports', 'appappv2/algolia_config', 'appappv2/models/facet'], function (exports, _algolia_config, _facet) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _facet.default.extend({\n    isGenreFacet: true,\n\n    genreHierarchy: {\n      '6014': ['7001', '7002', '7003', '7004', '7005', '7006', '7007', '7008', '7009', '7010', '7011', '7012', '7013', '7014', '7015', '7016', '7017', '7018', '7019'],\n      '6021': ['13001', '13002', '13003', '13004', '13005', '13006', '13007', '13008', '13009', '13010', '13012', '13011', '13013', '13014', '13015', '13016', '13017', '13018', '13019', '13020', '13021', '13023', '13024', '13025', '13026', '13027', '13028', '13029', '13030'],\n      '6025': ['16001', '16003', '16005', '16006', '16007', '16008', '16009', '16010', '16015', '16017', '16019', '16021', '16025', '16026']\n    },\n\n    init: function init() {\n      if (this.get('isDesktop')) {\n        this.set('expanded', false);\n      }\n\n      this._super();\n      this.set('values', this.get('values').sortBy('sortOrder'));\n    },\n\n    setFacets: function setFacets(data, propToSet) {\n      this._super(data, propToSet);\n\n      this.set('values', this.get('values').sortBy('sortOrder'));\n\n      if (this.get('values').length > 3) {\n        this.set('expandable', true);\n      }\n\n      if (!this.get('expanded')) {\n        this.set(propToSet, this.get(propToSet).slice(0, 3));\n      }\n    },\n\n    isChild: function isChild(value) {\n      // Todo: genericise\n      return this.genreHierarchy['6014'].includes(value.toString()) || this.genreHierarchy['6021'].includes(value.toString()) || this.genreHierarchy['6025'].includes(value.toString());\n    },\n\n    valueObj: function valueObj(data, property) {\n      return {\n        key: property,\n        label: this.getLabel(property),\n        count: data[property],\n        sortOrder: 0 - data[property],\n        refined: _algolia_config.default.helper.isRefined(this.get('name'), property),\n        children: this.getChildren(property),\n        isFixed: property == '6014'\n      };\n    },\n\n    getChildren: function getChildren(value) {\n      // Todo: genericise\n      if (value != '6014' && value != '6021' && value != '6025') {\n        return [];\n      }\n\n      var data = this.get('data');\n      var values = [];\n\n      for (var property in data) {\n        if (data.hasOwnProperty(property)) {\n          if (this.genreHierarchy[value].includes(property)) {\n            values.push(this.valueObj(data, property));\n          }\n        }\n      }\n\n      return values.sortBy('sortOrder');\n    },\n\n    valueLabels: function () {\n      return {\n        '6000': 'Business',\n        '6001': 'Weather',\n        '6002': 'Utilities',\n        '6003': 'Travel',\n        '6004': 'Sports',\n        '6005': 'Social Networking',\n        '6006': 'Reference',\n        '6007': 'Productivity',\n        '6008': 'Photo & Video',\n        '6009': 'News',\n        '6010': 'Navigation',\n        '6011': 'Music',\n        '6012': 'Lifestyle',\n        '6013': 'Health & Fitness',\n        '6014': 'Games',\n        '6022': 'Catalogs',\n        '6023': 'Food & Drink',\n        '7001': 'Action',\n        '7002': 'Adventure',\n        '7003': 'Arcade',\n        '7004': 'Board',\n        '7005': 'Card',\n        '7006': 'Casino',\n        '7007': 'Dice',\n        '7008': 'Educational',\n        '7009': 'Family',\n        '7010': 'Kids',\n        '7011': 'Music',\n        '7012': 'Puzzle',\n        '7013': 'Racing',\n        '7014': 'Role-playing',\n        '7015': 'Simulation',\n        '7016': 'Sports',\n        '7017': 'Strategy',\n        '7018': 'Triva',\n        '7019': 'Word',\n        '6015': 'Finance',\n        '6016': 'Entertainment',\n        '6017': 'Education',\n        '6018': 'Books',\n        '6020': 'Medical',\n        '6021': 'Newsstand',\n        '6024': 'Shopping',\n        '6025': 'Stickers',\n        '13001': 'News & Politics',\n        '13002': 'Fashion & Style',\n        '13003': 'Home & Garden',\n        '13004': 'Outdoors & Nature',\n        '13005': 'Sports & Leisure',\n        '13006': \"Automotive\",\n        '13007': \"Arts & Photography\",\n        '13008': 'Brides & Weddings',\n        '13009': 'Business & Investing',\n        '13010': \"Children's Magazines\",\n        '13011': 'Computers & Internet',\n        '13012': 'Cooking, Food & Drink',\n        '13013': 'Crafts & Hobbies',\n        '13014': 'Electronics & Audio',\n        '13015': 'Entertainment',\n        '13017': 'Health, Mind & Body',\n        '13018': 'History',\n        '13019': 'Literary Magazines & Journals',\n        '13020': \"Men's Interest\",\n        '13021': 'Movies & Music',\n        '13023': 'Parenting & Family',\n        '13024': 'Pets',\n        '13025': 'Professional & Trade',\n        '13026': 'Regional News',\n        '13027': 'Science',\n        '13028': 'Teens',\n        '13029': 'Travel & Regional',\n        '13030': \"Women's Interest\",\n        '16001': 'Emoji & Expressions',\n        '16003': 'Animals & Nature',\n        '16005': 'Art',\n        '16006': 'Celebrations',\n        '16007': 'Celebrities',\n        '16008': 'Comics & Cartoons',\n        '16009': 'Eating & Drinking',\n        '16010': 'Gaming',\n        '16014': 'Movies & TV',\n        '16015': 'Music',\n        '16017': 'People',\n        '16019': 'Places & Objects',\n        '16021': 'Sports & Activities',\n        '16025': 'Kids & Family',\n        '16026': 'Fashion'\n\n      };\n    }.property(),\n\n    getLabel: function getLabel(property) {\n      var valueLabels = this.get('valueLabels'),\n          property = property.toString();\n\n      if (valueLabels[property]) {\n        return valueLabels[property];\n      }\n\n      return property;\n    },\n\n    getValueFromLabel: function getValueFromLabel(label) {\n      var labels = this.get('valueLabels');\n\n      for (var key in labels) {\n        if (labels[key] === label) {\n          return key;\n        }\n      }\n    },\n\n    toggleExpand: function toggleExpand() {\n      this.set('expanded', !this.get('expanded'));\n      this.setFacets(this.get('data'), 'values');\n    },\n\n    seoDescription: function seoDescription() {\n      var description = [];\n\n      this.get('values').forEach(function (value) {\n        if (value.refined) {\n          if (description.length) {\n            description.push(\"and\");\n          }\n\n          if (value.children.length) {\n            value.children.forEach(function (child) {\n              if (child.refined) {\n                description.push(child.label);\n              }\n            });\n          }\n\n          description.push(value.label);\n        }\n      });\n\n      return description.join(\" \") + ' Apps';\n    }\n\n  });\n});","define('appappv2/models/iap_facet', ['exports', 'appappv2/models/facet', 'appappv2/algolia_config'], function (exports, _facet, _algolia_config) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _facet.default.extend({\n    valueLabels: function () {\n      return {\n        'true': 'In-app purchases',\n        'false': 'No in-app purchases'\n      };\n    }.property(),\n\n    valueObj: function valueObj(data, property) {\n      return {\n        key: property,\n        label: this.getLabel(property),\n        count: data[property],\n        refined: _algolia_config.default.helper.isRefined(this.get('name'), property),\n        children: this.getChildren(property),\n        isFixed: property == 'false'\n      };\n    },\n\n    seoDescription: function seoDescription() {\n      var description = [];\n\n      this.get('values').forEach(function (value) {\n        if (value.refined) {\n          description.push(value.label);\n        }\n      });\n\n      if (description.length) {\n        description.unshift(\" with\");\n      }\n\n      return description.join(\" \");\n    }\n  });\n});","define('appappv2/models/numeric_facet', ['exports', 'appappv2/algolia_config', 'appappv2/models/facet'], function (exports, _algolia_config, _facet) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _facet.default.extend({\n    minAvailable: null,\n    maxAvailable: null,\n    minSelected: null, // Min value actually selected.\n    maxSelected: null, // Max value actually selected.\n    minInitial: null, // Value to initialiase the min slider with.\n    maxInitial: null, // Value to initialiase the max slider with.\n    availableValues: null,\n    selected: false,\n\n    init: function init() {\n      this._super();\n      this.setRange();\n      this.setInitialValues();\n    },\n\n    isNumeric: function isNumeric() {\n      return true;\n    },\n\n    isRating: function () {\n      return false;\n    }.property(),\n\n    setRange: function setRange() {\n      var availableValues = this.get('completeValues').map(function (value) {\n        return parseFloat(value.key);\n      }).filter(function (value) {\n        return value > 0;\n      });\n\n      this.set('availableValues', availableValues.sort(function (a, b) {\n        return a - b;\n      }));\n\n      this.set('maxAvailable', Math.max.apply(null, availableValues));\n      this.set('minAvailable', Math.min.apply(null, availableValues.filter(function (value) {\n        return value > 0;\n      })));\n    },\n\n    setInitialValues: function setInitialValues() {\n      var minRefined = _algolia_config.default.helper.state.getNumericRefinement(this.get('name'), '>=');\n      var maxRefined = _algolia_config.default.helper.state.getNumericRefinement(this.get('name'), '<=');\n\n      if (minRefined) {\n        minRefined = minRefined[0];\n        this.set('minSelected', minRefined);\n      }\n\n      if (maxRefined) {\n        maxRefined = maxRefined[0];\n        this.set('maxSelected', maxRefined);\n      }\n\n      this.set('minInitial', minRefined || this.get('minAvailable'));\n      this.set('maxInitial', maxRefined || this.get('maxAvailable'));\n    },\n\n    valueObj: function valueObj(data, property) {\n      return {\n        key: property,\n        label: this.getLabel(property),\n        count: data[property],\n        refined: _algolia_config.default.helper.isRefined(this.get('name'), property),\n        children: this.getChildren(property),\n        isFree: property === '0'\n      };\n    },\n\n    setZero: function setZero() {\n      var helper = _algolia_config.default.helper;\n      helper.removeNumericRefinement(this.get('name'), '>=');\n      helper.removeNumericRefinement(this.get('name'), '<=');\n      helper.addNumericRefinement(this.get('name'), '=', 0);\n      this.doSearch();\n    },\n\n    removeZero: function removeZero() {\n      var helper = _algolia_config.default.helper;\n      helper.removeNumericRefinement(this.get('name'), '=');\n      this.doSearch();\n    },\n\n    refineMin: function refineMin(min) {\n      var helper = _algolia_config.default.helper;\n      this.set('minSelected', min);\n\n      // Remove old numeric refinements.\n      helper.removeNumericRefinement(this.get('name'), '>=');\n      // Remove any zero refinement.\n      helper.removeNumericRefinement(this.get('name'), '=');\n      helper.addNumericRefinement(this.get('name'), '>=', this.get('minSelected') || this.get('minAvailable'));\n      this.doSearch();\n    },\n\n    refineMax: function refineMax(max) {\n      var helper = _algolia_config.default.helper;\n      this.set('maxSelected', max);\n\n      // Remove old numeric refinements.\n      helper.removeNumericRefinement(this.get('name'), '<=');\n      helper.addNumericRefinement(this.get('name'), '<=', this.get('maxSelected') || this.get('maxAvailable'));\n      this.doSearch();\n    },\n\n    removeRefinements: function removeRefinements() {\n      _algolia_config.default.helper.removeNumericRefinement(this.get('name'), '<=');\n      _algolia_config.default.helper.removeNumericRefinement(this.get('name'), '>=');\n      this.doSearch();\n    },\n\n    toggleMinRefinement: function toggleMinRefinement() {\n      if (_algolia_config.default.helper.state.getNumericRefinement(this.get('name'), '>=')) {\n        _algolia_config.default.helper.removeNumericRefinement(this.get('name'), '>=');\n      } else {\n        _algolia_config.default.helper.addNumericRefinement(this.get('name'), '>=', this.get('minAvailable'));\n      }\n\n      this.doSearch();\n    },\n\n    toggleMaxRefinement: function toggleMaxRefinement() {\n      if (_algolia_config.default.helper.state.getNumericRefinement(this.get('name'), '<=')) {\n        _algolia_config.default.helper.removeNumericRefinement(this.get('name'), '<=');\n      } else {\n        _algolia_config.default.helper.addNumericRefinement(this.get('name'), '<=', this.get('maxAvailable'));\n      }\n\n      this.doSearch();\n    },\n\n    rangeLabels: function () {\n      var labels = [];\n\n      if (typeof this.get('minSelected') === \"number\") {\n        labels.push(this.get('minSelectedLabel'));\n      }\n      if (typeof this.get('maxSelected') === \"number\") {\n        labels.push(this.get('maxSelectedLabel'));\n      }\n\n      return labels;\n    }.property(),\n\n    minSelectedLabel: function () {\n      return ' more than ' + this.get('minSelected');\n    }.property(),\n\n    maxSelectedLabel: function () {\n      return ' less than ' + this.get('maxSelected');\n    }.property(),\n\n    isPrice: function () {\n      return false;\n    }.property(),\n\n    isRefined: function () {\n      return this.get('minSelected') || this.get('maxSelected');\n    }.property(),\n\n    hasMin: function () {\n      return this.get('minSelected') && this.get('minSelected') > this.get('minAvailable');\n    }.property(),\n\n    hasMax: function () {\n      return this.get('maxSelected') && this.get('maxSelected') < this.get('maxAvailable');\n    }.property()\n\n  });\n});","define('appappv2/models/price_facet', ['exports', 'appappv2/algolia_config', 'appappv2/models/numeric_facet'], function (exports, _algolia_config, _numeric_facet) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _numeric_facet.default.extend({\n    isFixed: true,\n\n    setSelected: function setSelected() {\n      var minRefined = _algolia_config.default.helper.state.getNumericRefinement(this.get('name'), '>=');\n      var maxRefined = _algolia_config.default.helper.state.getNumericRefinement(this.get('name'), '<=');\n\n      if (minRefined || maxRefined) {\n        this.set('notFreeSelected', true);\n      }\n\n      this._super();\n    },\n\n    valueObj: function valueObj(data, property) {\n      return {\n        key: property,\n        label: this.getLabel(property),\n        count: data[property],\n        refined: _algolia_config.default.helper.isRefined(this.get('name'), property),\n        children: this.getChildren(property),\n        isFree: property === '0'\n      };\n    },\n\n    isPrice: function () {\n      return true;\n    }.property(),\n\n    title: function () {\n      return 'Price';\n    }.property(),\n\n    hasFreeSelected: function () {\n      return _algolia_config.default.helper.state.getNumericRefinement(this.get('name'), '=') == 0;\n    }.property(),\n\n    icon: function () {\n      if (this.get('name') == 'gb_price') {\n        return 'gbp';\n      }\n\n      if (this.get('name') == 'in_price') {\n        return 'inr';\n      }\n\n      return 'usd';\n    }.property('name'),\n\n    notFreeCount: function () {\n      var i = 0;\n      this.get('values').forEach(function (value) {\n        if (!value.isFree) {\n          i = i + value.count;\n        }\n      });\n      return i;\n    }.property(),\n\n    symbol: function () {\n      if (this.get('name') == 'gb_price') {\n        return '£';\n      }\n\n      if (this.get('name') == 'in_price') {\n        return '₹';\n      }\n\n      return '$';\n    }.property(),\n\n    getLabel: function getLabel(property) {\n      if (property === '0') {\n        return 'Free';\n      }\n      return this.get('symbol') + property;\n    },\n\n    isMinSelected: function () {\n      var minSelected = this.get('minSelected');\n      var pricesAvailable = Object.keys(this.get('completeData')).sort().slice(0, 2);\n\n      if (pricesAvailable[0] > 0 && pricesAvailable[0] == minSelected) {\n        return true;\n      }\n\n      if (pricesAvailable[0] == 0 && pricesAvailable[1] == minSelected) {\n        return true;\n      }\n\n      return false;\n    }.property(),\n\n    rangeLabels: function () {\n      var labels = [];\n\n      if (typeof this.get('minSelected') === \"number\" && !this.get('isMinSelected')) {\n        labels.push(this.get('minSelectedLabel'));\n      }\n      if (typeof this.get('maxSelected') === \"number\") {\n        labels.push(this.get('maxSelectedLabel'));\n      }\n      if (this.get('hasFreeSelected')) {\n        labels.push('Free');\n      }\n      return labels;\n    }.property(),\n\n    minSelectedLabel: function () {\n      return ' Min: ' + this.get('symbol') + this.get('minSelected');\n    }.property(),\n\n    maxSelectedLabel: function () {\n      return ' Max: ' + this.get('symbol') + this.get('maxSelected');\n    }.property(),\n\n    freeOrPaidSeoDescription: function freeOrPaidSeoDescription() {\n      if (this.get('hasFreeSelected')) {\n        return ' Free ';\n      }\n      if (this.get('minSelected')) {\n        return 'Paid ';\n      }\n      return ' ';\n    },\n\n    seoDescription: function seoDescription() {\n      var hasMin = this.get('hasMin'),\n          hasMax = this.get('hasMax');\n\n      if (hasMin && hasMax) {\n        return \" priced between \" + this.get('symbol') + this.get('minSelected') + \" and \" + this.get('symbol') + this.get('maxSelected');\n      }\n\n      if (hasMin) {\n        return \" for more than \" + this.get('symbol') + this.get('minSelected');\n      }\n\n      if (hasMax) {\n        return \" for less than \" + this.get('symbol') + this.get('maxSelected');\n      }\n\n      return ' ';\n    }\n\n  });\n});","define('appappv2/models/rating_facet', ['exports', 'appappv2/algolia_config', 'appappv2/models/numeric_facet'], function (exports, _algolia_config, _numeric_facet) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _numeric_facet.default.extend({\n\n    isRating: function () {\n      return true;\n    }.property(),\n\n    setRange: function setRange() {\n      var availableValues = [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5];\n\n      this.set('availableValues', availableValues.sort(function (a, b) {\n        return a - b;\n      }));\n\n      this.set('maxAvailable', Math.max.apply(null, availableValues));\n      this.set('minAvailable', Math.min.apply(null, availableValues.filter(function (value) {\n        return value > 0;\n      })));\n    },\n\n    getLabel: function getLabel(value) {\n      return value + ' ★';\n    },\n\n    minSelectedLabel: function () {\n      return ' Min: ' + this.get('minSelected') + ' ★';\n    }.property(),\n\n    maxSelectedLabel: function () {\n      return ' Max: ' + this.get('maxSelected') + ' ★';\n    }.property(),\n\n    seoDescription: function seoDescription() {\n      var hasMin = this.get('hasMin'),\n          hasMax = this.get('hasMax');\n\n      // As some apps have no ratings, having a min rating will still be a valid filter.\n      if (this.get('minSelected')) {\n        hasMin = true;\n      }\n\n      if (hasMin && hasMax && this.get('minSelected') == this.get('maxSelected')) {\n        return \" rated \" + this.get('minSelected') + \"★\";\n      }\n\n      if (hasMin && hasMax) {\n        return \" rated between \" + this.get('minSelected') + \"★ and \" + this.get('maxSelected') + \"★\";\n      }\n\n      if (hasMin) {\n        return \" rated at least \" + this.get('minSelected') + \"★\";\n      }\n\n      if (hasMax) {\n        return \" rated at most \" + this.get('maxSelected') + \"★\";\n      }\n\n      return ' ';\n    }\n  });\n});","define('appappv2/models/result_set', ['exports', 'appappv2/algolia_config', 'appappv2/models/app', 'appappv2/models/facet', 'appappv2/models/rating_facet', 'appappv2/models/price_facet', 'appappv2/models/age_facet', 'appappv2/models/genre_facet', 'appappv2/models/iap_facet'], function (exports, _algolia_config, _app, _facet, _rating_facet, _price_facet, _age_facet, _genre_facet, _iap_facet) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Object.extend({\n    nbHits: null,\n    hitsPerPage: null,\n    nbPages: null,\n    page: null,\n    processingTimeMS: null,\n    query: null,\n    facets: null,\n    pageLinks: null,\n    hits: null,\n    completeResultSet: null,\n    locale: null,\n    highPerformance: false,\n    highPerformanceInView: 2,\n    isDesktop: false,\n\n    fullFacetList: function fullFacetList() {\n      return ['genre_ids', this.get('locale') + '_price', 'release_date_i', 'average_rating', 'has_iap', 'supported_devices'];\n    },\n\n    getClassFromKey: function getClassFromKey(facetKey) {\n      if (facetKey.match('_price')) {\n        return _price_facet.default;\n      } else if (facetKey === 'average_rating') {\n        return _rating_facet.default;\n      } else if (facetKey === 'release_date_i') {\n        return _age_facet.default;\n      } else if (facetKey === 'genre_ids') {\n        return _genre_facet.default;\n      } else if (facetKey === 'has_iap') {\n        return _iap_facet.default;\n      }\n\n      return _facet.default;\n    },\n\n    seoDescription: function () {\n      var description,\n          priceFacet = this.getFacetByName(this.get('locale') + '_price');\n      var ageFacet = this.getFacetByName('release_date_i');\n      var isNew = ageFacet.isNew();\n      if (this.get('page') > 0) {\n        description = \"Page \" + (this.get('page') + 1) + \" of top \";\n      } else {\n        description = \"Top \";\n      }\n\n      if (isNew) {\n        description += \"new \";\n      }\n\n      description += priceFacet.freeOrPaidSeoDescription().toLowerCase();;\n      description += this.getFacetByName('genre_ids').seoDescription().toLowerCase();;\n      description += this.getFacetByName('has_iap').seoDescription().toLowerCase();;\n      description += this.getFacetByName('supported_devices').seoDescription();\n      description += priceFacet.seoDescription().toLowerCase();;\n      description += ' in the ' + Globals.locales[this.get('locale')][0] + ' app store';\n      description += this.getFacetByName('average_rating').seoDescription().toLowerCase();\n\n      if (!isNew) {\n        description += ageFacet.seoDescription().toLowerCase();\n      }\n\n      return description;\n    }.property(),\n\n    init: function init() {\n      this._super();\n\n      // Instantiate the facets into Facet objects.\n      var facets = this.get('facets');\n      var instantiatedFacets = [];\n      var completeResultSet = this.get('completeResultSet');\n      var that = this;\n\n      if (this.get('highPerformance')) {\n        this.set('hits', this.get('hits').slice(0, this.get('highPerformanceInView')));\n      }\n\n      // Instantiate the hits into App objects.\n      this.set('results', this.get('hits').map(function (hit) {\n        hit['locale'] = that.get('locale');\n        return _app.default.create(hit);\n      }));\n\n      this.fullFacetList().forEach(function (facetKey) {\n        var facetFound = false;\n        that.get('facets').forEach(function (facet) {\n          if (facet.name === facetKey) {\n            facetFound = true;\n            // completeResultSet should only be absent when\n            // we are making the complete result set\n            // so the complete data will be the same as the facet.\n            if (completeResultSet) {\n              facet['completeData'] = that.getCompleteDataForFacet(facet.name);\n            } else {\n              facet['completeData'] = facet.data;\n            }\n\n            facet['isDesktop'] = that.get('isDesktop');\n\n            instantiatedFacets.push(that.getClassFromKey(facet.name).create(facet));\n          }\n        });\n\n        // For facets we don't find results for,\n        // 1) Fill numeric data\n        // 2) Preserve already selected tags.\n        if (!facetFound) {\n          var data = {},\n              numericFacetFound = false;\n\n          // Price facet is required to get full range of prices (any other numeric facets where we require the facet data would go here.)\n          if (facetKey.match('_price')) {\n            for (var facet in _algolia_config.default.helper.state.numericRefinements) {\n              if (_algolia_config.default.helper.state.numericRefinements.hasOwnProperty(facetKey)) {\n                instantiatedFacets.push(that.getClassFromKey(facetKey).create({\n                  name: facetKey,\n                  completeData: that.getCompleteDataForFacet(facetKey),\n                  data: {}\n                }));\n\n                numericFacetFound = true;\n\n                break;\n              }\n            }\n\n            if (!numericFacetFound) {\n              instantiatedFacets.push(that.getClassFromKey(facetKey).create({\n                name: facetKey,\n                data: {},\n                disabled: true\n              }));\n            }\n          } else if (['release_date_i', 'average_rating'].includes(facetKey)) {\n            instantiatedFacets.push(that.getClassFromKey(facetKey).create({\n              name: facetKey,\n              completeData: {},\n              data: {}\n            }));\n          } else {\n            var data = {};\n            var disabled = true;\n\n            if (_algolia_config.default.helper.state.facetsRefinements[facetKey]) {\n              _algolia_config.default.helper.state.facetsRefinements[facetKey].forEach(function (value) {\n                data[value] = 0;\n              });\n              disabled = false;\n            }\n\n            instantiatedFacets.push(that.getClassFromKey(facetKey).create({\n              name: facetKey,\n              data: data,\n              disabled: disabled\n            }));\n          }\n        }\n      });\n\n      this.set('facets', instantiatedFacets);\n    },\n\n    append: function append(content) {\n      var that = this;\n      this.set('results', this.get('results').concat(content.hits).map(function (hit) {\n        var app = _app.default.create(hit);\n        app.set('locale', that.get('locale'));\n        return app;\n      }));\n    },\n\n    getFacetByName: function getFacetByName(facetName) {\n      return this.get('facets').filter(function (facet) {\n        return facet.get('name') === facetName;\n      })[0];\n    },\n\n    getCompleteDataForFacet: function getCompleteDataForFacet(facetName) {\n      return this.get('completeResultSet').facets.filter(function (completeFacet) {\n        return completeFacet.name === facetName;\n      })[0].data;\n    },\n\n    refinedFacets: function () {\n      var count = 0;\n    }.property('facets', 'facets@each'),\n\n    desktopFacets: function () {\n      var that = this;\n      return ['genre_ids', 'average_rating', that.get('locale') + '_price', 'has_iap', 'release_date_i', 'supported_devices'].map(function (name) {\n        return that.getFacetByName(name);\n      });\n    }.property()\n  });\n});","define('appappv2/router', ['exports', 'appappv2/config/environment'], function (exports, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var Router = Ember.Router.extend({\n    lastUrl: 'nil',\n    location: _environment.default.locationType,\n    rootURL: _environment.default.rootURL,\n\n    onlyQueryChanged: function onlyQueryChanged() {\n      // If there is no prior page, the default page load will capture it.\n      if (!this.get('lastUrl')) {\n        return true;\n      }\n\n      return this.get('url').match(/^[^?]+/)[0] === this.get('lastUrl').match(/^[^?]+/)[0];\n    }\n  });\n\n  Router.map(function () {\n    this.route('home', { path: '/' });\n    this.route('redirectSearch', { path: '/search' });\n    this.route('redirectSearch', { path: '/geo/search' });\n    this.route('redirectSearch', { path: '/geo/:facets/search' });\n    this.route('index', { path: '/:locale/' });\n    this.route('facetedSearch', { path: '/:locale/:facets/search' });\n    this.route('search', { path: '/:locale/search' });\n    this.route('app', { path: '/:locale/app/:app-slug/:app_id' });\n    this.route('about');\n    this.route('privacy');\n    this.route('terms');\n    this.route('faq');\n    this.route(\"fourOhFour\", { path: \"*path\" });\n  });\n\n  if (typeof ga == 'function') {\n    Router.reopen({\n      notifyGoogleAnalytics: Ember.on('didTransition', function () {\n        var track = true,\n            url;\n\n        if (this.onlyQueryChanged()) {\n          track = false;\n        }\n        this.set('lastUrl', this.get('url'));\n\n        if (!track) {\n          return;\n        }\n\n        // make sure we don't geo track redirects.\n        if (!!this.get('url').match(/^\\/geo\\//)) {\n          return;\n        }\n\n        return ga('send', 'pageview', {\n          'page': gaUrl(this.get('url')),\n          'title': gaUrl(this.get('url'))\n        });\n      })\n    });\n  }\n\n  exports.default = Router;\n});","define('appappv2/routes/app', ['exports', 'appappv2/algolia_config', 'appappv2/models/app', 'appappv2/services/app_from_search_api'], function (exports, _algolia_config, _app, _app_from_search_api) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n\n    setupController: function setupController(controller, model) {\n      controller.set('showMoreDescription', false);\n      model.set('locale', this.get('locale'));\n      controller.set('model', model);\n    },\n\n    // Failures in search api can mangle the data. Check here if it looks ok.\n    contentIsValid: function contentIsValid(content) {\n      return !!content.description;\n    },\n\n    model: function model(params) {\n      var that = this;\n\n      // Either return from cache, or from Algolia if not present in cache.\n      return new Ember.RSVP.Promise(function (resolve) {\n        if (Globals.cache[params.app_id] && that.contentIsValid(Globals.cache[params.app_id])) {\n          resolve(Globals.cache[params.app_id]);\n        } else {\n          _algolia_config.default.index.getObject(params.app_id, function (err, content) {\n            // Do not allow direct links (Globals.startUrl check). Only internal links should work.\n            if (err && Globals.startUrl.indexOf(params.app_id) !== -1) {\n              that.transitionTo('/');\n            } else if (err && !content || !that.contentIsValid(content)) {\n              // Lets see if we can get the app from the search api.\n              Ember.$.getJSON('https://itunes.apple.com/lookup?id=' + params.app_id + '&country=' + params.locale + '&media=software&entity=software%2CiPadSoftware&callback=?').then(function (apiResult) {\n                var app = (0, _app_from_search_api.default)(apiResult.results[0], params.locale);\n                if (app) {\n                  resolve(app);\n                } else {\n                  that.transitionTo('/');\n                }\n              });\n            } else if (!content.countries.includes(params.locale)) {\n              // App is not available in this country.\n              that.transitionTo('/' + params.locale);\n            }\n            if (content && that.contentIsValid(content)) {\n              resolve(_app.default.create(content));\n            }\n          });\n        }\n      });\n    },\n\n    seo: function seo() {\n      this.setTitleAndMetaDescription();\n      this.setHrefLangTags();\n      this.setStructuredData();\n    },\n\n    setStructuredData: function setStructuredData() {\n      $('head script[type=\"application/ld+json\"]').remove();\n\n      if (!this.get('controller.model')) {\n        return;\n      }\n\n      var app = this.get('controller.model');\n\n      // Remove prior data.\n      $('head').append('<script type=\"application/ld+json\">' + JSON.stringify({\n        \"@context\": \"http://schema.org/\",\n        \"@type\": \"MobileApplication\",\n        \"name\": app.get('name'),\n        \"image\": app.get('mediumLogo'),\n        \"description\": app.get('shortDescription'),\n        \"aggregateRating\": {\n          \"ratingValue\": app.get('average_rating'),\n          \"reviewCount\": app.get('user_rating_count')\n        },\n        \"offers\": {\n          \"@type\": \"Offer\",\n          \"priceCurrency\": app.get('currencyCode'),\n          \"price\": app.get('price')\n        },\n        \"applicationCategory\": app.get('genresDesc'),\n        \"operatingSystem\": \"iOS \" + app.get('minimum_os_version') + \" or greater\",\n        \"screenshot\": app.get('firstScreenShot'),\n        \"releaseNotes\": app.get('release_notes'),\n        \"author\": app.get('app_by'),\n        \"dateCreated\": app.get('release_date'),\n        \"softwareVersion\": app.get('version'),\n        \"contentRating\": \"Suitable for \" + app.get('advisory_rating') + '+'\n      }) + '</script>');\n    },\n\n    setTitleAndMetaDescription: function setTitleAndMetaDescription() {\n      // Return early if no model for some reason.\n      if (!this.get('controller.model')) {\n        return;\n      }\n      document.title = 'AppApp.io | ' + this.get('controller.model.name');\n      $('head').find('meta[name=\"Description\"]').prop(\"content\", this.get('controller.model.shortDescription'));\n    },\n\n    setHrefLangTags: function setHrefLangTags() {\n      // Remove any stale values\n      $('head').find('link[hreflang]').remove();\n\n      // Return early if no model for some reason.\n      if (!this.get('controller.model')) {\n        return;\n      }\n\n      var alternates = {\n        'gb': 'en-gb',\n        'us': 'en-us',\n        'ca': 'en-ca',\n        'au': 'en-au',\n        'in': 'en-in'\n      };\n\n      var locale = this.get('controller.locale');\n      var app = this.get('controller.model');\n\n      Ember.run.next(function () {\n        var url = window.location.href;\n        for (var key in alternates) {\n          if (alternates.hasOwnProperty(key)) {\n            if (locale !== key && app.get('countries').indexOf(key) > -1) {\n              $('head').append('<link rel=\"alternate\" href=\"' + url.replace('/' + locale + '/', '/' + key + '/') + '\" hreflang=\"' + alternates[key] + '\" />');\n            }\n          }\n        }\n      });\n    },\n\n    actions: {\n      didTransition: function didTransition() {\n        if (this.get('device').isDesktop) {\n          window.scrollTo(0, 0);\n        } else if ($(window).scrollTop() >= $('#header').height()) {\n          window.scrollTo(0, $('#header').height());\n        }\n\n        this.seo();\n      }\n    }\n  });\n});","define('appappv2/routes/application', ['exports', 'appappv2/controllers/searchbar'], function (exports, _searchbar) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n    error: false,\n\n    renderTemplate: function renderTemplate() {\n      // Render default outlet\n      this.render();\n      // render extra outlets\n      this.render(\"searchbar\", {\n        outlet: \"searchbar\",\n        into: \"application\",\n        controller: \"searchbar\"\n      });\n    },\n\n    slideUpFilters: function slideUpFilters() {\n      // Cancel if a modal is open.\n      if ($('.ember-modal-overlay').is(':visible')) {\n        return;\n      }\n\n      var $pullDown = $('#facets-pull-down'),\n          $content = $('.content');\n\n      if ($pullDown.css('marginTop') === '0px') {\n        $pullDown.css({ 'z-index': -1 });\n        $pullDown.animate({ 'margin-top': 0 - $pullDown.height() }, 250);\n      }\n    },\n\n    slideDownFilters: function slideDownFilters() {\n      var $pullDown = $('#facets-pull-down'),\n          $content = $('.content');\n\n      $pullDown.show();\n      $pullDown.animate({ 'margin-top': 0 }, 250, function () {\n        $pullDown.css({ 'z-index': 4 });\n      });\n    },\n\n    contentPageTitle: function contentPageTitle(path) {\n      return {\n        '/about': 'About',\n        '/faq': 'FAQ',\n        '/terms': 'Terms and Conditions',\n        '/privacy': 'Privacy Policy'\n      }[path];\n    },\n\n    actions: {\n      didTransition: function didTransition() {\n        var that = this;\n\n        seoToDefault();\n\n        Ember.run.next(function () {\n          if (['/about', '/faq', '/terms', '/privacy'].includes(location.pathname)) {\n            document.title = \"AppApp.io | \" + that.contentPageTitle(location.pathname);\n          }\n        });\n      },\n\n      transitionTo: function transitionTo(href, app) {\n        var that = this;\n        var campaign;\n        var convertUrl;\n        // Some hackery here so that if the inner link is external, the outer link is not fired.\n        if (href.match(/^http/)) {\n          // External.\n          if (href.match(/apple\\.com/)) {\n            // Add correct campaign conversion.\n            if (this.get('device').isIpad) {\n              campaign = 'v2ipad';\n            } else if (this.get('device').isIphone) {\n              campaign = 'v2mobile';\n            } else {\n              campaign = 'v2desktop';\n            }\n\n            href = href + '&ct=' + campaign;\n            // Track conversion.\n            if (app && typeof ga == 'function') {\n              convertUrl = '/convert/' + campaign + '/' + app.get('locale') + '/' + app.get('objectID');\n              ga('send', 'pageview', {\n                'page': convertUrl,\n                'title': convertUrl\n              });\n            }\n          }\n          window.location = href;\n          this.set('innerHref', true);\n        } else {\n          if (!this.get('innerHref')) {\n            // Internal.\n            this.get('router').transitionTo(href);\n          }\n        }\n\n        Ember.run.next(function () {\n          that.set('innerHref', false);\n        });\n      },\n\n      search: function search(locale, query) {\n        if (!locale) {\n          locale = this.get('locale');\n        }\n\n        this.transitionTo('search', locale, { queryParams: { q: query } });\n      },\n\n      reload: function reload() {\n        location.reload();\n      },\n\n      toggleFilters: function toggleFilters() {\n        var $pullDown = $('#facets-pull-down');\n\n        if ($pullDown.css('marginTop') === '0px' && $pullDown.is(':visible')) {\n          this.slideUpFilters();\n        } else {\n          trackEvent('open filters');\n          this.slideDownFilters();\n        }\n      },\n\n      slideUpFilters: function slideUpFilters() {\n        this.slideUpFilters();\n      },\n\n      slideDownFilters: function slideDownFilters() {\n        this.slideDownFilters();\n      },\n\n      hideFilters: function hideFilters() {\n        var $pullDown = $('#facets-pull-down');\n        $pullDown.css({\n          'margin-top': 0 - $pullDown.height(),\n          'display': 'block'\n        });\n      },\n\n      errorModal: function errorModal() {\n        this.controllerFor('searchbar').set('error', true);\n      },\n\n      closeErrorModal: function closeErrorModal() {\n        this.controllerFor('searchbar').set('error', false);\n      }\n    }\n\n  });\n});","define('appappv2/routes/faceted_search', ['exports', 'appappv2/algolia_config'], function (exports, _algolia_config) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n    controllerName: 'search',\n    templateName: 'search',\n    queryParams: {\n      query: {\n        replace: true\n      }\n    },\n\n    actions: {\n      didTransition: function didTransition() {\n        var that = this,\n            controller = this.controller,\n            fromFrontPage = !!Globals['transitioningFromFront'];\n\n        if (!controller.get('initialising') && fromFrontPage) {\n          controller.set('showSeoDescription', true);\n          controller.set('seoDescription', null);\n          controller.set('resultSet', null);\n          controller.set('isLoading', true);\n          controller.parseFacets();\n          // This will trigger search as default value is null.\n          if (controller.get('query') === '' || controller.get('query') === null) {\n            controller.set('query', null);\n            controller.set('query', '');\n          }\n        } else {\n          Ember.run.next(function () {\n            Ember.$('#visibleSearch').val(_algolia_config.default.helper.state.query);\n          });\n        }\n      }\n    }\n  });\n});","define('appappv2/routes/home', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n\n    beforeModel: function beforeModel() {\n      this.replaceWith('/' + this.get('locale') + '/');\n    }\n  });\n});","define('appappv2/routes/index', ['exports', 'appappv2/algolia_config'], function (exports, _algolia_config) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n\n    model: function model(params) {\n      return params;\n    },\n\n    setupController: function setupController(controller, model) {\n      controller.set('model', model);\n      controller.set('query', '');\n    },\n\n    deactivate: function deactivate() {\n      window.scrollTo(0, 0);\n    },\n\n    actions: {\n      didTransition: function didTransition() {\n        var searchController = this.controllerFor(\"search\");\n        Ember.run.next(function () {\n          var $search = Ember.$('input[name=search]');\n          $search.val('');\n        });\n\n        // Clear prior facets\n        _algolia_config.default.helper.clearRefinements();\n\n        // Clear search controller's query. We need to temporarily stop observing to avoid a transition.\n        if (!searchController.get('initialising')) {\n          searchController.removeObserver('query');\n          searchController.set('query', null);\n          searchController.createQueryObserver();\n        }\n\n        seoToDefault();\n      }\n    }\n  });\n});","define('appappv2/routes/redirect_search', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n\n    actions: {\n      didTransition: function didTransition() {\n        var that = this;\n\n        Ember.run.next(function () {\n          var path = '/' + that.get('locale');\n\n          if (that.controller.get('model')) {\n            path += '/' + that.controller.get('model').facets;\n          }\n\n          path += '/search';\n\n          if (that.controller.get('q')) {\n            path += '?q=' + that.controller.get('q');\n          }\n\n          that.replaceWith(path);\n        });\n      }\n    }\n  });\n});","define('appappv2/routes/search', ['exports', 'appappv2/algolia_config'], function (exports, _algolia_config) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n    queryParams: {\n      q: {\n        replace: true\n      }\n    },\n\n    actions: {\n      didTransition: function didTransition() {\n        var that = this;\n\n        if (!this.controller.get('initialising')) {\n          this.controller.set('showSeoDescription', true);\n        }\n\n        Ember.run.next(function () {\n          Ember.$('#visibleSearch').val(_algolia_config.default.helper.state.query);\n        });\n      }\n    }\n  });\n});","define('appappv2/services/app_from_search_api', ['exports', 'appappv2/models/app'], function (exports, _app) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  function appFromSearchApi(item, locale) {\n    var app;\n\n    if (!item) {\n      return '';\n    }\n\n    // Not all items are apps, so reject if trackId is not present.\n    if (item['trackId'] === undefined) {\n      return '';\n    }\n\n    // Mac app\n    if (item['supportedDevices'] === undefined) {\n      return '';\n    }\n\n    app = _app.default.create({\n      objectID: item['trackId'],\n      name1: item['trackName'],\n      name2: '',\n      full_name: item['trackName'],\n      screenshot_urls: item['screenshotUrls'],\n      ipad_screenshot_urls: item['ipadScreenshotUrls'],\n      artwork: [item['artworkUrl60'], item['artworkUrl100'], item['artworkUrl512']],\n      average_rating: item['averageUserRating'],\n      user_rating_count: item['userRatingCount'],\n      description: item['description'],\n      locale: locale,\n      countries: [locale],\n      genres: item['genres'],\n      genre_ids: item['genreIds'],\n      supported_devices: item['supportedDevices'].join(' '),\n      app_by: item['artistName'],\n      app_by_id: item['artistId'],\n      release_date: item['releaseDate'],\n      version: item['version'],\n      content_advisory_rating: item['contentAdvisoryRating'],\n      advisories: item['advisories'],\n      app_url: item['artistViewUrl'],\n      fromSearchApi: true\n    });\n\n    app[locale + '_price'] = item['price'];\n\n    return app;\n  }\n\n  exports.default = appFromSearchApi;\n});","define('appappv2/services/number_format', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  function numberFormat(number) {\n    if (number == null) {\n      return '';\n    }\n\n    var firstPathElement = window.location.pathname.split('/')[1];\n\n    if (firstPathElement == 'in') {\n      // Indian number format 00,00,000\n      return number.toString().replace(/(\\d)(?=(\\d\\d)+\\d$)/g, \"$1,\");\n    }\n\n    return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n  }\n\n  exports.default = numberFormat;\n});","define(\"appappv2/templates/-age-modal\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"v7qyBWJu\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"md-modal\\\",null,[[\\\"close\\\",\\\"modalClass\\\"],[\\\"closeRefineModal\\\",\\\"modal modal-fixed-footer\\\"]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"modal-title\\\"],[7],[0,\\\"Filter by \\\"],[1,[20,[\\\"facet\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"modal-facet\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"isRefined\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"filtered-results\\\"],[7],[0,\\\"Results \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[20,[\\\"search\\\",\\\"resultSet\\\",\\\"nbHits\\\"]]],null],false],[8],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n          \\\"],[1,[25,\\\"price-slider\\\",null,[[\\\"facet\\\",\\\"minLabel\\\",\\\"maxLabel\\\"],[[20,[\\\"facet\\\"]],\\\"Within\\\",\\\"Before\\\"]]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-footer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"modal-action modal-close waves-effect waves-blue btn-flat cancel-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeRefineModal\\\"]],[7],[0,\\\"Done\\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/-age-modal.hbs\" } });\n});","define(\"appappv2/templates/-app-card\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"SLcGJ7Kz\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"a\\\"],[10,\\\"href\\\",[20,[\\\"app\\\",\\\"href\\\"]],null],[3,\\\"action\\\",[[19,0,[]],\\\"transitionTo\\\",[20,[\\\"app\\\",\\\"href\\\"]]]],[7],[0,\\\"\\\\n  \\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"card\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"top-card-content card-content\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"img\\\"],[9,\\\"class\\\",\\\"app-icon\\\"],[10,\\\"src\\\",[20,[\\\"app\\\",\\\"smallLogo\\\"]],null],[7],[8],[0,\\\"\\\\n      \\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"card-title\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[20,[\\\"app\\\",\\\"highlightedName\\\"]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"rating\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"app\\\",\\\"averageRating\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-action-star-rate small\\\"],[7],[8],[6,\\\"span\\\"],[7],[1,[20,[\\\"app\\\",\\\"averageRating\\\"]],false],[0,\\\"/5 from \\\"],[1,[25,\\\"number-format\\\",[[20,[\\\"app\\\",\\\"user_rating_count\\\"]]],null],false],[0,\\\" ratings\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-content-remove small\\\"],[7],[8],[6,\\\"span\\\"],[7],[0,\\\"No ratings\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"app\\\",\\\"formattedPrice\\\"]],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/-app-card.hbs\" } });\n});","define(\"appappv2/templates/-error-modal\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"utXYtlsY\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"md-modal\\\",null,[[\\\"close\\\",\\\"modalClass\\\"],[\\\"closeErrorModal\\\",\\\"modal modal-fixed-footer\\\"]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"modal-title\\\"],[7],[0,\\\"Error\\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"p\\\"],[7],[0,\\\"Oh no, there's been an error!\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"p\\\"],[7],[0,\\\"It's probably because you've lost Internet access.\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"p\\\"],[7],[0,\\\"Try reloading. If this error persists when you have a signal, please let us know.\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"centre\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"btn report-button waves-effect waves-light\\\"],[10,\\\"href\\\",[18,\\\"errorUrl\\\"],null],[7],[1,[25,\\\"fa-icon\\\",[\\\"envelope\\\"],null],false],[0,\\\" Report\\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-footer\\\"],[7],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"modal-action modal-close waves-effect waves-light btn-flat cancel-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"reload\\\"]],[7],[0,\\\"Reload\\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/-error-modal.hbs\" } });\n});","define(\"appappv2/templates/-facet-modal\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"mAw/iiQX\", \"block\": \"{\\\"symbols\\\":[\\\"facetValue\\\",\\\"facetValueChild\\\"],\\\"statements\\\":[[4,\\\"md-modal\\\",null,[[\\\"close\\\",\\\"modalClass\\\"],[\\\"closeRefineModal\\\",\\\"modal modal-fixed-footer\\\"]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"modal-title\\\"],[7],[0,\\\"Filter by \\\"],[1,[20,[\\\"facet\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"modal-facet\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"facet\\\",\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"refined\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"refined \\\",[25,\\\"if\\\",[[19,1,[\\\"isFixed\\\"]],\\\"fixed-facet\\\",\\\"\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[20,[\\\"facet\\\"]],[19,1,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\" \\\"],[1,[19,1,[\\\"label\\\"]],false],[0,\\\" \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,1,[\\\"count\\\"]]],null],false],[8],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"children\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"facet-child\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"facet-value\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"refined\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"refined\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[20,[\\\"facet\\\"]],[19,2,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\"  \\\"],[1,[25,\\\"number-format\\\",[[19,2,[\\\"label\\\"]]],null],false],[0,\\\" \\\"],[6,\\\"small\\\"],[7],[1,[19,2,[\\\"count\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[20,[\\\"facet\\\"]],[19,2,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\" \\\"],[1,[19,2,[\\\"label\\\"]],false],[0,\\\" \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,2,[\\\"count\\\"]]],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[20,[\\\"facet\\\"]],[19,1,[]]]],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\" \\\"],[1,[19,1,[\\\"label\\\"]],false],[0,\\\"\\\\n            \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,1,[\\\"count\\\"]]],null],false],[8],[0,\\\"\\\\n         \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-footer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"modal-action modal-close waves-effect waves-blue btn-flat cancel-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeRefineModal\\\"]],[7],[0,\\\"Done\\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/-facet-modal.hbs\" } });\n});","define(\"appappv2/templates/-facets\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"R1VPXAJa\", \"block\": \"{\\\"symbols\\\":[\\\"facet\\\",\\\"facetValue\\\",\\\"facetValueChild\\\",\\\"rangeLabel\\\",\\\"facetRow\\\",\\\"facet\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"id\\\",\\\"facets-pull-down\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"search\\\",\\\"facetRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,5,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"facet-links\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openRefineModal\\\",[19,6,[]]]],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"facet-header \\\",[25,\\\"if\\\",[[19,6,[\\\"disabled\\\"]],\\\"disabled\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,6,[\\\"icon\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[1,[25,\\\"fa-icon\\\",[[19,6,[\\\"icon\\\"]]],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[7],[1,[19,6,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,6,[\\\"isRefining\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,6,[\\\"isPrice\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[12,\\\"price-facet-modal\\\",[5,6]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,6,[\\\"isRating\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[12,\\\"rating-modal\\\",[5,6]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,6,[\\\"isAge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[12,\\\"age-modal\\\",[5,6]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[12,\\\"facet-modal\\\",[5,6]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[6]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[4,\\\"if\\\",[[20,[\\\"search\\\",\\\"numberOfRefinements\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"right remove-all\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"removeAllRefinements\\\"]],[7],[0,\\\"\\\\n          Remove all \\\"],[1,[25,\\\"fa-icon\\\",[\\\"remove\\\"],null],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"facet-tags\\\"],[7],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"search\\\",\\\"resultSet\\\",\\\"facets\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isPrice\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"facet-value\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openRefineModal\\\",[19,1,[]]]],[7],[0,\\\"\\\\n              \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"refined fixed-tag\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"fa fa-tag\\\"],[9,\\\"aria-hidden\\\",\\\"true\\\"],[7],[8],[0,\\\" Paid\\\"],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[19,1,[\\\"rangeLabels\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[19,1,[\\\"rangeLabels\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"facet-value\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openRefineModal\\\",[19,1,[]]]],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"refined\\\"],[7],[1,[25,\\\"fa-icon\\\",[\\\"tag\\\"],null],false],[0,\\\" \\\"],[1,[19,4,[]],false],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"values\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"refined\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"facet-value\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openRefineModal\\\",[19,1,[]]]],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"refined \\\",[25,\\\"if\\\",[[19,2,[\\\"isFixed\\\"]],\\\"fixed-tag\\\"],null]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"tag\\\"],null],false],[0,\\\" \\\"],[1,[19,2,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,2,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"facet-child\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"refined\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"refined\\\"],[7],[1,[25,\\\"fa-icon\\\",[\\\"tag\\\"],null],false],[0,\\\" \\\"],[1,[19,3,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"pull-tab\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleFilters\\\"]],[7],[0,\\\"\\\\n  Filters \\\"],[1,[25,\\\"fa-icon\\\",[\\\"sliders\\\"],null],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"search\\\",\\\"numberOfRefinementsLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"refine-count\\\"],[7],[1,[20,[\\\"search\\\",\\\"numberOfRefinementsLabel\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"appappv2/templates/-facets.hbs\" } });\n});","define(\"appappv2/templates/-price-facet-modal\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"k8NpCcSS\", \"block\": \"{\\\"symbols\\\":[\\\"facetValue\\\"],\\\"statements\\\":[[4,\\\"md-modal\\\",null,[[\\\"close\\\",\\\"modalClass\\\"],[\\\"closeRefineModal\\\",\\\"modal modal-fixed-footer\\\"]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"modal-title\\\"],[7],[0,\\\"Filter by \\\"],[1,[20,[\\\"facet\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"modal-facet\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"facet\\\",\\\"hasFreeSelected\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"isRefined\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"filtered-results\\\"],[7],[0,\\\"Results \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[20,[\\\"search\\\",\\\"resultSet\\\",\\\"nbHits\\\"]]],null],false],[8],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"facet\\\",\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isFree\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"hasFreeSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"refined\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"removeZero\\\",[20,[\\\"facet\\\"]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\" \\\"],[1,[19,1,[\\\"label\\\"]],false],[0,\\\" \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[20,[\\\"search\\\",\\\"resultSet\\\",\\\"nbHits\\\"]]],null],false],[8],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"setZero\\\",[20,[\\\"facet\\\"]]]],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\"\\\\n                  \\\"],[1,[19,1,[\\\"label\\\"]],false],[0,\\\"\\\\n                  \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,1,[\\\"count\\\"]]],null],false],[8],[0,\\\"\\\\n               \\\"],[8],[0,\\\"\\\\n             \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"facet\\\",\\\"hasFreeSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[25,\\\"price-slider\\\",null,[[\\\"facet\\\",\\\"minLabel\\\",\\\"maxLabel\\\"],[[20,[\\\"facet\\\"]],\\\"Paid (min. price)\\\",\\\"Max. price\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-footer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"modal-action modal-close waves-effect waves-blue btn-flat cancel-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeRefineModal\\\"]],[7],[0,\\\"Done\\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/-price-facet-modal.hbs\" } });\n});","define(\"appappv2/templates/-rating-modal\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"wtReB8Vj\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"md-modal\\\",null,[[\\\"close\\\",\\\"modalClass\\\"],[\\\"closeRefineModal\\\",\\\"modal modal-fixed-footer\\\"]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"modal-title\\\"],[7],[0,\\\"Filter by \\\"],[1,[20,[\\\"facet\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"modal-facet\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"isRefined\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"filtered-results\\\"],[7],[0,\\\"Results \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[20,[\\\"search\\\",\\\"resultSet\\\",\\\"nbHits\\\"]]],null],false],[8],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n      \\\"],[1,[25,\\\"price-slider\\\",null,[[\\\"facet\\\",\\\"minLabel\\\",\\\"maxLabel\\\"],[[20,[\\\"facet\\\"]],\\\"At least\\\",\\\"At most\\\"]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-footer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"modal-action modal-close waves-effect waves-blue btn-flat cancel-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeRefineModal\\\"]],[7],[0,\\\"Done\\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/-rating-modal.hbs\" } });\n});","define(\"appappv2/templates/about\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"wsSf4d0O\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"main-layout\\\",null,[[\\\"query\\\",\\\"transitionOnSearch\\\",\\\"isDesktop\\\"],[[20,[\\\"query\\\"]],true,[20,[\\\"device\\\",\\\"isDesktop\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"about\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"h3\\\"],[7],[0,\\\"About\\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"p\\\"],[7],[0,\\\"AppApp is a search engine for pay once games on the App Store created by \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://reasonfactory.com\\\"],[7],[0,\\\"Reason Factory\\\"],[8],[0,\\\".\\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"p\\\"],[7],[0,\\\"If you're wondering why we created this, and to read some other thoughts about the app ecosystem, check out our \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://blog.appapp.io\\\"],[7],[0,\\\"blog\\\"],[8],[0,\\\".\\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"p\\\"],[7],[0,\\\"You can contact us with questions, suggestions, or any other type of feedback at \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"mailto:contact@appapp.io\\\"],[7],[0,\\\"contact@appapp.io\\\"],[8],[0,\\\".\\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"p\\\"],[7],[0,\\\"For more details about this site, and advanced search tips, check out our \\\"],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/faq\\\"]],{\\\"statements\\\":[[0,\\\"FAQ\\\"]],\\\"parameters\\\":[]},null],[0,\\\".\\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"h3\\\"],[7],[0,\\\"Copyright\\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n    © 2018 Reason Factory Ltd. All Rights Reserved.\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"p\\\"],[7],[0,\\\" Apple, the Apple logo, iPad, and iPhone are trademarks of Apple Inc., registered in the U.S. and other countries. Apple Watch is a trademark of Apple Inc. App Store is a service mark of Apple Inc. iTunes is for legal or rightholder-authorized copying only. Don’t steal music.\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"h3\\\"],[7],[0,\\\"Privacy\\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"p\\\"],[7],[0,\\\"You can read our privacy policy \\\"],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/privacy\\\"]],{\\\"statements\\\":[[0,\\\"here\\\"]],\\\"parameters\\\":[]},null],[0,\\\".\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/about.hbs\" } });\n});","define(\"appappv2/templates/app\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"eKM3YzbS\", \"block\": \"{\\\"symbols\\\":[\\\"tag\\\",\\\"tag\\\"],\\\"statements\\\":[[4,\\\"main-layout\\\",null,[[\\\"query\\\",\\\"resultSet\\\",\\\"showSummary\\\",\\\"transitionOnSearch\\\",\\\"locale\\\",\\\"isDesktop\\\"],[[20,[\\\"query\\\"]],[20,[\\\"resultSet\\\"]],[20,[\\\"showSummary\\\"]],true,[20,[\\\"model\\\",\\\"locale\\\"]],[20,[\\\"device\\\",\\\"isDesktop\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"app\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"card\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"card-content\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s12\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"above-title s12 hide-on-large-only\\\"],[7],[1,[20,[\\\"model\\\",\\\"name\\\"]],false],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s4 m2 sidebar\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"img\\\"],[9,\\\"class\\\",\\\"icon\\\"],[10,\\\"src\\\",[20,[\\\"model\\\",\\\"mediumLogo\\\"]],null],[7],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s8 m10\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main-details headline-details\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"a\\\"],[9,\\\"rel\\\",\\\"nofollow\\\"],[9,\\\"class\\\",\\\"appstore-link hide-on-small-only\\\"],[10,\\\"href\\\",[20,[\\\"model\\\",\\\"iTunesLink\\\"]],null],[3,\\\"action\\\",[[19,0,[]],\\\"transitionTo\\\",[20,[\\\"model\\\",\\\"iTunesLink\\\"]],[20,[\\\"model\\\"]]]],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/download_on_the_appstore.png\\\"],[9,\\\"class\\\",\\\"app-store-link\\\"],[7],[8],[8],[0,\\\"\\\\n            \\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"hide-on-med-and-down\\\"],[7],[1,[20,[\\\"model\\\",\\\"name\\\"]],false],[8],[0,\\\"\\\\n               \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"rating\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasRating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-action-star-rate small\\\"],[7],[8],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"averageRating\\\"]],false],[0,\\\"/5 from \\\"],[1,[25,\\\"number-format\\\",[[20,[\\\"model\\\",\\\"user_rating_count\\\"]]],null],false],[0,\\\" ratings\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-content-remove small\\\"],[7],[8],[6,\\\"span\\\"],[7],[0,\\\"No ratings\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"formattedPrice\\\"]],false],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"tags-wrapper\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"facet-tags hide-on-med-and-down\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"tags\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"refined\\\"],[7],[1,[25,\\\"fa-icon\\\",[\\\"tag\\\"],null],false],[0,\\\" \\\"],[1,[19,2,[]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"              \\\"],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hide-on-med-and-up\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"a\\\"],[9,\\\"rel\\\",\\\"nofollow\\\"],[10,\\\"href\\\",[20,[\\\"model\\\",\\\"iTunesLink\\\"]],null],[9,\\\"class\\\",\\\"mobile-app-store-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"transitionTo\\\",[20,[\\\"model\\\",\\\"iTunesLink\\\"]],[20,[\\\"model\\\"]]]],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/download_on_the_appstore.png\\\"],[7],[8],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"s12\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"facet-tags hide-on-large-only\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"tags\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"refined\\\"],[7],[1,[25,\\\"fa-icon\\\",[\\\"tag\\\"],null],false],[0,\\\" \\\"],[1,[19,1,[]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row secondary-details\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s3 m2 sidebar hide-on-med-and-down\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sidebar-details\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"h6\\\"],[7],[0,\\\"Publisher\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"p\\\"],[7],[6,\\\"a\\\"],[10,\\\"href\\\",[20,[\\\"model\\\",\\\"app_url\\\"]],null],[9,\\\"rel\\\",\\\"nofollow\\\"],[7],[1,[20,[\\\"model\\\",\\\"app_by\\\"]],false],[8],[8],[0,\\\"\\\\n            \\\"],[6,\\\"h6\\\"],[7],[0,\\\"Category\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"genresDesc\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasIapLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"h6\\\"],[7],[0,\\\"In app purchases\\\"],[8],[0,\\\"\\\\n              \\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"hasIapLabel\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[6,\\\"h6\\\"],[7],[0,\\\"Devices\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"devicesDesc\\\"]],false],[8],[0,\\\"\\\\n            \\\"],[6,\\\"h6\\\"],[7],[0,\\\"Requires\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"p\\\"],[7],[0,\\\"iOS \\\"],[1,[20,[\\\"model\\\",\\\"minimum_os_version\\\"]],false],[0,\\\" or greater\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"h6\\\"],[7],[0,\\\"First released\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"full-month-and-year\\\",[[20,[\\\"model\\\",\\\"releaseDate\\\"]]],null],false],[8],[0,\\\"\\\\n            \\\"],[6,\\\"h6\\\"],[7],[0,\\\"Current version\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"version\\\"]],false],[8],[0,\\\"\\\\n            \\\"],[6,\\\"h6\\\"],[7],[0,\\\"Suitable for\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"content_advisory_rating\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"advisories\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                (for \\\"],[1,[20,[\\\"model\\\",\\\"advisoriesDesc\\\"]],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s12 m12 l10\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main-details\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"h5\\\"],[7],[0,\\\"Description\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"expandDescription\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"showMoreDescription\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[1,[25,\\\"description\\\",[[20,[\\\"model\\\",\\\"description\\\"]]],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMoreDescription\\\"]],[7],[0,\\\" ...less\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                  \\\"],[1,[25,\\\"description\\\",[[20,[\\\"model\\\",\\\"shortDescription\\\"]]],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMoreDescription\\\"]],[7],[0,\\\" ...more\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[25,\\\"description\\\",[[20,[\\\"model\\\",\\\"description\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"clear\\\",\\\"all\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"screenShotsTabbed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[18,\\\"screenshot-tabs\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"showIphoneScreenShots\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"model\\\",\\\"screenShotsTabbed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"h5\\\"],[7],[0,\\\"iPhone Screenshots\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[25,\\\"image-carousel\\\",null,[[\\\"screenshotUrls\\\",\\\"app\\\"],[[20,[\\\"model\\\",\\\"screenshot_urls\\\"]],[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"model\\\",\\\"screenShotsTabbed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"h5\\\"],[7],[0,\\\"iPad Screenshots\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[25,\\\"image-carousel\\\",null,[[\\\"screenshotUrls\\\",\\\"app\\\"],[[20,[\\\"model\\\",\\\"ipad_screenshot_urls\\\"]],[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[1,[25,\\\"app-reviews\\\",null,[[\\\"app\\\",\\\"locale\\\"],[[20,[\\\"model\\\"]],[20,[\\\"locale\\\"]]]]],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row hide-on-large-only\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s12 m12 l10\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main-details\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"h5\\\"],[7],[0,\\\"Details\\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"table\\\"],[9,\\\"class\\\",\\\"striped\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"th\\\"],[7],[0,\\\"Publisher\\\"],[8],[6,\\\"td\\\"],[7],[6,\\\"a\\\"],[10,\\\"href\\\",[20,[\\\"model\\\",\\\"app_url\\\"]],null],[9,\\\"rel\\\",\\\"nofollow\\\"],[7],[1,[20,[\\\"model\\\",\\\"app_by\\\"]],false],[8],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"th\\\"],[7],[0,\\\"Category\\\"],[8],[6,\\\"td\\\"],[7],[1,[20,[\\\"model\\\",\\\"genresDesc\\\"]],false],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasIapLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"th\\\"],[7],[0,\\\"In app purchases\\\"],[8],[6,\\\"td\\\"],[7],[1,[20,[\\\"model\\\",\\\"hasIapLabel\\\"]],false],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"th\\\"],[7],[0,\\\"Devices\\\"],[8],[6,\\\"td\\\"],[7],[1,[20,[\\\"model\\\",\\\"devicesDesc\\\"]],false],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"th\\\"],[7],[0,\\\"Requires\\\"],[8],[6,\\\"td\\\"],[7],[0,\\\"iOS \\\"],[1,[20,[\\\"model\\\",\\\"minimum_os_version\\\"]],false],[0,\\\" or greater\\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"th\\\"],[7],[0,\\\"First released\\\"],[8],[6,\\\"td\\\"],[7],[1,[25,\\\"full-month-and-year\\\",[[20,[\\\"model\\\",\\\"releaseDate\\\"]]],null],false],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"th\\\"],[7],[0,\\\"Current version\\\"],[8],[6,\\\"td\\\"],[7],[1,[20,[\\\"model\\\",\\\"version\\\"]],false],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"th\\\"],[7],[0,\\\"Suitable for\\\"],[8],[6,\\\"td\\\"],[7],[1,[20,[\\\"model\\\",\\\"content_advisory_rating\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"advisories\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    (for \\\"],[1,[20,[\\\"model\\\",\\\"advisoriesDesc\\\"]],false],[0,\\\")\\\\n                  \\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s12 m12 l10 offset-l2\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main-details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"release_notes\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"h5\\\"],[7],[0,\\\"Release notes for version \\\"],[1,[20,[\\\"model\\\",\\\"version\\\"]],false],[8],[0,\\\"\\\\n              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n                \\\"],[1,[25,\\\"description\\\",[[20,[\\\"model\\\",\\\"release_notes\\\"]]],null],false],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"model\\\",\\\"fromSearchApi\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"related-apps\\\",null,[[\\\"app\\\",\\\"locale\\\"],[[20,[\\\"model\\\"]],[20,[\\\"locale\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[25,\\\"more-apps-by\\\",null,[[\\\"app\\\",\\\"locale\\\"],[[20,[\\\"model\\\"]],[20,[\\\"locale\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/app.hbs\" } });\n});","define(\"appappv2/templates/application\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"dqkEzroD\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[25,\\\"outlet\\\",[\\\"searchbar\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[1,[18,\\\"md-modal-container\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/application.hbs\" } });\n});","define(\"appappv2/templates/components/app-reviews\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6pPnruad\", \"block\": \"{\\\"symbols\\\":[\\\"review\\\",\\\"review\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"reviews\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h5\\\"],[7],[0,\\\"Reviews\\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"reviews\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"firstReviews\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"b\\\"],[9,\\\"class\\\",\\\"rating-title\\\"],[7],[1,[19,2,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n          \\\"],[1,[25,\\\"star-rating\\\",null,[[\\\"rating\\\"],[[19,2,[\\\"rating\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"reviewer\\\"],[7],[0,\\\"by \\\"],[1,[19,2,[\\\"reviewer\\\"]],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[7],[1,[19,2,[\\\"content\\\"]],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"moreReviewsExist\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"show-more-reviews\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"action\\\",\\\"\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showMoreReviews\\\"]],[7],[0,\\\"See more reviews...\\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMoreModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"md-modal\\\",null,[[\\\"close\\\",\\\"modalClass\\\"],[\\\"closeModal\\\",\\\"modal modal-fixed-footer\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"modal-title reviews-modal\\\"],[7],[0,\\\"\\\\n      Reviews \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hide-on-med-and-down\\\"],[7],[0,\\\"for \\\\\\\"\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"truncated-title\\\"],[7],[1,[20,[\\\"app\\\",\\\"name\\\"]],false],[8],[0,\\\"\\\\\\\"\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"rel\\\",\\\"nofollow\\\"],[10,\\\"href\\\",[20,[\\\"app\\\",\\\"iTunesLink\\\"]],null],[9,\\\"class\\\",\\\"mobile-app-store-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"transitionTo\\\",[20,[\\\"app\\\",\\\"iTunesLink\\\"]],[20,[\\\"model\\\"]]]],[7],[0,\\\"\\\\n        \\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/download_on_the_appstore.png\\\"],[7],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"reviews\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"fullReviews\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"b\\\"],[9,\\\"class\\\",\\\"rating-title\\\"],[7],[1,[19,1,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n            \\\"],[1,[25,\\\"star-rating\\\",null,[[\\\"rating\\\"],[[19,1,[\\\"rating\\\"]]]]],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"reviewer\\\"],[7],[0,\\\"by \\\"],[1,[19,1,[\\\"reviewer\\\"]],false],[8],[0,\\\"\\\\n          \\\"],[6,\\\"p\\\"],[7],[1,[19,1,[\\\"content\\\"]],false],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-footer\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"modal-action modal-close waves-effect waves-blue btn-flat cancel-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\"]],[7],[0,\\\"Done\\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/app-reviews.hbs\" } });\n});","define(\"appappv2/templates/components/browse-by-category\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"yn3FHoNT\", \"block\": \"{\\\"symbols\\\":[\\\"category\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"browse\\\"],[7],[0,\\\"\\\\n  Or start browsing the top pay once games:\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"categories\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"categories\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"a\\\"],[10,\\\"href\\\",[19,1,[\\\"path\\\"]],null],[3,\\\"action\\\",[[19,0,[]],\\\"transitionFromFront\\\",[19,1,[\\\"path\\\"]]]],[7],[1,[19,1,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"more \\\",[25,\\\"unless\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]],\\\"touch-more\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"more\\\"]],[7],[0,\\\"more...\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"algolia_mob\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://algolia.com\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/assets/search-by-algolia.png\\\"],[7],[8],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/browse-by-category.hbs\" } });\n});","define(\"appappv2/templates/components/fast-link-to\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"vYlsSAMO\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[6,\\\"a\\\"],[10,\\\"href\\\",[18,\\\"href\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"transitionTo\\\",[20,[\\\"href\\\"]]]],[7],[11,1],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/fast-link-to.hbs\" } });\n});","define(\"appappv2/templates/components/image-carousel\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"sp2XpSXu\", \"block\": \"{\\\"symbols\\\":[\\\"url\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"id\\\",\\\"carousel\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"screenshotUrls\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"carousel-item\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[19,1,[]],null],[7],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/image-carousel.hbs\" } });\n});","define(\"appappv2/templates/components/main-layout\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"I6L09sw1\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[6,\\\"main\\\"],[10,\\\"class\\\",[26,[\\\"container content \\\",[25,\\\"if\\\",[[20,[\\\"isDesktop\\\"]],\\\"desktop-container\\\"],null]]]],[7],[0,\\\"\\\\n  \\\"],[11,1],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[2,\\\" footer here \\\"],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"invisible\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"focus-search\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[1,[25,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\"],[\\\"search\\\",\\\"search\\\",[20,[\\\"query\\\"]],\\\"hiddenSearch\\\"]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[0,\\\"   \\\"],[6,\\\"footer\\\"],[9,\\\"class\\\",\\\"page-footer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col l6 s12\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"h5\\\"],[9,\\\"class\\\",\\\"footer-logo\\\"],[7],[0,\\\"AppApp\\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"grey-text text-lighten-4\\\"],[7],[0,\\\"Apple, the Apple logo, iPad, and iPhone are trademarks of Apple Inc., registered in the U.S. and other countries. Apple Watch is a trademark of Apple Inc. App Store is a service mark of Apple Inc. iTunes is for legal or rightholder-authorized copying only. Don’t steal music.\\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col l4 offset-l2 s12\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"h5\\\"],[9,\\\"class\\\",\\\"white-text\\\"],[7],[8],[0,\\\"\\\\n          \\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/about\\\"]],{\\\"statements\\\":[[0,\\\"About\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n            \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/faq\\\"]],{\\\"statements\\\":[[0,\\\"FAQ\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n            \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://blog.appapp.io\\\"],[7],[0,\\\"Blog\\\"],[8],[8],[0,\\\"\\\\n            \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/terms\\\"]],{\\\"statements\\\":[[0,\\\"Terms & conditions\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n            \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/privacy\\\"]],{\\\"statements\\\":[[0,\\\"Privacy & cookies\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"footer-copyright\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n      © Reason Factory Ltd 2018. All rights reserved.\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/main-layout.hbs\" } });\n});","define(\"appappv2/templates/components/md-loader\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"V1sZ8qyw\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"spinner-layer spinner-blue-only\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"circle-clipper left\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"circle\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"gap-patch\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"circle\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"circle-clipper right\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"circle\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/md-loader.hbs\" } });\n});","define(\"appappv2/templates/components/md-modal-container\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"JpUpggD4\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/md-modal-container.hbs\" } });\n});","define(\"appappv2/templates/components/md-modal\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"tUhHDcBB\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"ember-modal-overlay\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"close\\\"]],[7],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[18,\\\"modalClass\\\"],null],[7],[0,\\\"\\\\n    \\\"],[11,1],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/md-modal.hbs\" } });\n});","define(\"appappv2/templates/components/more-apps-by\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"koXqYgik\", \"block\": \"{\\\"symbols\\\":[\\\"app\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"moreApps\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"related-apps-title\\\"],[7],[0,\\\"More apps by \\\"],[1,[20,[\\\"app\\\",\\\"app_by\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"related-apps\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"moreApps\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"related-app\\\"],[7],[0,\\\"\\\\n      \\\"],[12,\\\"app-card\\\",[1]],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/more-apps-by.hbs\" } });\n});","define(\"appappv2/templates/components/nav-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Z5FU3sYM\", \"block\": \"{\\\"symbols\\\":[\\\"locale\\\"],\\\"statements\\\":[[6,\\\"nav\\\"],[9,\\\"id\\\",\\\"nav\\\"],[9,\\\"class\\\",\\\"white\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"nav-wrapper\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isFront\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"nav-logo brand-logo logo\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/\\\"]],{\\\"statements\\\":[[0,\\\"AppApp\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"right\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"flag\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleChooseCountry\\\"]],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[18,\\\"flagUrl\\\"],null],[7],[8],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"right hide-on-med-and-down\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"algolia\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://algolia.com\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/assets/search-by-algolia.png\\\"],[7],[8],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/about\\\"]],{\\\"statements\\\":[[0,\\\"About\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n        \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/faq\\\"]],{\\\"statements\\\":[[0,\\\"FAQ\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n        \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://blog.appapp.io\\\"],[7],[0,\\\"Blog\\\"],[8],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"button-collapse\\\"],[9,\\\"href\\\",\\\"#\\\"],[9,\\\"data-activates\\\",\\\"nav-mobile\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-navigation-menu\\\"],[7],[8],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"chooseCountryModalOpen\\\"]]],null,{\\\"statements\\\":[[4,\\\"md-modal\\\",null,[[\\\"close\\\",\\\"modalClass\\\"],[\\\"toggleChooseCountry\\\",\\\"modal modal-fixed-footer\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"modal-title\\\"],[7],[0,\\\"Switch App Store\\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"p\\\"],[7],[0,\\\"Choose a store to switch to:\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"countries\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"locales\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"switchLocale\\\",[19,1,[\\\"locale\\\"]]]],[7],[0,\\\"\\\\n              \\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[19,1,[\\\"flagUrl\\\"]],null],[7],[8],[0,\\\"\\\\n              \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[19,1,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-footer\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"modal-action modal-close waves-effect waves-light btn-flat cancel-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleChooseCountry\\\"]],[7],[0,\\\"Cancel\\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/nav-bar.hbs\" } });\n});","define(\"appappv2/templates/components/price-slider\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"DDSbPxTB\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"li\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"facet\\\",\\\"isFixed\\\"]],\\\"fixed-facet\\\",\\\"\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMinRefinement\\\",[20,[\\\"facet\\\"]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"minSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[1,[18,\\\"minLabel\\\"],false],[0,\\\"\\\\n    \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[20,[\\\"minSelectedLabel\\\"]]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"minSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price-slider\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"slider\\\"],[7],[1,[25,\\\"range-slider\\\",null,[[\\\"change\\\",\\\"slide\\\",\\\"start\\\",\\\"range\\\",\\\"step\\\",\\\"animate\\\"],[\\\"fromChangedAction\\\",\\\"fromSlideAction\\\",[20,[\\\"fromSliderStart\\\"]],[20,[\\\"range\\\"]],1,true]]],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price-slider\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"slider\\\"],[7],[1,[25,\\\"range-slider\\\",null,[[\\\"change\\\",\\\"slide\\\",\\\"start\\\",\\\"range\\\",\\\"step\\\",\\\"animate\\\"],[\\\"fromChangedAction\\\",\\\"fromSlideAction\\\",[20,[\\\"fromSliderStart\\\"]],[20,[\\\"range\\\"]],1,true]]],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMaxRefinement\\\",[20,[\\\"facet\\\"]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"maxSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[1,[18,\\\"maxLabel\\\"],false],[0,\\\"\\\\n    \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[20,[\\\"maxSelectedLabel\\\"]]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"facet\\\",\\\"maxSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price-slider\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"slider\\\"],[7],[1,[25,\\\"range-slider\\\",null,[[\\\"change\\\",\\\"slide\\\",\\\"start\\\",\\\"range\\\",\\\"step\\\",\\\"animate\\\"],[\\\"toChangedAction\\\",\\\"toSlideAction\\\",[20,[\\\"toSliderStart\\\"]],[20,[\\\"range\\\"]],1,true]]],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price-slider\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"slider\\\"],[7],[1,[25,\\\"range-slider\\\",null,[[\\\"change\\\",\\\"slide\\\",\\\"start\\\",\\\"range\\\",\\\"step\\\",\\\"animate\\\"],[\\\"toChangedAction\\\",\\\"toSlideAction\\\",[20,[\\\"toSliderStart\\\"]],[20,[\\\"range\\\"]],1,true]]],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/price-slider.hbs\" } });\n});","define(\"appappv2/templates/components/related-apps\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"f6teHwNH\", \"block\": \"{\\\"symbols\\\":[\\\"app\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"relatedApps\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h4\\\"],[9,\\\"class\\\",\\\"related-apps-title\\\"],[7],[0,\\\"You may also like...\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"related-apps\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"relatedApps\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"related-app\\\"],[7],[0,\\\"\\\\n      \\\"],[12,\\\"app-card\\\",[1]],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/related-apps.hbs\" } });\n});","define(\"appappv2/templates/components/screenshot-tabs\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"HacMsFXT\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"h5\\\"],[7],[0,\\\"Screenshots\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"tabs\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"tab col s6\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showIphoneScreenshots\\\"]],[7],[0,\\\"iPhone\\\"],[8],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"tab col s6\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showIpadScreenshots\\\"]],[7],[0,\\\"iPad\\\"],[8],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/screenshot-tabs.hbs\" } });\n});","define(\"appappv2/templates/components/star-rating\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Pfn8sQ4x\", \"block\": \"{\\\"symbols\\\":[\\\"star\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"stars\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-action-star-rate small\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/components/star-rating.hbs\" } });\n});","define(\"appappv2/templates/faq\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"rVvTPf8n\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"main-layout\\\",null,[[\\\"query\\\",\\\"transitionOnSearch\\\",\\\"isDesktop\\\"],[[20,[\\\"query\\\"]],true,[20,[\\\"device\\\",\\\"isDesktop\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"faq\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"h2\\\"],[7],[0,\\\"FAQ\\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h5\\\"],[7],[0,\\\"So why do we need a search engine for pay once games on the App Store?\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"answer\\\"],[7],[0,\\\"\\\\n        The app store doesn't let you search for exclusively pay once games, and we thought that should be possible.\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h5\\\"],[7],[0,\\\"What is a pay once game?\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"answer\\\"],[7],[0,\\\"\\\\n        A \\\\\\\"pay once game\\\\\\\" is a game that you need to pay for to install, but then doesn't try to charge you more money through in-app purchases.\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h5\\\"],[7],[0,\\\"How does this site make money?\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"answer\\\"],[7],[0,\\\"\\\\n        We don't. It's here for free.\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h5\\\"],[7],[0,\\\"Do you index all the pay once games in the App Store?\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"answer\\\"],[7],[0,\\\"\\\\n        In short, no. We index the top 10,000 (approximately), which is about 70% of the pay once game titles available.\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h5\\\"],[7],[0,\\\"I seem to remember you indexed nearly a million apps, and not just pay once games.\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"answer\\\"],[7],[0,\\\"\\\\n        That's right. When \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://affiliate.itunes.apple.com/resources/blog/affiliate-program-app-store-updates/\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[0,\\\"Apple ended its App Store Afilliate Program\\\"],[8],[0,\\\"\\\\n        our revenue stream was removed, so we took the decision to focus on our primary goal - promoting pay once games, and reduce our hosting costs.\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h5\\\"],[7],[0,\\\"Do you have an advanced search?\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"answer\\\"],[7],[0,\\\"\\\\n        What? Our search isn't already advanced enough for you? Actually, here are some tips for power users:\\\\n        \\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n            To search for an exact phrase wrap it in double quotes. e.g. \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"exampleSearch\\\",\\\"\\\\\\\"football%20manager\\\\\\\"\\\"]],[7],[0,\\\"\\\\\\\"football manager\\\\\\\"\\\"],[8],[0,\\\".\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n            By default our search also tries to match on terms if you have made a typo. If you want to only search for the exact term, you can also wrap it in double quotes. e.g. \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"exampleSearch\\\",\\\"\\\\\\\"hallo\\\\\\\"\\\"]],[7],[0,\\\"\\\\\\\"hallo\\\\\\\"\\\"],[8],[0,\\\".\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n            To exclude a word, you can prefix it with '-'. e.g. \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"exampleSearch\\\",\\\"crossy%20-road\\\"]],[7],[0,\\\"crossy -road\\\"],[8],[0,\\\", which searches for all apps that include the word 'crossy' but do not include the word 'road'.\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h5\\\"],[7],[0,\\\"I have a suggestion for a new filter, or something else which you don't seem to have thought of. Can I contact you?\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"answer\\\"],[7],[0,\\\"Yes, please do. Mail us at \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"mailto:contact@appapp.io\\\"],[7],[0,\\\"contact@appapp.io\\\"],[8],[0,\\\" and let us know.\\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/faq.hbs\" } });\n});","define(\"appappv2/templates/four-oh-four\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"E0IBopvm\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"main-layout\\\",null,[[\\\"query\\\",\\\"transitionOnSearch\\\",\\\"isDesktop\\\"],[[20,[\\\"query\\\"]],true,[20,[\\\"device\\\",\\\"isDesktop\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"h1\\\"],[7],[0,\\\"Page Not Found\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"Sorry, this URL is not one we recognise. Why not search for something else nice by typing into the search box?\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/four-oh-four.hbs\" } });\n});","define(\"appappv2/templates/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"DEuDxucX\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"invisible\\\"],[7],[0,\\\"\\\\n  \\\"],[1,[25,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"size\\\",\\\"placeholder\\\",\\\"enter\\\",\\\"value\\\",\\\"autocorrect\\\",\\\"class\\\"],[\\\"text\\\",\\\"search\\\",\\\"50\\\",\\\"Start typing to search...\\\",\\\"search\\\",[20,[\\\"query\\\"]],\\\"off\\\",\\\"hiddenSearch\\\"]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/index.hbs\" } });\n});","define(\"appappv2/templates/privacy\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"YaBOC8/Q\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"main-layout\\\",null,[[\\\"query\\\",\\\"transitionOnSearch\\\",\\\"isDesktop\\\"],[[20,[\\\"query\\\"]],true,[20,[\\\"device\\\",\\\"isDesktop\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"terms\\\"],[7],[0,\\\"\\\\n\\\"],[6,\\\"h1\\\"],[7],[0,\\\"Privacy Policy\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"This privacy policy is for this website AppApp.io and served by Reason Factory Ltd and governs the privacy of its users who choose to use it.\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"The policy sets out the different areas where user privacy is concerned and outlines the obligations & requirements of the users, the website and website owners. Furthermore the way this website processes, stores and protects user data and information will also be detailed within this policy.\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"The Website\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n  This website and its owners take a proactive approach to user privacy and ensure the necessary steps are taken to protect the privacy of its users throughout their visiting experience. This website complies with all UK national laws and requirements for user privacy.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"This website does not currently track or store any personally identifiable information.\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"Use of Cookies\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nThis website uses cookies to enhance your experience and through external vendors as decribed here.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nCookies are small files saved to the user's computers hard drive that track, save and store information about the user's interactions and usage of the website.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nThis website uses tracking software to monitor its visitors to better understand how they use it. This software is provided by Google Analytics which uses cookies to track visitor usage. The software will save a cookie to your computers hard drive in order to track and monitor your engagement and usage of the website, but will not store, save or collect personal information. You can read Google's privacy policy \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://www.google.com/privacy.html\\\"],[7],[0,\\\"here\\\"],[8],[0,\\\" for further information.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nThis website uses traffic optimisation and distribution software. This software is provided by CloudFlare which uses cookies to provide analytics and security features. The software will save a cookie to your computers hard drive in order to track and monitor your engagement and usage of the website, but will not store, save or collect personal information. You can read CloudFlare's privacy policy \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://www.cloudflare.com/security-policy\\\"],[7],[0,\\\"here\\\"],[8],[0,\\\" for further information.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nOther cookies may be stored to your computers hard drive by external vendors when this website uses referral programs, sponsored links or adverts. Such cookies are used for conversion and referral tracking and typically expire after 30 days, though some may take longer. No personal information is stored, saved or collected.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nUsers are advised that if they wish to deny the use and saving of cookies from this website's external vendors on to their computers hard drive they should take necessary steps within their web browsers security settings to block all cookies from the website and its external serving vendors.\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"Contact & Communication\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nUsers contacting this website and/or its owners do so at their own discretion and provide any such personal details requested at their own risk. Your personal information is kept private and stored securely until a time it is no longer required or has no use, as detailed in the Data Protection Act 1998.\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"This website and its owners use any information submitted to provide you with further information about the products / services they offer or to assist you in answering any questions or queries you may have submitted. This includes using your details to subscribe you to any email newsletter program the website operates but only if this was made clear to you and your express permission was granted when submitting any form to email process. Or whereby you the consumer have previously purchased from or enquired about purchasing from the company a product or service that the email newsletter relates to. This is by no means an entire list of your user rights in regard to receiving email marketing material. Your details are not passed on to any third parties.\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"External Links\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n  Although this website only looks to include quality, safe and relevant external links, users are advised to adopt a policy of caution before clicking any external web links mentioned throughout this website. \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n  The owners of this website cannot guarantee or verify the contents of any externally linked website despite their best efforts. Users should therefore note they click on external links at their own risk and this website and its owners cannot be held liable for any damages or implications caused by visiting any external links mentioned.\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"Adverts and Sponsored Links\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nThis website may contain sponsored links and adverts. These will typically be served through our advertising partners, to whom may have detailed privacy policies relating directly to the adverts they serve.\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nClicking on any such adverts will send you to the advertisers website through a referral program which may use cookies and will track the number of referrals sent from this website. This may include the use of cookies which may in turn be saved on your computers hard drive. Users should therefore note they click on sponsored external links at their own risk and this website and its owners cannot be held liable for any damages or implications caused by visiting any external links mentioned.\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"Resources & Further Information\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://www.legislation.gov.uk/ukpga/1998/29/contents\\\"],[7],[0,\\\"Data Protection Act 1998\\\"],[8],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://www.legislation.gov.uk/uksi/2003/2426/contents/made\\\"],[7],[0,\\\"Privacy and Electronic Communications Regulations 2003\\\"],[8],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"attrib\\\"],[7],[0,\\\"v.2.0 April 2013 Edited & customised by: Reason Factory Ltd\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/privacy.hbs\" } });\n});","define(\"appappv2/templates/search\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"vTPRVPGj\", \"block\": \"{\\\"symbols\\\":[\\\"page\\\",\\\"facet\\\",\\\"facetValue\\\",\\\"facetValueChild\\\",\\\"facetValue\\\",\\\"app\\\"],\\\"statements\\\":[[4,\\\"main-layout\\\",null,[[\\\"query\\\",\\\"isSearchResultsPage\\\",\\\"isDesktop\\\"],[[20,[\\\"query\\\"]],true,[20,[\\\"device\\\",\\\"isDesktop\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"seoDescription\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"landing-wrapper \\\",[25,\\\"if\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]],\\\"desktop\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"dismissLandingPageTitle\\\"]],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"landing-dismiss\\\"],[7],[1,[25,\\\"fa-icon\\\",[\\\"remove\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"landing-page-title\\\"],[7],[1,[18,\\\"seoDescription\\\"],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"row \\\",[25,\\\"if\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]],\\\"desktop-row\\\"],null]]]],[7],[0,\\\"\\\\n  \\\"],[6,\\\"section\\\"],[9,\\\"id\\\",\\\"result-set\\\"],[10,\\\"class\\\",[26,[\\\"col \\\",[25,\\\"if\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]],\\\"s9 m9 l9\\\",\\\"s12 m12 l12\\\"],null]]]],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row results\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"resultSet\\\",\\\"results\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"col \\\",[25,\\\"if\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]],\\\"s6 m6 l6 xl4\\\",\\\"s12 m6 l4\\\"],null]]]],[7],[0,\\\"\\\\n          \\\"],[6,\\\"a\\\"],[10,\\\"href\\\",[19,6,[\\\"href\\\"]],null],[3,\\\"action\\\",[[19,0,[]],\\\"transitionTo\\\",[19,6,[\\\"href\\\"]]]],[7],[0,\\\"\\\\n            \\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"card\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"top-card-content card-content\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"img\\\"],[9,\\\"class\\\",\\\"app-icon\\\"],[10,\\\"src\\\",[19,6,[\\\"smallLogo\\\"]],null],[7],[8],[0,\\\"\\\\n                \\\"],[6,\\\"h2\\\"],[9,\\\"class\\\",\\\"card-title\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[19,6,[\\\"highlightedName\\\"]],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"rating\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,6,[\\\"average_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-action-star-rate small\\\"],[7],[8],[6,\\\"span\\\"],[7],[1,[19,6,[\\\"averageRating\\\"]],false],[0,\\\"/5 from \\\"],[1,[25,\\\"number-format\\\",[[19,6,[\\\"user_rating_count\\\"]]],null],false],[0,\\\" ratings\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-content-remove small\\\"],[7],[8],[6,\\\"span\\\"],[7],[0,\\\"No ratings\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"span\\\"],[7],[1,[19,6,[\\\"formattedPrice\\\"]],false],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\\n              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bg-card-image-portrait left\\\"],[10,\\\"style\\\",[19,6,[\\\"backgroundImageCss1\\\"]],null],[7],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bg-card-image-portrait right\\\"],[10,\\\"style\\\",[19,6,[\\\"backgroundImageCss2\\\"]],null],[7],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\\n              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"card-content app-desc\\\"],[7],[0,\\\"\\\\n                \\\"],[1,[19,6,[\\\"highlightedDescription\\\"]],false],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"card-action\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"a\\\"],[9,\\\"rel\\\",\\\"nofollow\\\"],[10,\\\"href\\\",[19,6,[\\\"iTunesLink\\\"]],null],[3,\\\"action\\\",[[19,0,[]],\\\"transitionTo\\\",[19,6,[\\\"iTunesLink\\\"]],[19,6,[]]]],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/download_on_the_appstore.png\\\"],[9,\\\"class\\\",\\\"app-store-link\\\"],[7],[8],[8],[0,\\\"\\\\n                \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"more-details\\\"],[7],[0,\\\"More details...\\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col s8 offset-s2\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[18,\\\"md-loader\\\"],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"aside\\\"],[9,\\\"id\\\",\\\"desktop-facet-column\\\"],[9,\\\"class\\\",\\\"col s3 m3 l3\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"resultSet\\\",\\\"desktopFacets\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"facet\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"facet-header\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"icon\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[1,[25,\\\"fa-icon\\\",[[19,2,[\\\"icon\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[19,2,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"minimised\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minimise-facet\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMinimised\\\",[19,2,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"plus-square-o\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minimise-facet\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMinimised\\\",[19,2,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"minus-square-o\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"          \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[19,2,[\\\"minimised\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"desktop-facet\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"isNumeric\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"isPrice\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[19,2,[\\\"values\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,5,[\\\"isFree\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"hasFreeSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                          \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"refined\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"removeZero\\\",[19,2,[]]]],[7],[0,\\\"\\\\n                            \\\"],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\"\\\\n                            \\\"],[1,[19,5,[\\\"label\\\"]],false],[0,\\\"\\\\n                            \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[20,[\\\"resultSet\\\",\\\"nbHits\\\"]]],null],false],[8],[0,\\\"\\\\n                          \\\"],[8],[0,\\\"\\\\n                        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                          \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"setZero\\\",[19,2,[]],[19,5,[]]]],[7],[0,\\\"\\\\n                              \\\"],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\"\\\\n                              \\\"],[1,[19,5,[\\\"label\\\"]],false],[0,\\\"\\\\n                              \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,5,[\\\"count\\\"]]],null],false],[8],[0,\\\"\\\\n                           \\\"],[8],[0,\\\"\\\\n                         \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[4,\\\"unless\\\",[[19,2,[\\\"hasFreeSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[25,\\\"price-slider\\\",null,[[\\\"facet\\\",\\\"minLabel\\\",\\\"maxLabel\\\",\\\"isDesktop\\\"],[[19,2,[]],\\\"Paid (min. price)\\\",\\\"Max. price\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"isRating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[1,[25,\\\"price-slider\\\",null,[[\\\"facet\\\",\\\"minLabel\\\",\\\"maxLabel\\\",\\\"isDesktop\\\"],[[19,2,[]],\\\"At least\\\",\\\"At most\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"isAge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[1,[25,\\\"price-slider\\\",null,[[\\\"facet\\\",\\\"minLabel\\\",\\\"maxLabel\\\",\\\"isDesktop\\\"],[[19,2,[]],\\\"Within\\\",\\\"Before\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,2,[\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"refined\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"refined  \\\",[25,\\\"if\\\",[[19,3,[\\\"isFixed\\\"]],\\\"fixed-facet\\\",\\\"\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[19,2,[]],[19,3,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\" \\\"],[1,[19,3,[\\\"label\\\"]],false],[0,\\\" \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,3,[\\\"count\\\"]]],null],false],[8],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"children\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                          \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"facet-child\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,3,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"                              \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"facet-value\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,4,[\\\"refined\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"refined\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[19,2,[]],[19,4,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"check-square-o\\\"],null],false],[0,\\\"  \\\"],[1,[25,\\\"number-format\\\",[[19,4,[\\\"label\\\"]]],null],false],[0,\\\" \\\"],[6,\\\"small\\\"],[7],[1,[19,4,[\\\"count\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[19,2,[]],[19,4,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\" \\\"],[1,[19,4,[\\\"label\\\"]],false],[0,\\\" \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,4,[\\\"count\\\"]]],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                          \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"refine\\\",[19,2,[]],[19,3,[]]]],[7],[0,\\\"\\\\n                          \\\"],[1,[25,\\\"fa-icon\\\",[\\\"square-o\\\"],null],false],[0,\\\" \\\"],[1,[19,3,[\\\"label\\\"]],false],[0,\\\"\\\\n                          \\\"],[6,\\\"small\\\"],[7],[1,[25,\\\"number-format\\\",[[19,3,[\\\"count\\\"]]],null],false],[8],[0,\\\"\\\\n                       \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                 \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"expandable\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"expanded\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"facet-expand\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleExpand\\\",[19,2,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"caret-up\\\"],null],false],[0,\\\" Fewer\\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"facet-expand\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleExpand\\\",[19,2,[]]]],[7],[1,[25,\\\"fa-icon\\\",[\\\"caret-down\\\"],null],false],[0,\\\" More\\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPages\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"s12 center-align\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"pagination\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"prevPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"waves-effect\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"paginate\\\",[20,[\\\"prevPage\\\"]]]],[7],[6,\\\"a\\\"],[7],[1,[25,\\\"fa-icon\\\",[\\\"chevron-circle-left\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"pages\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"current\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"active\\\"],[7],[1,[19,1,[\\\"number\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"disabled\\\"],[7],[1,[19,1,[\\\"number\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"waves-effect\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"paginate\\\",[19,1,[\\\"number\\\"]]]],[7],[6,\\\"a\\\"],[10,\\\"href\\\",[19,1,[\\\"href\\\"]],null],[7],[1,[19,1,[\\\"number\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"nextPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"waves-effect\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"paginate\\\",[20,[\\\"nextPage\\\"]]]],[7],[6,\\\"a\\\"],[7],[1,[25,\\\"fa-icon\\\",[\\\"chevron-circle-right\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"resultSet\\\",\\\"highPerformance\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"style\\\",\\\"height:1000px\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/search.hbs\" } });\n});","define(\"appappv2/templates/searchbar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"m+15bhfz\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"header\\\"],[9,\\\"id\\\",\\\"header\\\"],[9,\\\"class\\\",\\\"navbar-fixed\\\"],[7],[0,\\\"\\\\n  \\\"],[1,[25,\\\"nav-bar\\\",null,[[\\\"isFront\\\",\\\"locale\\\"],[[20,[\\\"isFront\\\"]],[20,[\\\"search\\\",\\\"locale\\\"]]]]],false],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sticky\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[25,\\\"if\\\",[[20,[\\\"isFront\\\"]],\\\"home\\\",\\\"searchbar\\\"],null],null],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isFront\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"logo\\\"],[9,\\\"title\\\",\\\"AppApp\\\"],[7],[0,\\\"AppApp\\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"h4\\\"],[7],[0,\\\"The search engine for pay once games in the App Store\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[6,\\\"form\\\"],[9,\\\"id\\\",\\\"search-field\\\"],[9,\\\"class\\\",\\\"input-field\\\"],[9,\\\"action\\\",\\\"search\\\"],[9,\\\"onSubmit\\\",\\\"searchBlur(); return false;\\\"],[9,\\\"autocomplete\\\",\\\"off\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-action-search prefix\\\"],[7],[8],[0,\\\"\\\\n          \\\"],[6,\\\"input\\\"],[9,\\\"id\\\",\\\"visibleSearch\\\"],[9,\\\"type\\\",\\\"search\\\"],[9,\\\"name\\\",\\\"search\\\"],[10,\\\"placeholder\\\",[18,\\\"placeholder\\\"],null],[10,\\\"value\\\",[18,\\\"query\\\"],null],[9,\\\"autocorrect\\\",\\\"off\\\"],[9,\\\"autocomplete\\\",\\\"off\\\"],[9,\\\"spellcheck\\\",\\\"false\\\"],[7],[8],[0,\\\"\\\\n          \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"actions\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"result-summary\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSummary\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  Page \\\"],[1,[18,\\\"displayPage\\\"],false],[0,\\\" of\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[25,\\\"number-format\\\",[[20,[\\\"search\\\",\\\"resultCount\\\"]]],null],false],[0,\\\" results\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"cancel-search\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancelSearch\\\"]],[7],[0,\\\"\\\\n              \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"mdi-content-clear small\\\"],[7],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isFront\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[25,\\\"browse-by-category\\\",null,[[\\\"locale\\\",\\\"device\\\"],[[20,[\\\"locale\\\"]],[20,[\\\"device\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isFront\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"device\\\",\\\"isDesktop\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"desktop-vertical-spacer\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[12,\\\"facets\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[12,\\\"error-modal\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"side-nav\\\"],[9,\\\"id\\\",\\\"nav-mobile\\\"],[7],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"nav\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"side-nav-logo\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n        \\\"],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/\\\"]],{\\\"statements\\\":[[0,\\\"A\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/about\\\"]],{\\\"statements\\\":[[0,\\\"About\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n    \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/faq\\\"]],{\\\"statements\\\":[[0,\\\"FAQ\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n    \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://blog.appapp.io\\\"],[7],[0,\\\"Blog\\\"],[8],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n   \\\"],[6,\\\"footer\\\"],[9,\\\"class\\\",\\\"page-footer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/terms\\\"]],{\\\"statements\\\":[[0,\\\"Terms & conditions\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n        \\\"],[6,\\\"li\\\"],[7],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/privacy\\\"]],{\\\"statements\\\":[[0,\\\"Privacy & cookies\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"footer-copyright\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n      © Reason Factory Ltd 2018\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"appappv2/templates/searchbar.hbs\" } });\n});","define(\"appappv2/templates/terms\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"LVc/X9/h\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"main-layout\\\",null,[[\\\"query\\\",\\\"transitionOnSearch\\\",\\\"isDesktop\\\"],[[20,[\\\"query\\\"]],true,[20,[\\\"device\\\",\\\"isDesktop\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"terms\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h1\\\"],[7],[0,\\\"Terms and conditions\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n  Welcome to our website, AppApp.io. If you continue to browse and use this website, you are agreeing to comply with and be bound by the following terms and conditions of use, which together with our privacy policy govern Reason Factory Ltd's relationship with you in relation to this website. If you disagree with any part of these terms and conditions, please do not use our website.\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n  The term 'Reason Factory Ltd' or 'us' or 'we' refers to the owner of the website whose registered office is 22 Hanworth Lane, Chertsey, United Kingdom.\\\\n  Our company registration number is 7874210, registered in England. The term 'you' refers to the user or viewer of our website.\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n  The use of this website is subject to the following terms of use:\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    The content of the pages of this website is for your general information and use only. It is subject to change without notice.\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    This website uses cookies to monitor browsing preferences. Please see our \\\"],[4,\\\"fast-link-to\\\",null,[[\\\"href\\\"],[\\\"/privacy\\\"]],{\\\"statements\\\":[[0,\\\"privacy policy\\\"]],\\\"parameters\\\":[]},null],[0,\\\" for more details.\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    Neither we nor any third parties provide any warranty or guarantee as to the accuracy, timeliness, performance, completeness or suitability of the information and materials found or offered on this website for any particular purpose. You acknowledge that such information and materials may contain inaccuracies or errors and we expressly exclude liability for any such inaccuracies or errors to the fullest extent permitted by law.\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    Your use of any information or materials on this website is entirely at your own risk, for which we shall not be liable. It shall be your own responsibility to ensure that any products, services or information available through this website meet your specific requirements.\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    This website contains material which is owned by or licensed to us. This material includes, but is not limited to, the design, layout, look, appearance and graphics. Reproduction is prohibited other than in accordance with the copyright notice, which forms part of these terms and conditions.\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    Unauthorised use of this website may give rise to a claim for damages and/or be a criminal offence.\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    From time to time this website may also include links to other websites. These links are provided for your convenience to provide further information. They do not signify that we endorse the website(s). We have no responsibility for the content of the linked website(s).\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n    Your use of this website and any dispute arising out of such use of the website is subject to the laws of England, Northern Ireland, Scotland and Wales.\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"Disclaimer\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n  The information contained in this website is for general information purposes only.  This website and all information, products and services on it are provided on an “as is” basis, without warranty of any kind, either express or implied. The information is provided by Reason Factory Ltd and while we endeavour to keep the information up to date and correct, we make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability or availability with respect to the website or the information, products, services, or related graphics contained on the website for any purpose. Any reliance you place on such information is therefore strictly at your own risk.\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nReason Factory Ltd disclaims liability for any direct, indirect, incidental, special, consequential, exemplary, punitive or other damages, or lost profits, that may result directly or indirectly from the use of this website and any material that is downloaded or obtained through the use of this website.\\\\n\\\\nThis includes, without limitation, any damage to computer systems, hardware or software, loss of data, or any other performance failures, any errors, bugs, viruses or other defects that result from, or are associated with the use of this website.\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nThrough this website you are able to link to other websites which are not under the control of Reason Factory Ltd. We have no control over the nature, content and availability of those sites. The inclusion of any links does not necessarily imply a recommendation or endorse the views expressed within them.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nEvery effort is made to keep the website up and running smoothly. However, we takes no responsibility for, and will not be liable for, the website being temporarily unavailable due to technical issues beyond our control.\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[6,\\\"h3\\\"],[7],[0,\\\"Copyright\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nThis website and its content is copyright of Reason Factory Ltd - © Reason Factory Ltd 2018. All rights reserved.\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\nAny redistribution or reproduction of part or all of the contents in any form is prohibited other than the following:\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[6,\\\"li\\\"],[7],[0,\\\"You may print or download to a local hard disk extracts for your personal and non-commercial use only\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"li\\\"],[7],[0,\\\"you may copy the content to individual third parties for their personal use, but only if you acknowledge the website as the source of the material\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"li\\\"],[7],[0,\\\"You may not, except with our express written permission, distribute or commercially exploit the content. Nor may you transmit it or store it in any other website or other form of electronic retrieval system.\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"appappv2/templates/terms.hbs\" } });\n});","\n","define('appappv2/config/environment', [], function() {\n  var prefix = 'appappv2';\ntry {\n  var metaName = prefix + '/config/environment';\n  var rawConfig = document.querySelector('meta[name=\"' + metaName + '\"]').getAttribute('content');\n  var config = JSON.parse(unescape(rawConfig));\n\n  var exports = { 'default': config };\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n}\ncatch(err) {\n  throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n});\n","if (!runningTests) {\n  require(\"appappv2/app\")[\"default\"].create({\"hello\":true,\"googleAnalytics\":{\"webPropertyId\":\"UA-62373508-2\"},\"name\":\"appappv2\",\"version\":\"0.0.0+3f6f717e\"});\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;","file":"appappv2.js"}