diff options
| author | Xinhui Xu | 2017-12-28 12:03:09 +0100 | 
|---|---|---|
| committer | GitHub | 2017-12-28 12:03:09 +0100 | 
| commit | 32752973f2bc58865afce4081f1fe6c2f97bf588 (patch) | |
| tree | cf9879c009d62d96622fef671864aff25063dafb | |
| parent | e6715407f59a79473d38048cb22bb025daa68753 (diff) | |
| parent | d382841082c5633f45d7c5a7fe1fdf5c8821e2c8 (diff) | |
| download | chouette-core-32752973f2bc58865afce4081f1fe6c2f97bf588.tar.bz2 | |
Merge branch 'master' into 5427_stop_area_country_select
50 files changed, 13293 insertions, 590 deletions
| diff --git a/Gruntfile.coffee b/Gruntfile.coffee new file mode 100644 index 000000000..958ff81f8 --- /dev/null +++ b/Gruntfile.coffee @@ -0,0 +1,47 @@ +module.exports = (grunt) => +  javascriptSpecPath = (path) -> +    grunt.log.debug "IN: " + path +    path = path.replace 'app/javascript', 'spec/javascript' +    if path.match /actions/ +      path = path.replace /actions.*/, 'actions_spec.js' +    if path.match /reducers/ +      path = path.replace '.js', '_spec.js' +    grunt.log.debug "OUT: " + path +    path + +  grunt.initConfig +    pkg: grunt.file.readJSON('package.json') +    watch: +      javascripts: +        files: ['app/javascript/**/*', 'spec/javascript/**/*'] +        tasks: [] +        options: +          spawn: false + +    watchchange: +      javascript: +        match: ['app/javascript/**/*', 'spec/javascript/**/*'] +        setConfig: ['jest.run.src'] +        preprocess: javascriptSpecPath +        tasks: ['jest:run'] + +    jest: +      run: +        files: [] + +  grunt.loadNpmTasks('grunt-contrib-watch') +  grunt.loadNpmTasks('grunt-watch-change') + +  # Default task(s). +  grunt.registerMultiTask 'jest', 'run javascript specs', () -> +    files = [] +    this.files.forEach (file) -> +      files.push file.src +    grunt.log.debug files +    grunt.util.spawn +      cmd: 'node_modules/.bin/jest' +      args: files +      opts: {stdio: 'inherit'} +    , -> {} + +  grunt.registerTask 'default', ['watchchange', 'watch'] diff --git a/app/assets/javascripts/main_menu.coffee b/app/assets/javascripts/main_menu.coffee index 1c39be736..e943f448a 100644 --- a/app/assets/javascripts/main_menu.coffee +++ b/app/assets/javascripts/main_menu.coffee @@ -1,12 +1,11 @@  $ -> -  link = [] +  stickyActions = []    ptitleCont = ""    $(document).on 'page:before-change', -> -    link = [] +    stickyActions = []      ptitleCont = "" -    $el = $('#main_nav')      # Opening/closing left-side menu    $el.find('.openMenu').on 'click', (e) -> @@ -24,35 +23,45 @@ $ ->      limit = 51      if $(window).scrollTop() >= limit -      data = "" -      if ($('.page-action .small').length > 0) -        data = $('.page-action .small')[0].innerHTML +      if stickyActions.length == 0 +        if ($('.page-action .small').length > 0) +          stickyActions.push +            content: [ +              $('.page-action .small'), +              $('.page-action .small').first().next() +              ] +            originalParent: $('.page-action .small').parent() + +        for action in $(".sticky-action, .sticky-actions") +          stickyActions.push +            class: "small", +            content: [$(action)] +            originalParent: $(action).parent() -      if ($(".page-title").length > 0) +      if $(".page-title").length > 0          ptitleCont = $(".page-title").html() -      stickyContent = '<div class="sticky-content">' -      stickyContent += '<div class="sticky-ptitle">' + ptitleCont + '</div>' -      stickyContent += '<div class="sticky-paction"><div class="small">' + data + '</div></div>' -      stickyContent += '</div>' +      stickyContent = $('<div class="sticky-content"></div>') +      stickyContent.append $("<div class='sticky-ptitle'>#{ptitleCont}</div>") +      stickyContent.append $('<div class="sticky-paction"></div>')        $('#main_nav').addClass 'sticky'        if $('#menu_top').find('.sticky-content').length == 0          if ptitleCont.length > 0            $('#menu_top').children('.menu-content').after(stickyContent) -        if link.length == 0 -          link = $('.page-action .small').next() - -        $('.sticky-paction .small').after(link) +        for item in stickyActions +          for child in item.content +            child.appendTo $('.sticky-paction')      else        $('#main_nav').removeClass 'sticky'        if $('#menu_top').find('.sticky-content').length > 0 -        if !$('.page-action').find('.formSubmitr').length -          $('.page-action .small').after(link) +        for item in stickyActions +          for child in item.content +            child.appendTo item.originalParent          $('.sticky-content').remove() -  sticker(); +  sticker()    # Sticky behavior    $(document).on 'scroll', sticker diff --git a/app/assets/stylesheets/components/_referentials.sass b/app/assets/stylesheets/components/_referentials.sass new file mode 100644 index 000000000..0bbb18f2b --- /dev/null +++ b/app/assets/stylesheets/components/_referentials.sass @@ -0,0 +1,4 @@ +#referential_form +	.metadatas-errors +		margin-top: -20px +		margin-bottom: 20px diff --git a/app/assets/stylesheets/typography/_sboiv.sass b/app/assets/stylesheets/typography/_sboiv.sass index 0ed2890fa..f0943f843 100644 --- a/app/assets/stylesheets/typography/_sboiv.sass +++ b/app/assets/stylesheets/typography/_sboiv.sass @@ -52,6 +52,8 @@    &.sb-5x      font-size: 5em +  &.sb-strong +    font-weight: bold  .sb-ZDLR:before    content: '\e904' diff --git a/app/controllers/autocomplete_purchase_windows_controller.rb b/app/controllers/autocomplete_purchase_windows_controller.rb new file mode 100644 index 000000000..70dc5a346 --- /dev/null +++ b/app/controllers/autocomplete_purchase_windows_controller.rb @@ -0,0 +1,12 @@ +class AutocompletePurchaseWindowsController < ChouetteController +  respond_to :json, :only => [:index] + +  requires_feature :purchase_windows + +  include ReferentialSupport + +  protected +  def collection +    @purchase_windows = referential.purchase_windows.search(params[:q]).result.paginate(page: params[:page]) +  end +end diff --git a/app/controllers/journey_patterns_collections_controller.rb b/app/controllers/journey_patterns_collections_controller.rb index 736fb1441..5fe78766c 100644 --- a/app/controllers/journey_patterns_collections_controller.rb +++ b/app/controllers/journey_patterns_collections_controller.rb @@ -49,6 +49,7 @@ class JourneyPatternsCollectionsController < ChouetteController    end    def user_permissions +    @features = Hash[*current_organisation.features.map{|f| [f, true]}.flatten].to_json      policy = policy(:journey_pattern)      @perms =        %w{create destroy update}.inject({}) do | permissions, action | diff --git a/app/controllers/referentials_controller.rb b/app/controllers/referentials_controller.rb index 40e8264ce..9dbd659da 100644 --- a/app/controllers/referentials_controller.rb +++ b/app/controllers/referentials_controller.rb @@ -13,14 +13,16 @@ class ReferentialsController < ChouetteController    end    def create -    create! do |format| +    create! do |success, failure|        build_referenial -      if !!@referential.created_from_id -        flash[:notice] = t('notice.referentials.duplicate') - -        format.html { redirect_to workbench_path(@referential.workbench) } +      success.html do +        if @referential.created_from_id.present? +          flash[:notice] = t('notice.referentials.duplicate') +          redirect_to workbench_path(@referential.workbench) +        end        end +      failure.html { render :new }      end    end diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index c941aeae4..7434c777f 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -40,43 +40,46 @@ class VehicleJourneysController < ChouetteController    end    def index -    @stop_points_list = [] -    route.stop_points.each do |sp| -      @stop_points_list << { -        :id => sp.stop_area.id, -        :route_id => sp.try(:route_id), -        :object_id => sp.try(:objectid), -        :position => sp.try(:position), -        :for_boarding => sp.try(:for_boarding), -        :for_alighting => sp.try(:for_alighting), -        :name => sp.stop_area.try(:name), -        :zip_code => sp.stop_area.try(:zip_code), -        :city_name => sp.stop_area.try(:city_name), -        :comment => sp.stop_area.try(:comment), -        :area_type => sp.stop_area.try(:area_type), -        :registration_number => sp.stop_area.try(:registration_number), -        :nearest_topic_name => sp.stop_area.try(:nearest_topic_name), -        :fare_code => sp.stop_area.try(:fare_code), -        :longitude => sp.stop_area.try(:longitude), -        :latitude => sp.stop_area.try(:latitude), -        :long_lat_type => sp.stop_area.try(:long_lat_type), -        :country_code => sp.stop_area.try(:country_code), -        :street_name => sp.stop_area.try(:street_name) -      } -    end - -    @transport_mode = route.line['transport_mode'] -    @transport_submode = route.line['transport_submode'] - -    if params[:jp] -      @jp_origin  = Chouette::JourneyPattern.find_by(objectid: params[:jp]) -      @jp_origin_stop_points = @jp_origin.stop_points -    end - -    index! do +    index! do |format|        if collection.out_of_bounds?          redirect_to params.merge(:page => 1)        end +      format.json do +        @vehicle_journeys = @vehicle_journeys.includes({stop_points: :stop_area}) +      end +      format.html do +        @stop_points_list = [] +        @stop_points_list = route.stop_points.joins(:stop_area).map do |sp| +          { +            :id => sp.stop_area.id, +            :route_id => sp.try(:route_id), +            :object_id => sp.try(:objectid), +            :position => sp.try(:position), +            :for_boarding => sp.try(:for_boarding), +            :for_alighting => sp.try(:for_alighting), +            :name => sp.stop_area.try(:name), +            :zip_code => sp.stop_area.try(:zip_code), +            :city_name => sp.stop_area.try(:city_name), +            :comment => sp.stop_area.try(:comment), +            :area_type => sp.stop_area.try(:area_type), +            :registration_number => sp.stop_area.try(:registration_number), +            :nearest_topic_name => sp.stop_area.try(:nearest_topic_name), +            :fare_code => sp.stop_area.try(:fare_code), +            :longitude => sp.stop_area.try(:longitude), +            :latitude => sp.stop_area.try(:latitude), +            :long_lat_type => sp.stop_area.try(:long_lat_type), +            :country_code => sp.stop_area.try(:country_code), +            :street_name => sp.stop_area.try(:street_name) +          } +        end +        @transport_mode = route.line['transport_mode'] +        @transport_submode = route.line['transport_submode'] + +        if params[:jp] +          @jp_origin  = Chouette::JourneyPattern.find_by(objectid: params[:jp]) +          @jp_origin_stop_points = @jp_origin.stop_points +        end +      end      end    end @@ -92,13 +95,15 @@ class VehicleJourneysController < ChouetteController      scope = maybe_filter_by_departure_time(scope)      scope = maybe_filter_out_journeys_with_time_tables(scope) -    @q = scope.search filtered_ransack_params +    @vehicle_journeys ||= begin +      @q = scope.search filtered_ransack_params -    @ppage = 20 -    @vehicle_journeys = @q.result.paginate(:page => params[:page], :per_page => @ppage) -    @footnotes = route.line.footnotes.to_json -    @matrix    = resource_class.matrix(@vehicle_journeys) -    @vehicle_journeys +      @ppage = 20 +      vehicle_journeys = @q.result.paginate(:page => params[:page], :per_page => @ppage) +      @footnotes = route.line.footnotes.to_json +      @matrix    = resource_class.matrix(vehicle_journeys) +      vehicle_journeys +    end    end    def maybe_filter_by_departure_time(scope) @@ -159,6 +164,7 @@ class VehicleJourneysController < ChouetteController    end    def user_permissions +    @features = Hash[*current_organisation.features.map{|f| [f, true]}.flatten].to_json      policy = policy(:vehicle_journey)      @perms =        %w{create destroy update}.inject({}) do | permissions, action | diff --git a/app/javascript/date_filters/index.js b/app/javascript/date_filters/index.js index ee892a7fe..432166008 100644 --- a/app/javascript/date_filters/index.js +++ b/app/javascript/date_filters/index.js @@ -3,6 +3,7 @@ import complianceControlSetDF from './compliance_control_set'  import complianceCheckSetDF from './compliance_check_set'  import timetableDF from './time_table'  import importDF from './import' +import purchaseWindowDF from './purchase_window'  import workbenchDF from './workbench'  const DateFilters = { @@ -11,6 +12,7 @@ const DateFilters = {    complianceControlSetDF,    importDF,    timetableDF, +  purchaseWindowDF,    workbenchDF  } diff --git a/app/javascript/date_filters/purchase_window.js b/app/javascript/date_filters/purchase_window.js new file mode 100644 index 000000000..2c46b6d52 --- /dev/null +++ b/app/javascript/date_filters/purchase_window.js @@ -0,0 +1,5 @@ +import DateFilter from '../helpers/date_filters' + +const purchaseWindowDF = new DateFilter("purchase_window_filter_btn", "Tous les champs du filtre de date doivent être remplis", "q_contains_date_NUMi") + +export default purchaseWindowDF
\ No newline at end of file diff --git a/app/javascript/packs/vehicle_journeys/index.js b/app/javascript/packs/vehicle_journeys/index.js index 38431af1d..53c5d5417 100644 --- a/app/javascript/packs/vehicle_journeys/index.js +++ b/app/javascript/packs/vehicle_journeys/index.js @@ -23,6 +23,7 @@ var initialState = {    filters: {      selectedJourneyPatterns : selectedJP,      policy: window.perms, +    features: window.features,      toggleArrivals: false,      queryString: '',      query: { @@ -54,7 +55,7 @@ var initialState = {    },    status: { -    fetchSuccess: true, +    fetchSuccess: false,      isFetching: false    },    vehicleJourneys: [], @@ -99,4 +100,4 @@ render(      <App />    </Provider>,    document.getElementById('vehicle_journeys_wip') -)
\ No newline at end of file +) diff --git a/app/javascript/routes/form_helper.js b/app/javascript/routes/form_helper.js index 8a3277234..865722fb6 100644 --- a/app/javascript/routes/form_helper.js +++ b/app/javascript/routes/form_helper.js @@ -7,14 +7,14 @@ const formHelper = {      input.setAttribute('name', formatedName)      input.setAttribute('value', value)      form.appendChild(input) -  },  +  },    addError: (ids) => {      ids.forEach((id) => {        if (!$(id).parents('.form-group').hasClass('has-error')) {          $(id).parents('.form-group').addClass('has-error')          $(id).parent().append(`<span class='help-block small'>${'doit être rempli(e)'}</span>`)        } -    })  +    })    },    cleanInputs: (ids) => {      ids.forEach((id) =>{ @@ -28,21 +28,22 @@ const formHelper = {      ids.forEach(id => {        $(id).val() == "" ? blankInputs.push(id) : filledInputs.push(id)      }) -     +      if (filledInputs.length > 0) formHelper.cleanInputs(filledInputs) -    if (blankInputs.length > 0) formHelper.addError(blankInputs)   +    if (blankInputs.length > 0) formHelper.addError(blankInputs)    },    handleStopPoints: (event, state) => {      if (state.stopPoints.length >= 2) {        state.stopPoints.map((stopPoint, i) => {          formHelper.addInput('id', stopPoint.stoppoint_id ? stopPoint.stoppoint_id : '', i)          formHelper.addInput('stop_area_id', stopPoint.stoparea_id, i) -        formHelper.addInput('position', i, i) +        formHelper.addInput('position', stopPoint.index, i)          formHelper.addInput('for_boarding', stopPoint.for_boarding, i)          formHelper.addInput('for_alighting', stopPoint.for_alighting, i)        }) -    if ($('.alert.alert-danger').length > 0) $('.alert.alert-danger').remove() -    } else { +      if ($('.alert.alert-danger').length > 0) $('.alert.alert-danger').remove() +    } +    else {        event.preventDefault()        let msg = "L'itinéraire doit comporter au moins deux arrêts"        if ($('.alert.alert-danger').length == 0) { @@ -52,4 +53,4 @@ const formHelper = {    }  } -export default formHelper
\ No newline at end of file +export default formHelper diff --git a/app/javascript/routes/reducers/stopPoints.js b/app/javascript/routes/reducers/stopPoints.js index eeec06327..0b42b504f 100644 --- a/app/javascript/routes/reducers/stopPoints.js +++ b/app/javascript/routes/reducers/stopPoints.js @@ -38,15 +38,15 @@ const stopPoints = (state = [], action) => {      case 'MOVE_STOP_UP':        return [          ...state.slice(0, action.index - 1), -        _.assign({}, state[action.index], { stoppoint_id: state[action.index - 1].stoppoint_id }), -        _.assign({}, state[action.index - 1], { stoppoint_id: state[action.index].stoppoint_id }), +        _.assign({}, state[action.index], { index: action.index - 1 }), +        _.assign({}, state[action.index - 1], { index: action.index }),          ...state.slice(action.index + 1)        ]      case 'MOVE_STOP_DOWN':        return [          ...state.slice(0, action.index), -        _.assign({}, state[action.index + 1], { stoppoint_id: state[action.index].stoppoint_id }), -        _.assign({}, state[action.index], { stoppoint_id: state[action.index + 1].stoppoint_id }), +        _.assign({}, state[action.index + 1], { index: action.index }), +        _.assign({}, state[action.index], { index: action.index + 1 }),          ...state.slice(action.index + 2)        ]      case 'DELETE_STOP': @@ -141,4 +141,4 @@ const stopPoints = (state = [], action) => {    }  } -export default stopPoints
\ No newline at end of file +export default stopPoints diff --git a/app/javascript/vehicle_journeys/actions/index.js b/app/javascript/vehicle_journeys/actions/index.js index ce4b9209d..202c09440 100644 --- a/app/javascript/vehicle_journeys/actions/index.js +++ b/app/javascript/vehicle_journeys/actions/index.js @@ -84,7 +84,8 @@ const actions = {      selectedItem:{        id: selectedTT.id,        comment: selectedTT.comment, -      objectid: selectedTT.objectid +      objectid: selectedTT.objectid, +      color: selectedTT.color      }    }),    addSelectedTimetable: () => ({ @@ -99,6 +100,31 @@ const actions = {      vehicleJourneys,      timetables    }), +  openPurchaseWindowsEditModal : (vehicleJourneys) => ({ +    type : 'EDIT_PURCHASE_WINDOWS_VEHICLEJOURNEY_MODAL', +    vehicleJourneys +  }), +  selectPurchaseWindowsModal: (selectedWindow) =>({ +    type: 'SELECT_PURCHASE_WINDOW_MODAL', +    selectedItem:{ +      id: selectedWindow.id, +      name: selectedWindow.name, +      color: selectedWindow.color, +      objectid: selectedWindow.objectid +    } +  }), +  addSelectedPurchaseWindow: () => ({ +    type: 'ADD_SELECTED_PURCHASE_WINDOW' +  }), +  deletePurchaseWindowsModal : (purchaseWindow) => ({ +    type : 'DELETE_PURCHASE_WINDOW_MODAL', +    purchaseWindow +  }), +  editVehicleJourneyPurchaseWindows : (vehicleJourneys, purchase_windows) => ({ +    type: 'EDIT_VEHICLEJOURNEYS_PURCHASE_WINDOWS', +    vehicleJourneys, +    purchase_windows +  }),    openShiftModal : () => ({      type : 'SHIFT_VEHICLEJOURNEY_MODAL'    }), @@ -313,6 +339,7 @@ const actions = {            let val            for (val of json.vehicle_journeys){              var timeTables = [] +            var purchaseWindows = []              let tt              for (tt of val.time_tables){                timeTables.push({ @@ -322,6 +349,14 @@ const actions = {                  color: tt.color                })              } +            for (tt of val.purchase_windows){ +              purchaseWindows.push({ +                objectid: tt.objectid, +                name: tt.name, +                id: tt.id, +                color: tt.color +              }) +            }              let vjasWithDelta = val.vehicle_journey_at_stops.map((vjas, i) => {                actions.fillEmptyFields(vjas)                return actions.getDelta(vjas) @@ -333,6 +368,7 @@ const actions = {                short_id: val.short_id,                footnotes: val.footnotes,                time_tables: timeTables, +              purchase_windows: purchaseWindows,                vehicle_journey_at_stops: vjasWithDelta,                deletable: false,                selected: false, @@ -439,6 +475,20 @@ const actions = {      vjas.delta = delta      return vjas    }, +  adjustSchedule: (action, schedule) => { +    // we enforce that the departure time remains after the arrival time +    actions.getDelta(schedule) +    if(schedule.delta < 0){ +      if(action.isDeparture){ +        schedule.arrival_time = schedule.departure_time +      } +      else{ +        schedule.departure_time = schedule.arrival_time +      } +      actions.getDelta(schedule) +    } +    return schedule +  },    getShiftedSchedule: ({departure_time, arrival_time}, additional_time) => {      // We create dummy dates objects to manipulate time more easily      let departureDT = new Date (Date.UTC(2017, 2, 1, parseInt(departure_time.hour), parseInt(departure_time.minute))) diff --git a/app/javascript/vehicle_journeys/components/Filters.js b/app/javascript/vehicle_journeys/components/Filters.js index db6707520..3bc4f7ff7 100644 --- a/app/javascript/vehicle_journeys/components/Filters.js +++ b/app/javascript/vehicle_journeys/components/Filters.js @@ -33,6 +33,7 @@ export default function Filters({filters, pagination, onFilter, onResetFilters,                  onSelect2Timetable={onSelect2Timetable}                  hasRoute={true}                  chunkURL={("/autocomplete_time_tables.json?route_id=" + String(window.route_id))} +                searchKey={"comment_or_objectid_cont_any"}                  filters={filters}                  isFilter={true}                  /> @@ -165,4 +166,4 @@ Filters.propTypes = {    onSelect2Timetable: PropTypes.func.isRequired,    onSelect2JourneyPattern: PropTypes.func.isRequired,    onSelect2VehicleJourney: PropTypes.func.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js b/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js index e8c27f92e..8bab5baa9 100644 --- a/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js +++ b/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js @@ -14,16 +14,27 @@ export default class SaveVehicleJourneys extends Component{          <div className='row mt-md'>            <div className='col-lg-12 text-right'>              <form className='vehicle_journeys formSubmitr ml-xs' onSubmit={e => {e.preventDefault()}}> -              <button -                className='btn btn-default' -                type='button' -                onClick={e => { -                  e.preventDefault() -                  this.props.editMode ? this.props.onSubmitVehicleJourneys(this.props.dispatch, this.props.vehicleJourneys) : this.props.onEnterEditMode() -                }} -              > -                {this.props.editMode ? "Valider" : "Editer"} -              </button> +              <div className="btn-group sticky-actions"> +                <button +                  className={'btn ' + (this.props.editMode ? 'btn-success' : 'btn-default') + (this.props.status.fetchSuccess ? '' : ' disabled')} +                  type='button' +                  onClick={e => { +                    e.preventDefault() +                    this.props.editMode ? this.props.onSubmitVehicleJourneys(this.props.dispatch, this.props.vehicleJourneys) : this.props.onEnterEditMode() +                  }} +                > +                  {this.props.editMode ? "Valider" : "Editer"} +                </button> +                {this.props.editMode && <button +                    className='btn btn-default' +                    type='button' +                    onClick={e => { +                      e.preventDefault() +                      this.props.onExitEditMode() +                    }} +                  > Annuler </button> +                } +              </div>              </form>            </div>          </div> @@ -38,5 +49,6 @@ SaveVehicleJourneys.propTypes = {    status: PropTypes.object.isRequired,    filters: PropTypes.object.isRequired,    onEnterEditMode: PropTypes.func.isRequired, +  onExitEditMode: PropTypes.func.isRequired,    onSubmitVehicleJourneys: PropTypes.func.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/Tools.js b/app/javascript/vehicle_journeys/components/Tools.js index 1ef576529..d6e04f00e 100644 --- a/app/javascript/vehicle_journeys/components/Tools.js +++ b/app/javascript/vehicle_journeys/components/Tools.js @@ -7,6 +7,7 @@ import DuplicateVehicleJourney from '../containers/tools/DuplicateVehicleJourney  import EditVehicleJourney from '../containers/tools/EditVehicleJourney'  import NotesEditVehicleJourney from '../containers/tools/NotesEditVehicleJourney'  import TimetablesEditVehicleJourney from '../containers/tools/TimetablesEditVehicleJourney' +import PurchaseWindowsEditVehicleJourney from '../containers/tools/PurchaseWindowsEditVehicleJourney'  export default class Tools extends Component { @@ -20,18 +21,26 @@ export default class Tools extends Component {      return this.props.filters.policy[`vehicle_journeys.${key}`]    } +  hasFeature(key) { +    // Check if the organisation has the given feature +    return this.props.filters.features[key] +  } +    render() {      let { vehicleJourneys, onCancelSelection, editMode } = this.props      return (        <div className='select_toolbox'>          <ul> -          <AddVehicleJourney disabled={this.hasPolicy("create") && !editMode} /> -          <DuplicateVehicleJourney disabled={this.hasPolicy("create") && this.hasPolicy("update") && !editMode}/> -          <ShiftVehicleJourney disabled={this.hasPolicy("update") && !editMode}/> +          <AddVehicleJourney disabled={!this.hasPolicy("create") || !editMode} /> +          <DuplicateVehicleJourney disabled={!this.hasPolicy("create") || !this.hasPolicy("update") || !editMode}/> +          <ShiftVehicleJourney disabled={!this.hasPolicy("update") || !editMode}/>            <EditVehicleJourney disabled={!this.hasPolicy("update")}/>            <TimetablesEditVehicleJourney disabled={!this.hasPolicy("update")}/> +          { this.hasFeature('purchase_windows') && +            <PurchaseWindowsEditVehicleJourney disabled={!this.hasPolicy("update")}/> +          }            <NotesEditVehicleJourney disabled={!this.hasPolicy("update")}/> -          <DeleteVehicleJourneys disabled={this.hasPolicy("destroy") && !editMode}/> +          <DeleteVehicleJourneys disabled={!this.hasPolicy("destroy") || !editMode}/>          </ul>          <span className='info-msg'>{actions.getSelected(vehicleJourneys).length} course(s) sélectionnée(s)</span> diff --git a/app/javascript/vehicle_journeys/components/VehicleJourney.js b/app/javascript/vehicle_journeys/components/VehicleJourney.js index 929cbc5c4..1e62444ef 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js @@ -17,12 +17,25 @@ export default class VehicleJourney extends Component {      return bool    } +  hasFeature(key) { +    return this.props.filters.features[key] +  } +    timeTableURL(tt) {      let refURL = window.location.pathname.split('/', 3).join('/')      let ttURL = refURL + '/time_tables/' + tt.id      return ( -      <a href={ttURL} title='Voir le calendrier'><span className='fa fa-calendar' style={{color: (tt.color ? tt.color : '')}}></span></a> +      <a href={ttURL} title='Voir le calendrier'><span className='fa fa-calendar' style={{ color: (tt.color ? tt.color : '#4B4B4B')}}></span></a> +    ) +  } + +  purchaseWindowURL(tt) { +    let refURL = window.location.pathname.split('/', 3).join('/') +    let ttURL = refURL + '/purchase_windows/' + tt.id + +    return ( +      <a href={ttURL} title='Voir le calendrier commercial'><span className='fa fa-calendar' style={{color: (tt.color ? tt.color : '')}}></span></a>      )    } @@ -44,11 +57,16 @@ export default class VehicleJourney extends Component {    render() {      this.previousCity = undefined -    let {time_tables} = this.props.value +    let {time_tables, purchase_windows} = this.props.value      return (        <div className={'t2e-item' + (this.props.value.deletable ? ' disabled' : '') + (this.props.value.errors ? ' has-error': '')}> -        <div className='th'> +        <div +          className='th' +          onClick={(e) => +            ($(e.target).parents("a").length == 0) && this.props.editMode && this.props.onSelectVehicleJourney(this.props.index) +          } +          >            <div className='strong mb-xs'>{this.props.value.short_id || '-'}</div>            <div>{this.props.value.journey_pattern.short_id || '-'}</div>            <div> @@ -57,6 +75,14 @@ export default class VehicleJourney extends Component {              )}              {time_tables.length > 3 && <span className='vj_tt'> + {time_tables.length - 3}</span>}            </div> +          { this.hasFeature('purchase_windows') && +            <div> +              {purchase_windows.slice(0,3).map((tt, i)=> +                <span key={i} className='vj_tt'>{this.purchaseWindowURL(tt)}</span> +              )} +              {purchase_windows.length > 3 && <span className='vj_tt'> + {purchase_windows.length - 3}</span>} +            </div> +          }            <div className={(this.props.value.deletable ? 'disabled ' : '') + 'checkbox'}>              <input                id={this.props.index} @@ -83,6 +109,7 @@ export default class VehicleJourney extends Component {                        className='form-control'                        disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} +                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false)}}                        value={vj.arrival_time['hour']}                        /> @@ -94,6 +121,7 @@ export default class VehicleJourney extends Component {                        className='form-control'                        disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} +                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'minute', false, false)}}                        value={vj.arrival_time['minute']}                        /> @@ -114,6 +142,7 @@ export default class VehicleJourney extends Component {                        className='form-control'                        disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} +                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', true, this.props.filters.toggleArrivals)}}                        value={vj.departure_time['hour']}                        /> @@ -125,6 +154,7 @@ export default class VehicleJourney extends Component {                        className='form-control'                        disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} +                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, "minute", true,  this.props.filters.toggleArrivals)}}                        value={vj.departure_time['minute']}                        /> @@ -144,4 +174,4 @@ VehicleJourney.propTypes = {    index: PropTypes.number.isRequired,    onUpdateTime: PropTypes.func.isRequired,    onSelectVehicleJourney: PropTypes.func.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/VehicleJourneys.js b/app/javascript/vehicle_journeys/components/VehicleJourneys.js index 6bce9766b..e16d03f90 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourneys.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourneys.js @@ -12,6 +12,10 @@ export default class VehicleJourneys extends Component {      this.props.onLoadFirstPage(this.props.filters)    } +  hasFeature(key) { +    return this.props.filters.features[key] +  } +    componentDidUpdate(prevProps, prevState) {      if(this.props.status.isFetching == false){        $('.table-2entries').each(function() { @@ -113,6 +117,7 @@ export default class VehicleJourneys extends Component {                    <div className='strong mb-xs'>ID course</div>                    <div>ID mission</div>                    <div>Calendriers</div> +                  { this.hasFeature('purchase_windows') && <div>Calendriers Commerciaux</div> }                  </div>                  {this.props.stopPointsList.map((sp, i) =>{                    return ( @@ -132,6 +137,7 @@ export default class VehicleJourneys extends Component {                        index={index}                        editMode={this.props.editMode}                        filters={this.props.filters} +                      features={this.props.features}                        onUpdateTime={this.props.onUpdateTime}                        onSelectVehicleJourney={this.props.onSelectVehicleJourney}                        /> @@ -153,4 +159,4 @@ VehicleJourneys.propTypes = {    onLoadFirstPage: PropTypes.func.isRequired,    onUpdateTime: PropTypes.func.isRequired,    onSelectVehicleJourney: PropTypes.func.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js new file mode 100644 index 000000000..d61c7a34b --- /dev/null +++ b/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js @@ -0,0 +1,152 @@ +import React, { PropTypes, Component } from 'react' +import actions from '../../actions' +import TimetableSelect2 from './select2s/TimetableSelect2' + +export default class PurchaseWindowsEditVehicleJourney extends Component { +  constructor(props) { +    super(props) +    this.handleSubmit = this.handleSubmit.bind(this) +    this.purchaseWindowURL = this.purchaseWindowURL.bind(this) +  } + +  handleSubmit() { +    this.props.onShoppingWindowsEditVehicleJourney(this.props.modal.modalProps.vehicleJourneys, this.props.modal.modalProps.purchase_windows) +    this.props.onModalClose() +    $('#PurchaseWindowsEditVehicleJourneyModal').modal('hide') +  } + +  purchaseWindowURL(tt) { +    let refURL = window.location.pathname.split('/', 3).join('/') +    return refURL + '/purchase_windows/' + tt.id +  } + +  render() { +    if(this.props.status.isFetching == true) { +      return false +    } +    if(this.props.status.fetchSuccess == true) { +      return ( +        <li className='st_action'> +          <button +            type='button' +            disabled={(actions.getSelected(this.props.vehicleJourneys).length < 1 || this.props.disabled)} +            data-toggle='modal' +            data-target='#PurchaseWindowsEditVehicleJourneyModal' +            onClick={() => this.props.onOpenCalendarsEditModal(actions.getSelected(this.props.vehicleJourneys))} +            title='Calendriers commerciaux' +          > +            <span className='sb sb-purchase_window sb-strong'></span> +          </button> + +          <div className={ 'modal fade ' + ((this.props.modal.type == 'duplicate') ? 'in' : '') } id='PurchaseWindowsEditVehicleJourneyModal'> +            <div className='modal-container'> +              <div className='modal-dialog'> +                <div className='modal-content'> +                  <div className='modal-header'> +                    <h4 className='modal-title'>Calendriers commerciaux associés</h4> +                    <span type="button" className="close modal-close" data-dismiss="modal">×</span> +                  </div> + +                  {(this.props.modal.type == 'purchase_windows_edit') && ( +                    <form> +                      <div className='modal-body'> +                        <div className='row'> +                          <div className='col-lg-12'> +                            <div className='subform'> +                              <div className='nested-head'> +                                <div className='wrapper'> +                                  <div> +                                    <div className='form-group'> +                                      <label className='control-label'>{this.props.modal.modalProps.purchase_windows.length == 0 ? "Aucun calendrier commercial associé" : "Calendriers commerciaux associés"}</label> +                                    </div> +                                  </div> +                                  <div></div> +                                </div> +                              </div> +                              {this.props.modal.modalProps.purchase_windows.map((tt, i) => +                                <div className='nested-fields' key={i}> +                                  <div className='wrapper'> +                                    <div> <a href={this.purchaseWindowURL(tt)} target="_blank"> +                                      <span className="fa fa-circle mr-xs" style={{color: tt.color}}></span> +                                      {tt.name} +                                    </a> </div> +                                    { +                                      this.props.editMode && +                                      <div> +                                        <a +                                          href='#' +                                          title='Supprimer' +                                          className='fa fa-trash remove_fields' +                                          style={{ height: 'auto', lineHeight: 'normal' }} +                                          onClick={(e) => { +                                            e.preventDefault() +                                            this.props.onDeleteCalendarModal(tt) +                                          }} +                                        ></a> +                                      </div> +                                    } +                                  </div> +                                </div> +                              )} +                              { +                                this.props.editMode && +                                <div className='nested-fields'> +                                  <div className='wrapper'> +                                    <div> +                                      <TimetableSelect2 +                                        onSelect2Timetable={this.props.onSelect2Timetable} +                                        chunkURL={'/autocomplete_purchase_windows.json'} +                                        searchKey={"name_or_objectid_cont_any"} +                                        isFilter={false} +                                      /> +                                    </div> +                                  </div> +                                </div> +                              } +                            </div> +                          </div> +                        </div> +                      </div> +                      { +                        this.props.editMode && +                        <div className='modal-footer'> +                          <button +                            className='btn btn-link' +                            data-dismiss='modal' +                            type='button' +                            onClick={this.props.onModalClose} +                          > +                            Annuler +                          </button> +                          <button +                            className='btn btn-primary' +                            type='button' +                            onClick={this.handleSubmit} +                          > +                            Valider +                          </button> +                        </div> +                      } +                    </form> +                  )} + +                </div> +              </div> +            </div> +          </div> +        </li> +      ) +    } else { +      return false +    } +  } +} + +PurchaseWindowsEditVehicleJourney.propTypes = { +  onOpenCalendarsEditModal: PropTypes.func.isRequired, +  onModalClose: PropTypes.func.isRequired, +  onShoppingWindowsEditVehicleJourney: PropTypes.func.isRequired, +  onDeleteCalendarModal: PropTypes.func.isRequired, +  onSelect2Timetable: PropTypes.func.isRequired, +  disabled: PropTypes.bool.isRequired +} diff --git a/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js index 6629135dd..56f80ebb5 100644 --- a/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js @@ -33,6 +33,7 @@ export default class TimetablesEditVehicleJourney extends Component {              data-toggle='modal'              data-target='#CalendarsEditVehicleJourneyModal'              onClick={() => this.props.onOpenCalendarsEditModal(actions.getSelected(this.props.vehicleJourneys))} +            title='Calendriers'            >              <span className='fa fa-calendar'></span>            </button> @@ -67,7 +68,7 @@ export default class TimetablesEditVehicleJourney extends Component {                                    <div className='wrapper'>                                      <div> <a href={this.timeTableURL(tt)} target="_blank">{tt.comment}</a> </div>                                      { -                                      this.props.editMode &&  +                                      this.props.editMode &&                                        <div>                                          <a                                            href='#' @@ -85,13 +86,14 @@ export default class TimetablesEditVehicleJourney extends Component {                                  </div>                                )}                                { -                                this.props.editMode &&  +                                this.props.editMode &&                                  <div className='nested-fields'>                                    <div className='wrapper'>                                      <div>                                        <TimetableSelect2                                          onSelect2Timetable={this.props.onSelect2Timetable}                                          chunkURL={'/autocomplete_time_tables.json'} +                                        searchKey={"comment_or_objectid_cont_any"}                                          isFilter={false}                                        />                                      </div> @@ -103,7 +105,7 @@ export default class TimetablesEditVehicleJourney extends Component {                          </div>                        </div>                        { -                        this.props.editMode &&  +                        this.props.editMode &&                          <div className='modal-footer'>                            <button                              className='btn btn-link' @@ -144,4 +146,4 @@ TimetablesEditVehicleJourney.propTypes = {    onDeleteCalendarModal: PropTypes.func.isRequired,    onSelect2Timetable: PropTypes.func.isRequired,    disabled: PropTypes.bool.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js b/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js index 19c183839..eb8651be2 100644 --- a/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js +++ b/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js @@ -31,12 +31,10 @@ export default class BSelect4 extends Component {              url: origin + path + this.props.chunkURL,              dataType: 'json',              delay: '500', -            data: function(params) { -              return { -                q: { -                  comment_or_objectid_cont_any: params.term -                } -              }; +            data: (params) => { +              let q = {} +              q[this.props.searchKey] = params.term +              return {q}              },              processResults: function(data, params) {                return { @@ -44,7 +42,7 @@ export default class BSelect4 extends Component {                    item => _.assign(                      {},                      item, -                    {text: '<strong>' + "<span class='fa fa-circle' style='color:" + (item.color ? item.color : '#4B4B4B') + "'></span> " + item.comment + ' - ' + item.short_id + '</strong><br/><small>' + (item.day_types ? item.day_types.match(/[A-Z]?[a-z]+/g).join(', ') : "") + '</small>'} +                    {text: '<strong>' + "<span class='fa fa-circle' style='color:" + (item.color ? item.color : '#4B4B4B') + "'></span> " + (item.comment || item.name) + ' - ' + item.short_id + '</strong><br/><small>' + (item.day_types ? item.day_types.match(/[A-Z]?[a-z]+/g).join(', ') : "") + '</small>'}                    )                  )                }; @@ -62,4 +60,4 @@ export default class BSelect4 extends Component {  const formatRepo = (props) => {    if(props.text) return props.text -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/containers/SaveVehicleJourneys.js b/app/javascript/vehicle_journeys/containers/SaveVehicleJourneys.js index 18f9e994e..f5f879ed8 100644 --- a/app/javascript/vehicle_journeys/containers/SaveVehicleJourneys.js +++ b/app/javascript/vehicle_journeys/containers/SaveVehicleJourneys.js @@ -17,6 +17,10 @@ const mapDispatchToProps = (dispatch) => {      onEnterEditMode: () => {        dispatch(actions.enterEditMode())      }, +    onExitEditMode: () => { +      dispatch(actions.cancelSelection()) +      dispatch(actions.exitEditMode()) +    },      onSubmitVehicleJourneys: (next, state) => {        actions.submitVehicleJourneys(dispatch, state, next)      } diff --git a/app/javascript/vehicle_journeys/containers/tools/PurchaseWindowsEditVehicleJourney.js b/app/javascript/vehicle_journeys/containers/tools/PurchaseWindowsEditVehicleJourney.js new file mode 100644 index 000000000..3fef44489 --- /dev/null +++ b/app/javascript/vehicle_journeys/containers/tools/PurchaseWindowsEditVehicleJourney.js @@ -0,0 +1,38 @@ +import actions from '../../actions' +import { connect } from 'react-redux' +import PurchaseWindowsEditVehicleJourneyComponent from '../../components/tools/PurchaseWindowsEditVehicleJourney' + +const mapStateToProps = (state, ownProps) => { +  return { +    editMode: state.editMode, +    modal: state.modal, +    vehicleJourneys: state.vehicleJourneys, +    status: state.status, +    disabled: ownProps.disabled +  } +} + +const mapDispatchToProps = (dispatch) => { +  return { +    onModalClose: () =>{ +      dispatch(actions.closeModal()) +    }, +    onOpenCalendarsEditModal: (vehicleJourneys) =>{ +      dispatch(actions.openPurchaseWindowsEditModal(vehicleJourneys)) +    }, +    onDeleteCalendarModal: (timetable) => { +      dispatch(actions.deletePurchaseWindowsModal(timetable)) +    }, +    onShoppingWindowsEditVehicleJourney: (vehicleJourneys, timetables) =>{ +      dispatch(actions.editVehicleJourneyPurchaseWindows(vehicleJourneys, timetables)) +    }, +    onSelect2Timetable: (e) =>{ +      dispatch(actions.selectPurchaseWindowsModal(e.params.data)) +      dispatch(actions.addSelectedPurchaseWindow()) +    } +  } +} + +const PurchaseWindowsEditVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(PurchaseWindowsEditVehicleJourneyComponent) + +export default PurchaseWindowsEditVehicleJourney diff --git a/app/javascript/vehicle_journeys/reducers/modal.js b/app/javascript/vehicle_journeys/reducers/modal.js index 57f54a144..862e27e1b 100644 --- a/app/javascript/vehicle_journeys/reducers/modal.js +++ b/app/javascript/vehicle_journeys/reducers/modal.js @@ -40,7 +40,6 @@ export default function modal(state = {}, action) {      case 'EDIT_CALENDARS_VEHICLEJOURNEY_MODAL':        vehicleJourneysModal = JSON.parse(JSON.stringify(action.vehicleJourneys))        let uniqTimetables = [] -      let timetable = {}        vehicleJourneysModal.map((vj, i) => {          vj.time_tables.map((tt, j) =>{            if(!(_.find(uniqTimetables, tt))){ @@ -56,6 +55,24 @@ export default function modal(state = {}, action) {          },          confirmModal: {}        } +    case 'EDIT_PURCHASE_WINDOWS_VEHICLEJOURNEY_MODAL': +      var vehicleJourneys = JSON.parse(JSON.stringify(action.vehicleJourneys)) +      let uniqPurchaseWindows = [] +      vehicleJourneys.map((vj, i) => { +        vj.purchase_windows.map((pw, j) =>{ +          if(!(_.find(uniqPurchaseWindows, pw))){ +            uniqPurchaseWindows.push(pw) +          } +        }) +      }) +      return { +        type: 'purchase_windows_edit', +        modalProps: { +          vehicleJourneys: vehicleJourneys, +          purchase_windows: uniqPurchaseWindows +        }, +        confirmModal: {} +      }      case 'SELECT_CP_EDIT_MODAL':        newModalProps = _.assign({}, state.modalProps, {selectedCompany : action.selectedItem})        return _.assign({}, state, {modalProps: newModalProps}) @@ -65,6 +82,9 @@ export default function modal(state = {}, action) {      case 'SELECT_TT_CALENDAR_MODAL':        newModalProps = _.assign({}, state.modalProps, {selectedTimetable : action.selectedItem})        return _.assign({}, state, {modalProps: newModalProps}) +    case 'SELECT_PURCHASE_WINDOW_MODAL': +      newModalProps = _.assign({}, state.modalProps, {selectedPurchaseWindow : action.selectedItem}) +      return _.assign({}, state, {modalProps: newModalProps})      case 'ADD_SELECTED_TIMETABLE':        if(state.modalProps.selectedTimetable){          newModalProps = JSON.parse(JSON.stringify(state.modalProps)) @@ -73,6 +93,14 @@ export default function modal(state = {}, action) {          }          return _.assign({}, state, {modalProps: newModalProps})        } +    case 'ADD_SELECTED_PURCHASE_WINDOW': +      if(state.modalProps.selectedPurchaseWindow){ +        newModalProps = JSON.parse(JSON.stringify(state.modalProps)) +        if (!_.find(newModalProps.purchase_windows, newModalProps.selectedPurchaseWindow)){ +          newModalProps.purchase_windows.push(newModalProps.selectedPurchaseWindow) +        } +        return _.assign({}, state, {modalProps: newModalProps}) +      }      case 'DELETE_CALENDAR_MODAL':        newModalProps = JSON.parse(JSON.stringify(state.modalProps))        let timetablesModal = state.modalProps.timetables.slice(0) @@ -92,6 +120,25 @@ export default function modal(state = {}, action) {        newModalProps.vehicleJourneys = vehicleJourneysModal        newModalProps.timetables = timetablesModal        return _.assign({}, state, {modalProps: newModalProps}) +    case 'DELETE_PURCHASE_WINDOW_MODAL': +        newModalProps = JSON.parse(JSON.stringify(state.modalProps)) +        let purchase_windows = state.modalProps.purchase_windows.slice(0) +        purchase_windows.map((tt, i) =>{ +          if(tt == action.purchaseWindow){ +            purchase_windows.splice(i, 1) +          } +        }) +        vehicleJourneysModal = state.modalProps.vehicleJourneys.slice(0) +        vehicleJourneysModal.map((vj) =>{ +          vj.purchase_windows.map((tt, i) =>{ +            if (_.isEqual(tt, action.purchaseWindow)){ +              vj.purchase_windows.splice(i, 1) +            } +          }) +        }) +        newModalProps.vehicleJourneys = vehicleJourneysModal +        newModalProps.purchase_windows = purchase_windows +        return _.assign({}, state, {modalProps: newModalProps})      case 'CREATE_VEHICLEJOURNEY_MODAL':        let selectedJP = {}        if (window.jpOrigin){ @@ -135,4 +182,4 @@ export default function modal(state = {}, action) {      default:        return state    } -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js index 136e1b41a..d057bf704 100644 --- a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js +++ b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js @@ -41,6 +41,7 @@ const vehicleJourney= (state = {}, action, keep) => {          short_id: '',          footnotes: [],          time_tables: [], +        purchase_windows: [],          vehicle_journey_at_stops: pristineVjasList,          selected: false,          deletable: false, @@ -79,18 +80,12 @@ const vehicleJourney= (state = {}, action, keep) => {            if (action.isDeparture){              newSchedule.departure_time[action.timeUnit] = actions.pad(action.val, action.timeUnit)              if(!action.isArrivalsToggled) -              newSchedule.arrival_time[action.timeUnit] = actions.pad(action.val, action.timeUnit) -            newSchedule = actions.getDelta(newSchedule) -            if(newSchedule.delta < 0){ -              return vjas -            } +              newSchedule.arrival_time[action.timeUnit] = newSchedule.departure_time[action.timeUnit] +            newSchedule = actions.adjustSchedule(action, newSchedule)              return _.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta})            }else{              newSchedule.arrival_time[action.timeUnit] = actions.pad(action.val, action.timeUnit) -            newSchedule = actions.getDelta(newSchedule) -            if(newSchedule.delta < 0){ -              return vjas -            } +            newSchedule = actions.adjustSchedule(action, newSchedule)              return _.assign({}, state.vehicle_journey_at_stops[action.subIndex],  {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta})            }          }else{ @@ -161,6 +156,21 @@ export default function vehicleJourneys(state = [], action) {            return vj          }        }) +      case 'EDIT_VEHICLEJOURNEYS_PURCHASE_WINDOWS': +        let newWindows = JSON.parse(JSON.stringify(action.purchase_windows)) +        return state.map((vj,i) =>{ +          if(vj.selected){ +            let updatedVJ = _.assign({}, vj) +            action.vehicleJourneys.map((vjm, j) =>{ +              if(vj.objectid == vjm.objectid){ +                updatedVJ.purchase_windows = newWindows +              } +            }) +            return updatedVJ +          }else{ +            return vj +          } +        })      case 'SHIFT_VEHICLEJOURNEY':        return state.map((vj, i) => {          if (vj.selected){ @@ -225,4 +235,4 @@ export default function vehicleJourneys(state = [], action) {      default:        return state    } -}
\ No newline at end of file +} diff --git a/app/models/calendar/period.rb b/app/models/calendar/period.rb index 1c423dfcc..56ab722fe 100644 --- a/app/models/calendar/period.rb +++ b/app/models/calendar/period.rb @@ -1,5 +1,5 @@  class Calendar < ActiveRecord::Base -   +    class Period      include ActiveAttr::Model diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb index 9f68d4408..e89a0ec7f 100644 --- a/app/models/chouette/purchase_window.rb +++ b/app/models/chouette/purchase_window.rb @@ -11,11 +11,12 @@ module Chouette      has_paper_trail      belongs_to :referential +    has_and_belongs_to_many :vehicle_journeys, :class_name => 'Chouette::VehicleJourney'      validates_presence_of :name, :referential      scope :contains_date, ->(date) { where('date ? <@ any (date_ranges)', date) } - +          def self.ransackable_scopes(auth_object = nil)        [:contains_date]      end diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 247c30668..983bf5363 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -1,3 +1,4 @@ +# coding: utf-8  module Chouette    class VehicleJourney < Chouette::TridentActiveRecord      has_paper_trail @@ -23,6 +24,7 @@ module Chouette      belongs_to :journey_pattern      has_and_belongs_to_many :footnotes, :class_name => 'Chouette::Footnote' +    has_and_belongs_to_many :purchase_windows, :class_name => 'Chouette::PurchaseWindow'      validates_presence_of :route      validates_presence_of :journey_pattern @@ -139,7 +141,7 @@ module Chouette      end      def update_has_and_belongs_to_many_from_state item -      ['time_tables', 'footnotes'].each do |assos| +      ['time_tables', 'footnotes', 'purchase_windows'].each do |assos|          saved = self.send(assos).map(&:id)          (saved - item[assos].map{|t| t['id']}).each do |id| @@ -241,11 +243,9 @@ module Chouette      end      def self.matrix(vehicle_journeys) -      {}.tap do |hash| -        vehicle_journeys.map{ |vj| -          vj.vehicle_journey_at_stops.map{ |vjas |hash[ "#{vj.id}-#{vjas.stop_point_id}"] = vjas } -        } -      end +      Hash[*VehicleJourneyAtStop.where(vehicle_journey_id: vehicle_journeys.pluck(:id)).map do |vjas| +        [ "#{vjas.vehicle_journey_id}-#{vjas.stop_point_id}", vjas] +      end.flatten]      end      def self.with_stops diff --git a/app/models/concerns/period_support.rb b/app/models/concerns/period_support.rb index f512c4e89..e17451fe4 100644 --- a/app/models/concerns/period_support.rb +++ b/app/models/concerns/period_support.rb @@ -7,7 +7,7 @@ module PeriodSupport      def init_date_ranges        self.date_ranges ||= []      end -     +      ### Calendar::Period      # Required by coocon      def build_period @@ -77,4 +77,4 @@ module PeriodSupport      private :clear_periods    end -end
\ No newline at end of file +end diff --git a/app/policies/line_policy.rb b/app/policies/line_policy.rb index e5674fbe2..e7263cc3b 100644 --- a/app/policies/line_policy.rb +++ b/app/policies/line_policy.rb @@ -6,7 +6,6 @@ class LinePolicy < ApplicationPolicy    end    def create? -    Rails.logger.debug "LinePolicy.create?"      user.has_permission?('lines.create')    end diff --git a/app/views/autocomplete_purchase_windows/index.rabl b/app/views/autocomplete_purchase_windows/index.rabl new file mode 100644 index 000000000..1d0287602 --- /dev/null +++ b/app/views/autocomplete_purchase_windows/index.rabl @@ -0,0 +1,12 @@ +collection @purchase_windows, :object_root => false + +node do |window| +  { +    :id => window.id, +    :name => window.name, +    :objectid => window.objectid, +    :color => window.color, +    :short_id => window.get_objectid.short_id, +    :text => "<strong><span class='fa fa-circle' style='color:" + (window.color ? window.color : '#4b4b4b') + "'></span> " + window.name + " - " + window.get_objectid.short_id + "</strong>" +  } +end diff --git a/app/views/journey_patterns_collections/show.html.slim b/app/views/journey_patterns_collections/show.html.slim index 834501da3..8a7b0c47c 100644 --- a/app/views/journey_patterns_collections/show.html.slim +++ b/app/views/journey_patterns_collections/show.html.slim @@ -17,6 +17,7 @@    | window.stopPoints = #{(@stop_points_list.to_json).html_safe};    | window.journeyPatternLength = #{@journey_patterns.total_entries()};    | window.journeyPatternsPerPage = #{@ppage}; -  | window.perms = #{raw @perms} +  | window.perms = #{raw @perms}; +  | window.features = #{raw @features};  = javascript_pack_tag 'journey_patterns/index.js' diff --git a/app/views/referentials/_form.html.slim b/app/views/referentials/_form.html.slim index 6f7da84c7..1611ee6dd 100644 --- a/app/views/referentials/_form.html.slim +++ b/app/views/referentials/_form.html.slim @@ -17,7 +17,7 @@      .row        .col-lg-12          - if @referential.errors.has_key? :metadatas -          .row +          .row.metadatas-errors              .col-lg-12                .alert.alert-danger                  - @referential.errors[:metadatas].each do |msg| diff --git a/app/views/vehicle_journeys/index.html.slim b/app/views/vehicle_journeys/index.html.slim index 4ad9d524d..ebcac8197 100644 --- a/app/views/vehicle_journeys/index.html.slim +++ b/app/views/vehicle_journeys/index.html.slim @@ -4,7 +4,7 @@    - content_for :page_header_content do      .row.mb-sm       .col-lg-12.text-right -       = link_to(t('routes.actions.opposite_route_timetable'), [@referential, @route.line, @route.opposite_route, :vehicle_journeys], class: 'btn btn-primary') +       = link_to(t('routes.actions.opposite_route_timetable'), [@referential, @route.line, @route.opposite_route, :vehicle_journeys], class: 'btn btn-primary sticky-action')  .page_content @@ -25,6 +25,7 @@    | window.vehicleJourneysPerPage = #{@ppage};    | window.line_footnotes = #{raw @footnotes};    | window.perms = #{raw @perms}; +  | window.features = #{raw @features};    | window.I18n = #{(I18n.backend.send(:translations).to_json).html_safe};  = javascript_pack_tag 'vehicle_journeys/index.js' diff --git a/app/views/vehicle_journeys/show.rabl b/app/views/vehicle_journeys/show.rabl index 830dee8bd..a07f09309 100644 --- a/app/views/vehicle_journeys/show.rabl +++ b/app/views/vehicle_journeys/show.rabl @@ -28,12 +28,22 @@ child(:time_tables, :object_root => false) do |time_tables|    end  end +if has_feature? :purchase_windows +  child(:purchase_windows, :object_root => false) do |purchase_windows| +    attributes :id, :objectid, :name, :color +  end +end +  child :footnotes, :object_root => false do |footnotes|    attributes :id, :code, :label  end  child(:vehicle_journey_at_stops_matrix, :object_root => false) do |vehicle_stops|    node do |vehicle_stop| +    [:id, :connecting_service_id, :boarding_alighting_possibility].map do |att| +      node(att) { vehicle_stop.send(att) ? vehicle_stop.send(att) : nil  } +    end +      node(:dummy) { vehicle_stop.dummy }      node(:stop_area_object_id) do @@ -49,11 +59,7 @@ child(:vehicle_journey_at_stops_matrix, :object_root => false) do |vehicle_stops        vehicle_stop.stop_point.stop_area.city_name      end -    [:id, :connecting_service_id, :boarding_alighting_possibility].map do |att| -      node(att) { vehicle_stop.send(att) ? vehicle_stop.send(att) : nil  } -    end - -    [:arrival_time, :departure_time].map do |att| +    [:arrival_time, :departure_time].each do |att|        node(att) do |vs|          {            hour: vs.send(att).try(:strftime, '%H'), diff --git a/config/routes.rb b/config/routes.rb index e05f5d365..22ff58724 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -112,6 +112,7 @@ ChouetteIhm::Application.routes.draw do      resources :autocomplete_stop_areas, only: [:show, :index] do        get 'around', on: :member      end +    resources :autocomplete_purchase_windows, only: [:index]       get :select_compliance_control_set      post :validate, on: :member      resources :autocomplete_time_tables, only: [:index] diff --git a/db/migrate/20171227113809_create_join_table_purchase_windows_vehicle_journeys.rb b/db/migrate/20171227113809_create_join_table_purchase_windows_vehicle_journeys.rb new file mode 100644 index 000000000..5460878aa --- /dev/null +++ b/db/migrate/20171227113809_create_join_table_purchase_windows_vehicle_journeys.rb @@ -0,0 +1,8 @@ +class CreateJoinTablePurchaseWindowsVehicleJourneys < ActiveRecord::Migration +  def change +    create_join_table :purchase_windows, :vehicle_journeys do |t| +      t.integer :purchase_window_id, limit: 8 +      t.integer :vehicle_journey_id, limit: 8 +    end +  end +end diff --git a/db/schema.rb b/db/schema.rb index 182df3159..67c42f568 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,12 +11,12 @@  #  # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171220164059) do +ActiveRecord::Schema.define(version: 20171227113809) do    # These are extensions that must be enabled in order to support this database    enable_extension "plpgsql" -  enable_extension "postgis"    enable_extension "hstore" +  enable_extension "postgis"    enable_extension "unaccent"    create_table "access_links", id: :bigserial, force: :cascade do |t| @@ -403,9 +403,9 @@ ActiveRecord::Schema.define(version: 20171220164059) do      t.string   "type"      t.integer  "parent_id",             limit: 8      t.string   "parent_type" +    t.datetime "notified_parent_at"      t.integer  "current_step",                    default: 0      t.integer  "total_steps",                     default: 0 -    t.datetime "notified_parent_at"      t.string   "creator"    end @@ -586,6 +586,11 @@ ActiveRecord::Schema.define(version: 20171220164059) do    add_index "purchase_windows", ["referential_id"], name: "index_purchase_windows_on_referential_id", using: :btree +  create_table "purchase_windows_vehicle_journeys", id: false, force: :cascade do |t| +    t.integer "purchase_window_id", limit: 8 +    t.integer "vehicle_journey_id", limit: 8 +  end +    create_table "referential_clonings", id: :bigserial, force: :cascade do |t|      t.string   "status"      t.datetime "started_at" diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..8e72558d7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12184 @@ +{ +  "name": "stif-boiv", +  "requires": true, +  "lockfileVersion": 1, +  "dependencies": { +    "@rails/webpacker": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/@rails/webpacker/-/webpacker-3.0.2.tgz", +      "integrity": "sha1-V0sCHB89cAtAqTRXbJvaxcn5x0Q=", +      "requires": { +        "babel-core": "6.26.0", +        "babel-loader": "7.1.2", +        "babel-plugin-syntax-dynamic-import": "6.18.0", +        "babel-plugin-transform-class-properties": "6.24.1", +        "babel-plugin-transform-object-rest-spread": "6.26.0", +        "babel-polyfill": "6.26.0", +        "babel-preset-env": "1.6.1", +        "coffee-loader": "0.8.0", +        "compression-webpack-plugin": "1.0.1", +        "css-loader": "0.28.7", +        "extract-text-webpack-plugin": "3.0.2", +        "file-loader": "0.11.2", +        "glob": "7.1.2", +        "js-yaml": "3.10.0", +        "node-sass": "4.7.2", +        "path-complete-extname": "0.1.0", +        "postcss-cssnext": "3.0.2", +        "postcss-loader": "2.0.9", +        "postcss-smart-import": "0.7.6", +        "rails-erb-loader": "5.2.1", +        "resolve-url-loader": "2.2.1", +        "sass-loader": "6.0.6", +        "style-loader": "0.18.2", +        "webpack": "3.10.0", +        "webpack-manifest-plugin": "1.3.2" +      }, +      "dependencies": { +        "babel-polyfill": { +          "version": "6.26.0", +          "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", +          "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", +          "requires": { +            "babel-runtime": "6.26.0", +            "core-js": "2.5.2", +            "regenerator-runtime": "0.10.5" +          } +        }, +        "regenerator-runtime": { +          "version": "0.10.5", +          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", +          "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" +        } +      } +    }, +    "@std/esm": { +      "version": "0.16.0", +      "resolved": "https://registry.npmjs.org/@std/esm/-/esm-0.16.0.tgz", +      "integrity": "sha512-JokzOdnTmxUWJ81VWp0OuSR+VZGuvM9lmnefiPoeTwrOH/wworkRvwkXMpSuso0zYQ0LcbGUKLEdkoKwkYyohg==" +    }, +    "abab": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", +      "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", +      "dev": true +    }, +    "abbrev": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", +      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" +    }, +    "accepts": { +      "version": "1.3.4", +      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", +      "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", +      "dev": true, +      "requires": { +        "mime-types": "2.1.17", +        "negotiator": "0.6.1" +      } +    }, +    "acorn": { +      "version": "5.2.1", +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", +      "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" +    }, +    "acorn-dynamic-import": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", +      "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", +      "requires": { +        "acorn": "4.0.13" +      }, +      "dependencies": { +        "acorn": { +          "version": "4.0.13", +          "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", +          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" +        } +      } +    }, +    "acorn-globals": { +      "version": "3.1.0", +      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", +      "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", +      "dev": true, +      "requires": { +        "acorn": "4.0.13" +      }, +      "dependencies": { +        "acorn": { +          "version": "4.0.13", +          "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", +          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", +          "dev": true +        } +      } +    }, +    "adjust-sourcemap-loader": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz", +      "integrity": "sha1-QS2SQE62HkETY1ASy6U6M9AI4OI=", +      "requires": { +        "assert": "1.4.1", +        "camelcase": "1.2.1", +        "loader-utils": "1.1.0", +        "lodash.assign": "4.2.0", +        "lodash.defaults": "3.1.2", +        "object-path": "0.9.2", +        "regex-parser": "2.2.8" +      }, +      "dependencies": { +        "camelcase": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", +          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" +        }, +        "lodash.defaults": { +          "version": "3.1.2", +          "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", +          "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", +          "requires": { +            "lodash.assign": "3.2.0", +            "lodash.restparam": "3.6.1" +          }, +          "dependencies": { +            "lodash.assign": { +              "version": "3.2.0", +              "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", +              "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", +              "requires": { +                "lodash._baseassign": "3.2.0", +                "lodash._createassigner": "3.1.1", +                "lodash.keys": "3.1.2" +              } +            } +          } +        } +      } +    }, +    "ajv": { +      "version": "5.5.1", +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", +      "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", +      "requires": { +        "co": "4.6.0", +        "fast-deep-equal": "1.0.0", +        "fast-json-stable-stringify": "2.0.0", +        "json-schema-traverse": "0.3.1" +      } +    }, +    "ajv-keywords": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", +      "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" +    }, +    "align-text": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", +      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", +      "requires": { +        "kind-of": "3.2.2", +        "longest": "1.0.1", +        "repeat-string": "1.6.1" +      } +    }, +    "almond": { +      "version": "0.3.3", +      "resolved": "https://registry.npmjs.org/almond/-/almond-0.3.3.tgz", +      "integrity": "sha1-oOfJWsdiTWQXtElLHmi/9pMWiiA=" +    }, +    "alphanum-sort": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", +      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" +    }, +    "amdefine": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", +      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" +    }, +    "ansi-escapes": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", +      "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", +      "dev": true +    }, +    "ansi-html": { +      "version": "0.0.7", +      "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", +      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", +      "dev": true +    }, +    "ansi-regex": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", +      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" +    }, +    "ansi-styles": { +      "version": "2.2.1", +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", +      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" +    }, +    "any-promise": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", +      "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=" +    }, +    "anymatch": { +      "version": "1.3.2", +      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", +      "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", +      "requires": { +        "micromatch": "2.3.11", +        "normalize-path": "2.1.1" +      } +    }, +    "append-transform": { +      "version": "0.4.0", +      "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", +      "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", +      "dev": true, +      "requires": { +        "default-require-extensions": "1.0.0" +      } +    }, +    "aproba": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", +      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" +    }, +    "are-we-there-yet": { +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", +      "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", +      "requires": { +        "delegates": "1.0.0", +        "readable-stream": "2.3.3" +      } +    }, +    "argparse": { +      "version": "1.0.9", +      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", +      "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", +      "requires": { +        "sprintf-js": "1.0.3" +      } +    }, +    "arr-diff": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", +      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", +      "requires": { +        "arr-flatten": "1.1.0" +      } +    }, +    "arr-flatten": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", +      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" +    }, +    "array-equal": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", +      "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", +      "dev": true +    }, +    "array-find-index": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", +      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" +    }, +    "array-flatten": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", +      "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", +      "dev": true +    }, +    "array-includes": { +      "version": "3.0.3", +      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", +      "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", +      "dev": true, +      "requires": { +        "define-properties": "1.1.2", +        "es-abstract": "1.10.0" +      } +    }, +    "array-union": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", +      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", +      "dev": true, +      "requires": { +        "array-uniq": "1.0.3" +      } +    }, +    "array-uniq": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", +      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", +      "dev": true +    }, +    "array-unique": { +      "version": "0.2.1", +      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", +      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" +    }, +    "arrify": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", +      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" +    }, +    "asap": { +      "version": "2.0.6", +      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", +      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" +    }, +    "asn1": { +      "version": "0.2.3", +      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", +      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" +    }, +    "asn1.js": { +      "version": "4.9.2", +      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", +      "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", +      "requires": { +        "bn.js": "4.11.8", +        "inherits": "2.0.3", +        "minimalistic-assert": "1.0.0" +      } +    }, +    "assert": { +      "version": "1.4.1", +      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", +      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", +      "requires": { +        "util": "0.10.3" +      } +    }, +    "assert-plus": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", +      "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" +    }, +    "astral-regex": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", +      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", +      "dev": true +    }, +    "async": { +      "version": "2.4.1", +      "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", +      "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", +      "requires": { +        "lodash": "4.17.4" +      } +    }, +    "async-each": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", +      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" +    }, +    "async-foreach": { +      "version": "0.1.3", +      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", +      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" +    }, +    "asynckit": { +      "version": "0.4.0", +      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", +      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" +    }, +    "atob": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", +      "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=" +    }, +    "autoprefixer": { +      "version": "6.7.7", +      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", +      "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", +      "requires": { +        "browserslist": "1.7.7", +        "caniuse-db": "1.0.30000782", +        "normalize-range": "0.1.2", +        "num2fraction": "1.2.2", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      }, +      "dependencies": { +        "browserslist": { +          "version": "1.7.7", +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", +          "requires": { +            "caniuse-db": "1.0.30000782", +            "electron-to-chromium": "1.3.28" +          } +        } +      } +    }, +    "aws-sign2": { +      "version": "0.6.0", +      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", +      "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" +    }, +    "aws4": { +      "version": "1.6.0", +      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", +      "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" +    }, +    "babel-code-frame": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", +      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", +      "requires": { +        "chalk": "1.1.3", +        "esutils": "2.0.2", +        "js-tokens": "3.0.2" +      } +    }, +    "babel-core": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", +      "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", +      "requires": { +        "babel-code-frame": "6.26.0", +        "babel-generator": "6.26.0", +        "babel-helpers": "6.24.1", +        "babel-messages": "6.23.0", +        "babel-register": "6.26.0", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0", +        "babylon": "6.18.0", +        "convert-source-map": "1.5.1", +        "debug": "2.6.9", +        "json5": "0.5.1", +        "lodash": "4.17.4", +        "minimatch": "3.0.4", +        "path-is-absolute": "1.0.1", +        "private": "0.1.8", +        "slash": "1.0.0", +        "source-map": "0.5.7" +      } +    }, +    "babel-generator": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", +      "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", +      "requires": { +        "babel-messages": "6.23.0", +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0", +        "detect-indent": "4.0.0", +        "jsesc": "1.3.0", +        "lodash": "4.17.4", +        "source-map": "0.5.7", +        "trim-right": "1.0.1" +      } +    }, +    "babel-helper-builder-binary-assignment-operator-visitor": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", +      "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", +      "requires": { +        "babel-helper-explode-assignable-expression": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-builder-react-jsx": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", +      "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0", +        "esutils": "2.0.2" +      } +    }, +    "babel-helper-call-delegate": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", +      "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", +      "requires": { +        "babel-helper-hoist-variables": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-define-map": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", +      "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", +      "requires": { +        "babel-helper-function-name": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0", +        "lodash": "4.17.4" +      } +    }, +    "babel-helper-explode-assignable-expression": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", +      "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-function-name": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", +      "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", +      "requires": { +        "babel-helper-get-function-arity": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-get-function-arity": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", +      "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-hoist-variables": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", +      "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-optimise-call-expression": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", +      "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-regex": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", +      "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0", +        "lodash": "4.17.4" +      } +    }, +    "babel-helper-remap-async-to-generator": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", +      "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", +      "requires": { +        "babel-helper-function-name": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helper-replace-supers": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", +      "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", +      "requires": { +        "babel-helper-optimise-call-expression": "6.24.1", +        "babel-messages": "6.23.0", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-helpers": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", +      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0" +      } +    }, +    "babel-jest": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", +      "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", +      "requires": { +        "babel-plugin-istanbul": "4.1.5", +        "babel-preset-jest": "21.2.0" +      } +    }, +    "babel-loader": { +      "version": "7.1.2", +      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", +      "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", +      "requires": { +        "find-cache-dir": "1.0.0", +        "loader-utils": "1.1.0", +        "mkdirp": "0.5.1" +      } +    }, +    "babel-messages": { +      "version": "6.23.0", +      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", +      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-check-es2015-constants": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", +      "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-istanbul": { +      "version": "4.1.5", +      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", +      "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", +      "requires": { +        "find-up": "2.1.0", +        "istanbul-lib-instrument": "1.9.1", +        "test-exclude": "4.1.1" +      } +    }, +    "babel-plugin-jest-hoist": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", +      "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==" +    }, +    "babel-plugin-syntax-async-functions": { +      "version": "6.13.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", +      "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" +    }, +    "babel-plugin-syntax-class-properties": { +      "version": "6.13.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", +      "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" +    }, +    "babel-plugin-syntax-dynamic-import": { +      "version": "6.18.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", +      "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" +    }, +    "babel-plugin-syntax-exponentiation-operator": { +      "version": "6.13.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", +      "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" +    }, +    "babel-plugin-syntax-flow": { +      "version": "6.18.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", +      "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" +    }, +    "babel-plugin-syntax-jsx": { +      "version": "6.18.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", +      "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" +    }, +    "babel-plugin-syntax-object-rest-spread": { +      "version": "6.13.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", +      "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" +    }, +    "babel-plugin-syntax-trailing-function-commas": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", +      "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" +    }, +    "babel-plugin-transform-async-to-generator": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", +      "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", +      "requires": { +        "babel-helper-remap-async-to-generator": "6.24.1", +        "babel-plugin-syntax-async-functions": "6.13.0", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-class-properties": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", +      "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", +      "requires": { +        "babel-helper-function-name": "6.24.1", +        "babel-plugin-syntax-class-properties": "6.13.0", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-arrow-functions": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", +      "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-block-scoped-functions": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", +      "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-block-scoping": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", +      "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0", +        "lodash": "4.17.4" +      } +    }, +    "babel-plugin-transform-es2015-classes": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", +      "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", +      "requires": { +        "babel-helper-define-map": "6.26.0", +        "babel-helper-function-name": "6.24.1", +        "babel-helper-optimise-call-expression": "6.24.1", +        "babel-helper-replace-supers": "6.24.1", +        "babel-messages": "6.23.0", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-computed-properties": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", +      "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-destructuring": { +      "version": "6.23.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", +      "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-duplicate-keys": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", +      "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-for-of": { +      "version": "6.23.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", +      "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-function-name": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", +      "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", +      "requires": { +        "babel-helper-function-name": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-literals": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", +      "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-modules-amd": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", +      "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", +      "requires": { +        "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-modules-commonjs": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", +      "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", +      "requires": { +        "babel-plugin-transform-strict-mode": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-modules-systemjs": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", +      "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", +      "requires": { +        "babel-helper-hoist-variables": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-modules-umd": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", +      "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", +      "requires": { +        "babel-plugin-transform-es2015-modules-amd": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-object-super": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", +      "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", +      "requires": { +        "babel-helper-replace-supers": "6.24.1", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-parameters": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", +      "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", +      "requires": { +        "babel-helper-call-delegate": "6.24.1", +        "babel-helper-get-function-arity": "6.24.1", +        "babel-runtime": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-shorthand-properties": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", +      "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-spread": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", +      "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-sticky-regex": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", +      "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", +      "requires": { +        "babel-helper-regex": "6.26.0", +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-template-literals": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", +      "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-typeof-symbol": { +      "version": "6.23.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", +      "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-es2015-unicode-regex": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", +      "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", +      "requires": { +        "babel-helper-regex": "6.26.0", +        "babel-runtime": "6.26.0", +        "regexpu-core": "2.0.0" +      } +    }, +    "babel-plugin-transform-exponentiation-operator": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", +      "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", +      "requires": { +        "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", +        "babel-plugin-syntax-exponentiation-operator": "6.13.0", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-flow-strip-types": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", +      "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", +      "requires": { +        "babel-plugin-syntax-flow": "6.18.0", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-object-rest-spread": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", +      "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", +      "requires": { +        "babel-plugin-syntax-object-rest-spread": "6.13.0", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-react-display-name": { +      "version": "6.25.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", +      "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", +      "requires": { +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-react-jsx": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", +      "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", +      "requires": { +        "babel-helper-builder-react-jsx": "6.26.0", +        "babel-plugin-syntax-jsx": "6.18.0", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-react-jsx-self": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", +      "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", +      "requires": { +        "babel-plugin-syntax-jsx": "6.18.0", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-react-jsx-source": { +      "version": "6.22.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", +      "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", +      "requires": { +        "babel-plugin-syntax-jsx": "6.18.0", +        "babel-runtime": "6.26.0" +      } +    }, +    "babel-plugin-transform-regenerator": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", +      "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", +      "requires": { +        "regenerator-transform": "0.10.1" +      } +    }, +    "babel-plugin-transform-strict-mode": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", +      "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0" +      } +    }, +    "babel-polyfill": { +      "version": "6.16.0", +      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", +      "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", +      "requires": { +        "babel-runtime": "6.26.0", +        "core-js": "2.5.2", +        "regenerator-runtime": "0.9.6" +      }, +      "dependencies": { +        "regenerator-runtime": { +          "version": "0.9.6", +          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", +          "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" +        } +      } +    }, +    "babel-preset-env": { +      "version": "1.6.1", +      "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", +      "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", +      "requires": { +        "babel-plugin-check-es2015-constants": "6.22.0", +        "babel-plugin-syntax-trailing-function-commas": "6.22.0", +        "babel-plugin-transform-async-to-generator": "6.24.1", +        "babel-plugin-transform-es2015-arrow-functions": "6.22.0", +        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", +        "babel-plugin-transform-es2015-block-scoping": "6.26.0", +        "babel-plugin-transform-es2015-classes": "6.24.1", +        "babel-plugin-transform-es2015-computed-properties": "6.24.1", +        "babel-plugin-transform-es2015-destructuring": "6.23.0", +        "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", +        "babel-plugin-transform-es2015-for-of": "6.23.0", +        "babel-plugin-transform-es2015-function-name": "6.24.1", +        "babel-plugin-transform-es2015-literals": "6.22.0", +        "babel-plugin-transform-es2015-modules-amd": "6.24.1", +        "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", +        "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", +        "babel-plugin-transform-es2015-modules-umd": "6.24.1", +        "babel-plugin-transform-es2015-object-super": "6.24.1", +        "babel-plugin-transform-es2015-parameters": "6.24.1", +        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", +        "babel-plugin-transform-es2015-spread": "6.22.0", +        "babel-plugin-transform-es2015-sticky-regex": "6.24.1", +        "babel-plugin-transform-es2015-template-literals": "6.22.0", +        "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", +        "babel-plugin-transform-es2015-unicode-regex": "6.24.1", +        "babel-plugin-transform-exponentiation-operator": "6.24.1", +        "babel-plugin-transform-regenerator": "6.26.0", +        "browserslist": "2.10.0", +        "invariant": "2.2.2", +        "semver": "5.4.1" +      } +    }, +    "babel-preset-es2015": { +      "version": "6.18.0", +      "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz", +      "integrity": "sha1-uMcN+E7JSMQ9zyv3cOmI632ogxI=", +      "requires": { +        "babel-plugin-check-es2015-constants": "6.22.0", +        "babel-plugin-transform-es2015-arrow-functions": "6.22.0", +        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", +        "babel-plugin-transform-es2015-block-scoping": "6.26.0", +        "babel-plugin-transform-es2015-classes": "6.24.1", +        "babel-plugin-transform-es2015-computed-properties": "6.24.1", +        "babel-plugin-transform-es2015-destructuring": "6.23.0", +        "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", +        "babel-plugin-transform-es2015-for-of": "6.23.0", +        "babel-plugin-transform-es2015-function-name": "6.24.1", +        "babel-plugin-transform-es2015-literals": "6.22.0", +        "babel-plugin-transform-es2015-modules-amd": "6.24.1", +        "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", +        "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", +        "babel-plugin-transform-es2015-modules-umd": "6.24.1", +        "babel-plugin-transform-es2015-object-super": "6.24.1", +        "babel-plugin-transform-es2015-parameters": "6.24.1", +        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", +        "babel-plugin-transform-es2015-spread": "6.22.0", +        "babel-plugin-transform-es2015-sticky-regex": "6.24.1", +        "babel-plugin-transform-es2015-template-literals": "6.22.0", +        "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", +        "babel-plugin-transform-es2015-unicode-regex": "6.24.1", +        "babel-plugin-transform-regenerator": "6.26.0" +      } +    }, +    "babel-preset-flow": { +      "version": "6.23.0", +      "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", +      "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", +      "requires": { +        "babel-plugin-transform-flow-strip-types": "6.22.0" +      } +    }, +    "babel-preset-jest": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", +      "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", +      "requires": { +        "babel-plugin-jest-hoist": "21.2.0", +        "babel-plugin-syntax-object-rest-spread": "6.13.0" +      } +    }, +    "babel-preset-react": { +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", +      "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", +      "requires": { +        "babel-plugin-syntax-jsx": "6.18.0", +        "babel-plugin-transform-react-display-name": "6.25.0", +        "babel-plugin-transform-react-jsx": "6.24.1", +        "babel-plugin-transform-react-jsx-self": "6.22.0", +        "babel-plugin-transform-react-jsx-source": "6.22.0", +        "babel-preset-flow": "6.23.0" +      } +    }, +    "babel-register": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", +      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", +      "requires": { +        "babel-core": "6.26.0", +        "babel-runtime": "6.26.0", +        "core-js": "2.5.2", +        "home-or-tmp": "2.0.0", +        "lodash": "4.17.4", +        "mkdirp": "0.5.1", +        "source-map-support": "0.4.18" +      } +    }, +    "babel-runtime": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", +      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", +      "requires": { +        "core-js": "2.5.2", +        "regenerator-runtime": "0.11.1" +      } +    }, +    "babel-template": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", +      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0", +        "babylon": "6.18.0", +        "lodash": "4.17.4" +      } +    }, +    "babel-traverse": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", +      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", +      "requires": { +        "babel-code-frame": "6.26.0", +        "babel-messages": "6.23.0", +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0", +        "babylon": "6.18.0", +        "debug": "2.6.9", +        "globals": "9.18.0", +        "invariant": "2.2.2", +        "lodash": "4.17.4" +      } +    }, +    "babel-types": { +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", +      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", +      "requires": { +        "babel-runtime": "6.26.0", +        "esutils": "2.0.2", +        "lodash": "4.17.4", +        "to-fast-properties": "1.0.3" +      } +    }, +    "babelify": { +      "version": "7.3.0", +      "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", +      "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", +      "requires": { +        "babel-core": "6.26.0", +        "object-assign": "4.1.1" +      } +    }, +    "babylon": { +      "version": "6.18.0", +      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", +      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" +    }, +    "balanced-match": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", +      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" +    }, +    "base64-js": { +      "version": "1.2.1", +      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", +      "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" +    }, +    "batch": { +      "version": "0.6.1", +      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", +      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", +      "dev": true +    }, +    "bcrypt-pbkdf": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", +      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", +      "optional": true, +      "requires": { +        "tweetnacl": "0.14.5" +      } +    }, +    "big.js": { +      "version": "3.2.0", +      "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", +      "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" +    }, +    "binary-extensions": { +      "version": "1.11.0", +      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", +      "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" +    }, +    "block-stream": { +      "version": "0.0.9", +      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", +      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", +      "requires": { +        "inherits": "2.0.3" +      } +    }, +    "bn.js": { +      "version": "4.11.8", +      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", +      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" +    }, +    "body-parser": { +      "version": "1.18.2", +      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", +      "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", +      "dev": true, +      "requires": { +        "bytes": "3.0.0", +        "content-type": "1.0.4", +        "debug": "2.6.9", +        "depd": "1.1.1", +        "http-errors": "1.6.2", +        "iconv-lite": "0.4.19", +        "on-finished": "2.3.0", +        "qs": "6.5.1", +        "raw-body": "2.3.2", +        "type-is": "1.6.15" +      }, +      "dependencies": { +        "qs": { +          "version": "6.5.1", +          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", +          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", +          "dev": true +        } +      } +    }, +    "bonjour": { +      "version": "3.5.0", +      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", +      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", +      "dev": true, +      "requires": { +        "array-flatten": "2.1.1", +        "deep-equal": "1.0.1", +        "dns-equal": "1.0.0", +        "dns-txt": "2.0.2", +        "multicast-dns": "6.2.1", +        "multicast-dns-service-types": "1.1.0" +      } +    }, +    "boom": { +      "version": "2.10.1", +      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", +      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", +      "requires": { +        "hoek": "2.16.3" +      } +    }, +    "bootstrap": { +      "version": "3.3.7", +      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", +      "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=" +    }, +    "brace-expansion": { +      "version": "1.1.8", +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", +      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", +      "requires": { +        "balanced-match": "1.0.0", +        "concat-map": "0.0.1" +      } +    }, +    "braces": { +      "version": "1.8.5", +      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", +      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", +      "requires": { +        "expand-range": "1.8.2", +        "preserve": "0.2.0", +        "repeat-element": "1.1.2" +      } +    }, +    "brorand": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", +      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" +    }, +    "browser-resolve": { +      "version": "1.11.2", +      "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", +      "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", +      "dev": true, +      "requires": { +        "resolve": "1.1.7" +      }, +      "dependencies": { +        "resolve": { +          "version": "1.1.7", +          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", +          "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", +          "dev": true +        } +      } +    }, +    "browserify-aes": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", +      "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", +      "requires": { +        "buffer-xor": "1.0.3", +        "cipher-base": "1.0.4", +        "create-hash": "1.1.3", +        "evp_bytestokey": "1.0.3", +        "inherits": "2.0.3", +        "safe-buffer": "5.1.1" +      } +    }, +    "browserify-cipher": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", +      "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", +      "requires": { +        "browserify-aes": "1.1.1", +        "browserify-des": "1.0.0", +        "evp_bytestokey": "1.0.3" +      } +    }, +    "browserify-des": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", +      "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", +      "requires": { +        "cipher-base": "1.0.4", +        "des.js": "1.0.0", +        "inherits": "2.0.3" +      } +    }, +    "browserify-rsa": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", +      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", +      "requires": { +        "bn.js": "4.11.8", +        "randombytes": "2.0.5" +      } +    }, +    "browserify-sign": { +      "version": "4.0.4", +      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", +      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", +      "requires": { +        "bn.js": "4.11.8", +        "browserify-rsa": "4.0.1", +        "create-hash": "1.1.3", +        "create-hmac": "1.1.6", +        "elliptic": "6.4.0", +        "inherits": "2.0.3", +        "parse-asn1": "5.1.0" +      } +    }, +    "browserify-zlib": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", +      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", +      "requires": { +        "pako": "1.0.6" +      } +    }, +    "browserslist": { +      "version": "2.10.0", +      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz", +      "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==", +      "requires": { +        "caniuse-lite": "1.0.30000782", +        "electron-to-chromium": "1.3.28" +      } +    }, +    "bser": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", +      "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", +      "dev": true, +      "requires": { +        "node-int64": "0.4.0" +      } +    }, +    "buffer": { +      "version": "4.9.1", +      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", +      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", +      "requires": { +        "base64-js": "1.2.1", +        "ieee754": "1.1.8", +        "isarray": "1.0.0" +      } +    }, +    "buffer-indexof": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", +      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", +      "dev": true +    }, +    "buffer-xor": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", +      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" +    }, +    "builtin-modules": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", +      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" +    }, +    "builtin-status-codes": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", +      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" +    }, +    "bytes": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", +      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", +      "dev": true +    }, +    "callsites": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", +      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", +      "dev": true +    }, +    "camelcase": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", +      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" +    }, +    "camelcase-keys": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", +      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", +      "requires": { +        "camelcase": "2.1.1", +        "map-obj": "1.0.1" +      } +    }, +    "caniuse-api": { +      "version": "1.6.1", +      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", +      "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", +      "requires": { +        "browserslist": "1.7.7", +        "caniuse-db": "1.0.30000782", +        "lodash.memoize": "4.1.2", +        "lodash.uniq": "4.5.0" +      }, +      "dependencies": { +        "browserslist": { +          "version": "1.7.7", +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", +          "requires": { +            "caniuse-db": "1.0.30000782", +            "electron-to-chromium": "1.3.28" +          } +        } +      } +    }, +    "caniuse-db": { +      "version": "1.0.30000782", +      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000782.tgz", +      "integrity": "sha1-2IFbzhV4w1Cs7REyUHMBIF4Pq1M=" +    }, +    "caniuse-lite": { +      "version": "1.0.30000782", +      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000782.tgz", +      "integrity": "sha1-W4K4w4XyU0h0XEccpRMgr7G38lQ=" +    }, +    "caseless": { +      "version": "0.11.0", +      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", +      "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" +    }, +    "center-align": { +      "version": "0.1.3", +      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", +      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", +      "requires": { +        "align-text": "0.1.4", +        "lazy-cache": "1.0.4" +      }, +      "dependencies": { +        "lazy-cache": { +          "version": "1.0.4", +          "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", +          "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" +        } +      } +    }, +    "chalk": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", +      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", +      "requires": { +        "ansi-styles": "2.2.1", +        "escape-string-regexp": "1.0.5", +        "has-ansi": "2.0.0", +        "strip-ansi": "3.0.1", +        "supports-color": "2.0.0" +      } +    }, +    "chokidar": { +      "version": "1.7.0", +      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", +      "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", +      "requires": { +        "anymatch": "1.3.2", +        "async-each": "1.0.1", +        "fsevents": "1.1.3", +        "glob-parent": "2.0.0", +        "inherits": "2.0.3", +        "is-binary-path": "1.0.1", +        "is-glob": "2.0.1", +        "path-is-absolute": "1.0.1", +        "readdirp": "2.1.0" +      } +    }, +    "ci-info": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", +      "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", +      "dev": true +    }, +    "cipher-base": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", +      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", +      "requires": { +        "inherits": "2.0.3", +        "safe-buffer": "5.1.1" +      } +    }, +    "clap": { +      "version": "1.2.3", +      "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", +      "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", +      "requires": { +        "chalk": "1.1.3" +      } +    }, +    "clean-webpack-plugin": { +      "version": "0.1.17", +      "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.17.tgz", +      "integrity": "sha512-Bts/V725v8Ijosp4K1cqppQXgXcrohxoMsg0CV2xL4y/vua1G5pAfHEW/eJIiKF+GNNG72mdjbipxMRFEms7yg==", +      "dev": true, +      "requires": { +        "rimraf": "2.6.2" +      } +    }, +    "cliui": { +      "version": "3.2.0", +      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", +      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", +      "requires": { +        "string-width": "1.0.2", +        "strip-ansi": "3.0.1", +        "wrap-ansi": "2.1.0" +      } +    }, +    "clone": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", +      "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" +    }, +    "clone-deep": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", +      "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", +      "requires": { +        "for-own": "1.0.0", +        "is-plain-object": "2.0.4", +        "kind-of": "3.2.2", +        "shallow-clone": "0.1.2" +      } +    }, +    "co": { +      "version": "4.6.0", +      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", +      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" +    }, +    "coa": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", +      "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", +      "requires": { +        "q": "1.5.1" +      } +    }, +    "code-point-at": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", +      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" +    }, +    "coffee-loader": { +      "version": "0.8.0", +      "resolved": "https://registry.npmjs.org/coffee-loader/-/coffee-loader-0.8.0.tgz", +      "integrity": "sha512-jMxsuxagYouuhTcf1EoLz8pONTIl5gwuyIdTIOCuArGLQiNc2fS6G7KfTfadb8+hiOfwslhD60wjih2knTnAww==", +      "requires": { +        "loader-utils": "1.1.0" +      } +    }, +    "coffeescript": { +      "version": "1.12.7", +      "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", +      "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==" +    }, +    "color": { +      "version": "0.11.4", +      "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", +      "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", +      "requires": { +        "clone": "1.0.3", +        "color-convert": "1.9.1", +        "color-string": "0.3.0" +      } +    }, +    "color-convert": { +      "version": "1.9.1", +      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", +      "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", +      "requires": { +        "color-name": "1.1.3" +      } +    }, +    "color-name": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", +      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" +    }, +    "color-string": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", +      "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", +      "requires": { +        "color-name": "1.1.3" +      } +    }, +    "colormin": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", +      "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", +      "requires": { +        "color": "0.11.4", +        "css-color-names": "0.0.4", +        "has": "1.0.1" +      } +    }, +    "colors": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", +      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" +    }, +    "combined-stream": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", +      "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", +      "requires": { +        "delayed-stream": "1.0.0" +      } +    }, +    "commander": { +      "version": "2.12.2", +      "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", +      "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" +    }, +    "commondir": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", +      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" +    }, +    "compressible": { +      "version": "2.0.12", +      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", +      "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", +      "dev": true, +      "requires": { +        "mime-db": "1.30.0" +      } +    }, +    "compression": { +      "version": "1.7.1", +      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", +      "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", +      "dev": true, +      "requires": { +        "accepts": "1.3.4", +        "bytes": "3.0.0", +        "compressible": "2.0.12", +        "debug": "2.6.9", +        "on-headers": "1.0.1", +        "safe-buffer": "5.1.1", +        "vary": "1.1.2" +      } +    }, +    "compression-webpack-plugin": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-1.0.1.tgz", +      "integrity": "sha512-ABF2AFb31gpIBeEy/w6Ct0u+K+jY8jFRfGwjUWGxVTidA9pf7iH/JzjcVBQ+KB1gNMycujMxA56/PznMPUV5jw==", +      "requires": { +        "async": "2.4.1", +        "webpack-sources": "1.1.0" +      } +    }, +    "concat-map": { +      "version": "0.0.1", +      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", +      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" +    }, +    "connect-history-api-fallback": { +      "version": "1.5.0", +      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", +      "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", +      "dev": true +    }, +    "console-browserify": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", +      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", +      "requires": { +        "date-now": "0.1.4" +      } +    }, +    "console-control-strings": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", +      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" +    }, +    "constants-browserify": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", +      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" +    }, +    "content-disposition": { +      "version": "0.5.2", +      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", +      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", +      "dev": true +    }, +    "content-type": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", +      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", +      "dev": true +    }, +    "content-type-parser": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", +      "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", +      "dev": true +    }, +    "convert-source-map": { +      "version": "1.5.1", +      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", +      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" +    }, +    "cookie": { +      "version": "0.3.1", +      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", +      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", +      "dev": true +    }, +    "cookie-signature": { +      "version": "1.0.6", +      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", +      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", +      "dev": true +    }, +    "core-js": { +      "version": "2.5.2", +      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.2.tgz", +      "integrity": "sha1-vEZIZW59ydyA19PHu8Fy2W50TmM=" +    }, +    "core-util-is": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", +      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" +    }, +    "cosmiconfig": { +      "version": "2.2.2", +      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", +      "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", +      "requires": { +        "is-directory": "0.3.1", +        "js-yaml": "3.10.0", +        "minimist": "1.2.0", +        "object-assign": "4.1.1", +        "os-homedir": "1.0.2", +        "parse-json": "2.2.0", +        "require-from-string": "1.2.1" +      }, +      "dependencies": { +        "minimist": { +          "version": "1.2.0", +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", +          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" +        } +      } +    }, +    "create-ecdh": { +      "version": "4.0.0", +      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", +      "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", +      "requires": { +        "bn.js": "4.11.8", +        "elliptic": "6.4.0" +      } +    }, +    "create-hash": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", +      "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", +      "requires": { +        "cipher-base": "1.0.4", +        "inherits": "2.0.3", +        "ripemd160": "2.0.1", +        "sha.js": "2.4.9" +      } +    }, +    "create-hmac": { +      "version": "1.1.6", +      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", +      "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", +      "requires": { +        "cipher-base": "1.0.4", +        "create-hash": "1.1.3", +        "inherits": "2.0.3", +        "ripemd160": "2.0.1", +        "safe-buffer": "5.1.1", +        "sha.js": "2.4.9" +      } +    }, +    "cross-spawn": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", +      "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", +      "requires": { +        "lru-cache": "4.1.1", +        "which": "1.3.0" +      } +    }, +    "cryptiles": { +      "version": "2.0.5", +      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", +      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", +      "requires": { +        "boom": "2.10.1" +      } +    }, +    "crypto-browserify": { +      "version": "3.12.0", +      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", +      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", +      "requires": { +        "browserify-cipher": "1.0.0", +        "browserify-sign": "4.0.4", +        "create-ecdh": "4.0.0", +        "create-hash": "1.1.3", +        "create-hmac": "1.1.6", +        "diffie-hellman": "5.0.2", +        "inherits": "2.0.3", +        "pbkdf2": "3.0.14", +        "public-encrypt": "4.0.0", +        "randombytes": "2.0.5", +        "randomfill": "1.0.3" +      } +    }, +    "css": { +      "version": "2.2.1", +      "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", +      "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", +      "requires": { +        "inherits": "2.0.3", +        "source-map": "0.1.43", +        "source-map-resolve": "0.3.1", +        "urix": "0.1.0" +      }, +      "dependencies": { +        "source-map": { +          "version": "0.1.43", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", +          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", +          "requires": { +            "amdefine": "1.0.1" +          } +        } +      } +    }, +    "css-color-function": { +      "version": "1.3.3", +      "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz", +      "integrity": "sha1-jtJMLAIFBzM5+voAS8jBQfzLKC4=", +      "requires": { +        "balanced-match": "0.1.0", +        "color": "0.11.4", +        "debug": "3.1.0", +        "rgb": "0.1.0" +      }, +      "dependencies": { +        "balanced-match": { +          "version": "0.1.0", +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz", +          "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo=" +        }, +        "debug": { +          "version": "3.1.0", +          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", +          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", +          "requires": { +            "ms": "2.0.0" +          } +        } +      } +    }, +    "css-color-names": { +      "version": "0.0.4", +      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", +      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" +    }, +    "css-loader": { +      "version": "0.28.7", +      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", +      "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", +      "requires": { +        "babel-code-frame": "6.26.0", +        "css-selector-tokenizer": "0.7.0", +        "cssnano": "3.10.0", +        "icss-utils": "2.1.0", +        "loader-utils": "1.1.0", +        "lodash.camelcase": "4.3.0", +        "object-assign": "4.1.1", +        "postcss": "5.2.18", +        "postcss-modules-extract-imports": "1.1.0", +        "postcss-modules-local-by-default": "1.2.0", +        "postcss-modules-scope": "1.1.0", +        "postcss-modules-values": "1.3.0", +        "postcss-value-parser": "3.3.0", +        "source-list-map": "2.0.0" +      } +    }, +    "css-selector-tokenizer": { +      "version": "0.7.0", +      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", +      "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", +      "requires": { +        "cssesc": "0.1.0", +        "fastparse": "1.1.1", +        "regexpu-core": "1.0.0" +      }, +      "dependencies": { +        "regexpu-core": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", +          "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", +          "requires": { +            "regenerate": "1.3.3", +            "regjsgen": "0.2.0", +            "regjsparser": "0.1.5" +          } +        } +      } +    }, +    "css-unit-converter": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", +      "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" +    }, +    "cssesc": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", +      "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" +    }, +    "cssnano": { +      "version": "3.10.0", +      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", +      "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", +      "requires": { +        "autoprefixer": "6.7.7", +        "decamelize": "1.2.0", +        "defined": "1.0.0", +        "has": "1.0.1", +        "object-assign": "4.1.1", +        "postcss": "5.2.18", +        "postcss-calc": "5.3.1", +        "postcss-colormin": "2.2.2", +        "postcss-convert-values": "2.6.1", +        "postcss-discard-comments": "2.0.4", +        "postcss-discard-duplicates": "2.1.0", +        "postcss-discard-empty": "2.1.0", +        "postcss-discard-overridden": "0.1.1", +        "postcss-discard-unused": "2.2.3", +        "postcss-filter-plugins": "2.0.2", +        "postcss-merge-idents": "2.1.7", +        "postcss-merge-longhand": "2.0.2", +        "postcss-merge-rules": "2.1.2", +        "postcss-minify-font-values": "1.0.5", +        "postcss-minify-gradients": "1.0.5", +        "postcss-minify-params": "1.2.2", +        "postcss-minify-selectors": "2.1.1", +        "postcss-normalize-charset": "1.1.1", +        "postcss-normalize-url": "3.0.8", +        "postcss-ordered-values": "2.2.3", +        "postcss-reduce-idents": "2.4.0", +        "postcss-reduce-initial": "1.0.1", +        "postcss-reduce-transforms": "1.0.4", +        "postcss-svgo": "2.1.6", +        "postcss-unique-selectors": "2.0.2", +        "postcss-value-parser": "3.3.0", +        "postcss-zindex": "2.2.0" +      } +    }, +    "csso": { +      "version": "2.3.2", +      "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", +      "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", +      "requires": { +        "clap": "1.2.3", +        "source-map": "0.5.7" +      } +    }, +    "cssom": { +      "version": "0.3.2", +      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", +      "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", +      "dev": true +    }, +    "cssstyle": { +      "version": "0.2.37", +      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", +      "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", +      "dev": true, +      "requires": { +        "cssom": "0.3.2" +      } +    }, +    "currently-unhandled": { +      "version": "0.4.1", +      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", +      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", +      "requires": { +        "array-find-index": "1.0.2" +      } +    }, +    "d": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", +      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", +      "requires": { +        "es5-ext": "0.10.37" +      } +    }, +    "dashdash": { +      "version": "1.14.1", +      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", +      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", +      "requires": { +        "assert-plus": "1.0.0" +      }, +      "dependencies": { +        "assert-plus": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" +        } +      } +    }, +    "date-now": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", +      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" +    }, +    "dateformat": { +      "version": "1.0.12", +      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", +      "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", +      "dev": true, +      "requires": { +        "get-stdin": "4.0.1", +        "meow": "3.7.0" +      } +    }, +    "debug": { +      "version": "2.6.9", +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", +      "requires": { +        "ms": "2.0.0" +      } +    }, +    "decamelize": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", +      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" +    }, +    "deep-diff": { +      "version": "0.3.4", +      "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.4.tgz", +      "integrity": "sha1-qsXDmVIjar5fA3ojSQYLoBsArkg=" +    }, +    "deep-equal": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", +      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", +      "dev": true +    }, +    "deep-is": { +      "version": "0.1.3", +      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", +      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", +      "dev": true +    }, +    "default-require-extensions": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", +      "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", +      "dev": true, +      "requires": { +        "strip-bom": "2.0.0" +      } +    }, +    "define-properties": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", +      "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", +      "dev": true, +      "requires": { +        "foreach": "2.0.5", +        "object-keys": "1.0.11" +      } +    }, +    "defined": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", +      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" +    }, +    "del": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", +      "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", +      "dev": true, +      "requires": { +        "globby": "6.1.0", +        "is-path-cwd": "1.0.0", +        "is-path-in-cwd": "1.0.0", +        "p-map": "1.2.0", +        "pify": "3.0.0", +        "rimraf": "2.6.2" +      } +    }, +    "delayed-stream": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", +      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" +    }, +    "delegates": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", +      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" +    }, +    "depd": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", +      "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", +      "dev": true +    }, +    "des.js": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", +      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", +      "requires": { +        "inherits": "2.0.3", +        "minimalistic-assert": "1.0.0" +      } +    }, +    "destroy": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", +      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", +      "dev": true +    }, +    "detect-indent": { +      "version": "4.0.0", +      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", +      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", +      "requires": { +        "repeating": "2.0.1" +      } +    }, +    "detect-node": { +      "version": "2.0.3", +      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", +      "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", +      "dev": true +    }, +    "diff": { +      "version": "3.4.0", +      "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", +      "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", +      "dev": true +    }, +    "diffie-hellman": { +      "version": "5.0.2", +      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", +      "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", +      "requires": { +        "bn.js": "4.11.8", +        "miller-rabin": "4.0.1", +        "randombytes": "2.0.5" +      } +    }, +    "dns-equal": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", +      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", +      "dev": true +    }, +    "dns-packet": { +      "version": "1.2.2", +      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", +      "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", +      "dev": true, +      "requires": { +        "ip": "1.1.5", +        "safe-buffer": "5.1.1" +      } +    }, +    "dns-txt": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", +      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", +      "dev": true, +      "requires": { +        "buffer-indexof": "1.1.1" +      } +    }, +    "domain-browser": { +      "version": "1.1.7", +      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", +      "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" +    }, +    "ecc-jsbn": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", +      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", +      "optional": true, +      "requires": { +        "jsbn": "0.1.1" +      } +    }, +    "ee-first": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", +      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", +      "dev": true +    }, +    "electron-to-chromium": { +      "version": "1.3.28", +      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz", +      "integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=" +    }, +    "elliptic": { +      "version": "6.4.0", +      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", +      "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", +      "requires": { +        "bn.js": "4.11.8", +        "brorand": "1.1.0", +        "hash.js": "1.1.3", +        "hmac-drbg": "1.0.1", +        "inherits": "2.0.3", +        "minimalistic-assert": "1.0.0", +        "minimalistic-crypto-utils": "1.0.1" +      } +    }, +    "emojis-list": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", +      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" +    }, +    "encodeurl": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", +      "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", +      "dev": true +    }, +    "encoding": { +      "version": "0.1.12", +      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", +      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", +      "requires": { +        "iconv-lite": "0.4.19" +      } +    }, +    "enhanced-resolve": { +      "version": "3.4.1", +      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", +      "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", +      "requires": { +        "graceful-fs": "4.1.11", +        "memory-fs": "0.4.1", +        "object-assign": "4.1.1", +        "tapable": "0.2.8" +      } +    }, +    "errno": { +      "version": "0.1.5", +      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.5.tgz", +      "integrity": "sha512-tv2H+e3KBnMmNRuoVG24uorOj3XfYo+/nJJd07PUISRr0kaMKQKL5kyD+6ANXk1ZIIsvbORsjvHnCfC4KIc7uQ==", +      "requires": { +        "prr": "1.0.1" +      } +    }, +    "error-ex": { +      "version": "1.3.1", +      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", +      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", +      "requires": { +        "is-arrayish": "0.2.1" +      } +    }, +    "es-abstract": { +      "version": "1.10.0", +      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", +      "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", +      "dev": true, +      "requires": { +        "es-to-primitive": "1.1.1", +        "function-bind": "1.1.1", +        "has": "1.0.1", +        "is-callable": "1.1.3", +        "is-regex": "1.0.4" +      } +    }, +    "es-to-primitive": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", +      "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", +      "dev": true, +      "requires": { +        "is-callable": "1.1.3", +        "is-date-object": "1.0.1", +        "is-symbol": "1.0.1" +      } +    }, +    "es5-ext": { +      "version": "0.10.37", +      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", +      "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", +      "requires": { +        "es6-iterator": "2.0.3", +        "es6-symbol": "3.1.1" +      } +    }, +    "es6-iterator": { +      "version": "2.0.3", +      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", +      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", +      "requires": { +        "d": "1.0.0", +        "es5-ext": "0.10.37", +        "es6-symbol": "3.1.1" +      } +    }, +    "es6-map": { +      "version": "0.1.5", +      "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", +      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", +      "requires": { +        "d": "1.0.0", +        "es5-ext": "0.10.37", +        "es6-iterator": "2.0.3", +        "es6-set": "0.1.5", +        "es6-symbol": "3.1.1", +        "event-emitter": "0.3.5" +      } +    }, +    "es6-object-assign": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.0.3.tgz", +      "integrity": "sha1-QKGS4P2l7kTujPb1tdm0fND2mxQ=", +      "dev": true +    }, +    "es6-set": { +      "version": "0.1.5", +      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", +      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", +      "requires": { +        "d": "1.0.0", +        "es5-ext": "0.10.37", +        "es6-iterator": "2.0.3", +        "es6-symbol": "3.1.1", +        "event-emitter": "0.3.5" +      } +    }, +    "es6-symbol": { +      "version": "3.1.1", +      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", +      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", +      "requires": { +        "d": "1.0.0", +        "es5-ext": "0.10.37" +      } +    }, +    "es6-weak-map": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", +      "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", +      "requires": { +        "d": "1.0.0", +        "es5-ext": "0.10.37", +        "es6-iterator": "2.0.3", +        "es6-symbol": "3.1.1" +      } +    }, +    "escape-html": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", +      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", +      "dev": true +    }, +    "escape-string-regexp": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", +      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" +    }, +    "escodegen": { +      "version": "1.9.0", +      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", +      "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", +      "dev": true, +      "requires": { +        "esprima": "3.1.3", +        "estraverse": "4.2.0", +        "esutils": "2.0.2", +        "optionator": "0.8.2", +        "source-map": "0.5.7" +      }, +      "dependencies": { +        "esprima": { +          "version": "3.1.3", +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", +          "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", +          "dev": true +        } +      } +    }, +    "escope": { +      "version": "3.6.0", +      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", +      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", +      "requires": { +        "es6-map": "0.1.5", +        "es6-weak-map": "2.0.2", +        "esrecurse": "4.2.0", +        "estraverse": "4.2.0" +      } +    }, +    "esprima": { +      "version": "2.7.3", +      "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", +      "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" +    }, +    "esrecurse": { +      "version": "4.2.0", +      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", +      "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", +      "requires": { +        "estraverse": "4.2.0", +        "object-assign": "4.1.1" +      } +    }, +    "estraverse": { +      "version": "4.2.0", +      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", +      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" +    }, +    "esutils": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", +      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" +    }, +    "etag": { +      "version": "1.8.1", +      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", +      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", +      "dev": true +    }, +    "event-emitter": { +      "version": "0.3.5", +      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", +      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", +      "requires": { +        "d": "1.0.0", +        "es5-ext": "0.10.37" +      } +    }, +    "eventemitter2": { +      "version": "0.4.14", +      "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", +      "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", +      "dev": true +    }, +    "eventemitter3": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", +      "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", +      "dev": true +    }, +    "events": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", +      "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" +    }, +    "eventsource": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", +      "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", +      "dev": true, +      "requires": { +        "original": "1.0.0" +      } +    }, +    "evp_bytestokey": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", +      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", +      "requires": { +        "md5.js": "1.3.4", +        "safe-buffer": "5.1.1" +      } +    }, +    "exec-sh": { +      "version": "0.2.1", +      "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", +      "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", +      "dev": true, +      "requires": { +        "merge": "1.2.0" +      } +    }, +    "execa": { +      "version": "0.7.0", +      "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", +      "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", +      "requires": { +        "cross-spawn": "5.1.0", +        "get-stream": "3.0.0", +        "is-stream": "1.1.0", +        "npm-run-path": "2.0.2", +        "p-finally": "1.0.0", +        "signal-exit": "3.0.2", +        "strip-eof": "1.0.0" +      }, +      "dependencies": { +        "cross-spawn": { +          "version": "5.1.0", +          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", +          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", +          "requires": { +            "lru-cache": "4.1.1", +            "shebang-command": "1.2.0", +            "which": "1.3.0" +          } +        } +      } +    }, +    "exit": { +      "version": "0.1.2", +      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", +      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", +      "dev": true +    }, +    "expand-brackets": { +      "version": "0.1.5", +      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", +      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", +      "requires": { +        "is-posix-bracket": "0.1.1" +      } +    }, +    "expand-range": { +      "version": "1.8.2", +      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", +      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", +      "requires": { +        "fill-range": "2.2.3" +      } +    }, +    "expect": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", +      "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", +      "dev": true, +      "requires": { +        "ansi-styles": "3.2.0", +        "jest-diff": "21.2.1", +        "jest-get-type": "21.2.0", +        "jest-matcher-utils": "21.2.1", +        "jest-message-util": "21.2.1", +        "jest-regex-util": "21.2.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        } +      } +    }, +    "express": { +      "version": "4.16.2", +      "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", +      "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", +      "dev": true, +      "requires": { +        "accepts": "1.3.4", +        "array-flatten": "1.1.1", +        "body-parser": "1.18.2", +        "content-disposition": "0.5.2", +        "content-type": "1.0.4", +        "cookie": "0.3.1", +        "cookie-signature": "1.0.6", +        "debug": "2.6.9", +        "depd": "1.1.1", +        "encodeurl": "1.0.1", +        "escape-html": "1.0.3", +        "etag": "1.8.1", +        "finalhandler": "1.1.0", +        "fresh": "0.5.2", +        "merge-descriptors": "1.0.1", +        "methods": "1.1.2", +        "on-finished": "2.3.0", +        "parseurl": "1.3.2", +        "path-to-regexp": "0.1.7", +        "proxy-addr": "2.0.2", +        "qs": "6.5.1", +        "range-parser": "1.2.0", +        "safe-buffer": "5.1.1", +        "send": "0.16.1", +        "serve-static": "1.13.1", +        "setprototypeof": "1.1.0", +        "statuses": "1.3.1", +        "type-is": "1.6.15", +        "utils-merge": "1.0.1", +        "vary": "1.1.2" +      }, +      "dependencies": { +        "array-flatten": { +          "version": "1.1.1", +          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", +          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", +          "dev": true +        }, +        "qs": { +          "version": "6.5.1", +          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", +          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", +          "dev": true +        } +      } +    }, +    "extend": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", +      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" +    }, +    "extglob": { +      "version": "0.3.2", +      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", +      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", +      "requires": { +        "is-extglob": "1.0.0" +      } +    }, +    "extract-text-webpack-plugin": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", +      "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", +      "requires": { +        "async": "2.4.1", +        "loader-utils": "1.1.0", +        "schema-utils": "0.3.0", +        "webpack-sources": "1.1.0" +      } +    }, +    "extsprintf": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", +      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" +    }, +    "fast-deep-equal": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", +      "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" +    }, +    "fast-json-stable-stringify": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", +      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" +    }, +    "fast-levenshtein": { +      "version": "2.0.6", +      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", +      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", +      "dev": true +    }, +    "fastparse": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", +      "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" +    }, +    "faye-websocket": { +      "version": "0.10.0", +      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", +      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", +      "dev": true, +      "requires": { +        "websocket-driver": "0.7.0" +      } +    }, +    "fb-watchman": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", +      "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", +      "dev": true, +      "requires": { +        "bser": "2.0.0" +      } +    }, +    "fbjs": { +      "version": "0.8.16", +      "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", +      "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", +      "requires": { +        "core-js": "1.2.7", +        "isomorphic-fetch": "2.2.1", +        "loose-envify": "1.3.1", +        "object-assign": "4.1.1", +        "promise": "7.3.1", +        "setimmediate": "1.0.5", +        "ua-parser-js": "0.7.17" +      }, +      "dependencies": { +        "core-js": { +          "version": "1.2.7", +          "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", +          "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" +        } +      } +    }, +    "file-loader": { +      "version": "0.11.2", +      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", +      "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", +      "requires": { +        "loader-utils": "1.1.0" +      } +    }, +    "filename-regex": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", +      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" +    }, +    "fileset": { +      "version": "2.0.3", +      "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", +      "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", +      "dev": true, +      "requires": { +        "glob": "7.1.2", +        "minimatch": "3.0.4" +      } +    }, +    "fill-range": { +      "version": "2.2.3", +      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", +      "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", +      "requires": { +        "is-number": "2.1.0", +        "isobject": "2.1.0", +        "randomatic": "1.1.7", +        "repeat-element": "1.1.2", +        "repeat-string": "1.6.1" +      }, +      "dependencies": { +        "isobject": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", +          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", +          "requires": { +            "isarray": "1.0.0" +          } +        } +      } +    }, +    "finalhandler": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", +      "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", +      "dev": true, +      "requires": { +        "debug": "2.6.9", +        "encodeurl": "1.0.1", +        "escape-html": "1.0.3", +        "on-finished": "2.3.0", +        "parseurl": "1.3.2", +        "statuses": "1.3.1", +        "unpipe": "1.0.0" +      } +    }, +    "find-cache-dir": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", +      "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", +      "requires": { +        "commondir": "1.0.1", +        "make-dir": "1.1.0", +        "pkg-dir": "2.0.0" +      } +    }, +    "find-up": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", +      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", +      "requires": { +        "locate-path": "2.0.0" +      } +    }, +    "findup-sync": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", +      "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", +      "dev": true, +      "requires": { +        "glob": "5.0.15" +      }, +      "dependencies": { +        "glob": { +          "version": "5.0.15", +          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", +          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", +          "dev": true, +          "requires": { +            "inflight": "1.0.6", +            "inherits": "2.0.3", +            "minimatch": "3.0.4", +            "once": "1.4.0", +            "path-is-absolute": "1.0.1" +          } +        } +      } +    }, +    "flatten": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", +      "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" +    }, +    "flux-standard-action": { +      "version": "0.6.1", +      "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.1.tgz", +      "integrity": "sha1-bzQhG5SDTqHDzDD056+tPQ+/caI=", +      "requires": { +        "lodash.isplainobject": "3.2.0" +      } +    }, +    "for-in": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", +      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" +    }, +    "for-own": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", +      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", +      "requires": { +        "for-in": "1.0.2" +      } +    }, +    "foreach": { +      "version": "2.0.5", +      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", +      "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", +      "dev": true +    }, +    "forever-agent": { +      "version": "0.6.1", +      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", +      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" +    }, +    "form-data": { +      "version": "2.1.4", +      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", +      "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", +      "requires": { +        "asynckit": "0.4.0", +        "combined-stream": "1.0.5", +        "mime-types": "2.1.17" +      } +    }, +    "formatio": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", +      "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", +      "dev": true, +      "requires": { +        "samsam": "1.1.2" +      } +    }, +    "forwarded": { +      "version": "0.1.2", +      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", +      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", +      "dev": true +    }, +    "fresh": { +      "version": "0.5.2", +      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", +      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", +      "dev": true +    }, +    "fs-extra": { +      "version": "0.30.0", +      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", +      "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", +      "requires": { +        "graceful-fs": "4.1.11", +        "jsonfile": "2.4.0", +        "klaw": "1.3.1", +        "path-is-absolute": "1.0.1", +        "rimraf": "2.6.2" +      } +    }, +    "fs.realpath": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", +      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" +    }, +    "fsevents": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", +      "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", +      "optional": true, +      "requires": { +        "nan": "2.8.0", +        "node-pre-gyp": "0.6.39" +      }, +      "dependencies": { +        "abbrev": { +          "version": "1.1.0", +          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", +          "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", +          "optional": true +        }, +        "ajv": { +          "version": "4.11.8", +          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", +          "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", +          "optional": true, +          "requires": { +            "co": "4.6.0", +            "json-stable-stringify": "1.0.1" +          } +        }, +        "ansi-regex": { +          "version": "2.1.1", +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", +          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" +        }, +        "aproba": { +          "version": "1.1.1", +          "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", +          "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", +          "optional": true +        }, +        "are-we-there-yet": { +          "version": "1.1.4", +          "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", +          "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", +          "optional": true, +          "requires": { +            "delegates": "1.0.0", +            "readable-stream": "2.2.9" +          } +        }, +        "asn1": { +          "version": "0.2.3", +          "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", +          "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", +          "optional": true +        }, +        "assert-plus": { +          "version": "0.2.0", +          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", +          "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", +          "optional": true +        }, +        "asynckit": { +          "version": "0.4.0", +          "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", +          "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", +          "optional": true +        }, +        "aws-sign2": { +          "version": "0.6.0", +          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", +          "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", +          "optional": true +        }, +        "aws4": { +          "version": "1.6.0", +          "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", +          "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", +          "optional": true +        }, +        "balanced-match": { +          "version": "0.4.2", +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" +        }, +        "bcrypt-pbkdf": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", +          "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", +          "optional": true, +          "requires": { +            "tweetnacl": "0.14.5" +          } +        }, +        "block-stream": { +          "version": "0.0.9", +          "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", +          "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", +          "requires": { +            "inherits": "2.0.3" +          } +        }, +        "boom": { +          "version": "2.10.1", +          "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", +          "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", +          "requires": { +            "hoek": "2.16.3" +          } +        }, +        "brace-expansion": { +          "version": "1.1.7", +          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", +          "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", +          "requires": { +            "balanced-match": "0.4.2", +            "concat-map": "0.0.1" +          } +        }, +        "buffer-shims": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", +          "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" +        }, +        "caseless": { +          "version": "0.12.0", +          "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", +          "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", +          "optional": true +        }, +        "co": { +          "version": "4.6.0", +          "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", +          "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", +          "optional": true +        }, +        "code-point-at": { +          "version": "1.1.0", +          "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", +          "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" +        }, +        "combined-stream": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", +          "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", +          "requires": { +            "delayed-stream": "1.0.0" +          } +        }, +        "concat-map": { +          "version": "0.0.1", +          "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", +          "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" +        }, +        "console-control-strings": { +          "version": "1.1.0", +          "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", +          "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" +        }, +        "core-util-is": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", +          "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" +        }, +        "cryptiles": { +          "version": "2.0.5", +          "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", +          "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", +          "requires": { +            "boom": "2.10.1" +          } +        }, +        "dashdash": { +          "version": "1.14.1", +          "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", +          "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", +          "optional": true, +          "requires": { +            "assert-plus": "1.0.0" +          }, +          "dependencies": { +            "assert-plus": { +              "version": "1.0.0", +              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "optional": true +            } +          } +        }, +        "debug": { +          "version": "2.6.8", +          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", +          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", +          "optional": true, +          "requires": { +            "ms": "2.0.0" +          } +        }, +        "deep-extend": { +          "version": "0.4.2", +          "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", +          "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", +          "optional": true +        }, +        "delayed-stream": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", +          "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" +        }, +        "delegates": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", +          "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", +          "optional": true +        }, +        "detect-libc": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", +          "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", +          "optional": true +        }, +        "ecc-jsbn": { +          "version": "0.1.1", +          "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", +          "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", +          "optional": true, +          "requires": { +            "jsbn": "0.1.1" +          } +        }, +        "extend": { +          "version": "3.0.1", +          "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", +          "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", +          "optional": true +        }, +        "extsprintf": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", +          "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" +        }, +        "forever-agent": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", +          "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", +          "optional": true +        }, +        "form-data": { +          "version": "2.1.4", +          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", +          "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", +          "optional": true, +          "requires": { +            "asynckit": "0.4.0", +            "combined-stream": "1.0.5", +            "mime-types": "2.1.15" +          } +        }, +        "fs.realpath": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", +          "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" +        }, +        "fstream": { +          "version": "1.0.11", +          "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", +          "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", +          "requires": { +            "graceful-fs": "4.1.11", +            "inherits": "2.0.3", +            "mkdirp": "0.5.1", +            "rimraf": "2.6.1" +          } +        }, +        "fstream-ignore": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", +          "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", +          "optional": true, +          "requires": { +            "fstream": "1.0.11", +            "inherits": "2.0.3", +            "minimatch": "3.0.4" +          } +        }, +        "gauge": { +          "version": "2.7.4", +          "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", +          "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", +          "optional": true, +          "requires": { +            "aproba": "1.1.1", +            "console-control-strings": "1.1.0", +            "has-unicode": "2.0.1", +            "object-assign": "4.1.1", +            "signal-exit": "3.0.2", +            "string-width": "1.0.2", +            "strip-ansi": "3.0.1", +            "wide-align": "1.1.2" +          } +        }, +        "getpass": { +          "version": "0.1.7", +          "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", +          "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", +          "optional": true, +          "requires": { +            "assert-plus": "1.0.0" +          }, +          "dependencies": { +            "assert-plus": { +              "version": "1.0.0", +              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "optional": true +            } +          } +        }, +        "glob": { +          "version": "7.1.2", +          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", +          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", +          "requires": { +            "fs.realpath": "1.0.0", +            "inflight": "1.0.6", +            "inherits": "2.0.3", +            "minimatch": "3.0.4", +            "once": "1.4.0", +            "path-is-absolute": "1.0.1" +          } +        }, +        "graceful-fs": { +          "version": "4.1.11", +          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", +          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" +        }, +        "har-schema": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", +          "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", +          "optional": true +        }, +        "har-validator": { +          "version": "4.2.1", +          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", +          "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", +          "optional": true, +          "requires": { +            "ajv": "4.11.8", +            "har-schema": "1.0.5" +          } +        }, +        "has-unicode": { +          "version": "2.0.1", +          "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", +          "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", +          "optional": true +        }, +        "hawk": { +          "version": "3.1.3", +          "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", +          "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", +          "requires": { +            "boom": "2.10.1", +            "cryptiles": "2.0.5", +            "hoek": "2.16.3", +            "sntp": "1.0.9" +          } +        }, +        "hoek": { +          "version": "2.16.3", +          "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", +          "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" +        }, +        "http-signature": { +          "version": "1.1.1", +          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", +          "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", +          "optional": true, +          "requires": { +            "assert-plus": "0.2.0", +            "jsprim": "1.4.0", +            "sshpk": "1.13.0" +          } +        }, +        "inflight": { +          "version": "1.0.6", +          "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", +          "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", +          "requires": { +            "once": "1.4.0", +            "wrappy": "1.0.2" +          } +        }, +        "inherits": { +          "version": "2.0.3", +          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", +          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" +        }, +        "ini": { +          "version": "1.3.4", +          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", +          "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", +          "optional": true +        }, +        "is-fullwidth-code-point": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", +          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", +          "requires": { +            "number-is-nan": "1.0.1" +          } +        }, +        "is-typedarray": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", +          "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", +          "optional": true +        }, +        "isarray": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", +          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" +        }, +        "isstream": { +          "version": "0.1.2", +          "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", +          "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", +          "optional": true +        }, +        "jodid25519": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", +          "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", +          "optional": true, +          "requires": { +            "jsbn": "0.1.1" +          } +        }, +        "jsbn": { +          "version": "0.1.1", +          "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", +          "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", +          "optional": true +        }, +        "json-schema": { +          "version": "0.2.3", +          "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", +          "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", +          "optional": true +        }, +        "json-stable-stringify": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", +          "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", +          "optional": true, +          "requires": { +            "jsonify": "0.0.0" +          } +        }, +        "json-stringify-safe": { +          "version": "5.0.1", +          "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", +          "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", +          "optional": true +        }, +        "jsonify": { +          "version": "0.0.0", +          "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", +          "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", +          "optional": true +        }, +        "jsprim": { +          "version": "1.4.0", +          "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", +          "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", +          "optional": true, +          "requires": { +            "assert-plus": "1.0.0", +            "extsprintf": "1.0.2", +            "json-schema": "0.2.3", +            "verror": "1.3.6" +          }, +          "dependencies": { +            "assert-plus": { +              "version": "1.0.0", +              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "optional": true +            } +          } +        }, +        "mime-db": { +          "version": "1.27.0", +          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", +          "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" +        }, +        "mime-types": { +          "version": "2.1.15", +          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", +          "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", +          "requires": { +            "mime-db": "1.27.0" +          } +        }, +        "minimatch": { +          "version": "3.0.4", +          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", +          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", +          "requires": { +            "brace-expansion": "1.1.7" +          } +        }, +        "minimist": { +          "version": "0.0.8", +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", +          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" +        }, +        "mkdirp": { +          "version": "0.5.1", +          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", +          "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", +          "requires": { +            "minimist": "0.0.8" +          } +        }, +        "ms": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", +          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", +          "optional": true +        }, +        "node-pre-gyp": { +          "version": "0.6.39", +          "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", +          "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", +          "optional": true, +          "requires": { +            "detect-libc": "1.0.2", +            "hawk": "3.1.3", +            "mkdirp": "0.5.1", +            "nopt": "4.0.1", +            "npmlog": "4.1.0", +            "rc": "1.2.1", +            "request": "2.81.0", +            "rimraf": "2.6.1", +            "semver": "5.3.0", +            "tar": "2.2.1", +            "tar-pack": "3.4.0" +          } +        }, +        "nopt": { +          "version": "4.0.1", +          "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", +          "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", +          "optional": true, +          "requires": { +            "abbrev": "1.1.0", +            "osenv": "0.1.4" +          } +        }, +        "npmlog": { +          "version": "4.1.0", +          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", +          "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", +          "optional": true, +          "requires": { +            "are-we-there-yet": "1.1.4", +            "console-control-strings": "1.1.0", +            "gauge": "2.7.4", +            "set-blocking": "2.0.0" +          } +        }, +        "number-is-nan": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", +          "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" +        }, +        "oauth-sign": { +          "version": "0.8.2", +          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", +          "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", +          "optional": true +        }, +        "object-assign": { +          "version": "4.1.1", +          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", +          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", +          "optional": true +        }, +        "once": { +          "version": "1.4.0", +          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", +          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", +          "requires": { +            "wrappy": "1.0.2" +          } +        }, +        "os-homedir": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", +          "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", +          "optional": true +        }, +        "os-tmpdir": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", +          "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", +          "optional": true +        }, +        "osenv": { +          "version": "0.1.4", +          "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", +          "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", +          "optional": true, +          "requires": { +            "os-homedir": "1.0.2", +            "os-tmpdir": "1.0.2" +          } +        }, +        "path-is-absolute": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", +          "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" +        }, +        "performance-now": { +          "version": "0.2.0", +          "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", +          "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", +          "optional": true +        }, +        "process-nextick-args": { +          "version": "1.0.7", +          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", +          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" +        }, +        "punycode": { +          "version": "1.4.1", +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", +          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", +          "optional": true +        }, +        "qs": { +          "version": "6.4.0", +          "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", +          "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", +          "optional": true +        }, +        "rc": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", +          "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", +          "optional": true, +          "requires": { +            "deep-extend": "0.4.2", +            "ini": "1.3.4", +            "minimist": "1.2.0", +            "strip-json-comments": "2.0.1" +          }, +          "dependencies": { +            "minimist": { +              "version": "1.2.0", +              "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", +              "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", +              "optional": true +            } +          } +        }, +        "readable-stream": { +          "version": "2.2.9", +          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", +          "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", +          "requires": { +            "buffer-shims": "1.0.0", +            "core-util-is": "1.0.2", +            "inherits": "2.0.3", +            "isarray": "1.0.0", +            "process-nextick-args": "1.0.7", +            "string_decoder": "1.0.1", +            "util-deprecate": "1.0.2" +          } +        }, +        "request": { +          "version": "2.81.0", +          "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", +          "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", +          "optional": true, +          "requires": { +            "aws-sign2": "0.6.0", +            "aws4": "1.6.0", +            "caseless": "0.12.0", +            "combined-stream": "1.0.5", +            "extend": "3.0.1", +            "forever-agent": "0.6.1", +            "form-data": "2.1.4", +            "har-validator": "4.2.1", +            "hawk": "3.1.3", +            "http-signature": "1.1.1", +            "is-typedarray": "1.0.0", +            "isstream": "0.1.2", +            "json-stringify-safe": "5.0.1", +            "mime-types": "2.1.15", +            "oauth-sign": "0.8.2", +            "performance-now": "0.2.0", +            "qs": "6.4.0", +            "safe-buffer": "5.0.1", +            "stringstream": "0.0.5", +            "tough-cookie": "2.3.2", +            "tunnel-agent": "0.6.0", +            "uuid": "3.0.1" +          } +        }, +        "rimraf": { +          "version": "2.6.1", +          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", +          "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", +          "requires": { +            "glob": "7.1.2" +          } +        }, +        "safe-buffer": { +          "version": "5.0.1", +          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", +          "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" +        }, +        "semver": { +          "version": "5.3.0", +          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", +          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", +          "optional": true +        }, +        "set-blocking": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", +          "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", +          "optional": true +        }, +        "signal-exit": { +          "version": "3.0.2", +          "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", +          "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", +          "optional": true +        }, +        "sntp": { +          "version": "1.0.9", +          "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", +          "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", +          "requires": { +            "hoek": "2.16.3" +          } +        }, +        "sshpk": { +          "version": "1.13.0", +          "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", +          "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", +          "optional": true, +          "requires": { +            "asn1": "0.2.3", +            "assert-plus": "1.0.0", +            "bcrypt-pbkdf": "1.0.1", +            "dashdash": "1.14.1", +            "ecc-jsbn": "0.1.1", +            "getpass": "0.1.7", +            "jodid25519": "1.0.2", +            "jsbn": "0.1.1", +            "tweetnacl": "0.14.5" +          }, +          "dependencies": { +            "assert-plus": { +              "version": "1.0.0", +              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "optional": true +            } +          } +        }, +        "string-width": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", +          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", +          "requires": { +            "code-point-at": "1.1.0", +            "is-fullwidth-code-point": "1.0.0", +            "strip-ansi": "3.0.1" +          } +        }, +        "string_decoder": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", +          "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", +          "requires": { +            "safe-buffer": "5.0.1" +          } +        }, +        "stringstream": { +          "version": "0.0.5", +          "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", +          "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", +          "optional": true +        }, +        "strip-ansi": { +          "version": "3.0.1", +          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", +          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", +          "requires": { +            "ansi-regex": "2.1.1" +          } +        }, +        "strip-json-comments": { +          "version": "2.0.1", +          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", +          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", +          "optional": true +        }, +        "tar": { +          "version": "2.2.1", +          "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", +          "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", +          "requires": { +            "block-stream": "0.0.9", +            "fstream": "1.0.11", +            "inherits": "2.0.3" +          } +        }, +        "tar-pack": { +          "version": "3.4.0", +          "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", +          "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", +          "optional": true, +          "requires": { +            "debug": "2.6.8", +            "fstream": "1.0.11", +            "fstream-ignore": "1.0.5", +            "once": "1.4.0", +            "readable-stream": "2.2.9", +            "rimraf": "2.6.1", +            "tar": "2.2.1", +            "uid-number": "0.0.6" +          } +        }, +        "tough-cookie": { +          "version": "2.3.2", +          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", +          "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", +          "optional": true, +          "requires": { +            "punycode": "1.4.1" +          } +        }, +        "tunnel-agent": { +          "version": "0.6.0", +          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", +          "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", +          "optional": true, +          "requires": { +            "safe-buffer": "5.0.1" +          } +        }, +        "tweetnacl": { +          "version": "0.14.5", +          "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", +          "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", +          "optional": true +        }, +        "uid-number": { +          "version": "0.0.6", +          "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", +          "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", +          "optional": true +        }, +        "util-deprecate": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", +          "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" +        }, +        "uuid": { +          "version": "3.0.1", +          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", +          "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", +          "optional": true +        }, +        "verror": { +          "version": "1.3.6", +          "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", +          "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", +          "optional": true, +          "requires": { +            "extsprintf": "1.0.2" +          } +        }, +        "wide-align": { +          "version": "1.1.2", +          "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", +          "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", +          "optional": true, +          "requires": { +            "string-width": "1.0.2" +          } +        }, +        "wrappy": { +          "version": "1.0.2", +          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", +          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" +        } +      } +    }, +    "fstream": { +      "version": "1.0.11", +      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", +      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", +      "requires": { +        "graceful-fs": "4.1.11", +        "inherits": "2.0.3", +        "mkdirp": "0.5.1", +        "rimraf": "2.6.2" +      } +    }, +    "function-bind": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", +      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" +    }, +    "gauge": { +      "version": "2.7.4", +      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", +      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", +      "requires": { +        "aproba": "1.2.0", +        "console-control-strings": "1.1.0", +        "has-unicode": "2.0.1", +        "object-assign": "4.1.1", +        "signal-exit": "3.0.2", +        "string-width": "1.0.2", +        "strip-ansi": "3.0.1", +        "wide-align": "1.1.2" +      } +    }, +    "gaze": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", +      "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", +      "requires": { +        "globule": "1.2.0" +      } +    }, +    "generate-function": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", +      "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" +    }, +    "generate-object-property": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", +      "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", +      "requires": { +        "is-property": "1.0.2" +      } +    }, +    "get-caller-file": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", +      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" +    }, +    "get-stdin": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", +      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" +    }, +    "get-stream": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", +      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" +    }, +    "getobject": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", +      "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", +      "dev": true +    }, +    "getpass": { +      "version": "0.1.7", +      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", +      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", +      "requires": { +        "assert-plus": "1.0.0" +      }, +      "dependencies": { +        "assert-plus": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" +        } +      } +    }, +    "glob": { +      "version": "7.1.2", +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", +      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", +      "requires": { +        "fs.realpath": "1.0.0", +        "inflight": "1.0.6", +        "inherits": "2.0.3", +        "minimatch": "3.0.4", +        "once": "1.4.0", +        "path-is-absolute": "1.0.1" +      } +    }, +    "glob-base": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", +      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", +      "requires": { +        "glob-parent": "2.0.0", +        "is-glob": "2.0.1" +      } +    }, +    "glob-parent": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", +      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", +      "requires": { +        "is-glob": "2.0.1" +      } +    }, +    "globals": { +      "version": "9.18.0", +      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", +      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" +    }, +    "globby": { +      "version": "6.1.0", +      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", +      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", +      "dev": true, +      "requires": { +        "array-union": "1.0.2", +        "glob": "7.1.2", +        "object-assign": "4.1.1", +        "pify": "2.3.0", +        "pinkie-promise": "2.0.1" +      }, +      "dependencies": { +        "pify": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", +          "dev": true +        } +      } +    }, +    "globule": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", +      "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", +      "requires": { +        "glob": "7.1.2", +        "lodash": "4.17.4", +        "minimatch": "3.0.4" +      } +    }, +    "gonzales-pe": { +      "version": "4.2.3", +      "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz", +      "integrity": "sha512-Kjhohco0esHQnOiqqdJeNz/5fyPkOMD/d6XVjwTAoPGUFh0mCollPUTUTa2OZy4dYNAqlPIQdTiNzJTWdd9Htw==", +      "requires": { +        "minimist": "1.1.3" +      }, +      "dependencies": { +        "minimist": { +          "version": "1.1.3", +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", +          "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=" +        } +      } +    }, +    "graceful-fs": { +      "version": "4.1.11", +      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", +      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" +    }, +    "growly": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", +      "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", +      "dev": true +    }, +    "grunt": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", +      "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", +      "dev": true, +      "requires": { +        "coffee-script": "1.10.0", +        "dateformat": "1.0.12", +        "eventemitter2": "0.4.14", +        "exit": "0.1.2", +        "findup-sync": "0.3.0", +        "glob": "7.0.6", +        "grunt-cli": "1.2.0", +        "grunt-known-options": "1.1.0", +        "grunt-legacy-log": "1.0.0", +        "grunt-legacy-util": "1.0.0", +        "iconv-lite": "0.4.19", +        "js-yaml": "3.5.5", +        "minimatch": "3.0.4", +        "nopt": "3.0.6", +        "path-is-absolute": "1.0.1", +        "rimraf": "2.2.8" +      }, +      "dependencies": { +        "coffee-script": { +          "version": "1.10.0", +          "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", +          "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", +          "dev": true +        }, +        "glob": { +          "version": "7.0.6", +          "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", +          "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", +          "dev": true, +          "requires": { +            "fs.realpath": "1.0.0", +            "inflight": "1.0.6", +            "inherits": "2.0.3", +            "minimatch": "3.0.4", +            "once": "1.4.0", +            "path-is-absolute": "1.0.1" +          } +        }, +        "grunt-cli": { +          "version": "1.2.0", +          "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", +          "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", +          "dev": true, +          "requires": { +            "findup-sync": "0.3.0", +            "grunt-known-options": "1.1.0", +            "nopt": "3.0.6", +            "resolve": "1.1.7" +          } +        }, +        "js-yaml": { +          "version": "3.5.5", +          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", +          "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", +          "dev": true, +          "requires": { +            "argparse": "1.0.9", +            "esprima": "2.7.3" +          } +        }, +        "resolve": { +          "version": "1.1.7", +          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", +          "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", +          "dev": true +        }, +        "rimraf": { +          "version": "2.2.8", +          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", +          "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", +          "dev": true +        } +      } +    }, +    "grunt-contrib-watch": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", +      "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=", +      "dev": true, +      "requires": { +        "async": "1.5.2", +        "gaze": "1.1.2", +        "lodash": "3.10.1", +        "tiny-lr": "0.2.1" +      }, +      "dependencies": { +        "async": { +          "version": "1.5.2", +          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", +          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", +          "dev": true +        }, +        "lodash": { +          "version": "3.10.1", +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", +          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", +          "dev": true +        } +      } +    }, +    "grunt-known-options": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", +      "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", +      "dev": true +    }, +    "grunt-legacy-log": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", +      "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", +      "dev": true, +      "requires": { +        "colors": "1.1.2", +        "grunt-legacy-log-utils": "1.0.0", +        "hooker": "0.2.3", +        "lodash": "3.10.1", +        "underscore.string": "3.2.3" +      }, +      "dependencies": { +        "lodash": { +          "version": "3.10.1", +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", +          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", +          "dev": true +        } +      } +    }, +    "grunt-legacy-log-utils": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", +      "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", +      "dev": true, +      "requires": { +        "chalk": "1.1.3", +        "lodash": "4.3.0" +      }, +      "dependencies": { +        "lodash": { +          "version": "4.3.0", +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", +          "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", +          "dev": true +        } +      } +    }, +    "grunt-legacy-util": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", +      "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", +      "dev": true, +      "requires": { +        "async": "1.5.2", +        "exit": "0.1.2", +        "getobject": "0.1.0", +        "hooker": "0.2.3", +        "lodash": "4.3.0", +        "underscore.string": "3.2.3", +        "which": "1.2.14" +      }, +      "dependencies": { +        "async": { +          "version": "1.5.2", +          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", +          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", +          "dev": true +        }, +        "lodash": { +          "version": "4.3.0", +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", +          "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", +          "dev": true +        }, +        "which": { +          "version": "1.2.14", +          "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", +          "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", +          "dev": true, +          "requires": { +            "isexe": "2.0.0" +          } +        } +      } +    }, +    "grunt-watch-change": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/grunt-watch-change/-/grunt-watch-change-0.1.1.tgz", +      "integrity": "sha1-+rEoHrZvRK7wKn8vEzWUTGwF7Ag=", +      "dev": true +    }, +    "handle-thing": { +      "version": "1.2.5", +      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", +      "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", +      "dev": true +    }, +    "handlebars": { +      "version": "4.0.11", +      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", +      "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", +      "dev": true, +      "requires": { +        "async": "1.5.2", +        "optimist": "0.6.1", +        "source-map": "0.4.4", +        "uglify-js": "2.8.29" +      }, +      "dependencies": { +        "async": { +          "version": "1.5.2", +          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", +          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", +          "dev": true +        }, +        "camelcase": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", +          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", +          "dev": true, +          "optional": true +        }, +        "cliui": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", +          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", +          "dev": true, +          "optional": true, +          "requires": { +            "center-align": "0.1.3", +            "right-align": "0.1.3", +            "wordwrap": "0.0.2" +          } +        }, +        "source-map": { +          "version": "0.4.4", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", +          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", +          "dev": true, +          "requires": { +            "amdefine": "1.0.1" +          } +        }, +        "uglify-js": { +          "version": "2.8.29", +          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", +          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", +          "dev": true, +          "optional": true, +          "requires": { +            "source-map": "0.5.7", +            "uglify-to-browserify": "1.0.2", +            "yargs": "3.10.0" +          }, +          "dependencies": { +            "source-map": { +              "version": "0.5.7", +              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", +              "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", +              "dev": true, +              "optional": true +            } +          } +        }, +        "yargs": { +          "version": "3.10.0", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", +          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", +          "dev": true, +          "optional": true, +          "requires": { +            "camelcase": "1.2.1", +            "cliui": "2.1.0", +            "decamelize": "1.2.0", +            "window-size": "0.1.0" +          } +        } +      } +    }, +    "har-validator": { +      "version": "2.0.6", +      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", +      "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", +      "requires": { +        "chalk": "1.1.3", +        "commander": "2.12.2", +        "is-my-json-valid": "2.16.1", +        "pinkie-promise": "2.0.1" +      } +    }, +    "has": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", +      "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", +      "requires": { +        "function-bind": "1.1.1" +      } +    }, +    "has-ansi": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", +      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", +      "requires": { +        "ansi-regex": "2.1.1" +      } +    }, +    "has-flag": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", +      "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" +    }, +    "has-unicode": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", +      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" +    }, +    "hash-base": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", +      "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", +      "requires": { +        "inherits": "2.0.3" +      } +    }, +    "hash.js": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", +      "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", +      "requires": { +        "inherits": "2.0.3", +        "minimalistic-assert": "1.0.0" +      } +    }, +    "hawk": { +      "version": "3.1.3", +      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", +      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", +      "requires": { +        "boom": "2.10.1", +        "cryptiles": "2.0.5", +        "hoek": "2.16.3", +        "sntp": "1.0.9" +      } +    }, +    "hmac-drbg": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", +      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", +      "requires": { +        "hash.js": "1.1.3", +        "minimalistic-assert": "1.0.0", +        "minimalistic-crypto-utils": "1.0.1" +      } +    }, +    "hoek": { +      "version": "2.16.3", +      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", +      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" +    }, +    "hoist-non-react-statics": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", +      "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" +    }, +    "home-or-tmp": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", +      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", +      "requires": { +        "os-homedir": "1.0.2", +        "os-tmpdir": "1.0.2" +      } +    }, +    "hooker": { +      "version": "0.2.3", +      "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", +      "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", +      "dev": true +    }, +    "hosted-git-info": { +      "version": "2.5.0", +      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", +      "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" +    }, +    "hpack.js": { +      "version": "2.1.6", +      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", +      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", +      "dev": true, +      "requires": { +        "inherits": "2.0.3", +        "obuf": "1.1.1", +        "readable-stream": "2.3.3", +        "wbuf": "1.7.2" +      } +    }, +    "html-comment-regex": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", +      "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" +    }, +    "html-encoding-sniffer": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", +      "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", +      "dev": true, +      "requires": { +        "whatwg-encoding": "1.0.3" +      } +    }, +    "html-entities": { +      "version": "1.2.1", +      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", +      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", +      "dev": true +    }, +    "http-deceiver": { +      "version": "1.2.7", +      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", +      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", +      "dev": true +    }, +    "http-errors": { +      "version": "1.6.2", +      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", +      "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", +      "dev": true, +      "requires": { +        "depd": "1.1.1", +        "inherits": "2.0.3", +        "setprototypeof": "1.0.3", +        "statuses": "1.3.1" +      }, +      "dependencies": { +        "setprototypeof": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", +          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", +          "dev": true +        } +      } +    }, +    "http-parser-js": { +      "version": "0.4.9", +      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", +      "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", +      "dev": true +    }, +    "http-proxy": { +      "version": "1.16.2", +      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", +      "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", +      "dev": true, +      "requires": { +        "eventemitter3": "1.2.0", +        "requires-port": "1.0.0" +      } +    }, +    "http-proxy-middleware": { +      "version": "0.17.4", +      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", +      "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", +      "dev": true, +      "requires": { +        "http-proxy": "1.16.2", +        "is-glob": "3.1.0", +        "lodash": "4.17.4", +        "micromatch": "2.3.11" +      }, +      "dependencies": { +        "is-extglob": { +          "version": "2.1.1", +          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", +          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", +          "dev": true +        }, +        "is-glob": { +          "version": "3.1.0", +          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", +          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", +          "dev": true, +          "requires": { +            "is-extglob": "2.1.1" +          } +        } +      } +    }, +    "http-signature": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", +      "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", +      "requires": { +        "assert-plus": "0.2.0", +        "jsprim": "1.4.1", +        "sshpk": "1.13.1" +      } +    }, +    "https-browserify": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", +      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" +    }, +    "iconv-lite": { +      "version": "0.4.19", +      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", +      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" +    }, +    "icss-replace-symbols": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", +      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" +    }, +    "icss-utils": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", +      "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "ieee754": { +      "version": "1.1.8", +      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", +      "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" +    }, +    "imurmurhash": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", +      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", +      "dev": true +    }, +    "in-publish": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", +      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" +    }, +    "indent-string": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", +      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", +      "requires": { +        "repeating": "2.0.1" +      } +    }, +    "indexes-of": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", +      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" +    }, +    "indexof": { +      "version": "0.0.1", +      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", +      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" +    }, +    "inflight": { +      "version": "1.0.6", +      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", +      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", +      "requires": { +        "once": "1.4.0", +        "wrappy": "1.0.2" +      } +    }, +    "inherits": { +      "version": "2.0.3", +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", +      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" +    }, +    "internal-ip": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", +      "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", +      "dev": true, +      "requires": { +        "meow": "3.7.0" +      } +    }, +    "interpret": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", +      "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" +    }, +    "invariant": { +      "version": "2.2.2", +      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", +      "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", +      "requires": { +        "loose-envify": "1.3.1" +      } +    }, +    "invert-kv": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", +      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" +    }, +    "ip": { +      "version": "1.1.5", +      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", +      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", +      "dev": true +    }, +    "ipaddr.js": { +      "version": "1.5.2", +      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", +      "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", +      "dev": true +    }, +    "is-absolute-url": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", +      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" +    }, +    "is-arrayish": { +      "version": "0.2.1", +      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", +      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" +    }, +    "is-binary-path": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", +      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", +      "requires": { +        "binary-extensions": "1.11.0" +      } +    }, +    "is-buffer": { +      "version": "1.1.6", +      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", +      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" +    }, +    "is-builtin-module": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", +      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", +      "requires": { +        "builtin-modules": "1.1.1" +      } +    }, +    "is-callable": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", +      "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", +      "dev": true +    }, +    "is-ci": { +      "version": "1.0.10", +      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", +      "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", +      "dev": true, +      "requires": { +        "ci-info": "1.1.2" +      } +    }, +    "is-date-object": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", +      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", +      "dev": true +    }, +    "is-directory": { +      "version": "0.3.1", +      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", +      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" +    }, +    "is-dotfile": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", +      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" +    }, +    "is-equal-shallow": { +      "version": "0.1.3", +      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", +      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", +      "requires": { +        "is-primitive": "2.0.0" +      } +    }, +    "is-extendable": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", +      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" +    }, +    "is-extglob": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", +      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" +    }, +    "is-finite": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", +      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", +      "requires": { +        "number-is-nan": "1.0.1" +      } +    }, +    "is-fullwidth-code-point": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", +      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", +      "requires": { +        "number-is-nan": "1.0.1" +      } +    }, +    "is-glob": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", +      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", +      "requires": { +        "is-extglob": "1.0.0" +      } +    }, +    "is-my-json-valid": { +      "version": "2.16.1", +      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", +      "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", +      "requires": { +        "generate-function": "2.0.0", +        "generate-object-property": "1.2.0", +        "jsonpointer": "4.0.1", +        "xtend": "4.0.1" +      } +    }, +    "is-number": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", +      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", +      "requires": { +        "kind-of": "3.2.2" +      } +    }, +    "is-path-cwd": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", +      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", +      "dev": true +    }, +    "is-path-in-cwd": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", +      "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", +      "dev": true, +      "requires": { +        "is-path-inside": "1.0.1" +      } +    }, +    "is-path-inside": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", +      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", +      "dev": true, +      "requires": { +        "path-is-inside": "1.0.2" +      } +    }, +    "is-plain-obj": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", +      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" +    }, +    "is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "requires": { +        "isobject": "3.0.1" +      } +    }, +    "is-posix-bracket": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", +      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" +    }, +    "is-primitive": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", +      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" +    }, +    "is-property": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", +      "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" +    }, +    "is-regex": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", +      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", +      "dev": true, +      "requires": { +        "has": "1.0.1" +      } +    }, +    "is-stream": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", +      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" +    }, +    "is-svg": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", +      "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", +      "requires": { +        "html-comment-regex": "1.1.1" +      } +    }, +    "is-symbol": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", +      "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", +      "dev": true +    }, +    "is-typedarray": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", +      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" +    }, +    "is-utf8": { +      "version": "0.2.1", +      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", +      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" +    }, +    "is-wsl": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", +      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", +      "dev": true +    }, +    "isarray": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", +      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" +    }, +    "isexe": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", +      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" +    }, +    "isnumeric": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz", +      "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=" +    }, +    "isobject": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", +      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" +    }, +    "isomorphic-fetch": { +      "version": "2.2.1", +      "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", +      "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", +      "requires": { +        "node-fetch": "1.7.3", +        "whatwg-fetch": "2.0.3" +      } +    }, +    "isstream": { +      "version": "0.1.2", +      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", +      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" +    }, +    "istanbul-api": { +      "version": "1.2.1", +      "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", +      "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", +      "dev": true, +      "requires": { +        "async": "2.4.1", +        "fileset": "2.0.3", +        "istanbul-lib-coverage": "1.1.1", +        "istanbul-lib-hook": "1.1.0", +        "istanbul-lib-instrument": "1.9.1", +        "istanbul-lib-report": "1.1.2", +        "istanbul-lib-source-maps": "1.2.2", +        "istanbul-reports": "1.1.3", +        "js-yaml": "3.10.0", +        "mkdirp": "0.5.1", +        "once": "1.4.0" +      } +    }, +    "istanbul-lib-coverage": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", +      "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==" +    }, +    "istanbul-lib-hook": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", +      "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", +      "dev": true, +      "requires": { +        "append-transform": "0.4.0" +      } +    }, +    "istanbul-lib-instrument": { +      "version": "1.9.1", +      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", +      "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", +      "requires": { +        "babel-generator": "6.26.0", +        "babel-template": "6.26.0", +        "babel-traverse": "6.26.0", +        "babel-types": "6.26.0", +        "babylon": "6.18.0", +        "istanbul-lib-coverage": "1.1.1", +        "semver": "5.4.1" +      } +    }, +    "istanbul-lib-report": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", +      "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", +      "dev": true, +      "requires": { +        "istanbul-lib-coverage": "1.1.1", +        "mkdirp": "0.5.1", +        "path-parse": "1.0.5", +        "supports-color": "3.2.3" +      }, +      "dependencies": { +        "supports-color": { +          "version": "3.2.3", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", +          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", +          "dev": true, +          "requires": { +            "has-flag": "1.0.0" +          } +        } +      } +    }, +    "istanbul-lib-source-maps": { +      "version": "1.2.2", +      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", +      "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", +      "dev": true, +      "requires": { +        "debug": "3.1.0", +        "istanbul-lib-coverage": "1.1.1", +        "mkdirp": "0.5.1", +        "rimraf": "2.6.2", +        "source-map": "0.5.7" +      }, +      "dependencies": { +        "debug": { +          "version": "3.1.0", +          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", +          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", +          "dev": true, +          "requires": { +            "ms": "2.0.0" +          } +        } +      } +    }, +    "istanbul-reports": { +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", +      "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", +      "dev": true, +      "requires": { +        "handlebars": "4.0.11" +      } +    }, +    "jest": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", +      "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", +      "dev": true, +      "requires": { +        "jest-cli": "21.2.1" +      }, +      "dependencies": { +        "ansi-regex": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", +          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", +          "dev": true +        }, +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "camelcase": { +          "version": "4.1.0", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", +          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", +          "dev": true +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "is-fullwidth-code-point": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", +          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", +          "dev": true +        }, +        "jest-cli": { +          "version": "21.2.1", +          "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", +          "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", +          "dev": true, +          "requires": { +            "ansi-escapes": "3.0.0", +            "chalk": "2.3.0", +            "glob": "7.1.2", +            "graceful-fs": "4.1.11", +            "is-ci": "1.0.10", +            "istanbul-api": "1.2.1", +            "istanbul-lib-coverage": "1.1.1", +            "istanbul-lib-instrument": "1.9.1", +            "istanbul-lib-source-maps": "1.2.2", +            "jest-changed-files": "21.2.0", +            "jest-config": "21.2.1", +            "jest-environment-jsdom": "21.2.1", +            "jest-haste-map": "21.2.0", +            "jest-message-util": "21.2.1", +            "jest-regex-util": "21.2.0", +            "jest-resolve-dependencies": "21.2.0", +            "jest-runner": "21.2.1", +            "jest-runtime": "21.2.1", +            "jest-snapshot": "21.2.1", +            "jest-util": "21.2.1", +            "micromatch": "2.3.11", +            "node-notifier": "5.1.2", +            "pify": "3.0.0", +            "slash": "1.0.0", +            "string-length": "2.0.0", +            "strip-ansi": "4.0.0", +            "which": "1.3.0", +            "worker-farm": "1.5.2", +            "yargs": "9.0.1" +          } +        }, +        "load-json-file": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", +          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", +          "dev": true, +          "requires": { +            "graceful-fs": "4.1.11", +            "parse-json": "2.2.0", +            "pify": "2.3.0", +            "strip-bom": "3.0.0" +          }, +          "dependencies": { +            "pify": { +              "version": "2.3.0", +              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", +              "dev": true +            } +          } +        }, +        "os-locale": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", +          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", +          "dev": true, +          "requires": { +            "execa": "0.7.0", +            "lcid": "1.0.0", +            "mem": "1.1.0" +          } +        }, +        "path-type": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", +          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", +          "dev": true, +          "requires": { +            "pify": "2.3.0" +          }, +          "dependencies": { +            "pify": { +              "version": "2.3.0", +              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", +              "dev": true +            } +          } +        }, +        "read-pkg": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", +          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", +          "dev": true, +          "requires": { +            "load-json-file": "2.0.0", +            "normalize-package-data": "2.4.0", +            "path-type": "2.0.0" +          } +        }, +        "read-pkg-up": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", +          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", +          "dev": true, +          "requires": { +            "find-up": "2.1.0", +            "read-pkg": "2.0.0" +          } +        }, +        "string-width": { +          "version": "2.1.1", +          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", +          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", +          "dev": true, +          "requires": { +            "is-fullwidth-code-point": "2.0.0", +            "strip-ansi": "4.0.0" +          } +        }, +        "strip-ansi": { +          "version": "4.0.0", +          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", +          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", +          "dev": true, +          "requires": { +            "ansi-regex": "3.0.0" +          } +        }, +        "strip-bom": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", +          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        }, +        "which-module": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", +          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", +          "dev": true +        }, +        "yargs": { +          "version": "9.0.1", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", +          "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", +          "dev": true, +          "requires": { +            "camelcase": "4.1.0", +            "cliui": "3.2.0", +            "decamelize": "1.2.0", +            "get-caller-file": "1.0.2", +            "os-locale": "2.1.0", +            "read-pkg-up": "2.0.0", +            "require-directory": "2.1.1", +            "require-main-filename": "1.0.1", +            "set-blocking": "2.0.0", +            "string-width": "2.1.1", +            "which-module": "2.0.0", +            "y18n": "3.2.1", +            "yargs-parser": "7.0.0" +          } +        }, +        "yargs-parser": { +          "version": "7.0.0", +          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", +          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", +          "dev": true, +          "requires": { +            "camelcase": "4.1.0" +          } +        } +      } +    }, +    "jest-changed-files": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", +      "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", +      "dev": true, +      "requires": { +        "throat": "4.1.0" +      } +    }, +    "jest-config": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", +      "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "glob": "7.1.2", +        "jest-environment-jsdom": "21.2.1", +        "jest-environment-node": "21.2.1", +        "jest-get-type": "21.2.0", +        "jest-jasmine2": "21.2.1", +        "jest-regex-util": "21.2.0", +        "jest-resolve": "21.2.0", +        "jest-util": "21.2.1", +        "jest-validate": "21.2.1", +        "pretty-format": "21.2.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-context": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/jest-context/-/jest-context-2.1.0.tgz", +      "integrity": "sha512-86TlB/2xgZFAHtHCLUloGWqraFx9IZtBbRR0A2382LDEZBppQZSAc+20AQCXop9OF0fUta1Lyr/b+yOIyDsI0Q==", +      "dev": true +    }, +    "jest-diff": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", +      "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "diff": "3.4.0", +        "jest-get-type": "21.2.0", +        "pretty-format": "21.2.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-docblock": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", +      "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", +      "dev": true +    }, +    "jest-environment-jsdom": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", +      "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", +      "dev": true, +      "requires": { +        "jest-mock": "21.2.0", +        "jest-util": "21.2.1", +        "jsdom": "9.12.0" +      } +    }, +    "jest-environment-node": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", +      "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", +      "dev": true, +      "requires": { +        "jest-mock": "21.2.0", +        "jest-util": "21.2.1" +      } +    }, +    "jest-get-type": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", +      "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", +      "dev": true +    }, +    "jest-haste-map": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", +      "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", +      "dev": true, +      "requires": { +        "fb-watchman": "2.0.0", +        "graceful-fs": "4.1.11", +        "jest-docblock": "21.2.0", +        "micromatch": "2.3.11", +        "sane": "2.2.0", +        "worker-farm": "1.5.2" +      } +    }, +    "jest-jasmine2": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", +      "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "expect": "21.2.1", +        "graceful-fs": "4.1.11", +        "jest-diff": "21.2.1", +        "jest-matcher-utils": "21.2.1", +        "jest-message-util": "21.2.1", +        "jest-snapshot": "21.2.1", +        "p-cancelable": "0.3.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-matcher-utils": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", +      "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "jest-get-type": "21.2.0", +        "pretty-format": "21.2.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-message-util": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", +      "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "micromatch": "2.3.11", +        "slash": "1.0.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-mock": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", +      "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", +      "dev": true +    }, +    "jest-regex-util": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", +      "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", +      "dev": true +    }, +    "jest-resolve": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", +      "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", +      "dev": true, +      "requires": { +        "browser-resolve": "1.11.2", +        "chalk": "2.3.0", +        "is-builtin-module": "1.0.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-resolve-dependencies": { +      "version": "21.2.0", +      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", +      "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", +      "dev": true, +      "requires": { +        "jest-regex-util": "21.2.0" +      } +    }, +    "jest-runner": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", +      "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", +      "dev": true, +      "requires": { +        "jest-config": "21.2.1", +        "jest-docblock": "21.2.0", +        "jest-haste-map": "21.2.0", +        "jest-jasmine2": "21.2.1", +        "jest-message-util": "21.2.1", +        "jest-runtime": "21.2.1", +        "jest-util": "21.2.1", +        "pify": "3.0.0", +        "throat": "4.1.0", +        "worker-farm": "1.5.2" +      } +    }, +    "jest-runtime": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", +      "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", +      "dev": true, +      "requires": { +        "babel-core": "6.26.0", +        "babel-jest": "21.2.0", +        "babel-plugin-istanbul": "4.1.5", +        "chalk": "2.3.0", +        "convert-source-map": "1.5.1", +        "graceful-fs": "4.1.11", +        "jest-config": "21.2.1", +        "jest-haste-map": "21.2.0", +        "jest-regex-util": "21.2.0", +        "jest-resolve": "21.2.0", +        "jest-util": "21.2.1", +        "json-stable-stringify": "1.0.1", +        "micromatch": "2.3.11", +        "slash": "1.0.0", +        "strip-bom": "3.0.0", +        "write-file-atomic": "2.3.0", +        "yargs": "9.0.1" +      }, +      "dependencies": { +        "ansi-regex": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", +          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", +          "dev": true +        }, +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "camelcase": { +          "version": "4.1.0", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", +          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", +          "dev": true +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "is-fullwidth-code-point": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", +          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", +          "dev": true +        }, +        "load-json-file": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", +          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", +          "dev": true, +          "requires": { +            "graceful-fs": "4.1.11", +            "parse-json": "2.2.0", +            "pify": "2.3.0", +            "strip-bom": "3.0.0" +          } +        }, +        "os-locale": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", +          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", +          "dev": true, +          "requires": { +            "execa": "0.7.0", +            "lcid": "1.0.0", +            "mem": "1.1.0" +          } +        }, +        "path-type": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", +          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", +          "dev": true, +          "requires": { +            "pify": "2.3.0" +          } +        }, +        "pify": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", +          "dev": true +        }, +        "read-pkg": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", +          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", +          "dev": true, +          "requires": { +            "load-json-file": "2.0.0", +            "normalize-package-data": "2.4.0", +            "path-type": "2.0.0" +          } +        }, +        "read-pkg-up": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", +          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", +          "dev": true, +          "requires": { +            "find-up": "2.1.0", +            "read-pkg": "2.0.0" +          } +        }, +        "string-width": { +          "version": "2.1.1", +          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", +          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", +          "dev": true, +          "requires": { +            "is-fullwidth-code-point": "2.0.0", +            "strip-ansi": "4.0.0" +          } +        }, +        "strip-ansi": { +          "version": "4.0.0", +          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", +          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", +          "dev": true, +          "requires": { +            "ansi-regex": "3.0.0" +          } +        }, +        "strip-bom": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", +          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        }, +        "which-module": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", +          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", +          "dev": true +        }, +        "yargs": { +          "version": "9.0.1", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", +          "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", +          "dev": true, +          "requires": { +            "camelcase": "4.1.0", +            "cliui": "3.2.0", +            "decamelize": "1.2.0", +            "get-caller-file": "1.0.2", +            "os-locale": "2.1.0", +            "read-pkg-up": "2.0.0", +            "require-directory": "2.1.1", +            "require-main-filename": "1.0.1", +            "set-blocking": "2.0.0", +            "string-width": "2.1.1", +            "which-module": "2.0.0", +            "y18n": "3.2.1", +            "yargs-parser": "7.0.0" +          } +        }, +        "yargs-parser": { +          "version": "7.0.0", +          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", +          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", +          "dev": true, +          "requires": { +            "camelcase": "4.1.0" +          } +        } +      } +    }, +    "jest-set": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/jest-set/-/jest-set-2.0.0.tgz", +      "integrity": "sha512-xbkgBhzLueM0y5loQa9swFA3Gg6DxyHa9qxyNNE7E7ICLeFbI4vl3ykoZuN4HCY5w6c4LA+wzmNCLf9N+yH2Sg==", +      "dev": true +    }, +    "jest-snapshot": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", +      "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "jest-diff": "21.2.1", +        "jest-matcher-utils": "21.2.1", +        "mkdirp": "0.5.1", +        "natural-compare": "1.4.0", +        "pretty-format": "21.2.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-util": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", +      "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", +      "dev": true, +      "requires": { +        "callsites": "2.0.0", +        "chalk": "2.3.0", +        "graceful-fs": "4.1.11", +        "jest-message-util": "21.2.1", +        "jest-mock": "21.2.0", +        "jest-validate": "21.2.1", +        "mkdirp": "0.5.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jest-validate": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", +      "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "jest-get-type": "21.2.0", +        "leven": "2.1.0", +        "pretty-format": "21.2.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "jquery": { +      "version": "3.2.1", +      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", +      "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" +    }, +    "jquery-mousewheel": { +      "version": "3.1.13", +      "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", +      "integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" +    }, +    "js-base64": { +      "version": "2.4.0", +      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", +      "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==" +    }, +    "js-tokens": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", +      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" +    }, +    "js-yaml": { +      "version": "3.10.0", +      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", +      "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", +      "requires": { +        "argparse": "1.0.9", +        "esprima": "4.0.0" +      }, +      "dependencies": { +        "esprima": { +          "version": "4.0.0", +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", +          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" +        } +      } +    }, +    "jsbn": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", +      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", +      "optional": true +    }, +    "jsdom": { +      "version": "9.12.0", +      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", +      "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", +      "dev": true, +      "requires": { +        "abab": "1.0.4", +        "acorn": "4.0.13", +        "acorn-globals": "3.1.0", +        "array-equal": "1.0.0", +        "content-type-parser": "1.0.2", +        "cssom": "0.3.2", +        "cssstyle": "0.2.37", +        "escodegen": "1.9.0", +        "html-encoding-sniffer": "1.0.2", +        "nwmatcher": "1.4.3", +        "parse5": "1.5.1", +        "request": "2.79.0", +        "sax": "1.2.4", +        "symbol-tree": "3.2.2", +        "tough-cookie": "2.3.3", +        "webidl-conversions": "4.0.2", +        "whatwg-encoding": "1.0.3", +        "whatwg-url": "4.8.0", +        "xml-name-validator": "2.0.1" +      }, +      "dependencies": { +        "acorn": { +          "version": "4.0.13", +          "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", +          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", +          "dev": true +        } +      } +    }, +    "jsesc": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", +      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" +    }, +    "json-loader": { +      "version": "0.5.7", +      "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", +      "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" +    }, +    "json-schema": { +      "version": "0.2.3", +      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", +      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" +    }, +    "json-schema-traverse": { +      "version": "0.3.1", +      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", +      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" +    }, +    "json-stable-stringify": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", +      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", +      "dev": true, +      "requires": { +        "jsonify": "0.0.0" +      } +    }, +    "json-stringify-safe": { +      "version": "5.0.1", +      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", +      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" +    }, +    "json3": { +      "version": "3.3.2", +      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", +      "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", +      "dev": true +    }, +    "json5": { +      "version": "0.5.1", +      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", +      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" +    }, +    "jsonfile": { +      "version": "2.4.0", +      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", +      "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", +      "requires": { +        "graceful-fs": "4.1.11" +      } +    }, +    "jsonify": { +      "version": "0.0.0", +      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", +      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", +      "dev": true +    }, +    "jsonpointer": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", +      "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" +    }, +    "jsprim": { +      "version": "1.4.1", +      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", +      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", +      "requires": { +        "assert-plus": "1.0.0", +        "extsprintf": "1.3.0", +        "json-schema": "0.2.3", +        "verror": "1.10.0" +      }, +      "dependencies": { +        "assert-plus": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" +        } +      } +    }, +    "kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +      "requires": { +        "is-buffer": "1.1.6" +      } +    }, +    "klaw": { +      "version": "1.3.1", +      "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", +      "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", +      "requires": { +        "graceful-fs": "4.1.11" +      } +    }, +    "lazy-cache": { +      "version": "0.2.7", +      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", +      "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" +    }, +    "lcid": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", +      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", +      "requires": { +        "invert-kv": "1.0.0" +      } +    }, +    "leven": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", +      "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", +      "dev": true +    }, +    "levn": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", +      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", +      "dev": true, +      "requires": { +        "prelude-ls": "1.1.2", +        "type-check": "0.3.2" +      } +    }, +    "livereload-js": { +      "version": "2.2.2", +      "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", +      "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=", +      "dev": true +    }, +    "load-json-file": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", +      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", +      "requires": { +        "graceful-fs": "4.1.11", +        "parse-json": "2.2.0", +        "pify": "2.3.0", +        "pinkie-promise": "2.0.1", +        "strip-bom": "2.0.0" +      }, +      "dependencies": { +        "pify": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" +        } +      } +    }, +    "loader-runner": { +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", +      "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" +    }, +    "loader-utils": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", +      "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", +      "requires": { +        "big.js": "3.2.0", +        "emojis-list": "2.1.0", +        "json5": "0.5.1" +      } +    }, +    "locate-path": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", +      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", +      "requires": { +        "p-locate": "2.0.0", +        "path-exists": "3.0.0" +      } +    }, +    "lodash": { +      "version": "4.17.4", +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", +      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" +    }, +    "lodash-es": { +      "version": "4.17.4", +      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", +      "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" +    }, +    "lodash._baseassign": { +      "version": "3.2.0", +      "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", +      "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", +      "requires": { +        "lodash._basecopy": "3.0.1", +        "lodash.keys": "3.1.2" +      } +    }, +    "lodash._basecopy": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", +      "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" +    }, +    "lodash._basefor": { +      "version": "3.0.3", +      "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", +      "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=" +    }, +    "lodash._bindcallback": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", +      "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" +    }, +    "lodash._createassigner": { +      "version": "3.1.1", +      "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", +      "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", +      "requires": { +        "lodash._bindcallback": "3.0.1", +        "lodash._isiterateecall": "3.0.9", +        "lodash.restparam": "3.6.1" +      } +    }, +    "lodash._getnative": { +      "version": "3.9.1", +      "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", +      "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" +    }, +    "lodash._isiterateecall": { +      "version": "3.0.9", +      "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", +      "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" +    }, +    "lodash._reinterpolate": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", +      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" +    }, +    "lodash.assign": { +      "version": "4.2.0", +      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", +      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" +    }, +    "lodash.camelcase": { +      "version": "4.3.0", +      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", +      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" +    }, +    "lodash.clonedeep": { +      "version": "4.5.0", +      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", +      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" +    }, +    "lodash.defaults": { +      "version": "4.2.0", +      "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", +      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" +    }, +    "lodash.isarguments": { +      "version": "3.1.0", +      "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", +      "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" +    }, +    "lodash.isarray": { +      "version": "3.0.4", +      "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", +      "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" +    }, +    "lodash.isplainobject": { +      "version": "3.2.0", +      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", +      "integrity": "sha1-moI4rhayAEMpYM1zRlEtASP79MU=", +      "requires": { +        "lodash._basefor": "3.0.3", +        "lodash.isarguments": "3.1.0", +        "lodash.keysin": "3.0.8" +      } +    }, +    "lodash.keys": { +      "version": "3.1.2", +      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", +      "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", +      "requires": { +        "lodash._getnative": "3.9.1", +        "lodash.isarguments": "3.1.0", +        "lodash.isarray": "3.0.4" +      } +    }, +    "lodash.keysin": { +      "version": "3.0.8", +      "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", +      "integrity": "sha1-IsRJPrvtsUJ5YqVLRFssinZ/tH8=", +      "requires": { +        "lodash.isarguments": "3.1.0", +        "lodash.isarray": "3.0.4" +      } +    }, +    "lodash.memoize": { +      "version": "4.1.2", +      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", +      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" +    }, +    "lodash.mergewith": { +      "version": "4.6.0", +      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", +      "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=" +    }, +    "lodash.restparam": { +      "version": "3.6.1", +      "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", +      "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" +    }, +    "lodash.tail": { +      "version": "4.1.1", +      "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", +      "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" +    }, +    "lodash.template": { +      "version": "4.4.0", +      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", +      "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", +      "requires": { +        "lodash._reinterpolate": "3.0.0", +        "lodash.templatesettings": "4.1.0" +      } +    }, +    "lodash.templatesettings": { +      "version": "4.1.0", +      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", +      "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", +      "requires": { +        "lodash._reinterpolate": "3.0.0" +      } +    }, +    "lodash.uniq": { +      "version": "4.5.0", +      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", +      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" +    }, +    "loglevel": { +      "version": "1.6.0", +      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", +      "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", +      "dev": true +    }, +    "lolex": { +      "version": "1.3.2", +      "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", +      "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", +      "dev": true +    }, +    "longest": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", +      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" +    }, +    "loose-envify": { +      "version": "1.3.1", +      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", +      "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", +      "requires": { +        "js-tokens": "3.0.2" +      } +    }, +    "loud-rejection": { +      "version": "1.6.0", +      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", +      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", +      "requires": { +        "currently-unhandled": "0.4.1", +        "signal-exit": "3.0.2" +      } +    }, +    "lru-cache": { +      "version": "4.1.1", +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", +      "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", +      "requires": { +        "pseudomap": "1.0.2", +        "yallist": "2.1.2" +      } +    }, +    "macaddress": { +      "version": "0.2.8", +      "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", +      "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" +    }, +    "make-dir": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", +      "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", +      "requires": { +        "pify": "3.0.0" +      } +    }, +    "makeerror": { +      "version": "1.0.11", +      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", +      "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", +      "dev": true, +      "requires": { +        "tmpl": "1.0.4" +      } +    }, +    "map-obj": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", +      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" +    }, +    "math-expression-evaluator": { +      "version": "1.2.17", +      "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", +      "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" +    }, +    "md5.js": { +      "version": "1.3.4", +      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", +      "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", +      "requires": { +        "hash-base": "3.0.4", +        "inherits": "2.0.3" +      }, +      "dependencies": { +        "hash-base": { +          "version": "3.0.4", +          "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", +          "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", +          "requires": { +            "inherits": "2.0.3", +            "safe-buffer": "5.1.1" +          } +        } +      } +    }, +    "media-typer": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", +      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", +      "dev": true +    }, +    "mem": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", +      "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", +      "requires": { +        "mimic-fn": "1.1.0" +      } +    }, +    "memory-fs": { +      "version": "0.4.1", +      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", +      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", +      "requires": { +        "errno": "0.1.5", +        "readable-stream": "2.3.3" +      } +    }, +    "meow": { +      "version": "3.7.0", +      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", +      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", +      "requires": { +        "camelcase-keys": "2.1.0", +        "decamelize": "1.2.0", +        "loud-rejection": "1.6.0", +        "map-obj": "1.0.1", +        "minimist": "1.2.0", +        "normalize-package-data": "2.4.0", +        "object-assign": "4.1.1", +        "read-pkg-up": "1.0.1", +        "redent": "1.0.0", +        "trim-newlines": "1.0.0" +      }, +      "dependencies": { +        "minimist": { +          "version": "1.2.0", +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", +          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" +        } +      } +    }, +    "merge": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", +      "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", +      "dev": true +    }, +    "merge-descriptors": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", +      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", +      "dev": true +    }, +    "methods": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", +      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", +      "dev": true +    }, +    "micromatch": { +      "version": "2.3.11", +      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", +      "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", +      "requires": { +        "arr-diff": "2.0.0", +        "array-unique": "0.2.1", +        "braces": "1.8.5", +        "expand-brackets": "0.1.5", +        "extglob": "0.3.2", +        "filename-regex": "2.0.1", +        "is-extglob": "1.0.0", +        "is-glob": "2.0.1", +        "kind-of": "3.2.2", +        "normalize-path": "2.1.1", +        "object.omit": "2.0.1", +        "parse-glob": "3.0.4", +        "regex-cache": "0.4.4" +      } +    }, +    "miller-rabin": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", +      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", +      "requires": { +        "bn.js": "4.11.8", +        "brorand": "1.1.0" +      } +    }, +    "mime": { +      "version": "1.4.1", +      "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", +      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", +      "dev": true +    }, +    "mime-db": { +      "version": "1.30.0", +      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", +      "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" +    }, +    "mime-types": { +      "version": "2.1.17", +      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", +      "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", +      "requires": { +        "mime-db": "1.30.0" +      } +    }, +    "mimic-fn": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", +      "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" +    }, +    "minimalistic-assert": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", +      "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" +    }, +    "minimalistic-crypto-utils": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", +      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" +    }, +    "minimatch": { +      "version": "3.0.4", +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", +      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", +      "requires": { +        "brace-expansion": "1.1.8" +      } +    }, +    "minimist": { +      "version": "0.0.8", +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", +      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" +    }, +    "mixin-object": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", +      "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", +      "requires": { +        "for-in": "0.1.8", +        "is-extendable": "0.1.1" +      }, +      "dependencies": { +        "for-in": { +          "version": "0.1.8", +          "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", +          "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" +        } +      } +    }, +    "mkdirp": { +      "version": "0.5.1", +      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", +      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", +      "requires": { +        "minimist": "0.0.8" +      } +    }, +    "ms": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", +      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" +    }, +    "multicast-dns": { +      "version": "6.2.1", +      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", +      "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", +      "dev": true, +      "requires": { +        "dns-packet": "1.2.2", +        "thunky": "0.1.0" +      } +    }, +    "multicast-dns-service-types": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", +      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", +      "dev": true +    }, +    "nan": { +      "version": "2.8.0", +      "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", +      "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" +    }, +    "natural-compare": { +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", +      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", +      "dev": true +    }, +    "negotiator": { +      "version": "0.6.1", +      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", +      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", +      "dev": true +    }, +    "node-fetch": { +      "version": "1.7.3", +      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", +      "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", +      "requires": { +        "encoding": "0.1.12", +        "is-stream": "1.1.0" +      } +    }, +    "node-forge": { +      "version": "0.6.33", +      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", +      "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", +      "dev": true +    }, +    "node-gyp": { +      "version": "3.6.2", +      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", +      "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", +      "requires": { +        "fstream": "1.0.11", +        "glob": "7.1.2", +        "graceful-fs": "4.1.11", +        "minimatch": "3.0.4", +        "mkdirp": "0.5.1", +        "nopt": "3.0.6", +        "npmlog": "4.1.2", +        "osenv": "0.1.4", +        "request": "2.79.0", +        "rimraf": "2.6.2", +        "semver": "5.3.0", +        "tar": "2.2.1", +        "which": "1.3.0" +      }, +      "dependencies": { +        "semver": { +          "version": "5.3.0", +          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", +          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" +        } +      } +    }, +    "node-int64": { +      "version": "0.4.0", +      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", +      "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", +      "dev": true +    }, +    "node-libs-browser": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", +      "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", +      "requires": { +        "assert": "1.4.1", +        "browserify-zlib": "0.2.0", +        "buffer": "4.9.1", +        "console-browserify": "1.1.0", +        "constants-browserify": "1.0.0", +        "crypto-browserify": "3.12.0", +        "domain-browser": "1.1.7", +        "events": "1.1.1", +        "https-browserify": "1.0.0", +        "os-browserify": "0.3.0", +        "path-browserify": "0.0.0", +        "process": "0.11.10", +        "punycode": "1.4.1", +        "querystring-es3": "0.2.1", +        "readable-stream": "2.3.3", +        "stream-browserify": "2.0.1", +        "stream-http": "2.7.2", +        "string_decoder": "1.0.3", +        "timers-browserify": "2.0.4", +        "tty-browserify": "0.0.0", +        "url": "0.11.0", +        "util": "0.10.3", +        "vm-browserify": "0.0.4" +      } +    }, +    "node-notifier": { +      "version": "5.1.2", +      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", +      "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", +      "dev": true, +      "requires": { +        "growly": "1.3.0", +        "semver": "5.4.1", +        "shellwords": "0.1.1", +        "which": "1.3.0" +      } +    }, +    "node-sass": { +      "version": "4.7.2", +      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", +      "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", +      "requires": { +        "async-foreach": "0.1.3", +        "chalk": "1.1.3", +        "cross-spawn": "3.0.1", +        "gaze": "1.1.2", +        "get-stdin": "4.0.1", +        "glob": "7.1.2", +        "in-publish": "2.0.0", +        "lodash.assign": "4.2.0", +        "lodash.clonedeep": "4.5.0", +        "lodash.mergewith": "4.6.0", +        "meow": "3.7.0", +        "mkdirp": "0.5.1", +        "nan": "2.8.0", +        "node-gyp": "3.6.2", +        "npmlog": "4.1.2", +        "request": "2.79.0", +        "sass-graph": "2.2.4", +        "stdout-stream": "1.4.0", +        "true-case-path": "1.0.2" +      } +    }, +    "nopt": { +      "version": "3.0.6", +      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", +      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", +      "requires": { +        "abbrev": "1.1.1" +      } +    }, +    "normalize-package-data": { +      "version": "2.4.0", +      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", +      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", +      "requires": { +        "hosted-git-info": "2.5.0", +        "is-builtin-module": "1.0.0", +        "semver": "5.4.1", +        "validate-npm-package-license": "3.0.1" +      } +    }, +    "normalize-path": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", +      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", +      "requires": { +        "remove-trailing-separator": "1.1.0" +      } +    }, +    "normalize-range": { +      "version": "0.1.2", +      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", +      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" +    }, +    "normalize-url": { +      "version": "1.9.1", +      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", +      "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", +      "requires": { +        "object-assign": "4.1.1", +        "prepend-http": "1.0.4", +        "query-string": "4.3.4", +        "sort-keys": "1.1.2" +      } +    }, +    "npm-run-path": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", +      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", +      "requires": { +        "path-key": "2.0.1" +      } +    }, +    "npmlog": { +      "version": "4.1.2", +      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", +      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", +      "requires": { +        "are-we-there-yet": "1.1.4", +        "console-control-strings": "1.1.0", +        "gauge": "2.7.4", +        "set-blocking": "2.0.0" +      } +    }, +    "num2fraction": { +      "version": "1.2.2", +      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", +      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" +    }, +    "number-is-nan": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", +      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" +    }, +    "nwmatcher": { +      "version": "1.4.3", +      "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", +      "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", +      "dev": true +    }, +    "oauth-sign": { +      "version": "0.8.2", +      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", +      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" +    }, +    "object-assign": { +      "version": "4.1.1", +      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", +      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" +    }, +    "object-keys": { +      "version": "1.0.11", +      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", +      "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", +      "dev": true +    }, +    "object-path": { +      "version": "0.9.2", +      "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", +      "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=" +    }, +    "object.omit": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", +      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", +      "requires": { +        "for-own": "0.1.5", +        "is-extendable": "0.1.1" +      }, +      "dependencies": { +        "for-own": { +          "version": "0.1.5", +          "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", +          "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", +          "requires": { +            "for-in": "1.0.2" +          } +        } +      } +    }, +    "obuf": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", +      "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", +      "dev": true +    }, +    "on-finished": { +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", +      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", +      "dev": true, +      "requires": { +        "ee-first": "1.1.1" +      } +    }, +    "on-headers": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", +      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", +      "dev": true +    }, +    "once": { +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", +      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", +      "requires": { +        "wrappy": "1.0.2" +      } +    }, +    "onecolor": { +      "version": "3.0.5", +      "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz", +      "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY=" +    }, +    "opn": { +      "version": "5.1.0", +      "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", +      "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", +      "dev": true, +      "requires": { +        "is-wsl": "1.1.0" +      } +    }, +    "optimist": { +      "version": "0.6.1", +      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", +      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", +      "dev": true, +      "requires": { +        "minimist": "0.0.8", +        "wordwrap": "0.0.2" +      } +    }, +    "optionator": { +      "version": "0.8.2", +      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", +      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", +      "dev": true, +      "requires": { +        "deep-is": "0.1.3", +        "fast-levenshtein": "2.0.6", +        "levn": "0.3.0", +        "prelude-ls": "1.1.2", +        "type-check": "0.3.2", +        "wordwrap": "1.0.0" +      }, +      "dependencies": { +        "wordwrap": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", +          "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", +          "dev": true +        } +      } +    }, +    "original": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", +      "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", +      "dev": true, +      "requires": { +        "url-parse": "1.0.5" +      }, +      "dependencies": { +        "url-parse": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", +          "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", +          "dev": true, +          "requires": { +            "querystringify": "0.0.4", +            "requires-port": "1.0.0" +          } +        } +      } +    }, +    "os-browserify": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", +      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" +    }, +    "os-homedir": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", +      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" +    }, +    "os-locale": { +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", +      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", +      "requires": { +        "lcid": "1.0.0" +      } +    }, +    "os-tmpdir": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", +      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" +    }, +    "osenv": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", +      "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", +      "requires": { +        "os-homedir": "1.0.2", +        "os-tmpdir": "1.0.2" +      } +    }, +    "p-cancelable": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", +      "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", +      "dev": true +    }, +    "p-finally": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", +      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" +    }, +    "p-limit": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", +      "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" +    }, +    "p-locate": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", +      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", +      "requires": { +        "p-limit": "1.1.0" +      } +    }, +    "p-map": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", +      "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", +      "dev": true +    }, +    "pako": { +      "version": "1.0.6", +      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", +      "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" +    }, +    "parse-asn1": { +      "version": "5.1.0", +      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", +      "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", +      "requires": { +        "asn1.js": "4.9.2", +        "browserify-aes": "1.1.1", +        "create-hash": "1.1.3", +        "evp_bytestokey": "1.0.3", +        "pbkdf2": "3.0.14" +      } +    }, +    "parse-glob": { +      "version": "3.0.4", +      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", +      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", +      "requires": { +        "glob-base": "0.3.0", +        "is-dotfile": "1.0.3", +        "is-extglob": "1.0.0", +        "is-glob": "2.0.1" +      } +    }, +    "parse-json": { +      "version": "2.2.0", +      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", +      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", +      "requires": { +        "error-ex": "1.3.1" +      } +    }, +    "parse5": { +      "version": "1.5.1", +      "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", +      "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", +      "dev": true +    }, +    "parseurl": { +      "version": "1.3.2", +      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", +      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", +      "dev": true +    }, +    "path-browserify": { +      "version": "0.0.0", +      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", +      "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" +    }, +    "path-complete-extname": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/path-complete-extname/-/path-complete-extname-0.1.0.tgz", +      "integrity": "sha1-xFRwJmnzFFL4GTqmFokV+jFpL0o=" +    }, +    "path-exists": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", +      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" +    }, +    "path-is-absolute": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", +      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" +    }, +    "path-is-inside": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", +      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", +      "dev": true +    }, +    "path-key": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", +      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" +    }, +    "path-parse": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", +      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" +    }, +    "path-to-regexp": { +      "version": "0.1.7", +      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", +      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", +      "dev": true +    }, +    "path-type": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", +      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", +      "requires": { +        "graceful-fs": "4.1.11", +        "pify": "2.3.0", +        "pinkie-promise": "2.0.1" +      }, +      "dependencies": { +        "pify": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" +        } +      } +    }, +    "pbkdf2": { +      "version": "3.0.14", +      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", +      "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", +      "requires": { +        "create-hash": "1.1.3", +        "create-hmac": "1.1.6", +        "ripemd160": "2.0.1", +        "safe-buffer": "5.1.1", +        "sha.js": "2.4.9" +      } +    }, +    "pify": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", +      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" +    }, +    "pinkie": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", +      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" +    }, +    "pinkie-promise": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", +      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", +      "requires": { +        "pinkie": "2.0.4" +      } +    }, +    "pixrem": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-4.0.1.tgz", +      "integrity": "sha1-LaSh3m7EQjxfw3lOkwuB1EkOxoY=", +      "requires": { +        "browserslist": "2.10.0", +        "postcss": "6.0.14", +        "reduce-css-calc": "1.3.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "pkg-dir": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", +      "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", +      "requires": { +        "find-up": "2.1.0" +      } +    }, +    "pleeease-filters": { +      "version": "4.0.0", +      "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-4.0.0.tgz", +      "integrity": "sha1-ZjKy+wVkjSdY2GU4T7zteeHMrsc=", +      "requires": { +        "onecolor": "3.0.5", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "portfinder": { +      "version": "1.0.13", +      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", +      "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", +      "dev": true, +      "requires": { +        "async": "1.5.2", +        "debug": "2.6.9", +        "mkdirp": "0.5.1" +      }, +      "dependencies": { +        "async": { +          "version": "1.5.2", +          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", +          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", +          "dev": true +        } +      } +    }, +    "postcss": { +      "version": "5.2.18", +      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", +      "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", +      "requires": { +        "chalk": "1.1.3", +        "js-base64": "2.4.0", +        "source-map": "0.5.7", +        "supports-color": "3.2.3" +      }, +      "dependencies": { +        "supports-color": { +          "version": "3.2.3", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", +          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", +          "requires": { +            "has-flag": "1.0.0" +          } +        } +      } +    }, +    "postcss-apply": { +      "version": "0.8.0", +      "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.8.0.tgz", +      "integrity": "sha1-FOVEu7XLbxweBIhXll15rgZrE0M=", +      "requires": { +        "babel-runtime": "6.26.0", +        "balanced-match": "0.4.2", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "balanced-match": { +          "version": "0.4.2", +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-attribute-case-insensitive": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz", +      "integrity": "sha1-lNxCLI+QmX8WvTOjZUu77AhJY7Q=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-selector-parser": "2.2.3" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-calc": { +      "version": "5.3.1", +      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", +      "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", +      "requires": { +        "postcss": "5.2.18", +        "postcss-message-helpers": "2.0.0", +        "reduce-css-calc": "1.3.0" +      } +    }, +    "postcss-color-function": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-4.0.1.tgz", +      "integrity": "sha1-QCs/LOvD9pR+YY+2vjZU++zvZEQ=", +      "requires": { +        "css-color-function": "1.3.3", +        "postcss": "6.0.14", +        "postcss-message-helpers": "2.0.0", +        "postcss-value-parser": "3.3.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-color-gray": { +      "version": "4.0.0", +      "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-4.0.0.tgz", +      "integrity": "sha1-aBvzBQl91mv+8OHmKC1dmbWsyV0=", +      "requires": { +        "color": "1.0.3", +        "postcss": "6.0.14", +        "postcss-message-helpers": "2.0.0", +        "reduce-function-call": "1.0.2" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "color": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", +          "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", +          "requires": { +            "color-convert": "1.9.1", +            "color-string": "1.5.2" +          } +        }, +        "color-string": { +          "version": "1.5.2", +          "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", +          "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", +          "requires": { +            "color-name": "1.1.3", +            "simple-swizzle": "0.2.2" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-color-hex-alpha": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz", +      "integrity": "sha1-HlPmyKyyN5Vej9CLfs2xuLgwn5U=", +      "requires": { +        "color": "1.0.3", +        "postcss": "6.0.14", +        "postcss-message-helpers": "2.0.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "color": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", +          "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", +          "requires": { +            "color-convert": "1.9.1", +            "color-string": "1.5.2" +          } +        }, +        "color-string": { +          "version": "1.5.2", +          "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", +          "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", +          "requires": { +            "color-name": "1.1.3", +            "simple-swizzle": "0.2.2" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-color-hsl": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/postcss-color-hsl/-/postcss-color-hsl-2.0.0.tgz", +      "integrity": "sha1-EnA2ZvoxBDDj8wpFTawThjF9WEQ=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-value-parser": "3.3.0", +        "units-css": "0.4.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-color-hwb": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-3.0.0.tgz", +      "integrity": "sha1-NAKxnvTYSXVAwftQcr6YY8qVVx4=", +      "requires": { +        "color": "1.0.3", +        "postcss": "6.0.14", +        "postcss-message-helpers": "2.0.0", +        "reduce-function-call": "1.0.2" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "color": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", +          "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", +          "requires": { +            "color-convert": "1.9.1", +            "color-string": "1.5.2" +          } +        }, +        "color-string": { +          "version": "1.5.2", +          "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", +          "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", +          "requires": { +            "color-name": "1.1.3", +            "simple-swizzle": "0.2.2" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-color-rebeccapurple": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.0.0.tgz", +      "integrity": "sha1-7rrwPTY7QwC5Z5K9MIHBntZlE9M=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-value-parser": "3.3.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-color-rgb": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz", +      "integrity": "sha1-FFOcinExSUtILg3RzCZf9lFLUmM=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-value-parser": "3.3.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-color-rgba-fallback": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-3.0.0.tgz", +      "integrity": "sha1-N9XJNToHoJJwkSqCYGu0Kg1wLAQ=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-value-parser": "3.3.0", +        "rgb-hex": "2.1.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-colormin": { +      "version": "2.2.2", +      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", +      "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", +      "requires": { +        "colormin": "1.1.2", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-convert-values": { +      "version": "2.6.1", +      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", +      "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", +      "requires": { +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-cssnext": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-3.0.2.tgz", +      "integrity": "sha512-jA6kGdcUMZqLUgw6MdpyNWGFhk0LIITVhC/jTnLRZLoXSTR88qT2cFOn3LbY06udt1PVdTCHDG3plBjxVKf8BQ==", +      "requires": { +        "autoprefixer": "7.2.2", +        "caniuse-api": "2.0.0", +        "chalk": "2.3.0", +        "pixrem": "4.0.1", +        "pleeease-filters": "4.0.0", +        "postcss": "6.0.14", +        "postcss-apply": "0.8.0", +        "postcss-attribute-case-insensitive": "2.0.0", +        "postcss-calc": "6.0.1", +        "postcss-color-function": "4.0.1", +        "postcss-color-gray": "4.0.0", +        "postcss-color-hex-alpha": "3.0.0", +        "postcss-color-hsl": "2.0.0", +        "postcss-color-hwb": "3.0.0", +        "postcss-color-rebeccapurple": "3.0.0", +        "postcss-color-rgb": "2.0.0", +        "postcss-color-rgba-fallback": "3.0.0", +        "postcss-custom-media": "6.0.0", +        "postcss-custom-properties": "6.2.0", +        "postcss-custom-selectors": "4.0.1", +        "postcss-font-family-system-ui": "2.1.1", +        "postcss-font-variant": "3.0.0", +        "postcss-image-set-polyfill": "0.3.5", +        "postcss-initial": "2.0.0", +        "postcss-media-minmax": "3.0.0", +        "postcss-nesting": "4.2.1", +        "postcss-pseudo-class-any-link": "4.0.0", +        "postcss-pseudoelements": "5.0.0", +        "postcss-replace-overflow-wrap": "2.0.0", +        "postcss-selector-matches": "3.0.1", +        "postcss-selector-not": "3.0.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "autoprefixer": { +          "version": "7.2.2", +          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.2.tgz", +          "integrity": "sha512-eTVoSHiGp2cDytg7RS7gtqAnfH+WFcNQMTjywGNu+hH7ViQZ/ZKsvNz2C1oVhCtd9DjMIC15iatpxmtp5Kxvpg==", +          "requires": { +            "browserslist": "2.10.0", +            "caniuse-lite": "1.0.30000782", +            "normalize-range": "0.1.2", +            "num2fraction": "1.2.2", +            "postcss": "6.0.14", +            "postcss-value-parser": "3.3.0" +          } +        }, +        "caniuse-api": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-2.0.0.tgz", +          "integrity": "sha1-sd21pZZrFvSNxJmERNS7xsfZ2DQ=", +          "requires": { +            "browserslist": "2.10.0", +            "caniuse-lite": "1.0.30000782", +            "lodash.memoize": "4.1.2", +            "lodash.uniq": "4.5.0" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "postcss-calc": { +          "version": "6.0.1", +          "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.1.tgz", +          "integrity": "sha1-PSQXG79udinUIqQ26/5t2VEfQzA=", +          "requires": { +            "css-unit-converter": "1.1.1", +            "postcss": "6.0.14", +            "postcss-selector-parser": "2.2.3", +            "reduce-css-calc": "2.1.3" +          } +        }, +        "reduce-css-calc": { +          "version": "2.1.3", +          "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.3.tgz", +          "integrity": "sha1-Y8TGMl/7v06mwj8dTetHw5U/O4E=", +          "requires": { +            "css-unit-converter": "1.1.1", +            "postcss-value-parser": "3.3.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-custom-media": { +      "version": "6.0.0", +      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz", +      "integrity": "sha1-vlMnhBEOyylQRPtTlaGABushpzc=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-custom-properties": { +      "version": "6.2.0", +      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-6.2.0.tgz", +      "integrity": "sha512-eNR2h9T9ciKMoQEORrPjH33XeN/nuvVuxArOKmHtsFbGbNss631tgTrKou3/pmjAZbA4QQkhLIkPQkIk3WW+8w==", +      "requires": { +        "balanced-match": "1.0.0", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-custom-selectors": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz", +      "integrity": "sha1-eBOC+UxS5yfvXKR3bqKt9JphE4I=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-selector-matches": "3.0.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-discard-comments": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", +      "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", +      "requires": { +        "postcss": "5.2.18" +      } +    }, +    "postcss-discard-duplicates": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", +      "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", +      "requires": { +        "postcss": "5.2.18" +      } +    }, +    "postcss-discard-empty": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", +      "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", +      "requires": { +        "postcss": "5.2.18" +      } +    }, +    "postcss-discard-overridden": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", +      "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", +      "requires": { +        "postcss": "5.2.18" +      } +    }, +    "postcss-discard-unused": { +      "version": "2.2.3", +      "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", +      "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", +      "requires": { +        "postcss": "5.2.18", +        "uniqs": "2.0.0" +      } +    }, +    "postcss-filter-plugins": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", +      "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", +      "requires": { +        "postcss": "5.2.18", +        "uniqid": "4.1.1" +      } +    }, +    "postcss-font-family-system-ui": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/postcss-font-family-system-ui/-/postcss-font-family-system-ui-2.1.1.tgz", +      "integrity": "sha512-AOAn553wVmMDx2nph0axVDXJwhsd9x4MjKHRH9SOXL4YdiqsYFxyTVTWnlka9iNB70Pb3Idxmj79bIXxq38b/w==", +      "requires": { +        "@std/esm": "0.16.0", +        "lodash": "4.17.4", +        "postcss": "6.0.14", +        "postcss-value-parser": "3.3.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-font-variant": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz", +      "integrity": "sha1-CMzIj2BQuoLtjvLMdsDGprQfGD4=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-image-set-polyfill": { +      "version": "0.3.5", +      "resolved": "https://registry.npmjs.org/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.3.5.tgz", +      "integrity": "sha1-Dxk0E3AM8fgr05Bm7wFtZaShgYE=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-media-query-parser": "0.2.3" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-initial": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-2.0.0.tgz", +      "integrity": "sha1-cnFfczbgu3k1HZnuZcSiU6hEG6Q=", +      "requires": { +        "lodash.template": "4.4.0", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-load-config": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", +      "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", +      "requires": { +        "cosmiconfig": "2.2.2", +        "object-assign": "4.1.1", +        "postcss-load-options": "1.2.0", +        "postcss-load-plugins": "2.3.0" +      } +    }, +    "postcss-load-options": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", +      "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", +      "requires": { +        "cosmiconfig": "2.2.2", +        "object-assign": "4.1.1" +      } +    }, +    "postcss-load-plugins": { +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", +      "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", +      "requires": { +        "cosmiconfig": "2.2.2", +        "object-assign": "4.1.1" +      } +    }, +    "postcss-loader": { +      "version": "2.0.9", +      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.9.tgz", +      "integrity": "sha512-sgoXPtmgVT3aBAhU47Kig8oPF+mbXl8Unjvtz1Qj1q2D2EvSVJW2mKJNzxv5y/LvA9xWwuvdysvhc7Zn80UWWw==", +      "requires": { +        "loader-utils": "1.1.0", +        "postcss": "6.0.14", +        "postcss-load-config": "1.2.0", +        "schema-utils": "0.3.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-media-minmax": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz", +      "integrity": "sha1-Z1JWA3pD70C8Twdgv9BtTcadSNI=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-media-query-parser": { +      "version": "0.2.3", +      "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", +      "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=" +    }, +    "postcss-merge-idents": { +      "version": "2.1.7", +      "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", +      "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", +      "requires": { +        "has": "1.0.1", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-merge-longhand": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", +      "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", +      "requires": { +        "postcss": "5.2.18" +      } +    }, +    "postcss-merge-rules": { +      "version": "2.1.2", +      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", +      "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", +      "requires": { +        "browserslist": "1.7.7", +        "caniuse-api": "1.6.1", +        "postcss": "5.2.18", +        "postcss-selector-parser": "2.2.3", +        "vendors": "1.0.1" +      }, +      "dependencies": { +        "browserslist": { +          "version": "1.7.7", +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", +          "requires": { +            "caniuse-db": "1.0.30000782", +            "electron-to-chromium": "1.3.28" +          } +        } +      } +    }, +    "postcss-message-helpers": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", +      "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" +    }, +    "postcss-minify-font-values": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", +      "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", +      "requires": { +        "object-assign": "4.1.1", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-minify-gradients": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", +      "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", +      "requires": { +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-minify-params": { +      "version": "1.2.2", +      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", +      "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", +      "requires": { +        "alphanum-sort": "1.0.2", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0", +        "uniqs": "2.0.0" +      } +    }, +    "postcss-minify-selectors": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", +      "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", +      "requires": { +        "alphanum-sort": "1.0.2", +        "has": "1.0.1", +        "postcss": "5.2.18", +        "postcss-selector-parser": "2.2.3" +      } +    }, +    "postcss-modules-extract-imports": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", +      "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-modules-local-by-default": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", +      "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", +      "requires": { +        "css-selector-tokenizer": "0.7.0", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-modules-scope": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", +      "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", +      "requires": { +        "css-selector-tokenizer": "0.7.0", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-modules-values": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", +      "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", +      "requires": { +        "icss-replace-symbols": "1.1.0", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-nesting": { +      "version": "4.2.1", +      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-4.2.1.tgz", +      "integrity": "sha512-IkyWXICwagCnlaviRexi7qOdwPw3+xVVjgFfGsxmztvRVaNxAlrypOIKqDE5mxY+BVxnId1rnUKBRQoNE2VDaA==", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-normalize-charset": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", +      "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", +      "requires": { +        "postcss": "5.2.18" +      } +    }, +    "postcss-normalize-url": { +      "version": "3.0.8", +      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", +      "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", +      "requires": { +        "is-absolute-url": "2.1.0", +        "normalize-url": "1.9.1", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-ordered-values": { +      "version": "2.2.3", +      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", +      "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", +      "requires": { +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-pseudo-class-any-link": { +      "version": "4.0.0", +      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz", +      "integrity": "sha1-kVKgYT00UHIFE+iJKFS65C0O5o4=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-selector-parser": "2.2.3" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-pseudoelements": { +      "version": "5.0.0", +      "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-5.0.0.tgz", +      "integrity": "sha1-7vGU6NUkZFylIKlJ6V5RjoEkAss=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-reduce-idents": { +      "version": "2.4.0", +      "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", +      "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", +      "requires": { +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-reduce-initial": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", +      "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", +      "requires": { +        "postcss": "5.2.18" +      } +    }, +    "postcss-reduce-transforms": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", +      "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", +      "requires": { +        "has": "1.0.1", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0" +      } +    }, +    "postcss-replace-overflow-wrap": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz", +      "integrity": "sha1-eU22+qVPjbEAhUOSqTr0V2i04ls=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-sass": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.2.0.tgz", +      "integrity": "sha512-cUmYzkP747fPCQE6d+CH2l1L4VSyIlAzZsok3HPjb5Gzsq3jE+VjpAdGlPsnQ310WKWI42sw+ar0UNN59/f3hg==", +      "requires": { +        "gonzales-pe": "4.2.3", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-scss": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz", +      "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-selector-matches": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz", +      "integrity": "sha1-5WNAEeE5UIgYYbvdWMLQER/8lqs=", +      "requires": { +        "balanced-match": "0.4.2", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "balanced-match": { +          "version": "0.4.2", +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-selector-not": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz", +      "integrity": "sha1-Lk2y8JZTNsAefOx9tsYN/3ZzNdk=", +      "requires": { +        "balanced-match": "0.4.2", +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "balanced-match": { +          "version": "0.4.2", +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-selector-parser": { +      "version": "2.2.3", +      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", +      "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", +      "requires": { +        "flatten": "1.0.2", +        "indexes-of": "1.0.1", +        "uniq": "1.0.1" +      } +    }, +    "postcss-smart-import": { +      "version": "0.7.6", +      "resolved": "https://registry.npmjs.org/postcss-smart-import/-/postcss-smart-import-0.7.6.tgz", +      "integrity": "sha512-9OpXaQ1uMMHWafUh0RWIpAKa3xxUDC2yyxicUPpGffH33nzbZG4/z+nk5Ocw5gGZ+3qkXV91iDV23Cmxf2Jhew==", +      "requires": { +        "babel-runtime": "6.26.0", +        "lodash": "4.17.4", +        "object-assign": "4.1.1", +        "postcss": "6.0.14", +        "postcss-sass": "0.2.0", +        "postcss-scss": "1.0.2", +        "postcss-value-parser": "3.3.0", +        "promise-each": "2.2.0", +        "read-cache": "1.0.0", +        "resolve": "1.5.0", +        "sugarss": "1.0.1" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "postcss-svgo": { +      "version": "2.1.6", +      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", +      "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", +      "requires": { +        "is-svg": "2.1.0", +        "postcss": "5.2.18", +        "postcss-value-parser": "3.3.0", +        "svgo": "0.7.2" +      } +    }, +    "postcss-unique-selectors": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", +      "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", +      "requires": { +        "alphanum-sort": "1.0.2", +        "postcss": "5.2.18", +        "uniqs": "2.0.0" +      } +    }, +    "postcss-value-parser": { +      "version": "3.3.0", +      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", +      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" +    }, +    "postcss-zindex": { +      "version": "2.2.0", +      "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", +      "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", +      "requires": { +        "has": "1.0.1", +        "postcss": "5.2.18", +        "uniqs": "2.0.0" +      } +    }, +    "prelude-ls": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", +      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", +      "dev": true +    }, +    "prepend-http": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", +      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" +    }, +    "preserve": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", +      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" +    }, +    "pretty-format": { +      "version": "21.2.1", +      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", +      "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", +      "dev": true, +      "requires": { +        "ansi-regex": "3.0.0", +        "ansi-styles": "3.2.0" +      }, +      "dependencies": { +        "ansi-regex": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", +          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", +          "dev": true +        }, +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        } +      } +    }, +    "private": { +      "version": "0.1.8", +      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", +      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" +    }, +    "process": { +      "version": "0.11.10", +      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", +      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" +    }, +    "process-nextick-args": { +      "version": "1.0.7", +      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", +      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" +    }, +    "promise": { +      "version": "7.3.1", +      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", +      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", +      "requires": { +        "asap": "2.0.6" +      } +    }, +    "promise-each": { +      "version": "2.2.0", +      "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz", +      "integrity": "sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=", +      "requires": { +        "any-promise": "0.1.0" +      } +    }, +    "promise-polyfill": { +      "version": "6.0.2", +      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.0.2.tgz", +      "integrity": "sha1-2chtPcTcLfkBboiUbe/Wm0m0EWI=" +    }, +    "proxy-addr": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", +      "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", +      "dev": true, +      "requires": { +        "forwarded": "0.1.2", +        "ipaddr.js": "1.5.2" +      } +    }, +    "prr": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", +      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" +    }, +    "pseudomap": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", +      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" +    }, +    "public-encrypt": { +      "version": "4.0.0", +      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", +      "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", +      "requires": { +        "bn.js": "4.11.8", +        "browserify-rsa": "4.0.1", +        "create-hash": "1.1.3", +        "parse-asn1": "5.1.0", +        "randombytes": "2.0.5" +      } +    }, +    "punycode": { +      "version": "1.4.1", +      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", +      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" +    }, +    "q": { +      "version": "1.5.1", +      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", +      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" +    }, +    "qs": { +      "version": "6.3.2", +      "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", +      "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=" +    }, +    "query-string": { +      "version": "4.3.4", +      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", +      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", +      "requires": { +        "object-assign": "4.1.1", +        "strict-uri-encode": "1.1.0" +      } +    }, +    "querystring": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", +      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" +    }, +    "querystring-es3": { +      "version": "0.2.1", +      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", +      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" +    }, +    "querystringify": { +      "version": "0.0.4", +      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", +      "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", +      "dev": true +    }, +    "rails-erb-loader": { +      "version": "5.2.1", +      "resolved": "https://registry.npmjs.org/rails-erb-loader/-/rails-erb-loader-5.2.1.tgz", +      "integrity": "sha1-OZt3gbiMEpvGIaglYyntL4VTmOk=", +      "requires": { +        "loader-utils": "1.1.0", +        "lodash.defaults": "4.2.0" +      } +    }, +    "randomatic": { +      "version": "1.1.7", +      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", +      "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", +      "requires": { +        "is-number": "3.0.0", +        "kind-of": "4.0.0" +      }, +      "dependencies": { +        "is-number": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", +          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", +          "requires": { +            "kind-of": "3.2.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +              "requires": { +                "is-buffer": "1.1.6" +              } +            } +          } +        }, +        "kind-of": { +          "version": "4.0.0", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", +          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", +          "requires": { +            "is-buffer": "1.1.6" +          } +        } +      } +    }, +    "randombytes": { +      "version": "2.0.5", +      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", +      "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", +      "requires": { +        "safe-buffer": "5.1.1" +      } +    }, +    "randomfill": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", +      "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", +      "requires": { +        "randombytes": "2.0.5", +        "safe-buffer": "5.1.1" +      } +    }, +    "range-parser": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", +      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", +      "dev": true +    }, +    "raw-body": { +      "version": "2.3.2", +      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", +      "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", +      "dev": true, +      "requires": { +        "bytes": "3.0.0", +        "http-errors": "1.6.2", +        "iconv-lite": "0.4.19", +        "unpipe": "1.0.0" +      } +    }, +    "react": { +      "version": "15.3.2", +      "resolved": "https://registry.npmjs.org/react/-/react-15.3.2.tgz", +      "integrity": "sha1-p7zNL+6K8SawMX4iLCjR1UUo0J4=", +      "requires": { +        "fbjs": "0.8.16", +        "loose-envify": "1.3.1", +        "object-assign": "4.1.1" +      } +    }, +    "react-addons-test-utils": { +      "version": "15.3.2", +      "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-15.3.2.tgz", +      "integrity": "sha1-wJpE9YNCWkqcGzhETXpsPm8PQfY=", +      "dev": true +    }, +    "react-dom": { +      "version": "15.3.2", +      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.3.2.tgz", +      "integrity": "sha1-xGsKpTgNe4OOelnEp77/LtMVUx8=" +    }, +    "react-redux": { +      "version": "4.4.5", +      "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.5.tgz", +      "integrity": "sha1-9QmimBviJS0QxinvfFWTR6SuxFc=", +      "requires": { +        "hoist-non-react-statics": "1.2.0", +        "invariant": "2.2.2", +        "lodash": "4.17.4", +        "loose-envify": "1.3.1" +      } +    }, +    "react-select2": { +      "version": "4.0.3", +      "resolved": "https://registry.npmjs.org/react-select2/-/react-select2-4.0.3.tgz", +      "integrity": "sha1-icx55+r83/Gi8x8Jbo3rSDt1A+o=", +      "requires": { +        "react-select2-wrapper": "1.0.3" +      } +    }, +    "react-select2-wrapper": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/react-select2-wrapper/-/react-select2-wrapper-1.0.3.tgz", +      "integrity": "sha1-Z/R/81Cr19M5Yyrnzz65KWBMl5o=", +      "requires": { +        "select2": "4.0.5", +        "shallow-equal-fuzzy": "0.0.2" +      } +    }, +    "read-cache": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", +      "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", +      "requires": { +        "pify": "2.3.0" +      }, +      "dependencies": { +        "pify": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" +        } +      } +    }, +    "read-pkg": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", +      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", +      "requires": { +        "load-json-file": "1.1.0", +        "normalize-package-data": "2.4.0", +        "path-type": "1.1.0" +      } +    }, +    "read-pkg-up": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", +      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", +      "requires": { +        "find-up": "1.1.2", +        "read-pkg": "1.1.0" +      }, +      "dependencies": { +        "find-up": { +          "version": "1.1.2", +          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", +          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", +          "requires": { +            "path-exists": "2.1.0", +            "pinkie-promise": "2.0.1" +          } +        }, +        "path-exists": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", +          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", +          "requires": { +            "pinkie-promise": "2.0.1" +          } +        } +      } +    }, +    "readable-stream": { +      "version": "2.3.3", +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", +      "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", +      "requires": { +        "core-util-is": "1.0.2", +        "inherits": "2.0.3", +        "isarray": "1.0.0", +        "process-nextick-args": "1.0.7", +        "safe-buffer": "5.1.1", +        "string_decoder": "1.0.3", +        "util-deprecate": "1.0.2" +      } +    }, +    "readdirp": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", +      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", +      "requires": { +        "graceful-fs": "4.1.11", +        "minimatch": "3.0.4", +        "readable-stream": "2.3.3", +        "set-immediate-shim": "1.0.1" +      } +    }, +    "redent": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", +      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", +      "requires": { +        "indent-string": "2.1.0", +        "strip-indent": "1.0.1" +      } +    }, +    "reduce-css-calc": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", +      "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", +      "requires": { +        "balanced-match": "0.4.2", +        "math-expression-evaluator": "1.2.17", +        "reduce-function-call": "1.0.2" +      }, +      "dependencies": { +        "balanced-match": { +          "version": "0.4.2", +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" +        } +      } +    }, +    "reduce-function-call": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", +      "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", +      "requires": { +        "balanced-match": "0.4.2" +      }, +      "dependencies": { +        "balanced-match": { +          "version": "0.4.2", +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" +        } +      } +    }, +    "redux": { +      "version": "3.6.0", +      "resolved": "https://registry.npmjs.org/redux/-/redux-3.6.0.tgz", +      "integrity": "sha1-iHwrPQub2G7KK+cFccJ2VMGeGI0=", +      "requires": { +        "lodash": "4.17.4", +        "lodash-es": "4.17.4", +        "loose-envify": "1.3.1", +        "symbol-observable": "1.1.0" +      } +    }, +    "redux-logger": { +      "version": "2.7.4", +      "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-2.7.4.tgz", +      "integrity": "sha1-iR5dKefxEdCLV4GiN7mWW1hYx/g=", +      "requires": { +        "deep-diff": "0.3.4" +      } +    }, +    "redux-promise": { +      "version": "0.5.3", +      "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.3.tgz", +      "integrity": "sha1-6X5snTvzdurLebq+bZBtogES1tg=", +      "requires": { +        "flux-standard-action": "0.6.1" +      } +    }, +    "redux-thunk": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.1.0.tgz", +      "integrity": "sha1-xyS/7nXb41LaLjupvBQwK63Ympg=" +    }, +    "regenerate": { +      "version": "1.3.3", +      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", +      "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" +    }, +    "regenerator-runtime": { +      "version": "0.11.1", +      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", +      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" +    }, +    "regenerator-transform": { +      "version": "0.10.1", +      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", +      "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", +      "requires": { +        "babel-runtime": "6.26.0", +        "babel-types": "6.26.0", +        "private": "0.1.8" +      } +    }, +    "regex-cache": { +      "version": "0.4.4", +      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", +      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", +      "requires": { +        "is-equal-shallow": "0.1.3" +      } +    }, +    "regex-parser": { +      "version": "2.2.8", +      "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.8.tgz", +      "integrity": "sha1-2kwM2lqChVkJQWiTD0VfUytv+6w=" +    }, +    "regexpu-core": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", +      "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", +      "requires": { +        "regenerate": "1.3.3", +        "regjsgen": "0.2.0", +        "regjsparser": "0.1.5" +      } +    }, +    "regjsgen": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", +      "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" +    }, +    "regjsparser": { +      "version": "0.1.5", +      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", +      "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", +      "requires": { +        "jsesc": "0.5.0" +      }, +      "dependencies": { +        "jsesc": { +          "version": "0.5.0", +          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", +          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" +        } +      } +    }, +    "remove-trailing-separator": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", +      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" +    }, +    "repeat-element": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", +      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" +    }, +    "repeat-string": { +      "version": "1.6.1", +      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", +      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" +    }, +    "repeating": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", +      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", +      "requires": { +        "is-finite": "1.0.2" +      } +    }, +    "request": { +      "version": "2.79.0", +      "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", +      "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", +      "requires": { +        "aws-sign2": "0.6.0", +        "aws4": "1.6.0", +        "caseless": "0.11.0", +        "combined-stream": "1.0.5", +        "extend": "3.0.1", +        "forever-agent": "0.6.1", +        "form-data": "2.1.4", +        "har-validator": "2.0.6", +        "hawk": "3.1.3", +        "http-signature": "1.1.1", +        "is-typedarray": "1.0.0", +        "isstream": "0.1.2", +        "json-stringify-safe": "5.0.1", +        "mime-types": "2.1.17", +        "oauth-sign": "0.8.2", +        "qs": "6.3.2", +        "stringstream": "0.0.5", +        "tough-cookie": "2.3.3", +        "tunnel-agent": "0.4.3", +        "uuid": "3.1.0" +      } +    }, +    "require-directory": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", +      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" +    }, +    "require-from-string": { +      "version": "1.2.1", +      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", +      "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" +    }, +    "require-main-filename": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", +      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" +    }, +    "requires-port": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", +      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", +      "dev": true +    }, +    "resolve": { +      "version": "1.5.0", +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", +      "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", +      "requires": { +        "path-parse": "1.0.5" +      } +    }, +    "resolve-url": { +      "version": "0.2.1", +      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", +      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" +    }, +    "resolve-url-loader": { +      "version": "2.2.1", +      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.2.1.tgz", +      "integrity": "sha512-ywToZt/yttp4qG/SiiGMLAgaGuSaWSujAaf3WCadXehvQLxIgKFmMOSegaoH9Laa70Ayl4kti0zCAqLR48H/Mw==", +      "requires": { +        "adjust-sourcemap-loader": "1.1.0", +        "camelcase": "4.1.0", +        "convert-source-map": "1.5.1", +        "loader-utils": "1.1.0", +        "lodash.defaults": "4.2.0", +        "rework": "1.0.1", +        "rework-visit": "1.0.0", +        "source-map": "0.5.7", +        "urix": "0.1.0" +      }, +      "dependencies": { +        "camelcase": { +          "version": "4.1.0", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", +          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" +        } +      } +    }, +    "rework": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", +      "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", +      "requires": { +        "convert-source-map": "0.3.5", +        "css": "2.2.1" +      }, +      "dependencies": { +        "convert-source-map": { +          "version": "0.3.5", +          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", +          "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" +        } +      } +    }, +    "rework-visit": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", +      "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" +    }, +    "rgb": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz", +      "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U=" +    }, +    "rgb-hex": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-2.1.0.tgz", +      "integrity": "sha1-x3PF/iJoolV42SU5qCp6XOU77aY=" +    }, +    "right-align": { +      "version": "0.1.3", +      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", +      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", +      "requires": { +        "align-text": "0.1.4" +      } +    }, +    "rimraf": { +      "version": "2.6.2", +      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", +      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", +      "requires": { +        "glob": "7.1.2" +      } +    }, +    "ripemd160": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", +      "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", +      "requires": { +        "hash-base": "2.0.2", +        "inherits": "2.0.3" +      } +    }, +    "safe-buffer": { +      "version": "5.1.1", +      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", +      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" +    }, +    "samsam": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", +      "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", +      "dev": true +    }, +    "sane": { +      "version": "2.2.0", +      "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", +      "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", +      "dev": true, +      "requires": { +        "anymatch": "1.3.2", +        "exec-sh": "0.2.1", +        "fb-watchman": "2.0.0", +        "fsevents": "1.1.3", +        "minimatch": "3.0.4", +        "minimist": "1.2.0", +        "walker": "1.0.7", +        "watch": "0.18.0" +      }, +      "dependencies": { +        "minimist": { +          "version": "1.2.0", +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", +          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", +          "dev": true +        } +      } +    }, +    "sass-graph": { +      "version": "2.2.4", +      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", +      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", +      "requires": { +        "glob": "7.1.2", +        "lodash": "4.17.4", +        "scss-tokenizer": "0.2.3", +        "yargs": "7.1.0" +      } +    }, +    "sass-loader": { +      "version": "6.0.6", +      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", +      "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", +      "requires": { +        "async": "2.4.1", +        "clone-deep": "0.3.0", +        "loader-utils": "1.1.0", +        "lodash.tail": "4.1.1", +        "pify": "3.0.0" +      } +    }, +    "sax": { +      "version": "1.2.4", +      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", +      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" +    }, +    "schema-utils": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", +      "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", +      "requires": { +        "ajv": "5.5.1" +      } +    }, +    "scss-tokenizer": { +      "version": "0.2.3", +      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", +      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", +      "requires": { +        "js-base64": "2.4.0", +        "source-map": "0.4.4" +      }, +      "dependencies": { +        "source-map": { +          "version": "0.4.4", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", +          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", +          "requires": { +            "amdefine": "1.0.1" +          } +        } +      } +    }, +    "select-hose": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", +      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", +      "dev": true +    }, +    "select2": { +      "version": "4.0.5", +      "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.5.tgz", +      "integrity": "sha1-eqxQaSVhmFs007guxV4ib4lg1Ao=", +      "requires": { +        "almond": "0.3.3", +        "jquery-mousewheel": "3.1.13" +      } +    }, +    "selfsigned": { +      "version": "1.10.1", +      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", +      "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", +      "dev": true, +      "requires": { +        "node-forge": "0.6.33" +      } +    }, +    "semver": { +      "version": "5.4.1", +      "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", +      "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" +    }, +    "send": { +      "version": "0.16.1", +      "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", +      "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", +      "dev": true, +      "requires": { +        "debug": "2.6.9", +        "depd": "1.1.1", +        "destroy": "1.0.4", +        "encodeurl": "1.0.1", +        "escape-html": "1.0.3", +        "etag": "1.8.1", +        "fresh": "0.5.2", +        "http-errors": "1.6.2", +        "mime": "1.4.1", +        "ms": "2.0.0", +        "on-finished": "2.3.0", +        "range-parser": "1.2.0", +        "statuses": "1.3.1" +      } +    }, +    "serve-index": { +      "version": "1.9.1", +      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", +      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", +      "dev": true, +      "requires": { +        "accepts": "1.3.4", +        "batch": "0.6.1", +        "debug": "2.6.9", +        "escape-html": "1.0.3", +        "http-errors": "1.6.2", +        "mime-types": "2.1.17", +        "parseurl": "1.3.2" +      } +    }, +    "serve-static": { +      "version": "1.13.1", +      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", +      "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", +      "dev": true, +      "requires": { +        "encodeurl": "1.0.1", +        "escape-html": "1.0.3", +        "parseurl": "1.3.2", +        "send": "0.16.1" +      } +    }, +    "set-blocking": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", +      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" +    }, +    "set-immediate-shim": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", +      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" +    }, +    "setimmediate": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", +      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" +    }, +    "setprototypeof": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", +      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", +      "dev": true +    }, +    "sha.js": { +      "version": "2.4.9", +      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", +      "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", +      "requires": { +        "inherits": "2.0.3", +        "safe-buffer": "5.1.1" +      } +    }, +    "shallow-clone": { +      "version": "0.1.2", +      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", +      "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", +      "requires": { +        "is-extendable": "0.1.1", +        "kind-of": "2.0.1", +        "lazy-cache": "0.2.7", +        "mixin-object": "2.0.1" +      }, +      "dependencies": { +        "kind-of": { +          "version": "2.0.1", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", +          "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", +          "requires": { +            "is-buffer": "1.1.6" +          } +        } +      } +    }, +    "shallow-equal-fuzzy": { +      "version": "0.0.2", +      "resolved": "https://registry.npmjs.org/shallow-equal-fuzzy/-/shallow-equal-fuzzy-0.0.2.tgz", +      "integrity": "sha1-mZcXyWjTYiOxvX6pVAW2l7Gf1Vw=" +    }, +    "shebang-command": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", +      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", +      "requires": { +        "shebang-regex": "1.0.0" +      } +    }, +    "shebang-regex": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", +      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" +    }, +    "shellwords": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", +      "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", +      "dev": true +    }, +    "signal-exit": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", +      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" +    }, +    "simple-swizzle": { +      "version": "0.2.2", +      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", +      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", +      "requires": { +        "is-arrayish": "0.3.1" +      }, +      "dependencies": { +        "is-arrayish": { +          "version": "0.3.1", +          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.1.tgz", +          "integrity": "sha1-wt/DhquqDD4zxI2z/ocFnmkGXv0=" +        } +      } +    }, +    "sinon": { +      "version": "1.17.7", +      "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", +      "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", +      "dev": true, +      "requires": { +        "formatio": "1.1.1", +        "lolex": "1.3.2", +        "samsam": "1.1.2", +        "util": "0.10.3" +      } +    }, +    "slash": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", +      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" +    }, +    "sntp": { +      "version": "1.0.9", +      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", +      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", +      "requires": { +        "hoek": "2.16.3" +      } +    }, +    "sockjs": { +      "version": "0.3.18", +      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", +      "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", +      "dev": true, +      "requires": { +        "faye-websocket": "0.10.0", +        "uuid": "2.0.3" +      }, +      "dependencies": { +        "uuid": { +          "version": "2.0.3", +          "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", +          "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", +          "dev": true +        } +      } +    }, +    "sockjs-client": { +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", +      "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", +      "dev": true, +      "requires": { +        "debug": "2.6.9", +        "eventsource": "0.1.6", +        "faye-websocket": "0.11.1", +        "inherits": "2.0.3", +        "json3": "3.3.2", +        "url-parse": "1.2.0" +      }, +      "dependencies": { +        "faye-websocket": { +          "version": "0.11.1", +          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", +          "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", +          "dev": true, +          "requires": { +            "websocket-driver": "0.7.0" +          } +        } +      } +    }, +    "sort-keys": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", +      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", +      "requires": { +        "is-plain-obj": "1.1.0" +      } +    }, +    "source-list-map": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", +      "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" +    }, +    "source-map": { +      "version": "0.5.7", +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", +      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" +    }, +    "source-map-resolve": { +      "version": "0.3.1", +      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", +      "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", +      "requires": { +        "atob": "1.1.3", +        "resolve-url": "0.2.1", +        "source-map-url": "0.3.0", +        "urix": "0.1.0" +      } +    }, +    "source-map-support": { +      "version": "0.4.18", +      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", +      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", +      "requires": { +        "source-map": "0.5.7" +      } +    }, +    "source-map-url": { +      "version": "0.3.0", +      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", +      "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=" +    }, +    "spdx-correct": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", +      "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", +      "requires": { +        "spdx-license-ids": "1.2.2" +      } +    }, +    "spdx-expression-parse": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", +      "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" +    }, +    "spdx-license-ids": { +      "version": "1.2.2", +      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", +      "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" +    }, +    "spdy": { +      "version": "3.4.7", +      "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", +      "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", +      "dev": true, +      "requires": { +        "debug": "2.6.9", +        "handle-thing": "1.2.5", +        "http-deceiver": "1.2.7", +        "safe-buffer": "5.1.1", +        "select-hose": "2.0.0", +        "spdy-transport": "2.0.20" +      } +    }, +    "spdy-transport": { +      "version": "2.0.20", +      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", +      "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", +      "dev": true, +      "requires": { +        "debug": "2.6.9", +        "detect-node": "2.0.3", +        "hpack.js": "2.1.6", +        "obuf": "1.1.1", +        "readable-stream": "2.3.3", +        "safe-buffer": "5.1.1", +        "wbuf": "1.7.2" +      } +    }, +    "sprintf-js": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", +      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" +    }, +    "sshpk": { +      "version": "1.13.1", +      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", +      "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", +      "requires": { +        "asn1": "0.2.3", +        "assert-plus": "1.0.0", +        "bcrypt-pbkdf": "1.0.1", +        "dashdash": "1.14.1", +        "ecc-jsbn": "0.1.1", +        "getpass": "0.1.7", +        "jsbn": "0.1.1", +        "tweetnacl": "0.14.5" +      }, +      "dependencies": { +        "assert-plus": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" +        } +      } +    }, +    "statuses": { +      "version": "1.3.1", +      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", +      "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", +      "dev": true +    }, +    "stdout-stream": { +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", +      "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", +      "requires": { +        "readable-stream": "2.3.3" +      } +    }, +    "stream-browserify": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", +      "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", +      "requires": { +        "inherits": "2.0.3", +        "readable-stream": "2.3.3" +      } +    }, +    "stream-http": { +      "version": "2.7.2", +      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", +      "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", +      "requires": { +        "builtin-status-codes": "3.0.0", +        "inherits": "2.0.3", +        "readable-stream": "2.3.3", +        "to-arraybuffer": "1.0.1", +        "xtend": "4.0.1" +      } +    }, +    "strict-uri-encode": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", +      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" +    }, +    "string-length": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", +      "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", +      "dev": true, +      "requires": { +        "astral-regex": "1.0.0", +        "strip-ansi": "4.0.0" +      }, +      "dependencies": { +        "ansi-regex": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", +          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", +          "dev": true +        }, +        "strip-ansi": { +          "version": "4.0.0", +          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", +          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", +          "dev": true, +          "requires": { +            "ansi-regex": "3.0.0" +          } +        } +      } +    }, +    "string-width": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", +      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", +      "requires": { +        "code-point-at": "1.1.0", +        "is-fullwidth-code-point": "1.0.0", +        "strip-ansi": "3.0.1" +      } +    }, +    "string_decoder": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", +      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", +      "requires": { +        "safe-buffer": "5.1.1" +      } +    }, +    "stringstream": { +      "version": "0.0.5", +      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", +      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" +    }, +    "strip-ansi": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", +      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", +      "requires": { +        "ansi-regex": "2.1.1" +      } +    }, +    "strip-bom": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", +      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", +      "requires": { +        "is-utf8": "0.2.1" +      } +    }, +    "strip-eof": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", +      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" +    }, +    "strip-indent": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", +      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", +      "requires": { +        "get-stdin": "4.0.1" +      } +    }, +    "style-loader": { +      "version": "0.18.2", +      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", +      "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", +      "requires": { +        "loader-utils": "1.1.0", +        "schema-utils": "0.3.0" +      } +    }, +    "sugarss": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz", +      "integrity": "sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA==", +      "requires": { +        "postcss": "6.0.14" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    }, +    "supports-color": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", +      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" +    }, +    "svgo": { +      "version": "0.7.2", +      "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", +      "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", +      "requires": { +        "coa": "1.0.4", +        "colors": "1.1.2", +        "csso": "2.3.2", +        "js-yaml": "3.7.0", +        "mkdirp": "0.5.1", +        "sax": "1.2.4", +        "whet.extend": "0.9.9" +      }, +      "dependencies": { +        "js-yaml": { +          "version": "3.7.0", +          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", +          "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", +          "requires": { +            "argparse": "1.0.9", +            "esprima": "2.7.3" +          } +        } +      } +    }, +    "symbol-observable": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz", +      "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw==" +    }, +    "symbol-tree": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", +      "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", +      "dev": true +    }, +    "tapable": { +      "version": "0.2.8", +      "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", +      "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" +    }, +    "tar": { +      "version": "2.2.1", +      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", +      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", +      "requires": { +        "block-stream": "0.0.9", +        "fstream": "1.0.11", +        "inherits": "2.0.3" +      } +    }, +    "test-exclude": { +      "version": "4.1.1", +      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", +      "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", +      "requires": { +        "arrify": "1.0.1", +        "micromatch": "2.3.11", +        "object-assign": "4.1.1", +        "read-pkg-up": "1.0.1", +        "require-main-filename": "1.0.1" +      } +    }, +    "throat": { +      "version": "4.1.0", +      "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", +      "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", +      "dev": true +    }, +    "thunky": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", +      "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", +      "dev": true +    }, +    "time-stamp": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", +      "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", +      "dev": true +    }, +    "timers-browserify": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", +      "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", +      "requires": { +        "setimmediate": "1.0.5" +      } +    }, +    "tiny-lr": { +      "version": "0.2.1", +      "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", +      "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", +      "dev": true, +      "requires": { +        "body-parser": "1.14.2", +        "debug": "2.2.0", +        "faye-websocket": "0.10.0", +        "livereload-js": "2.2.2", +        "parseurl": "1.3.2", +        "qs": "5.1.0" +      }, +      "dependencies": { +        "body-parser": { +          "version": "1.14.2", +          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", +          "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", +          "dev": true, +          "requires": { +            "bytes": "2.2.0", +            "content-type": "1.0.4", +            "debug": "2.2.0", +            "depd": "1.1.1", +            "http-errors": "1.3.1", +            "iconv-lite": "0.4.13", +            "on-finished": "2.3.0", +            "qs": "5.2.0", +            "raw-body": "2.1.7", +            "type-is": "1.6.15" +          }, +          "dependencies": { +            "qs": { +              "version": "5.2.0", +              "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", +              "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", +              "dev": true +            } +          } +        }, +        "bytes": { +          "version": "2.2.0", +          "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", +          "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", +          "dev": true +        }, +        "debug": { +          "version": "2.2.0", +          "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", +          "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", +          "dev": true, +          "requires": { +            "ms": "0.7.1" +          } +        }, +        "http-errors": { +          "version": "1.3.1", +          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", +          "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", +          "dev": true, +          "requires": { +            "inherits": "2.0.3", +            "statuses": "1.3.1" +          } +        }, +        "iconv-lite": { +          "version": "0.4.13", +          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", +          "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", +          "dev": true +        }, +        "ms": { +          "version": "0.7.1", +          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", +          "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", +          "dev": true +        }, +        "qs": { +          "version": "5.1.0", +          "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", +          "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", +          "dev": true +        }, +        "raw-body": { +          "version": "2.1.7", +          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", +          "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", +          "dev": true, +          "requires": { +            "bytes": "2.4.0", +            "iconv-lite": "0.4.13", +            "unpipe": "1.0.0" +          }, +          "dependencies": { +            "bytes": { +              "version": "2.4.0", +              "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", +              "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", +              "dev": true +            } +          } +        } +      } +    }, +    "tmpl": { +      "version": "1.0.4", +      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", +      "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", +      "dev": true +    }, +    "to-arraybuffer": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", +      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" +    }, +    "to-fast-properties": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", +      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" +    }, +    "tough-cookie": { +      "version": "2.3.3", +      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", +      "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", +      "requires": { +        "punycode": "1.4.1" +      } +    }, +    "tr46": { +      "version": "0.0.3", +      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", +      "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", +      "dev": true +    }, +    "trim-newlines": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", +      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" +    }, +    "trim-right": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", +      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" +    }, +    "true-case-path": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", +      "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", +      "requires": { +        "glob": "6.0.4" +      }, +      "dependencies": { +        "glob": { +          "version": "6.0.4", +          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", +          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", +          "requires": { +            "inflight": "1.0.6", +            "inherits": "2.0.3", +            "minimatch": "3.0.4", +            "once": "1.4.0", +            "path-is-absolute": "1.0.1" +          } +        } +      } +    }, +    "tty-browserify": { +      "version": "0.0.0", +      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", +      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" +    }, +    "tunnel-agent": { +      "version": "0.4.3", +      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", +      "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" +    }, +    "tweetnacl": { +      "version": "0.14.5", +      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", +      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", +      "optional": true +    }, +    "type-check": { +      "version": "0.3.2", +      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", +      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", +      "dev": true, +      "requires": { +        "prelude-ls": "1.1.2" +      } +    }, +    "type-is": { +      "version": "1.6.15", +      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", +      "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", +      "dev": true, +      "requires": { +        "media-typer": "0.3.0", +        "mime-types": "2.1.17" +      } +    }, +    "ua-parser-js": { +      "version": "0.7.17", +      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", +      "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" +    }, +    "uglify-js": { +      "version": "3.1.3", +      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.3.tgz", +      "integrity": "sha512-5ZUOgufCHjN2mBBLfz63UtWTP6va2sSzBpNCM+/iqI6RnPzEhANmB0EKiKBYdQbc3v7KeomXJ2DJx0Xq9gvUvA==", +      "dev": true, +      "requires": { +        "commander": "2.11.0", +        "source-map": "0.5.7" +      }, +      "dependencies": { +        "commander": { +          "version": "2.11.0", +          "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", +          "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", +          "dev": true +        } +      } +    }, +    "uglify-to-browserify": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", +      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", +      "optional": true +    }, +    "uglifyjs-webpack-plugin": { +      "version": "0.4.6", +      "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", +      "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", +      "requires": { +        "source-map": "0.5.7", +        "uglify-js": "2.8.29", +        "webpack-sources": "1.1.0" +      }, +      "dependencies": { +        "camelcase": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", +          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" +        }, +        "cliui": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", +          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", +          "requires": { +            "center-align": "0.1.3", +            "right-align": "0.1.3", +            "wordwrap": "0.0.2" +          } +        }, +        "uglify-js": { +          "version": "2.8.29", +          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", +          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", +          "requires": { +            "source-map": "0.5.7", +            "uglify-to-browserify": "1.0.2", +            "yargs": "3.10.0" +          } +        }, +        "yargs": { +          "version": "3.10.0", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", +          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", +          "requires": { +            "camelcase": "1.2.1", +            "cliui": "2.1.0", +            "decamelize": "1.2.0", +            "window-size": "0.1.0" +          } +        } +      } +    }, +    "underscore.string": { +      "version": "3.2.3", +      "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", +      "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", +      "dev": true +    }, +    "uniq": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", +      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" +    }, +    "uniqid": { +      "version": "4.1.1", +      "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", +      "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", +      "requires": { +        "macaddress": "0.2.8" +      } +    }, +    "uniqs": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", +      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" +    }, +    "units-css": { +      "version": "0.4.0", +      "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz", +      "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=", +      "requires": { +        "isnumeric": "0.2.0", +        "viewport-dimensions": "0.2.0" +      } +    }, +    "unpipe": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", +      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", +      "dev": true +    }, +    "urix": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", +      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" +    }, +    "url": { +      "version": "0.11.0", +      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", +      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", +      "requires": { +        "punycode": "1.3.2", +        "querystring": "0.2.0" +      }, +      "dependencies": { +        "punycode": { +          "version": "1.3.2", +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", +          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" +        } +      } +    }, +    "url-parse": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", +      "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", +      "dev": true, +      "requires": { +        "querystringify": "1.0.0", +        "requires-port": "1.0.0" +      }, +      "dependencies": { +        "querystringify": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", +          "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", +          "dev": true +        } +      } +    }, +    "util": { +      "version": "0.10.3", +      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", +      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", +      "requires": { +        "inherits": "2.0.1" +      }, +      "dependencies": { +        "inherits": { +          "version": "2.0.1", +          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", +          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" +        } +      } +    }, +    "util-deprecate": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", +      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" +    }, +    "utils-merge": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", +      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", +      "dev": true +    }, +    "uuid": { +      "version": "3.1.0", +      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", +      "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" +    }, +    "validate-npm-package-license": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", +      "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", +      "requires": { +        "spdx-correct": "1.0.2", +        "spdx-expression-parse": "1.0.4" +      } +    }, +    "vary": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", +      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", +      "dev": true +    }, +    "vendors": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", +      "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=" +    }, +    "verror": { +      "version": "1.10.0", +      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", +      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", +      "requires": { +        "assert-plus": "1.0.0", +        "core-util-is": "1.0.2", +        "extsprintf": "1.3.0" +      }, +      "dependencies": { +        "assert-plus": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" +        } +      } +    }, +    "viewport-dimensions": { +      "version": "0.2.0", +      "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz", +      "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=" +    }, +    "vm-browserify": { +      "version": "0.0.4", +      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", +      "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", +      "requires": { +        "indexof": "0.0.1" +      } +    }, +    "walker": { +      "version": "1.0.7", +      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", +      "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", +      "dev": true, +      "requires": { +        "makeerror": "1.0.11" +      } +    }, +    "watch": { +      "version": "0.18.0", +      "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", +      "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", +      "dev": true, +      "requires": { +        "exec-sh": "0.2.1", +        "minimist": "1.2.0" +      }, +      "dependencies": { +        "minimist": { +          "version": "1.2.0", +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", +          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", +          "dev": true +        } +      } +    }, +    "watchpack": { +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", +      "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", +      "requires": { +        "async": "2.4.1", +        "chokidar": "1.7.0", +        "graceful-fs": "4.1.11" +      } +    }, +    "wbuf": { +      "version": "1.7.2", +      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", +      "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", +      "dev": true, +      "requires": { +        "minimalistic-assert": "1.0.0" +      } +    }, +    "webidl-conversions": { +      "version": "4.0.2", +      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", +      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", +      "dev": true +    }, +    "webpack": { +      "version": "3.10.0", +      "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", +      "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", +      "requires": { +        "acorn": "5.2.1", +        "acorn-dynamic-import": "2.0.2", +        "ajv": "5.5.1", +        "ajv-keywords": "2.1.1", +        "async": "2.4.1", +        "enhanced-resolve": "3.4.1", +        "escope": "3.6.0", +        "interpret": "1.1.0", +        "json-loader": "0.5.7", +        "json5": "0.5.1", +        "loader-runner": "2.3.0", +        "loader-utils": "1.1.0", +        "memory-fs": "0.4.1", +        "mkdirp": "0.5.1", +        "node-libs-browser": "2.1.0", +        "source-map": "0.5.7", +        "supports-color": "4.5.0", +        "tapable": "0.2.8", +        "uglifyjs-webpack-plugin": "0.4.6", +        "watchpack": "1.4.0", +        "webpack-sources": "1.1.0", +        "yargs": "8.0.2" +      }, +      "dependencies": { +        "ansi-regex": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", +          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" +        }, +        "camelcase": { +          "version": "4.1.0", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", +          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "is-fullwidth-code-point": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", +          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" +        }, +        "load-json-file": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", +          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", +          "requires": { +            "graceful-fs": "4.1.11", +            "parse-json": "2.2.0", +            "pify": "2.3.0", +            "strip-bom": "3.0.0" +          } +        }, +        "os-locale": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", +          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", +          "requires": { +            "execa": "0.7.0", +            "lcid": "1.0.0", +            "mem": "1.1.0" +          } +        }, +        "path-type": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", +          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", +          "requires": { +            "pify": "2.3.0" +          } +        }, +        "pify": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" +        }, +        "read-pkg": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", +          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", +          "requires": { +            "load-json-file": "2.0.0", +            "normalize-package-data": "2.4.0", +            "path-type": "2.0.0" +          } +        }, +        "read-pkg-up": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", +          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", +          "requires": { +            "find-up": "2.1.0", +            "read-pkg": "2.0.0" +          } +        }, +        "string-width": { +          "version": "2.1.1", +          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", +          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", +          "requires": { +            "is-fullwidth-code-point": "2.0.0", +            "strip-ansi": "4.0.0" +          } +        }, +        "strip-ansi": { +          "version": "4.0.0", +          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", +          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", +          "requires": { +            "ansi-regex": "3.0.0" +          } +        }, +        "strip-bom": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", +          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        }, +        "which-module": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", +          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" +        }, +        "yargs": { +          "version": "8.0.2", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", +          "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", +          "requires": { +            "camelcase": "4.1.0", +            "cliui": "3.2.0", +            "decamelize": "1.2.0", +            "get-caller-file": "1.0.2", +            "os-locale": "2.1.0", +            "read-pkg-up": "2.0.0", +            "require-directory": "2.1.1", +            "require-main-filename": "1.0.1", +            "set-blocking": "2.0.0", +            "string-width": "2.1.1", +            "which-module": "2.0.0", +            "y18n": "3.2.1", +            "yargs-parser": "7.0.0" +          } +        }, +        "yargs-parser": { +          "version": "7.0.0", +          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", +          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", +          "requires": { +            "camelcase": "4.1.0" +          } +        } +      } +    }, +    "webpack-dev-middleware": { +      "version": "1.12.2", +      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", +      "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", +      "dev": true, +      "requires": { +        "memory-fs": "0.4.1", +        "mime": "1.6.0", +        "path-is-absolute": "1.0.1", +        "range-parser": "1.2.0", +        "time-stamp": "2.0.0" +      }, +      "dependencies": { +        "mime": { +          "version": "1.6.0", +          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", +          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", +          "dev": true +        } +      } +    }, +    "webpack-dev-server": { +      "version": "2.9.1", +      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz", +      "integrity": "sha512-qFKs4Wg6JI6FkAQ6WFqeDCCxXEBLsDHkqJB3f9tmlqx8C68Y9vQWwcaMT4Q9H8WF32Q6QUNmgK4qQkdHfXvj/g==", +      "dev": true, +      "requires": { +        "ansi-html": "0.0.7", +        "array-includes": "3.0.3", +        "bonjour": "3.5.0", +        "chokidar": "1.7.0", +        "compression": "1.7.1", +        "connect-history-api-fallback": "1.5.0", +        "del": "3.0.0", +        "express": "4.16.2", +        "html-entities": "1.2.1", +        "http-proxy-middleware": "0.17.4", +        "internal-ip": "1.2.0", +        "ip": "1.1.5", +        "loglevel": "1.6.0", +        "opn": "5.1.0", +        "portfinder": "1.0.13", +        "selfsigned": "1.10.1", +        "serve-index": "1.9.1", +        "sockjs": "0.3.18", +        "sockjs-client": "1.1.4", +        "spdy": "3.4.7", +        "strip-ansi": "3.0.1", +        "supports-color": "4.5.0", +        "webpack-dev-middleware": "1.12.2", +        "yargs": "6.6.0" +      }, +      "dependencies": { +        "camelcase": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", +          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", +          "dev": true +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        }, +        "yargs": { +          "version": "6.6.0", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", +          "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", +          "dev": true, +          "requires": { +            "camelcase": "3.0.0", +            "cliui": "3.2.0", +            "decamelize": "1.2.0", +            "get-caller-file": "1.0.2", +            "os-locale": "1.4.0", +            "read-pkg-up": "1.0.1", +            "require-directory": "2.1.1", +            "require-main-filename": "1.0.1", +            "set-blocking": "2.0.0", +            "string-width": "1.0.2", +            "which-module": "1.0.0", +            "y18n": "3.2.1", +            "yargs-parser": "4.2.1" +          } +        }, +        "yargs-parser": { +          "version": "4.2.1", +          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", +          "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", +          "dev": true, +          "requires": { +            "camelcase": "3.0.0" +          } +        } +      } +    }, +    "webpack-manifest-plugin": { +      "version": "1.3.2", +      "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz", +      "integrity": "sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==", +      "requires": { +        "fs-extra": "0.30.0", +        "lodash": "4.17.4" +      } +    }, +    "webpack-sources": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", +      "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", +      "requires": { +        "source-list-map": "2.0.0", +        "source-map": "0.6.1" +      }, +      "dependencies": { +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        } +      } +    }, +    "websocket-driver": { +      "version": "0.7.0", +      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", +      "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", +      "dev": true, +      "requires": { +        "http-parser-js": "0.4.9", +        "websocket-extensions": "0.1.3" +      } +    }, +    "websocket-extensions": { +      "version": "0.1.3", +      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", +      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", +      "dev": true +    }, +    "whatwg-encoding": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", +      "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", +      "dev": true, +      "requires": { +        "iconv-lite": "0.4.19" +      } +    }, +    "whatwg-fetch": { +      "version": "2.0.3", +      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", +      "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" +    }, +    "whatwg-url": { +      "version": "4.8.0", +      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", +      "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", +      "dev": true, +      "requires": { +        "tr46": "0.0.3", +        "webidl-conversions": "3.0.1" +      }, +      "dependencies": { +        "webidl-conversions": { +          "version": "3.0.1", +          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", +          "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", +          "dev": true +        } +      } +    }, +    "whet.extend": { +      "version": "0.9.9", +      "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", +      "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" +    }, +    "which": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", +      "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", +      "requires": { +        "isexe": "2.0.0" +      } +    }, +    "which-module": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", +      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" +    }, +    "wide-align": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", +      "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", +      "requires": { +        "string-width": "1.0.2" +      } +    }, +    "window-size": { +      "version": "0.1.0", +      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", +      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" +    }, +    "wordwrap": { +      "version": "0.0.2", +      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", +      "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" +    }, +    "worker-farm": { +      "version": "1.5.2", +      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", +      "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", +      "dev": true, +      "requires": { +        "errno": "0.1.5", +        "xtend": "4.0.1" +      } +    }, +    "wrap-ansi": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", +      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", +      "requires": { +        "string-width": "1.0.2", +        "strip-ansi": "3.0.1" +      } +    }, +    "wrappy": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", +      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" +    }, +    "write-file-atomic": { +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", +      "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", +      "dev": true, +      "requires": { +        "graceful-fs": "4.1.11", +        "imurmurhash": "0.1.4", +        "signal-exit": "3.0.2" +      } +    }, +    "xml-name-validator": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", +      "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", +      "dev": true +    }, +    "xtend": { +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", +      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" +    }, +    "y18n": { +      "version": "3.2.1", +      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", +      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" +    }, +    "yallist": { +      "version": "2.1.2", +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", +      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" +    }, +    "yargs": { +      "version": "7.1.0", +      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", +      "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", +      "requires": { +        "camelcase": "3.0.0", +        "cliui": "3.2.0", +        "decamelize": "1.2.0", +        "get-caller-file": "1.0.2", +        "os-locale": "1.4.0", +        "read-pkg-up": "1.0.1", +        "require-directory": "2.1.1", +        "require-main-filename": "1.0.1", +        "set-blocking": "2.0.0", +        "string-width": "1.0.2", +        "which-module": "1.0.0", +        "y18n": "3.2.1", +        "yargs-parser": "5.0.0" +      }, +      "dependencies": { +        "camelcase": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", +          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" +        } +      } +    }, +    "yargs-parser": { +      "version": "5.0.0", +      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", +      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", +      "requires": { +        "camelcase": "3.0.0" +      }, +      "dependencies": { +        "camelcase": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", +          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" +        } +      } +    } +  } +} diff --git a/package.json b/package.json index a4791a452..89c194653 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,12 @@    "devDependencies": {      "clean-webpack-plugin": "0.1.17",      "es6-object-assign": "1.0.3", +    "grunt": "^1.0.1", +    "grunt-contrib-watch": "^1.0.0", +    "grunt-watch-change": "^0.1.1",      "jest": "21.2.1", +    "jest-context": "^2.1.0", +    "jest-set": "^2.0.0",      "react-addons-test-utils": "15.3.2",      "sinon": "1.17.7",      "uglify-js": "3.1.3", @@ -41,7 +46,9 @@        "<rootDir>/spec/javascript"      ],      "setupFiles": [ -      "<rootDir>/spec/javascript/spec_helper.js" +      "<rootDir>/spec/javascript/spec_helper.js", +      "jest-context/setup", +      "jest-set/setup"      ]    }  } diff --git a/spec/controllers/autocomplete_purchase_windows_controller_spec.rb b/spec/controllers/autocomplete_purchase_windows_controller_spec.rb new file mode 100644 index 000000000..cea600ea8 --- /dev/null +++ b/spec/controllers/autocomplete_purchase_windows_controller_spec.rb @@ -0,0 +1,33 @@ +require 'rails_helper' + +RSpec.describe AutocompletePurchaseWindowsController, type: :controller do +  login_user + +  let(:referential) { Referential.first } +  let!(:window) { create :purchase_window, referential: referential, name: 'écolà militaire' } + +  describe 'GET #index' do +    it 'should be unauthorized' do +      expect { get(:index, referential_id: referential.id) }.to raise_error(FeatureChecker::NotAuthorizedError) +    end + +    with_feature "purchase_windows" do +      let(:request){ get(:index, referential_id: referential.id) } +      before do +        request +      end + +      it 'should be successful' do +        expect(response).to be_success +      end + +      context 'search by name' do +        let(:request){ get :index, referential_id: referential.id, q: {name_or_objectid_cont_any: 'écolà'}, :format => :json } +        it 'should be successful' do +          expect(response).to be_success +          expect(assigns(:purchase_windows)).to eq([window]) +        end +      end +    end +  end +end diff --git a/spec/controllers/journey_patterns_collections_controller_spec.rb b/spec/controllers/journey_patterns_collections_controller_spec.rb index 7015bfe98..a3efbc23f 100644 --- a/spec/controllers/journey_patterns_collections_controller_spec.rb +++ b/spec/controllers/journey_patterns_collections_controller_spec.rb @@ -10,6 +10,7 @@ RSpec.describe JourneyPatternsCollectionsController, :type => :controller do      before do        allow(controller).to receive(:pundit_user).and_return(user_context) +      allow(controller).to receive(:current_organisation).and_return(@user.organisation)      end      it 'computes them correctly if not authorized' do diff --git a/spec/controllers/vehicle_journeys_controller_spec.rb b/spec/controllers/vehicle_journeys_controller_spec.rb index c9356fffa..416450c21 100644 --- a/spec/controllers/vehicle_journeys_controller_spec.rb +++ b/spec/controllers/vehicle_journeys_controller_spec.rb @@ -10,6 +10,7 @@ RSpec.describe VehicleJourneysController, :type => :controller do      before do        allow(controller).to receive(:pundit_user).and_return(user_context) +      allow(controller).to receive(:current_organisation).and_return(@user.organisation)      end      it 'computes them correctly if not authorized' do diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb index 585636124..a7fe0a162 100644 --- a/spec/db/schema_spec.rb +++ b/spec/db/schema_spec.rb @@ -44,6 +44,6 @@ Diff: #{diff}    def diff      RSpec::Support::Differ.new(        color: RSpec::Matchers.configuration.color? -    ).diff_as_string(@expected, @original) +    ).diff_as_string(@original, @expected)    end  end diff --git a/spec/javascript/routes/reducers/stop_points_spec.js b/spec/javascript/routes/reducers/stop_points_spec.js index b375cdc2c..124618f9d 100644 --- a/spec/javascript/routes/reducers/stop_points_spec.js +++ b/spec/javascript/routes/reducers/stop_points_spec.js @@ -1,7 +1,17 @@  import stopPointsReducer from '../../../../app/javascript/routes/reducers/stopPoints' +import formHelper from '../../../../app/javascript/routes/form_helper' +import _ from 'lodash' + + //  _  _ ___ _    ___ ___ ___  ___ + // | || | __| |  | _ \ __| _ \/ __| + // | __ | _|| |__|  _/ _||   /\__ \ + // |_||_|___|____|_| |___|_|_\|___/ + //  let state = [] +formHelper.addInput = (...args)=>{} +  let fakeData = {    geometry: undefined,    registration_number: 'rn_test', @@ -10,34 +20,47 @@ let fakeData = {    user_objectid: 'uoid_test'  } +let update_stop_point = (stop_point, opts) => { +  return _.assign({}, stop_point, opts) +} + +let stop_point = (opts) => { +  return _.assign({}, +    { +      text: "", +      index: 0, +      edit: false, +      for_boarding: 'normal', +      for_alighting: 'normal', +      olMap: { isOpened: false, json: {} } +    }, +    opts +  ) +} + +let stop_point_1 = stop_point({text: 'first',  index: 0, stoppoint_id: 72 }) +let stop_point_2 = stop_point({text: 'second', index: 1, stoppoint_id: 73 }) +let stop_point_3 = stop_point({text: 'third',  index: 2, stoppoint_id: 74 }) + +let it_should_handle = (action, final_state, custom_state=null) => { +  it("should handle "+ action.type, () => { +    expect( +      stopPointsReducer(custom_state || state, action) +    ).toEqual( final_state ) +  }) +} + + + //  ___ ___ ___ ___ ___ + // / __| _ \ __/ __/ __| + // \__ \  _/ _| (__\__ \ + // |___/_| |___\___|___/ + // + +  describe('stops reducer', () => {    beforeEach(()=>{ -    state = [ -      { -        text: 'first', -        index: 0, -        stoppoint_id: 72, -        edit: false, -        for_boarding: 'normal', -        for_alighting: 'normal', -        olMap: { -          isOpened: false, -          json: {} -        } -      }, -      { -        text: 'second', -        index: 1, -        stoppoint_id: 73, -        edit: false, -        for_boarding: 'normal', -        for_alighting: 'normal', -        olMap: { -          isOpened: false, -          json: {} -        } -      } -    ] +    state = [ stop_point_1, stop_point_2, stop_point_3 ]    })    it('should return the initial state', () => { @@ -46,441 +69,124 @@ describe('stops reducer', () => {      ).toEqual([])    }) -  it('should handle ADD_STOP', () => { -    expect( -      stopPointsReducer(state, { -        type: 'ADD_STOP' -      }) -    ).toEqual( -      [ -        { -          text: 'first', -          index: 0, -          stoppoint_id: 72, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        }, -        { -          text: 'second', -          index: 1, -          stoppoint_id: 73, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        }, -        { -          text: '', -          index: 2, -          edit: true, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +  it_should_handle( +    {type: "ADD_STOP"}, +    [stop_point_1, stop_point_2, stop_point_3, stop_point({index: 3, edit: true})] +  ) -  it('should handle MOVE_UP_STOP', () => { -    expect( -      stopPointsReducer(state, { -        type: 'MOVE_STOP_UP', -        index: 1 -      }) -    ).toEqual( -      [ -        { -          text: 'second', -          index: 1, -          stoppoint_id: 72, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        }, -        { -          text: 'first', -          index: 0, -          stoppoint_id: 73, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +  it_should_handle( +    {type: 'MOVE_STOP_UP', index: 1}, +    [ update_stop_point(stop_point_2, {index: 0}), update_stop_point(stop_point_1, {index: 1}), stop_point_3 ] +  ) -  it('should handle MOVE_DOWN_STOP', () => { -    expect( -      stopPointsReducer(state, { -        type: 'MOVE_STOP_DOWN', -        index: 0 -      }) -    ).toEqual( -      [ -        { -          text: 'second', -          index: 1, -          stoppoint_id: 72, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        }, -        { -          text: 'first', -          index: 0, -          stoppoint_id: 73, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +  it_should_handle( +    {type: 'MOVE_STOP_DOWN', index: 0}, +    [ update_stop_point(stop_point_2, {index: 0}), update_stop_point(stop_point_1, {index: 1}), stop_point_3 ] +  ) -  // it('should handle DELETE_STOP', () => { -  //   expect( -  //     stopPointsReducer(state, { -  //       type: 'DELETE_STOP', -  //       index: 1 -  //     }) -  //   ).toEqual( -  //     [ -  //       { -  //         text: 'first', -  //         index: 0, -  //         stoppoint_id: 72, -  //         edit: false, -  //         for_boarding: 'normal', -  //         for_alighting: 'normal', -  //         olMap: { -  //           isOpened: false, -  //           json: {} -  //         } -  //       } -  //     ] -  //   ) -  // }) +  it_should_handle( +    {type: 'DELETE_STOP', index: 1}, +    [stop_point_1, stop_point_3] +  ) -  it('should handle UPDATE_INPUT_VALUE', () => { -    expect( -      stopPointsReducer(state, { -        type: 'UPDATE_INPUT_VALUE', -        index: 0, -        edit: false, -        text: { -          text: "new value", -          name: 'new', -          stoparea_id: 1, -          user_objectid: "1234", -          longitude: 123, -          latitude: 123, -          registration_number: '0', -          city_name: 'city', -          area_type: 'area', -          short_name: 'new', -          comment: 'newcomment' -        } -      }) -    ).toEqual( -      [ -        { -          text: 'new value', -          name: 'new', -          index: 0, -          stoppoint_id: 72, -          edit: false, -          stoparea_id: 1, -          for_boarding: 'normal', -          for_alighting: 'normal', -          user_objectid: "1234", -          longitude: 123, -          latitude: 123, -          registration_number: '0', -          city_name: 'city', -          area_type: 'area', -          short_name: 'new', -          comment: 'newcomment', -          olMap: { -            isOpened: false, -            json: {} -          } -        }, -        { -          text: 'second', -          index: 1, -          stoppoint_id: 73, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +  let text = { +    text: "new value", +    name: 'new', +    stoparea_id: 1, +    user_objectid: "1234", +    longitude: 123, +    latitude: 123, +    registration_number: '0', +    city_name: 'city', +    area_type: 'area', +    short_name: 'new', +    comment: 'newcomment' +  } +  it_should_handle( +    {type: 'UPDATE_INPUT_VALUE', index: 0, text: text}, +    [ +      update_stop_point(stop_point_1, text), +      stop_point_2, +      stop_point_3 +    ] +  ) -  it('should handle UPDATE_SELECT_VALUE', () => { -    expect( -      stopPointsReducer(state, { -        type :'UPDATE_SELECT_VALUE', -        select_id: 'for_boarding', -        select_value: 'prohibited', -        index: 0 -      }) -    ).toEqual( -      [ -        { -          text: 'first', -          index: 0, -          stoppoint_id: 72, -          edit: false, -          for_boarding: 'prohibited', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        }, -        { -          text: 'second', -          index: 1, -          stoppoint_id: 73, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +  it_should_handle( +    {type: 'UPDATE_SELECT_VALUE', index: 0, select_id: 'for_boarding', select_value: 'prohibited'}, +    [ +      update_stop_point(stop_point_1, {for_boarding: 'prohibited'}), +      stop_point_2, +      stop_point_3 +    ] +  ) -  it('should handle TOGGLE_MAP', () => { -    expect( -      stopPointsReducer(state, { -        type: 'TOGGLE_MAP', -        index: 0 -      }) -    ).toEqual( -      [ -        { +  it_should_handle( +    {type: 'TOGGLE_MAP', index: 0}, +    [ +      update_stop_point(stop_point_1, {olMap: { +        isOpened: true, +        json: {            text: 'first',            index: 0,            stoppoint_id: 72,            edit: false,            for_boarding: 'normal',            for_alighting: 'normal', -          olMap: { -            isOpened: true, -            json: { -              text: 'first', -              index: 0, -              stoppoint_id: 72, -              edit: false, -              for_boarding: 'normal', -              for_alighting: 'normal', -              olMap: undefined -            } -          } -        }, -        { -          text: 'second', -          index: 1, -          stoppoint_id: 73, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } +          olMap: undefined          } -      ] -    ) -  }) +      }}), +      stop_point_2, +      stop_point_3 +    ] +  ) -  it('should handle TOGGLE_EDIT', () => { -    expect( -      stopPointsReducer(state, { -        type: 'TOGGLE_EDIT', -        index: 0 -      }) -    ).toEqual( -      [ -        { -          text: 'first', -          index: 0, -          stoppoint_id: 72, -          edit: true, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        }, -        { -          text: 'second', -          index: 1, -          stoppoint_id: 73, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +  it_should_handle( +    {type: 'TOGGLE_EDIT', index: 0}, +    [ +      update_stop_point(stop_point_1, {edit: true}), +      stop_point_2, +      stop_point_3 +    ] +  ) -  it('should handle SELECT_MARKER', () => { -    let openedMapState = [ -      { -        text: 'first', -        index: 0, -        edit: false, -        for_boarding: 'normal', -        for_alighting: 'normal', -        olMap: { -          isOpened: true, -          json: {} -        } -      }, -      { -        text: 'second', -        index: 1, -        edit: false, -        for_boarding: 'normal', -        for_alighting: 'normal', -        olMap: { -          isOpened: false, -          json: {} -        } +  let openedMapState = [ +    update_stop_point(stop_point_1, { +      olMap: { +        isOpened: true, +        json: {}        } -    ] -    expect( -      stopPointsReducer(openedMapState, { -        type: 'SELECT_MARKER', -        index: 0, -        data: fakeData -      }) -    ).toEqual( -      [ -        { -          text: 'first', -          index: 0, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: true, -            json: fakeData -          } -        }, -        { -          text: 'second', -          index: 1, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +    }), +    stop_point_2, +    stop_point_3 +  ] -  it('should handle UNSELECT_MARKER', () => { -    let openedMapState = [ -      { -        text: 'first', -        index: 0, -        edit: false, -        for_boarding: 'normal', -        for_alighting: 'normal', +  it_should_handle( +    {type: 'SELECT_MARKER', index: 0, data: fakeData}, +    [ +      update_stop_point(stop_point_1, {          olMap: {            isOpened: true, -          json: {} -        } -      }, -      { -        text: 'second', -        index: 1, -        edit: false, -        for_boarding: 'normal', -        for_alighting: 'normal', +          json: fakeData +        } +      }), +      stop_point_2, +      stop_point_3 +    ], +    openedMapState +  ) + +  it_should_handle( +    {type: 'UNSELECT_MARKER', index: 0}, +    [ +      update_stop_point(stop_point_1, {          olMap: { -          isOpened: false, +          isOpened: true,            json: {}          } -      } -    ] - -    expect( -      stopPointsReducer(openedMapState, { -        type: 'UNSELECT_MARKER', -        index: 0 -      }) -    ).toEqual( -      [ -        { -          text: 'first', -          index: 0, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: true, -            json: {} -          } -        }, -        { -          text: 'second', -          index: 1, -          edit: false, -          for_boarding: 'normal', -          for_alighting: 'normal', -          olMap: { -            isOpened: false, -            json: {} -          } -        } -      ] -    ) -  }) +      }), +      stop_point_2, +      stop_point_3 +    ], +    openedMapState +  )  }) diff --git a/spec/javascript/vehicle_journeys/actions_spec.js b/spec/javascript/vehicle_journeys/actions_spec.js index 74765a7ef..3af19ebc3 100644 --- a/spec/javascript/vehicle_journeys/actions_spec.js +++ b/spec/javascript/vehicle_journeys/actions_spec.js @@ -209,6 +209,13 @@ describe('when clicking on edit notes modal', () => {      expect(actions.openNotesEditModal(vehicleJourney)).toEqual(expectedAction)    })  }) + + //  ___ ___   ___ _____ _  _  ___ _____ ___ ___ + // | __/ _ \ / _ \_   _| \| |/ _ \_   _| __/ __| + // | _| (_) | (_) || | | .` | (_) || | | _|\__ \ + // |_| \___/ \___/ |_| |_|\_|\___/ |_| |___|___/ + // +  describe('when clicking on a footnote button inside footnote modal', () => {    it('should create an action to toggle this footnote', () => {      const footnote = {}, isShown = true @@ -230,6 +237,13 @@ describe('when clicking on validate button inside footnote modal', () => {      expect(actions.editVehicleJourneyNotes(footnotes)).toEqual(expectedAction)    })  }) + + //  _____ ___ __  __ ___ _____ _   ___ _    ___ ___ + // |_   _|_ _|  \/  | __|_   _/_\ | _ ) |  | __/ __| + //   | |  | || |\/| | _|  | |/ _ \| _ \ |__| _|\__ \ + //   |_| |___|_|  |_|___| |_/_/ \_\___/____|___|___/ + // +  describe('when clicking on calendar button in toolbox', () => {    it('should create an action to open calendar modal', () => {      const vehicleJourneys = [] @@ -288,6 +302,83 @@ describe('when using select2 to pick a timetable', () => {      expect(actions.selectTTCalendarsModal(selectedTT)).toEqual(expectedAction)    })  }) + + //  ___ _   _ ___  ___ _  _   _   ___ ___ + // | _ \ | | | _ \/ __| || | /_\ / __| __| + // |  _/ |_| |   / (__| __ |/ _ \\__ \ _| + // |_|  \___/|_|_\\___|_||_/_/_\_\___/___|__ + // \ \    / /_ _| \| |   \ / _ \ \    / / __| + //  \ \/\/ / | || .` | |) | (_) \ \/\/ /\__ \ + //   \_/\_/ |___|_|\_|___/ \___/ \_/\_/ |___/ + // + +describe('when clicking on purchase window button in toolbox', () => { +  it('should create an action to open purchase window modal', () => { +    const vehicleJourneys = [] +    const expectedAction = { +      type: 'EDIT_PURCHASE_WINDOWS_VEHICLEJOURNEY_MODAL', +      vehicleJourneys +    } +    expect(actions.openPurchaseWindowsEditModal(vehicleJourneys)).toEqual(expectedAction) +  }) +}) +describe('when clicking on delete button next to a purchase window inside modal', () => { +  it('should create an action to delete purchase window from selected vehicle journeys', () => { +    const purchaseWindow = {} +    const expectedAction = { +      type: 'DELETE_PURCHASE_WINDOW_MODAL', +      purchaseWindow +    } +    expect(actions.deletePurchaseWindowsModal(purchaseWindow)).toEqual(expectedAction) +  }) +}) +describe('when clicking on validate button inside purchase windows modal', () => { +  it('should create an action to update vj purchase windows', () => { +    const vehicleJourneys = [] +    const purchase_windows = [] +    const expectedAction = { +      type: 'EDIT_VEHICLEJOURNEYS_PURCHASE_WINDOWS', +      vehicleJourneys, +      purchase_windows +    } +    expect(actions.editVehicleJourneyPurchaseWindows(vehicleJourneys, purchase_windows)).toEqual(expectedAction) +  }) +}) +describe('when clicking on add button inside purchase windows modal', () => { +  it('should create an action to add the selected purchase window to preselected vjs', () => { +    const expectedAction = { +      type: 'ADD_SELECTED_PURCHASE_WINDOW', +    } +    expect(actions.addSelectedPurchaseWindow()).toEqual(expectedAction) +  }) +}) +describe('when using select2 to pick a purchase window', () => { +  it('should create an action to select a purchase window inside modal', () => { +    let selectedTT = { +      id: 1, +      objectid: 2, +      name: 'test', +      color: 'color', +    } +    const expectedAction = { +      type: 'SELECT_PURCHASE_WINDOW_MODAL', +      selectedItem:{ +        id: selectedTT.id, +        objectid: selectedTT.objectid, +        name: selectedTT.name, +        color: "color" +      } +    } +    expect(actions.selectPurchaseWindowsModal(selectedTT)).toEqual(expectedAction) +  }) +}) + + //  ___ ___ _  _____ ___ ___  ___ + // | __|_ _| ||_   _| __| _ \/ __| + // | _| | || |__| | | _||   /\__ \ + // |_| |___|____|_| |___|_|_\|___/ + // +  describe('when clicking on reset button inside query filters', () => {    it('should create an action to reset the query filters', () => {      const expectedAction = { @@ -447,3 +538,84 @@ describe('when using select2 to unselect a company', () => {      expect(actions.unselect2Company()).toEqual(expectedAction)    })  }) + +describe('actions.adjustSchedule', () => { +  set('time', () => { +    return { +      hour: 9, +      minute: 30 +    } +  }) +  context('when editing the departure time', () => { +    set('action', () => { return { isDeparture: true } }) +    context('with a positive delta', () => { +      set('schedule', () => { +        return { +          departure_time: time, +          arrival_time: time +        } +      }) +      it('should do nothing', () => { +        expect(actions.adjustSchedule(action, schedule)).toEqual(schedule) +      }) +    }), +    context('with a delta < 0', () => { +      set('departure_time', () => { +        return { +          hour: time.hour, +          minute: time.minute - 1 +        } +      }) +      set('schedule', () => { +        return { +          departure_time: departure_time, +          arrival_time: time +        } +      }) +      it('should adjust arrival time', () => { +        let expected = { +          departure_time: departure_time, +          arrival_time: departure_time, +          delta: 0 +        } +        expect(actions.adjustSchedule(action, schedule)).toEqual(expected) +      }) +    }) +  }), +  context('when editing the arrival time', () => { +    set('action', () => { return { isDeparture: false } }) +    context('with a positive delta', () => { +      set('schedule', () => { +        return { +          departure_time: time, +          arrival_time: time +        } +      }) +      it('should do nothing', () => { +        expect(actions.adjustSchedule(action, schedule)).toEqual(schedule) +      }) +    }), +    context('with a delta < 0', () => { +      set('arrival_time', () => { +        return { +          hour: time.hour, +          minute: time.minute + 1 +        } +      }) +      set('schedule', () => { +        return { +          departure_time: time, +          arrival_time: arrival_time +        } +      }) +      it('should adjust departure time', () => { +        let expected = { +          departure_time: arrival_time, +          arrival_time: arrival_time, +          delta: 0 +        } +        expect(actions.adjustSchedule(action, schedule)).toEqual(expected) +      }) +    }) +  }) +}) diff --git a/spec/javascript/vehicle_journeys/reducers/modal_spec.js b/spec/javascript/vehicle_journeys/reducers/modal_spec.js index 69de9168b..ea8a002d2 100644 --- a/spec/javascript/vehicle_journeys/reducers/modal_spec.js +++ b/spec/javascript/vehicle_journeys/reducers/modal_spec.js @@ -91,6 +91,12 @@ describe('modal reducer', () => {      ).toEqual(newState)    }) +   //  _____ ___ __  __ ___ _____ _   ___ _    ___ ___ +   // |_   _|_ _|  \/  | __|_   _/_\ | _ ) |  | __/ __| +   //   | |  | || |\/| | _|  | |/ _ \| _ \ |__| _|\__ \ +   //   |_| |___|_|  |_|___| |_/_/ \_\___/____|___|___/ +   // +    it('should handle EDIT_CALENDARS_VEHICLEJOURNEY_MODAL', () => {      let vehicleJourneys = []      let modalPropsResult = { @@ -158,6 +164,82 @@ describe('modal reducer', () => {      ).toEqual(newState)    }) +  //  ___ _   _ ___  ___ _  _   _   ___ ___ +  // | _ \ | | | _ \/ __| || | /_\ / __| __| +  // |  _/ |_| |   / (__| __ |/ _ \\__ \ _| +  // |_|  \___/|_|_\\___|_||_/_/_\_\___/___|__ +  // \ \    / /_ _| \| |   \ / _ \ \    / / __| +  //  \ \/\/ / | || .` | |) | (_) \ \/\/ /\__ \ +  //   \_/\_/ |___|_|\_|___/ \___/ \_/\_/ |___/ +  // + +  it('should handle EDIT_PURCHASE_WINDOWS_VEHICLEJOURNEY_MODAL', () => { +    let vehicleJourneys = [] +    let modalPropsResult = { +      vehicleJourneys: [], +      purchase_windows: [] +    } +    expect( +      modalReducer(state, { +        type: 'EDIT_PURCHASE_WINDOWS_VEHICLEJOURNEY_MODAL', +        vehicleJourneys +      }) +    ).toEqual(Object.assign({}, state, {type: 'purchase_windows_edit', modalProps: modalPropsResult})) +  }) + +  it('should handle SELECT_PURCHASE_WINDOW_MODAL', () => { +    let newModalProps = {selectedPurchaseWindow : {id: 1}} +    expect( +      modalReducer(state, { +        type: 'SELECT_PURCHASE_WINDOW_MODAL', +        selectedItem: {id: 1} +      }) +    ).toEqual(Object.assign({}, state, {modalProps: newModalProps})) +  }) + +  it('should handle ADD_SELECTED_PURCHASE_WINDOW', () => { +    let fakeWindows = [{'test': 'test'}, {'test 2': 'test 2'}] +    let newWindows = [{'test': 'test'}, {'test 2': 'test 2'}, {'add': 'add'}] +    let fakeVehicleJourneys= [{purchase_windows: fakeWindows}, {purchase_windows: newWindows}] +    state.modalProps.vehicleJourneys = fakeVehicleJourneys +    state.modalProps.purchase_windows = fakeWindows +    state.modalProps.selectedPurchaseWindow = {'add': 'add'} +    let newState = { +      type: '', +      modalProps:{ +        vehicleJourneys: fakeVehicleJourneys, +        purchase_windows: [{'test': 'test'},{'test 2': 'test 2'},{'add': 'add'}], +        selectedPurchaseWindow: {'add': 'add'} +      }, +      confirmModal: {} +    } +    expect( +      modalReducer(state, { +        type: 'ADD_SELECTED_PURCHASE_WINDOW', +      }) +    ).toEqual(newState) +  }) + +  it('should handle DELETE_PURCHASE_WINDOW_MODAL', () => { +    let deletableWindow = {'delete': 'delete'} +    let fakeWindows = [{'test': 'test'}, {'test 2': 'test 2'}, deletableWindow] +    let newWindows = [{'test': 'test'}, {'test 2': 'test 2'}] +    let fakeVehicleJourneys= [{purchase_windows: fakeWindows}, {purchase_windows: newWindows}] +    state.modalProps = Object.assign({}, state.modalProps,{vehicleJourneys : fakeVehicleJourneys, purchase_windows: fakeWindows }) +    let newState = { +      // for the sake of the test, no need to specify the type +      type: '', +      modalProps:{vehicleJourneys: [{purchase_windows: newWindows},{purchase_windows: newWindows}], purchase_windows: newWindows}, +      confirmModal: {} +    } +    expect( +      modalReducer(state, { +        type: 'DELETE_PURCHASE_WINDOW_MODAL', +        purchaseWindow: deletableWindow +      }) +    ).toEqual(newState) +  }) +    it('should handle SELECT_CP_EDIT_MODAL', () => {      let newModalProps = {selectedCompany : {name: 'ALBATRANS'}}      expect( diff --git a/spec/javascript/vehicle_journeys/reducers/vehicle_journeys_spec.js b/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js index 1c2cc1577..28de241ee 100644 --- a/spec/javascript/vehicle_journeys/reducers/vehicle_journeys_spec.js +++ b/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js @@ -110,6 +110,7 @@ describe('vehicleJourneys reducer', () => {        objectid: '',        footnotes: [],        time_tables: [], +      purchase_windows: [],        vehicle_journey_at_stops: pristineVjasList,        selected: false,        deletable: false, @@ -254,7 +255,6 @@ describe('vehicleJourneys reducer', () => {      ).toEqual([newVJ, state[1]])    }) -    it('should handle EDIT_VEHICLEJOURNEYS_TIMETABLES', () => {      let newState = JSON.parse(JSON.stringify(state))      newState[0].time_tables = [fakeTimeTables[0]] @@ -266,4 +266,16 @@ describe('vehicleJourneys reducer', () => {        })      ).toEqual(newState)    }) + +  it('should handle EDIT_VEHICLEJOURNEYS_PURCHASE_WINDOWS', () => { +    let newState = JSON.parse(JSON.stringify(state)) +    newState[0].purchase_windows = [fakeTimeTables[0]] +    expect( +      vjReducer(state, { +        type: 'EDIT_VEHICLEJOURNEYS_PURCHASE_WINDOWS', +        vehicleJourneys: state, +        purchase_windows: [fakeTimeTables[0]] +      }) +    ).toEqual(newState) +  })  }) diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index ac9b21ceb..eb2a31794 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -2,6 +2,7 @@ require 'spec_helper'  describe Chouette::VehicleJourney, :type => :model do    it { is_expected.to be_versioned } +  it { should have_and_belong_to_many(:purchase_windows) }    it "must be valid with an at-stop day offset of 1" do      vehicle_journey = create( @@ -76,7 +77,9 @@ describe Chouette::VehicleJourney, :type => :model do        vj.slice('objectid', 'published_journey_name', 'journey_pattern_id', 'company_id').tap do |item|          item['vehicle_journey_at_stops'] = []          item['time_tables']              = [] +        item['purchase_windows']         = []          item['footnotes']                = [] +        item['purchase_windows']         = []          vj.vehicle_journey_at_stops.each do |vjas|            item['vehicle_journey_at_stops'] << vehicle_journey_at_stop_to_state(vjas) @@ -159,6 +162,23 @@ describe Chouette::VehicleJourney, :type => :model do        expect(vehicle_journey.reload.time_tables).to be_empty      end +    it 'should update vj purchase_windows association from state' do +      2.times{state['purchase_windows'] << create(:purchase_window, referential: referential).slice('id', 'name', 'objectid', 'color')} +      vehicle_journey.update_has_and_belongs_to_many_from_state(state) + +      expected = state['purchase_windows'].map{|tt| tt['id']} +      actual   = vehicle_journey.reload.purchase_windows.map(&:id) +      expect(actual).to match_array(expected) +    end + +    it 'should clear vj purchase_windows association when remove from state' do +      vehicle_journey.purchase_windows << create(:purchase_window, referential: referential) +      state['purchase_windows'] = [] +      vehicle_journey.update_has_and_belongs_to_many_from_state(state) + +      expect(vehicle_journey.reload.purchase_windows).to be_empty +    end +      it 'should update vj footnote association from state' do        2.times{state['footnotes'] << create(:footnote, line: route.line).slice('id', 'code', 'label', 'line_id')}        vehicle_journey.update_has_and_belongs_to_many_from_state(state) | 
