UNPKG

@gouvfr-anct/mediation-numerique

Version:

📚 Bibliothèque pour la cartographie de l’offre de médiation numérique.

182 lines • 21 kB
import { Address } from './address.model'; import { Equipment } from './enum/equipment.enum'; import { typeStructureEnum } from './enum/typeStructure.enum'; import { Weekday } from './enum/weekday.enum'; import { OpeningDay } from './openingDay.model'; import { Week } from './week.model'; export class Structure { constructor(obj) { this._id = null; this.numero = null; this.createdAt = null; this.updatedAt = null; this.structureName = null; this.structureType = null; this.description = null; this.address = new Address(); this.contactPhone = null; this.contactMail = null; this.website = null; this.facebook = null; this.twitter = null; this.instagram = null; this.linkedin = null; this.lockdownActivity = null; this.pmrAccess = null; this.placeOfReception = null; this.choiceCompletion = null; this.contactPersonFirstName = null; this.contactPersonLastName = null; this.contactPersonEmail = null; this.publicsAccompaniment = []; this.proceduresAccompaniment = []; this.remoteAccompaniment = null; this.accessModality = []; this.labelsQualifications = []; this.publics = []; this.nbComputers = null; this.nbPrinters = null; this.nbTablets = null; this.nbNumericTerminal = null; this.nbScanners = null; this.exceptionalClosures = null; this.equipmentsAndServices = []; this.freeWorkShop = null; this.otherDescription = null; this.isOpen = false; this.openedOn = new OpeningDay(); this.baseSkills = []; this.accessRight = []; this.parentingHelp = []; this.socialAndProfessional = []; this.digitalCultureSecurity = []; this.coord = []; this.accountVerified = false; this.personalOffers = []; this.alreadySelected = false; this.isClaimed = null; Object.assign(this, obj, { hours: obj && obj.hours ? new Week(obj.hours) : new Week() }); } getDayhours(day) { switch (day) { case Weekday.monday: return this.hours.monday; case Weekday.tuesday: return this.hours.tuesday; case Weekday.thursday: return this.hours.thursday; case Weekday.wednesday: return this.hours.wednesday; case Weekday.friday: return this.hours.friday; case Weekday.saturday: return this.hours.saturday; case Weekday.sunday: return this.hours.sunday; default: return null; } } /** * Check if a structure has equipments */ hasEquipments() { if (this.equipmentsAndServices.length && this.hasNotOnlyEmptyEquipments()) { return true; } return false; } /** * Verify that a structure as not only equipments with 0 as value. This is mostly use for display. * @returns {Boolean} validation */ hasNotOnlyEmptyEquipments() { if (this.nbComputers + this.nbPrinters + this.nbTablets + this.nbNumericTerminal + this.nbScanners > 0) return true; return false; } /** * Check if a structure has pass Numeric label */ hasPassNumeric() { return this.labelsQualifications.includes('passNumerique'); } /** * Return a range, according to the distance, between [1,3] to get a distance reference. * - [0,5km] => 1 * - [5km,10km] => 2 * - [10km, [ => 3 */ getDistanceRange() { if (!this.distance) { return 3; } else { // If it's in km if (this.distance > 10000) { return 3; } else if (this.distance < 5000) { // If it's between 0 and 500 m return 1; } else { return 2; } } } getLat() { return this.coord[1]; } getLon() { return this.coord[0]; } getEquipmentsIcon(equipment) { switch (equipment) { case Equipment.wifi: return 'wifi'; case Equipment.bornes: return 'borne'; case Equipment.printer: return 'print'; case Equipment.tablet: return 'tablet'; case Equipment.computer: return 'computer'; case Equipment.scanner: return 'scan'; default: return null; } } getEquipmentsTitle(equipment) { switch (equipment) { case Equipment.wifi: return 'Wifi en accès libre'; case Equipment.bornes: return this.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique'; case Equipment.printer: return this.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante'; case Equipment.tablet: return this.nbTablets > 1 ? 'Tablettes' : 'Tablette'; case Equipment.computer: return this.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur'; case Equipment.scanner: return this.nbScanners > 1 ? 'Scanners' : 'Scanner'; default: return null; } } getLabelTypeStructure() { return typeStructureEnum[this.structureType] ? typeStructureEnum[this.structureType] : ''; } hasSocialNetwork() { return ((this.facebook !== null && this.facebook !== '') || (this.instagram !== null && this.instagram !== '') || (this.linkedin !== null && this.linkedin !== '') || (this.twitter !== null && this.twitter !== '')); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvQGdvdXZmci1hbmN0L21lZGlhdGlvbi1udW1lcmlxdWUvc3JjL2xpYi9tYXAvbW9kZWxzL3N0cnVjdHVyZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwQyxNQUFNLE9BQU8sU0FBUztJQTJEcEIsWUFBWSxHQUFTO1FBMURkLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFDbkIsV0FBTSxHQUFXLElBQUksQ0FBQztRQUN0QixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0Isa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFDM0IsWUFBTyxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7UUFDakMsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFDM0IsWUFBTyxHQUFXLElBQUksQ0FBQztRQUN2QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hCLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUFXLElBQUksQ0FBQztRQUN6QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hC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O0lBRU0scUJBQXFCO1FBQzFCLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2hELENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUM7WUFDbEQsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNoRCxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi9hZGRyZXNzLm1vZGVsJztcbmltcG9ydCB7IERheSB9IGZyb20gJy4vZGF5Lm1vZGVsJztcbmltcG9ydCB7IEVxdWlwbWVudCB9IGZyb20gJy4vZW51bS9lcXVpcG1lbnQuZW51bSc7XG5pbXBvcnQgeyB0eXBlU3RydWN0dXJlRW51bSB9IGZyb20gJy4vZW51bS90eXBlU3RydWN0dXJlLmVudW0nO1xuaW1wb3J0IHsgV2Vla2RheSB9IGZyb20gJy4vZW51bS93ZWVrZGF5LmVudW0nO1xuaW1wb3J0IHsgT3BlbmluZ0RheSB9IGZyb20gJy4vb3BlbmluZ0RheS5tb2RlbCc7XG5pbXBvcnQgeyBQZXJzb25hbE9mZmVyIH0gZnJvbSAnLi9wZXJzb25hbE9mZmVyLm1vZGVsJztcbmltcG9ydCB7IFdlZWsgfSBmcm9tICcuL3dlZWsubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgU3RydWN0dXJlIHtcbiAgcHVibGljIF9pZDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIG51bWVybzogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNyZWF0ZWRBdDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZWRBdDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHN0cnVjdHVyZU5hbWU6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBzdHJ1Y3R1cmVUeXBlOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBhZGRyZXNzOiBBZGRyZXNzID0gbmV3IEFkZHJlc3MoKTtcbiAgcHVibGljIGNvbnRhY3RQaG9uZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbnRhY3RNYWlsOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgd2Vic2l0ZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGZhY2Vib29rOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgdHdpdHRlcjogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGluc3RhZ3JhbTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGxpbmtlZGluOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgbG9ja2Rvd25BY3Rpdml0eTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHBtckFjY2VzczogYm9vbGVhbiA9IG51bGw7XG4gIHB1YmxpYyBwbGFjZU9mUmVjZXB0aW9uOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIGNob2ljZUNvbXBsZXRpb246IGJvb2xlYW4gPSBudWxsO1xuICBwdWJsaWMgY29udGFjdFBlcnNvbkZpcnN0TmFtZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbnRhY3RQZXJzb25MYXN0TmFtZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbnRhY3RQZXJzb25FbWFpbDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHB1YmxpY3NBY2NvbXBhbmltZW50OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgcHJvY2VkdXJlc0FjY29tcGFuaW1lbnQ6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyByZW1vdGVBY2NvbXBhbmltZW50OiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIGFjY2Vzc01vZGFsaXR5OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgbGFiZWxzUXVhbGlmaWNhdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBwdWJsaWNzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgbmJDb21wdXRlcnM6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBuYlByaW50ZXJzOiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgbmJUYWJsZXRzOiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgbmJOdW1lcmljVGVybWluYWw6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBuYlNjYW5uZXJzOiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgZXhjZXB0aW9uYWxDbG9zdXJlczogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGVxdWlwbWVudHNBbmRTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGhvdXJzOiBXZWVrO1xuICBwdWJsaWMgZnJlZVdvcmtTaG9wOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIG90aGVyRGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XG5cbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb3BlbmVkT246IE9wZW5pbmdEYXkgPSBuZXcgT3BlbmluZ0RheSgpO1xuICBwdWJsaWMgYmFzZVNraWxsczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGFjY2Vzc1JpZ2h0OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgcGFyZW50aW5nSGVscDogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHNvY2lhbEFuZFByb2Zlc3Npb25hbDogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGRpZ2l0YWxDdWx0dXJlU2VjdXJpdHk6IHN0cmluZ1tdID0gW107XG5cbiAgcHVibGljIGRpc3RhbmNlPzogbnVtYmVyO1xuICBwdWJsaWMgY29vcmQ/OiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgZGF0YVNoYXJlQ29uc2VudERhdGU/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFjY291bnRWZXJpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwZXJzb25hbE9mZmVyczogUGVyc29uYWxPZmZlcltdID0gW107XG5cbiAgcHVibGljIGFscmVhZHlTZWxlY3RlZD8gPSBmYWxzZTtcbiAgcHVibGljIGlzQ2xhaW1lZD86IGJvb2xlYW4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKG9iaj86IGFueSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb2JqLCB7XG4gICAgICBob3Vyczogb2JqICYmIG9iai5ob3VycyA/IG5ldyBXZWVrKG9iai5ob3VycykgOiBuZXcgV2VlaygpXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5aG91cnMoZGF5OiBXZWVrZGF5KTogRGF5IHtcbiAgICBzd2l0Y2ggKGRheSkge1xuICAgICAgY2FzZSBXZWVrZGF5Lm1vbmRheTpcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMubW9uZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LnR1ZXNkYXk6XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzLnR1ZXNkYXk7XG4gICAgICBjYXNlIFdlZWtkYXkudGh1cnNkYXk6XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzLnRodXJzZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LndlZG5lc2RheTpcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMud2VkbmVzZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LmZyaWRheTpcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMuZnJpZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LnNhdHVyZGF5OlxuICAgICAgICByZXR1cm4gdGhpcy5ob3Vycy5zYXR1cmRheTtcbiAgICAgIGNhc2UgV2Vla2RheS5zdW5kYXk6XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzLnN1bmRheTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHN0cnVjdHVyZSBoYXMgZXF1aXBtZW50c1xuICAgKi9cbiAgcHVibGljIGhhc0VxdWlwbWVudHMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZXF1aXBtZW50c0FuZFNlcnZpY2VzLmxlbmd0aCAmJiB0aGlzLmhhc05vdE9ubHlFbXB0eUVxdWlwbWVudHMoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBhIHN0cnVjdHVyZSBhcyBub3Qgb25seSBlcXVpcG1lbnRzIHdpdGggMCBhcyB2YWx1ZS4gVGhpcyBpcyBtb3N0bHkgdXNlIGZvciBkaXNwbGF5LlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gdmFsaWRhdGlvblxuICAgKi9cbiAgcHVibGljIGhhc05vdE9ubHlFbXB0eUVxdWlwbWVudHMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmJDb21wdXRlcnMgKyB0aGlzLm5iUHJpbnRlcnMgKyB0aGlzLm5iVGFibGV0cyArIHRoaXMubmJOdW1lcmljVGVybWluYWwgKyB0aGlzLm5iU2Nhbm5lcnMgPiAwKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBzdHJ1Y3R1cmUgaGFzIHBhc3MgTnVtZXJpYyBsYWJlbFxuICAgKi9cbiAgcHVibGljIGhhc1Bhc3NOdW1lcmljKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxhYmVsc1F1YWxpZmljYXRpb25zLmluY2x1ZGVzKCdwYXNzTnVtZXJpcXVlJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcmFuZ2UsIGFjY29yZGluZyB0byB0aGUgZGlzdGFuY2UsIGJldHdlZW4gWzEsM10gdG8gZ2V0IGEgZGlzdGFuY2UgcmVmZXJlbmNlLlxuICAgKiAtIFswLDVrbV0gPT4gMVxuICAgKiAtIFs1a20sMTBrbV0gPT4gMlxuICAgKiAtIFsxMGttLCBbID0+IDNcbiAgICovXG4gIHB1YmxpYyBnZXREaXN0YW5jZVJhbmdlKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmRpc3RhbmNlKSB7XG4gICAgICByZXR1cm4gMztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaXQncyBpbiBrbVxuICAgICAgaWYgKHRoaXMuZGlzdGFuY2UgPiAxMDAwMCkge1xuICAgICAgICByZXR1cm4gMztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXN0YW5jZSA8IDUwMDApIHtcbiAgICAgICAgLy8gSWYgaXQncyBiZXR3ZWVuIDAgYW5kIDUwMCBtXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldExhdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvb3JkWzFdO1xuICB9XG5cbiAgcHVibGljIGdldExvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvb3JkWzBdO1xuICB9XG5cbiAgcHVibGljIGdldEVxdWlwbWVudHNJY29uKGVxdWlwbWVudDogRXF1aXBtZW50KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGVxdWlwbWVudCkge1xuICAgICAgY2FzZSBFcXVpcG1lbnQud2lmaTpcbiAgICAgICAgcmV0dXJuICd3aWZpJztcbiAgICAgIGNhc2UgRXF1aXBtZW50LmJvcm5lczpcbiAgICAgICAgcmV0dXJuICdib3JuZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC5wcmludGVyOlxuICAgICAgICByZXR1cm4gJ3ByaW50JztcbiAgICAgIGNhc2UgRXF1aXBtZW50LnRhYmxldDpcbiAgICAgICAgcmV0dXJuICd0YWJsZXQnO1xuICAgICAgY2FzZSBFcXVpcG1lbnQuY29tcHV0ZXI6XG4gICAgICAgIHJldHVybiAnY29tcHV0ZXInO1xuICAgICAgY2FzZSBFcXVpcG1lbnQuc2Nhbm5lcjpcbiAgICAgICAgcmV0dXJuICdzY2FuJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRFcXVpcG1lbnRzVGl0bGUoZXF1aXBtZW50OiBFcXVpcG1lbnQpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoZXF1aXBtZW50KSB7XG4gICAgICBjYXNlIEVxdWlwbWVudC53aWZpOlxuICAgICAgICByZXR1cm4gJ1dpZmkgZW4gYWNjw6hzIGxpYnJlJztcbiAgICAgIGNhc2UgRXF1aXBtZW50LmJvcm5lczpcbiAgICAgICAgcmV0dXJuIHRoaXMubmJOdW1lcmljVGVybWluYWwgPiAxID8gJ0Jvcm5lcyBudW3DqXJpcXVlcycgOiAnQm9ybmUgbnVtw6lyaXF1ZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC5wcmludGVyOlxuICAgICAgICByZXR1cm4gdGhpcy5uYlByaW50ZXJzID4gMSA/ICdJbXByaW1hbnRlcycgOiAnSW1wcmltYW50ZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC50YWJsZXQ6XG4gICAgICAgIHJldHVybiB0aGlzLm5iVGFibGV0cyA+IDEgPyAnVGFibGV0dGVzJyA6ICdUYWJsZXR0ZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC5jb21wdXRlcjpcbiAgICAgICAgcmV0dXJuIHRoaXMubmJDb21wdXRlcnMgPiAxID8gJ09yZGluYXRldXJzJyA6ICdPcmRpbmF0ZXVyJztcbiAgICAgIGNhc2UgRXF1aXBtZW50LnNjYW5uZXI6XG4gICAgICAgIHJldHVybiB0aGlzLm5iU2Nhbm5lcnMgPiAxID8gJ1NjYW5uZXJzJyA6ICdTY2FubmVyJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbFR5cGVTdHJ1Y3R1cmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZVN0cnVjdHVyZUVudW1bdGhpcy5zdHJ1Y3R1cmVUeXBlXSA/IHR5cGVTdHJ1Y3R1cmVFbnVtW3RoaXMuc3RydWN0dXJlVHlwZV0gOiAnJztcbiAgfVxuXG4gIHB1YmxpYyBoYXNTb2NpYWxOZXR3b3JrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5mYWNlYm9vayAhPT0gbnVsbCAmJiB0aGlzLmZhY2Vib29rICE9PSAnJykgfHxcbiAgICAgICh0aGlzLmluc3RhZ3JhbSAhPT0gbnVsbCAmJiB0aGlzLmluc3RhZ3JhbSAhPT0gJycpIHx8XG4gICAgICAodGhpcy5saW5rZWRpbiAhPT0gbnVsbCAmJiB0aGlzLmxpbmtlZGluICE9PSAnJykgfHxcbiAgICAgICh0aGlzLnR3aXR0ZXIgIT09IG51bGwgJiYgdGhpcy50d2l0dGVyICE9PSAnJylcbiAgICApO1xuICB9XG59XG4iXX0=