@doctorus/common 0.0.13 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/status/index.d.ts +4 -0
- package/lib/status/index.js +21 -0
- package/lib/status/medical-service-status.d.ts +76 -0
- package/lib/status/medical-service-status.js +191 -0
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./ssm"), exports);
|
|
18
18
|
__exportStar(require("./operations"), exports);
|
|
19
19
|
__exportStar(require("./audit"), exports);
|
|
20
|
-
|
|
20
|
+
__exportStar(require("./status"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0QiwrQ0FBNkI7QUFDN0IsMENBQXdCO0FBQ3hCLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3NtJztcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0JztcbmV4cG9ydCAqIGZyb20gJy4vc3RhdHVzJztcbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* Status module exports
|
|
19
|
+
*/
|
|
20
|
+
__exportStar(require("./medical-service-status"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILDJEQUF5QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RhdHVzIG1vZHVsZSBleHBvcnRzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cyc7XG4iXX0=
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Medical Service Status enumeration and metadata
|
|
3
|
+
*/
|
|
4
|
+
import type { Locale } from '../operations/labels';
|
|
5
|
+
export declare enum MedicalServiceStatus {
|
|
6
|
+
PENDING = "pending",
|
|
7
|
+
IN_PROGRESS = "in_progress",
|
|
8
|
+
ON_WAITING_ROOM = "on_waiting_room",
|
|
9
|
+
CANCELED = "canceled",
|
|
10
|
+
COMPLETED = "completed"
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Status metadata including icons, colors, and translations
|
|
14
|
+
*/
|
|
15
|
+
export interface StatusMetadata {
|
|
16
|
+
icon: string;
|
|
17
|
+
color: string;
|
|
18
|
+
label: {
|
|
19
|
+
short: {
|
|
20
|
+
'us-EN': string;
|
|
21
|
+
'fr-FR': string;
|
|
22
|
+
};
|
|
23
|
+
long: {
|
|
24
|
+
'us-EN': string;
|
|
25
|
+
'fr-FR': string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
description: {
|
|
29
|
+
'us-EN': string;
|
|
30
|
+
'fr-FR': string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Medical Service Status metadata configuration
|
|
35
|
+
*/
|
|
36
|
+
export declare const MEDICAL_SERVICE_STATUS_METADATA: Record<MedicalServiceStatus, StatusMetadata>;
|
|
37
|
+
/**
|
|
38
|
+
* Get status metadata
|
|
39
|
+
*/
|
|
40
|
+
export declare function getStatusMetadata(status: MedicalServiceStatus): StatusMetadata;
|
|
41
|
+
/**
|
|
42
|
+
* Get status icon
|
|
43
|
+
*/
|
|
44
|
+
export declare function getStatusIcon(status: MedicalServiceStatus): string;
|
|
45
|
+
/**
|
|
46
|
+
* Get status color
|
|
47
|
+
*/
|
|
48
|
+
export declare function getStatusColor(status: MedicalServiceStatus): string;
|
|
49
|
+
/**
|
|
50
|
+
* Get status label (short or long)
|
|
51
|
+
*/
|
|
52
|
+
export declare function getStatusLabel(status: MedicalServiceStatus, locale?: Locale, format?: 'short' | 'long'): string;
|
|
53
|
+
/**
|
|
54
|
+
* Get status description
|
|
55
|
+
*/
|
|
56
|
+
export declare function getStatusDescription(status: MedicalServiceStatus, locale?: Locale): string;
|
|
57
|
+
/**
|
|
58
|
+
* Get all available statuses
|
|
59
|
+
*/
|
|
60
|
+
export declare function getAllMedicalServiceStatuses(): MedicalServiceStatus[];
|
|
61
|
+
/**
|
|
62
|
+
* Check if a value is a valid MedicalServiceStatus
|
|
63
|
+
*/
|
|
64
|
+
export declare function isValidMedicalServiceStatus(value: string): value is MedicalServiceStatus;
|
|
65
|
+
/**
|
|
66
|
+
* Status transition rules (optional: define which transitions are allowed)
|
|
67
|
+
*/
|
|
68
|
+
export declare const MEDICAL_SERVICE_STATUS_TRANSITIONS: Record<MedicalServiceStatus, MedicalServiceStatus[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Check if a status transition is valid
|
|
71
|
+
*/
|
|
72
|
+
export declare function isValidTransition(from: MedicalServiceStatus, to: MedicalServiceStatus): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Get allowed transitions from a status
|
|
75
|
+
*/
|
|
76
|
+
export declare function getAllowedTransitions(status: MedicalServiceStatus): MedicalServiceStatus[];
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Medical Service Status enumeration and metadata
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MEDICAL_SERVICE_STATUS_TRANSITIONS = exports.MEDICAL_SERVICE_STATUS_METADATA = exports.MedicalServiceStatus = void 0;
|
|
7
|
+
exports.getStatusMetadata = getStatusMetadata;
|
|
8
|
+
exports.getStatusIcon = getStatusIcon;
|
|
9
|
+
exports.getStatusColor = getStatusColor;
|
|
10
|
+
exports.getStatusLabel = getStatusLabel;
|
|
11
|
+
exports.getStatusDescription = getStatusDescription;
|
|
12
|
+
exports.getAllMedicalServiceStatuses = getAllMedicalServiceStatuses;
|
|
13
|
+
exports.isValidMedicalServiceStatus = isValidMedicalServiceStatus;
|
|
14
|
+
exports.isValidTransition = isValidTransition;
|
|
15
|
+
exports.getAllowedTransitions = getAllowedTransitions;
|
|
16
|
+
var MedicalServiceStatus;
|
|
17
|
+
(function (MedicalServiceStatus) {
|
|
18
|
+
MedicalServiceStatus["PENDING"] = "pending";
|
|
19
|
+
MedicalServiceStatus["IN_PROGRESS"] = "in_progress";
|
|
20
|
+
MedicalServiceStatus["ON_WAITING_ROOM"] = "on_waiting_room";
|
|
21
|
+
MedicalServiceStatus["CANCELED"] = "canceled";
|
|
22
|
+
MedicalServiceStatus["COMPLETED"] = "completed";
|
|
23
|
+
})(MedicalServiceStatus || (exports.MedicalServiceStatus = MedicalServiceStatus = {}));
|
|
24
|
+
/**
|
|
25
|
+
* Medical Service Status metadata configuration
|
|
26
|
+
*/
|
|
27
|
+
exports.MEDICAL_SERVICE_STATUS_METADATA = {
|
|
28
|
+
[MedicalServiceStatus.PENDING]: {
|
|
29
|
+
icon: 'schedule',
|
|
30
|
+
color: '#9E9E9E', // Gray
|
|
31
|
+
label: {
|
|
32
|
+
short: {
|
|
33
|
+
'us-EN': 'Pending',
|
|
34
|
+
'fr-FR': 'En attente',
|
|
35
|
+
},
|
|
36
|
+
long: {
|
|
37
|
+
'us-EN': 'Pending Service',
|
|
38
|
+
'fr-FR': 'Service en attente',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
description: {
|
|
42
|
+
'us-EN': 'The medical service is scheduled and waiting to begin',
|
|
43
|
+
'fr-FR': 'Le service médical est planifié et en attente de démarrage',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
[MedicalServiceStatus.ON_WAITING_ROOM]: {
|
|
47
|
+
icon: 'person_pin_circle',
|
|
48
|
+
color: '#FF9800', // Orange
|
|
49
|
+
label: {
|
|
50
|
+
short: {
|
|
51
|
+
'us-EN': 'Waiting',
|
|
52
|
+
'fr-FR': 'En attente',
|
|
53
|
+
},
|
|
54
|
+
long: {
|
|
55
|
+
'us-EN': 'In Waiting Room',
|
|
56
|
+
'fr-FR': "Dans la salle d'attente",
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
description: {
|
|
60
|
+
'us-EN': 'Patient has checked in and is waiting in the waiting room',
|
|
61
|
+
'fr-FR': "Le patient s'est enregistré et attend dans la salle d'attente",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
[MedicalServiceStatus.IN_PROGRESS]: {
|
|
65
|
+
icon: 'medical_services',
|
|
66
|
+
color: '#2196F3', // Blue
|
|
67
|
+
label: {
|
|
68
|
+
short: {
|
|
69
|
+
'us-EN': 'In Progress',
|
|
70
|
+
'fr-FR': 'En cours',
|
|
71
|
+
},
|
|
72
|
+
long: {
|
|
73
|
+
'us-EN': 'Service In Progress',
|
|
74
|
+
'fr-FR': 'Service en cours',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
description: {
|
|
78
|
+
'us-EN': 'The medical service consultation is currently in progress',
|
|
79
|
+
'fr-FR': 'La consultation du service médical est actuellement en cours',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
[MedicalServiceStatus.COMPLETED]: {
|
|
83
|
+
icon: 'check_circle',
|
|
84
|
+
color: '#4CAF50', // Green
|
|
85
|
+
label: {
|
|
86
|
+
short: {
|
|
87
|
+
'us-EN': 'Completed',
|
|
88
|
+
'fr-FR': 'Terminé',
|
|
89
|
+
},
|
|
90
|
+
long: {
|
|
91
|
+
'us-EN': 'Service Completed',
|
|
92
|
+
'fr-FR': 'Service terminé',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
description: {
|
|
96
|
+
'us-EN': 'The medical service has been successfully completed',
|
|
97
|
+
'fr-FR': 'Le service médical a été terminé avec succès',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
[MedicalServiceStatus.CANCELED]: {
|
|
101
|
+
icon: 'cancel',
|
|
102
|
+
color: '#F44336', // Red
|
|
103
|
+
label: {
|
|
104
|
+
short: {
|
|
105
|
+
'us-EN': 'Canceled',
|
|
106
|
+
'fr-FR': 'Annulé',
|
|
107
|
+
},
|
|
108
|
+
long: {
|
|
109
|
+
'us-EN': 'Service Canceled',
|
|
110
|
+
'fr-FR': 'Service annulé',
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
description: {
|
|
114
|
+
'us-EN': 'The medical service has been canceled and will not proceed',
|
|
115
|
+
'fr-FR': 'Le service médical a été annulé et ne sera pas effectué',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Get status metadata
|
|
121
|
+
*/
|
|
122
|
+
function getStatusMetadata(status) {
|
|
123
|
+
return exports.MEDICAL_SERVICE_STATUS_METADATA[status];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get status icon
|
|
127
|
+
*/
|
|
128
|
+
function getStatusIcon(status) {
|
|
129
|
+
return exports.MEDICAL_SERVICE_STATUS_METADATA[status].icon;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get status color
|
|
133
|
+
*/
|
|
134
|
+
function getStatusColor(status) {
|
|
135
|
+
return exports.MEDICAL_SERVICE_STATUS_METADATA[status].color;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get status label (short or long)
|
|
139
|
+
*/
|
|
140
|
+
function getStatusLabel(status, locale = 'us-EN', format = 'short') {
|
|
141
|
+
return exports.MEDICAL_SERVICE_STATUS_METADATA[status].label[format][locale];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get status description
|
|
145
|
+
*/
|
|
146
|
+
function getStatusDescription(status, locale = 'us-EN') {
|
|
147
|
+
return exports.MEDICAL_SERVICE_STATUS_METADATA[status].description[locale];
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get all available statuses
|
|
151
|
+
*/
|
|
152
|
+
function getAllMedicalServiceStatuses() {
|
|
153
|
+
return Object.values(MedicalServiceStatus);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check if a value is a valid MedicalServiceStatus
|
|
157
|
+
*/
|
|
158
|
+
function isValidMedicalServiceStatus(value) {
|
|
159
|
+
return Object.values(MedicalServiceStatus).includes(value);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Status transition rules (optional: define which transitions are allowed)
|
|
163
|
+
*/
|
|
164
|
+
exports.MEDICAL_SERVICE_STATUS_TRANSITIONS = {
|
|
165
|
+
[MedicalServiceStatus.PENDING]: [
|
|
166
|
+
MedicalServiceStatus.ON_WAITING_ROOM,
|
|
167
|
+
MedicalServiceStatus.IN_PROGRESS,
|
|
168
|
+
MedicalServiceStatus.CANCELED,
|
|
169
|
+
],
|
|
170
|
+
[MedicalServiceStatus.ON_WAITING_ROOM]: [
|
|
171
|
+
MedicalServiceStatus.IN_PROGRESS,
|
|
172
|
+
MedicalServiceStatus.CANCELED,
|
|
173
|
+
MedicalServiceStatus.PENDING,
|
|
174
|
+
],
|
|
175
|
+
[MedicalServiceStatus.IN_PROGRESS]: [MedicalServiceStatus.COMPLETED, MedicalServiceStatus.CANCELED],
|
|
176
|
+
[MedicalServiceStatus.COMPLETED]: [MedicalServiceStatus.IN_PROGRESS], // Allow reopening
|
|
177
|
+
[MedicalServiceStatus.CANCELED]: [MedicalServiceStatus.PENDING], // Allow uncanceling
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Check if a status transition is valid
|
|
181
|
+
*/
|
|
182
|
+
function isValidTransition(from, to) {
|
|
183
|
+
return exports.MEDICAL_SERVICE_STATUS_TRANSITIONS[from]?.includes(to) ?? false;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get allowed transitions from a status
|
|
187
|
+
*/
|
|
188
|
+
function getAllowedTransitions(status) {
|
|
189
|
+
return exports.MEDICAL_SERVICE_STATUS_TRANSITIONS[status] ?? [];
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0dXMvbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQXFJSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FNQztBQUtELG9EQUVDO0FBS0Qsb0VBRUM7QUFLRCxrRUFFQztBQXdCRCw4Q0FFQztBQUtELHNEQUVDO0FBbE5ELElBQVksb0JBTVg7QUFORCxXQUFZLG9CQUFvQjtJQUM5QiwyQ0FBbUIsQ0FBQTtJQUNuQixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQyw2Q0FBcUIsQ0FBQTtJQUNyQiwrQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsb0JBQW9CLG9DQUFwQixvQkFBb0IsUUFNL0I7QUF3QkQ7O0dBRUc7QUFDVSxRQUFBLCtCQUErQixHQUFpRDtJQUMzRixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzlCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTztRQUN6QixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE9BQU8sRUFBRSxZQUFZO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLE9BQU8sRUFBRSxvQkFBb0I7YUFDOUI7U0FDRjtRQUNELFdBQVcsRUFBRTtZQUNYLE9BQU8sRUFBRSx1REFBdUQ7WUFDaEUsT0FBTyxFQUFFLDREQUE0RDtTQUN0RTtLQUNGO0lBQ0QsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUztRQUMzQixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JB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ZWRpY2FsIFNlcnZpY2UgU3RhdHVzIGVudW1lcmF0aW9uIGFuZCBtZXRhZGF0YVxuICovXG5cbmltcG9ydCB0eXBlIHsgTG9jYWxlIH0gZnJvbSAnLi4vb3BlcmF0aW9ucy9sYWJlbHMnO1xuXG5leHBvcnQgZW51bSBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIFBFTkRJTkcgPSAncGVuZGluZycsXG4gIElOX1BST0dSRVNTID0gJ2luX3Byb2dyZXNzJyxcbiAgT05fV0FJVElOR19ST09NID0gJ29uX3dhaXRpbmdfcm9vbScsXG4gIENBTkNFTEVEID0gJ2NhbmNlbGVkJyxcbiAgQ09NUExFVEVEID0gJ2NvbXBsZXRlZCcsXG59XG5cbi8qKlxuICogU3RhdHVzIG1ldGFkYXRhIGluY2x1ZGluZyBpY29ucywgY29sb3JzLCBhbmQgdHJhbnNsYXRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdHVzTWV0YWRhdGEge1xuICBpY29uOiBzdHJpbmc7IC8vIE1hdGVyaWFsIGljb24gbmFtZVxuICBjb2xvcjogc3RyaW5nOyAvLyBIZXggY29sb3Igb3IgQ1NTIGNvbG9yIG5hbWVcbiAgbGFiZWw6IHtcbiAgICBzaG9ydDoge1xuICAgICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICAgJ2ZyLUZSJzogc3RyaW5nO1xuICAgIH07XG4gICAgbG9uZzoge1xuICAgICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICAgJ2ZyLUZSJzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIGRlc2NyaXB0aW9uOiB7XG4gICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICdmci1GUic6IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBNZWRpY2FsIFNlcnZpY2UgU3RhdHVzIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEE6IFJlY29yZDxNZWRpY2FsU2VydmljZVN0YXR1cywgU3RhdHVzTWV0YWRhdGE+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IHtcbiAgICBpY29uOiAnc2NoZWR1bGUnLFxuICAgIGNvbG9yOiAnIzlFOUU5RScsIC8vIEdyYXlcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1BlbmRpbmcnLFxuICAgICAgICAnZnItRlInOiAnRW4gYXR0ZW50ZScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnUGVuZGluZyBTZXJ2aWNlJyxcbiAgICAgICAgJ2ZyLUZSJzogJ1NlcnZpY2UgZW4gYXR0ZW50ZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGlzIHNjaGVkdWxlZCBhbmQgd2FpdGluZyB0byBiZWdpbicsXG4gICAgICAnZnItRlInOiAnTGUgc2VydmljZSBtw6lkaWNhbCBlc3QgcGxhbmlmacOpIGV0IGVuIGF0dGVudGUgZGUgZMOpbWFycmFnZScsXG4gICAgfSxcbiAgfSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLk9OX1dBSVRJTkdfUk9PTV06IHtcbiAgICBpY29uOiAncGVyc29uX3Bpbl9jaXJjbGUnLFxuICAgIGNvbG9yOiAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnV2FpdGluZycsXG4gICAgICAgICdmci1GUic6ICdFbiBhdHRlbnRlJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdJbiBXYWl0aW5nIFJvb20nLFxuICAgICAgICAnZnItRlInOiBcIkRhbnMgbGEgc2FsbGUgZCdhdHRlbnRlXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdQYXRpZW50IGhhcyBjaGVja2VkIGluIGFuZCBpcyB3YWl0aW5nIGluIHRoZSB3YWl0aW5nIHJvb20nLFxuICAgICAgJ2ZyLUZSJzogXCJMZSBwYXRpZW50IHMnZXN0IGVucmVnaXN0csOpIGV0IGF0dGVuZCBkYW5zIGxhIHNhbGxlIGQnYXR0ZW50ZVwiLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5JTl9QUk9HUkVTU106IHtcbiAgICBpY29uOiAnbWVkaWNhbF9zZXJ2aWNlcycsXG4gICAgY29sb3I6ICcjMjE5NkYzJywgLy8gQmx1ZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnRW4gY291cnMnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBlbiBjb3VycycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGNvbnN1bHRhdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MnLFxuICAgICAgJ2ZyLUZSJzogJ0xhIGNvbnN1bHRhdGlvbiBkdSBzZXJ2aWNlIG3DqWRpY2FsIGVzdCBhY3R1ZWxsZW1lbnQgZW4gY291cnMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DT01QTEVURURdOiB7XG4gICAgaWNvbjogJ2NoZWNrX2NpcmNsZScsXG4gICAgY29sb3I6ICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NvbXBsZXRlZCcsXG4gICAgICAgICdmci1GUic6ICdUZXJtaW7DqScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnU2VydmljZSBDb21wbGV0ZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSB0ZXJtaW7DqScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSB0ZXJtaW7DqSBhdmVjIHN1Y2PDqHMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IHtcbiAgICBpY29uOiAnY2FuY2VsJyxcbiAgICBjb2xvcjogJyNGNDQzMzYnLCAvLyBSZWRcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NhbmNlbGVkJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0FubnVsw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgQ2FuY2VsZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBhbm51bMOpJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ1RoZSBtZWRpY2FsIHNlcnZpY2UgaGFzIGJlZW4gY2FuY2VsZWQgYW5kIHdpbGwgbm90IHByb2NlZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSBhbm51bMOpIGV0IG5lIHNlcmEgcGFzIGVmZmVjdHXDqScsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGEoc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IFN0YXR1c01ldGFkYXRhIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXTtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGljb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ljb24oc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uaWNvbjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIChzaG9ydCBvciBsb25nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoXG4gIHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsXG4gIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyxcbiAgZm9ybWF0OiAnc2hvcnQnIHwgJ2xvbmcnID0gJ3Nob3J0Jyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10ubGFiZWxbZm9ybWF0XVtsb2NhbGVdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgZGVzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0Rlc2NyaXB0aW9uKHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uZGVzY3JpcHRpb25bbG9jYWxlXTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIGF2YWlsYWJsZSBzdGF0dXNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTWVkaWNhbFNlcnZpY2VTdGF0dXNlcygpOiBNZWRpY2FsU2VydmljZVN0YXR1c1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVkaWNhbFNlcnZpY2VTdGF0dXMpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBNZWRpY2FsU2VydmljZVN0YXR1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lZGljYWxTZXJ2aWNlU3RhdHVzKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKE1lZGljYWxTZXJ2aWNlU3RhdHVzKS5pbmNsdWRlcyh2YWx1ZSBhcyBNZWRpY2FsU2VydmljZVN0YXR1cyk7XG59XG5cbi8qKlxuICogU3RhdHVzIHRyYW5zaXRpb24gcnVsZXMgKG9wdGlvbmFsOiBkZWZpbmUgd2hpY2ggdHJhbnNpdGlvbnMgYXJlIGFsbG93ZWQpXG4gKi9cbmV4cG9ydCBjb25zdCBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TOiBSZWNvcmQ8TWVkaWNhbFNlcnZpY2VTdGF0dXMsIE1lZGljYWxTZXJ2aWNlU3RhdHVzW10+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IFtcbiAgICBNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT00sXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gIF0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT01dOiBbXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElORyxcbiAgXSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLkNPTVBMRVRFRCwgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRURdLFxuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ09NUExFVEVEXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXSwgLy8gQWxsb3cgcmVvcGVuaW5nXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IFtNZWRpY2FsU2VydmljZVN0YXR1cy5QRU5ESU5HXSwgLy8gQWxsb3cgdW5jYW5jZWxpbmdcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdGF0dXMgdHJhbnNpdGlvbiBpcyB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zaXRpb24oZnJvbTogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIHRvOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IGJvb2xlYW4ge1xuICByZXR1cm4gTUVESUNBTF9TRVJWSUNFX1NUQVRVU19UUkFOU0lUSU9OU1tmcm9tXT8uaW5jbHVkZXModG8pID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCBhbGxvd2VkIHRyYW5zaXRpb25zIGZyb20gYSBzdGF0dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbG93ZWRUcmFuc2l0aW9ucyhzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogTWVkaWNhbFNlcnZpY2VTdGF0dXNbXSB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TW3N0YXR1c10gPz8gW107XG59XG4iXX0=
|