#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
- id: "angular-animate@1.7.2"
- id: "angular-cookies@1.7.2"
- id: "angular-multiple-transclusion@1.0.0"
- id: "angular-ui-bootstrap@2.5.6"
- id: "angular-ui-router@0.3.2"
- id: "angular@1.7.2"
- id: "argparse@1.0.10"
- id: "bootstrap@3.3.7"
- id: "codemirror@5.39.2"
- id: "encoding@0.1.12"
- id: "es6-promise@4.2.4"
- id: "esprima@4.0.1"
- id: "font-awesome@4.7.0"
- id: "iconv-lite@0.4.23"
- id: "identicon.js@1.3.0"
- id: "is-stream@1.1.0"
- id: "isomorphic-fetch@2.2.1"
- id: "js-yaml@3.12.0"
- id: "jsonschema@1.2.4"
- id: "jssha@2.3.1"
- id: "lodash@4.17.10"
- id: "node-fetch@1.7.3"
- id: "normalizr@2.3.1"
- id: "rxjs@5.5.11"
- id: "safer-buffer@2.1.2"
- id: "sprintf-js@1.0.3"
- id: "symbol-observable@1.0.1"
- id: "whatwg-fetch@2.0.4"
