UNPKG

io.parrots

Version:

Parrots.io App

154 lines (153 loc) 18.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Headers, RequestOptions, RequestMethod } from '@angular/http'; import { AbstractServerResource } from 'com.phloxui'; var /** @type {?} */ BASE_PATH = "./json"; var JSONResource = /** @class */ (function (_super) { tslib_1.__extends(JSONResource, _super); function JSONResource(connectionMgr, basePath) { var _this = _super.call(this, connectionMgr) || this; _this.basePath = BASE_PATH; _this.schemaCached = {}; _this.defaultHeaders = new Headers(); if (basePath !== null && basePath !== undefined && basePath !== '') { _this.basePath = basePath; } return _this; } /** * @param {?} className * @return {?} */ JSONResource.prototype.getSchema = /** * @param {?} className * @return {?} */ function (className) { var _this = this; if (className === null || typeof className !== 'string' || className === '') { return Promise.resolve(null); } if (this.schemaCached[className] !== null && typeof this.schemaCached[className] !== 'undefined') { return Promise.resolve(this.schemaCached[className]); } return new Promise(function (resolve, reject) { // cache only default load var /** @type {?} */ path = _this.basePath + "/" + className + "/schema"; var /** @type {?} */ headers = new Headers(_this.defaultHeaders.toJSON()); var /** @type {?} */ requestOptions = new RequestOptions({ method: RequestMethod.Get, headers: headers }); var /** @type {?} */ prom = _this.connectionMgr.getWithHttpInfo(path, requestOptions); prom.then(function (response) { var /** @type {?} */ jsonSchemaResult = null; if (response !== null && typeof response !== 'undefined') { jsonSchemaResult = response.json(); if (jsonSchemaResult !== null && typeof jsonSchemaResult !== 'undefined') { // cache result // cache result _this.schemaCached[className] = jsonSchemaResult; } } resolve(jsonSchemaResult); }, function (errorResult) { reject(errorResult); }); }).catch(function (error) { return Promise.reject(error); }); }; /** * @param {?} className * @param {?} ignoreNull * @param {?} ignoreEmpty * @param {?} ignorePropRegex * @param {?} includePropsFields * @return {?} */ JSONResource.prototype.getSchemaWithConfigs = /** * @param {?} className * @param {?} ignoreNull * @param {?} ignoreEmpty * @param {?} ignorePropRegex * @param {?} includePropsFields * @return {?} */ function (className, ignoreNull, ignoreEmpty, ignorePropRegex, includePropsFields) { var _this = this; if (className === null || typeof className !== 'string' || className === '') { return Promise.resolve(null); } return new Promise(function (resolve, reject) { // cache only default load var /** @type {?} */ path = _this.basePath + "/" + className + "/schema"; var /** @type {?} */ pathParam = ""; if (ignoreNull !== null && typeof ignoreNull !== 'undefined') { pathParam += "ignoreNull=" + (ignoreNull ? "true" : "false") + "&"; } if (ignoreEmpty !== null && typeof ignoreEmpty !== 'undefined') { pathParam += "ignoreEmpty=" + (ignoreEmpty ? "true" : "false") + "&"; } if (ignorePropRegex !== null && typeof ignorePropRegex !== 'undefined' && ignorePropRegex !== '') { pathParam += "ignorePropRegex=" + ignorePropRegex + "&"; } if (includePropsFields !== null && typeof includePropsFields !== 'undefined') { var /** @type {?} */ nameAppendStmt = ""; try { for (var includePropsFields_1 = tslib_1.__values(includePropsFields), includePropsFields_1_1 = includePropsFields_1.next(); !includePropsFields_1_1.done; includePropsFields_1_1 = includePropsFields_1.next()) { var name_1 = includePropsFields_1_1.value; nameAppendStmt += name_1 + ","; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (includePropsFields_1_1 && !includePropsFields_1_1.done && (_a = includePropsFields_1.return)) _a.call(includePropsFields_1); } finally { if (e_1) throw e_1.error; } } if (nameAppendStmt !== '') { nameAppendStmt = nameAppendStmt.slice(0, nameAppendStmt.length - 1); pathParam += "includePropsFields=" + nameAppendStmt + "&"; } } if (pathParam !== "") { pathParam = pathParam.slice(0, pathParam.length - 1); path += "?" + pathParam; } var /** @type {?} */ headers = new Headers(_this.defaultHeaders.toJSON()); var /** @type {?} */ requestOptions = new RequestOptions({ method: RequestMethod.Get, headers: headers }); var /** @type {?} */ prom = _this.connectionMgr.getWithHttpInfo(path, requestOptions); prom.then(function (response) { var /** @type {?} */ jsonSchemaResult = null; if (response !== null && typeof response !== 'undefined') { jsonSchemaResult = response.json(); } resolve(jsonSchemaResult); }, function (errorResult) { reject(errorResult); }); var e_1, _a; }).catch(function (error) { return Promise.reject(error); }); }; return JSONResource; }(AbstractServerResource)); export { JSONResource }; function JSONResource_tsickle_Closure_declarations() { /** @type {?} */ JSONResource.prototype.schemaCached; /** @type {?} */ JSONResource.prototype.basePath; /** @type {?} */ JSONResource.prototype.defaultHeaders; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTlJlc291cmNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaW8ucGFycm90cy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZS9yZXNvdXJjZS9KU09OUmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQWtCLE9BQU8sRUFBRSxjQUFjLEVBQTRELGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqSixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLckQscUJBQU0sU0FBUyxHQUFXLFFBQVEsQ0FBQztBQUVuQyxJQUFBO0lBQWtDLHdDQUFzQjtJQU10RCxzQkFBWSxhQUFpQyxFQUFFLFFBQWlCO1FBQWhFLFlBQ0Usa0JBQU0sYUFBYSxDQUFDLFNBUXJCO3lCQVpvQixTQUFTO1FBTTVCLEtBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEtBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVwQyxFQUFFLENBQUEsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFBLENBQUM7WUFDakUsS0FBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDMUI7O0tBQ0Y7Ozs7O0lBRU0sZ0NBQVM7Ozs7Y0FBQyxTQUFpQjs7UUFDaEMsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7UUFFRCxNQUFNLENBQUMsSUFBSSxPQUFPLENBQVcsVUFBQyxPQUFPLEVBQUUsTUFBTTs7WUFFM0MscUJBQUksSUFBSSxHQUFHLEtBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFFdkQscUJBQUksT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUV4RCxxQkFBSSxjQUFjLEdBQXVCLElBQUksY0FBYyxDQUFDO2dCQUMxRCxNQUFNLEVBQUUsYUFBYSxDQUFDLEdBQUc7Z0JBQ3pCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUMsQ0FBQztZQUVILHFCQUFJLElBQUksR0FBRyxLQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFDLFFBQWE7Z0JBQ3RCLHFCQUFJLGdCQUFnQixHQUFRLElBQUksQ0FBQztnQkFDakMsRUFBRSxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBRW5DLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLElBQUksSUFBSSxPQUFPLGdCQUFnQixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7O3dCQUV6RSxBQURBLGVBQWU7d0JBQ2YsS0FBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztxQkFDakQ7aUJBQ0Y7Z0JBRUQsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDM0IsRUFBRSxVQUFDLFdBQVc7Z0JBQ2IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3JCLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBQyxLQUFLO1lBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUIsQ0FBQyxDQUFDOzs7Ozs7Ozs7O0lBR0UsMkNBQW9COzs7Ozs7OztjQUFDLFNBQWlCLEVBQUUsVUFBbUIsRUFBRSxXQUFvQixFQUFFLGVBQXVCLEVBQUUsa0JBQTRCOztRQUM3SSxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUVELE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBVyxVQUFDLE9BQU8sRUFBRSxNQUFNOztZQUUzQyxxQkFBSSxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUV2RCxxQkFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ25CLEVBQUUsQ0FBQyxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsU0FBUyxJQUFJLGFBQWEsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDcEU7WUFDRCxFQUFFLENBQUMsQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLE9BQU8sV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELFNBQVMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQ3RFO1lBQ0QsRUFBRSxDQUFDLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxPQUFPLGVBQWUsS0FBSyxXQUFXLElBQUksZUFBZSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLFNBQVMsSUFBSSxrQkFBa0IsR0FBRyxlQUFlLEdBQUcsR0FBRyxDQUFDO2FBQ3pEO1lBQ0QsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEtBQUssSUFBSSxJQUFJLE9BQU8sa0JBQWtCLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDN0UscUJBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQzs7b0JBQ3hCLEdBQUcsQ0FBQyxDQUFhLElBQUEsdUJBQUEsaUJBQUEsa0JBQWtCLENBQUEsc0RBQUE7d0JBQTlCLElBQUksTUFBSSwrQkFBQTt3QkFDWCxjQUFjLElBQUksTUFBSSxHQUFHLEdBQUcsQ0FBQztxQkFDOUI7Ozs7Ozs7OztnQkFFRCxFQUFFLENBQUMsQ0FBQyxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUIsY0FBYyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3BFLFNBQVMsSUFBSSxxQkFBcUIsR0FBRyxjQUFjLEdBQUcsR0FBRyxDQUFDO2lCQUMzRDthQUNGO1lBRUQsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQzthQUN6QjtZQUVELHFCQUFJLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDeEQscUJBQUksY0FBYyxHQUF1QixJQUFJLGNBQWMsQ0FBQztnQkFDMUQsTUFBTSxFQUFFLGFBQWEsQ0FBQyxHQUFHO2dCQUN6QixPQUFPLEVBQUUsT0FBTzthQUNqQixDQUFDLENBQUM7WUFFSCxxQkFBSSxJQUFJLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQyxRQUFhO2dCQUN0QixxQkFBSSxnQkFBZ0IsR0FBUSxJQUFJLENBQUM7Z0JBQ2pDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDekQsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNwQztnQkFFRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUMzQixFQUFFLFVBQUMsV0FBVztnQkFDYixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDckIsQ0FBQyxDQUFDOztTQUNKLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBQyxLQUFLO1lBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUIsQ0FBQyxDQUFDOzt1QkE1SFA7RUFXa0Msc0JBQXNCLEVBbUh2RCxDQUFBO0FBbkhELHdCQW1IQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHAsIFJlc3BvbnNlLCBIZWFkZXJzLCBSZXF1ZXN0T3B0aW9ucywgUmVxdWVzdE9wdGlvbnNBcmdzLCBVUkxTZWFyY2hQYXJhbXMsIFJlc3BvbnNlQ29udGVudFR5cGUsIFJlcXVlc3RNZXRob2QgfSBmcm9tICdAYW5ndWxhci9odHRwJztcbmltcG9ydCB7IENvbm5lY3Rpb25NYW5hZ2VyIH0gZnJvbSAnY29tLnBobG94dWknO1xuaW1wb3J0IHsgSnNvblNjaGVtYSB9IGZyb20gJ2NvbS5waGxveHVpJztcbmltcG9ydCB7IEFic3RyYWN0U2VydmVyUmVzb3VyY2UgfSBmcm9tICdjb20ucGhsb3h1aSc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvbk1hbmFnZXIgfSBmcm9tICdjb20ucGhsb3h1aSc7XG5cbmRlY2xhcmUgdmFyIHdpbmRvdzogYW55O1xuXG5jb25zdCBCQVNFX1BBVEg6IHN0cmluZyA9IFwiLi9qc29uXCI7XG5cbmV4cG9ydCBjbGFzcyBKU09OUmVzb3VyY2UgZXh0ZW5kcyBBYnN0cmFjdFNlcnZlclJlc291cmNlIHtcblxuICBwcml2YXRlIHNjaGVtYUNhY2hlZDogYW55OyAvLyBNYXA8U3RyaW5nW2NsYXNzTmFtZV0sIEpzb25TY2hlbWE+XG4gIHByb3RlY3RlZCBiYXNlUGF0aCA9IEJBU0VfUEFUSDtcbiAgcHVibGljIGRlZmF1bHRIZWFkZXJzOiBIZWFkZXJzO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb25NZ3I6IElDb25uZWN0aW9uTWFuYWdlciwgYmFzZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihjb25uZWN0aW9uTWdyKTtcblxuICAgIHRoaXMuc2NoZW1hQ2FjaGVkID0ge307XG4gICAgdGhpcy5kZWZhdWx0SGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG5cbiAgICBpZihiYXNlUGF0aCAhPT0gbnVsbCAmJiBiYXNlUGF0aCAhPT0gdW5kZWZpbmVkICYmIGJhc2VQYXRoICE9PSAnJyl7XG4gICAgICB0aGlzLmJhc2VQYXRoID0gYmFzZVBhdGg7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNjaGVtYShjbGFzc05hbWU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoY2xhc3NOYW1lID09PSBudWxsIHx8IHR5cGVvZiBjbGFzc05hbWUgIT09ICdzdHJpbmcnIHx8IGNsYXNzTmFtZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2NoZW1hQ2FjaGVkW2NsYXNzTmFtZV0gIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuc2NoZW1hQ2FjaGVkW2NsYXNzTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2NoZW1hQ2FjaGVkW2NsYXNzTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gY2FjaGUgb25seSBkZWZhdWx0IGxvYWRcbiAgICAgIGxldCBwYXRoID0gdGhpcy5iYXNlUGF0aCArIFwiL1wiICsgY2xhc3NOYW1lICsgXCIvc2NoZW1hXCI7XG5cbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnModGhpcy5kZWZhdWx0SGVhZGVycy50b0pTT04oKSk7XG5cbiAgICAgIGxldCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnNBcmdzID0gbmV3IFJlcXVlc3RPcHRpb25zKHtcbiAgICAgICAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kLkdldCxcbiAgICAgICAgaGVhZGVyczogaGVhZGVyc1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBwcm9tID0gdGhpcy5jb25uZWN0aW9uTWdyLmdldFdpdGhIdHRwSW5mbyhwYXRoLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICBwcm9tLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGpzb25TY2hlbWFSZXN1bHQ6IGFueSA9IG51bGw7XG4gICAgICAgIGlmIChyZXNwb25zZSAhPT0gbnVsbCAmJiB0eXBlb2YgcmVzcG9uc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAganNvblNjaGVtYVJlc3VsdCA9IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgICAgIGlmIChqc29uU2NoZW1hUmVzdWx0ICE9PSBudWxsICYmIHR5cGVvZiBqc29uU2NoZW1hUmVzdWx0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gY2FjaGUgcmVzdWx0XG4gICAgICAgICAgICB0aGlzLnNjaGVtYUNhY2hlZFtjbGFzc05hbWVdID0ganNvblNjaGVtYVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKGpzb25TY2hlbWFSZXN1bHQpO1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvclJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2NoZW1hV2l0aENvbmZpZ3MoY2xhc3NOYW1lOiBzdHJpbmcsIGlnbm9yZU51bGw6IGJvb2xlYW4sIGlnbm9yZUVtcHR5OiBib29sZWFuLCBpZ25vcmVQcm9wUmVnZXg6IHN0cmluZywgaW5jbHVkZVByb3BzRmllbGRzOiBTdHJpbmdbXSk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoY2xhc3NOYW1lID09PSBudWxsIHx8IHR5cGVvZiBjbGFzc05hbWUgIT09ICdzdHJpbmcnIHx8IGNsYXNzTmFtZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBjYWNoZSBvbmx5IGRlZmF1bHQgbG9hZFxuICAgICAgbGV0IHBhdGggPSB0aGlzLmJhc2VQYXRoICsgXCIvXCIgKyBjbGFzc05hbWUgKyBcIi9zY2hlbWFcIjtcblxuICAgICAgbGV0IHBhdGhQYXJhbSA9IFwiXCI7XG4gICAgICBpZiAoaWdub3JlTnVsbCAhPT0gbnVsbCAmJiB0eXBlb2YgaWdub3JlTnVsbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcGF0aFBhcmFtICs9IFwiaWdub3JlTnVsbD1cIiArIChpZ25vcmVOdWxsID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIpICsgXCImXCI7XG4gICAgICB9XG4gICAgICBpZiAoaWdub3JlRW1wdHkgIT09IG51bGwgJiYgdHlwZW9mIGlnbm9yZUVtcHR5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwYXRoUGFyYW0gKz0gXCJpZ25vcmVFbXB0eT1cIiArIChpZ25vcmVFbXB0eSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiKSArIFwiJlwiO1xuICAgICAgfVxuICAgICAgaWYgKGlnbm9yZVByb3BSZWdleCAhPT0gbnVsbCAmJiB0eXBlb2YgaWdub3JlUHJvcFJlZ2V4ICE9PSAndW5kZWZpbmVkJyAmJiBpZ25vcmVQcm9wUmVnZXggIT09ICcnKSB7XG4gICAgICAgIHBhdGhQYXJhbSArPSBcImlnbm9yZVByb3BSZWdleD1cIiArIGlnbm9yZVByb3BSZWdleCArIFwiJlwiO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVQcm9wc0ZpZWxkcyAhPT0gbnVsbCAmJiB0eXBlb2YgaW5jbHVkZVByb3BzRmllbGRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsZXQgbmFtZUFwcGVuZFN0bXQgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGluY2x1ZGVQcm9wc0ZpZWxkcykge1xuICAgICAgICAgIG5hbWVBcHBlbmRTdG10ICs9IG5hbWUgKyBcIixcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lQXBwZW5kU3RtdCAhPT0gJycpIHtcbiAgICAgICAgICBuYW1lQXBwZW5kU3RtdCA9IG5hbWVBcHBlbmRTdG10LnNsaWNlKDAsIG5hbWVBcHBlbmRTdG10Lmxlbmd0aCAtIDEpO1xuICAgICAgICAgIHBhdGhQYXJhbSArPSBcImluY2x1ZGVQcm9wc0ZpZWxkcz1cIiArIG5hbWVBcHBlbmRTdG10ICsgXCImXCI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGhQYXJhbSAhPT0gXCJcIikge1xuICAgICAgICBwYXRoUGFyYW0gPSBwYXRoUGFyYW0uc2xpY2UoMCwgcGF0aFBhcmFtLmxlbmd0aCAtIDEpO1xuICAgICAgICBwYXRoICs9IFwiP1wiICsgcGF0aFBhcmFtO1xuICAgICAgfVxuXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHRoaXMuZGVmYXVsdEhlYWRlcnMudG9KU09OKCkpO1xuICAgICAgbGV0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9uc0FyZ3MgPSBuZXcgUmVxdWVzdE9wdGlvbnMoe1xuICAgICAgICBtZXRob2Q6IFJlcXVlc3RNZXRob2QuR2V0LFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzXG4gICAgICB9KTtcblxuICAgICAgbGV0IHByb20gPSB0aGlzLmNvbm5lY3Rpb25NZ3IuZ2V0V2l0aEh0dHBJbmZvKHBhdGgsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIHByb20udGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsZXQganNvblNjaGVtYVJlc3VsdDogYW55ID0gbnVsbDtcbiAgICAgICAgaWYgKHJlc3BvbnNlICE9PSBudWxsICYmIHR5cGVvZiByZXNwb25zZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBqc29uU2NoZW1hUmVzdWx0ID0gcmVzcG9uc2UuanNvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShqc29uU2NoZW1hUmVzdWx0KTtcbiAgICAgIH0sIChlcnJvclJlc3VsdCkgPT4ge1xuICAgICAgICByZWplY3QoZXJyb3JSZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=