chore(doc-gen): refactor versionInfo logic to new `git` dgeni-package
Closes #2444
This commit is contained in:
parent
d7b9345b6d
commit
dee0e008f5
|
@ -1,10 +1,10 @@
|
|||
require('../../tools/transpiler/index.js').init();
|
||||
|
||||
var versionInfo = require('./versionInfo');
|
||||
var Package = require('dgeni').Package;
|
||||
var jsdocPackage = require('dgeni-packages/jsdoc');
|
||||
var nunjucksPackage = require('dgeni-packages/nunjucks');
|
||||
var linksPackage = require('../links-package');
|
||||
var gitPackage = require('dgeni-packages/git');
|
||||
var path = require('canonical-path');
|
||||
|
||||
var PARTIAL_PATH = 'partials';
|
||||
|
@ -12,7 +12,7 @@ var MODULES_DOCS_PATH = PARTIAL_PATH + '/modules';
|
|||
var GUIDES_PATH = PARTIAL_PATH + '/guides';
|
||||
|
||||
// Define the dgeni package for generating the docs
|
||||
module.exports = new Package('angular', [jsdocPackage, nunjucksPackage, linksPackage])
|
||||
module.exports = new Package('angular', [jsdocPackage, nunjucksPackage, linksPackage, gitPackage])
|
||||
|
||||
// Register the services and file readers
|
||||
.factory(require('./services/modules'))
|
||||
|
@ -49,7 +49,7 @@ module.exports = new Package('angular', [jsdocPackage, nunjucksPackage, linksPac
|
|||
})
|
||||
|
||||
|
||||
.config(function(renderDocsProcessor) {
|
||||
.config(function(renderDocsProcessor, versionInfo) {
|
||||
renderDocsProcessor.extraData.versionInfo = versionInfo;
|
||||
})
|
||||
|
||||
|
|
|
@ -1,196 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var shell = require('shelljs');
|
||||
var semver = require('semver');
|
||||
var _ = require('lodash');
|
||||
|
||||
var currentPackage, previousVersions, gitRepoInfo;
|
||||
|
||||
|
||||
/**
|
||||
* Load information about this project from the package.json
|
||||
* @return {Object} The package information
|
||||
*/
|
||||
var getPackage = function() {
|
||||
// Search up the folder hierarchy for the first package.json
|
||||
var packageFolder = path.resolve('.');
|
||||
while (!fs.existsSync(path.join(packageFolder, 'package.json'))) {
|
||||
var parent = path.dirname(packageFolder);
|
||||
if (parent === packageFolder) { break; }
|
||||
packageFolder = parent;
|
||||
}
|
||||
return JSON.parse(fs.readFileSync(path.join(packageFolder,'package.json'), 'UTF-8'));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Parse the github URL for useful information
|
||||
* @return {Object} An object containing the github owner and repository name
|
||||
*/
|
||||
var getGitRepoInfo = function() {
|
||||
var GITURL_REGEX = /^https:\/\/github.com\/([^\/]+)\/(.+).git$/;
|
||||
var match = GITURL_REGEX.exec(currentPackage.repository.url);
|
||||
var git = {
|
||||
owner: match[1],
|
||||
repo: match[2]
|
||||
};
|
||||
return git;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Extract the code name from the tagged commit's message - it should contain the text of the form:
|
||||
* "codename(some-code-name)"
|
||||
* @param {String} tagName Name of the tag to look in for the codename
|
||||
* @return {String} The codename if found, otherwise null/undefined
|
||||
*/
|
||||
var getCodeName = function(tagName) {
|
||||
var gitCatOutput = shell.exec('git cat-file -p ' + tagName, {silent:true}).output;
|
||||
var tagMatch = gitCatOutput.match(/^.*codename.*$/mg);
|
||||
// The angular repo doesn't have annotated tags.
|
||||
if (!tagMatch) {
|
||||
return '';
|
||||
}
|
||||
var tagMessage = tagMatch[0];
|
||||
var codeName = tagMessage && tagMessage.match(/codename\((.*)\)/)[1];
|
||||
if (!codeName) {
|
||||
throw new Error("Could not extract release code name. The message of tag " + tagName +
|
||||
" must match '*codename(some release name)*'");
|
||||
}
|
||||
return codeName;
|
||||
};
|
||||
|
||||
/**
|
||||
* Grab the commitSHA for the current commit.
|
||||
* @return {String} The commit HASH
|
||||
*/
|
||||
function getCommitSHA() {
|
||||
var hash = shell.exec('git rev-parse --short HEAD', {silent: true}).output.replace('\n', '');
|
||||
return hash;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute a build segment for the version, from the Jenkins build number and current commit SHA
|
||||
* @return {String} The build segment of the version
|
||||
*/
|
||||
function getBuild() {
|
||||
return 'sha.' + getCommitSHA();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* If the current commit is tagged as a version get that version
|
||||
* @return {SemVer} The version or null
|
||||
*/
|
||||
var getTaggedVersion = function() {
|
||||
// The angular repo doesn't have annotated tags.
|
||||
var gitTagResult = shell.exec('git describe --tags --exact-match', {silent:true});
|
||||
|
||||
if (gitTagResult.code === 0) {
|
||||
var tag = gitTagResult.output.trim();
|
||||
var version = semver.parse(tag);
|
||||
|
||||
if (version && semver.satisfies(version, currentPackage.version)) {
|
||||
version.codeName = getCodeName(tag);
|
||||
version.full = version.version;
|
||||
version.branch = 'v' + currentPackage.branchPattern.replace('*', 'x');
|
||||
version.SHA = getCommitSHA();
|
||||
return version;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get a collection of all the previous versions sorted by semantic version
|
||||
* @return {Array.<SemVer>} The collection of previous versions
|
||||
*/
|
||||
var getPreviousVersions = function() {
|
||||
// always use the remote tags as the local clone might
|
||||
// not contain all commits when cloned with git clone --depth=...
|
||||
// Needed e.g. for Travis
|
||||
var repo_url = currentPackage.repository.url;
|
||||
var tagResults = shell.exec('git ls-remote --tags ' + repo_url,
|
||||
{silent: true});
|
||||
if (tagResults.code === 0) {
|
||||
return _(tagResults.output.match(/[0-9].*[0-9]$/mg))
|
||||
.map(function(tag) {
|
||||
var version = semver.parse(tag);
|
||||
return version;
|
||||
})
|
||||
.filter()
|
||||
.map(function(version) {
|
||||
// angular.js didn't follow semantic version until 1.20rc1
|
||||
if ((version.major === 1 && version.minor === 0 && version.prerelease.length > 0) || (version.major === 1 && version.minor === 2 && version.prerelease[0] === 'rc1')) {
|
||||
version.version = [version.major, version.minor, version.patch].join('.') + version.prerelease.join('');
|
||||
version.raw = 'v' + version.version;
|
||||
}
|
||||
version.docsUrl = 'http://code.angularjs.org/' + version.version + '/docs';
|
||||
// Versions before 1.0.2 had a different docs folder name
|
||||
if (version.major < 1 || (version.major === 1 && version.minor === 0 && version.patch < 2)) {
|
||||
version.docsUrl += '-' + version.version;
|
||||
version.isOldDocsUrl = true;
|
||||
}
|
||||
return version;
|
||||
})
|
||||
.sort(semver.compare)
|
||||
.value();
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the unstable snapshot version
|
||||
* @return {SemVer} The snapshot version
|
||||
*/
|
||||
var getSnapshotVersion = function() {
|
||||
var version = _(previousVersions)
|
||||
.filter(function(tag) {
|
||||
return semver.satisfies(tag, currentPackage.version);
|
||||
})
|
||||
.last();
|
||||
|
||||
if (!version) {
|
||||
// a snapshot version before the first tag on the branch
|
||||
version = semver(currentPackage.branchPattern.replace('*','0-alpha.1'));
|
||||
}
|
||||
|
||||
// We need to clone to ensure that we are not modifying another version
|
||||
version = semver(version.raw);
|
||||
|
||||
var jenkinsBuild = process.env.TRAVIS_BUILD_NUMBER || process.env.BUILD_NUMBER;
|
||||
if (!version.prerelease || !version.prerelease.length) {
|
||||
// last release was a non beta release. Increment the patch level to
|
||||
// indicate the next release that we will be doing.
|
||||
// E.g. last release was 1.3.0, then the snapshot will be
|
||||
// 1.3.1-build.1, which is lesser than 1.3.1 accorind the semver!
|
||||
|
||||
// If the last release was a beta release we don't update the
|
||||
// beta number by purpose, as otherwise the semver comparison
|
||||
// does not work any more when the next beta is released.
|
||||
// E.g. don't generate 1.3.0-beta.2.build.1
|
||||
// as this is bigger than 1.3.0-beta.2 according to semver
|
||||
version.patch++;
|
||||
}
|
||||
version.prerelease = jenkinsBuild ? ['build', jenkinsBuild] : ['local'];
|
||||
version.build = getBuild();
|
||||
version.SHA = getCommitSHA();
|
||||
version.codeName = 'snapshot';
|
||||
version.isSnapshot = true;
|
||||
version.format();
|
||||
version.full = version.version + '+' + version.build;
|
||||
version.branch = 'master';
|
||||
|
||||
return version;
|
||||
};
|
||||
|
||||
|
||||
exports.currentPackage = currentPackage = getPackage();
|
||||
exports.gitRepoInfo = gitRepoInfo = getGitRepoInfo();
|
||||
exports.previousVersions = previousVersions = getPreviousVersions();
|
||||
exports.currentVersion = getTaggedVersion() || getSnapshotVersion();
|
|
@ -1917,7 +1917,7 @@
|
|||
}
|
||||
},
|
||||
"dgeni-packages": {
|
||||
"version": "0.10.14",
|
||||
"version": "0.10.15",
|
||||
"dependencies": {
|
||||
"catharsis": {
|
||||
"version": "0.8.7",
|
||||
|
@ -2112,6 +2112,14 @@
|
|||
},
|
||||
"async-each": {
|
||||
"version": "0.1.6"
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "0.3.6",
|
||||
"dependencies": {
|
||||
"nan": {
|
||||
"version": "1.8.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2957,23 +2957,22 @@
|
|||
}
|
||||
},
|
||||
"dgeni-packages": {
|
||||
"version": "0.10.14",
|
||||
"from": "https://registry.npmjs.org/dgeni-packages/-/dgeni-packages-0.10.14.tgz",
|
||||
"resolved": "https://registry.npmjs.org/dgeni-packages/-/dgeni-packages-0.10.14.tgz",
|
||||
"version": "0.10.15",
|
||||
"from": "dgeni-packages@0.10.15",
|
||||
"dependencies": {
|
||||
"catharsis": {
|
||||
"version": "0.8.7",
|
||||
"from": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.7.tgz",
|
||||
"from": "catharsis@>=0.8.1 <0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.7.tgz",
|
||||
"dependencies": {
|
||||
"underscore-contrib": {
|
||||
"version": "0.3.0",
|
||||
"from": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz",
|
||||
"from": "underscore-contrib@>=0.3.0 <0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz",
|
||||
"dependencies": {
|
||||
"underscore": {
|
||||
"version": "1.6.0",
|
||||
"from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
|
||||
"from": "underscore@1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
|
||||
}
|
||||
}
|
||||
|
@ -2982,141 +2981,141 @@
|
|||
},
|
||||
"change-case": {
|
||||
"version": "2.3.0",
|
||||
"from": "https://registry.npmjs.org/change-case/-/change-case-2.3.0.tgz",
|
||||
"from": "change-case@>=2.1.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/change-case/-/change-case-2.3.0.tgz",
|
||||
"dependencies": {
|
||||
"camel-case": {
|
||||
"version": "1.1.2",
|
||||
"from": "https://registry.npmjs.org/camel-case/-/camel-case-1.1.2.tgz",
|
||||
"from": "camel-case@>=1.1.1 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-1.1.2.tgz"
|
||||
},
|
||||
"constant-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.1.tgz",
|
||||
"from": "constant-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.1.tgz"
|
||||
},
|
||||
"dot-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.1.tgz",
|
||||
"from": "dot-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.1.tgz"
|
||||
},
|
||||
"is-lower-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.1.tgz",
|
||||
"from": "is-lower-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.1.tgz"
|
||||
},
|
||||
"is-upper-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.1.tgz",
|
||||
"from": "is-upper-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.1.tgz"
|
||||
},
|
||||
"lower-case": {
|
||||
"version": "1.1.2",
|
||||
"from": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.2.tgz",
|
||||
"from": "lower-case@>=1.1.1 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.2.tgz"
|
||||
},
|
||||
"lower-case-first": {
|
||||
"version": "1.0.0",
|
||||
"from": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.0.tgz",
|
||||
"from": "lower-case-first@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.0.tgz"
|
||||
},
|
||||
"param-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/param-case/-/param-case-1.1.1.tgz",
|
||||
"from": "param-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/param-case/-/param-case-1.1.1.tgz"
|
||||
},
|
||||
"pascal-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.1.tgz",
|
||||
"from": "pascal-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.1.tgz"
|
||||
},
|
||||
"path-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/path-case/-/path-case-1.1.1.tgz",
|
||||
"from": "path-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-case/-/path-case-1.1.1.tgz"
|
||||
},
|
||||
"sentence-case": {
|
||||
"version": "1.1.2",
|
||||
"from": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.2.tgz",
|
||||
"from": "sentence-case@>=1.1.1 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.2.tgz"
|
||||
},
|
||||
"snake-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.1.tgz",
|
||||
"from": "snake-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.1.tgz"
|
||||
},
|
||||
"swap-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.1.tgz",
|
||||
"from": "swap-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.1.tgz"
|
||||
},
|
||||
"title-case": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/title-case/-/title-case-1.1.1.tgz",
|
||||
"from": "title-case@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/title-case/-/title-case-1.1.1.tgz"
|
||||
},
|
||||
"upper-case": {
|
||||
"version": "1.1.2",
|
||||
"from": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.2.tgz",
|
||||
"from": "upper-case@>=1.1.1 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.2.tgz"
|
||||
},
|
||||
"upper-case-first": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.1.tgz",
|
||||
"from": "upper-case-first@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"esprima": {
|
||||
"version": "1.2.5",
|
||||
"from": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz",
|
||||
"from": "esprima@>=1.0.4 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz"
|
||||
},
|
||||
"estraverse": {
|
||||
"version": "1.9.3",
|
||||
"from": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
|
||||
"from": "estraverse@>=1.5.1 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz"
|
||||
},
|
||||
"glob": {
|
||||
"version": "3.2.11",
|
||||
"from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
|
||||
"from": "glob@>=3.2.8 <3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
|
||||
"dependencies": {
|
||||
"inherits": {
|
||||
"version": "2.0.1",
|
||||
"from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
|
||||
"from": "inherits@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"htmlparser2": {
|
||||
"version": "3.8.3",
|
||||
"from": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
|
||||
"from": "htmlparser2@>=3.7.3 <4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
|
||||
"dependencies": {
|
||||
"domhandler": {
|
||||
"version": "2.3.0",
|
||||
"from": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
|
||||
"from": "domhandler@>=2.3.0 <2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz"
|
||||
},
|
||||
"domutils": {
|
||||
"version": "1.5.1",
|
||||
"from": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
|
||||
"from": "domutils@>=1.5.0 <1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
|
||||
"dependencies": {
|
||||
"dom-serializer": {
|
||||
"version": "0.1.0",
|
||||
"from": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
|
||||
"from": "dom-serializer@>=0.0.0 <1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
|
||||
"dependencies": {
|
||||
"domelementtype": {
|
||||
"version": "1.1.3",
|
||||
"from": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
|
||||
"from": "domelementtype@>=1.1.1 <1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz"
|
||||
},
|
||||
"entities": {
|
||||
"version": "1.1.1",
|
||||
"from": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
|
||||
"from": "entities@>=1.1.1 <1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz"
|
||||
}
|
||||
}
|
||||
|
@ -3125,137 +3124,137 @@
|
|||
},
|
||||
"domelementtype": {
|
||||
"version": "1.3.0",
|
||||
"from": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
|
||||
"from": "domelementtype@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.1.13",
|
||||
"from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
|
||||
"from": "readable-stream@>=1.1.0 <1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
|
||||
"dependencies": {
|
||||
"core-util-is": {
|
||||
"version": "1.0.1",
|
||||
"from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
|
||||
"from": "core-util-is@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
|
||||
},
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"from": "isarray@0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"from": "string_decoder@>=0.10.0 <0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.1",
|
||||
"from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
|
||||
"from": "inherits@>=2.0.1 <2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"entities": {
|
||||
"version": "1.0.0",
|
||||
"from": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
|
||||
"from": "entities@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "0.3.0",
|
||||
"from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
|
||||
"from": "minimatch@>=0.3.0 <0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
|
||||
"dependencies": {
|
||||
"lru-cache": {
|
||||
"version": "2.6.4",
|
||||
"from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz",
|
||||
"from": "lru-cache@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz"
|
||||
},
|
||||
"sigmund": {
|
||||
"version": "1.0.1",
|
||||
"from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
|
||||
"from": "sigmund@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nunjucks": {
|
||||
"version": "1.3.4",
|
||||
"from": "https://registry.npmjs.org/nunjucks/-/nunjucks-1.3.4.tgz",
|
||||
"from": "nunjucks@>=1.2.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-1.3.4.tgz",
|
||||
"dependencies": {
|
||||
"optimist": {
|
||||
"version": "0.6.1",
|
||||
"from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
|
||||
"from": "optimist@*",
|
||||
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
|
||||
"dependencies": {
|
||||
"wordwrap": {
|
||||
"version": "0.0.3",
|
||||
"from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
|
||||
"from": "wordwrap@>=0.0.2 <0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.10",
|
||||
"from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
|
||||
"from": "minimist@>=0.0.1 <0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "0.12.6",
|
||||
"from": "https://registry.npmjs.org/chokidar/-/chokidar-0.12.6.tgz",
|
||||
"from": "chokidar@>=0.12.5 <0.13.0",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-0.12.6.tgz",
|
||||
"dependencies": {
|
||||
"readdirp": {
|
||||
"version": "1.3.0",
|
||||
"from": "https://registry.npmjs.org/readdirp/-/readdirp-1.3.0.tgz",
|
||||
"from": "readdirp@>=1.3.0 <1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.3.0.tgz",
|
||||
"dependencies": {
|
||||
"graceful-fs": {
|
||||
"version": "2.0.3",
|
||||
"from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz",
|
||||
"from": "graceful-fs@>=2.0.0 <2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "0.2.14",
|
||||
"from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
|
||||
"from": "minimatch@>=0.2.12 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
|
||||
"dependencies": {
|
||||
"lru-cache": {
|
||||
"version": "2.6.4",
|
||||
"from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz",
|
||||
"from": "lru-cache@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz"
|
||||
},
|
||||
"sigmund": {
|
||||
"version": "1.0.1",
|
||||
"from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
|
||||
"from": "sigmund@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.33",
|
||||
"from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
|
||||
"from": "readable-stream@>=1.0.26-2 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
|
||||
"dependencies": {
|
||||
"core-util-is": {
|
||||
"version": "1.0.1",
|
||||
"from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
|
||||
"from": "core-util-is@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
|
||||
},
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"from": "isarray@0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"from": "string_decoder@>=0.10.0 <0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.1",
|
||||
"from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
|
||||
"from": "inherits@>=2.0.1 <2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
|
||||
}
|
||||
}
|
||||
|
@ -3264,8 +3263,20 @@
|
|||
},
|
||||
"async-each": {
|
||||
"version": "0.1.6",
|
||||
"from": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz",
|
||||
"from": "async-each@>=0.1.5 <0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz"
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "0.3.6",
|
||||
"from": "fsevents@>=0.3.1 <0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.6.tgz",
|
||||
"dependencies": {
|
||||
"nan": {
|
||||
"version": "1.8.4",
|
||||
"from": "nan@>=1.8.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3273,47 +3284,47 @@
|
|||
},
|
||||
"q": {
|
||||
"version": "1.0.1",
|
||||
"from": "https://registry.npmjs.org/q/-/q-1.0.1.tgz",
|
||||
"from": "q@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/q/-/q-1.0.1.tgz"
|
||||
},
|
||||
"q-io": {
|
||||
"version": "1.10.9",
|
||||
"from": "https://registry.npmjs.org/q-io/-/q-io-1.10.9.tgz",
|
||||
"from": "q-io@>=1.10.9 <1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/q-io/-/q-io-1.10.9.tgz",
|
||||
"dependencies": {
|
||||
"q": {
|
||||
"version": "0.9.7",
|
||||
"from": "https://registry.npmjs.org/q/-/q-0.9.7.tgz",
|
||||
"from": "q@>=0.9.7 <0.10.0",
|
||||
"resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz"
|
||||
},
|
||||
"qs": {
|
||||
"version": "0.1.0",
|
||||
"from": "https://registry.npmjs.org/qs/-/qs-0.1.0.tgz",
|
||||
"from": "qs@>=0.1.0 <0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-0.1.0.tgz"
|
||||
},
|
||||
"url2": {
|
||||
"version": "0.0.0",
|
||||
"from": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz",
|
||||
"from": "url2@>=0.0.0 <0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz"
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.2.11",
|
||||
"from": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
|
||||
"from": "mime@>=1.2.11 <1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
|
||||
},
|
||||
"mimeparse": {
|
||||
"version": "0.1.4",
|
||||
"from": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz",
|
||||
"from": "mimeparse@>=0.1.4 <0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz"
|
||||
},
|
||||
"collections": {
|
||||
"version": "0.2.2",
|
||||
"from": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz",
|
||||
"from": "collections@>=0.2.0 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz",
|
||||
"dependencies": {
|
||||
"weak-map": {
|
||||
"version": "1.0.0",
|
||||
"from": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz",
|
||||
"from": "weak-map@1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz"
|
||||
}
|
||||
}
|
||||
|
@ -3322,57 +3333,57 @@
|
|||
},
|
||||
"stringmap": {
|
||||
"version": "0.2.2",
|
||||
"from": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz",
|
||||
"from": "stringmap@>=0.2.2 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz"
|
||||
},
|
||||
"winston": {
|
||||
"version": "0.7.3",
|
||||
"from": "https://registry.npmjs.org/winston/-/winston-0.7.3.tgz",
|
||||
"from": "winston@>=0.7.2 <0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/winston/-/winston-0.7.3.tgz",
|
||||
"dependencies": {
|
||||
"async": {
|
||||
"version": "0.2.10",
|
||||
"from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
|
||||
"from": "async@>=0.2.0 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
|
||||
},
|
||||
"colors": {
|
||||
"version": "0.6.2",
|
||||
"from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
|
||||
"from": "colors@>=0.6.0 <0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"
|
||||
},
|
||||
"cycle": {
|
||||
"version": "1.0.3",
|
||||
"from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
|
||||
"from": "cycle@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"
|
||||
},
|
||||
"eyes": {
|
||||
"version": "0.1.8",
|
||||
"from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
|
||||
"from": "eyes@>=0.1.0 <0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
|
||||
},
|
||||
"pkginfo": {
|
||||
"version": "0.3.0",
|
||||
"from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz",
|
||||
"from": "pkginfo@>=0.3.0 <0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz"
|
||||
},
|
||||
"request": {
|
||||
"version": "2.16.6",
|
||||
"from": "https://registry.npmjs.org/request/-/request-2.16.6.tgz",
|
||||
"from": "request@>=2.16.0 <2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.16.6.tgz",
|
||||
"dependencies": {
|
||||
"form-data": {
|
||||
"version": "0.0.10",
|
||||
"from": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz",
|
||||
"from": "form-data@>=0.0.3 <0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz",
|
||||
"dependencies": {
|
||||
"combined-stream": {
|
||||
"version": "0.0.7",
|
||||
"from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
|
||||
"from": "combined-stream@>=0.0.4 <0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
|
||||
"dependencies": {
|
||||
"delayed-stream": {
|
||||
"version": "0.0.5",
|
||||
"from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
|
||||
"from": "delayed-stream@0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
|
||||
}
|
||||
}
|
||||
|
@ -3381,76 +3392,76 @@
|
|||
},
|
||||
"mime": {
|
||||
"version": "1.2.11",
|
||||
"from": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
|
||||
"from": "mime@>=1.2.7 <1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
|
||||
},
|
||||
"hawk": {
|
||||
"version": "0.10.2",
|
||||
"from": "https://registry.npmjs.org/hawk/-/hawk-0.10.2.tgz",
|
||||
"from": "hawk@>=0.10.2 <0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-0.10.2.tgz",
|
||||
"dependencies": {
|
||||
"hoek": {
|
||||
"version": "0.7.6",
|
||||
"from": "https://registry.npmjs.org/hoek/-/hoek-0.7.6.tgz",
|
||||
"from": "hoek@>=0.7.0 <0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/hoek/-/hoek-0.7.6.tgz"
|
||||
},
|
||||
"boom": {
|
||||
"version": "0.3.8",
|
||||
"from": "https://registry.npmjs.org/boom/-/boom-0.3.8.tgz",
|
||||
"from": "boom@>=0.3.0 <0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-0.3.8.tgz"
|
||||
},
|
||||
"cryptiles": {
|
||||
"version": "0.1.3",
|
||||
"from": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.1.3.tgz",
|
||||
"from": "cryptiles@>=0.1.0 <0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.1.3.tgz"
|
||||
},
|
||||
"sntp": {
|
||||
"version": "0.1.4",
|
||||
"from": "https://registry.npmjs.org/sntp/-/sntp-0.1.4.tgz",
|
||||
"from": "sntp@>=0.1.0 <0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-0.1.4.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cookie-jar": {
|
||||
"version": "0.2.0",
|
||||
"from": "https://registry.npmjs.org/cookie-jar/-/cookie-jar-0.2.0.tgz",
|
||||
"from": "cookie-jar@>=0.2.0 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie-jar/-/cookie-jar-0.2.0.tgz"
|
||||
},
|
||||
"aws-sign": {
|
||||
"version": "0.2.0",
|
||||
"from": "https://registry.npmjs.org/aws-sign/-/aws-sign-0.2.0.tgz",
|
||||
"from": "aws-sign@>=0.2.0 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sign/-/aws-sign-0.2.0.tgz"
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.2.0",
|
||||
"from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.2.0.tgz",
|
||||
"from": "oauth-sign@>=0.2.0 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.2.0.tgz"
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.2.0",
|
||||
"from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.2.0.tgz",
|
||||
"from": "forever-agent@>=0.2.0 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.2.0.tgz"
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.2.0",
|
||||
"from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.2.0.tgz",
|
||||
"from": "tunnel-agent@>=0.2.0 <0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.2.0.tgz"
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "3.0.0",
|
||||
"from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-3.0.0.tgz",
|
||||
"from": "json-stringify-safe@>=3.0.0 <3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-3.0.0.tgz"
|
||||
},
|
||||
"qs": {
|
||||
"version": "0.5.6",
|
||||
"from": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz",
|
||||
"from": "qs@>=0.5.4 <0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"stack-trace": {
|
||||
"version": "0.0.9",
|
||||
"from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz",
|
||||
"from": "stack-trace@>=0.0.0 <0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz"
|
||||
}
|
||||
}
|
||||
|
@ -14131,32 +14142,33 @@
|
|||
"ts2dart": {
|
||||
"version": "0.6.4",
|
||||
"from": "ts2dart@0.6.4",
|
||||
"resolved": "https://registry.npmjs.org/ts2dart/-/ts2dart-0.6.4.tgz",
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.4.2",
|
||||
"from": "source-map@>=0.4.2 <0.5.0",
|
||||
"from": "https://registry.npmjs.org/source-map/-/source-map-0.4.2.tgz",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.2.tgz",
|
||||
"dependencies": {
|
||||
"amdefine": {
|
||||
"version": "0.1.1",
|
||||
"from": "amdefine@>=0.0.4",
|
||||
"from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.3.1",
|
||||
"from": "source-map-support@>=0.3.1 <0.4.0",
|
||||
"from": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.1.tgz",
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.1.32",
|
||||
"from": "source-map@0.1.32",
|
||||
"from": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
|
||||
"dependencies": {
|
||||
"amdefine": {
|
||||
"version": "0.1.1",
|
||||
"from": "amdefine@>=0.0.4",
|
||||
"from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"
|
||||
}
|
||||
}
|
||||
|
@ -14165,7 +14177,7 @@
|
|||
},
|
||||
"typescript": {
|
||||
"version": "1.5.0",
|
||||
"from": "alexeagle/TypeScript#error_is_class",
|
||||
"from": "git://github.com/alexeagle/TypeScript.git#be9a7edff73ac2592e508732c771c85357041385",
|
||||
"resolved": "git://github.com/alexeagle/TypeScript.git#be9a7edff73ac2592e508732c771c85357041385"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue