@secrecy/lib 1.0.0-dev.19 → 1.0.0-dev.22

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/BaseClient.js CHANGED
@@ -6,6 +6,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
6
6
 
7
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
8
 
9
+ /* eslint-disable @typescript-eslint/naming-convention */
9
10
  import { serialize } from "bson";
10
11
  import { getLink } from "@secrecy/lib-utils";
11
12
  import { usersCache } from "./cache.js";
@@ -49,16 +50,26 @@ var getUserSelector = function getUserSelector(userId, withPublicKey) {
49
50
  user: [{
50
51
  userId: userId
51
52
  }, {
52
- id: true,
53
- firstname: true,
54
- lastname: true,
55
- lang: true,
56
- publicKey: withPublicKey ? true : undefined,
57
- email: true,
58
- phone: true,
59
- role: true,
60
- deletedAt: true,
61
- lastLogin: true
53
+ "...on ErrorNotFound": {
54
+ __typename: true,
55
+ message: true,
56
+ field: true
57
+ },
58
+ "...on UserResponse": {
59
+ __typename: true,
60
+ user: {
61
+ id: true,
62
+ firstname: true,
63
+ lastname: true,
64
+ lang: true,
65
+ publicKey: withPublicKey ? true : undefined,
66
+ email: true,
67
+ phone: true,
68
+ role: true,
69
+ deletedAt: true,
70
+ lastLogin: true
71
+ }
72
+ }
62
73
  }]
63
74
  }),
64
75
  user = _Selector.user;
@@ -72,7 +83,7 @@ function getUser(_x) {
72
83
 
73
84
  function _getUser() {
74
85
  _getUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27(params) {
75
- var selector, _yield$params$client, user;
86
+ var selector, _yield$params$client, userResponse;
76
87
 
77
88
  return _regeneratorRuntime.wrap(function _callee27$(_context27) {
78
89
  while (1) {
@@ -86,9 +97,9 @@ function _getUser() {
86
97
 
87
98
  case 3:
88
99
  _yield$params$client = _context27.sent;
89
- user = _yield$params$client.user;
100
+ userResponse = _yield$params$client.user;
90
101
 
91
- if (user) {
102
+ if (userResponse) {
92
103
  _context27.next = 7;
93
104
  break;
94
105
  }
@@ -96,12 +107,31 @@ function _getUser() {
96
107
  return _context27.abrupt("return", null);
97
108
 
98
109
  case 7:
99
- return _context27.abrupt("return", _objectSpread(_objectSpread({}, user), {}, {
100
- lastLogin: new Date(user.lastLogin),
101
- deletedAt: user.deletedAt ? new Date(user.deletedAt) : null
102
- }));
110
+ if (!(userResponse.__typename === "ErrorNotFound")) {
111
+ _context27.next = 9;
112
+ break;
113
+ }
114
+
115
+ return _context27.abrupt("return", userResponse);
116
+
117
+ case 9:
118
+ if (userResponse.user) {
119
+ _context27.next = 11;
120
+ break;
121
+ }
103
122
 
104
- case 8:
123
+ return _context27.abrupt("return", null);
124
+
125
+ case 11:
126
+ return _context27.abrupt("return", {
127
+ __typename: "SuccessResponse",
128
+ data: _objectSpread(_objectSpread({}, userResponse.user), {}, {
129
+ lastLogin: new Date(userResponse.user.lastLogin),
130
+ deletedAt: userResponse.user.deletedAt ? new Date(userResponse.user.deletedAt) : null
131
+ })
132
+ });
133
+
134
+ case 12:
105
135
  case "end":
106
136
  return _context27.stop();
107
137
  }
@@ -121,9 +151,8 @@ export var BaseClient = /*#__PURE__*/function () {
121
151
 
122
152
  _proto.sessions = /*#__PURE__*/function () {
123
153
  var _sessions = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
124
- var _data$user$sessions$m, _data$user;
154
+ var data, userResponse, _userResponse$user$se, _sessions2;
125
155
 
126
- var data, sessions;
127
156
  return _regeneratorRuntime.wrap(function _callee$(_context) {
128
157
  while (1) {
129
158
  switch (_context.prev = _context.next) {
@@ -131,23 +160,33 @@ export var BaseClient = /*#__PURE__*/function () {
131
160
  _context.next = 2;
132
161
  return this.client("query")({
133
162
  user: [{}, {
134
- sessions: {
135
- id: true,
136
- lastActivity: true,
137
- userAgent: true,
138
- ip: true,
139
- city: true,
140
- country: true,
141
- appSessions: {
142
- id: true,
143
- lastActivity: true,
144
- userAgent: true,
145
- ip: true,
146
- city: true,
147
- country: true,
148
- userApp: {
149
- app: {
150
- name: true
163
+ "...on ErrorNotFound": {
164
+ __typename: true,
165
+ field: true,
166
+ message: true
167
+ },
168
+ "...on UserResponse": {
169
+ __typename: true,
170
+ user: {
171
+ sessions: {
172
+ id: true,
173
+ lastActivity: true,
174
+ userAgent: true,
175
+ ip: true,
176
+ city: true,
177
+ country: true,
178
+ appSessions: {
179
+ id: true,
180
+ lastActivity: true,
181
+ userAgent: true,
182
+ ip: true,
183
+ city: true,
184
+ country: true,
185
+ userApp: {
186
+ app: {
187
+ name: true
188
+ }
189
+ }
151
190
  }
152
191
  }
153
192
  }
@@ -157,7 +196,31 @@ export var BaseClient = /*#__PURE__*/function () {
157
196
 
158
197
  case 2:
159
198
  data = _context.sent;
160
- sessions = (_data$user$sessions$m = (_data$user = data.user) == null ? void 0 : _data$user.sessions.map(function (s) {
199
+
200
+ if (data.user) {
201
+ _context.next = 5;
202
+ break;
203
+ }
204
+
205
+ return _context.abrupt("return", null);
206
+
207
+ case 5:
208
+ userResponse = data.user;
209
+
210
+ if (!(userResponse.__typename === "UserResponse")) {
211
+ _context.next = 11;
212
+ break;
213
+ }
214
+
215
+ if (userResponse.user) {
216
+ _context.next = 9;
217
+ break;
218
+ }
219
+
220
+ return _context.abrupt("return", null);
221
+
222
+ case 9:
223
+ _sessions2 = (_userResponse$user$se = userResponse.user.sessions.map(function (s) {
161
224
  return {
162
225
  id: s.id,
163
226
  ip: s.ip,
@@ -179,10 +242,16 @@ export var BaseClient = /*#__PURE__*/function () {
179
242
  };
180
243
  })
181
244
  };
182
- })) != null ? _data$user$sessions$m : [];
183
- return _context.abrupt("return", sessions);
245
+ })) != null ? _userResponse$user$se : [];
246
+ return _context.abrupt("return", {
247
+ __typename: "SuccessResponse",
248
+ data: _sessions2
249
+ });
184
250
 
185
- case 5:
251
+ case 11:
252
+ return _context.abrupt("return", userResponse);
253
+
254
+ case 12:
186
255
  case "end":
187
256
  return _context.stop();
188
257
  }
@@ -221,7 +290,20 @@ export var BaseClient = /*#__PURE__*/function () {
221
290
  return this.client("mutation")({
222
291
  logout: [{
223
292
  sessionId: sessionId
224
- }, true]
293
+ }, {
294
+ "...on ErrorAccessDenied": {
295
+ __typename: true,
296
+ message: true
297
+ },
298
+ "...on ErrorBasic": {
299
+ __typename: true,
300
+ message: true
301
+ },
302
+ "...on LogoutResponse": {
303
+ __typename: true,
304
+ logout: true
305
+ }
306
+ }]
225
307
  });
226
308
 
227
309
  case 4:
@@ -290,12 +372,28 @@ export var BaseClient = /*#__PURE__*/function () {
290
372
  user = _context4.sent;
291
373
 
292
374
  if (user) {
293
- usersCache.set(user.id, user);
375
+ _context4.next = 5;
376
+ break;
294
377
  }
295
378
 
296
- return _context4.abrupt("return", user);
379
+ return _context4.abrupt("return", null);
297
380
 
298
381
  case 5:
382
+ if (!(user.__typename === "ErrorNotFound")) {
383
+ _context4.next = 7;
384
+ break;
385
+ }
386
+
387
+ return _context4.abrupt("return", user);
388
+
389
+ case 7:
390
+ if (user) {
391
+ usersCache.set(user.data.id, user.data);
392
+ }
393
+
394
+ return _context4.abrupt("return", user);
395
+
396
+ case 9:
299
397
  case "end":
300
398
  return _context4.stop();
301
399
  }
@@ -328,12 +426,28 @@ export var BaseClient = /*#__PURE__*/function () {
328
426
  user = _context5.sent;
329
427
 
330
428
  if (user) {
331
- usersCache.set(user.id, user);
429
+ _context5.next = 5;
430
+ break;
332
431
  }
333
432
 
334
- return _context5.abrupt("return", user);
433
+ return _context5.abrupt("return", null);
335
434
 
336
435
  case 5:
436
+ if (!(user.__typename === "ErrorNotFound")) {
437
+ _context5.next = 7;
438
+ break;
439
+ }
440
+
441
+ return _context5.abrupt("return", user);
442
+
443
+ case 7:
444
+ if (user) {
445
+ usersCache.set(user.data.id, user.data);
446
+ }
447
+
448
+ return _context5.abrupt("return", user);
449
+
450
+ case 9:
337
451
  case "end":
338
452
  return _context5.stop();
339
453
  }
@@ -364,15 +478,28 @@ export var BaseClient = /*#__PURE__*/function () {
364
478
  lastname: lastname,
365
479
  lang: lang
366
480
  }, {
367
- id: true,
368
- firstname: true,
369
- lastname: true,
370
- lang: true,
371
- email: true,
372
- phone: true,
373
- role: true,
374
- deletedAt: true,
375
- lastLogin: true
481
+ "...on ErrorAccessDenied": {
482
+ __typename: true,
483
+ message: true
484
+ },
485
+ "...on ErrorNotFound": {
486
+ __typename: true,
487
+ message: true
488
+ },
489
+ "...on UpdateProfileResponse": {
490
+ __typename: true,
491
+ updateProfile: {
492
+ id: true,
493
+ firstname: true,
494
+ lastname: true,
495
+ lang: true,
496
+ email: true,
497
+ phone: true,
498
+ role: true,
499
+ deletedAt: true,
500
+ lastLogin: true
501
+ }
502
+ }
376
503
  }]
377
504
  });
378
505
 
@@ -385,15 +512,49 @@ export var BaseClient = /*#__PURE__*/function () {
385
512
  break;
386
513
  }
387
514
 
388
- throw new Error("Should not happen");
515
+ return _context6.abrupt("return", null);
389
516
 
390
517
  case 7:
391
- return _context6.abrupt("return", _objectSpread(_objectSpread({}, updateProfile), {}, {
392
- lastLogin: new Date(updateProfile.lastLogin),
393
- deletedAt: updateProfile.deletedAt ? new Date(updateProfile.deletedAt) : null
394
- }));
518
+ if (!(updateProfile.__typename === "ErrorAccessDenied")) {
519
+ _context6.next = 9;
520
+ break;
521
+ }
395
522
 
396
- case 8:
523
+ return _context6.abrupt("return", updateProfile);
524
+
525
+ case 9:
526
+ if (!(updateProfile.__typename === "ErrorNotFound")) {
527
+ _context6.next = 11;
528
+ break;
529
+ }
530
+
531
+ return _context6.abrupt("return", updateProfile);
532
+
533
+ case 11:
534
+ if (updateProfile.updateProfile) {
535
+ _context6.next = 13;
536
+ break;
537
+ }
538
+
539
+ return _context6.abrupt("return", null);
540
+
541
+ case 13:
542
+ return _context6.abrupt("return", {
543
+ __typename: "SuccessResponse",
544
+ data: {
545
+ email: updateProfile.updateProfile.email,
546
+ firstname: updateProfile.updateProfile.firstname,
547
+ id: updateProfile.updateProfile.id,
548
+ lang: updateProfile.updateProfile.lang,
549
+ lastLogin: new Date(updateProfile.updateProfile.lastLogin),
550
+ lastname: updateProfile.updateProfile.lastname,
551
+ phone: updateProfile.updateProfile.phone,
552
+ role: updateProfile.updateProfile.role,
553
+ deletedAt: updateProfile.updateProfile.deletedAt ? new Date(updateProfile.updateProfile.deletedAt) : null
554
+ }
555
+ });
556
+
557
+ case 14:
397
558
  case "end":
398
559
  return _context6.stop();
399
560
  }
@@ -419,33 +580,38 @@ export var BaseClient = /*#__PURE__*/function () {
419
580
  _context7.next = 2;
420
581
  return BaseClient._getBaseClient(env, sessionId)("query")({
421
582
  plans: {
422
- kind: true,
423
- codes: true,
424
- limits: {
425
- downloadBandwidth: true,
426
- downloadCount: true,
427
- hardFileCount: true,
428
- hardFileSize: true,
429
- perFileSize: true,
430
- uploadBandwidth: true,
431
- uploadCount: true,
432
- receivedMails: {
433
- count: true,
434
- fileCount: true,
435
- fileSize: true,
436
- hardCount: true,
437
- hardFileCount: true,
438
- hardFileSize: true,
439
- perFileSize: true
440
- },
441
- sentMails: {
442
- count: true,
443
- fileCount: true,
444
- fileSize: true,
445
- hardCount: true,
446
- hardFileCount: true,
447
- hardFileSize: true,
448
- perFileSize: true
583
+ "...on PlanResponse": {
584
+ __typename: true,
585
+ plan: {
586
+ kind: true,
587
+ codes: true,
588
+ limits: {
589
+ downloadBandwidth: true,
590
+ downloadCount: true,
591
+ hardFileCount: true,
592
+ hardFileSize: true,
593
+ perFileSize: true,
594
+ uploadBandwidth: true,
595
+ uploadCount: true,
596
+ receivedMails: {
597
+ count: true,
598
+ fileCount: true,
599
+ fileSize: true,
600
+ hardCount: true,
601
+ hardFileCount: true,
602
+ hardFileSize: true,
603
+ perFileSize: true
604
+ },
605
+ sentMails: {
606
+ count: true,
607
+ fileCount: true,
608
+ fileSize: true,
609
+ hardCount: true,
610
+ hardFileCount: true,
611
+ hardFileSize: true,
612
+ perFileSize: true
613
+ }
614
+ }
449
615
  }
450
616
  }
451
617
  }
@@ -454,9 +620,21 @@ export var BaseClient = /*#__PURE__*/function () {
454
620
  case 2:
455
621
  _yield$BaseClient$_ge = _context7.sent;
456
622
  plans = _yield$BaseClient$_ge.plans;
457
- return _context7.abrupt("return", plans);
458
623
 
459
- case 5:
624
+ if (plans) {
625
+ _context7.next = 6;
626
+ break;
627
+ }
628
+
629
+ return _context7.abrupt("return", null);
630
+
631
+ case 6:
632
+ return _context7.abrupt("return", {
633
+ __typename: "SuccessResponse",
634
+ data: plans.plan
635
+ });
636
+
637
+ case 7:
460
638
  case "end":
461
639
  return _context7.stop();
462
640
  }
@@ -473,6 +651,8 @@ export var BaseClient = /*#__PURE__*/function () {
473
651
 
474
652
  _proto.pay = /*#__PURE__*/function () {
475
653
  var _pay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(planCode, input, autoRenew) {
654
+ var _pay$pay;
655
+
476
656
  var _yield$this$client2, pay;
477
657
 
478
658
  return _regeneratorRuntime.wrap(function _callee8$(_context8) {
@@ -485,15 +665,44 @@ export var BaseClient = /*#__PURE__*/function () {
485
665
  input: input,
486
666
  planCode: planCode,
487
667
  autoRenew: autoRenew
488
- }, true]
668
+ }, {
669
+ "...on ErrorAccessDenied": {
670
+ __typename: true,
671
+ message: true
672
+ },
673
+ "...on PayResponse": {
674
+ __typename: true,
675
+ pay: true
676
+ }
677
+ }]
489
678
  });
490
679
 
491
680
  case 2:
492
681
  _yield$this$client2 = _context8.sent;
493
682
  pay = _yield$this$client2.pay;
494
- return _context8.abrupt("return", pay != null ? pay : false);
495
683
 
496
- case 5:
684
+ if (pay) {
685
+ _context8.next = 6;
686
+ break;
687
+ }
688
+
689
+ return _context8.abrupt("return", null);
690
+
691
+ case 6:
692
+ if (!(pay.__typename === "ErrorAccessDenied")) {
693
+ _context8.next = 8;
694
+ break;
695
+ }
696
+
697
+ return _context8.abrupt("return", pay);
698
+
699
+ case 8:
700
+ return _context8.abrupt("return", {
701
+ __typename: "SuccessResponse",
702
+ data: (_pay$pay = pay.pay) != null ? _pay$pay : false
703
+ });
704
+
705
+ case 9:
497
706
  case "end":
498
707
  return _context8.stop();
499
708
  }
@@ -510,6 +719,8 @@ export var BaseClient = /*#__PURE__*/function () {
510
719
 
511
720
  _proto.cancelPayment = /*#__PURE__*/function () {
512
721
  var _cancelPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
722
+ var _cancelPayment$cancel;
723
+
513
724
  var _yield$this$client3, cancelPayment;
514
725
 
515
726
  return _regeneratorRuntime.wrap(function _callee9$(_context9) {
@@ -518,15 +729,44 @@ export var BaseClient = /*#__PURE__*/function () {
518
729
  case 0:
519
730
  _context9.next = 2;
520
731
  return this.client("mutation")({
521
- cancelPayment: true
732
+ cancelPayment: {
733
+ "...on ErrorAccessDenied": {
734
+ __typename: true,
735
+ message: true
736
+ },
737
+ "...on CancelPaymentResponse": {
738
+ __typename: true,
739
+ cancelPayment: true
740
+ }
741
+ }
522
742
  });
523
743
 
524
744
  case 2:
525
745
  _yield$this$client3 = _context9.sent;
526
746
  cancelPayment = _yield$this$client3.cancelPayment;
527
- return _context9.abrupt("return", cancelPayment != null ? cancelPayment : false);
528
747
 
529
- case 5:
748
+ if (cancelPayment) {
749
+ _context9.next = 6;
750
+ break;
751
+ }
752
+
753
+ return _context9.abrupt("return", null);
754
+
755
+ case 6:
756
+ if (!(cancelPayment.__typename === "ErrorAccessDenied")) {
757
+ _context9.next = 8;
758
+ break;
759
+ }
760
+
761
+ return _context9.abrupt("return", cancelPayment);
762
+
763
+ case 8:
764
+ return _context9.abrupt("return", {
765
+ __typename: "SuccessResponse",
766
+ data: (_cancelPayment$cancel = cancelPayment.cancelPayment) != null ? _cancelPayment$cancel : false
767
+ });
768
+
769
+ case 9:
530
770
  case "end":
531
771
  return _context9.stop();
532
772
  }
@@ -543,7 +783,7 @@ export var BaseClient = /*#__PURE__*/function () {
543
783
 
544
784
  _proto.paymentInfos = /*#__PURE__*/function () {
545
785
  var _paymentInfos = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
546
- var _yield$this$client4, paymentInfos;
786
+ var _yield$this$client4, paymentInfos, result;
547
787
 
548
788
  return _regeneratorRuntime.wrap(function _callee10$(_context10) {
549
789
  while (1) {
@@ -552,33 +792,42 @@ export var BaseClient = /*#__PURE__*/function () {
552
792
  _context10.next = 2;
553
793
  return this.client("query")({
554
794
  paymentInfos: {
555
- hostedUrl: true,
556
- currentSubscription: {
557
- autorenew: true,
558
- activatedAt: true,
559
- currentPeriodEndsAt: true,
560
- currentPeriodStartedAt: true,
561
- canceledAt: true,
562
- createdAt: true,
563
- expiresAt: true,
564
- pausedAt: true,
565
- trialEndsAt: true,
566
- trialStartedAt: true,
567
- updatedAt: true,
568
- state: true,
569
- collectionMethod: true,
570
- plan: true,
571
- planCode: true,
572
- total: true
795
+ "...on ErrorAccessDenied": {
796
+ __typename: true,
797
+ message: true
573
798
  },
574
- invoices: {
575
- pdf: true,
576
- date: true,
577
- due: true,
578
- status: true,
579
- total: true,
580
- name: true,
581
- currency: true
799
+ "...on PaymentInfosResponse": {
800
+ __typename: true,
801
+ paymentInfos: {
802
+ hostedUrl: true,
803
+ currentSubscription: {
804
+ autorenew: true,
805
+ activatedAt: true,
806
+ currentPeriodEndsAt: true,
807
+ currentPeriodStartedAt: true,
808
+ canceledAt: true,
809
+ createdAt: true,
810
+ expiresAt: true,
811
+ pausedAt: true,
812
+ trialEndsAt: true,
813
+ trialStartedAt: true,
814
+ updatedAt: true,
815
+ state: true,
816
+ collectionMethod: true,
817
+ plan: true,
818
+ planCode: true,
819
+ total: true
820
+ },
821
+ invoices: {
822
+ pdf: true,
823
+ date: true,
824
+ due: true,
825
+ status: true,
826
+ total: true,
827
+ name: true,
828
+ currency: true
829
+ }
830
+ }
582
831
  }
583
832
  }
584
833
  });
@@ -595,9 +844,29 @@ export var BaseClient = /*#__PURE__*/function () {
595
844
  return _context10.abrupt("return", null);
596
845
 
597
846
  case 6:
598
- return _context10.abrupt("return", internalToPaymentInfos(paymentInfos));
847
+ if (!(paymentInfos.__typename === "ErrorAccessDenied")) {
848
+ _context10.next = 8;
849
+ break;
850
+ }
599
851
 
600
- case 7:
852
+ return _context10.abrupt("return", paymentInfos);
853
+
854
+ case 8:
855
+ if (paymentInfos.paymentInfos) {
856
+ _context10.next = 10;
857
+ break;
858
+ }
859
+
860
+ return _context10.abrupt("return", null);
861
+
862
+ case 10:
863
+ result = internalToPaymentInfos(paymentInfos.paymentInfos);
864
+ return _context10.abrupt("return", {
865
+ __typename: "SuccessResponse",
866
+ data: result
867
+ });
868
+
869
+ case 12:
601
870
  case "end":
602
871
  return _context10.stop();
603
872
  }
@@ -623,28 +892,47 @@ export var BaseClient = /*#__PURE__*/function () {
623
892
  _context11.next = 2;
624
893
  return this.client("query")({
625
894
  limits: {
626
- cloud: {
627
- size: true,
628
- maxSize: true,
629
- count: true,
630
- maxCount: true
895
+ "...on ErrorAccessDenied": {
896
+ __typename: true,
897
+ message: true
631
898
  },
632
- mail: {
633
- received: {
899
+ "...on ErrorLimit": {
900
+ __typename: true,
901
+ message: true
902
+ },
903
+ "...on ErrorNotExist": {
904
+ __typename: true,
905
+ message: true
906
+ },
907
+ "...on ErrorNotFound": {
908
+ __typename: true,
909
+ message: true
910
+ },
911
+ "...on QueryLimits": {
912
+ __typename: true,
913
+ cloud: {
914
+ size: true,
915
+ maxSize: true,
634
916
  count: true,
635
- maxCount: true,
636
- fileCount: true,
637
- maxFileCount: true,
638
- fileSize: true,
639
- maxFileSize: true
917
+ maxCount: true
640
918
  },
641
- sent: {
642
- count: true,
643
- maxCount: true,
644
- fileCount: true,
645
- maxFileCount: true,
646
- fileSize: true,
647
- maxFileSize: true
919
+ mail: {
920
+ received: {
921
+ count: true,
922
+ maxCount: true,
923
+ fileCount: true,
924
+ maxFileCount: true,
925
+ fileSize: true,
926
+ maxFileSize: true
927
+ },
928
+ sent: {
929
+ count: true,
930
+ maxCount: true,
931
+ fileCount: true,
932
+ maxFileCount: true,
933
+ fileSize: true,
934
+ maxFileSize: true
935
+ }
648
936
  }
649
937
  }
650
938
  }
@@ -662,35 +950,70 @@ export var BaseClient = /*#__PURE__*/function () {
662
950
  return _context11.abrupt("return", null);
663
951
 
664
952
  case 6:
953
+ if (!(limits.__typename === "ErrorAccessDenied")) {
954
+ _context11.next = 8;
955
+ break;
956
+ }
957
+
958
+ return _context11.abrupt("return", limits);
959
+
960
+ case 8:
961
+ if (!(limits.__typename === "ErrorNotExist")) {
962
+ _context11.next = 10;
963
+ break;
964
+ }
965
+
966
+ return _context11.abrupt("return", limits);
967
+
968
+ case 10:
969
+ if (!(limits.__typename === "ErrorLimit")) {
970
+ _context11.next = 12;
971
+ break;
972
+ }
973
+
974
+ return _context11.abrupt("return", limits);
975
+
976
+ case 12:
977
+ if (!(limits.__typename === "ErrorNotFound")) {
978
+ _context11.next = 14;
979
+ break;
980
+ }
981
+
982
+ return _context11.abrupt("return", limits);
983
+
984
+ case 14:
665
985
  cloud = limits.cloud, mail = limits.mail;
666
986
  return _context11.abrupt("return", {
667
- cloud: {
668
- count: BigInt(cloud.count),
669
- size: BigInt(cloud.size),
670
- maxCount: cloud.maxCount ? BigInt(cloud.maxCount) : null,
671
- maxSize: cloud.maxSize ? BigInt(cloud.maxSize) : null
672
- },
673
- mail: {
674
- received: {
675
- count: BigInt(mail.received.count),
676
- maxCount: mail.received.maxCount ? BigInt(mail.received.maxCount) : null,
677
- fileCount: BigInt(mail.received.fileCount),
678
- maxFileCount: mail.received.maxFileCount ? BigInt(mail.received.maxFileCount) : null,
679
- fileSize: BigInt(mail.received.fileSize),
680
- maxFileSize: mail.received.maxFileSize ? BigInt(mail.received.maxFileSize) : null
987
+ __typename: "SuccessResponse",
988
+ data: {
989
+ cloud: {
990
+ count: BigInt(cloud.count),
991
+ size: BigInt(cloud.size),
992
+ maxCount: cloud.maxCount ? BigInt(cloud.maxCount) : null,
993
+ maxSize: cloud.maxSize ? BigInt(cloud.maxSize) : null
681
994
  },
682
- sent: {
683
- count: BigInt(mail.sent.count),
684
- maxCount: mail.sent.maxCount ? BigInt(mail.sent.maxCount) : null,
685
- fileCount: BigInt(mail.sent.fileCount),
686
- maxFileCount: mail.sent.maxFileCount ? BigInt(mail.sent.maxFileCount) : null,
687
- fileSize: BigInt(mail.sent.fileSize),
688
- maxFileSize: mail.sent.maxFileSize ? BigInt(mail.sent.maxFileSize) : null
995
+ mail: {
996
+ received: {
997
+ count: BigInt(mail.received.count),
998
+ maxCount: mail.received.maxCount ? BigInt(mail.received.maxCount) : null,
999
+ fileCount: BigInt(mail.received.fileCount),
1000
+ maxFileCount: mail.received.maxFileCount ? BigInt(mail.received.maxFileCount) : null,
1001
+ fileSize: BigInt(mail.received.fileSize),
1002
+ maxFileSize: mail.received.maxFileSize ? BigInt(mail.received.maxFileSize) : null
1003
+ },
1004
+ sent: {
1005
+ count: BigInt(mail.sent.count),
1006
+ maxCount: mail.sent.maxCount ? BigInt(mail.sent.maxCount) : null,
1007
+ fileCount: BigInt(mail.sent.fileCount),
1008
+ maxFileCount: mail.sent.maxFileCount ? BigInt(mail.sent.maxFileCount) : null,
1009
+ fileSize: BigInt(mail.sent.fileSize),
1010
+ maxFileSize: mail.sent.maxFileSize ? BigInt(mail.sent.maxFileSize) : null
1011
+ }
689
1012
  }
690
1013
  }
691
1014
  });
692
1015
 
693
- case 8:
1016
+ case 16:
694
1017
  case "end":
695
1018
  return _context11.stop();
696
1019
  }
@@ -707,8 +1030,6 @@ export var BaseClient = /*#__PURE__*/function () {
707
1030
 
708
1031
  _proto.godFatherAndChildren = /*#__PURE__*/function () {
709
1032
  var _godFatherAndChildren = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
710
- var _user$godFather;
711
-
712
1033
  var _yield$this$client6, user;
713
1034
 
714
1035
  return _regeneratorRuntime.wrap(function _callee12$(_context12) {
@@ -718,19 +1039,26 @@ export var BaseClient = /*#__PURE__*/function () {
718
1039
  _context12.next = 2;
719
1040
  return this.client("query")({
720
1041
  user: [{}, {
721
- godChildren: {
722
- id: true,
723
- firstname: true,
724
- lastname: true,
725
- email: true,
726
- phone: true
1042
+ "...on ErrorNotFound": {
1043
+ __typename: true,
1044
+ message: true
727
1045
  },
728
- godFather: {
729
- id: true,
730
- firstname: true,
731
- lastname: true,
732
- email: true,
733
- phone: true
1046
+ "...on UserResponse": {
1047
+ __typename: true,
1048
+ godChildren: {
1049
+ id: true,
1050
+ firstname: true,
1051
+ lastname: true,
1052
+ email: true,
1053
+ phone: true
1054
+ },
1055
+ godFather: {
1056
+ id: true,
1057
+ firstname: true,
1058
+ lastname: true,
1059
+ email: true,
1060
+ phone: true
1061
+ }
734
1062
  }
735
1063
  }]
736
1064
  });
@@ -747,11 +1075,23 @@ export var BaseClient = /*#__PURE__*/function () {
747
1075
  return _context12.abrupt("return", null);
748
1076
 
749
1077
  case 6:
750
- return _context12.abrupt("return", _objectSpread(_objectSpread({}, user), {}, {
751
- godFather: (_user$godFather = user.godFather) != null ? _user$godFather : null
752
- }));
1078
+ if (!(user.__typename === "ErrorNotFound")) {
1079
+ _context12.next = 8;
1080
+ break;
1081
+ }
753
1082
 
754
- case 7:
1083
+ return _context12.abrupt("return", user);
1084
+
1085
+ case 8:
1086
+ return _context12.abrupt("return", {
1087
+ __typename: "SuccessResponse",
1088
+ data: {
1089
+ godChildren: user.godChildren,
1090
+ godFather: user.godFather
1091
+ }
1092
+ });
1093
+
1094
+ case 9:
755
1095
  case "end":
756
1096
  return _context12.stop();
757
1097
  }
@@ -768,7 +1108,7 @@ export var BaseClient = /*#__PURE__*/function () {
768
1108
 
769
1109
  BaseClient.updateAppDBConfig = /*#__PURE__*/function () {
770
1110
  var _updateAppDBConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(_ref2) {
771
- var appCode, config, env, sessionId, _yield$BaseClient$_ge2, dbConfig;
1111
+ var appCode, config, env, sessionId, _yield$BaseClient$_ge2, dbConfigMutation;
772
1112
 
773
1113
  return _regeneratorRuntime.wrap(function _callee13$(_context13) {
774
1114
  while (1) {
@@ -777,18 +1117,47 @@ export var BaseClient = /*#__PURE__*/function () {
777
1117
  appCode = _ref2.appCode, config = _ref2.config, env = _ref2.env, sessionId = _ref2.sessionId;
778
1118
  _context13.next = 3;
779
1119
  return BaseClient._getBaseClient(env, sessionId)("mutation")({
780
- dbConfig: [{
1120
+ dbConfigMutation: [{
781
1121
  appCode: appCode,
782
1122
  config: JSON.stringify(config)
783
- }, true]
1123
+ }, {
1124
+ "...on ErrorAccessDenied": {
1125
+ __typename: true,
1126
+ message: true
1127
+ },
1128
+ "...on DbConfigMutationResponse": {
1129
+ __typename: true,
1130
+ dbConfigMutation: true
1131
+ }
1132
+ }]
784
1133
  });
785
1134
 
786
1135
  case 3:
787
1136
  _yield$BaseClient$_ge2 = _context13.sent;
788
- dbConfig = _yield$BaseClient$_ge2.dbConfig;
789
- return _context13.abrupt("return", dbConfig);
1137
+ dbConfigMutation = _yield$BaseClient$_ge2.dbConfigMutation;
790
1138
 
791
- case 6:
1139
+ if (dbConfigMutation) {
1140
+ _context13.next = 7;
1141
+ break;
1142
+ }
1143
+
1144
+ return _context13.abrupt("return", null);
1145
+
1146
+ case 7:
1147
+ if (!(dbConfigMutation.__typename === "ErrorAccessDenied")) {
1148
+ _context13.next = 9;
1149
+ break;
1150
+ }
1151
+
1152
+ return _context13.abrupt("return", dbConfigMutation);
1153
+
1154
+ case 9:
1155
+ return _context13.abrupt("return", {
1156
+ __typename: "SuccessResponse",
1157
+ data: dbConfigMutation.dbConfigMutation
1158
+ });
1159
+
1160
+ case 10:
792
1161
  case "end":
793
1162
  return _context13.stop();
794
1163
  }
@@ -815,15 +1184,68 @@ export var BaseClient = /*#__PURE__*/function () {
815
1184
  return BaseClient._getBaseClient(env, sessionId)("query")({
816
1185
  dbConfig: [{
817
1186
  appCode: appCode
818
- }, true]
1187
+ }, {
1188
+ "...on ErrorAccessDenied": {
1189
+ __typename: true,
1190
+ message: true
1191
+ },
1192
+ "...on ErrorNotFound": {
1193
+ __typename: true,
1194
+ message: true
1195
+ },
1196
+ "...on ErrorNotExist": {
1197
+ __typename: true,
1198
+ message: true
1199
+ },
1200
+ "...on DbConfigResponse": {
1201
+ __typename: true,
1202
+ json: true
1203
+ }
1204
+ }]
819
1205
  });
820
1206
 
821
1207
  case 2:
822
1208
  _yield$BaseClient$_ge3 = _context14.sent;
823
1209
  dbConfig = _yield$BaseClient$_ge3.dbConfig;
1210
+
1211
+ if (dbConfig) {
1212
+ _context14.next = 6;
1213
+ break;
1214
+ }
1215
+
1216
+ return _context14.abrupt("return", null);
1217
+
1218
+ case 6:
1219
+ if (!(dbConfig.__typename === "ErrorAccessDenied")) {
1220
+ _context14.next = 8;
1221
+ break;
1222
+ }
1223
+
824
1224
  return _context14.abrupt("return", dbConfig);
825
1225
 
826
- case 5:
1226
+ case 8:
1227
+ if (!(dbConfig.__typename === "ErrorNotFound")) {
1228
+ _context14.next = 10;
1229
+ break;
1230
+ }
1231
+
1232
+ return _context14.abrupt("return", dbConfig);
1233
+
1234
+ case 10:
1235
+ if (!(dbConfig.__typename === "ErrorNotExist")) {
1236
+ _context14.next = 12;
1237
+ break;
1238
+ }
1239
+
1240
+ return _context14.abrupt("return", dbConfig);
1241
+
1242
+ case 12:
1243
+ return _context14.abrupt("return", {
1244
+ __typename: "SuccessResponse",
1245
+ data: dbConfig.json
1246
+ });
1247
+
1248
+ case 13:
827
1249
  case "end":
828
1250
  return _context14.stop();
829
1251
  }
@@ -852,18 +1274,47 @@ export var BaseClient = /*#__PURE__*/function () {
852
1274
  faq: [{
853
1275
  lang: lang
854
1276
  }, {
855
- answer: true,
856
- order: true,
857
- question: true
1277
+ "...on ErrorAccessDenied": {
1278
+ __typename: true,
1279
+ message: true
1280
+ },
1281
+ "...on FaqResponse": {
1282
+ __typename: true,
1283
+ faq: {
1284
+ answer: true,
1285
+ order: true,
1286
+ question: true
1287
+ }
1288
+ }
858
1289
  }]
859
1290
  });
860
1291
 
861
1292
  case 3:
862
1293
  _yield$BaseClient$_ge4 = _context15.sent;
863
1294
  faq = _yield$BaseClient$_ge4.faq;
1295
+
1296
+ if (faq) {
1297
+ _context15.next = 7;
1298
+ break;
1299
+ }
1300
+
1301
+ return _context15.abrupt("return", null);
1302
+
1303
+ case 7:
1304
+ if (!(faq.__typename === "ErrorAccessDenied")) {
1305
+ _context15.next = 9;
1306
+ break;
1307
+ }
1308
+
864
1309
  return _context15.abrupt("return", faq);
865
1310
 
866
- case 6:
1311
+ case 9:
1312
+ return _context15.abrupt("return", {
1313
+ __typename: "SuccessResponse",
1314
+ data: faq.faq
1315
+ });
1316
+
1317
+ case 10:
867
1318
  case "end":
868
1319
  return _context15.stop();
869
1320
  }
@@ -892,29 +1343,58 @@ export var BaseClient = /*#__PURE__*/function () {
892
1343
  blog: [{
893
1344
  lang: lang
894
1345
  }, {
895
- id: true,
896
- blogId: true,
897
- author: true,
898
- body: true,
899
- date: true,
900
- image: true,
901
- imageAlt: true,
902
- summary: true,
903
- title: true,
904
- order: true
1346
+ "...on ErrorLangNotExist": {
1347
+ __typename: true,
1348
+ message: true
1349
+ },
1350
+ "...on BlogResponse": {
1351
+ __typename: true,
1352
+ blogItems: {
1353
+ id: true,
1354
+ blogId: true,
1355
+ author: true,
1356
+ body: true,
1357
+ date: true,
1358
+ image: true,
1359
+ imageAlt: true,
1360
+ summary: true,
1361
+ title: true,
1362
+ order: true
1363
+ }
1364
+ }
905
1365
  }]
906
1366
  });
907
1367
 
908
1368
  case 3:
909
1369
  _yield$BaseClient$_ge5 = _context16.sent;
910
1370
  blog = _yield$BaseClient$_ge5.blog;
911
- return _context16.abrupt("return", blog.map(function (b) {
912
- return _objectSpread(_objectSpread({}, b), {}, {
913
- date: new Date(b.date)
914
- });
915
- }));
916
1371
 
917
- case 6:
1372
+ if (blog) {
1373
+ _context16.next = 7;
1374
+ break;
1375
+ }
1376
+
1377
+ return _context16.abrupt("return", null);
1378
+
1379
+ case 7:
1380
+ if (!(blog.__typename === "ErrorLangNotExist")) {
1381
+ _context16.next = 9;
1382
+ break;
1383
+ }
1384
+
1385
+ return _context16.abrupt("return", blog);
1386
+
1387
+ case 9:
1388
+ return _context16.abrupt("return", {
1389
+ __typename: "SuccessResponse",
1390
+ data: blog.blogItems.map(function (b) {
1391
+ return _objectSpread(_objectSpread({}, b), {}, {
1392
+ date: new Date(b.date)
1393
+ });
1394
+ })
1395
+ });
1396
+
1397
+ case 10:
918
1398
  case "end":
919
1399
  return _context16.stop();
920
1400
  }
@@ -943,19 +1423,32 @@ export var BaseClient = /*#__PURE__*/function () {
943
1423
  reportedUserId: reportedUserId,
944
1424
  customMessage: customMessage
945
1425
  }, {
946
- id: true,
947
- customMessage: true,
948
- user: {
949
- id: true,
950
- firstname: true,
951
- lastname: true,
952
- email: true
1426
+ "...on ErrorAccessDenied": {
1427
+ __typename: true,
1428
+ message: true
1429
+ },
1430
+ "...on ErrorNotFound": {
1431
+ __typename: true,
1432
+ message: true
953
1433
  },
954
- reportedUser: {
955
- id: true,
956
- firstname: true,
957
- lastname: true,
958
- email: true
1434
+ "...on SendReportResponse": {
1435
+ __typename: true,
1436
+ sendReport: {
1437
+ id: true,
1438
+ customMessage: true,
1439
+ user: {
1440
+ id: true,
1441
+ firstname: true,
1442
+ lastname: true,
1443
+ email: true
1444
+ },
1445
+ reportedUser: {
1446
+ id: true,
1447
+ firstname: true,
1448
+ lastname: true,
1449
+ email: true
1450
+ }
1451
+ }
959
1452
  }
960
1453
  }]
961
1454
  });
@@ -963,9 +1456,45 @@ export var BaseClient = /*#__PURE__*/function () {
963
1456
  case 2:
964
1457
  _yield$this$client7 = _context17.sent;
965
1458
  sendReport = _yield$this$client7.sendReport;
1459
+
1460
+ if (sendReport) {
1461
+ _context17.next = 6;
1462
+ break;
1463
+ }
1464
+
1465
+ return _context17.abrupt("return", null);
1466
+
1467
+ case 6:
1468
+ if (!(sendReport.__typename === "ErrorAccessDenied")) {
1469
+ _context17.next = 8;
1470
+ break;
1471
+ }
1472
+
966
1473
  return _context17.abrupt("return", sendReport);
967
1474
 
968
- case 5:
1475
+ case 8:
1476
+ if (!(sendReport.__typename === "ErrorNotFound")) {
1477
+ _context17.next = 10;
1478
+ break;
1479
+ }
1480
+
1481
+ return _context17.abrupt("return", sendReport);
1482
+
1483
+ case 10:
1484
+ if (sendReport.sendReport) {
1485
+ _context17.next = 12;
1486
+ break;
1487
+ }
1488
+
1489
+ return _context17.abrupt("return", null);
1490
+
1491
+ case 12:
1492
+ return _context17.abrupt("return", {
1493
+ __typename: "SuccessResponse",
1494
+ data: sendReport.sendReport
1495
+ });
1496
+
1497
+ case 13:
969
1498
  case "end":
970
1499
  return _context17.stop();
971
1500
  }
@@ -993,15 +1522,52 @@ export var BaseClient = /*#__PURE__*/function () {
993
1522
  return BaseClient._getBaseClient(env, sessionId)("mutation")({
994
1523
  deleteUser: [{
995
1524
  userId: userId
996
- }, true]
1525
+ }, {
1526
+ "...on ErrorAccessDenied": {
1527
+ __typename: true,
1528
+ message: true
1529
+ },
1530
+ "...on DeleteUserResponse": {
1531
+ __typename: true,
1532
+ deleteUser: true
1533
+ }
1534
+ }]
997
1535
  });
998
1536
 
999
1537
  case 3:
1000
1538
  _yield$BaseClient$_ge6 = _context18.sent;
1001
1539
  deleteUser = _yield$BaseClient$_ge6.deleteUser;
1002
- return _context18.abrupt("return", deleteUser != null ? deleteUser : false);
1003
1540
 
1004
- case 6:
1541
+ if (deleteUser) {
1542
+ _context18.next = 7;
1543
+ break;
1544
+ }
1545
+
1546
+ return _context18.abrupt("return", null);
1547
+
1548
+ case 7:
1549
+ if (!(deleteUser.__typename === "ErrorAccessDenied")) {
1550
+ _context18.next = 9;
1551
+ break;
1552
+ }
1553
+
1554
+ return _context18.abrupt("return", deleteUser);
1555
+
1556
+ case 9:
1557
+ if (deleteUser.deleteUser) {
1558
+ _context18.next = 11;
1559
+ break;
1560
+ }
1561
+
1562
+ return _context18.abrupt("return", null);
1563
+
1564
+ case 11:
1565
+ return _context18.abrupt("return", {
1566
+ __typename: "SuccessResponse",
1567
+ data: deleteUser.deleteUser
1568
+ });
1569
+
1570
+ case 12:
1005
1571
  case "end":
1006
1572
  return _context18.stop();
1007
1573
  }
@@ -1030,15 +1596,68 @@ export var BaseClient = /*#__PURE__*/function () {
1030
1596
  dbGet: [{
1031
1597
  field: field,
1032
1598
  userId: userId
1033
- }, true]
1599
+ }, {
1600
+ "...on ErrorAccessDenied": {
1601
+ __typename: true,
1602
+ message: true
1603
+ },
1604
+ "...on ErrorNotExist": {
1605
+ __typename: true,
1606
+ message: true
1607
+ },
1608
+ "...on ErrorNotFound": {
1609
+ __typename: true,
1610
+ message: true
1611
+ },
1612
+ "...on DbGetResponse": {
1613
+ __typename: true,
1614
+ json: true
1615
+ }
1616
+ }]
1034
1617
  });
1035
1618
 
1036
1619
  case 3:
1037
1620
  _yield$this$client8 = _context19.sent;
1038
1621
  dbGet = _yield$this$client8.dbGet;
1039
- return _context19.abrupt("return", dbGet.res);
1040
1622
 
1041
- case 6:
1623
+ if (dbGet) {
1624
+ _context19.next = 7;
1625
+ break;
1626
+ }
1627
+
1628
+ return _context19.abrupt("return", null);
1629
+
1630
+ case 7:
1631
+ if (!(dbGet.__typename === "ErrorAccessDenied")) {
1632
+ _context19.next = 9;
1633
+ break;
1634
+ }
1635
+
1636
+ return _context19.abrupt("return", dbGet);
1637
+
1638
+ case 9:
1639
+ if (!(dbGet.__typename === "ErrorNotExist")) {
1640
+ _context19.next = 11;
1641
+ break;
1642
+ }
1643
+
1644
+ return _context19.abrupt("return", dbGet);
1645
+
1646
+ case 11:
1647
+ if (!(dbGet.__typename === "ErrorNotFound")) {
1648
+ _context19.next = 13;
1649
+ break;
1650
+ }
1651
+
1652
+ return _context19.abrupt("return", dbGet);
1653
+
1654
+ case 13:
1655
+ return _context19.abrupt("return", {
1656
+ __typename: "SuccessResponse",
1657
+ data: dbGet.json
1658
+ });
1659
+
1660
+ case 14:
1042
1661
  case "end":
1043
1662
  return _context19.stop();
1044
1663
  }
@@ -1076,15 +1695,64 @@ export var BaseClient = /*#__PURE__*/function () {
1076
1695
  dbSet: [{
1077
1696
  userId: userId,
1078
1697
  value: serialize(value).toString("base64")
1079
- }, true]
1698
+ }, {
1699
+ "...on ErrorAccessDenied": {
1700
+ __typename: true,
1701
+ message: true
1702
+ },
1703
+ "...on ErrorNotFound": {
1704
+ __typename: true,
1705
+ message: true
1706
+ },
1707
+ "...on DbSetResponse": {
1708
+ __typename: true,
1709
+ dbSet: true
1710
+ }
1711
+ }]
1080
1712
  });
1081
1713
 
1082
1714
  case 5:
1083
1715
  _yield$this$client9 = _context20.sent;
1084
1716
  dbSet = _yield$this$client9.dbSet;
1085
- return _context20.abrupt("return", dbSet.res);
1086
1717
 
1087
- case 8:
1718
+ if (dbSet) {
1719
+ _context20.next = 9;
1720
+ break;
1721
+ }
1722
+
1723
+ return _context20.abrupt("return", null);
1724
+
1725
+ case 9:
1726
+ if (!(dbSet.__typename === "ErrorAccessDenied")) {
1727
+ _context20.next = 11;
1728
+ break;
1729
+ }
1730
+
1731
+ return _context20.abrupt("return", dbSet);
1732
+
1733
+ case 11:
1734
+ if (!(dbSet.__typename === "ErrorNotFound")) {
1735
+ _context20.next = 13;
1736
+ break;
1737
+ }
1738
+
1739
+ return _context20.abrupt("return", dbSet);
1740
+
1741
+ case 13:
1742
+ if (dbSet.dbSet) {
1743
+ _context20.next = 15;
1744
+ break;
1745
+ }
1746
+
1747
+ return _context20.abrupt("return", null);
1748
+
1749
+ case 15:
1750
+ return _context20.abrupt("return", {
1751
+ __typename: "SuccessResponse",
1752
+ data: dbSet.dbSet.res
1753
+ });
1754
+
1755
+ case 16:
1088
1756
  case "end":
1089
1757
  return _context20.stop();
1090
1758
  }
@@ -1113,15 +1781,68 @@ export var BaseClient = /*#__PURE__*/function () {
1113
1781
  dbSearch: [{
1114
1782
  search: search,
1115
1783
  field: field
1116
- }, true]
1784
+ }, {
1785
+ "...on ErrorAccessDenied": {
1786
+ __typename: true,
1787
+ message: true
1788
+ },
1789
+ "...on ErrorBasic": {
1790
+ __typename: true,
1791
+ message: true
1792
+ },
1793
+ "...on ErrorNotExist": {
1794
+ __typename: true,
1795
+ message: true
1796
+ },
1797
+ "...on DbSearchResponse": {
1798
+ __typename: true,
1799
+ json: true
1800
+ }
1801
+ }]
1117
1802
  });
1118
1803
 
1119
1804
  case 3:
1120
1805
  _yield$this$client10 = _context21.sent;
1121
1806
  dbSearch = _yield$this$client10.dbSearch;
1807
+
1808
+ if (dbSearch) {
1809
+ _context21.next = 7;
1810
+ break;
1811
+ }
1812
+
1813
+ return _context21.abrupt("return", null);
1814
+
1815
+ case 7:
1816
+ if (!(dbSearch.__typename === "ErrorAccessDenied")) {
1817
+ _context21.next = 9;
1818
+ break;
1819
+ }
1820
+
1122
1821
  return _context21.abrupt("return", dbSearch);
1123
1822
 
1124
- case 6:
1823
+ case 9:
1824
+ if (!(dbSearch.__typename === "ErrorBasic")) {
1825
+ _context21.next = 11;
1826
+ break;
1827
+ }
1828
+
1829
+ return _context21.abrupt("return", dbSearch);
1830
+
1831
+ case 11:
1832
+ if (!(dbSearch.__typename === "ErrorNotExist")) {
1833
+ _context21.next = 13;
1834
+ break;
1835
+ }
1836
+
1837
+ return _context21.abrupt("return", dbSearch);
1838
+
1839
+ case 13:
1840
+ return _context21.abrupt("return", {
1841
+ __typename: "SuccessResponse",
1842
+ data: dbSearch.json
1843
+ });
1844
+
1845
+ case 14:
1125
1846
  case "end":
1126
1847
  return _context21.stop();
1127
1848
  }
@@ -1138,6 +1859,8 @@ export var BaseClient = /*#__PURE__*/function () {
1138
1859
 
1139
1860
  _proto.deleteFolder = /*#__PURE__*/function () {
1140
1861
  var _deleteFolder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(_ref9) {
1862
+ var _deleteFolder$deleteF;
1863
+
1141
1864
  var id, _yield$this$client11, deleteFolder;
1142
1865
 
1143
1866
  return _regeneratorRuntime.wrap(function _callee22$(_context22) {
@@ -1149,15 +1872,56 @@ export var BaseClient = /*#__PURE__*/function () {
1149
1872
  return this.client("mutation")({
1150
1873
  deleteFolder: [{
1151
1874
  id: id
1152
- }, true]
1875
+ }, {
1876
+ "...on ErrorNotExist": {
1877
+ __typename: true,
1878
+ message: true
1879
+ },
1880
+ "...on ErrorAccessDenied": {
1881
+ __typename: true,
1882
+ message: true
1883
+ },
1884
+ "...on DeleteFolderResponse": {
1885
+ __typename: true,
1886
+ deleteFolder: true
1887
+ }
1888
+ }]
1153
1889
  });
1154
1890
 
1155
1891
  case 3:
1156
1892
  _yield$this$client11 = _context22.sent;
1157
1893
  deleteFolder = _yield$this$client11.deleteFolder;
1158
- return _context22.abrupt("return", deleteFolder != null ? deleteFolder : false);
1159
1894
 
1160
- case 6:
1895
+ if (deleteFolder) {
1896
+ _context22.next = 7;
1897
+ break;
1898
+ }
1899
+
1900
+ return _context22.abrupt("return", null);
1901
+
1902
+ case 7:
1903
+ if (!(deleteFolder.__typename === "ErrorNotExist")) {
1904
+ _context22.next = 9;
1905
+ break;
1906
+ }
1907
+
1908
+ return _context22.abrupt("return", deleteFolder);
1909
+
1910
+ case 9:
1911
+ if (!(deleteFolder.__typename === "ErrorAccessDenied")) {
1912
+ _context22.next = 11;
1913
+ break;
1914
+ }
1915
+
1916
+ return _context22.abrupt("return", deleteFolder);
1917
+
1918
+ case 11:
1919
+ return _context22.abrupt("return", {
1920
+ __typename: "SuccessResponse",
1921
+ data: (_deleteFolder$deleteF = deleteFolder.deleteFolder) != null ? _deleteFolder$deleteF : false
1922
+ });
1923
+
1924
+ case 12:
1161
1925
  case "end":
1162
1926
  return _context22.stop();
1163
1927
  }
@@ -1174,6 +1938,8 @@ export var BaseClient = /*#__PURE__*/function () {
1174
1938
 
1175
1939
  _proto.moveFolders = /*#__PURE__*/function () {
1176
1940
  var _moveFolders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23(_ref10) {
1941
+ var _moveFolders$moveFold;
1942
+
1177
1943
  var foldersId, parentFolderId, _yield$this$client12, moveFolders;
1178
1944
 
1179
1945
  return _regeneratorRuntime.wrap(function _callee23$(_context23) {
@@ -1186,15 +1952,44 @@ export var BaseClient = /*#__PURE__*/function () {
1186
1952
  moveFolders: [{
1187
1953
  foldersId: foldersId,
1188
1954
  parentFolderId: parentFolderId
1189
- }, true]
1955
+ }, {
1956
+ "...on ErrorAccessDenied": {
1957
+ __typename: true,
1958
+ message: true
1959
+ },
1960
+ "...on MoveFoldersResponse": {
1961
+ __typename: true,
1962
+ moveFolders: true
1963
+ }
1964
+ }]
1190
1965
  });
1191
1966
 
1192
1967
  case 3:
1193
1968
  _yield$this$client12 = _context23.sent;
1194
1969
  moveFolders = _yield$this$client12.moveFolders;
1195
- return _context23.abrupt("return", moveFolders != null ? moveFolders : false);
1196
1970
 
1197
- case 6:
1971
+ if (moveFolders) {
1972
+ _context23.next = 7;
1973
+ break;
1974
+ }
1975
+
1976
+ return _context23.abrupt("return", null);
1977
+
1978
+ case 7:
1979
+ if (!(moveFolders.__typename === "ErrorAccessDenied")) {
1980
+ _context23.next = 9;
1981
+ break;
1982
+ }
1983
+
1984
+ return _context23.abrupt("return", moveFolders);
1985
+
1986
+ case 9:
1987
+ return _context23.abrupt("return", {
1988
+ __typename: "SuccessResponse",
1989
+ data: (_moveFolders$moveFold = moveFolders.moveFolders) != null ? _moveFolders$moveFold : false
1990
+ });
1991
+
1992
+ case 10:
1198
1993
  case "end":
1199
1994
  return _context23.stop();
1200
1995
  }
@@ -1211,6 +2006,8 @@ export var BaseClient = /*#__PURE__*/function () {
1211
2006
 
1212
2007
  _proto.moveFiles = /*#__PURE__*/function () {
1213
2008
  var _moveFiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24(_ref11) {
2009
+ var _moveFiles$moveFiles;
2010
+
1214
2011
  var filesId, parentFolderId, _yield$this$client13, moveFiles;
1215
2012
 
1216
2013
  return _regeneratorRuntime.wrap(function _callee24$(_context24) {
@@ -1223,15 +2020,44 @@ export var BaseClient = /*#__PURE__*/function () {
1223
2020
  moveFiles: [{
1224
2021
  filesId: filesId,
1225
2022
  parentFolderId: parentFolderId
1226
- }, true]
2023
+ }, {
2024
+ "...on ErrorAccessDenied": {
2025
+ __typename: true,
2026
+ message: true
2027
+ },
2028
+ "...on MoveFilesResponse": {
2029
+ __typename: true,
2030
+ moveFiles: true
2031
+ }
2032
+ }]
1227
2033
  });
1228
2034
 
1229
2035
  case 3:
1230
2036
  _yield$this$client13 = _context24.sent;
1231
2037
  moveFiles = _yield$this$client13.moveFiles;
1232
- return _context24.abrupt("return", moveFiles != null ? moveFiles : false);
1233
2038
 
1234
- case 6:
2039
+ if (moveFiles) {
2040
+ _context24.next = 7;
2041
+ break;
2042
+ }
2043
+
2044
+ return _context24.abrupt("return", null);
2045
+
2046
+ case 7:
2047
+ if (!(moveFiles.__typename === "ErrorAccessDenied")) {
2048
+ _context24.next = 9;
2049
+ break;
2050
+ }
2051
+
2052
+ return _context24.abrupt("return", moveFiles);
2053
+
2054
+ case 9:
2055
+ return _context24.abrupt("return", {
2056
+ __typename: "SuccessResponse",
2057
+ data: (_moveFiles$moveFiles = moveFiles.moveFiles) != null ? _moveFiles$moveFiles : false
2058
+ });
2059
+
2060
+ case 10:
1235
2061
  case "end":
1236
2062
  return _context24.stop();
1237
2063
  }
@@ -1260,8 +2086,15 @@ export var BaseClient = /*#__PURE__*/function () {
1260
2086
  folderSize: [{
1261
2087
  folderId: folderId
1262
2088
  }, {
1263
- size: true,
1264
- sizeBefore: true
2089
+ "...on ErrorAccessDenied": {
2090
+ __typename: true,
2091
+ message: true
2092
+ },
2093
+ "...on FolderSizeResponse": {
2094
+ __typename: true,
2095
+ size: true,
2096
+ sizeBefore: true
2097
+ }
1265
2098
  }]
1266
2099
  });
1267
2100
 
@@ -1277,12 +2110,23 @@ export var BaseClient = /*#__PURE__*/function () {
1277
2110
  return _context25.abrupt("return", null);
1278
2111
 
1279
2112
  case 7:
2113
+ if (!(folderSize.__typename === "ErrorAccessDenied")) {
2114
+ _context25.next = 9;
2115
+ break;
2116
+ }
2117
+
2118
+ return _context25.abrupt("return", folderSize);
2119
+
2120
+ case 9:
1280
2121
  return _context25.abrupt("return", {
1281
- size: BigInt(folderSize.size),
1282
- sizeBefore: BigInt(folderSize.sizeBefore)
2122
+ __typename: "SuccessResponse",
2123
+ data: {
2124
+ size: BigInt(folderSize.size),
2125
+ sizeBefore: BigInt(folderSize.sizeBefore)
2126
+ }
1283
2127
  });
1284
2128
 
1285
- case 8:
2129
+ case 10:
1286
2130
  case "end":
1287
2131
  return _context25.stop();
1288
2132
  }
@@ -1321,12 +2165,20 @@ export var BaseClient = /*#__PURE__*/function () {
1321
2165
  return _context26.abrupt("return", null);
1322
2166
 
1323
2167
  case 6:
2168
+ if (!(me.__typename === "ErrorNotFound")) {
2169
+ _context26.next = 8;
2170
+ break;
2171
+ }
2172
+
2173
+ return _context26.abrupt("return", null);
2174
+
2175
+ case 8:
1324
2176
  return _context26.abrupt("return", getLink({
1325
2177
  app: "auth",
1326
- path: "/sign-up?gf=" + btoa(me.email) + "&au=" + btoa(backUrl)
2178
+ path: "/sign-up?gf=" + btoa(me.data.email) + "&au=" + btoa(backUrl)
1327
2179
  }));
1328
2180
 
1329
- case 7:
2181
+ case 9:
1330
2182
  case "end":
1331
2183
  return _context26.stop();
1332
2184
  }
@@ -1373,4 +2225,4 @@ BaseClient.getBaseUrl = function (env, graphcdn) {
1373
2225
  BaseClient._getBaseClient = function (env, session) {
1374
2226
  return createThunder(BaseClient.getBaseUrl(env), session);
1375
2227
  };
1376
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9yIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInVzZXIiLCJpZCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibGFuZyIsInB1YmxpY0tleSIsInVuZGVmaW5lZCIsImVtYWlsIiwicGhvbmUiLCJyb2xlIiwiZGVsZXRlZEF0IiwibGFzdExvZ2luIiwiZ2V0VXNlciIsInBhcmFtcyIsInNlbGVjdG9yIiwiY2xpZW50IiwiQmFzZUNsaWVudCIsInNlc3Npb24iLCJlbnYiLCJzZXNzaW9uSWQiLCJfZ2V0QmFzZUNsaWVudCIsInNlc3Npb25zIiwibGFzdEFjdGl2aXR5IiwidXNlckFnZW50IiwiaXAiLCJjaXR5IiwiY291bnRyeSIsImFwcFNlc3Npb25zIiwidXNlckFwcCIsImFwcCIsIm5hbWUiLCJkYXRhIiwicyIsImEiLCJsb2dvdXQiLCJsb2NhbCIsImp3dCIsImNsZWFyIiwidXNlckFwcEtleXMiLCJ1c2VyQXBwU2Vzc2lvbiIsIm1lIiwic2V0IiwidXBkYXRlUHJvZmlsZSIsIkVycm9yIiwicGxhbnMiLCJraW5kIiwiY29kZXMiLCJsaW1pdHMiLCJkb3dubG9hZEJhbmR3aWR0aCIsImRvd25sb2FkQ291bnQiLCJoYXJkRmlsZUNvdW50IiwiaGFyZEZpbGVTaXplIiwicGVyRmlsZVNpemUiLCJ1cGxvYWRCYW5kd2lkdGgiLCJ1cGxvYWRDb3VudCIsInJlY2VpdmVkTWFpbHMiLCJjb3VudCIsImZpbGVDb3VudCIsImZpbGVTaXplIiwiaGFyZENvdW50Iiwic2VudE1haWxzIiwicGF5IiwiaW5wdXQiLCJhdXRvUmVuZXciLCJjYW5jZWxQYXltZW50IiwicGF5bWVudEluZm9zIiwiaG9zdGVkVXJsIiwiYXV0b3JlbmV3IiwicGxhbiIsInRvdGFsIiwicGRmIiwiY3VycmVuY3kiLCJjbG91ZCIsInNpemUiLCJtYXhTaXplIiwibWF4Q291bnQiLCJtYWlsIiwicmVjZWl2ZWQiLCJtYXhGaWxlQ291bnQiLCJtYXhGaWxlU2l6ZSIsInNlbnQiLCJCaWdJbnQiLCJnb2RGYXRoZXJBbmRDaGlsZHJlbiIsImdvZENoaWxkcmVuIiwiZ29kRmF0aGVyIiwidXBkYXRlQXBwREJDb25maWciLCJhcHBDb2RlIiwiY29uZmlnIiwiZGJDb25maWciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QXBwREJDb25maWciLCJnZXRGQVEiLCJmYXEiLCJhbnN3ZXIiLCJvcmRlciIsInF1ZXN0aW9uIiwiZ2V0QmxvZyIsImJsb2ciLCJibG9nSWQiLCJhdXRob3IiLCJib2R5IiwiaW1hZ2UiLCJpbWFnZUFsdCIsInN1bW1hcnkiLCJ0aXRsZSIsImIiLCJyZXBvcnRVc2VyIiwicmVwb3J0ZWRVc2VySWQiLCJjdXN0b21NZXNzYWdlIiwic2VuZFJlcG9ydCIsInJlcG9ydGVkVXNlciIsImRlbGV0ZVVzZXIiLCJkYkdldCIsImZpZWxkIiwicmVzIiwiZGJTZXQiLCJ2YWx1ZSIsInRvU3RyaW5nIiwiZGJTZWFyY2giLCJzZWFyY2giLCJkZWxldGVGb2xkZXIiLCJtb3ZlRm9sZGVycyIsImZvbGRlcnNJZCIsInBhcmVudEZvbGRlcklkIiwibW92ZUZpbGVzIiwiZmlsZXNJZCIsImZvbGRlclNpemUiLCJmb2xkZXJJZCIsInNpemVCZWZvcmUiLCJnZXRTcG9uc29yc2hpcExpbmsiLCJiYWNrVXJsIiwicGF0aCIsImJ0b2EiLCJnZXRCYXNlVXJsIiwiZ3JhcGhjZG4iLCJwcm9jZXNzIiwiTk9ERV9FTlYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsU0FBU0EsU0FBVCxRQUEwQixNQUExQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0Isb0JBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixZQUEzQjtBQUdBLFNBQVNDLFVBQVQsUUFBMkIscUJBQTNCO0FBUUEsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxTQUFTQyxhQUFULFFBQThCLGtCQUE5Qjs7QUF5S0EsU0FBU0Msc0JBQVQsQ0FBZ0NDLENBQWhDLEVBQXVFO0FBQ3JFLHlDQUNLQSxDQURMO0FBRUVDLElBQUFBLG1CQUFtQixrQ0FDZEQsQ0FBQyxDQUFDQyxtQkFEWTtBQUVqQkMsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNDLG1CQUFGLENBQXNCQyxLQUZaO0FBR2pCQyxNQUFBQSxnQkFBZ0IsRUFBRUgsQ0FBQyxDQUFDQyxtQkFBRixDQUNmRSxnQkFKYztBQUtqQkMsTUFBQUEsV0FBVyxFQUFFSixDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUF0QixHQUNULElBQUlDLElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkcsV0FBL0IsQ0FEUyxHQUVULElBUGE7QUFRakJFLE1BQUFBLFNBQVMsRUFBRU4sQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBdEIsR0FDUCxJQUFJRCxJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JLLFNBQS9CLENBRE8sR0FFUCxJQVZhO0FBV2pCQyxNQUFBQSxTQUFTLEVBQUVQLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JNLFNBQXRCLEdBQ1AsSUFBSUYsSUFBSixDQUFTTCxDQUFDLENB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QUFSLENBQVl1SCxRQUFaLEtBQXlCLE1BQTdCLEVBQXFDO0FBQ25DLFdBQU8sK0JBQVA7QUFDRDs7QUFFRCxVQUFRdkgsR0FBUjtBQUNFLFNBQUssTUFBTDtBQUNFLGFBQU9xSCxRQUFRLEdBQ1gsOEJBRFcsR0FFWCxnQ0FGSjs7QUFHRixTQUFLLFNBQUw7QUFDRSxhQUFPLHdDQUFQOztBQUNGLFNBQUssS0FBTDtBQUNBO0FBQ0UsYUFBTyxvQ0FBUDtBQVRKO0FBV0QsQzs7QUFwQlV2SCxVLENBc0JhSSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Qy9DLGFBQWEsQ0FBQzhDLFVBQVUsQ0FBQ3NILFVBQVgsQ0FBc0JwSCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERvd25sb2FkUHJvZ3Jlc3MgYXMgRExQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgZ2V0TGluayB9IGZyb20gXCJAc2VjcmVjeS9saWItdXRpbHNcIjtcbmltcG9ydCB7IHVzZXJzQ2FjaGUgfSBmcm9tIFwiLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBVc2VyU2Vzc2lvbiB9IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5RW52IH0gZnJvbSBcIi4vY2xpZW50L2hlbHBlcnMuanNcIjtcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiLi9jbGllbnQvc3RvcmFnZS5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBMYW5nLFxuICBQYXlJbnB1dFR5cGUsXG4gIFBsYW5LaW5kLFxuICBUaHVuZGVyLFxuICBVc2VyUm9sZVxufSBmcm9tIFwiLi96ZXVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTZWxlY3RvciB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9yKFwiUXVlcnlcIikoe1xuICAgIHVzZXI6IFtcbiAgICAgIHsgdXNlcklkIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiB0cnVlLFxuICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICBwdWJsaWNLZXk6IHdpdGhQdWJsaWNLZXkgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgcGhvbmU6IHRydWUsXG4gICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgICAgICAgbGFzdExvZ2luOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHVzZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZ0ZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcIm9iamVjdFwiO1xuICBpc0FycmF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0tleT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwREJDb25maWcgPSB7XG4gIGZpZWxkczogQXBwREJDb25maWdGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgRmFxSXRlbSA9IHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgYW5zd2VyOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCbG9nSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYmxvZ0lkOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGF1dGhvcjogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGRhdGU6IERhdGU7XG4gIGltYWdlOiBzdHJpbmc7XG4gIGltYWdlQWx0OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFVzZXJCYXNlID0ge1xuICBlbWFpbDogc3RyaW5nO1xuICBwaG9uZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICByb2xlOiBVc2VyUm9sZTtcbiAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGxhc3RMb2dpbjogRGF0ZTtcbiAgbGFuZzogTGFuZztcbn07XG5cbnR5cGUgV2l0aFB1YmxpY0tleSA9IHsgd2l0aFB1YmxpY0tleT86IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVXNlcjxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+ID0gVCBleHRlbmRzIHtcbiAgd2l0aFB1YmxpY0tleTogdHJ1ZTtcbn1cbiAgPyBVc2VyQmFzZSAmIHsgcHVibGljS2V5OiBzdHJpbmcgfVxuICA6IFVzZXJCYXNlO1xuXG50eXBlIENsYXNzR2V0VXNlclBhcmFtcyA9IFdpdGhQdWJsaWNLZXkgJiB7XG4gIHVzZXJJZD86IHN0cmluZztcbn07XG50eXBlIEdldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG59O1xuXG50eXBlIFN0YXRpY0dldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGVudjogU2VjcmVjeUVudjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFVzZXI8VSBleHRlbmRzIFdpdGhQdWJsaWNLZXk+KFxuICBwYXJhbXM6IEdldFVzZXJQYXJhbXNcbik6IFByb21pc2U8VXNlcjxVPiB8IG51bGw+IHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRVc2VyU2VsZWN0b3IocGFyYW1zLnVzZXJJZCwgcGFyYW1zLndpdGhQdWJsaWNLZXkpO1xuICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHBhcmFtcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGkuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwic3RhZ2luZ1wiOlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5zdGFnaW5nLnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgICAgY2FzZSBcImRldlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9hcGkuZGV2LnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZ2V0QmFzZUNsaWVudCA9IChcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj4gPT5cbiAgICBjcmVhdGVUaHVuZGVyKEJhc2VDbGllbnQuZ2V0QmFzZVVybChlbnYpLCBzZXNzaW9uKTtcblxuICBwcm90ZWN0ZWQgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBwdWJsaWMgc2Vzc2lvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogc3RyaW5nLCBlbnY6IFNlY3JlY3lFbnYpIHtcbiAgICB0aGlzLnNlc3Npb25JZCA9IHNlc3Npb247XG4gICAgdGhpcy5jbGllbnQgPSBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbik7XG4gIH1cblxuICBhc3luYyBzZXNzaW9ucygpOiBQcm9taXNlPFVzZXJTZXNzaW9uW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgc2Vzc2lvbnM6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgdXNlckFnZW50OiB0cnVlLFxuICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgY291bnRyeTogdHJ1ZSxcbiAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0QWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgIGNpdHk6IHRydWUsXG4gICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBcHA6IHtcbiAgICAgICAgICAgICAgICBhcHA6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlc3Npb25zOiBVc2VyU2Vzc2lvbltdID1cbiAgICAgIGRhdGEudXNlcj8uc2Vzc2lvbnMubWFwKHMgPT4gKHtcbiAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgIGlwOiBzLmlwLFxuICAgICAgICBjaXR5OiBzLmNpdHksXG4gICAgICAgIGNvdW50cnk6IHMuY291bnRyeSxcbiAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckFnZW50OiBzLnVzZXJBZ2VudCxcbiAgICAgICAgYXBwU2Vzc2lvbnM6IHMuYXBwU2Vzc2lvbnMubWFwKGEgPT4gKHtcbiAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICBpcDogYS5pcCxcbiAgICAgICAgICBjaXR5OiBhLmNpdHksXG4gICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgIGxhc3RBY3Rpdml0eTogYS5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShhLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdXNlckFnZW50OiBhLnVzZXJBZ2VudCxcbiAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICB9KSlcbiAgICAgIH0pKSA/PyBbXTtcblxuICAgIHJldHVybiBzZXNzaW9ucztcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgIGNvbnN0IGxvY2FsID0gZ2V0U3RvcmFnZShmYWxzZSk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gZ2V0U3RvcmFnZSh0cnVlKTtcbiAgICAgIGxvY2FsLmp3dC5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLmp3dC5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgdXNlcnNDYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICAgIGxvZ291dDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlc3Npb25JZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWU8VCBleHRlbmRzIFdpdGhQdWJsaWNLZXkgPSBXaXRoUHVibGljS2V5PihcbiAgICBwYXJhbXM/OiBUXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyKHBhcmFtcyB8fCAoeyB3aXRoUHVibGljS2V5OiB0cnVlIH0gYXMgVCkpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVzZXI8VCBleHRlbmRzIFN0YXRpY0dldFVzZXJQYXJhbXM+KFxuICAgIHBhcmFtczogVCxcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuX2dldEJhc2VDbGllbnQocGFyYW1zLmVudiwgc2Vzc2lvbklkKSxcbiAgICAgIHVzZXJJZDogcGFyYW1zLnVzZXJJZCxcbiAgICAgIHdpdGhQdWJsaWNLZXk6IHBhcmFtcy53aXRoUHVibGljS2V5XG4gICAgfSk7XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgdXNlcnNDYWNoZS5zZXQodXNlci5pZCwgdXNlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyB1c2VyPFQgZXh0ZW5kcyBDbGFzc0dldFVzZXJQYXJhbXM+KHBhcmFtczogVCk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVByb2ZpbGUoe1xuICAgIGZpcnN0bmFtZSxcbiAgICBsYXN0bmFtZSxcbiAgICBsYW5nXG4gIH06IHtcbiAgICBmaXJzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFuZzogTGFuZyB8IG51bGw7XG4gIH0pOiBQcm9taXNlPFVzZXI+IHtcbiAgICBjb25zdCB7IHVwZGF0ZVByb2ZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGxhc3RMb2dpbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGVQcm9maWxlLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXBkYXRlUHJvZmlsZS5kZWxldGVkQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxQbGFuW10+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIHBsYW5zOiB7XG4gICAgICAgIGtpbmQ6IHRydWUsXG4gICAgICAgIGNvZGVzOiB0cnVlLFxuICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICBkb3dubG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICBkb3dubG9hZENvdW50OiB0cnVlLFxuICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHVwbG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICB1cGxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICByZWNlaXZlZE1haWxzOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZW50TWFpbHM6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwbGFucztcbiAgfVxuXG4gIGFzeW5jIHBheShcbiAgICBwbGFuQ29kZTogU2VjcmVjeVBsYW5zQ29kZXMsXG4gICAgaW5wdXQ6IFBheUlucHV0LFxuICAgIGF1dG9SZW5ldz86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcGF5IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIHBheTogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgcGxhbkNvZGUsXG4gICAgICAgICAgYXV0b1JlbmV3XG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXkgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjYW5jZWxQYXltZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgY2FuY2VsUGF5bWVudCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFBheW1lbnRJbmZvcyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheW1lbnRJbmZvcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBwYXltZW50SW5mb3M6IHtcbiAgICAgICAgaG9zdGVkVXJsOiB0cnVlLFxuICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXV0b3JlbmV3OiB0cnVlLFxuICAgICAgICAgIGFjdGl2YXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxlZEF0OiB0cnVlLFxuICAgICAgICAgIGNyZWF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBleHBpcmVzQXQ6IHRydWUsXG4gICAgICAgICAgcGF1c2VkQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgdXBkYXRlZEF0OiB0cnVlLFxuICAgICAgICAgIHN0YXRlOiB0cnVlLFxuICAgICAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHRydWUsXG4gICAgICAgICAgcGxhbjogdHJ1ZSxcbiAgICAgICAgICBwbGFuQ29kZTogdHJ1ZSxcblxuICAgICAgICAgIHRvdGFsOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGludm9pY2VzOiB7XG4gICAgICAgICAgcGRmOiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgZHVlOiB0cnVlLFxuICAgICAgICAgIHN0YXR1czogdHJ1ZSxcbiAgICAgICAgICB0b3RhbDogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICAgIGN1cnJlbmN5OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghcGF5bWVudEluZm9zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZXJuYWxUb1BheW1lbnRJbmZvcyhwYXltZW50SW5mb3MpO1xuICB9XG5cbiAgYXN5bmMgbGltaXRzKCk6IFByb21pc2U8UXVlcnlMaW1pdHMgfCBudWxsPiB7XG4gICAgY29uc3QgeyBsaW1pdHMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgbGltaXRzOiB7XG4gICAgICAgIGNsb3VkOiB7XG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgIG1heENvdW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1haWw6IHtcbiAgICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWxpbWl0cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyBjbG91ZCwgbWFpbCB9ID0gbGltaXRzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsb3VkOiB7XG4gICAgICAgIGNvdW50OiBCaWdJbnQoY2xvdWQuY291bnQpLFxuICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgIG1heENvdW50OiBjbG91ZC5tYXhDb3VudCA/IEJpZ0ludChjbG91ZC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBjbG91ZC5tYXhTaXplID8gQmlnSW50KGNsb3VkLm1heFNpemUpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIG1haWw6IHtcbiAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgIG1heENvdW50OiBtYWlsLnJlY2VpdmVkLm1heENvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heENvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwuc2VudC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICBmaWxlQ291bnQ6IEJpZ0ludChtYWlsLnNlbnQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwuc2VudC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnNlbnQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlU2l6ZSlcbiAgICAgICAgICAgIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdvZEZhdGhlckFuZENoaWxkcmVuKCk6IFByb21pc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4gfCBudWxsPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvZEZhdGhlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVzZXIsXG4gICAgICBnb2RGYXRoZXI6IHVzZXIuZ29kRmF0aGVyID8/IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVwZGF0ZUFwcERCQ29uZmlnKHtcbiAgICBhcHBDb2RlLFxuICAgIGNvbmZpZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBhcHBDb2RlOiBzdHJpbmc7XG4gICAgY29uZmlnOiBBcHBEQkNvbmZpZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlLFxuICAgICAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29uZmlnKVxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJDb25maWc7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QXBwREJDb25maWcoXG4gICAgYXBwQ29kZTogc3RyaW5nLFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcInF1ZXJ5XCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRGQVEoe1xuICAgIGxhbmcsXG4gICAgZW52LFxuICAgIHNlc3Npb25JZFxuICB9OiB7XG4gICAgbGFuZz86IExhbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEZhcUl0ZW1bXT4ge1xuICAgIGNvbnN0IHsgZmFxIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIGZhcTogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW5zd2VyOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgIHF1ZXN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYXE7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEJsb2dJdGVtW10+IHtcbiAgICBjb25zdCB7IGJsb2cgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpKFwicXVlcnlcIikoe1xuICAgICAgYmxvZzogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgYmxvZ0lkOiB0cnVlLFxuICAgICAgICAgIGF1dGhvcjogdHJ1ZSxcbiAgICAgICAgICBib2R5OiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICAgICAgaW1hZ2VBbHQ6IHRydWUsXG4gICAgICAgICAgc3VtbWFyeTogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmxvZy5tYXAoYiA9PiAoeyAuLi5iLCBkYXRlOiBuZXcgRGF0ZShiLmRhdGUpIH0pKTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydFVzZXIoXG4gICAgcmVwb3J0ZWRVc2VySWQ6IHN0cmluZyxcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8U2VuZFJlcG9ydCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgc2VuZFJlcG9ydCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBzZW5kUmVwb3J0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXBvcnRlZFVzZXJJZCxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVVc2VyIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VT4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZGJHZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJHZXQucmVzO1xuICB9XG5cbiAgYXN5bmMgZGJTZXQ8VCBleHRlbmRzIFVzZXJEYXRhLCBVIGV4dGVuZHMgRG9jdW1lbnQ+KHtcbiAgICB2YWx1ZSxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIHZhbHVlOiBVO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGluY2x1ZGluZyBmaWVsZHMgeW91IHdhbnQgdG8gdXBkYXRlLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYlNldCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYlNldC5yZXM7XG4gIH1cblxuICBhc3luYyBkYlNlYXJjaDxUPih7XG4gICAgc2VhcmNoLFxuICAgIGZpZWxkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGRiU2VhcmNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2VhcmNoO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkZWxldGVGb2xkZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWxldGVGb2xkZXIgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRm9sZGVycyh7XG4gICAgZm9sZGVyc0lkLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgbW92ZUZvbGRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcnNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZvbGRlcnMgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRmlsZXMoe1xuICAgIGZpbGVzSWQsXG4gICAgcGFyZW50Rm9sZGVySWRcbiAgfToge1xuICAgIGZpbGVzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZpbGVzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyU2l6ZSh7XG4gICAgZm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Rm9sZGVyU2l6ZSB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZvbGRlclNpemUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZm9sZGVyU2l6ZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgc2l6ZUJlZm9yZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZvbGRlclNpemUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaXplOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplKSxcbiAgICAgIHNpemVCZWZvcmU6IEJpZ0ludChmb2xkZXJTaXplLnNpemVCZWZvcmUpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldFNwb25zb3JzaGlwTGluayh7XG4gICAgYmFja1VybFxuICB9OiB7XG4gICAgYmFja1VybDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgbWUgPSBhd2FpdCB0aGlzLm1lKHsgd2l0aFB1YmxpY0tleTogZmFsc2UgfSk7XG5cbiAgICBpZiAoIW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TGluayh7XG4gICAgICBhcHA6IFwiYXV0aFwiLFxuICAgICAgcGF0aDogYC9zaWduLXVwP2dmPSR7YnRvYShtZS5lbWFpbCl9JmF1PSR7YnRvYShiYWNrVXJsKX1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
2228
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9yIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInVzZXIiLCJfX3R5cGVuYW1lIiwibWVzc2FnZSIsImZpZWxkIiwiaWQiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImxhbmciLCJwdWJsaWNLZXkiLCJ1bmRlZmluZWQiLCJlbWFpbCIsInBob25lIiwicm9sZSIsImRlbGV0ZWRBdCIsImxhc3RMb2dpbiIsImdldFVzZXIiLCJwYXJhbXMiLCJzZWxlY3RvciIsImNsaWVudCIsInVzZXJSZXNwb25zZSIsImRhdGEiLCJCYXNlQ2xpZW50Iiwic2Vzc2lvbiIsImVudiIsInNlc3Npb25JZCIsIl9nZXRCYXNlQ2xpZW50Iiwic2Vzc2lvbnMiLCJsYXN0QWN0aXZpdHkiLCJ1c2VyQWdlbnQiLCJpcCIsImNpdHkiLCJjb3VudHJ5IiwiYXBwU2Vzc2lvbnMiLCJ1c2VyQXBwIiwiYXBwIiwibmFtZSIsInMiLCJhIiwibG9nb3V0IiwibG9jYWwiLCJqd3QiLCJjbGVhciIsInVzZXJBcHBLZXlzIiwidXNlckFwcFNlc3Npb24iLCJtZSIsInNldCIsInVwZGF0ZVByb2ZpbGUiLCJwbGFucyIsInBsYW4iLCJraW5kIiwiY29kZXMiLCJsaW1pdHMiLCJkb3dubG9hZEJhbmR3aWR0aCIsImRvd25sb2FkQ291bnQiLCJoYXJkRmlsZUNvdW50IiwiaGFyZEZpbGVTaXplIiwicGVyRmlsZVNpemUiLCJ1cGxvYWRCYW5kd2lkdGgiLCJ1cGxvYWRDb3VudCIsInJlY2VpdmVkTWFpbHMiLCJjb3VudCIsImZpbGVDb3VudCIsImZpbGVTaXplIiwiaGFyZENvdW50Iiwic2VudE1haWxzIiwicGF5IiwiaW5wdXQiLCJhdXRvUmVuZXciLCJjYW5jZWxQYXltZW50IiwicGF5bWVudEluZm9zIiwiaG9zdGVkVXJsIiwiYXV0b3JlbmV3IiwidG90YWwiLCJwZGYiLCJjdXJyZW5jeSIsInJlc3VsdCIsImNsb3VkIiwic2l6ZSIsIm1heFNpemUiLCJtYXhDb3VudCIsIm1haWwiLCJyZWNlaXZlZCIsIm1heEZpbGVDb3VudCIsIm1heEZpbGVTaXplIiwic2VudCIsIkJpZ0ludCIsImdvZEZhdGhlckFuZENoaWxkcmVuIiwiZ29kQ2hpbGRyZW4iLCJnb2RGYXRoZXIiLCJ1cGRhdGVBcHBEQkNvbmZpZyIsImFwcENvZGUiLCJjb25maWciLCJkYkNvbmZpZ011dGF0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFwcERCQ29uZmlnIiwiZGJDb25maWciLCJqc29uIiwiZ2V0RkFRIiwiZmFxIiwiYW5zd2VyIiwib3JkZXIiLCJxdWVzdGlvbiIsImdldEJsb2ciLCJibG9nIiwiYmxvZ0l0ZW1zIiwiYmxvZ0lkIiwiYXV0aG9yIiwiYm9keSIsImltYWdlIiwiaW1hZ2VBbHQiLCJzdW1tYXJ5IiwidGl0bGUiLCJiIiwicmVwb3J0VXNlciIsInJlcG9ydGVkVXNlcklkIiwiY3VzdG9tTWVzc2FnZSIsInNlbmRSZXBvcnQiLCJyZXBvcnRlZFVzZXIiLCJkZWxldGVVc2VyIiwiZGJHZXQiLCJkYlNldCIsInZhbHVlIiwiRXJyb3IiLCJ0b1N0cmluZyIsInJlcyIsImRiU2VhcmNoIiwic2VhcmNoIiwiZGVsZXRlRm9sZGVyIiwibW92ZUZvbGRlcnMiLCJmb2xkZXJzSWQiLCJwYXJlbnRGb2xkZXJJZCIsIm1vdmVGaWxlcyIsImZpbGVzSWQiLCJmb2xkZXJTaXplIiwiZm9sZGVySWQiLCJzaXplQmVmb3JlIiwiZ2V0U3BvbnNvcnNoaXBMaW5rIiwiYmFja1VybCIsInBhdGgiLCJidG9hIiwiZ2V0QmFzZVVybCIsImdyYXBoY2RuIiwicHJvY2VzcyIsIk5PREVfRU5WIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBR0EsU0FBU0EsU0FBVCxRQUEwQixNQUExQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0Isb0JBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixZQUEzQjtBQUdBLFNBQVNDLFVBQVQsUUFBMkIscUJBQTNCO0FBUUEsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxTQUFTQyxhQUFULFFBQThCLGtCQUE5Qjs7QUFzTEEsU0FBU0Msc0JBQVQsQ0FBZ0NDLENBQWhDLEVBQXVFO0FBQ3JFLHlDQUNLQSxDQURMO0FBRUVDLElBQUFBLG1CQUFtQixrQ0FDZEQsQ0FBQyxDQUFDQyxtQkFEWTtBQUVqQkMsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNDLG1CQUFGLENBQXNCQyxLQUZaO0FBR2pCQyxNQUFBQSxnQkFBZ0IsRUFBRUgsQ0FBQyxDQUFDQyxtQkFBRixDQUNmRSxnQkFKYztBQUtqQkMsTUFBQUEsV0FBVyxFQUFFSixDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUF0QixHQUNULElBQUlDLElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkcsV0FBL0IsQ0FEUyxHQUVULElBUGE7QUFRakJFLE1BQUFBLFNBQVMsRUFBRU4sQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBdEIsR0FDUCxJQUFJRCxJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JLLFNBQS9CLENBRE8sR0FF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SSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Q3BELGFBQWEsQ0FBQ21ELFVBQVUsQ0FBQ3dILFVBQVgsQ0FBc0J0SCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmltcG9ydCB0eXBlIHsgRG93bmxvYWRQcm9ncmVzcyBhcyBETFByb2dyZXNzIH0gZnJvbSBcImt5XCI7XG5pbXBvcnQgdHlwZSB7IERvY3VtZW50IH0gZnJvbSBcImJzb25cIjtcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBnZXRMaW5rIH0gZnJvbSBcIkBzZWNyZWN5L2xpYi11dGlsc1wiO1xuaW1wb3J0IHsgdXNlcnNDYWNoZSB9IGZyb20gXCIuL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJTZXNzaW9uIH0gZnJvbSBcIi4vY2xpZW50L3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9jbGllbnQvaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCIuL2NsaWVudC9zdG9yYWdlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExhbmcsXG4gIFBheUlucHV0VHlwZSxcbiAgUGxhbktpbmQsXG4gIFRodW5kZXIsXG4gIFVzZXJSb2xlXG59IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IFNlbGVjdG9yIH0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlVGh1bmRlciB9IGZyb20gXCIuL1pldXNUaHVuZGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEVycm9yQWNjZXNzRGVuaWVkLFxuICBFcnJvckxpbWl0LFxuICBFcnJvck5vdEZvdW5kLFxuICBFcnJvck5vdEV4aXN0LFxuICBFcnJvckxhbmdOb3RFeGlzdCxcbiAgRXJyb3JCYXNpY1xufSBmcm9tIFwiLi9lcnJvci5qc1wiO1xuXG5leHBvcnQgdHlwZSBTdWNjZXNzUmVzcG9uc2U8VD4gPSB7XG4gIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCI7XG4gIGRhdGE6IFQ7XG59O1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9yKFwiUXVlcnlcIikoe1xuICAgIHVzZXI6IFtcbiAgICAgIHsgdXNlcklkIH0sXG4gICAgICB7XG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIGZpZWxkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgICAgcHVibGljS2V5OiB3aXRoUHVibGljS2V5ID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWUsXG4gICAgICAgICAgICByb2xlOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgICAgbGFzdExvZ2luOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHVzZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZ0ZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcIm9iamVjdFwiO1xuICBpc0FycmF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0tleT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwREJDb25maWcgPSB7XG4gIGZpZWxkczogQXBwREJDb25maWdGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgRmFxSXRlbSA9IHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgYW5zd2VyOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCbG9nSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYmxvZ0lkOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGF1dGhvcjogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGRhdGU6IERhdGU7XG4gIGltYWdlOiBzdHJpbmc7XG4gIGltYWdlQWx0OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFVzZXJCYXNlID0ge1xuICBlbWFpbDogc3RyaW5nO1xuICBwaG9uZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICByb2xlOiBVc2VyUm9sZTtcbiAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGxhc3RMb2dpbjogRGF0ZTtcbiAgbGFuZzogTGFuZztcbn07XG5cbnR5cGUgV2l0aFB1YmxpY0tleSA9IHsgd2l0aFB1YmxpY0tleT86IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVXNlcjxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+ID0gVCBleHRlbmRzIHtcbiAgd2l0aFB1YmxpY0tleTogdHJ1ZTtcbn1cbiAgPyBVc2VyQmFzZSAmIHsgcHVibGljS2V5OiBzdHJpbmcgfVxuICA6IFVzZXJCYXNlO1xuXG50eXBlIENsYXNzR2V0VXNlclBhcmFtcyA9IFdpdGhQdWJsaWNLZXkgJiB7XG4gIHVzZXJJZD86IHN0cmluZztcbn07XG50eXBlIEdldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG59O1xuXG50eXBlIFN0YXRpY0dldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGVudjogU2VjcmVjeUVudjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFVzZXI8VSBleHRlbmRzIFdpdGhQdWJsaWNLZXk+KFxuICBwYXJhbXM6IEdldFVzZXJQYXJhbXNcbik6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFVzZXI8VT4+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRVc2VyU2VsZWN0b3IocGFyYW1zLnVzZXJJZCwgcGFyYW1zLndpdGhQdWJsaWNLZXkpO1xuICBjb25zdCB7IHVzZXI6IHVzZXJSZXNwb25zZSB9ID0gYXdhaXQgcGFyYW1zLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICB1c2VyOiBzZWxlY3RvclxuICB9KTtcblxuICBpZiAoIXVzZXJSZXNwb25zZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHVzZXJSZXNwb25zZS5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgIHJldHVybiB1c2VyUmVzcG9uc2U7XG4gIH1cblxuICBpZiAoIXVzZXJSZXNwb25zZS51c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgZGF0YToge1xuICAgICAgLi4udXNlclJlc3BvbnNlLnVzZXIsXG4gICAgICBsYXN0TG9naW46IG5ldyBEYXRlKHVzZXJSZXNwb25zZS51c2VyLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVzZXJSZXNwb25zZS51c2VyLmRlbGV0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHVzZXJSZXNwb25zZS51c2VyLmRlbGV0ZWRBdClcbiAgICAgICAgOiBudWxsXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDbG91ZExpbWl0cyA9IHtcbiAgY291bnQ6IGJpZ2ludDtcbiAgbWF4Q291bnQ6IGJpZ2ludCB8IG51bGw7XG4gIHNpemU6IGJpZ2ludDtcbiAgbWF4U2l6ZTogYmlnaW50IHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHNWYWx1ZXMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBmaWxlU2l6ZTogYmlnaW50O1xuICBtYXhGaWxlU2l6ZTogYmlnaW50IHwgbnVsbDtcbiAgZmlsZUNvdW50OiBiaWdpbnQ7XG4gIG1heEZpbGVDb3VudDogYmlnaW50IHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5TGltaXRzID0ge1xuICBjbG91ZDogQ2xvdWRMaW1pdHM7XG4gIG1haWw6IHtcbiAgICBzZW50OiBNYWlsTGltaXRzVmFsdWVzO1xuICAgIHJlY2VpdmVkOiBNYWlsTGltaXRzVmFsdWVzO1xuICB9O1xufTtcblxuZXhwb3J0IGNsYXNzIEJhc2VDbGllbnQge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGdldEJhc2VVcmwgPSAoXG4gICAgZW52OiBTZWNyZWN5RW52ID0gXCJwcm9kXCIsXG4gICAgZ3JhcGhjZG4gPSB0cnVlXG4gICk6IHN0cmluZyA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIikge1xuICAgICAgcmV0dXJuIFwiaHR0cDovL2xvY2FsaG9zdDo0MDAwL2dyYXBocWxcIjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGVudikge1xuICAgICAgY2FzZSBcInByb2RcIjpcbiAgICAgICAgcmV0dXJuIGdyYXBoY2RuXG4gICAgICAgICAgPyBcImh0dHBzOi8vc2VjcmVjeS5ncmFwaGNkbi5hcHBcIlxuICAgICAgICAgIDogXCJodHRwczovL2FwaS5zZWNyZWN5Lm1lL2dyYXBocWxcIjtcbiAgICAgIGNhc2UgXCJzdGFnaW5nXCI6XG4gICAgICAgIHJldHVybiBcImh0dHBzOi8vYXBpLnN0YWdpbmcuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwiZGV2XCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5kZXYuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9nZXRCYXNlQ2xpZW50ID0gKFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPiA9PlxuICAgIGNyZWF0ZVRodW5kZXIoQmFzZUNsaWVudC5nZXRCYXNlVXJsKGVudiksIHNlc3Npb24pO1xuXG4gIHByb3RlY3RlZCBjbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+O1xuXG4gIHB1YmxpYyBzZXNzaW9uSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzZXNzaW9uOiBzdHJpbmcsIGVudjogU2VjcmVjeUVudikge1xuICAgIHRoaXMuc2Vzc2lvbklkID0gc2Vzc2lvbjtcbiAgICB0aGlzLmNsaWVudCA9IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNlc3Npb25zKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFVzZXJTZXNzaW9uW10+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZmllbGQ6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFVzZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICBzZXNzaW9uczoge1xuICAgICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VyQWdlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgICAgY2l0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGlwOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY2l0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgICAgICB1c2VyQXBwOiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcDoge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYXRhLnVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB1c2VyUmVzcG9uc2UgPSBkYXRhLnVzZXI7XG4gICAgaWYgKHVzZXJSZXNwb25zZS5fX3R5cGVuYW1lID09PSBcIlVzZXJSZXNwb25zZVwiKSB7XG4gICAgICBpZiAoIXVzZXJSZXNwb25zZS51c2VyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2Vzc2lvbnM6IFVzZXJTZXNzaW9uW10gPVxuICAgICAgICB1c2VyUmVzcG9uc2UudXNlci5zZXNzaW9ucy5tYXAocyA9PiAoe1xuICAgICAgICAgIGlkOiBzLmlkLFxuICAgICAgICAgIGlwOiBzLmlwLFxuICAgICAgICAgIGNpdHk6IHMuY2l0eSxcbiAgICAgICAgICBjb3VudHJ5OiBzLmNvdW50cnksXG4gICAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB1c2VyQWdlbnQ6IHMudXNlckFnZW50LFxuICAgICAgICAgIGFwcFNlc3Npb25zOiBzLmFwcFNlc3Npb25zLm1hcChhID0+ICh7XG4gICAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICAgIGlwOiBhLmlwLFxuICAgICAgICAgICAgY2l0eTogYS5jaXR5LFxuICAgICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiBhLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKGEubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVzZXJBZ2VudDogYS51c2VyQWdlbnQsXG4gICAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICAgIH0pKVxuICAgICAgICB9KSkgPz8gW107XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgICBkYXRhOiBzZXNzaW9uc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlclJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbG9nb3V0KHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgY29uc3QgbG9jYWwgPSBnZXRTdG9yYWdlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBnZXRTdG9yYWdlKHRydWUpO1xuICAgICAgbG9jYWwuand0LmNsZWFyKCk7XG4gICAgICBsb2NhbC51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcFNlc3Npb24uY2xlYXIoKTtcbiAgICAgIHNlc3Npb24uand0LmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLnVzZXJBcHBLZXlzLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICB1c2Vyc0NhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgICAgbG9nb3V0OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uSWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiLi4ub24gTG9nb3V0UmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBsb2dvdXQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy9cbiAgICB9XG4gIH1cblxuICBhc3luYyBtZTxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+KFxuICAgIHBhcmFtcz86IFRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VXNlcjxUPj4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnVzZXIocGFyYW1zIHx8ICh7IHdpdGhQdWJsaWNLZXk6IHRydWUgfSBhcyBUKSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdXNlcjxUIGV4dGVuZHMgU3RhdGljR2V0VXNlclBhcmFtcz4oXG4gICAgcGFyYW1zOiBULFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VXNlcjxUPj4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5fZ2V0QmFzZUNsaWVudChwYXJhbXMuZW52LCBzZXNzaW9uSWQpLFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVzZXIuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH1cblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmRhdGEuaWQsIHVzZXIuZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyB1c2VyPFQgZXh0ZW5kcyBDbGFzc0dldFVzZXJQYXJhbXM+KFxuICAgIHBhcmFtczogVFxuICApOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxVc2VyPFQ+PiB8IEVycm9yTm90Rm91bmQgfCBudWxsPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IGdldFVzZXI8VD4oe1xuICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgIHVzZXJJZDogcGFyYW1zLnVzZXJJZCxcbiAgICAgIHdpdGhQdWJsaWNLZXk6IHBhcmFtcy53aXRoUHVibGljS2V5XG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgdXNlcnNDYWNoZS5zZXQodXNlci5kYXRhLmlkLCB1c2VyLmRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUHJvZmlsZSh7XG4gICAgZmlyc3RuYW1lLFxuICAgIGxhc3RuYW1lLFxuICAgIGxhbmdcbiAgfToge1xuICAgIGZpcnN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYXN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYW5nOiBMYW5nIHwgbnVsbDtcbiAgfSk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFVzZXI+IHwgRXJyb3JOb3RGb3VuZCB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVwZGF0ZVByb2ZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVcGRhdGVQcm9maWxlUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGU6IHtcbiAgICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgIGxhbmc6IHRydWUsXG4gICAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgICAgICAgcm9sZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXBkYXRlUHJvZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVByb2ZpbGUuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gdXBkYXRlUHJvZmlsZTtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlUHJvZmlsZS5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIHVwZGF0ZVByb2ZpbGU7XG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBlbWFpbDogdXBkYXRlUHJvZmlsZS51cGRhdGVQcm9maWxlLmVtYWlsLFxuICAgICAgICBmaXJzdG5hbWU6IHVwZGF0ZVByb2ZpbGUudXBkYXRlUHJvZmlsZS5maXJzdG5hbWUsXG4gICAgICAgIGlkOiB1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUuaWQsXG4gICAgICAgIGxhbmc6IHVwZGF0ZVByb2ZpbGUudXBkYXRlUHJvZmlsZS5sYW5nLFxuICAgICAgICBsYXN0TG9naW46IG5ldyBEYXRlKHVwZGF0ZVByb2ZpbGUudXBkYXRlUHJvZmlsZS5sYXN0TG9naW4pLFxuICAgICAgICBsYXN0bmFtZTogdXBkYXRlUHJvZmlsZS51cGRhdGVQcm9maWxlLmxhc3RuYW1lLFxuICAgICAgICBwaG9uZTogdXBkYXRlUHJvZmlsZS51cGRhdGVQcm9maWxlLnBob25lLFxuICAgICAgICByb2xlOiB1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUucm9sZSxcbiAgICAgICAgZGVsZXRlZEF0OiB1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgICAgPyBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0KVxuICAgICAgICAgIDogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8UGxhbltdPiB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIHBsYW5zOiB7XG4gICAgICAgIFwiLi4ub24gUGxhblJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIHBsYW46IHtcbiAgICAgICAgICAgIGtpbmQ6IHRydWUsXG4gICAgICAgICAgICBjb2RlczogdHJ1ZSxcbiAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICBkb3dubG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgZG93bmxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgdXBsb2FkQmFuZHdpZHRoOiB0cnVlLFxuICAgICAgICAgICAgICB1cGxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVjZWl2ZWRNYWlsczoge1xuICAgICAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2VudE1haWxzOiB7XG4gICAgICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgICAgIGhhcmRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXBsYW5zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHBsYW5zLnBsYW5cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgcGF5KFxuICAgIHBsYW5Db2RlOiBTZWNyZWN5UGxhbnNDb2RlcyxcbiAgICBpbnB1dDogUGF5SW5wdXQsXG4gICAgYXV0b1JlbmV3PzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheSB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBwYXk6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0LFxuICAgICAgICAgIHBsYW5Db2RlLFxuICAgICAgICAgIGF1dG9SZW5ld1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBQYXlSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgcGF5OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXBheSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHBheS5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBwYXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBwYXkucGF5ID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbFBheW1lbnQoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyBjYW5jZWxQYXltZW50IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIGNhbmNlbFBheW1lbnQ6IHtcbiAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gQ2FuY2VsUGF5bWVudFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbFBheW1lbnQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFjYW5jZWxQYXltZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY2FuY2VsUGF5bWVudC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBjYW5jZWxQYXltZW50O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogY2FuY2VsUGF5bWVudC5jYW5jZWxQYXltZW50ID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxQYXltZW50SW5mb3M+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgcGF5bWVudEluZm9zIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHBheW1lbnRJbmZvczoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBQYXltZW50SW5mb3NSZXNwb25zZVwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBwYXltZW50SW5mb3M6IHtcbiAgICAgICAgICAgIGhvc3RlZFVybDogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgYXV0b3JlbmV3OiB0cnVlLFxuICAgICAgICAgICAgICBhY3RpdmF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VycmVudFBlcmlvZEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY2FuY2VsZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICBleHBpcmVzQXQ6IHRydWUsXG4gICAgICAgICAgICAgIHBhdXNlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICB0cmlhbEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgdHJpYWxTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgICAgIHVwZGF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgc3RhdGU6IHRydWUsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHRydWUsXG4gICAgICAgICAgICAgIHBsYW46IHRydWUsXG4gICAgICAgICAgICAgIHBsYW5Db2RlOiB0cnVlLFxuICAgICAgICAgICAgICB0b3RhbDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGludm9pY2VzOiB7XG4gICAgICAgICAgICAgIHBkZjogdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZHVlOiB0cnVlLFxuICAgICAgICAgICAgICBzdGF0dXM6IHRydWUsXG4gICAgICAgICAgICAgIHRvdGFsOiB0cnVlLFxuICAgICAgICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBjdXJyZW5jeTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFwYXltZW50SW5mb3MpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChwYXltZW50SW5mb3MuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gcGF5bWVudEluZm9zO1xuICAgIH1cblxuICAgIGlmICghcGF5bWVudEluZm9zLnBheW1lbnRJbmZvcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGludGVybmFsVG9QYXltZW50SW5mb3MocGF5bWVudEluZm9zLnBheW1lbnRJbmZvcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbGltaXRzKCk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8UXVlcnlMaW1pdHM+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JOb3RFeGlzdFxuICAgIHwgRXJyb3JMaW1pdFxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IGxpbWl0cyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBsaW1pdHM6IHtcbiAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JMaW1pdFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gUXVlcnlMaW1pdHNcIjoge1xuICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWFpbDoge1xuICAgICAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIG1heENvdW50OiB0cnVlLFxuICAgICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4RmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghbGltaXRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTGltaXRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsb3VkLCBtYWlsIH0gPSBsaW1pdHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KGNsb3VkLmNvdW50KSxcbiAgICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgICAgbWF4Q291bnQ6IGNsb3VkLm1heENvdW50ID8gQmlnSW50KGNsb3VkLm1heENvdW50KSA6IG51bGwsXG4gICAgICAgICAgbWF4U2l6ZTogY2xvdWQubWF4U2l6ZSA/IEJpZ0ludChjbG91ZC5tYXhTaXplKSA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgbWFpbDoge1xuICAgICAgICAgIHJlY2VpdmVkOiB7XG4gICAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgICAgbWF4Q291bnQ6IG1haWwucmVjZWl2ZWQubWF4Q291bnRcbiAgICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5yZWNlaXZlZC5tYXhDb3VudClcbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgZmlsZUNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlQ291bnQpLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiBtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudFxuICAgICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnJlY2VpdmVkLmZpbGVTaXplKSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemUpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgY291bnQ6IEJpZ0ludChtYWlsLnNlbnQuY291bnQpLFxuICAgICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwuc2VudC5maWxlQ291bnQpLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiBtYWlsLnNlbnQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIGZpbGVTaXplOiBCaWdJbnQobWFpbC5zZW50LmZpbGVTaXplKSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVTaXplKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ29kRmF0aGVyQW5kQ2hpbGRyZW4oKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICAgICAgICAgIHBob25lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ29kRmF0aGVyOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVzZXIuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBnb2RDaGlsZHJlbjogdXNlci5nb2RDaGlsZHJlbixcbiAgICAgICAgZ29kRmF0aGVyOiB1c2VyLmdvZEZhdGhlclxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdXBkYXRlQXBwREJDb25maWcoe1xuICAgIGFwcENvZGUsXG4gICAgY29uZmlnLFxuICAgIGVudixcbiAgICBzZXNzaW9uSWRcbiAgfToge1xuICAgIGFwcENvZGU6IHN0cmluZztcbiAgICBjb25maWc6IEFwcERCQ29uZmlnO1xuICAgIGVudjogU2VjcmVjeUVudjtcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8QXBwREJDb25maWc+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsPiB7XG4gICAgY29uc3QgeyBkYkNvbmZpZ011dGF0aW9uIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRiQ29uZmlnTXV0YXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGUsXG4gICAgICAgICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeShjb25maWcpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiQ29uZmlnTXV0YXRpb25SZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGJDb25maWdNdXRhdGlvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYkNvbmZpZ011dGF0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWdNdXRhdGlvbi5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZ011dGF0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJDb25maWdNdXRhdGlvbi5kYkNvbmZpZ011dGF0aW9uXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRBcHBEQkNvbmZpZyhcbiAgICBhcHBDb2RlOiBzdHJpbmcsXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxcbiAgICB8IFN1Y2Nlc3NSZXNwb25zZTxBcHBEQkNvbmZpZz5cbiAgICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gICAgfCBFcnJvck5vdEZvdW5kXG4gICAgfCBFcnJvck5vdEV4aXN0XG4gICAgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJDb25maWcgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApKFwicXVlcnlcIikoe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiQ29uZmlnUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJDb25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYkNvbmZpZy5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWcuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWcuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiQ29uZmlnLmpzb25cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEZBUSh7XG4gICAgbGFuZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBsYW5nPzogTGFuZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPEZhcUl0ZW1bXT4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZhcSB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkoXCJxdWVyeVwiKSh7XG4gICAgICBmYXE6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRmFxUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGZhcToge1xuICAgICAgICAgICAgICBhbnN3ZXI6IHRydWUsXG4gICAgICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgICAgICBxdWVzdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFmYXEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChmYXEuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZmFxO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZmFxLmZhcVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxCbG9nSXRlbVtdPiB8IEVycm9yTGFuZ05vdEV4aXN0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgYmxvZyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkoXCJxdWVyeVwiKSh7XG4gICAgICBibG9nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYW5nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTGFuZ05vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEJsb2dSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgYmxvZ0l0ZW1zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBibG9nSWQ6IHRydWUsXG4gICAgICAgICAgICAgIGF1dGhvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgYm9keTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICAgICAgICAgIGltYWdlQWx0OiB0cnVlLFxuICAgICAgICAgICAgICBzdW1tYXJ5OiB0cnVlLFxuICAgICAgICAgICAgICB0aXRsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgb3JkZXI6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghYmxvZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGJsb2cuX190eXBlbmFtZSA9PT0gXCJFcnJvckxhbmdOb3RFeGlzdFwiKSB7XG4gICAgICByZXR1cm4gYmxvZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGJsb2cuYmxvZ0l0ZW1zLm1hcChiID0+ICh7IC4uLmIsIGRhdGU6IG5ldyBEYXRlKGIuZGF0ZSkgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydFVzZXIoXG4gICAgcmVwb3J0ZWRVc2VySWQ6IHN0cmluZyxcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFNlbmRSZXBvcnQ+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvck5vdEZvdW5kIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHNlbmRSZXBvcnQgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgc2VuZFJlcG9ydDogW1xuICAgICAgICB7XG4gICAgICAgICAgcmVwb3J0ZWRVc2VySWQsXG4gICAgICAgICAgY3VzdG9tTWVzc2FnZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFNlbmRSZXBvcnRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgc2VuZFJlcG9ydDoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VzdG9tTWVzc2FnZTogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZXBvcnRlZFVzZXI6IHtcbiAgICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFzZW5kUmVwb3J0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VuZFJlcG9ydC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICAgIH1cblxuICAgIGlmIChzZW5kUmVwb3J0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gc2VuZFJlcG9ydDtcbiAgICB9XG5cbiAgICBpZiAoIXNlbmRSZXBvcnQuc2VuZFJlcG9ydCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBzZW5kUmVwb3J0LnNlbmRSZXBvcnRcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGRlbGV0ZVVzZXIgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApKFwibXV0YXRpb25cIikoe1xuICAgICAgZGVsZXRlVXNlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZVVzZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlVXNlcjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkZWxldGVVc2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlVXNlci5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkZWxldGVVc2VyO1xuICAgIH1cblxuICAgIGlmICghZGVsZXRlVXNlci5kZWxldGVVc2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRlbGV0ZVVzZXIuZGVsZXRlVXNlclxuICAgIH07XG4gIH1cblxuICBhc3luYyBkYkdldDxVPih7XG4gICAgZmllbGQsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFxuICAgIHwgU3VjY2Vzc1Jlc3BvbnNlPFU+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JOb3RFeGlzdFxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IGRiR2V0IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIGRiR2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICB1c2VySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiR2V0UmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJHZXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiR2V0Lmpzb25cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGJTZXQ8VCBleHRlbmRzIFVzZXJEYXRhLCBVIGV4dGVuZHMgRG9jdW1lbnQ+KHtcbiAgICB2YWx1ZSxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIHZhbHVlOiBVO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxUPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGluY2x1ZGluZyBmaWVsZHMgeW91IHdhbnQgdG8gdXBkYXRlLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYlNldCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJTZXRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGJTZXQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJTZXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYlNldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoIWRiU2V0LmRiU2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiU2V0LmRiU2V0LnJlc1xuICAgIH07XG4gIH1cblxuICBhc3luYyBkYlNlYXJjaDxUPih7XG4gICAgc2VhcmNoLFxuICAgIGZpZWxkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8VFtdPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IEVycm9yTm90RXhpc3QgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJTZWFyY2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZGJTZWFyY2g6IFtcbiAgICAgICAge1xuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICBmaWVsZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90RXhpc3RcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJTZWFyY2hSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAganNvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYlNlYXJjaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRiU2VhcmNoLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJTZWFyY2guanNvblxuICAgIH07XG4gIH1cblxuICBhc3luYyBkZWxldGVGb2xkZXIoe1xuICAgIGlkXG4gIH06IHtcbiAgICBpZDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvck5vdEV4aXN0IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGVsZXRlRm9sZGVyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZUZvbGRlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEZWxldGVGb2xkZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlRm9sZGVyOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRlbGV0ZUZvbGRlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRlbGV0ZUZvbGRlci5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGRlbGV0ZUZvbGRlcjtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlRm9sZGVyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRlbGV0ZUZvbGRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRlbGV0ZUZvbGRlci5kZWxldGVGb2xkZXIgPz8gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbW92ZUZvbGRlcnMoe1xuICAgIGZvbGRlcnNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZm9sZGVyc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxib29sZWFuPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbW92ZUZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgbW92ZUZvbGRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcnNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBNb3ZlRm9sZGVyc1Jlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtb3ZlRm9sZGVyczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFtb3ZlRm9sZGVycykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1vdmVGb2xkZXJzLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIG1vdmVGb2xkZXJzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogbW92ZUZvbGRlcnMubW92ZUZvbGRlcnMgPz8gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbW92ZUZpbGVzKHtcbiAgICBmaWxlc0lkLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBmaWxlc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxib29sZWFuPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbW92ZUZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBNb3ZlRmlsZXNSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbW92ZUZpbGVzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIW1vdmVGaWxlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1vdmVGaWxlcy5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBtb3ZlRmlsZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBtb3ZlRmlsZXMubW92ZUZpbGVzID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZvbGRlclNpemUoe1xuICAgIGZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxGb2xkZXJTaXplPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgZm9sZGVyU2l6ZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBmb2xkZXJTaXplOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBGb2xkZXJTaXplUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgICBzaXplQmVmb3JlOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZvbGRlclNpemUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChmb2xkZXJTaXplLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGZvbGRlclNpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHNpemU6IEJpZ0ludChmb2xkZXJTaXplLnNpemUpLFxuICAgICAgICBzaXplQmVmb3JlOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplQmVmb3JlKVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRTcG9uc29yc2hpcExpbmsoe1xuICAgIGJhY2tVcmxcbiAgfToge1xuICAgIGJhY2tVcmw6IHN0cmluZztcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgICBjb25zdCBtZSA9IGF3YWl0IHRoaXMubWUoeyB3aXRoUHVibGljS2V5OiBmYWxzZSB9KTtcblxuICAgIGlmICghbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChtZS5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldExpbmsoe1xuICAgICAgYXBwOiBcImF1dGhcIixcbiAgICAgIHBhdGg6IGAvc2lnbi11cD9nZj0ke2J0b2EobWUuZGF0YS5lbWFpbCl9JmF1PSR7YnRvYShiYWNrVXJsKX1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==