@vendasta/social-posts 5.46.0 → 5.48.0
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/esm2020/lib/_internal/blog-website.api.service.mjs +40 -0
- package/esm2020/lib/_internal/drafts.api.service.mjs +82 -0
- package/esm2020/lib/_internal/enums/drafts-api.enum.mjs +14 -0
- package/esm2020/lib/_internal/enums/drafts.enum.mjs +27 -0
- package/esm2020/lib/_internal/enums/engagement.enum.mjs +13 -0
- package/esm2020/lib/_internal/enums/index.mjs +7 -1
- package/esm2020/lib/_internal/enums/provisioning.enum.mjs +14 -0
- package/esm2020/lib/_internal/enums/social-content.enum.mjs +51 -0
- package/esm2020/lib/_internal/enums/stock-image.enum.mjs +19 -0
- package/esm2020/lib/_internal/image-library.api.service.mjs +40 -0
- package/esm2020/lib/_internal/index.mjs +7 -1
- package/esm2020/lib/_internal/interfaces/blog-website-info.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/drafts-api.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/drafts.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/engagement.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/provisioning.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/social-content.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/social-post-stats.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/stock-image.interface.mjs +8 -0
- package/esm2020/lib/_internal/multilocation-post.api.service.mjs +2 -3
- package/esm2020/lib/_internal/objects/blog-website-info.mjs +149 -0
- package/esm2020/lib/_internal/objects/drafts-api.mjs +622 -0
- package/esm2020/lib/_internal/objects/drafts.mjs +446 -0
- package/esm2020/lib/_internal/objects/engagement.mjs +221 -0
- package/esm2020/lib/_internal/objects/index.mjs +9 -2
- package/esm2020/lib/_internal/objects/provisioning.mjs +43 -0
- package/esm2020/lib/_internal/objects/social-content.mjs +384 -0
- package/esm2020/lib/_internal/objects/social-post-stats.mjs +7 -1
- package/esm2020/lib/_internal/objects/stock-image.mjs +168 -0
- package/esm2020/lib/_internal/provisioning.api.service.mjs +38 -0
- package/esm2020/lib/_internal/social-content.api.service.mjs +40 -0
- package/esm2020/lib/_internal/social-post-engagements.api.service.mjs +40 -0
- package/esm2020/lib/drafts.service.mjs +46 -0
- package/esm2020/lib/index.mjs +2 -1
- package/esm2020/lib/multilocation-posts.service.mjs +1 -1
- package/fesm2015/vendasta-social-posts.mjs +4202 -1755
- package/fesm2015/vendasta-social-posts.mjs.map +1 -1
- package/fesm2020/vendasta-social-posts.mjs +4202 -1755
- package/fesm2020/vendasta-social-posts.mjs.map +1 -1
- package/lib/_internal/blog-website.api.service.d.ts +13 -0
- package/lib/_internal/drafts.api.service.d.ts +23 -0
- package/lib/_internal/enums/drafts-api.enum.d.ts +6 -0
- package/lib/_internal/enums/drafts.enum.d.ts +18 -0
- package/lib/_internal/enums/engagement.enum.d.ts +5 -0
- package/lib/_internal/enums/index.d.ts +6 -0
- package/lib/_internal/enums/provisioning.enum.d.ts +6 -0
- package/lib/_internal/enums/social-content.enum.d.ts +39 -0
- package/lib/_internal/enums/stock-image.enum.d.ts +10 -0
- package/lib/_internal/image-library.api.service.d.ts +13 -0
- package/lib/_internal/index.d.ts +6 -0
- package/lib/_internal/interfaces/blog-website-info.interface.d.ts +24 -0
- package/lib/_internal/interfaces/drafts-api.interface.d.ts +109 -0
- package/lib/_internal/interfaces/drafts.interface.d.ts +82 -0
- package/lib/_internal/interfaces/engagement.interface.d.ts +37 -0
- package/lib/_internal/interfaces/index.d.ts +8 -1
- package/lib/_internal/interfaces/provisioning.interface.d.ts +8 -0
- package/lib/_internal/interfaces/social-content.interface.d.ts +71 -0
- package/lib/_internal/interfaces/social-post-stats.interface.d.ts +1 -0
- package/lib/_internal/interfaces/stock-image.interface.d.ts +30 -0
- package/lib/_internal/multilocation-post.api.service.d.ts +1 -1
- package/lib/_internal/objects/blog-website-info.d.ts +41 -0
- package/lib/_internal/objects/drafts-api.d.ts +162 -0
- package/lib/_internal/objects/drafts.d.ts +120 -0
- package/lib/_internal/objects/engagement.d.ts +60 -0
- package/lib/_internal/objects/index.d.ts +8 -1
- package/lib/_internal/objects/provisioning.d.ts +13 -0
- package/lib/_internal/objects/social-content.d.ts +103 -0
- package/lib/_internal/objects/social-post-stats.d.ts +1 -0
- package/lib/_internal/objects/stock-image.d.ts +47 -0
- package/lib/_internal/provisioning.api.service.d.ts +14 -0
- package/lib/_internal/social-content.api.service.d.ts +13 -0
- package/lib/_internal/social-post-engagements.api.service.d.ts +13 -0
- package/lib/drafts.service.d.ts +20 -0
- package/lib/index.d.ts +1 -0
- package/lib/multilocation-posts.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,622 @@
|
|
|
1
|
+
import { GMBPostCustomization, DraftMedia, DraftMetaData, DraftYoutubeCustomization, SSIDDraftType, DraftTikTokCustomization, DraftBlogPostCustomization, CampaignCustomization, Draft, MlDraftPost } from './drafts';
|
|
2
|
+
import * as e from '../enums';
|
|
3
|
+
export function enumStringToValue(enumRef, value) {
|
|
4
|
+
if (typeof value === 'number') {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
return enumRef[value];
|
|
8
|
+
}
|
|
9
|
+
export class CreateDraftRequest {
|
|
10
|
+
static fromProto(proto) {
|
|
11
|
+
let m = new CreateDraftRequest();
|
|
12
|
+
m = Object.assign(m, proto);
|
|
13
|
+
if (proto.postDateTime) {
|
|
14
|
+
m.postDateTime = new Date(proto.postDateTime);
|
|
15
|
+
}
|
|
16
|
+
if (proto.gmbPostCustomization) {
|
|
17
|
+
m.gmbPostCustomization = GMBPostCustomization.fromProto(proto.gmbPostCustomization);
|
|
18
|
+
}
|
|
19
|
+
if (proto.media) {
|
|
20
|
+
m.media = proto.media.map(DraftMedia.fromProto);
|
|
21
|
+
}
|
|
22
|
+
if (proto.draftType) {
|
|
23
|
+
m.draftType = enumStringToValue(e.DraftType, proto.draftType);
|
|
24
|
+
}
|
|
25
|
+
if (proto.metadata) {
|
|
26
|
+
m.metadata = proto.metadata.map(DraftMetaData.fromProto);
|
|
27
|
+
}
|
|
28
|
+
if (proto.youtubeCustomization) {
|
|
29
|
+
m.youtubeCustomization = DraftYoutubeCustomization.fromProto(proto.youtubeCustomization);
|
|
30
|
+
}
|
|
31
|
+
if (proto.ssidDraftTypes) {
|
|
32
|
+
m.ssidDraftTypes = proto.ssidDraftTypes.map(SSIDDraftType.fromProto);
|
|
33
|
+
}
|
|
34
|
+
if (proto.tiktokCustomization) {
|
|
35
|
+
m.tiktokCustomization = DraftTikTokCustomization.fromProto(proto.tiktokCustomization);
|
|
36
|
+
}
|
|
37
|
+
if (proto.blogPostCustomization) {
|
|
38
|
+
m.blogPostCustomization = DraftBlogPostCustomization.fromProto(proto.blogPostCustomization);
|
|
39
|
+
}
|
|
40
|
+
if (proto.campaignCustomization) {
|
|
41
|
+
m.campaignCustomization = CampaignCustomization.fromProto(proto.campaignCustomization);
|
|
42
|
+
}
|
|
43
|
+
return m;
|
|
44
|
+
}
|
|
45
|
+
constructor(kwargs) {
|
|
46
|
+
if (!kwargs) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
Object.assign(this, kwargs);
|
|
50
|
+
}
|
|
51
|
+
toApiJson() {
|
|
52
|
+
const toReturn = {};
|
|
53
|
+
if (typeof this.accountGroupId !== 'undefined') {
|
|
54
|
+
toReturn['accountGroupId'] = this.accountGroupId;
|
|
55
|
+
}
|
|
56
|
+
if (typeof this.draftText !== 'undefined') {
|
|
57
|
+
toReturn['draftText'] = this.draftText;
|
|
58
|
+
}
|
|
59
|
+
if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {
|
|
60
|
+
toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? this.postDateTime.toApiJson() : this.postDateTime;
|
|
61
|
+
}
|
|
62
|
+
if (typeof this.gmbPostCustomization !== 'undefined' && this.gmbPostCustomization !== null) {
|
|
63
|
+
toReturn['gmbPostCustomization'] = 'toApiJson' in this.gmbPostCustomization ? this.gmbPostCustomization.toApiJson() : this.gmbPostCustomization;
|
|
64
|
+
}
|
|
65
|
+
if (typeof this.previews !== 'undefined') {
|
|
66
|
+
toReturn['previews'] = this.previews;
|
|
67
|
+
}
|
|
68
|
+
if (typeof this.options !== 'undefined') {
|
|
69
|
+
toReturn['options'] = this.options;
|
|
70
|
+
}
|
|
71
|
+
if (typeof this.media !== 'undefined' && this.media !== null) {
|
|
72
|
+
toReturn['media'] = 'toApiJson' in this.media ? this.media.toApiJson() : this.media;
|
|
73
|
+
}
|
|
74
|
+
if (typeof this.ssids !== 'undefined') {
|
|
75
|
+
toReturn['ssids'] = this.ssids;
|
|
76
|
+
}
|
|
77
|
+
if (typeof this.draftType !== 'undefined') {
|
|
78
|
+
toReturn['draftType'] = this.draftType;
|
|
79
|
+
}
|
|
80
|
+
if (typeof this.metadata !== 'undefined' && this.metadata !== null) {
|
|
81
|
+
toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;
|
|
82
|
+
}
|
|
83
|
+
if (typeof this.youtubeCustomization !== 'undefined' && this.youtubeCustomization !== null) {
|
|
84
|
+
toReturn['youtubeCustomization'] = 'toApiJson' in this.youtubeCustomization ? this.youtubeCustomization.toApiJson() : this.youtubeCustomization;
|
|
85
|
+
}
|
|
86
|
+
if (typeof this.ssidDraftTypes !== 'undefined' && this.ssidDraftTypes !== null) {
|
|
87
|
+
toReturn['ssidDraftTypes'] = 'toApiJson' in this.ssidDraftTypes ? this.ssidDraftTypes.toApiJson() : this.ssidDraftTypes;
|
|
88
|
+
}
|
|
89
|
+
if (typeof this.isHidden !== 'undefined') {
|
|
90
|
+
toReturn['isHidden'] = this.isHidden;
|
|
91
|
+
}
|
|
92
|
+
if (typeof this.tiktokCustomization !== 'undefined' && this.tiktokCustomization !== null) {
|
|
93
|
+
toReturn['tiktokCustomization'] = 'toApiJson' in this.tiktokCustomization ? this.tiktokCustomization.toApiJson() : this.tiktokCustomization;
|
|
94
|
+
}
|
|
95
|
+
if (typeof this.blogPostCustomization !== 'undefined' && this.blogPostCustomization !== null) {
|
|
96
|
+
toReturn['blogPostCustomization'] = 'toApiJson' in this.blogPostCustomization ? this.blogPostCustomization.toApiJson() : this.blogPostCustomization;
|
|
97
|
+
}
|
|
98
|
+
if (typeof this.campaignCustomization !== 'undefined' && this.campaignCustomization !== null) {
|
|
99
|
+
toReturn['campaignCustomization'] = 'toApiJson' in this.campaignCustomization ? this.campaignCustomization.toApiJson() : this.campaignCustomization;
|
|
100
|
+
}
|
|
101
|
+
if (typeof this.brandId !== 'undefined') {
|
|
102
|
+
toReturn['brandId'] = this.brandId;
|
|
103
|
+
}
|
|
104
|
+
if (typeof this.multilocationPostId !== 'undefined') {
|
|
105
|
+
toReturn['multilocationPostId'] = this.multilocationPostId;
|
|
106
|
+
}
|
|
107
|
+
if (typeof this.socialNetworkIdentifier !== 'undefined') {
|
|
108
|
+
toReturn['socialNetworkIdentifier'] = this.socialNetworkIdentifier;
|
|
109
|
+
}
|
|
110
|
+
return toReturn;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export class CreateDraftResponse {
|
|
114
|
+
static fromProto(proto) {
|
|
115
|
+
let m = new CreateDraftResponse();
|
|
116
|
+
m = Object.assign(m, proto);
|
|
117
|
+
if (proto.draft) {
|
|
118
|
+
m.draft = Draft.fromProto(proto.draft);
|
|
119
|
+
}
|
|
120
|
+
return m;
|
|
121
|
+
}
|
|
122
|
+
constructor(kwargs) {
|
|
123
|
+
if (!kwargs) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
Object.assign(this, kwargs);
|
|
127
|
+
}
|
|
128
|
+
toApiJson() {
|
|
129
|
+
const toReturn = {};
|
|
130
|
+
if (typeof this.draft !== 'undefined' && this.draft !== null) {
|
|
131
|
+
toReturn['draft'] = 'toApiJson' in this.draft ? this.draft.toApiJson() : this.draft;
|
|
132
|
+
}
|
|
133
|
+
return toReturn;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
export class CreateMultiDraftsRequest {
|
|
137
|
+
static fromProto(proto) {
|
|
138
|
+
let m = new CreateMultiDraftsRequest();
|
|
139
|
+
m = Object.assign(m, proto);
|
|
140
|
+
if (proto.drafts) {
|
|
141
|
+
m.drafts = proto.drafts.map(CreateDraftRequest.fromProto);
|
|
142
|
+
}
|
|
143
|
+
return m;
|
|
144
|
+
}
|
|
145
|
+
constructor(kwargs) {
|
|
146
|
+
if (!kwargs) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
Object.assign(this, kwargs);
|
|
150
|
+
}
|
|
151
|
+
toApiJson() {
|
|
152
|
+
const toReturn = {};
|
|
153
|
+
if (typeof this.drafts !== 'undefined' && this.drafts !== null) {
|
|
154
|
+
toReturn['drafts'] = 'toApiJson' in this.drafts ? this.drafts.toApiJson() : this.drafts;
|
|
155
|
+
}
|
|
156
|
+
return toReturn;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export class CreateMultiDraftsResponse {
|
|
160
|
+
static fromProto(proto) {
|
|
161
|
+
let m = new CreateMultiDraftsResponse();
|
|
162
|
+
m = Object.assign(m, proto);
|
|
163
|
+
if (proto.drafts) {
|
|
164
|
+
m.drafts = proto.drafts.map(Draft.fromProto);
|
|
165
|
+
}
|
|
166
|
+
return m;
|
|
167
|
+
}
|
|
168
|
+
constructor(kwargs) {
|
|
169
|
+
if (!kwargs) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
Object.assign(this, kwargs);
|
|
173
|
+
}
|
|
174
|
+
toApiJson() {
|
|
175
|
+
const toReturn = {};
|
|
176
|
+
if (typeof this.drafts !== 'undefined' && this.drafts !== null) {
|
|
177
|
+
toReturn['drafts'] = 'toApiJson' in this.drafts ? this.drafts.toApiJson() : this.drafts;
|
|
178
|
+
}
|
|
179
|
+
return toReturn;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export class DeleteDraftRequest {
|
|
183
|
+
static fromProto(proto) {
|
|
184
|
+
let m = new DeleteDraftRequest();
|
|
185
|
+
m = Object.assign(m, proto);
|
|
186
|
+
return m;
|
|
187
|
+
}
|
|
188
|
+
constructor(kwargs) {
|
|
189
|
+
if (!kwargs) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
Object.assign(this, kwargs);
|
|
193
|
+
}
|
|
194
|
+
toApiJson() {
|
|
195
|
+
const toReturn = {};
|
|
196
|
+
if (typeof this.accountGroupId !== 'undefined') {
|
|
197
|
+
toReturn['accountGroupId'] = this.accountGroupId;
|
|
198
|
+
}
|
|
199
|
+
if (typeof this.draftId !== 'undefined') {
|
|
200
|
+
toReturn['draftId'] = this.draftId;
|
|
201
|
+
}
|
|
202
|
+
return toReturn;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
export class GetDraftRequest {
|
|
206
|
+
static fromProto(proto) {
|
|
207
|
+
let m = new GetDraftRequest();
|
|
208
|
+
m = Object.assign(m, proto);
|
|
209
|
+
return m;
|
|
210
|
+
}
|
|
211
|
+
constructor(kwargs) {
|
|
212
|
+
if (!kwargs) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
Object.assign(this, kwargs);
|
|
216
|
+
}
|
|
217
|
+
toApiJson() {
|
|
218
|
+
const toReturn = {};
|
|
219
|
+
if (typeof this.accountGroupId !== 'undefined') {
|
|
220
|
+
toReturn['accountGroupId'] = this.accountGroupId;
|
|
221
|
+
}
|
|
222
|
+
if (typeof this.draftId !== 'undefined') {
|
|
223
|
+
toReturn['draftId'] = this.draftId;
|
|
224
|
+
}
|
|
225
|
+
return toReturn;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
export class GetDraftResponse {
|
|
229
|
+
static fromProto(proto) {
|
|
230
|
+
let m = new GetDraftResponse();
|
|
231
|
+
m = Object.assign(m, proto);
|
|
232
|
+
if (proto.draft) {
|
|
233
|
+
m.draft = Draft.fromProto(proto.draft);
|
|
234
|
+
}
|
|
235
|
+
return m;
|
|
236
|
+
}
|
|
237
|
+
constructor(kwargs) {
|
|
238
|
+
if (!kwargs) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
Object.assign(this, kwargs);
|
|
242
|
+
}
|
|
243
|
+
toApiJson() {
|
|
244
|
+
const toReturn = {};
|
|
245
|
+
if (typeof this.draft !== 'undefined' && this.draft !== null) {
|
|
246
|
+
toReturn['draft'] = 'toApiJson' in this.draft ? this.draft.toApiJson() : this.draft;
|
|
247
|
+
}
|
|
248
|
+
return toReturn;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export class ListDraftsByNetworkIdentifierRequest {
|
|
252
|
+
static fromProto(proto) {
|
|
253
|
+
let m = new ListDraftsByNetworkIdentifierRequest();
|
|
254
|
+
m = Object.assign(m, proto);
|
|
255
|
+
if (proto.pageSize) {
|
|
256
|
+
m.pageSize = parseInt(proto.pageSize, 10);
|
|
257
|
+
}
|
|
258
|
+
return m;
|
|
259
|
+
}
|
|
260
|
+
constructor(kwargs) {
|
|
261
|
+
if (!kwargs) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
Object.assign(this, kwargs);
|
|
265
|
+
}
|
|
266
|
+
toApiJson() {
|
|
267
|
+
const toReturn = {};
|
|
268
|
+
if (typeof this.accountGroupId !== 'undefined') {
|
|
269
|
+
toReturn['accountGroupId'] = this.accountGroupId;
|
|
270
|
+
}
|
|
271
|
+
if (typeof this.socialNetworkIdentifier !== 'undefined') {
|
|
272
|
+
toReturn['socialNetworkIdentifier'] = this.socialNetworkIdentifier;
|
|
273
|
+
}
|
|
274
|
+
if (typeof this.cursor !== 'undefined') {
|
|
275
|
+
toReturn['cursor'] = this.cursor;
|
|
276
|
+
}
|
|
277
|
+
if (typeof this.pageSize !== 'undefined') {
|
|
278
|
+
toReturn['pageSize'] = this.pageSize;
|
|
279
|
+
}
|
|
280
|
+
return toReturn;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
export class ListDraftsByNetworkIdentifierResponse {
|
|
284
|
+
static fromProto(proto) {
|
|
285
|
+
let m = new ListDraftsByNetworkIdentifierResponse();
|
|
286
|
+
m = Object.assign(m, proto);
|
|
287
|
+
if (proto.drafts) {
|
|
288
|
+
m.drafts = proto.drafts.map(Draft.fromProto);
|
|
289
|
+
}
|
|
290
|
+
return m;
|
|
291
|
+
}
|
|
292
|
+
constructor(kwargs) {
|
|
293
|
+
if (!kwargs) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
Object.assign(this, kwargs);
|
|
297
|
+
}
|
|
298
|
+
toApiJson() {
|
|
299
|
+
const toReturn = {};
|
|
300
|
+
if (typeof this.drafts !== 'undefined' && this.drafts !== null) {
|
|
301
|
+
toReturn['drafts'] = 'toApiJson' in this.drafts ? this.drafts.toApiJson() : this.drafts;
|
|
302
|
+
}
|
|
303
|
+
if (typeof this.nextCursor !== 'undefined') {
|
|
304
|
+
toReturn['nextCursor'] = this.nextCursor;
|
|
305
|
+
}
|
|
306
|
+
if (typeof this.hasMore !== 'undefined') {
|
|
307
|
+
toReturn['hasMore'] = this.hasMore;
|
|
308
|
+
}
|
|
309
|
+
return toReturn;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
export class ListDraftsRequest {
|
|
313
|
+
static fromProto(proto) {
|
|
314
|
+
let m = new ListDraftsRequest();
|
|
315
|
+
m = Object.assign(m, proto);
|
|
316
|
+
if (proto.pageSize) {
|
|
317
|
+
m.pageSize = parseInt(proto.pageSize, 10);
|
|
318
|
+
}
|
|
319
|
+
if (proto.start) {
|
|
320
|
+
m.start = new Date(proto.start);
|
|
321
|
+
}
|
|
322
|
+
if (proto.end) {
|
|
323
|
+
m.end = new Date(proto.end);
|
|
324
|
+
}
|
|
325
|
+
if (proto.visibilityType) {
|
|
326
|
+
m.visibilityType = enumStringToValue(e.VisibilityType, proto.visibilityType);
|
|
327
|
+
}
|
|
328
|
+
return m;
|
|
329
|
+
}
|
|
330
|
+
constructor(kwargs) {
|
|
331
|
+
if (!kwargs) {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
Object.assign(this, kwargs);
|
|
335
|
+
}
|
|
336
|
+
toApiJson() {
|
|
337
|
+
const toReturn = {};
|
|
338
|
+
if (typeof this.accountGroupId !== 'undefined') {
|
|
339
|
+
toReturn['accountGroupId'] = this.accountGroupId;
|
|
340
|
+
}
|
|
341
|
+
if (typeof this.cursor !== 'undefined') {
|
|
342
|
+
toReturn['cursor'] = this.cursor;
|
|
343
|
+
}
|
|
344
|
+
if (typeof this.pageSize !== 'undefined') {
|
|
345
|
+
toReturn['pageSize'] = this.pageSize;
|
|
346
|
+
}
|
|
347
|
+
if (typeof this.start !== 'undefined' && this.start !== null) {
|
|
348
|
+
toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;
|
|
349
|
+
}
|
|
350
|
+
if (typeof this.end !== 'undefined' && this.end !== null) {
|
|
351
|
+
toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;
|
|
352
|
+
}
|
|
353
|
+
if (typeof this.searchTerm !== 'undefined') {
|
|
354
|
+
toReturn['searchTerm'] = this.searchTerm;
|
|
355
|
+
}
|
|
356
|
+
if (typeof this.networks !== 'undefined') {
|
|
357
|
+
toReturn['networks'] = this.networks;
|
|
358
|
+
}
|
|
359
|
+
if (typeof this.visibilityType !== 'undefined') {
|
|
360
|
+
toReturn['visibilityType'] = this.visibilityType;
|
|
361
|
+
}
|
|
362
|
+
return toReturn;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
export class ListDraftsResponse {
|
|
366
|
+
static fromProto(proto) {
|
|
367
|
+
let m = new ListDraftsResponse();
|
|
368
|
+
m = Object.assign(m, proto);
|
|
369
|
+
if (proto.drafts) {
|
|
370
|
+
m.drafts = proto.drafts.map(Draft.fromProto);
|
|
371
|
+
}
|
|
372
|
+
return m;
|
|
373
|
+
}
|
|
374
|
+
constructor(kwargs) {
|
|
375
|
+
if (!kwargs) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
Object.assign(this, kwargs);
|
|
379
|
+
}
|
|
380
|
+
toApiJson() {
|
|
381
|
+
const toReturn = {};
|
|
382
|
+
if (typeof this.drafts !== 'undefined' && this.drafts !== null) {
|
|
383
|
+
toReturn['drafts'] = 'toApiJson' in this.drafts ? this.drafts.toApiJson() : this.drafts;
|
|
384
|
+
}
|
|
385
|
+
if (typeof this.nextCursor !== 'undefined') {
|
|
386
|
+
toReturn['nextCursor'] = this.nextCursor;
|
|
387
|
+
}
|
|
388
|
+
if (typeof this.hasMore !== 'undefined') {
|
|
389
|
+
toReturn['hasMore'] = this.hasMore;
|
|
390
|
+
}
|
|
391
|
+
return toReturn;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
export class ListMultilocationDraftsRequest {
|
|
395
|
+
static fromProto(proto) {
|
|
396
|
+
let m = new ListMultilocationDraftsRequest();
|
|
397
|
+
m = Object.assign(m, proto);
|
|
398
|
+
return m;
|
|
399
|
+
}
|
|
400
|
+
constructor(kwargs) {
|
|
401
|
+
if (!kwargs) {
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
Object.assign(this, kwargs);
|
|
405
|
+
}
|
|
406
|
+
toApiJson() {
|
|
407
|
+
const toReturn = {};
|
|
408
|
+
if (typeof this.brandId !== 'undefined') {
|
|
409
|
+
toReturn['brandId'] = this.brandId;
|
|
410
|
+
}
|
|
411
|
+
if (typeof this.multilocationPostId !== 'undefined') {
|
|
412
|
+
toReturn['multilocationPostId'] = this.multilocationPostId;
|
|
413
|
+
}
|
|
414
|
+
if (typeof this.accountGroupIds !== 'undefined') {
|
|
415
|
+
toReturn['accountGroupIds'] = this.accountGroupIds;
|
|
416
|
+
}
|
|
417
|
+
return toReturn;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
export class ListMultilocationDraftsResponse {
|
|
421
|
+
static fromProto(proto) {
|
|
422
|
+
let m = new ListMultilocationDraftsResponse();
|
|
423
|
+
m = Object.assign(m, proto);
|
|
424
|
+
if (proto.drafts) {
|
|
425
|
+
m.drafts = proto.drafts.map(Draft.fromProto);
|
|
426
|
+
}
|
|
427
|
+
return m;
|
|
428
|
+
}
|
|
429
|
+
constructor(kwargs) {
|
|
430
|
+
if (!kwargs) {
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
Object.assign(this, kwargs);
|
|
434
|
+
}
|
|
435
|
+
toApiJson() {
|
|
436
|
+
const toReturn = {};
|
|
437
|
+
if (typeof this.drafts !== 'undefined' && this.drafts !== null) {
|
|
438
|
+
toReturn['drafts'] = 'toApiJson' in this.drafts ? this.drafts.toApiJson() : this.drafts;
|
|
439
|
+
}
|
|
440
|
+
return toReturn;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
export class MultiDeleteMLDraftPostsRequest {
|
|
444
|
+
static fromProto(proto) {
|
|
445
|
+
let m = new MultiDeleteMLDraftPostsRequest();
|
|
446
|
+
m = Object.assign(m, proto);
|
|
447
|
+
if (proto.mlDraftPosts) {
|
|
448
|
+
m.mlDraftPosts = proto.mlDraftPosts.map(MlDraftPost.fromProto);
|
|
449
|
+
}
|
|
450
|
+
return m;
|
|
451
|
+
}
|
|
452
|
+
constructor(kwargs) {
|
|
453
|
+
if (!kwargs) {
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
Object.assign(this, kwargs);
|
|
457
|
+
}
|
|
458
|
+
toApiJson() {
|
|
459
|
+
const toReturn = {};
|
|
460
|
+
if (typeof this.mlDraftPosts !== 'undefined' && this.mlDraftPosts !== null) {
|
|
461
|
+
toReturn['mlDraftPosts'] = 'toApiJson' in this.mlDraftPosts ? this.mlDraftPosts.toApiJson() : this.mlDraftPosts;
|
|
462
|
+
}
|
|
463
|
+
if (typeof this.brandId !== 'undefined') {
|
|
464
|
+
toReturn['brandId'] = this.brandId;
|
|
465
|
+
}
|
|
466
|
+
return toReturn;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
export class UpdateDraftRequest {
|
|
470
|
+
static fromProto(proto) {
|
|
471
|
+
let m = new UpdateDraftRequest();
|
|
472
|
+
m = Object.assign(m, proto);
|
|
473
|
+
if (proto.postDateTime) {
|
|
474
|
+
m.postDateTime = new Date(proto.postDateTime);
|
|
475
|
+
}
|
|
476
|
+
if (proto.gmbPostCustomization) {
|
|
477
|
+
m.gmbPostCustomization = GMBPostCustomization.fromProto(proto.gmbPostCustomization);
|
|
478
|
+
}
|
|
479
|
+
if (proto.media) {
|
|
480
|
+
m.media = proto.media.map(DraftMedia.fromProto);
|
|
481
|
+
}
|
|
482
|
+
if (proto.draftType) {
|
|
483
|
+
m.draftType = enumStringToValue(e.DraftType, proto.draftType);
|
|
484
|
+
}
|
|
485
|
+
if (proto.metadata) {
|
|
486
|
+
m.metadata = proto.metadata.map(DraftMetaData.fromProto);
|
|
487
|
+
}
|
|
488
|
+
if (proto.youtubeCustomization) {
|
|
489
|
+
m.youtubeCustomization = DraftYoutubeCustomization.fromProto(proto.youtubeCustomization);
|
|
490
|
+
}
|
|
491
|
+
if (proto.ssidDraftTypes) {
|
|
492
|
+
m.ssidDraftTypes = proto.ssidDraftTypes.map(SSIDDraftType.fromProto);
|
|
493
|
+
}
|
|
494
|
+
if (proto.tiktokCustomization) {
|
|
495
|
+
m.tiktokCustomization = DraftTikTokCustomization.fromProto(proto.tiktokCustomization);
|
|
496
|
+
}
|
|
497
|
+
if (proto.blogPostCustomization) {
|
|
498
|
+
m.blogPostCustomization = DraftBlogPostCustomization.fromProto(proto.blogPostCustomization);
|
|
499
|
+
}
|
|
500
|
+
if (proto.campaignCustomization) {
|
|
501
|
+
m.campaignCustomization = CampaignCustomization.fromProto(proto.campaignCustomization);
|
|
502
|
+
}
|
|
503
|
+
return m;
|
|
504
|
+
}
|
|
505
|
+
constructor(kwargs) {
|
|
506
|
+
if (!kwargs) {
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
Object.assign(this, kwargs);
|
|
510
|
+
}
|
|
511
|
+
toApiJson() {
|
|
512
|
+
const toReturn = {};
|
|
513
|
+
if (typeof this.accountGroupId !== 'undefined') {
|
|
514
|
+
toReturn['accountGroupId'] = this.accountGroupId;
|
|
515
|
+
}
|
|
516
|
+
if (typeof this.draftId !== 'undefined') {
|
|
517
|
+
toReturn['draftId'] = this.draftId;
|
|
518
|
+
}
|
|
519
|
+
if (typeof this.draftText !== 'undefined') {
|
|
520
|
+
toReturn['draftText'] = this.draftText;
|
|
521
|
+
}
|
|
522
|
+
if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {
|
|
523
|
+
toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? this.postDateTime.toApiJson() : this.postDateTime;
|
|
524
|
+
}
|
|
525
|
+
if (typeof this.gmbPostCustomization !== 'undefined' && this.gmbPostCustomization !== null) {
|
|
526
|
+
toReturn['gmbPostCustomization'] = 'toApiJson' in this.gmbPostCustomization ? this.gmbPostCustomization.toApiJson() : this.gmbPostCustomization;
|
|
527
|
+
}
|
|
528
|
+
if (typeof this.previews !== 'undefined') {
|
|
529
|
+
toReturn['previews'] = this.previews;
|
|
530
|
+
}
|
|
531
|
+
if (typeof this.options !== 'undefined') {
|
|
532
|
+
toReturn['options'] = this.options;
|
|
533
|
+
}
|
|
534
|
+
if (typeof this.media !== 'undefined' && this.media !== null) {
|
|
535
|
+
toReturn['media'] = 'toApiJson' in this.media ? this.media.toApiJson() : this.media;
|
|
536
|
+
}
|
|
537
|
+
if (typeof this.ssids !== 'undefined') {
|
|
538
|
+
toReturn['ssids'] = this.ssids;
|
|
539
|
+
}
|
|
540
|
+
if (typeof this.draftType !== 'undefined') {
|
|
541
|
+
toReturn['draftType'] = this.draftType;
|
|
542
|
+
}
|
|
543
|
+
if (typeof this.metadata !== 'undefined' && this.metadata !== null) {
|
|
544
|
+
toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;
|
|
545
|
+
}
|
|
546
|
+
if (typeof this.youtubeCustomization !== 'undefined' && this.youtubeCustomization !== null) {
|
|
547
|
+
toReturn['youtubeCustomization'] = 'toApiJson' in this.youtubeCustomization ? this.youtubeCustomization.toApiJson() : this.youtubeCustomization;
|
|
548
|
+
}
|
|
549
|
+
if (typeof this.ssidDraftTypes !== 'undefined' && this.ssidDraftTypes !== null) {
|
|
550
|
+
toReturn['ssidDraftTypes'] = 'toApiJson' in this.ssidDraftTypes ? this.ssidDraftTypes.toApiJson() : this.ssidDraftTypes;
|
|
551
|
+
}
|
|
552
|
+
if (typeof this.isHidden !== 'undefined') {
|
|
553
|
+
toReturn['isHidden'] = this.isHidden;
|
|
554
|
+
}
|
|
555
|
+
if (typeof this.tiktokCustomization !== 'undefined' && this.tiktokCustomization !== null) {
|
|
556
|
+
toReturn['tiktokCustomization'] = 'toApiJson' in this.tiktokCustomization ? this.tiktokCustomization.toApiJson() : this.tiktokCustomization;
|
|
557
|
+
}
|
|
558
|
+
if (typeof this.blogPostCustomization !== 'undefined' && this.blogPostCustomization !== null) {
|
|
559
|
+
toReturn['blogPostCustomization'] = 'toApiJson' in this.blogPostCustomization ? this.blogPostCustomization.toApiJson() : this.blogPostCustomization;
|
|
560
|
+
}
|
|
561
|
+
if (typeof this.campaignCustomization !== 'undefined' && this.campaignCustomization !== null) {
|
|
562
|
+
toReturn['campaignCustomization'] = 'toApiJson' in this.campaignCustomization ? this.campaignCustomization.toApiJson() : this.campaignCustomization;
|
|
563
|
+
}
|
|
564
|
+
if (typeof this.brandId !== 'undefined') {
|
|
565
|
+
toReturn['brandId'] = this.brandId;
|
|
566
|
+
}
|
|
567
|
+
if (typeof this.multilocationPostId !== 'undefined') {
|
|
568
|
+
toReturn['multilocationPostId'] = this.multilocationPostId;
|
|
569
|
+
}
|
|
570
|
+
if (typeof this.socialNetworkIdentifier !== 'undefined') {
|
|
571
|
+
toReturn['socialNetworkIdentifier'] = this.socialNetworkIdentifier;
|
|
572
|
+
}
|
|
573
|
+
return toReturn;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
export class UpdateDraftResponse {
|
|
577
|
+
static fromProto(proto) {
|
|
578
|
+
let m = new UpdateDraftResponse();
|
|
579
|
+
m = Object.assign(m, proto);
|
|
580
|
+
if (proto.draft) {
|
|
581
|
+
m.draft = Draft.fromProto(proto.draft);
|
|
582
|
+
}
|
|
583
|
+
return m;
|
|
584
|
+
}
|
|
585
|
+
constructor(kwargs) {
|
|
586
|
+
if (!kwargs) {
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
Object.assign(this, kwargs);
|
|
590
|
+
}
|
|
591
|
+
toApiJson() {
|
|
592
|
+
const toReturn = {};
|
|
593
|
+
if (typeof this.draft !== 'undefined' && this.draft !== null) {
|
|
594
|
+
toReturn['draft'] = 'toApiJson' in this.draft ? this.draft.toApiJson() : this.draft;
|
|
595
|
+
}
|
|
596
|
+
return toReturn;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
export class UpdateMultiMLDraftsRequest {
|
|
600
|
+
static fromProto(proto) {
|
|
601
|
+
let m = new UpdateMultiMLDraftsRequest();
|
|
602
|
+
m = Object.assign(m, proto);
|
|
603
|
+
if (proto.drafts) {
|
|
604
|
+
m.drafts = proto.drafts.map(UpdateDraftRequest.fromProto);
|
|
605
|
+
}
|
|
606
|
+
return m;
|
|
607
|
+
}
|
|
608
|
+
constructor(kwargs) {
|
|
609
|
+
if (!kwargs) {
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
612
|
+
Object.assign(this, kwargs);
|
|
613
|
+
}
|
|
614
|
+
toApiJson() {
|
|
615
|
+
const toReturn = {};
|
|
616
|
+
if (typeof this.drafts !== 'undefined' && this.drafts !== null) {
|
|
617
|
+
toReturn['drafts'] = 'toApiJson' in this.drafts ? this.drafts.toApiJson() : this.drafts;
|
|
618
|
+
}
|
|
619
|
+
return toReturn;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZnRzLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvY2lhbF9wb3N0c19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9kcmFmdHMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ROLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFxQjNCLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDakMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQUM7UUFDeEUsSUFBSSxLQUFLLENBQUMsb0JBQW9CLEVBQUU7WUFBQyxDQUFDLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQUM7UUFDdEgsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQUMs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QyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxNQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FBQztRQUNuSyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBHTUJQb3N0Q3VzdG9taXphdGlvbiwgRHJhZnRNZWRpYSwgRHJhZnRNZXRhRGF0YSwgRHJhZnRZb3V0dWJlQ3VzdG9taXphdGlvbiwgU1NJRERyYWZ0VHlwZSwgRHJhZnRUaWtUb2tDdXN0b21pemF0aW9uLCBEcmFmdEJsb2dQb3N0Q3VzdG9taXphdGlvbiwgQ2FtcGFpZ25DdXN0b21pemF0aW9uLCBEcmFmdCwgTWxEcmFmdFBvc3QgfSBmcm9tICcuL2RyYWZ0cyc7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVEcmFmdFJlcXVlc3QgaW1wbGVtZW50cyBpLkNyZWF0ZURyYWZ0UmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcbiAgICBkcmFmdFRleHQ6IHN0cmluZztcbiAgICBwb3N0RGF0ZVRpbWU6IERhdGU7XG4gICAgZ21iUG9zdEN1c3RvbWl6YXRpb246IEdNQlBvc3RDdXN0b21pemF0aW9uO1xuICAgIHByZXZpZXdzOiBzdHJpbmc7XG4gICAgb3B0aW9uczogc3RyaW5nW107XG4gICAgbWVkaWE6IERyYWZ0TWVkaWFbXTtcbiAgICBzc2lkczogc3RyaW5nW107XG4gICAgZHJhZnRUeXBlOiBlLkRyYWZ0VHlwZTtcbiAgICBtZXRhZGF0YTogRHJhZnRNZXRhRGF0YVtdO1xuICAgIHlvdXR1YmVDdXN0b21pemF0aW9uOiBEcmFmdFlvdXR1YmVDdXN0b21pemF0aW9uO1xuICAgIHNzaWREcmFmdFR5cGVzOiBTU0lERHJhZnRUeXBlW107XG4gICAgaXNIaWRkZW46IGJvb2xlYW47XG4gICAgdGlrdG9rQ3VzdG9taXphdGlvbjogRHJhZnRUaWtUb2tDdXN0b21pemF0aW9uO1xuICAgIGJsb2dQb3N0Q3VzdG9taXphdGlvbjogRHJhZnRCbG9nUG9zdEN1c3RvbWl6YXRpb247XG4gICAgY2FtcGFpZ25DdXN0b21pemF0aW9uOiBDYW1wYWlnbkN1c3RvbWl6YXRpb247XG4gICAgYnJhbmRJZDogc3RyaW5nO1xuICAgIG11bHRpbG9jYXRpb25Qb3N0SWQ6IHN0cmluZztcbiAgICBzb2NpYWxOZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ3JlYXRlRHJhZnRSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ3JlYXRlRHJhZnRSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBvc3REYXRlVGltZSkge20ucG9zdERhdGVUaW1lID0gbmV3IERhdGUocHJvdG8ucG9zdERhdGVUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5nbWJQb3N0Q3VzdG9taXphdGlvbikge20uZ21iUG9zdEN1c3RvbWl6YXRpb24gPSBHTUJQb3N0Q3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8uZ21iUG9zdEN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLm1lZGlhKSB7bS5tZWRpYSA9IHByb3RvLm1lZGlhLm1hcChEcmFmdE1lZGlhLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uZHJhZnRUeXBlKSB7bS5kcmFmdFR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkRyYWZ0VHlwZT4oZS5EcmFmdFR5cGUsIHByb3RvLmRyYWZ0VHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8ubWV0YWRhdGEpIHttLm1ldGFkYXRhID0gcHJvdG8ubWV0YWRhdGEubWFwKERyYWZ0TWV0YURhdGEuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by55b3V0dWJlQ3VzdG9taXphdGlvbikge20ueW91dHViZUN1c3RvbWl6YXRpb24gPSBEcmFmdFlvdXR1YmVDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by55b3V0dWJlQ3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8uc3NpZERyYWZ0VHlwZXMpIHttLnNzaWREcmFmdFR5cGVzID0gcHJvdG8uc3NpZERyYWZ0VHlwZXMubWFwKFNTSUREcmFmdFR5cGUuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by50aWt0b2tDdXN0b21pemF0aW9uKSB7bS50aWt0b2tDdXN0b21pemF0aW9uID0gRHJhZnRUaWtUb2tDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by50aWt0b2tDdXN0b21pemF0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5ibG9nUG9zdEN1c3RvbWl6YXRpb24pIHttLmJsb2dQb3N0Q3VzdG9taXphdGlvbiA9IERyYWZ0QmxvZ1Bvc3RDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by5ibG9nUG9zdEN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmNhbXBhaWduQ3VzdG9taXphdGlvbikge20uY2FtcGFpZ25DdXN0b21pemF0aW9uID0gQ2FtcGFpZ25DdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by5jYW1wYWlnbkN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVEcmFmdFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZHJhZnRUZXh0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkcmFmdFRleHQnXSA9IHRoaXMuZHJhZnRUZXh0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3REYXRlVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb3N0RGF0ZVRpbWUgIT09IG51bGwpIHt0b1JldHVyblsncG9zdERhdGVUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvc3REYXRlVGltZSA/ICh0aGlzLnBvc3REYXRlVGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wb3N0RGF0ZVRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnZ21iUG9zdEN1c3RvbWl6YXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb24gPyAodGhpcy5nbWJQb3N0Q3VzdG9taXphdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5nbWJQb3N0Q3VzdG9taXphdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmV2aWV3cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJldmlld3MnXSA9IHRoaXMucHJldmlld3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3B0aW9ucyddID0gdGhpcy5vcHRpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZGlhICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZGlhICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZGlhJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1lZGlhID8gKHRoaXMubWVkaWEgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVkaWE7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3NpZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NzaWRzJ10gPSB0aGlzLnNzaWRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRyYWZ0VHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZHJhZnRUeXBlJ10gPSB0aGlzLmRyYWZ0VHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZXRhZGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZXRhZGF0YSA/ICh0aGlzLm1ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1ldGFkYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ3lvdXR1YmVDdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uID8gKHRoaXMueW91dHViZUN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMueW91dHViZUN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3NpZERyYWZ0VHlwZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3NpZERyYWZ0VHlwZXMgIT09IG51bGwpIHt0b1JldHVyblsnc3NpZERyYWZ0VHlwZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3NpZERyYWZ0VHlwZXMgPyAodGhpcy5zc2lkRHJhZnRUeXBlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zc2lkRHJhZnRUeXBlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc0hpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNIaWRkZW4nXSA9IHRoaXMuaXNIaWRkZW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aWt0b2tDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rpa3Rva0N1c3RvbWl6YXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiA/ICh0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYmxvZ1Bvc3RDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Jsb2dQb3N0Q3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb24gPyAodGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYmxvZ1Bvc3RDdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbXBhaWduQ3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jYW1wYWlnbkN1c3RvbWl6YXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnY2FtcGFpZ25DdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNhbXBhaWduQ3VzdG9taXphdGlvbiA/ICh0aGlzLmNhbXBhaWduQ3VzdG9taXphdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jYW1wYWlnbkN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnJhbmRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnJhbmRJZCddID0gdGhpcy5icmFuZElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm11bHRpbG9jYXRpb25Qb3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ211bHRpbG9jYXRpb25Qb3N0SWQnXSA9IHRoaXMubXVsdGlsb2NhdGlvblBvc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxOZXR3b3JrSWRlbnRpZmllciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsTmV0d29ya0lkZW50aWZpZXInXSA9IHRoaXMuc29jaWFsTmV0d29ya0lkZW50aWZpZXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlRHJhZnRSZXNwb25zZSBpbXBsZW1lbnRzIGkuQ3JlYXRlRHJhZnRSZXNwb25zZUludGVyZmFjZSB7XG4gICAgZHJhZnQ6IERyYWZ0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ3JlYXRlRHJhZnRSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZURyYWZ0UmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZHJhZnQpIHttLmRyYWZ0ID0gRHJhZnQuZnJvbVByb3RvKHByb3RvLmRyYWZ0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ3JlYXRlRHJhZnRSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRyYWZ0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRyYWZ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2RyYWZ0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmRyYWZ0ID8gKHRoaXMuZHJhZnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZHJhZnQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTXVsdGlEcmFmdHNSZXF1ZXN0IGltcGxlbWVudHMgaS5DcmVhdGVNdWx0aURyYWZ0c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGRyYWZ0czogQ3JlYXRlRHJhZnRSZXF1ZXN0W107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDcmVhdGVNdWx0aURyYWZ0c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBDcmVhdGVNdWx0aURyYWZ0c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZHJhZnRzKSB7bS5kcmFmdHMgPSBwcm90by5kcmFmdHMubWFwKENyZWF0ZURyYWZ0UmVxdWVzdC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVNdWx0aURyYWZ0c1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kcmFmdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZHJhZnRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2RyYWZ0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kcmFmdHMgPyAodGhpcy5kcmFmdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZHJhZnRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZU11bHRpRHJhZnRzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkNyZWF0ZU11bHRpRHJhZnRzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGRyYWZ0czogRHJhZnRbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENyZWF0ZU11bHRpRHJhZnRzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBDcmVhdGVNdWx0aURyYWZ0c1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmRyYWZ0cykge20uZHJhZnRzID0gcHJvdG8uZHJhZnRzLm1hcChEcmFmdC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVNdWx0aURyYWZ0c1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZHJhZnRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRyYWZ0cyAhPT0gbnVsbCkge3RvUmV0dXJuWydkcmFmdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZHJhZnRzID8gKHRoaXMuZHJhZnRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmRyYWZ0czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVEcmFmdFJlcXVlc3QgaW1wbGVtZW50cyBpLkRlbGV0ZURyYWZ0UmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcbiAgICBkcmFmdElkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBEZWxldGVEcmFmdFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBEZWxldGVEcmFmdFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkRlbGV0ZURyYWZ0UmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kcmFmdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkcmFmdElkJ10gPSB0aGlzLmRyYWZ0SWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0RHJhZnRSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXREcmFmdFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0RHJhZnRSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0RHJhZnRSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXREcmFmdFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZHJhZnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZHJhZnRJZCddID0gdGhpcy5kcmFmdElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldERyYWZ0UmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldERyYWZ0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGRyYWZ0OiBEcmFmdDtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldERyYWZ0UmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXREcmFmdFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmRyYWZ0KSB7bS5kcmFmdCA9IERyYWZ0LmZyb21Qcm90byhwcm90by5kcmFmdCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldERyYWZ0UmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kcmFmdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kcmFmdCAhPT0gbnVsbCkge3RvUmV0dXJuWydkcmFmdCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kcmFmdCA/ICh0aGlzLmRyYWZ0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmRyYWZ0O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3REcmFmdHNCeU5ldHdvcmtJZGVudGlmaWVyUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdERyYWZ0c0J5TmV0d29ya0lkZW50aWZpZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIHNvY2lhbE5ldHdvcmtJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgY3Vyc29yOiBzdHJpbmc7XG4gICAgcGFnZVNpemU6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3REcmFmdHNCeU5ldHdvcmtJZGVudGlmaWVyUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3REcmFmdHNCeU5ldHdvcmtJZGVudGlmaWVyUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wYWdlU2l6ZSkge20ucGFnZVNpemUgPSBwYXJzZUludChwcm90by5wYWdlU2l6ZSwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0RHJhZnRzQnlOZXR3b3JrSWRlbnRpZmllclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsTmV0d29ya0lkZW50aWZpZXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbE5ldHdvcmtJZGVudGlmaWVyJ10gPSB0aGlzLnNvY2lhbE5ldHdvcmtJZGVudGlmaWVyO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1cnNvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3Vyc29yJ10gPSB0aGlzLmN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdlU2l6ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFnZVNpemUnXSA9IHRoaXMucGFnZVNpemU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdERyYWZ0c0J5TmV0d29ya0lkZW50aWZpZXJSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdERyYWZ0c0J5TmV0d29ya0lkZW50aWZpZXJSZXNwb25zZUludGVyZmFjZSB7XG4gICAgZHJhZnRzOiBEcmFmdFtdO1xuICAgIG5leHRDdXJzb3I6IHN0cmluZztcbiAgICBoYXNNb3JlOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdERyYWZ0c0J5TmV0d29ya0lkZW50aWZpZXJSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3REcmFmdHNCeU5ldHdvcmtJZGVudGlmaWVyUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZHJhZnRzKSB7bS5kcmFmdHMgPSBwcm90by5kcmFmdHMubWFwKERyYWZ0LmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3REcmFmdHNCeU5ldHdvcmtJZGVudGlmaWVyUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kcmFmdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZHJhZnRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2RyYWZ0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kcmFmdHMgPyAodGhpcy5kcmFmdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZHJhZnRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5leHRDdXJzb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25leHRDdXJzb3InXSA9IHRoaXMubmV4dEN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNNb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNNb3JlJ10gPSB0aGlzLmhhc01vcmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdERyYWZ0c1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3REcmFmdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgZW5kOiBEYXRlO1xuICAgIHNlYXJjaFRlcm06IHN0cmluZztcbiAgICBuZXR3b3Jrczogc3RyaW5nW107XG4gICAgdmlzaWJpbGl0eVR5cGU6IGUuVmlzaWJpbGl0eVR5cGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0RHJhZnRzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3REcmFmdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBhZ2VTaXplKSB7bS5wYWdlU2l6ZSA9IHBhcnNlSW50KHByb3RvLnBhZ2VTaXplLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gbmV3IERhdGUocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZCkge20uZW5kID0gbmV3IERhdGUocHJvdG8uZW5kKTt9XG4gICAgICAgIGlmIChwcm90by52aXNpYmlsaXR5VHlwZSkge20udmlzaWJpbGl0eVR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlZpc2liaWxpdHlUeXBlPihlLlZpc2liaWxpdHlUeXBlLCBwcm90by52aXNpYmlsaXR5VHlwZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3REcmFmdHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1cnNvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3Vyc29yJ10gPSB0aGlzLmN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdlU2l6ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFnZVNpemUnXSA9IHRoaXMucGFnZVNpemU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmQgPyAodGhpcy5lbmQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlYXJjaFRlcm0gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlYXJjaFRlcm0nXSA9IHRoaXMuc2VhcmNoVGVybTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uZXR3b3JrcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmV0d29ya3MnXSA9IHRoaXMubmV0d29ya3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlzaWJpbGl0eVR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Zpc2liaWxpdHlUeXBlJ10gPSB0aGlzLnZpc2liaWxpdHlUeXBlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3REcmFmdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdERyYWZ0c1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBkcmFmdHM6IERyYWZ0W107XG4gICAgbmV4dEN1cnNvcjogc3RyaW5nO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0RHJhZnRzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0RHJhZnRzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZHJhZnRzKSB7bS5kcmFmdHMgPSBwcm90by5kcmFmdHMubWFwKERyYWZ0LmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3REcmFmdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRyYWZ0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kcmFmdHMgIT09IG51bGwpIHt0b1JldHVyblsnZHJhZnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmRyYWZ0cyA/ICh0aGlzLmRyYWZ0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kcmFmdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmV4dEN1cnNvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmV4dEN1cnNvciddID0gdGhpcy5uZXh0Q3Vyc29yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhhc01vcmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hhc01vcmUnXSA9IHRoaXMuaGFzTW9yZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0TXVsdGlsb2NhdGlvbkRyYWZ0c1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RNdWx0aWxvY2F0aW9uRHJhZnRzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnJhbmRJZDogc3RyaW5nO1xuICAgIG11bHRpbG9jYXRpb25Qb3N0SWQ6IHN0cmluZztcbiAgICBhY2NvdW50R3JvdXBJZHM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdE11bHRpbG9jYXRpb25EcmFmdHNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdE11bHRpbG9jYXRpb25EcmFmdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0TXVsdGlsb2NhdGlvbkRyYWZ0c1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5icmFuZElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydicmFuZElkJ10gPSB0aGlzLmJyYW5kSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubXVsdGlsb2NhdGlvblBvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbXVsdGlsb2NhdGlvblBvc3RJZCddID0gdGhpcy5tdWx0aWxvY2F0aW9uUG9zdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWRzJ10gPSB0aGlzLmFjY291bnRHcm91cElkczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0TXVsdGlsb2NhdGlvbkRyYWZ0c1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0TXVsdGlsb2NhdGlvbkRyYWZ0c1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBkcmFmdHM6IERyYWZ0W107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0TXVsdGlsb2NhdGlvbkRyYWZ0c1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdE11bHRpbG9jYXRpb25EcmFmdHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5kcmFmdHMpIHttLmRyYWZ0cyA9IHByb3RvLmRyYWZ0cy5tYXAoRHJhZnQuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE11bHRpbG9jYXRpb25EcmFmdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRyYWZ0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kcmFmdHMgIT09IG51bGwpIHt0b1JldHVyblsnZHJhZnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmRyYWZ0cyA/ICh0aGlzLmRyYWZ0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kcmFmdHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTXVsdGlEZWxldGVNTERyYWZ0UG9zdHNSZXF1ZXN0IGltcGxlbWVudHMgaS5NdWx0aURlbGV0ZU1MRHJhZnRQb3N0c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1sRHJhZnRQb3N0czogTWxEcmFmdFBvc3RbXTtcbiAgICBicmFuZElkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNdWx0aURlbGV0ZU1MRHJhZnRQb3N0c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBNdWx0aURlbGV0ZU1MRHJhZnRQb3N0c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWxEcmFmdFBvc3RzKSB7bS5tbERyYWZ0UG9zdHMgPSBwcm90by5tbERyYWZ0UG9zdHMubWFwKE1sRHJhZnRQb3N0LmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk11bHRpRGVsZXRlTUxEcmFmdFBvc3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1sRHJhZnRQb3N0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tbERyYWZ0UG9zdHMgIT09IG51bGwpIHt0b1JldHVyblsnbWxEcmFmdFBvc3RzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1sRHJhZnRQb3N0cyA/ICh0aGlzLm1sRHJhZnRQb3N0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tbERyYWZ0UG9zdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnJhbmRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnJhbmRJZCddID0gdGhpcy5icmFuZElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZURyYWZ0UmVxdWVzdCBpbXBsZW1lbnRzIGkuVXBkYXRlRHJhZnRSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIGRyYWZ0SWQ6IHN0cmluZztcbiAgICBkcmFmdFRleHQ6IHN0cmluZztcbiAgICBwb3N0RGF0ZVRpbWU6IERhdGU7XG4gICAgZ21iUG9zdEN1c3RvbWl6YXRpb246IEdNQlBvc3RDdXN0b21pemF0aW9uO1xuICAgIHByZXZpZXdzOiBzdHJpbmc7XG4gICAgb3B0aW9uczogc3RyaW5nW107XG4gICAgbWVkaWE6IERyYWZ0TWVkaWFbXTtcbiAgICBzc2lkczogc3RyaW5nW107XG4gICAgZHJhZnRUeXBlOiBlLkRyYWZ0VHlwZTtcbiAgICBtZXRhZGF0YTogRHJhZnRNZXRhRGF0YVtdO1xuICAgIHlvdXR1YmVDdXN0b21pemF0aW9uOiBEcmFmdFlvdXR1YmVDdXN0b21pemF0aW9uO1xuICAgIHNzaWREcmFmdFR5cGVzOiBTU0lERHJhZnRUeXBlW107XG4gICAgaXNIaWRkZW46IGJvb2xlYW47XG4gICAgdGlrdG9rQ3VzdG9taXphdGlvbjogRHJhZnRUaWtUb2tDdXN0b21pemF0aW9uO1xuICAgIGJsb2dQb3N0Q3VzdG9taXphdGlvbjogRHJhZnRCbG9nUG9zdEN1c3RvbWl6YXRpb247XG4gICAgY2FtcGFpZ25DdXN0b21pemF0aW9uOiBDYW1wYWlnbkN1c3RvbWl6YXRpb247XG4gICAgYnJhbmRJZDogc3RyaW5nO1xuICAgIG11bHRpbG9jYXRpb25Qb3N0SWQ6IHN0cmluZztcbiAgICBzb2NpYWxOZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVXBkYXRlRHJhZnRSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVXBkYXRlRHJhZnRSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBvc3REYXRlVGltZSkge20ucG9zdERhdGVUaW1lID0gbmV3IERhdGUocHJvdG8ucG9zdERhdGVUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5nbWJQb3N0Q3VzdG9taXphdGlvbikge20uZ21iUG9zdEN1c3RvbWl6YXRpb24gPSBHTUJQb3N0Q3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8uZ21iUG9zdEN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLm1lZGlhKSB7bS5tZWRpYSA9IHByb3RvLm1lZGlhLm1hcChEcmFmdE1lZGlhLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uZHJhZnRUeXBlKSB7bS5kcmFmdFR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkRyYWZ0VHlwZT4oZS5EcmFmdFR5cGUsIHByb3RvLmRyYWZ0VHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8ubWV0YWRhdGEpIHttLm1ldGFkYXRhID0gcHJvdG8ubWV0YWRhdGEubWFwKERyYWZ0TWV0YURhdGEuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by55b3V0dWJlQ3VzdG9taXphdGlvbikge20ueW91dHViZUN1c3RvbWl6YXRpb24gPSBEcmFmdFlvdXR1YmVDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by55b3V0dWJlQ3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8uc3NpZERyYWZ0VHlwZXMpIHttLnNzaWREcmFmdFR5cGVzID0gcHJvdG8uc3NpZERyYWZ0VHlwZXMubWFwKFNTSUREcmFmdFR5cGUuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by50aWt0b2tDdXN0b21pemF0aW9uKSB7bS50aWt0b2tDdXN0b21pemF0aW9uID0gRHJhZnRUaWtUb2tDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by50aWt0b2tDdXN0b21pemF0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5ibG9nUG9zdEN1c3RvbWl6YXRpb24pIHttLmJsb2dQb3N0Q3VzdG9taXphdGlvbiA9IERyYWZ0QmxvZ1Bvc3RDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by5ibG9nUG9zdEN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmNhbXBhaWduQ3VzdG9taXphdGlvbikge20uY2FtcGFpZ25DdXN0b21pemF0aW9uID0gQ2FtcGFpZ25DdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by5jYW1wYWlnbkN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5VcGRhdGVEcmFmdFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZHJhZnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZHJhZnRJZCddID0gdGhpcy5kcmFmdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRyYWZ0VGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZHJhZnRUZXh0J10gPSB0aGlzLmRyYWZ0VGV4dDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0RGF0ZVRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9zdERhdGVUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Bvc3REYXRlVGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wb3N0RGF0ZVRpbWUgPyAodGhpcy5wb3N0RGF0ZVRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9zdERhdGVUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmdtYlBvc3RDdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmdtYlBvc3RDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2dtYlBvc3RDdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmdtYlBvc3RDdXN0b21pemF0aW9uID8gKHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJldmlld3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ByZXZpZXdzJ10gPSB0aGlzLnByZXZpZXdzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29wdGlvbnMnXSA9IHRoaXMub3B0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWRpYSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWRpYSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWRpYSA/ICh0aGlzLm1lZGlhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZGlhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNzaWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzc2lkcyddID0gdGhpcy5zc2lkczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kcmFmdFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RyYWZ0VHlwZSddID0gdGhpcy5kcmFmdFR5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsnbWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWV0YWRhdGEgPyAodGhpcy5tZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZXRhZGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWyd5b3V0dWJlQ3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbiA/ICh0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNzaWREcmFmdFR5cGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNzaWREcmFmdFR5cGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NzaWREcmFmdFR5cGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNzaWREcmFmdFR5cGVzID8gKHRoaXMuc3NpZERyYWZ0VHlwZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3NpZERyYWZ0VHlwZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNIaWRkZW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzSGlkZGVuJ10gPSB0aGlzLmlzSGlkZGVuO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aWt0b2tDdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gPyAodGhpcy50aWt0b2tDdXN0b21pemF0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYmxvZ1Bvc3RDdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmJsb2dQb3N0Q3VzdG9taXphdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydibG9nUG9zdEN1c3RvbWl6YXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYmxvZ1Bvc3RDdXN0b21pemF0aW9uID8gKHRoaXMuYmxvZ1Bvc3RDdXN0b21pemF0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmJsb2dQb3N0Q3VzdG9taXphdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYW1wYWlnbkN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY2FtcGFpZ25DdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NhbXBhaWduQ3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jYW1wYWlnbkN1c3RvbWl6YXRpb24gPyAodGhpcy5jYW1wYWlnbkN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY2FtcGFpZ25DdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyYW5kSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JyYW5kSWQnXSA9IHRoaXMuYnJhbmRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uUG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtdWx0aWxvY2F0aW9uUG9zdElkJ10gPSB0aGlzLm11bHRpbG9jYXRpb25Qb3N0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsTmV0d29ya0lkZW50aWZpZXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbE5ldHdvcmtJZGVudGlmaWVyJ10gPSB0aGlzLnNvY2lhbE5ldHdvcmtJZGVudGlmaWVyO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZURyYWZ0UmVzcG9uc2UgaW1wbGVtZW50cyBpLlVwZGF0ZURyYWZ0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGRyYWZ0OiBEcmFmdDtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVwZGF0ZURyYWZ0UmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBVcGRhdGVEcmFmdFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmRyYWZ0KSB7bS5kcmFmdCA9IERyYWZ0LmZyb21Qcm90byhwcm90by5kcmFmdCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlVwZGF0ZURyYWZ0UmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kcmFmdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kcmFmdCAhPT0gbnVsbCkge3RvUmV0dXJuWydkcmFmdCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kcmFmdCA/ICh0aGlzLmRyYWZ0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmRyYWZ0O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZU11bHRpTUxEcmFmdHNSZXF1ZXN0IGltcGxlbWVudHMgaS5VcGRhdGVNdWx0aU1MRHJhZnRzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZHJhZnRzOiBVcGRhdGVEcmFmdFJlcXVlc3RbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVwZGF0ZU11bHRpTUxEcmFmdHNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVXBkYXRlTXVsdGlNTERyYWZ0c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZHJhZnRzKSB7bS5kcmFmdHMgPSBwcm90by5kcmFmdHMubWFwKFVwZGF0ZURyYWZ0UmVxdWVzdC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5VcGRhdGVNdWx0aU1MRHJhZnRzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRyYWZ0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kcmFmdHMgIT09IG51bGwpIHt0b1JldHVyblsnZHJhZnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmRyYWZ0cyA/ICh0aGlzLmRyYWZ0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kcmFmdHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
|