info-library 2.14.13-beta.4 → 2.14.13-beta.6
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/controls/grid/grid.component.d.ts +16 -3
- package/controls/paginator/paginator.component.d.ts +5 -2
- package/esm2020/controls/grid/grid.component.mjs +231 -65
- package/esm2020/controls/paginator/paginator.component.mjs +22 -4
- package/esm2020/layouts/dialog/dialog.component.mjs +24 -7
- package/esm2020/layouts/modal/modal.component.mjs +14 -5
- package/esm2020/layouts/sidebar/sidebar.component.mjs +4 -4
- package/esm2020/layouts/topbar/topbar.component.mjs +6 -6
- package/esm2020/service/authentication.service.mjs +40 -29
- package/fesm2015/info-library.mjs +337 -111
- package/fesm2015/info-library.mjs.map +1 -1
- package/fesm2020/info-library.mjs +331 -111
- package/fesm2020/info-library.mjs.map +1 -1
- package/layouts/dialog/dialog.component.d.ts +3 -3
- package/layouts/modal/modal.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, EventEmitter, Output, ViewChild, ChangeDetectorRef, ContentChildren, Renderer2, ElementRef, Inject } from "@angular/core";
|
|
1
|
+
import { Component, Input, EventEmitter, Output, ViewChild, ChangeDetectorRef, ContentChildren, Renderer2, ElementRef, Inject, HostListener } from "@angular/core";
|
|
2
2
|
import { InfoDataService } from "../../service/data.service";
|
|
3
3
|
import { InfoFormPropModel } from "../../model/form-prop.model";
|
|
4
4
|
import { InfoPaginatorComponent } from "../paginator/paginator.component";
|
|
@@ -81,7 +81,7 @@ function InfoGridComponent_info_pagebar_0_ng_container_2_Template(rf, ctx) { if
|
|
|
81
81
|
function InfoGridComponent_info_pagebar_0_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
82
82
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
83
83
|
i0.ɵɵelementStart(0, "button", 19);
|
|
84
|
-
i0.ɵɵlistener("click", function InfoGridComponent_info_pagebar_0_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.
|
|
84
|
+
i0.ɵɵlistener("click", function InfoGridComponent_info_pagebar_0_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.find()); });
|
|
85
85
|
i0.ɵɵelementStart(1, "mat-icon", 20);
|
|
86
86
|
i0.ɵɵtext(2, "search");
|
|
87
87
|
i0.ɵɵelementEnd();
|
|
@@ -95,7 +95,7 @@ function InfoGridComponent_info_pagebar_0_button_3_Template(rf, ctx) { if (rf &
|
|
|
95
95
|
function InfoGridComponent_info_pagebar_0_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
96
96
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
97
97
|
i0.ɵɵelementStart(0, "button", 19);
|
|
98
|
-
i0.ɵɵlistener("click", function InfoGridComponent_info_pagebar_0_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.
|
|
98
|
+
i0.ɵɵlistener("click", function InfoGridComponent_info_pagebar_0_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.find()); });
|
|
99
99
|
i0.ɵɵelementStart(1, "mat-icon", 20);
|
|
100
100
|
i0.ɵɵtext(2, "search_off");
|
|
101
101
|
i0.ɵɵelementEnd();
|
|
@@ -383,7 +383,7 @@ function InfoGridComponent_table_10_tr_7_ng_container_2_ng_container_2_ng_contai
|
|
|
383
383
|
const mod_r55 = ctx_r89.$implicit;
|
|
384
384
|
const j_r56 = ctx_r89.index;
|
|
385
385
|
const ctx_r85 = i0.ɵɵnextContext(2);
|
|
386
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(5, _c5, ctx_r85.enabledexpand == true && mod_r55[col_r66].length > ctx_r85.limitcharacters, ctx_r85.colunasItensExpandidos[j_r56][i_r67]))("innerHTML", i0.ɵɵpipeBind2(1, 2, mod_r55[col_r66], ctx_r85.colunasTranslate[i_r67]) || "", i0.ɵɵsanitizeHtml);
|
|
386
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(5, _c5, ctx_r85.enabledexpand == true && mod_r55[col_r66].length > ctx_r85.limitcharacters, ctx_r85.enabledexpand && ctx_r85.colunasItensExpandidos[j_r56][i_r67]))("innerHTML", i0.ɵɵpipeBind2(1, 2, mod_r55[col_r66], ctx_r85.colunasTranslate[i_r67]) || "", i0.ɵɵsanitizeHtml);
|
|
387
387
|
} }
|
|
388
388
|
function InfoGridComponent_table_10_tr_7_ng_container_2_ng_container_2_ng_container_1_td_1_label_2_Template(rf, ctx) { if (rf & 1) {
|
|
389
389
|
i0.ɵɵelementStart(0, "label", 63);
|
|
@@ -398,7 +398,7 @@ function InfoGridComponent_table_10_tr_7_ng_container_2_ng_container_2_ng_contai
|
|
|
398
398
|
const mod_r55 = ctx_r91.$implicit;
|
|
399
399
|
const j_r56 = ctx_r91.index;
|
|
400
400
|
const ctx_r86 = i0.ɵɵnextContext(2);
|
|
401
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(5, _c5, ctx_r86.enabledexpand == true && mod_r55[col_r66].length > ctx_r86.limitcharacters, ctx_r86.colunasItensExpandidos[j_r56][i_r67]));
|
|
401
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(5, _c5, ctx_r86.enabledexpand == true && mod_r55[col_r66].length > ctx_r86.limitcharacters, ctx_r86.enabledexpand == true && ctx_r86.colunasItensExpandidos[j_r56][i_r67]));
|
|
402
402
|
i0.ɵɵadvance(1);
|
|
403
403
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 2, mod_r55[col_r66], ctx_r86.colunasHtml[i_r67]) || "");
|
|
404
404
|
} }
|
|
@@ -415,9 +415,9 @@ function InfoGridComponent_table_10_tr_7_ng_container_2_ng_container_2_ng_contai
|
|
|
415
415
|
const i_r67 = i0.ɵɵnextContext(4).index;
|
|
416
416
|
const j_r56 = i0.ɵɵnextContext().index;
|
|
417
417
|
const ctx_r87 = i0.ɵɵnextContext(2);
|
|
418
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c6, ctx_r87.colunasItensExpandidos[j_r56][i_r67]));
|
|
418
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c6, ctx_r87.enabledexpand == true && ctx_r87.colunasItensExpandidos[j_r56][i_r67]));
|
|
419
419
|
i0.ɵɵadvance(1);
|
|
420
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c7, ctx_r87.colunasItensExpandidos[j_r56][i_r67]));
|
|
420
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c7, ctx_r87.enabledexpand == true && ctx_r87.colunasItensExpandidos[j_r56][i_r67]));
|
|
421
421
|
} }
|
|
422
422
|
function InfoGridComponent_table_10_tr_7_ng_container_2_ng_container_2_ng_container_1_td_1_p_4_Template(rf, ctx) { if (rf & 1) {
|
|
423
423
|
i0.ɵɵelementStart(0, "p");
|
|
@@ -671,10 +671,7 @@ function InfoGridComponent_table_10_tr_7_ng_container_2_Template(rf, ctx) { if (
|
|
|
671
671
|
i0.ɵɵproperty("ngIf", mod_r55[col_r66] != null && mod_r55[col_r66] != undefined);
|
|
672
672
|
} }
|
|
673
673
|
function InfoGridComponent_table_10_tr_7_ng_container_3_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
674
|
-
|
|
675
|
-
i0.ɵɵelementStart(0, "button", 73);
|
|
676
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_3_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r135); const mod_r55 = i0.ɵɵnextContext(2).$implicit; const ctx_r133 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r133.access(mod_r55)); });
|
|
677
|
-
i0.ɵɵelementStart(1, "mat-icon");
|
|
674
|
+
i0.ɵɵelementStart(0, "button", 73)(1, "mat-icon");
|
|
678
675
|
i0.ɵɵtext(2);
|
|
679
676
|
i0.ɵɵelementEnd()();
|
|
680
677
|
} if (rf & 2) {
|
|
@@ -701,118 +698,118 @@ function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_a_1_Template(rf, ct
|
|
|
701
698
|
i0.ɵɵelementEnd()();
|
|
702
699
|
} if (rf & 2) {
|
|
703
700
|
const mod_r55 = i0.ɵɵnextContext(3).$implicit;
|
|
704
|
-
const
|
|
705
|
-
i0.ɵɵpropertyInterpolate("href",
|
|
701
|
+
const ctx_r134 = i0.ɵɵnextContext(2);
|
|
702
|
+
i0.ɵɵpropertyInterpolate("href", ctx_r134.templateurl.replace("{id}", mod_r55.Id), i0.ɵɵsanitizeUrl);
|
|
706
703
|
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "Abrir"));
|
|
707
704
|
} }
|
|
708
705
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_ng_container_2_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
709
|
-
const
|
|
706
|
+
const _r146 = i0.ɵɵgetCurrentView();
|
|
710
707
|
i0.ɵɵelementStart(0, "button", 80);
|
|
711
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_ng_container_2_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
708
|
+
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_ng_container_2_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r146); const b_r142 = i0.ɵɵnextContext().$implicit; const mod_r55 = i0.ɵɵnextContext(3).$implicit; const ctx_r144 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(b_r142.modalComponent != null ? ctx_r144.openCustomModal(b_r142.modalComponent, b_r142.widthModalComponent, mod_r55) : b_r142.api != null ? ctx_r144.eventButton(mod_r55, b_r142.api, b_r142.method, b_r142.confirm) : ctx_r144.navigateTo(b_r142.navigateTo, b_r142.passId, mod_r55.Id)); });
|
|
712
709
|
i0.ɵɵpipe(1, "translate");
|
|
713
710
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
714
711
|
i0.ɵɵtext(3);
|
|
715
712
|
i0.ɵɵelementEnd()();
|
|
716
713
|
} if (rf & 2) {
|
|
717
|
-
const
|
|
714
|
+
const b_r142 = i0.ɵɵnextContext().$implicit;
|
|
718
715
|
const mod_r55 = i0.ɵɵnextContext(3).$implicit;
|
|
719
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1,
|
|
716
|
+
i0.ɵɵproperty("matTooltipShowDelay", 800)("matTooltip", i0.ɵɵpipeBind1(1, 4, b_r142.label))("disabled", b_r142.disabledField && mod_r55[b_r142.disabledField] === true);
|
|
720
717
|
i0.ɵɵadvance(3);
|
|
721
|
-
i0.ɵɵtextInterpolate(
|
|
718
|
+
i0.ɵɵtextInterpolate(b_r142.icon);
|
|
722
719
|
} }
|
|
723
720
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
724
721
|
i0.ɵɵelementContainerStart(0);
|
|
725
|
-
i0.ɵɵtemplate(1, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_ng_container_2_button_1_Template, 4,
|
|
722
|
+
i0.ɵɵtemplate(1, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_ng_container_2_button_1_Template, 4, 6, "button", 78);
|
|
726
723
|
i0.ɵɵelementContainerEnd();
|
|
727
724
|
} if (rf & 2) {
|
|
728
|
-
const
|
|
725
|
+
const b_r142 = ctx.$implicit;
|
|
729
726
|
const mod_r55 = i0.ɵɵnextContext(3).$implicit;
|
|
730
727
|
i0.ɵɵadvance(1);
|
|
731
|
-
i0.ɵɵproperty("ngIf",
|
|
728
|
+
i0.ɵɵproperty("ngIf", b_r142.showOnlyClass == null || b_r142.showOnlyClass == mod_r55.Class);
|
|
732
729
|
} }
|
|
733
730
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
734
|
-
const
|
|
731
|
+
const _r153 = i0.ɵɵgetCurrentView();
|
|
735
732
|
i0.ɵɵelementStart(0, "button", 81);
|
|
736
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
733
|
+
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r153); const mod_r55 = i0.ɵɵnextContext(3).$implicit; const ctx_r151 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r151.download(mod_r55.Download)); });
|
|
737
734
|
i0.ɵɵpipe(1, "translate");
|
|
738
735
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
739
736
|
i0.ɵɵtext(3, "file_download");
|
|
740
737
|
i0.ɵɵelementEnd()();
|
|
741
738
|
} if (rf & 2) {
|
|
742
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1,
|
|
739
|
+
i0.ɵɵproperty("matTooltipShowDelay", 800)("matTooltip", i0.ɵɵpipeBind1(1, 2, "Download"));
|
|
743
740
|
} }
|
|
744
741
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
745
|
-
const
|
|
742
|
+
const _r156 = i0.ɵɵgetCurrentView();
|
|
746
743
|
i0.ɵɵelementStart(0, "button", 81);
|
|
747
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
744
|
+
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r156); const mod_r55 = i0.ɵɵnextContext(3).$implicit; const ctx_r154 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r154.detail(mod_r55)); });
|
|
748
745
|
i0.ɵɵpipe(1, "translate");
|
|
749
746
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
750
747
|
i0.ɵɵtext(3, "list");
|
|
751
748
|
i0.ɵɵelementEnd()();
|
|
752
749
|
} if (rf & 2) {
|
|
753
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1,
|
|
750
|
+
i0.ɵɵproperty("matTooltipShowDelay", 800)("matTooltip", i0.ɵɵpipeBind1(1, 2, "Detalhe"));
|
|
754
751
|
} }
|
|
755
752
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
756
|
-
const
|
|
753
|
+
const _r159 = i0.ɵɵgetCurrentView();
|
|
757
754
|
i0.ɵɵelementStart(0, "button", 80);
|
|
758
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
755
|
+
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r159); const mod_r55 = i0.ɵɵnextContext(3).$implicit; const ctx_r157 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r157.info(mod_r55 == null ? null : mod_r55.Info)); });
|
|
759
756
|
i0.ɵɵpipe(1, "translate");
|
|
760
757
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
761
758
|
i0.ɵɵtext(3, "info");
|
|
762
759
|
i0.ɵɵelementEnd()();
|
|
763
760
|
} if (rf & 2) {
|
|
764
761
|
const mod_r55 = i0.ɵɵnextContext(3).$implicit;
|
|
765
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1,
|
|
762
|
+
i0.ɵɵproperty("matTooltipShowDelay", 800)("matTooltip", i0.ɵɵpipeBind1(1, 3, "Informacao"))("disabled", (mod_r55 == null ? null : mod_r55.Info) == "");
|
|
766
763
|
} }
|
|
767
764
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
768
|
-
const
|
|
765
|
+
const _r163 = i0.ɵɵgetCurrentView();
|
|
769
766
|
i0.ɵɵelementStart(0, "button", 81);
|
|
770
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
767
|
+
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r163); const mod_r55 = i0.ɵɵnextContext(3).$implicit; const ctx_r161 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r161.delete(mod_r55)); });
|
|
771
768
|
i0.ɵɵpipe(1, "translate");
|
|
772
769
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
773
770
|
i0.ɵɵtext(3, "delete");
|
|
774
771
|
i0.ɵɵelementEnd()();
|
|
775
772
|
} if (rf & 2) {
|
|
776
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1,
|
|
773
|
+
i0.ɵɵproperty("matTooltipShowDelay", 800)("matTooltip", i0.ɵɵpipeBind1(1, 2, "Excluir"));
|
|
777
774
|
} }
|
|
778
775
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_7_Template(rf, ctx) { if (rf & 1) {
|
|
779
|
-
const
|
|
776
|
+
const _r166 = i0.ɵɵgetCurrentView();
|
|
780
777
|
i0.ɵɵelementStart(0, "button", 81);
|
|
781
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
778
|
+
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r166); const mod_r55 = i0.ɵɵnextContext(3).$implicit; const ctx_r164 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r164.edit(mod_r55)); });
|
|
782
779
|
i0.ɵɵpipe(1, "translate");
|
|
783
780
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
784
781
|
i0.ɵɵtext(3, "arrow_forward");
|
|
785
782
|
i0.ɵɵelementEnd()();
|
|
786
783
|
} if (rf & 2) {
|
|
787
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1,
|
|
784
|
+
i0.ɵɵproperty("matTooltipShowDelay", 800)("matTooltip", i0.ɵɵpipeBind1(1, 2, "Acessar"));
|
|
788
785
|
} }
|
|
789
786
|
function InfoGridComponent_table_10_tr_7_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
790
787
|
i0.ɵɵelementStart(0, "td", 75);
|
|
791
788
|
i0.ɵɵtemplate(1, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_a_1_Template, 4, 4, "a", 76);
|
|
792
789
|
i0.ɵɵtemplate(2, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_ng_container_2_Template, 2, 1, "ng-container", 18);
|
|
793
|
-
i0.ɵɵtemplate(3, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_3_Template, 4,
|
|
794
|
-
i0.ɵɵtemplate(4, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_4_Template, 4,
|
|
795
|
-
i0.ɵɵtemplate(5, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_5_Template, 4,
|
|
796
|
-
i0.ɵɵtemplate(6, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_6_Template, 4,
|
|
797
|
-
i0.ɵɵtemplate(7, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_7_Template, 4,
|
|
790
|
+
i0.ɵɵtemplate(3, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_3_Template, 4, 4, "button", 77);
|
|
791
|
+
i0.ɵɵtemplate(4, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_4_Template, 4, 4, "button", 77);
|
|
792
|
+
i0.ɵɵtemplate(5, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_5_Template, 4, 5, "button", 78);
|
|
793
|
+
i0.ɵɵtemplate(6, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_6_Template, 4, 4, "button", 77);
|
|
794
|
+
i0.ɵɵtemplate(7, InfoGridComponent_table_10_tr_7_ng_container_4_td_1_button_7_Template, 4, 4, "button", 77);
|
|
798
795
|
i0.ɵɵelementEnd();
|
|
799
796
|
} if (rf & 2) {
|
|
800
797
|
const mod_r55 = i0.ɵɵnextContext(2).$implicit;
|
|
801
|
-
const
|
|
798
|
+
const ctx_r133 = i0.ɵɵnextContext(2);
|
|
802
799
|
i0.ɵɵadvance(1);
|
|
803
|
-
i0.ɵɵproperty("ngIf",
|
|
800
|
+
i0.ɵɵproperty("ngIf", ctx_r133.templateurl != "");
|
|
804
801
|
i0.ɵɵadvance(1);
|
|
805
|
-
i0.ɵɵproperty("ngForOf",
|
|
802
|
+
i0.ɵɵproperty("ngForOf", ctx_r133.buttons);
|
|
806
803
|
i0.ɵɵadvance(1);
|
|
807
804
|
i0.ɵɵproperty("ngIf", mod_r55.Download != null);
|
|
808
805
|
i0.ɵɵadvance(1);
|
|
809
|
-
i0.ɵɵproperty("ngIf",
|
|
806
|
+
i0.ɵɵproperty("ngIf", ctx_r133.enableddetail);
|
|
810
807
|
i0.ɵɵadvance(1);
|
|
811
808
|
i0.ɵɵproperty("ngIf", (mod_r55 == null ? null : mod_r55.Info) != null);
|
|
812
809
|
i0.ɵɵadvance(1);
|
|
813
|
-
i0.ɵɵproperty("ngIf", (
|
|
810
|
+
i0.ɵɵproperty("ngIf", (ctx_r133.disabledcol == "" || mod_r55[ctx_r133.disabledcol] === true) && ctx_r133.enableddelete && ctx_r133.hasPermissionDelete && !mod_r55.HideDelete);
|
|
814
811
|
i0.ɵɵadvance(1);
|
|
815
|
-
i0.ɵɵproperty("ngIf", (
|
|
812
|
+
i0.ɵɵproperty("ngIf", (ctx_r133.disabledcol == "" || mod_r55[ctx_r133.disabledcol] === true) && ctx_r133.enablededit && ctx_r133.hasPermissionEdit || ctx_r133.enabledview);
|
|
816
813
|
} }
|
|
817
814
|
function InfoGridComponent_table_10_tr_7_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
818
815
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -824,11 +821,11 @@ function InfoGridComponent_table_10_tr_7_ng_container_4_Template(rf, ctx) { if (
|
|
|
824
821
|
i0.ɵɵadvance(1);
|
|
825
822
|
i0.ɵɵproperty("ngIf", ctx_r60.templateurl != "" || ctx_r60.buttons != null && ctx_r60.buttons.length > 0 || mod_r55.Download != null || ctx_r60.enableddetail || (mod_r55 == null ? null : mod_r55.Info) != null || ctx_r60.enabledview || (ctx_r60.disabledcol == "" || mod_r55[ctx_r60.disabledcol] === true) && ctx_r60.enablededit && ctx_r60.hasPermissionEdit || (ctx_r60.disabledcol == "" || mod_r55[ctx_r60.disabledcol] === true) && ctx_r60.enableddelete && ctx_r60.hasPermissionDelete);
|
|
826
823
|
} }
|
|
827
|
-
const _c9 = function (a0) { return { "default-color": a0 }; };
|
|
824
|
+
const _c9 = function (a0, a1) { return { "default-color": a0, "selected-row": a1 }; };
|
|
828
825
|
function InfoGridComponent_table_10_tr_7_Template(rf, ctx) { if (rf & 1) {
|
|
829
|
-
const
|
|
826
|
+
const _r170 = i0.ɵɵgetCurrentView();
|
|
830
827
|
i0.ɵɵelementStart(0, "tr", 48);
|
|
831
|
-
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_Template_tr_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
828
|
+
i0.ɵɵlistener("click", function InfoGridComponent_table_10_tr_7_Template_tr_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r170); const mod_r55 = restoredCtx.$implicit; const ctx_r169 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r169.access(mod_r55)); })("mouseenter", function InfoGridComponent_table_10_tr_7_Template_tr_mouseenter_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r170); const j_r56 = restoredCtx.index; const ctx_r171 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r171.overIndex = j_r56); });
|
|
832
829
|
i0.ɵɵtemplate(1, InfoGridComponent_table_10_tr_7_td_1_Template, 2, 1, "td", 7);
|
|
833
830
|
i0.ɵɵtemplate(2, InfoGridComponent_table_10_tr_7_ng_container_2_Template, 3, 2, "ng-container", 18);
|
|
834
831
|
i0.ɵɵtemplate(3, InfoGridComponent_table_10_tr_7_ng_container_3_Template, 3, 1, "ng-container", 7);
|
|
@@ -836,9 +833,10 @@ function InfoGridComponent_table_10_tr_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
836
833
|
i0.ɵɵelementEnd();
|
|
837
834
|
} if (rf & 2) {
|
|
838
835
|
const mod_r55 = ctx.$implicit;
|
|
836
|
+
const j_r56 = ctx.index;
|
|
839
837
|
const ctx_r42 = i0.ɵɵnextContext(2);
|
|
840
838
|
i0.ɵɵclassMap(mod_r55.Class);
|
|
841
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵ
|
|
839
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(7, _c9, !ctx_r42.enabledclassicons, j_r56 == ctx_r42.overIndex));
|
|
842
840
|
i0.ɵɵadvance(1);
|
|
843
841
|
i0.ɵɵproperty("ngIf", ctx_r42.enabledclassicons && (mod_r55 == null ? null : mod_r55.Icon) != null);
|
|
844
842
|
i0.ɵɵadvance(1);
|
|
@@ -851,13 +849,16 @@ function InfoGridComponent_table_10_tr_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
851
849
|
const _c10 = function (a0) { return { "min-height.px": a0 }; };
|
|
852
850
|
const _c11 = function (a0, a1) { return { "loading": a0, "clickaccess": a1 }; };
|
|
853
851
|
function InfoGridComponent_table_10_Template(rf, ctx) { if (rf & 1) {
|
|
854
|
-
|
|
852
|
+
const _r173 = i0.ɵɵgetCurrentView();
|
|
853
|
+
i0.ɵɵelementStart(0, "table", 33);
|
|
854
|
+
i0.ɵɵlistener("mouseleave", function InfoGridComponent_table_10_Template_table_mouseleave_0_listener() { i0.ɵɵrestoreView(_r173); const ctx_r172 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r172.overIndex = -1); });
|
|
855
|
+
i0.ɵɵelementStart(1, "thead")(2, "tr");
|
|
855
856
|
i0.ɵɵtemplate(3, InfoGridComponent_table_10_th_3_Template, 1, 0, "th", 34);
|
|
856
857
|
i0.ɵɵtemplate(4, InfoGridComponent_table_10_ng_container_4_Template, 3, 2, "ng-container", 18);
|
|
857
858
|
i0.ɵɵtemplate(5, InfoGridComponent_table_10_th_5_Template, 3, 2, "th", 35);
|
|
858
859
|
i0.ɵɵelementEnd()();
|
|
859
860
|
i0.ɵɵelementStart(6, "tbody", 36);
|
|
860
|
-
i0.ɵɵtemplate(7, InfoGridComponent_table_10_tr_7_Template, 5,
|
|
861
|
+
i0.ɵɵtemplate(7, InfoGridComponent_table_10_tr_7_Template, 5, 10, "tr", 37);
|
|
861
862
|
i0.ɵɵelementEnd()();
|
|
862
863
|
} if (rf & 2) {
|
|
863
864
|
const ctx_r5 = i0.ɵɵnextContext();
|
|
@@ -977,6 +978,10 @@ export class InfoGridComponent {
|
|
|
977
978
|
this.resultTitle = '';
|
|
978
979
|
this.enabledSearch = false;
|
|
979
980
|
this.searchModelReset = null;
|
|
981
|
+
this.disabledClick = false;
|
|
982
|
+
this.overIndex = -1;
|
|
983
|
+
this.overLastIndex = -1;
|
|
984
|
+
this.onaction = false;
|
|
980
985
|
this.showPagebar = false;
|
|
981
986
|
this.hasPermissionNew = false;
|
|
982
987
|
this.hasPermissionEdit = false;
|
|
@@ -1144,6 +1149,8 @@ export class InfoGridComponent {
|
|
|
1144
1149
|
}
|
|
1145
1150
|
}
|
|
1146
1151
|
setItensExpandidos() {
|
|
1152
|
+
if (!this.enabledexpand)
|
|
1153
|
+
return;
|
|
1147
1154
|
this.colunasItensExpandidos = [];
|
|
1148
1155
|
for (let i = 0; i < this.data?.length; i++) {
|
|
1149
1156
|
let row = [];
|
|
@@ -1174,6 +1181,7 @@ export class InfoGridComponent {
|
|
|
1174
1181
|
this._router.navigateByUrl(url);
|
|
1175
1182
|
}
|
|
1176
1183
|
openCustomModal(modalComponent, width, model = null) {
|
|
1184
|
+
this.disabledClick = true;
|
|
1177
1185
|
this._prop.set(InfoPageAction.None, model);
|
|
1178
1186
|
this.openModal(modalComponent, width);
|
|
1179
1187
|
}
|
|
@@ -1280,7 +1288,11 @@ export class InfoGridComponent {
|
|
|
1280
1288
|
else
|
|
1281
1289
|
this.getPaged();
|
|
1282
1290
|
}
|
|
1283
|
-
cancelSearch() {
|
|
1291
|
+
cancelSearch(e = null) {
|
|
1292
|
+
if (!this.enabledSearch || this.searchmodel == null || this.onaction)
|
|
1293
|
+
return;
|
|
1294
|
+
if (e)
|
|
1295
|
+
e.preventDefault();
|
|
1284
1296
|
Object.assign(this.searchmodel, this.searchModelReset);
|
|
1285
1297
|
if (!this.searchopened)
|
|
1286
1298
|
this.enabledSearch = false;
|
|
@@ -1292,7 +1304,12 @@ export class InfoGridComponent {
|
|
|
1292
1304
|
this.paginator.index = 0;
|
|
1293
1305
|
this.getData();
|
|
1294
1306
|
}
|
|
1295
|
-
add() {
|
|
1307
|
+
add(e = null) {
|
|
1308
|
+
if (this.onaction)
|
|
1309
|
+
return;
|
|
1310
|
+
if (e)
|
|
1311
|
+
e.preventDefault();
|
|
1312
|
+
this.overIndex = -1;
|
|
1296
1313
|
if (this.form != null) {
|
|
1297
1314
|
this._prop.set(InfoPageAction.New, this.defaultnewobject);
|
|
1298
1315
|
this.openModal();
|
|
@@ -1314,14 +1331,22 @@ export class InfoGridComponent {
|
|
|
1314
1331
|
this.colunasItensExpandidos[linha][coluna] = !this.colunasItensExpandidos[linha][coluna];
|
|
1315
1332
|
}
|
|
1316
1333
|
access(model) {
|
|
1317
|
-
if (this.
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
else
|
|
1321
|
-
this.edit(model);
|
|
1334
|
+
if (this.disabledClick) {
|
|
1335
|
+
this.disabledClick = false;
|
|
1336
|
+
return;
|
|
1322
1337
|
}
|
|
1338
|
+
//if (this.enabledclickaccess){
|
|
1339
|
+
if (this.enabledclickevent)
|
|
1340
|
+
this.onview.emit(model);
|
|
1341
|
+
else
|
|
1342
|
+
this.edit(model, false);
|
|
1343
|
+
//}
|
|
1323
1344
|
}
|
|
1324
1345
|
view(model) {
|
|
1346
|
+
this.disabledClick = true;
|
|
1347
|
+
this.onaction = true;
|
|
1348
|
+
this.overLastIndex = this.overIndex;
|
|
1349
|
+
this.overIndex = -1;
|
|
1325
1350
|
if (this.form != null) {
|
|
1326
1351
|
this._prop.set(InfoPageAction.View, model);
|
|
1327
1352
|
this.openModal();
|
|
@@ -1335,7 +1360,11 @@ export class InfoGridComponent {
|
|
|
1335
1360
|
}
|
|
1336
1361
|
this.onview.emit(model);
|
|
1337
1362
|
}
|
|
1338
|
-
edit(model) {
|
|
1363
|
+
edit(model, disabledClick = true) {
|
|
1364
|
+
this.disabledClick = disabledClick;
|
|
1365
|
+
this.onaction = true;
|
|
1366
|
+
this.overLastIndex = this.overIndex;
|
|
1367
|
+
this.overIndex = -1;
|
|
1339
1368
|
if (this.hasPermissionEdit) {
|
|
1340
1369
|
if (this.form != null) {
|
|
1341
1370
|
this._prop.set(InfoPageAction.Edit, model);
|
|
@@ -1365,6 +1394,10 @@ export class InfoGridComponent {
|
|
|
1365
1394
|
}
|
|
1366
1395
|
}
|
|
1367
1396
|
delete(model) {
|
|
1397
|
+
this.disabledClick = true;
|
|
1398
|
+
this.onaction = true;
|
|
1399
|
+
this.overLastIndex = this.overIndex;
|
|
1400
|
+
this.overIndex = -1;
|
|
1368
1401
|
if (this.customdelete.observers.length > 0) {
|
|
1369
1402
|
this.customdelete.emit(model);
|
|
1370
1403
|
return;
|
|
@@ -1382,6 +1415,9 @@ export class InfoGridComponent {
|
|
|
1382
1415
|
this.messages = d.messages;
|
|
1383
1416
|
}
|
|
1384
1417
|
});
|
|
1418
|
+
this.overIndex = this.overLastIndex;
|
|
1419
|
+
this.overLastIndex = -1;
|
|
1420
|
+
this.onaction = false;
|
|
1385
1421
|
}
|
|
1386
1422
|
});
|
|
1387
1423
|
}
|
|
@@ -1406,6 +1442,21 @@ export class InfoGridComponent {
|
|
|
1406
1442
|
}
|
|
1407
1443
|
});
|
|
1408
1444
|
}
|
|
1445
|
+
find(e = null) {
|
|
1446
|
+
if (this.searchmodel == null || this.onaction)
|
|
1447
|
+
return;
|
|
1448
|
+
if (e)
|
|
1449
|
+
e.preventDefault();
|
|
1450
|
+
this.overIndex = -1;
|
|
1451
|
+
this.enabledSearch = !this.enabledSearch;
|
|
1452
|
+
if (this.enabledSearch) {
|
|
1453
|
+
setTimeout(() => {
|
|
1454
|
+
let primeiroCampo = document.querySelector('.grid-search info-input input');
|
|
1455
|
+
if (primeiroCampo)
|
|
1456
|
+
primeiroCampo.focus();
|
|
1457
|
+
}, 50);
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1409
1460
|
fillIcons() {
|
|
1410
1461
|
this.icons = [];
|
|
1411
1462
|
if (this.data == null)
|
|
@@ -1466,6 +1517,9 @@ export class InfoGridComponent {
|
|
|
1466
1517
|
if (r.modalAction == InfoModalAction.Save)
|
|
1467
1518
|
this.getData();
|
|
1468
1519
|
this.onclosemodal.emit(r);
|
|
1520
|
+
this.overIndex = this.overLastIndex;
|
|
1521
|
+
this.overLastIndex = -1;
|
|
1522
|
+
this.onaction = false;
|
|
1469
1523
|
});
|
|
1470
1524
|
ref.keydownEvents().subscribe((r) => {
|
|
1471
1525
|
if (!this.loading && (r.key == "Escape" || r.key == "Esc" || r.key == "27"))
|
|
@@ -1536,6 +1590,71 @@ export class InfoGridComponent {
|
|
|
1536
1590
|
});
|
|
1537
1591
|
}
|
|
1538
1592
|
}
|
|
1593
|
+
shortcutEdit(e) {
|
|
1594
|
+
if (this.onaction)
|
|
1595
|
+
return;
|
|
1596
|
+
e.preventDefault();
|
|
1597
|
+
if (this.overIndex > -1)
|
|
1598
|
+
this.edit(this.data[this.overIndex], false);
|
|
1599
|
+
}
|
|
1600
|
+
shortcutDelete(e) {
|
|
1601
|
+
if (this.onaction)
|
|
1602
|
+
return;
|
|
1603
|
+
e.preventDefault();
|
|
1604
|
+
if (this.overIndex > -1)
|
|
1605
|
+
this.delete(this.data[this.overIndex]);
|
|
1606
|
+
}
|
|
1607
|
+
shortcutFirst(e) {
|
|
1608
|
+
if (this.onaction)
|
|
1609
|
+
return;
|
|
1610
|
+
e.preventDefault();
|
|
1611
|
+
this.overIndex = 0;
|
|
1612
|
+
}
|
|
1613
|
+
shortcutLast(e) {
|
|
1614
|
+
if (this.onaction)
|
|
1615
|
+
return;
|
|
1616
|
+
e.preventDefault();
|
|
1617
|
+
this.overIndex = this.paginator.numberItensPage - 1;
|
|
1618
|
+
}
|
|
1619
|
+
shortcutNavigateDown(e) {
|
|
1620
|
+
if (this.onaction)
|
|
1621
|
+
return;
|
|
1622
|
+
e.preventDefault();
|
|
1623
|
+
this.overIndex--;
|
|
1624
|
+
if (this.overIndex < 0)
|
|
1625
|
+
this.paginator.previous().subscribe(r => {
|
|
1626
|
+
this.overIndex = r == null ? 0 : (r.numberItensPage - 1);
|
|
1627
|
+
});
|
|
1628
|
+
}
|
|
1629
|
+
shortcutNavigateUp(e) {
|
|
1630
|
+
if (this.onaction)
|
|
1631
|
+
return;
|
|
1632
|
+
e.preventDefault();
|
|
1633
|
+
this.overIndex++;
|
|
1634
|
+
if (this.overIndex >= this.paginator.numberItensPage)
|
|
1635
|
+
this.paginator.next().subscribe(r => {
|
|
1636
|
+
this.overIndex = r == null ? (this.paginator.numberItensPage - 1) : 0;
|
|
1637
|
+
});
|
|
1638
|
+
}
|
|
1639
|
+
shortcutPagePrevious(e) {
|
|
1640
|
+
if (this.onaction || this.enabledSearch)
|
|
1641
|
+
return;
|
|
1642
|
+
e.preventDefault();
|
|
1643
|
+
this.paginator.previous().subscribe(r => {
|
|
1644
|
+
if (r != null)
|
|
1645
|
+
this.overIndex = -1;
|
|
1646
|
+
});
|
|
1647
|
+
;
|
|
1648
|
+
}
|
|
1649
|
+
shortcutPageNext(e) {
|
|
1650
|
+
if (this.onaction || this.enabledSearch)
|
|
1651
|
+
return;
|
|
1652
|
+
e.preventDefault();
|
|
1653
|
+
this.paginator.next().subscribe(r => {
|
|
1654
|
+
if (r != null)
|
|
1655
|
+
this.overIndex = -1;
|
|
1656
|
+
});
|
|
1657
|
+
}
|
|
1539
1658
|
}
|
|
1540
1659
|
/** @nocollapse */ InfoGridComponent.ɵfac = function InfoGridComponent_Factory(t) { return new (t || InfoGridComponent)(i0.ɵɵdirectiveInject(i1.InfoDialogModal), i0.ɵɵdirectiveInject(i2.InfoPlatformModel), i0.ɵɵdirectiveInject(i3.MatDialog), i0.ɵɵdirectiveInject(i4.InfoFormPropModel), i0.ɵɵdirectiveInject(i5.InfoDataService), i0.ɵɵdirectiveInject(i6.Router), i0.ɵɵdirectiveInject(i6.ActivatedRoute), i0.ɵɵdirectiveInject(i7.InfoAuthenticationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i8.InfoTranslateService), i0.ɵɵdirectiveInject(i9.InfoLastSearchModel), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
1541
1660
|
/** @nocollapse */ InfoGridComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoGridComponent, selectors: [["info-grid"]], contentQueries: function InfoGridComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
@@ -1550,7 +1669,9 @@ export class InfoGridComponent {
|
|
|
1550
1669
|
let _t;
|
|
1551
1670
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.formSearch = _t.first);
|
|
1552
1671
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.paginator = _t.first);
|
|
1553
|
-
} },
|
|
1672
|
+
} }, hostBindings: function InfoGridComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1673
|
+
i0.ɵɵlistener("keydown.esc", function InfoGridComponent_keydown_esc_HostBindingHandler($event) { return ctx.cancelSearch($event); }, false, i0.ɵɵresolveDocument)("keydown.insert", function InfoGridComponent_keydown_insert_HostBindingHandler($event) { return ctx.add($event); }, false, i0.ɵɵresolveDocument)("keydown.control.+", function InfoGridComponent_keydown_control___HostBindingHandler($event) { return ctx.add($event); }, false, i0.ɵɵresolveDocument)("keydown.control.f", function InfoGridComponent_keydown_control_f_HostBindingHandler($event) { return ctx.find($event); }, false, i0.ɵɵresolveDocument)("keydown.space", function InfoGridComponent_keydown_space_HostBindingHandler($event) { return ctx.shortcutEdit($event); }, false, i0.ɵɵresolveDocument)("keydown.enter", function InfoGridComponent_keydown_enter_HostBindingHandler($event) { return ctx.shortcutEdit($event); }, false, i0.ɵɵresolveDocument)("keydown.delete", function InfoGridComponent_keydown_delete_HostBindingHandler($event) { return ctx.shortcutDelete($event); }, false, i0.ɵɵresolveDocument)("keydown.home", function InfoGridComponent_keydown_home_HostBindingHandler($event) { return ctx.shortcutFirst($event); }, false, i0.ɵɵresolveDocument)("keydown.end", function InfoGridComponent_keydown_end_HostBindingHandler($event) { return ctx.shortcutLast($event); }, false, i0.ɵɵresolveDocument)("keydown.arrowup", function InfoGridComponent_keydown_arrowup_HostBindingHandler($event) { return ctx.shortcutNavigateDown($event); }, false, i0.ɵɵresolveDocument)("keydown.arrowdown", function InfoGridComponent_keydown_arrowdown_HostBindingHandler($event) { return ctx.shortcutNavigateUp($event); }, false, i0.ɵɵresolveDocument)("keydown.pagedown", function InfoGridComponent_keydown_pagedown_HostBindingHandler($event) { return ctx.shortcutPagePrevious($event); }, false, i0.ɵɵresolveDocument)("keydown.arrowleft", function InfoGridComponent_keydown_arrowleft_HostBindingHandler($event) { return ctx.shortcutPagePrevious($event); }, false, i0.ɵɵresolveDocument)("keydown.pageup", function InfoGridComponent_keydown_pageup_HostBindingHandler($event) { return ctx.shortcutPageNext($event); }, false, i0.ɵɵresolveDocument)("keydown.arrowright", function InfoGridComponent_keydown_arrowright_HostBindingHandler($event) { return ctx.shortcutPageNext($event); }, false, i0.ɵɵresolveDocument);
|
|
1674
|
+
} }, inputs: { pagetitle: "pagetitle", prefixtitle: "prefixtitle", description: "description", pagebarbuttons: "pagebarbuttons", fullarea: "fullarea", api: "api", method: "method", form: "form", width: "width", parent: "parent", apidownload: "apidownload", methoddownload: "methoddownload", backurl: "backurl", newurl: "newurl", newlabel: "newlabel", editurl: "editurl", viewurl: "viewurl", templateurl: "templateurl", paged: "paged", size: "size", autorefresh: "autorefresh", enabledcols: "enabledcols", enablednew: "enablednew", enablededit: "enablededit", enableddelete: "enableddelete", enabledview: "enabledview", enabledcancelsearch: "enabledcancelsearch", enableddetail: "enableddetail", enabledclassicons: "enabledclassicons", enabledclickaccess: "enabledclickaccess", enabledclickevent: "enabledclickevent", enabledexpand: "enabledexpand", searchopened: "searchopened", searchonlyonebutton: "searchonlyonebutton", disablesearchlast: "disablesearchlast", statictitle: "statictitle", disabledcol: "disabledcol", accessicon: "accessicon", loadoninit: "loadoninit", data: "data", searchmodel: "searchmodel", dynamiccols: "dynamiccols", buttons: "buttons", searchbuttons: "searchbuttons", showmessageerror: "showmessageerror", defaultnewobject: "defaultnewobject", parentIdUrl: "parentIdUrl", cols: "cols" }, outputs: { onbeforesearch: "onbeforesearch", onloadcomplete: "onloadcomplete", onclosemodal: "onclosemodal", onnew: "onnew", onedit: "onedit", onview: "onview", ondelete: "ondelete", customdelete: "customdelete", parentIdUrlChange: "parentIdUrlChange" }, features: [i0.ɵɵProvidersFeature([InfoFormPropModel])], ngContentSelectors: _c14, decls: 16, vars: 16, consts: [["icon", "work", 3, "pagetitle", "description", 4, "ngIf"], [3, "ngClass"], [1, "table-responsive", "white"], [1, "table-title", "grid-search", 3, "ngStyle"], ["autocomplete", "off", 3, "ngSubmit"], ["formSearch", "ngForm"], ["class", "search-container row", 4, "ngIf"], [4, "ngIf"], [1, "loading-bar"], ["color", "primary", "mode", "indeterminate", 4, "ngIf"], ["class", "table table-hover", 3, "ngStyle", "ngClass", "mouseleave", 4, "ngIf"], ["class", "blank-table", 4, "ngIf"], [3, "hidden", "size", "change"], ["paginator", ""], ["class", "block", 4, "ngIf"], [3, "messages"], ["icon", "work", 3, "pagetitle", "description"], ["mat-button", "", "type", "button", "color", "primary", 3, "click", 4, "ngIf"], [4, "ngFor", "ngForOf"], ["mat-button", "", "type", "button", "color", "primary", 3, "click"], [1, "fs-20"], ["type", "button", "mat-button", "", "color", "primary", 3, "click"], ["class", "fs-20", 4, "ngIf"], [1, "search-container", "row"], [1, "row"], [3, "class", 4, "ngIf"], [1, "search-buttons"], ["mat-button", "", "type", "submit", "color", "primary", 3, "disabled"], ["mat-button", "", "type", "button", "color", "warn", 3, "click", 4, "ngIf"], ["mat-button", "", "type", "button", "color", "warn", 3, "click"], ["mat-button", "", "type", "button", "color", "primary", 3, "disabled", "click"], [3, "innerHTML"], ["color", "primary", "mode", "indeterminate"], [1, "table", "table-hover", 3, "ngStyle", "ngClass", "mouseleave"], ["style", "width: 5%;", 4, "ngIf"], ["class", "actions align-right buttons", 4, "ngIf"], [1, "grid-content"], [3, "ngClass", "class", "click", "mouseenter", 4, "ngFor", "ngForOf"], [2, "width", "5%"], [3, "class", "ngClass", 4, "ngIf"], [3, "ngStyle", "ngClass", 4, "ngIf"], [3, "ngStyle", "ngClass"], [1, "actions", "align-right", "buttons"], ["mat-icon-button", "", "type", "button", "matTooltipPosition", "left", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "type", "button", "class", "managercols", "matTooltipPosition", "left", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "type", "button", "matTooltipPosition", "left", 3, "matTooltip", "click"], ["mat-icon-button", "", "type", "button", "matTooltipPosition", "left", 1, "managercols", 3, "matTooltip", "click"], [1, "icon-out"], [3, "ngClass", "click", "mouseenter"], ["class", "material-icons", 3, "matTooltip", "ngClass", 4, "ngIf"], [1, "material-icons", 3, "matTooltip", "ngClass"], [3, "ngSwitch", 4, "ngIf"], [3, "ngSwitch"], [4, "ngSwitchCase"], ["nowrap", "", 3, "innerHTML", 4, "ngSwitchCase"], ["nowrap", "", 4, "ngSwitchCase"], ["nowrap", "", 3, "class", 4, "ngSwitchCase"], ["class", "text-center", 4, "ngSwitchCase"], [3, "ngClass", 4, "ngIf"], [3, "ngClass", "innerHTML", 4, "ngIf"], ["class", "break-word", 3, "ngClass", 4, "ngIf"], ["class", "mostrar-mais", 3, "ngClass", "click", 4, "ngIf"], [3, "ngClass", "innerHTML"], [1, "break-word", 3, "ngClass"], [1, "mostrar-mais", 3, "ngClass", "click"], ["nowrap", "", 3, "innerHTML"], ["nowrap", ""], [1, "text-center"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["checked", ""], ["unchecked", ""], [1, "td-actions", "clickaccess"], ["mat-icon-button", "", "type", "button", 4, "ngIf"], ["mat-icon-button", "", "type", "button"], ["class", "td-actions", 4, "ngIf"], [1, "td-actions"], ["mat-icon-button", "", "target", "_blank", 3, "href", "matTooltip", 4, "ngIf"], ["mat-icon-button", "", "type", "button", 3, "matTooltipShowDelay", "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "type", "button", 3, "matTooltipShowDelay", "matTooltip", "disabled", "click", 4, "ngIf"], ["mat-icon-button", "", "target", "_blank", 3, "href", "matTooltip"], ["mat-icon-button", "", "type", "button", 3, "matTooltipShowDelay", "matTooltip", "disabled", "click"], ["mat-icon-button", "", "type", "button", 3, "matTooltipShowDelay", "matTooltip", "click"], [1, "blank-table"], [1, "block"]], template: function InfoGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1554
1675
|
i0.ɵɵprojectionDef();
|
|
1555
1676
|
i0.ɵɵtemplate(0, InfoGridComponent_info_pagebar_0_Template, 6, 7, "info-pagebar", 0);
|
|
1556
1677
|
i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "form", 4, 5);
|
|
@@ -1590,10 +1711,10 @@ export class InfoGridComponent {
|
|
|
1590
1711
|
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
1591
1712
|
i0.ɵɵadvance(1);
|
|
1592
1713
|
i0.ɵɵproperty("messages", ctx.messages);
|
|
1593
|
-
} }, dependencies: [i10.NgClass, i10.NgForOf, i10.NgIf, i10.NgStyle, i10.NgSwitch, i10.NgSwitchCase, i11.ɵNgNoValidate, i11.NgControlStatusGroup, i11.NgForm, i12.MatIcon, i13.MatButton, i13.MatAnchor, i14.MatProgressBar, i15.MatTooltip, i16.InfoAlertComponent, i17.InfoPaginatorComponent, i18.InfoPagebarComponent, i10.DecimalPipe, i10.DatePipe, i19.InfoTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;position:relative}[_nghost-%COMP%] #auto-refresh[_ngcontent-%COMP%]{position:absolute;top:8px;right:0;margin:0;padding:0;background:transparent}[_nghost-%COMP%] #auto-refresh[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:18px;cursor:default}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%]{background:#fcfcfc}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]{width:25px;height:25px;line-height:25px;text-align:center}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:18px}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%] [_ngcontent-%COMP%]:hover{transition:color .2s}[_nghost-%COMP%] .search-container[_ngcontent-%COMP%]{margin-top:10px;position:relative}[_nghost-%COMP%] .title-grid[_ngcontent-%COMP%]{padding-top:8px;font-size:.8rem;text-transform:uppercase;font-weight:700}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_id[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_dia[_ngcontent-%COMP%]{width:80px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_moeda[_ngcontent-%COMP%]{width:90px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_dataposicao[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_referencia[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_data[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_datacotacao[_ngcontent-%COMP%]{width:125px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_conta[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_identificador[_ngcontent-%COMP%]{width:250px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_cliente[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_nome[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_descricao[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_nome[_ngcontent-%COMP%]{width:400px}[_nghost-%COMP%] table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] .icone-secundario[_ngcontent-%COMP%]{font-size:12px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table-title[_ngcontent-%COMP%]{padding:0!important}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%]{background:transparent}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{border-top:none;text-transform:capitalize;padding:5px;font-size:10px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th.actions[_ngcontent-%COMP%]{border-bottom-width:0}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:after{display:none}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] .managercols[_ngcontent-%COMP%]{background-color:var(--ux-cor-P);right:0;opacity:0;transition:opacity .3s ease-in-out}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%]:hover .managercols[_ngcontent-%COMP%]{opacity:1!important}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{height:40px;background:#f9f9f9}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-size:13px;font-weight:600;cursor:default;transition:color .2s ease-in-out}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais[_ngcontent-%COMP%]{width:100%;display:flex;position:relative;bottom:18px;box-shadow:0 -6px 6px -3px RGB(0 0 0/20%);align-items:baseline;justify-content:center;background-color:#f9f9f9}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{height:5px;line-height:11px;cursor:pointer;transition:transform .2s ease-in-out;transform:rotate(0)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais[_ngcontent-%COMP%] .mat-icon.icone-expandido[_ngcontent-%COMP%]{transform:rotate(180deg)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais.mostrar-mais-expandido[_ngcontent-%COMP%]{bottom:0;box-shadow:none}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td.td-actions[_ngcontent-%COMP%]{padding-top:7px;padding-bottom:6px;border-bottom:none;margin-top:1px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td.td-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{pointer-events:none;opacity:.4}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{height:17px;line-height:17px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{position:relative;text-transform:uppercase;border:solid 1px;border-radius:3px;padding:2px 5px;font-size:8px;display:inline-block;margin:0 0 0 5px;top:-2px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .td-expansivel[_ngcontent-%COMP%] .label-expansivel[_ngcontent-%COMP%]{overflow:hidden;height:35px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .td-expansivel[_ngcontent-%COMP%] .label-expansivel.break-word[_ngcontent-%COMP%]{word-break:break-word}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .td-expansivel[_ngcontent-%COMP%] .label-expansivel.label-expandida[_ngcontent-%COMP%]{height:100%}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:#f9f9f9}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover .mostrar-mais[_ngcontent-%COMP%]{background-color:#f9f9f9}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even):hover{background:#fff}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even):hover .mostrar-mais[_ngcontent-%COMP%]{background-color:#fff}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even):hover .td-actions[_ngcontent-%COMP%]{background:#fff}"] });
|
|
1714
|
+
} }, dependencies: [i10.NgClass, i10.NgForOf, i10.NgIf, i10.NgStyle, i10.NgSwitch, i10.NgSwitchCase, i11.ɵNgNoValidate, i11.NgControlStatusGroup, i11.NgForm, i12.MatIcon, i13.MatButton, i13.MatAnchor, i14.MatProgressBar, i15.MatTooltip, i16.InfoAlertComponent, i17.InfoPaginatorComponent, i18.InfoPagebarComponent, i10.DecimalPipe, i10.DatePipe, i19.InfoTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;position:relative}[_nghost-%COMP%] #auto-refresh[_ngcontent-%COMP%]{position:absolute;top:8px;right:0;margin:0;padding:0;background:transparent}[_nghost-%COMP%] #auto-refresh[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:18px;cursor:default}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%]{background:#fcfcfc}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]{width:25px;height:25px;line-height:25px;text-align:center}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:18px}[_nghost-%COMP%] .table-title[_ngcontent-%COMP%] [_ngcontent-%COMP%]:hover{transition:color .2s}[_nghost-%COMP%] .search-container[_ngcontent-%COMP%]{margin-top:10px;position:relative}[_nghost-%COMP%] .title-grid[_ngcontent-%COMP%]{padding-top:8px;font-size:.8rem;text-transform:uppercase;font-weight:700}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_id[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_dia[_ngcontent-%COMP%]{width:80px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_moeda[_ngcontent-%COMP%]{width:90px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_dataposicao[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_referencia[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_data[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_datacotacao[_ngcontent-%COMP%]{width:125px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_conta[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_identificador[_ngcontent-%COMP%]{width:250px}[_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_cliente[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_nome[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_descricao[_ngcontent-%COMP%], [_nghost-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] .col_nome[_ngcontent-%COMP%]{width:400px}[_nghost-%COMP%] table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] .icone-secundario[_ngcontent-%COMP%]{font-size:12px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table-title[_ngcontent-%COMP%]{padding:0!important}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%]{background:transparent}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{border-top:none;text-transform:capitalize;padding:5px;font-size:10px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th.actions[_ngcontent-%COMP%]{border-bottom-width:0}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:after{display:none}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] .managercols[_ngcontent-%COMP%]{background-color:var(--ux-cor-P);right:0;opacity:0;transition:opacity .3s ease-in-out}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%]:hover .managercols[_ngcontent-%COMP%]{opacity:1!important}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{height:33px;background:var(--ux-cor-hover)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-size:13px;font-weight:600;cursor:default;transition:color .2s ease-in-out;padding:7px 0 0 5px;border:solid 1px transparent;border-width:1px 0}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left-width:1px;border-radius:3px 0 0 3px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:nth-last-child(2){border-right-width:1px;border-radius:0 3px 3px 0}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais[_ngcontent-%COMP%]{width:100%;display:flex;position:relative;bottom:18px;box-shadow:0 -6px 6px -3px RGB(0 0 0/20%);align-items:baseline;justify-content:center;background:var(--ux-cor-hover)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{height:5px;line-height:11px;cursor:pointer;transition:transform .2s ease-in-out;transform:rotate(0)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais[_ngcontent-%COMP%] .mat-icon.icone-expandido[_ngcontent-%COMP%]{transform:rotate(180deg)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .mostrar-mais.mostrar-mais-expandido[_ngcontent-%COMP%]{bottom:0;box-shadow:none}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td.td-actions[_ngcontent-%COMP%]{padding-top:3px;padding-bottom:3px;border-bottom:none;margin-top:0;margin-right:3px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td.td-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{pointer-events:none;opacity:.4}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{height:17px;line-height:17px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{position:relative;text-transform:uppercase;border:solid 1px;border-radius:3px;padding:2px 5px;font-size:8px;display:inline-block;margin:0 0 0 5px;top:-2px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .td-expansivel[_ngcontent-%COMP%] .label-expansivel[_ngcontent-%COMP%]{overflow:hidden;height:35px}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .td-expansivel[_ngcontent-%COMP%] .label-expansivel.break-word[_ngcontent-%COMP%]{word-break:break-word}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .td-expansivel[_ngcontent-%COMP%] .label-expansivel.label-expandida[_ngcontent-%COMP%]{height:100%}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover *[_ngcontent-%COMP%], .uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected-row[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{cursor:pointer}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%], .uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-color:var(--cor-C)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover .mostrar-mais[_ngcontent-%COMP%], .uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected-row[_ngcontent-%COMP%] .mostrar-mais[_ngcontent-%COMP%]{background-color:var(--cor-C)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even):hover{background:var(--ux-cor-hover)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even):hover .mostrar-mais[_ngcontent-%COMP%]{background-color:var(--ux-cor-hover)}.uxc3[_nghost-%COMP%] div.table-responsive[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even):hover .td-actions[_ngcontent-%COMP%]{background:var(--ux-cor-hover)}"] });
|
|
1594
1715
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoGridComponent, [{
|
|
1595
1716
|
type: Component,
|
|
1596
|
-
args: [{ selector: 'info-grid', providers: [InfoFormPropModel], template: "<info-pagebar *ngIf=\"showPagebar\" icon=\"work\" [pagetitle]=\"pagebarTitle\" [description]=\"description\">\r\n <button mat-button type=\"button\" *ngIf=\"backurl != null && backurl != ''\" color=\"primary\" (click)=\"back()\">\r\n <mat-icon class=\"fs-20\">chevron_left</mat-icon>{{\"Voltar\" | translate}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let b of pagebarbuttons\">\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"b.modal == null ? navigateTo(b.url, false, null) : openCustomModal(b.modal, b.modalwidth, null)\">\r\n <mat-icon *ngIf=\"b.icon != 'chevron_right'\" class=\"fs-20\">{{ b.icon }}</mat-icon>\r\n {{ b.label | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-button type=\"button\" *ngIf=\"searchmodel != null && !enabledSearch\" color=\"primary\" (click)=\"enabledSearch = !enabledSearch\">\r\n <mat-icon class=\"fs-20\">search</mat-icon> {{ \"Pesquisar\" | translate}}\r\n </button>\r\n\r\n <button mat-button type=\"button\" *ngIf=\"searchmodel != null && enabledSearch\" color=\"primary\" (click)=\"enabledSearch = !enabledSearch\">\r\n <mat-icon class=\"fs-20\">search_off</mat-icon> {{ \"Ocultar\" | translate}}\r\n </button>\r\n\r\n <button mat-button type=\"button\" *ngIf=\"enablednew && hasPermissionNew\" color=\"primary\" (click)=\"add()\">\r\n <mat-icon class=\"fs-20\">add</mat-icon> {{ newlabel | translate}}\r\n </button>\r\n</info-pagebar>\r\n\r\n<div [ngClass]=\"{ 'table-full': fullarea }\">\r\n <div class=\"table-responsive white\">\r\n <div class=\"table-title grid-search\" [ngStyle]=\"{ 'padding': (enabledSearch ? 10 : 0) + 'px 20px' }\">\r\n <form autocomplete=\"off\" #formSearch=\"ngForm\" (ngSubmit)=\"search()\">\r\n <div *ngIf=\"enabledSearch\" class=\"search-container row\">\r\n <div class=\"col-md-{{(searchbuttons || []).length == 0 ? '10' : '9' }}\">\r\n <div class=\"row\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"col-md-{{(searchbuttons || []).length == 0 ? '2' : '3' }} align-right\" *ngIf=\"searchmodel != null\">\r\n <div class=\"search-buttons \">\r\n <ng-container *ngIf=\"searchonlyonebutton\">\r\n <button mat-button type=\"submit\" color=\"primary\" [disabled]=\"formSearch.invalid || loading\">\r\n {{ 'Buscar' | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!searchonlyonebutton\">\r\n <button mat-button type=\"button\" color=\"warn\" (click)=\"cancelSearch()\" *ngIf=\"enabledcancelsearch\">\r\n <mat-icon class=\"fs-20\">close</mat-icon>\r\n </button>\r\n <button mat-button type=\"submit\" color=\"primary\" [disabled]=\"formSearch.invalid || loading\">\r\n <mat-icon class=\"fs-20\">search</mat-icon>\r\n </button>\r\n \r\n <ng-container *ngFor=\"let b of searchbuttons\">\r\n <button mat-button type=\"button\" color=\"primary\" [disabled]=\"formSearch.invalid || loading\" (click)=\"b.method()\">\r\n <mat-icon *ngIf=\"b.icon\" class=\"fs-20\">{{b.icon | translate}}</mat-icon> {{b.label | translate}}\r\n </button>\r\n </ng-container>\r\n \r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <fieldset *ngIf=\"!showPagebar\"><legend [innerHTML]=\"pagebarTitle | translate\"></legend></fieldset>\r\n <section class=\"loading-bar\"><mat-progress-bar color=\"primary\" mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar></section>\r\n\r\n <!-- <div id=\"auto-refresh\" *ngIf=\"autorefresh > 0\">\r\n <i class=\"material-icons\" matTooltip=\"{{ 'AutoRefresh' | translate }} {{ autorefresh }} seg\" matTooltipPosition=\"left\">access_time</i>\r\n </div> -->\r\n\r\n <table class=\"table table-hover\" [ngStyle]=\"{ 'min-height.px': tableHeight }\" [ngClass]=\"{ 'loading': loading, 'clickaccess': enabledclickaccess }\" *ngIf=\"data != null\">\r\n <thead>\r\n <tr>\r\n <th style=\"width: 5%;\" *ngIf=\"enabledclassicons && data?.length > 0 && data[0]?.Icon != null\"></th>\r\n\r\n <ng-container *ngFor=\"let col of colunasHeaders; let i = index\">\r\n <th *ngIf=\"colunasWidth[i] == ''\" [class]=\"'col_' + col.toLowerCase()\" [ngClass]=\"{ 'text-center': colunasType[i] == 'check', 'align-right': colunasType[i].startsWith('n') }\">{{ col | translate }}</th>\r\n <th *ngIf=\"colunasWidth[i] != ''\" [ngStyle]=\"{ 'width': colunasWidth[i] }\" [ngClass]=\"{ 'text-center': colunasType[i] == 'check', 'align-right': colunasType[i].startsWith('n') }\">{{ col | translate }}</th>\r\n </ng-container>\r\n\r\n <th class=\"actions align-right buttons\" *ngIf=\"(templateurl != '') || (buttons != null && buttons.length > 0) || enableddetail || enabledview || enabledcols || ((disabledcol == '') && enablededit && hasPermissionEdit) || ((disabledcol == '') && enableddelete && hasPermissionDelete)\">\r\n <button mat-icon-button type=\"button\"[matTooltip]=\"newlabel | translate\" matTooltipPosition=\"left\" (click)=\"add()\" *ngIf=\"!showPagebar && enablednew && hasPermissionNew\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"button\" class=\"managercols\" [matTooltip]=\"'CustomizarTabela' | translate\" matTooltipPosition=\"left\" (click)=\"customizeTable()\" *ngIf=\"enabledcols\">\r\n <mat-icon class=\"icon-out\">settings</mat-icon>\r\n </button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"grid-content\">\r\n <tr *ngFor=\"let mod of data; let j = index\" [ngClass]=\"{ 'default-color': !enabledclassicons }\" [class]=\"mod.Class\" (click)=\"access(mod)\">\r\n <td *ngIf=\"enabledclassicons && mod?.Icon != null\">\r\n <ng-container *ngFor=\"let icon of icons\">\r\n <i class=\"material-icons\" [matTooltip]=\"icon.Tooltip | translate\" *ngIf=\"icon.Name == mod.Icon\" [ngClass]=\"{ 'icone-secundario': icon.Principal == false }\">{{icon.Icon}}</i>\r\n </ng-container>\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of colunasItens; let i = index\">\r\n <td *ngIf=\"mod[col] == null || mod[col] == undefined\"></td>\r\n <ng-container [ngSwitch]=\"colunasType[i]\" *ngIf=\"mod[col] != null && mod[col] != undefined\">\r\n <ng-container *ngSwitchCase=\"'label'\">\r\n <td [ngClass]=\"{ 'td-expansivel': mod[col].length > limitcharacters && enabledexpand == true}\" *ngIf=\"mod[col] !== true && mod[col] !== false && mod[col] !== 0 && mod[col] !== '0'\">\r\n <label [ngClass]=\"{'label-expansivel': enabledexpand == true && mod[col].length > limitcharacters, 'label-expandida': colunasItensExpandidos[j][i] }\" *ngIf=\"colunasHtml[i] === true\" [innerHTML]=\"(mod[col] | translate:colunasTranslate[i]) || '' \"></label>\r\n <label class=\"break-word\" [ngClass]=\"{'label-expansivel': enabledexpand == true && mod[col].length > limitcharacters, 'label-expandida': colunasItensExpandidos[j][i] }\" *ngIf=\"colunasHtml[i] === false\">{{ (mod[col] | translate:colunasHtml[i]) || '' }}</label>\r\n <div *ngIf=\"enabledexpand == true && mod[col].length > limitcharacters\" [ngClass]=\"{'mostrar-mais-expandido': colunasItensExpandidos[j][i] }\" class=\"mostrar-mais\" (click)=\"mostrarMais(j,i)\">\r\n <mat-icon [ngClass]=\"{'icone-expandido': colunasItensExpandidos[j][i] }\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n <p *ngIf=\"i == 0 && mod.Badge != null && mod.Badge != undefined\">{{ mod.Badge | translate:colunasTranslate[i] }}</p>\r\n </td>\r\n <td *ngIf=\"mod[col] === true\"><mat-icon>check_box</mat-icon></td>\r\n <td *ngIf=\"mod[col] === false\"><mat-icon>check_box_outline_blank</mat-icon></td>\r\n <td *ngIf=\"mod[col] === 0 || mod[col] === '0'\">0</td>\r\n </ng-container>\r\n\r\n <td nowrap *ngSwitchCase=\"'date'\" [innerHTML]=\"mod[col] | date:'shortDate'\"></td>\r\n <td nowrap *ngSwitchCase=\"'datetime'\">{{ mod[col] | date:'shortDate' }} {{ mod[col] | date:'mediumTime' }}</td>\r\n <td nowrap *ngSwitchCase=\"'monthyear'\" [innerHTML]=\"mod[col] | date:'MM/yyyy'\"></td>\r\n <td nowrap *ngSwitchCase=\"'n0'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.0-0' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n2'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.2-2' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n4'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.4-4' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n6'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.6-6' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n9'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.9-9' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n12'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.12-12' }}</td>\r\n \r\n <td *ngSwitchCase=\"'check'\" class=\"text-center\">\r\n <ng-container *ngIf=\"mod[col] != null && (mod[col] === true || mod[col] == 1 || mod[col].toLowerCase() == 's'); then checked; else unchecked\"></ng-container>\r\n <ng-template #checked><mat-icon>check_box</mat-icon></ng-template>\r\n <ng-template #unchecked><mat-icon>check_box_outline_blank</mat-icon></ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"enabledclickaccess\">\r\n <td class=\"td-actions clickaccess\">\r\n <button mat-icon-button type=\"button\" (click)=\"access(mod)\" *ngIf=\"enabledview\">\r\n <mat-icon>{{accessicon || 'arrow_forward'}}</mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!enabledclickaccess\">\r\n <td class=\"td-actions\" *ngIf=\"(templateurl != '') || (buttons != null && buttons.length > 0) || (mod.Download != null) || enableddetail || (mod?.Info != null) || enabledview || ((disabledcol == '' || mod[disabledcol] === true) && enablededit && hasPermissionEdit) || ((disabledcol == '' || mod[disabledcol] === true) && enableddelete && hasPermissionDelete)\">\r\n\r\n <a mat-icon-button href=\"{{ templateurl.replace('{id}', mod.Id) }}\" target=\"_blank\" [matTooltip]=\"'Abrir' | translate\" *ngIf=\"templateurl != ''\">\r\n <mat-icon>visibility</mat-icon>\r\n </a>\r\n\r\n <ng-container *ngFor=\"let b of buttons\">\r\n <button mat-icon-button type=\"button\" [matTooltip]=\"b.label | translate\" (click)=\"b.modalComponent != null ? openCustomModal(b.modalComponent, b.widthModalComponent, mod) : b.api != null ? eventButton(mod, b.api, b.method, b.confirm) : navigateTo(b.navigateTo, b.passId, mod.Id)\" *ngIf=\"b.showOnlyClass == null || b.showOnlyClass == mod.Class\" [disabled]=\"b.disabledField && mod[b.disabledField] === true\">\r\n <mat-icon>{{b.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-icon-button type=\"button\" [matTooltip]=\"'Download' | translate\" (click)=\"download(mod.Download)\" *ngIf=\"mod.Download != null\">\r\n <mat-icon>file_download</mat-icon>\r\n </button>\r\n \r\n <button mat-icon-button type=\"button\" [matTooltip]=\"'Detalhe' | translate\" (click)=\"detail(mod)\" *ngIf=\"enableddetail\">\r\n <mat-icon>list</mat-icon>\r\n </button>\r\n \r\n <button mat-icon-button type=\"button\" [matTooltip]=\"'Informacao' | translate\" (click)=\"info(mod?.Info)\" *ngIf=\"mod?.Info != null\" [disabled]=\"mod?.Info == ''\">\r\n <mat-icon>info</mat-icon>\r\n </button>\r\n \r\n <!-- <button mat-icon-button type=\"button\" [matTooltip]=\"'Visualizar' | translate\" (click)=\"view(mod)\" *ngIf=\"enabledview\">\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n \r\n <button mat-icon-button type=\"button\" [matTooltip]=\"'Editar' | translate\" (click)=\"edit(mod)\" *ngIf=\"(disabledcol == '' || mod[disabledcol] === true) && enablededit && hasPermissionEdit\">\r\n <mat-icon>edit</mat-icon>\r\n </button> -->\r\n \r\n <button mat-icon-button type=\"button\" [matTooltip]=\"'Excluir' | translate\" (click)=\"delete(mod)\" *ngIf=\"(disabledcol == '' || mod[disabledcol] === true) && enableddelete && hasPermissionDelete && !mod.HideDelete\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n <button mat-icon-button type=\"button\" [matTooltip]=\"'Acessar' | translate\" (click)=\"edit(mod)\" *ngIf=\"((disabledcol == '' || mod[disabledcol] === true) && enablededit && hasPermissionEdit) || enabledview\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <span class=\"blank-table\" *ngIf=\"data != null && data.length == 0\">{{\"NenhumItemEncontrado\" | translate}}</span>\r\n\r\n <info-paginator #paginator [hidden]=\"!paged || (data != null && data.length == 0)\" [size]=\"size\" (change)=\"changePage($event)\" ></info-paginator>\r\n </div>\r\n</div>\r\n\r\n<div class=\"block\" *ngIf=\"loading\"></div>\r\n<info-alert [messages]=\"messages\"></info-alert>", styles: [":host{display:block;position:relative}:host #auto-refresh{position:absolute;top:8px;right:0;margin:0;padding:0;background:transparent}:host #auto-refresh i{font-size:18px;cursor:default}:host .table-title{background:#fcfcfc}:host .table-title .mat-icon-button{width:25px;height:25px;line-height:25px;text-align:center}:host .table-title .mat-icon-button .mat-icon{font-size:18px}:host .table-title :hover{transition:color .2s}:host .search-container{margin-top:10px;position:relative}:host .title-grid{padding-top:8px;font-size:.8rem;text-transform:uppercase;font-weight:700}:host table thead .col_id,:host table thead .col_dia{width:80px}:host table thead .col_moeda{width:90px}:host table thead .col_dataposicao,:host table thead .col_referencia,:host table thead .col_data,:host table thead .col_datacotacao{width:125px}:host table thead .col_conta,:host table thead .col_identificador{width:250px}:host table thead .col_cliente,:host table thead .col_nome,:host table thead .col_descricao,:host table thead .col_nome{width:400px}:host table tbody .icone-secundario{font-size:12px}:host.uxc3 div.table-responsive .table-title{padding:0!important}:host.uxc3 div.table-responsive .table thead{background:transparent}:host.uxc3 div.table-responsive .table thead th{border-top:none;text-transform:capitalize;padding:5px;font-size:10px}:host.uxc3 div.table-responsive .table thead th.actions{border-bottom-width:0}:host.uxc3 div.table-responsive .table thead th:after{display:none}:host.uxc3 div.table-responsive .table thead th .managercols{background-color:var(--ux-cor-P);right:0;opacity:0;transition:opacity .3s ease-in-out}:host.uxc3 div.table-responsive .table thead:hover .managercols{opacity:1!important}:host.uxc3 div.table-responsive .table tbody tr{height:40px;background:#f9f9f9}:host.uxc3 div.table-responsive .table tbody tr td{font-size:13px;font-weight:600;cursor:default;transition:color .2s ease-in-out}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais{width:100%;display:flex;position:relative;bottom:18px;box-shadow:0 -6px 6px -3px RGB(0 0 0/20%);align-items:baseline;justify-content:center;background-color:#f9f9f9}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais .mat-icon{height:5px;line-height:11px;cursor:pointer;transition:transform .2s ease-in-out;transform:rotate(0)}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais .mat-icon.icone-expandido{transform:rotate(180deg)}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais.mostrar-mais-expandido{bottom:0;box-shadow:none}:host.uxc3 div.table-responsive .table tbody tr td.td-actions{padding-top:7px;padding-bottom:6px;border-bottom:none;margin-top:1px}:host.uxc3 div.table-responsive .table tbody tr td.td-actions button:disabled{pointer-events:none;opacity:.4}:host.uxc3 div.table-responsive .table tbody tr td mat-icon{height:17px;line-height:17px}:host.uxc3 div.table-responsive .table tbody tr td p{position:relative;text-transform:uppercase;border:solid 1px;border-radius:3px;padding:2px 5px;font-size:8px;display:inline-block;margin:0 0 0 5px;top:-2px}:host.uxc3 div.table-responsive .table tbody tr .td-expansivel .label-expansivel{overflow:hidden;height:35px}:host.uxc3 div.table-responsive .table tbody tr .td-expansivel .label-expansivel.break-word{word-break:break-word}:host.uxc3 div.table-responsive .table tbody tr .td-expansivel .label-expansivel.label-expandida{height:100%}:host.uxc3 div.table-responsive .table tbody tr:hover{background:#f9f9f9}:host.uxc3 div.table-responsive .table tbody tr:hover .mostrar-mais{background-color:#f9f9f9}:host.uxc3 div.table-responsive .table tbody tr:nth-child(even):hover{background:#fff}:host.uxc3 div.table-responsive .table tbody tr:nth-child(even):hover .mostrar-mais{background-color:#fff}:host.uxc3 div.table-responsive .table tbody tr:nth-child(even):hover .td-actions{background:#fff}\n"] }]
|
|
1717
|
+
args: [{ selector: 'info-grid', providers: [InfoFormPropModel], template: "<info-pagebar *ngIf=\"showPagebar\" icon=\"work\" [pagetitle]=\"pagebarTitle\" [description]=\"description\">\r\n <button mat-button type=\"button\" *ngIf=\"backurl != null && backurl != ''\" color=\"primary\" (click)=\"back()\">\r\n <mat-icon class=\"fs-20\">chevron_left</mat-icon>{{\"Voltar\" | translate}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let b of pagebarbuttons\">\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"b.modal == null ? navigateTo(b.url, false, null) : openCustomModal(b.modal, b.modalwidth, null)\">\r\n <mat-icon *ngIf=\"b.icon != 'chevron_right'\" class=\"fs-20\">{{ b.icon }}</mat-icon>\r\n {{ b.label | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-button type=\"button\" *ngIf=\"searchmodel != null && !enabledSearch\" color=\"primary\" (click)=\"find()\">\r\n <mat-icon class=\"fs-20\">search</mat-icon> {{ \"Pesquisar\" | translate}}\r\n </button>\r\n\r\n <button mat-button type=\"button\" *ngIf=\"searchmodel != null && enabledSearch\" color=\"primary\" (click)=\"find()\">\r\n <mat-icon class=\"fs-20\">search_off</mat-icon> {{ \"Ocultar\" | translate}}\r\n </button>\r\n\r\n <button mat-button type=\"button\" *ngIf=\"enablednew && hasPermissionNew\" color=\"primary\" (click)=\"add()\">\r\n <mat-icon class=\"fs-20\">add</mat-icon> {{ newlabel | translate}}\r\n </button>\r\n</info-pagebar>\r\n\r\n<div [ngClass]=\"{ 'table-full': fullarea }\">\r\n <div class=\"table-responsive white\">\r\n <div class=\"table-title grid-search\" [ngStyle]=\"{ 'padding': (enabledSearch ? 10 : 0) + 'px 20px' }\">\r\n <form autocomplete=\"off\" #formSearch=\"ngForm\" (ngSubmit)=\"search()\">\r\n <div *ngIf=\"enabledSearch\" class=\"search-container row\">\r\n <div class=\"col-md-{{(searchbuttons || []).length == 0 ? '10' : '9' }}\">\r\n <div class=\"row\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"col-md-{{(searchbuttons || []).length == 0 ? '2' : '3' }} align-right\" *ngIf=\"searchmodel != null\">\r\n <div class=\"search-buttons \">\r\n <ng-container *ngIf=\"searchonlyonebutton\">\r\n <button mat-button type=\"submit\" color=\"primary\" [disabled]=\"formSearch.invalid || loading\">\r\n {{ 'Buscar' | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!searchonlyonebutton\">\r\n <button mat-button type=\"button\" color=\"warn\" (click)=\"cancelSearch()\" *ngIf=\"enabledcancelsearch\">\r\n <mat-icon class=\"fs-20\">close</mat-icon>\r\n </button>\r\n <button mat-button type=\"submit\" color=\"primary\" [disabled]=\"formSearch.invalid || loading\">\r\n <mat-icon class=\"fs-20\">search</mat-icon>\r\n </button>\r\n \r\n <ng-container *ngFor=\"let b of searchbuttons\">\r\n <button mat-button type=\"button\" color=\"primary\" [disabled]=\"formSearch.invalid || loading\" (click)=\"b.method()\">\r\n <mat-icon *ngIf=\"b.icon\" class=\"fs-20\">{{b.icon | translate}}</mat-icon> {{b.label | translate}}\r\n </button>\r\n </ng-container>\r\n \r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <fieldset *ngIf=\"!showPagebar\"><legend [innerHTML]=\"pagebarTitle | translate\"></legend></fieldset>\r\n <section class=\"loading-bar\"><mat-progress-bar color=\"primary\" mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar></section>\r\n\r\n <!-- <div id=\"auto-refresh\" *ngIf=\"autorefresh > 0\">\r\n <i class=\"material-icons\" matTooltip=\"{{ 'AutoRefresh' | translate }} {{ autorefresh }} seg\" matTooltipPosition=\"left\">access_time</i>\r\n </div> -->\r\n\r\n <table class=\"table table-hover\" [ngStyle]=\"{ 'min-height.px': tableHeight }\" [ngClass]=\"{ 'loading': loading, 'clickaccess': enabledclickaccess }\" (mouseleave)=\"overIndex = -1\" *ngIf=\"data != null\" >\r\n <thead>\r\n <tr>\r\n <th style=\"width: 5%;\" *ngIf=\"enabledclassicons && data?.length > 0 && data[0]?.Icon != null\"></th>\r\n\r\n <ng-container *ngFor=\"let col of colunasHeaders; let i = index\">\r\n <th *ngIf=\"colunasWidth[i] == ''\" [class]=\"'col_' + col.toLowerCase()\" [ngClass]=\"{ 'text-center': colunasType[i] == 'check', 'align-right': colunasType[i].startsWith('n') }\">{{ col | translate }}</th>\r\n <th *ngIf=\"colunasWidth[i] != ''\" [ngStyle]=\"{ 'width': colunasWidth[i] }\" [ngClass]=\"{ 'text-center': colunasType[i] == 'check', 'align-right': colunasType[i].startsWith('n') }\">{{ col | translate }}</th>\r\n </ng-container>\r\n\r\n <th class=\"actions align-right buttons\" *ngIf=\"(templateurl != '') || (buttons != null && buttons.length > 0) || enableddetail || enabledview || enabledcols || ((disabledcol == '') && enablededit && hasPermissionEdit) || ((disabledcol == '') && enableddelete && hasPermissionDelete)\">\r\n <button mat-icon-button type=\"button\"[matTooltip]=\"newlabel | translate\" matTooltipPosition=\"left\" (click)=\"add()\" *ngIf=\"!showPagebar && enablednew && hasPermissionNew\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"button\" class=\"managercols\" [matTooltip]=\"'CustomizarTabela' | translate\" matTooltipPosition=\"left\" (click)=\"customizeTable()\" *ngIf=\"enabledcols\">\r\n <mat-icon class=\"icon-out\">settings</mat-icon>\r\n </button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"grid-content\">\r\n <tr *ngFor=\"let mod of data; let j = index\" [ngClass]=\"{ 'default-color': !enabledclassicons, 'selected-row': j == overIndex }\" [class]=\"mod.Class\" (click)=\"access(mod)\" (mouseenter)=\"overIndex = j\" >\r\n <td *ngIf=\"enabledclassicons && mod?.Icon != null\">\r\n <ng-container *ngFor=\"let icon of icons\">\r\n <i class=\"material-icons\" [matTooltip]=\"icon.Tooltip | translate\" *ngIf=\"icon.Name == mod.Icon\" [ngClass]=\"{ 'icone-secundario': icon.Principal == false }\">{{icon.Icon}}</i>\r\n </ng-container>\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of colunasItens; let i = index\">\r\n <td *ngIf=\"mod[col] == null || mod[col] == undefined\"></td>\r\n <ng-container [ngSwitch]=\"colunasType[i]\" *ngIf=\"mod[col] != null && mod[col] != undefined\">\r\n <ng-container *ngSwitchCase=\"'label'\">\r\n <td [ngClass]=\"{ 'td-expansivel': mod[col].length > limitcharacters && enabledexpand == true}\" *ngIf=\"mod[col] !== true && mod[col] !== false && mod[col] !== 0 && mod[col] !== '0'\">\r\n <label [ngClass]=\"{'label-expansivel': enabledexpand == true && mod[col].length > limitcharacters, 'label-expandida': enabledexpand && colunasItensExpandidos[j][i] }\" *ngIf=\"colunasHtml[i] === true\" [innerHTML]=\"(mod[col] | translate:colunasTranslate[i]) || '' \"></label>\r\n <label class=\"break-word\" [ngClass]=\"{'label-expansivel': enabledexpand == true && mod[col].length > limitcharacters, 'label-expandida': enabledexpand == true && colunasItensExpandidos[j][i] }\" *ngIf=\"colunasHtml[i] === false\">{{ (mod[col] | translate:colunasHtml[i]) || '' }}</label>\r\n <div *ngIf=\"enabledexpand == true && mod[col].length > limitcharacters\" [ngClass]=\"{'mostrar-mais-expandido': enabledexpand == true && colunasItensExpandidos[j][i] }\" class=\"mostrar-mais\" (click)=\"mostrarMais(j,i)\">\r\n <mat-icon [ngClass]=\"{'icone-expandido': enabledexpand == true && colunasItensExpandidos[j][i] }\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n <p *ngIf=\"i == 0 && mod.Badge != null && mod.Badge != undefined\">{{ mod.Badge | translate:colunasTranslate[i] }}</p>\r\n </td>\r\n <td *ngIf=\"mod[col] === true\"><mat-icon>check_box</mat-icon></td>\r\n <td *ngIf=\"mod[col] === false\"><mat-icon>check_box_outline_blank</mat-icon></td>\r\n <td *ngIf=\"mod[col] === 0 || mod[col] === '0'\">0</td>\r\n </ng-container>\r\n\r\n <td nowrap *ngSwitchCase=\"'date'\" [innerHTML]=\"mod[col] | date:'shortDate'\"></td>\r\n <td nowrap *ngSwitchCase=\"'datetime'\">{{ mod[col] | date:'shortDate' }} {{ mod[col] | date:'mediumTime' }}</td>\r\n <td nowrap *ngSwitchCase=\"'monthyear'\" [innerHTML]=\"mod[col] | date:'MM/yyyy'\"></td>\r\n <td nowrap *ngSwitchCase=\"'n0'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.0-0' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n2'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.2-2' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n4'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.4-4' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n6'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.6-6' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n9'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.9-9' }}</td>\r\n <td nowrap *ngSwitchCase=\"'n12'\" [class]=\"'align-right ' + (mod[col] < 0 ? 'text-red' : '')\">{{ mod[col] | number:'1.12-12' }}</td>\r\n \r\n <td *ngSwitchCase=\"'check'\" class=\"text-center\">\r\n <ng-container *ngIf=\"mod[col] != null && (mod[col] === true || mod[col] == 1 || mod[col].toLowerCase() == 's'); then checked; else unchecked\"></ng-container>\r\n <ng-template #checked><mat-icon>check_box</mat-icon></ng-template>\r\n <ng-template #unchecked><mat-icon>check_box_outline_blank</mat-icon></ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"enabledclickaccess\">\r\n <td class=\"td-actions clickaccess\">\r\n <button mat-icon-button type=\"button\" *ngIf=\"enabledview\">\r\n <mat-icon>{{accessicon || 'arrow_forward'}}</mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!enabledclickaccess\">\r\n <td class=\"td-actions\" *ngIf=\"(templateurl != '') || (buttons != null && buttons.length > 0) || (mod.Download != null) || enableddetail || (mod?.Info != null) || enabledview || ((disabledcol == '' || mod[disabledcol] === true) && enablededit && hasPermissionEdit) || ((disabledcol == '' || mod[disabledcol] === true) && enableddelete && hasPermissionDelete)\">\r\n\r\n <a mat-icon-button href=\"{{ templateurl.replace('{id}', mod.Id) }}\" target=\"_blank\" [matTooltip]=\"'Abrir' | translate\" *ngIf=\"templateurl != ''\">\r\n <mat-icon>visibility</mat-icon>\r\n </a>\r\n\r\n <ng-container *ngFor=\"let b of buttons\">\r\n <button mat-icon-button type=\"button\" [matTooltipShowDelay]=\"800\" [matTooltip]=\"b.label | translate\" (click)=\"b.modalComponent != null ? openCustomModal(b.modalComponent, b.widthModalComponent, mod) : b.api != null ? eventButton(mod, b.api, b.method, b.confirm) : navigateTo(b.navigateTo, b.passId, mod.Id)\" *ngIf=\"b.showOnlyClass == null || b.showOnlyClass == mod.Class\" [disabled]=\"b.disabledField && mod[b.disabledField] === true\">\r\n <mat-icon>{{b.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-icon-button type=\"button\" [matTooltipShowDelay]=\"800\" [matTooltip]=\"'Download' | translate\" (click)=\"download(mod.Download)\" *ngIf=\"mod.Download != null\">\r\n <mat-icon>file_download</mat-icon>\r\n </button>\r\n \r\n <button mat-icon-button type=\"button\" [matTooltipShowDelay]=\"800\" [matTooltip]=\"'Detalhe' | translate\" (click)=\"detail(mod)\" *ngIf=\"enableddetail\">\r\n <mat-icon>list</mat-icon>\r\n </button>\r\n \r\n <button mat-icon-button type=\"button\" [matTooltipShowDelay]=\"800\" [matTooltip]=\"'Informacao' | translate\" (click)=\"info(mod?.Info)\" *ngIf=\"mod?.Info != null\" [disabled]=\"mod?.Info == ''\">\r\n <mat-icon>info</mat-icon>\r\n </button>\r\n \r\n <!-- <button mat-icon-button type=\"button\" [matTooltip]=\"'Visualizar' | translate\" (click)=\"view(mod)\" *ngIf=\"enabledview\">\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n \r\n <button mat-icon-button type=\"button\" [matTooltip]=\"'Editar' | translate\" (click)=\"edit(mod)\" *ngIf=\"(disabledcol == '' || mod[disabledcol] === true) && enablededit && hasPermissionEdit\">\r\n <mat-icon>edit</mat-icon>\r\n </button> -->\r\n \r\n <button mat-icon-button type=\"button\" [matTooltipShowDelay]=\"800\" [matTooltip]=\"'Excluir' | translate\" (click)=\"delete(mod)\" *ngIf=\"(disabledcol == '' || mod[disabledcol] === true) && enableddelete && hasPermissionDelete && !mod.HideDelete\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n <button mat-icon-button type=\"button\" [matTooltipShowDelay]=\"800\" [matTooltip]=\"'Acessar' | translate\" (click)=\"edit(mod)\" *ngIf=\"((disabledcol == '' || mod[disabledcol] === true) && enablededit && hasPermissionEdit) || enabledview\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <span class=\"blank-table\" *ngIf=\"data != null && data.length == 0\">{{\"NenhumItemEncontrado\" | translate}}</span>\r\n\r\n <info-paginator #paginator [hidden]=\"!paged || (data != null && data.length == 0)\" [size]=\"size\" (change)=\"changePage($event)\" ></info-paginator>\r\n </div>\r\n</div>\r\n\r\n<div class=\"block\" *ngIf=\"loading\"></div>\r\n<info-alert [messages]=\"messages\"></info-alert>", styles: [":host{display:block;position:relative}:host #auto-refresh{position:absolute;top:8px;right:0;margin:0;padding:0;background:transparent}:host #auto-refresh i{font-size:18px;cursor:default}:host .table-title{background:#fcfcfc}:host .table-title .mat-icon-button{width:25px;height:25px;line-height:25px;text-align:center}:host .table-title .mat-icon-button .mat-icon{font-size:18px}:host .table-title :hover{transition:color .2s}:host .search-container{margin-top:10px;position:relative}:host .title-grid{padding-top:8px;font-size:.8rem;text-transform:uppercase;font-weight:700}:host table thead .col_id,:host table thead .col_dia{width:80px}:host table thead .col_moeda{width:90px}:host table thead .col_dataposicao,:host table thead .col_referencia,:host table thead .col_data,:host table thead .col_datacotacao{width:125px}:host table thead .col_conta,:host table thead .col_identificador{width:250px}:host table thead .col_cliente,:host table thead .col_nome,:host table thead .col_descricao,:host table thead .col_nome{width:400px}:host table tbody .icone-secundario{font-size:12px}:host.uxc3 div.table-responsive .table-title{padding:0!important}:host.uxc3 div.table-responsive .table{border-collapse:separate;border-spacing:0}:host.uxc3 div.table-responsive .table thead{background:transparent}:host.uxc3 div.table-responsive .table thead th{border-top:none;text-transform:capitalize;padding:5px;font-size:10px}:host.uxc3 div.table-responsive .table thead th.actions{border-bottom-width:0}:host.uxc3 div.table-responsive .table thead th:after{display:none}:host.uxc3 div.table-responsive .table thead th .managercols{background-color:var(--ux-cor-P);right:0;opacity:0;transition:opacity .3s ease-in-out}:host.uxc3 div.table-responsive .table thead:hover .managercols{opacity:1!important}:host.uxc3 div.table-responsive .table tbody tr{height:33px;background:var(--ux-cor-hover)}:host.uxc3 div.table-responsive .table tbody tr td{font-size:13px;font-weight:600;cursor:default;transition:color .2s ease-in-out;padding:7px 0 0 5px;border:solid 1px transparent;border-width:1px 0}:host.uxc3 div.table-responsive .table tbody tr td:first-child{border-left-width:1px;border-radius:3px 0 0 3px}:host.uxc3 div.table-responsive .table tbody tr td:nth-last-child(2){border-right-width:1px;border-radius:0 3px 3px 0}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais{width:100%;display:flex;position:relative;bottom:18px;box-shadow:0 -6px 6px -3px RGB(0 0 0/20%);align-items:baseline;justify-content:center;background:var(--ux-cor-hover)}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais .mat-icon{height:5px;line-height:11px;cursor:pointer;transition:transform .2s ease-in-out;transform:rotate(0)}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais .mat-icon.icone-expandido{transform:rotate(180deg)}:host.uxc3 div.table-responsive .table tbody tr td .mostrar-mais.mostrar-mais-expandido{bottom:0;box-shadow:none}:host.uxc3 div.table-responsive .table tbody tr td.td-actions{padding-top:3px;padding-bottom:3px;border-bottom:none;margin-top:0;margin-right:3px}:host.uxc3 div.table-responsive .table tbody tr td.td-actions button:disabled{pointer-events:none;opacity:.4}:host.uxc3 div.table-responsive .table tbody tr td mat-icon{height:17px;line-height:17px}:host.uxc3 div.table-responsive .table tbody tr td p{position:relative;text-transform:uppercase;border:solid 1px;border-radius:3px;padding:2px 5px;font-size:8px;display:inline-block;margin:0 0 0 5px;top:-2px}:host.uxc3 div.table-responsive .table tbody tr .td-expansivel .label-expansivel{overflow:hidden;height:35px}:host.uxc3 div.table-responsive .table tbody tr .td-expansivel .label-expansivel.break-word{word-break:break-word}:host.uxc3 div.table-responsive .table tbody tr .td-expansivel .label-expansivel.label-expandida{height:100%}:host.uxc3 div.table-responsive .table tbody tr:hover *,:host.uxc3 div.table-responsive .table tbody tr.selected-row *{cursor:pointer}:host.uxc3 div.table-responsive .table tbody tr:hover td,:host.uxc3 div.table-responsive .table tbody tr.selected-row td{border-color:var(--cor-C)}:host.uxc3 div.table-responsive .table tbody tr:hover .mostrar-mais,:host.uxc3 div.table-responsive .table tbody tr.selected-row .mostrar-mais{background-color:var(--cor-C)}:host.uxc3 div.table-responsive .table tbody tr:nth-child(even):hover{background:var(--ux-cor-hover)}:host.uxc3 div.table-responsive .table tbody tr:nth-child(even):hover .mostrar-mais{background-color:var(--ux-cor-hover)}:host.uxc3 div.table-responsive .table tbody tr:nth-child(even):hover .td-actions{background:var(--ux-cor-hover)}\n"] }]
|
|
1597
1718
|
}], function () { return [{ type: i1.InfoDialogModal }, { type: i2.InfoPlatformModel }, { type: i3.MatDialog }, { type: i4.InfoFormPropModel }, { type: i5.InfoDataService }, { type: i6.Router }, { type: i6.ActivatedRoute }, { type: i7.InfoAuthenticationService }, { type: i0.ChangeDetectorRef }, { type: i8.InfoTranslateService }, { type: i9.InfoLastSearchModel }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, { pagetitle: [{
|
|
1598
1719
|
type: Input
|
|
1599
1720
|
}], prefixtitle: [{
|
|
@@ -1717,6 +1838,51 @@ export class InfoGridComponent {
|
|
|
1717
1838
|
type: Input
|
|
1718
1839
|
}], cols: [{
|
|
1719
1840
|
type: Input
|
|
1841
|
+
}], cancelSearch: [{
|
|
1842
|
+
type: HostListener,
|
|
1843
|
+
args: ['document:keydown.esc', ['$event']]
|
|
1844
|
+
}], add: [{
|
|
1845
|
+
type: HostListener,
|
|
1846
|
+
args: ['document:keydown.insert', ['$event']]
|
|
1847
|
+
}, {
|
|
1848
|
+
type: HostListener,
|
|
1849
|
+
args: ['document:keydown.control.+', ['$event']]
|
|
1850
|
+
}], find: [{
|
|
1851
|
+
type: HostListener,
|
|
1852
|
+
args: ['document:keydown.control.f', ['$event']]
|
|
1853
|
+
}], shortcutEdit: [{
|
|
1854
|
+
type: HostListener,
|
|
1855
|
+
args: ['document:keydown.space', ['$event']]
|
|
1856
|
+
}, {
|
|
1857
|
+
type: HostListener,
|
|
1858
|
+
args: ['document:keydown.enter', ['$event']]
|
|
1859
|
+
}], shortcutDelete: [{
|
|
1860
|
+
type: HostListener,
|
|
1861
|
+
args: ['document:keydown.delete', ['$event']]
|
|
1862
|
+
}], shortcutFirst: [{
|
|
1863
|
+
type: HostListener,
|
|
1864
|
+
args: ['document:keydown.home', ['$event']]
|
|
1865
|
+
}], shortcutLast: [{
|
|
1866
|
+
type: HostListener,
|
|
1867
|
+
args: ['document:keydown.end', ['$event']]
|
|
1868
|
+
}], shortcutNavigateDown: [{
|
|
1869
|
+
type: HostListener,
|
|
1870
|
+
args: ['document:keydown.arrowup', ['$event']]
|
|
1871
|
+
}], shortcutNavigateUp: [{
|
|
1872
|
+
type: HostListener,
|
|
1873
|
+
args: ['document:keydown.arrowdown', ['$event']]
|
|
1874
|
+
}], shortcutPagePrevious: [{
|
|
1875
|
+
type: HostListener,
|
|
1876
|
+
args: ['document:keydown.pagedown', ['$event']]
|
|
1877
|
+
}, {
|
|
1878
|
+
type: HostListener,
|
|
1879
|
+
args: ['document:keydown.arrowleft', ['$event']]
|
|
1880
|
+
}], shortcutPageNext: [{
|
|
1881
|
+
type: HostListener,
|
|
1882
|
+
args: ['document:keydown.pageup', ['$event']]
|
|
1883
|
+
}, {
|
|
1884
|
+
type: HostListener,
|
|
1885
|
+
args: ['document:keydown.arrowright', ['$event']]
|
|
1720
1886
|
}] }); })();
|
|
1721
1887
|
export class InfoGridModalComponent {
|
|
1722
1888
|
constructor(_prop, _ref, _modal) {
|
|
@@ -1784,4 +1950,4 @@ export class InfoGridModalComponent {
|
|
|
1784
1950
|
type: Inject,
|
|
1785
1951
|
args: [MAT_DIALOG_DATA]
|
|
1786
1952
|
}] }, { type: i3.MatDialogRef }, { type: i3.MatDialog }]; }, null); })();
|
|
1787
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvZ3JpZC9ncmlkLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFB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QztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7K0dBekNRLHNCQUFzQix1QkFPWCxlQUFlO3dHQVAxQixzQkFBc0Isa0VBRnBCLENBQUMsaUJBQWlCLENBQUM7UUVuekJsQyxxQ0FBNkQ7UUFBakQseUdBQVUsVUFBTSxJQUFDO1FBQ3pCLHVDQUEwQyxTQUFBLFNBQUEsa0JBQUE7UUFFSCxvQkFBSTtRQUFBLGlCQUFXO1FBQUEsWUFBOEM7O1FBQUEsaUJBQUs7UUFDakcsMEJBQUksa0JBQUE7UUFBMkIsMEJBQVM7UUFBQSxpQkFBVztRQUFBLGFBQThDOztRQUFBLGlCQUFLLEVBQUEsRUFBQTtRQUs5Ryw4QkFBcUI7UUFDakIsMkZBSWU7UUFDbkIsaUJBQUssRUFBQTs7UUFaaUQsZUFBOEM7UUFBOUMsd0VBQThDO1FBQ3pDLGVBQThDO1FBQTlDLHlFQUE4QztRQU10RSxlQUFVO1FBQVYscUNBQVU7O3VGRjJ5QnBDLHNCQUFzQjtjQUpsQyxTQUFTOzRCQUVLLENBQUMsaUJBQWlCLENBQUM7O3NCQVNqQixNQUFNO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEFmdGVyVmlld0luaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBDb250ZW50Q2hpbGRyZW4sIFJlbmRlcmVyMiwgRWxlbWVudFJlZiwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9Gb3JtUHJvcE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2Zvcm0tcHJvcC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dNb2RhbCB9IGZyb20gXCIuLi8uLi9sYXlvdXRzL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ0J1dHRvbnMgfSBmcm9tIFwiLi4vLi4vZW51bS9kaWFsb2ctYnV0dG9ucy5lbnVtXCI7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gXCIuLi8uLi9lbnVtL21vZGFsLWFjdGlvbi5lbnVtXCI7XHJcbmltcG9ydCB7IEluZm9QYWdlQWN0aW9uIH0gZnJvbSBcIi4uLy4uL2VudW0vcGFnZS1hY3Rpb24uZW51bVwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnZWJhckJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL3BhZ2ViYXItYnV0dG9ucy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvR3JpZEJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2dyaWQtYnV0dG9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEluZm9MYXN0U2VhcmNoTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvbGFzdC1zZWFyY2gubW9kZWxcIjtcclxuaW1wb3J0IHsgSW5mb01ldGhvZEdyaWRCdXR0b25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9tZXRob2QtZ3JpZC1idXR0b24ubW9kZWxcIjtcclxuaW1wb3J0IHsgTmdNb2RlbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvcGxhdGZvcm0ubW9kZWxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWdyaWQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWydncmlkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtJbmZvRm9ybVByb3BNb2RlbF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBwYWdldGl0bGUgPSAnJztcclxuICAgIEBJbnB1dCgpIHByZWZpeHRpdGxlID0gJyc7XHJcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgQElucHV0KCkgcGFnZWJhcmJ1dHRvbnM6IEluZm9QYWdlYmFyQnV0dG9uTW9kZWxbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgZnVsbGFyZWEgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBhcGk6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBtZXRob2Q6IHN0cmluZyA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBmb3JtOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgd2lkdGg6IG51bWJlciA9IDgwMDtcclxuICAgIEBJbnB1dCgpIHBhcmVudDogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGFwaWRvd25sb2FkOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbWV0aG9kZG93bmxvYWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgQElucHV0KCkgYmFja3VybCA9ICcnO1xyXG4gICAgQElucHV0KCkgbmV3dXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSBuZXdsYWJlbCA9ICdOb3ZvJztcclxuICAgIEBJbnB1dCgpIGVkaXR1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIHZpZXd1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRldXJsID0gJyc7XHJcblxyXG4gICAgQElucHV0KCkgcGFnZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNpemUgPSAxNTtcclxuICAgIEBJbnB1dCgpIGF1dG9yZWZyZXNoID0gMDtcclxuXHJcbiAgICBASW5wdXQoKSBlbmFibGVkY29scyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkbmV3ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRlZGl0ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRkZWxldGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZHZpZXcgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNhbmNlbHNlYXJjaCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZGV0YWlsID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xhc3NpY29ucyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xpY2thY2Nlc3MgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRjbGlja2V2ZW50ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZXhwYW5kID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgc2VhcmNob3BlbmVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZWFyY2hvbmx5b25lYnV0dG9uID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlc2VhcmNobGFzdCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc3RhdGljdGl0bGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkY29sID0gJyc7XHJcbiAgICBASW5wdXQoKSBhY2Nlc3NpY29uID0gJ2Fycm93X2ZvcndhcmQnO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvYWRvbmluaXQgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZGF0YTogYW55W107XHJcbiAgICBASW5wdXQoKSBzZWFyY2htb2RlbDogYW55ID0gbnVsbDtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25iZWZvcmVzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25sb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25jbG9zZW1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9ubmV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9uZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbnZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25kZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY3VzdG9tZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIGR5bmFtaWNjb2xzOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KCkgYnV0dG9uczogSW5mb0dyaWRCdXR0b25Nb2RlbFtdID0gW107XHJcbiAgICBASW5wdXQoKSBzZWFyY2hidXR0b25zOiBJbmZvTWV0aG9kR3JpZEJ1dHRvbk1vZGVsW10gPSBbXTtcclxuXHJcbiAgICBASW5wdXQoKSBzaG93bWVzc2FnZWVycm9yID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkZWZhdWx0bmV3b2JqZWN0OiBhbnkgPSBudWxsO1xyXG4gICAgXHJcbiAgICBAQ29udGVudENoaWxkcmVuKE5nTW9kZWwpIGZvcm1Nb2RlbDogUXVlcnlMaXN0PE5nTW9kZWw+O1xyXG4gICAgQFZpZXdDaGlsZChOZ0Zvcm0sIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtU2VhcmNoOiBOZ0Zvcm07XHJcbiAgICBcclxuICAgIG1lc3NhZ2VzOiBTdHJpbmdbXSA9IFtdO1xyXG4gICAgcmVzdWx0VGl0bGUgPSAnJztcclxuICAgIGVuYWJsZWRTZWFyY2ggPSBmYWxzZTtcclxuICAgIHNlYXJjaE1vZGVsUmVzZXQ6IGFueSA9IG51bGw7XHJcblxyXG4gICAgc2hvd1BhZ2ViYXIgPSBmYWxzZTtcclxuICAgIGhhc1Blcm1pc3Npb25OZXcgPSBmYWxzZTtcclxuICAgIGhhc1Blcm1pc3Npb25FZGl0ID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uRGVsZXRlID0gZmFsc2U7XHJcblxyXG4gICAgdGFibGVIZWlnaHQgPSAwO1xyXG4gICAgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgcGFnZWJhclRpdGxlID0gJyc7XHJcbiAgICBpY29uczogYW55W10gPSBbXTtcclxuICAgIGNvbHVuYXNJdGVucyA9IFtdO1xyXG4gICAgY29sdW5hc0hlYWRlcnMgPSBbXTtcclxuICAgIGNvbHVuYXNQYWRyYW9IZWFkZXJzID0gW107XHJcbiAgICBjb2x1bmFzVHlwZSA9IFtdO1xyXG4gICAgY29sdW5hc1dpZHRoID0gW107XHJcbiAgICBjb2x1bmFzVHJhbnNsYXRlID0gW107XHJcbiAgICBjb2x1bmFzSHRtbCA9IFtdO1xyXG4gICAgY29sdW5hc0l0ZW5zRXhwYW5kaWRvcyA9IFtdO1xyXG4gICAgY3VycmVudFVybDogc3RyaW5nID0gbnVsbDtcclxuICAgIHVybDogc3RyaW5nID0gbnVsbDtcclxuICAgIGNoYXZlU3RvcmFnZTogc3RyaW5nID0gJ2NvbHMnO1xyXG4gICAgaWRlbnRpZmljYWRvcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGxpbWl0Y2hhcmFjdGVyczogbnVtYmVyID0gMjUwO1xyXG4gICAgY2FsbFRpbWVvdXQ6IGFueTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdwYWdpbmF0b3InLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5hdG9yOiBJbmZvUGFnaW5hdG9yQ29tcG9uZW50O1xyXG4gICAgQE91dHB1dCgpIHBhcmVudElkVXJsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIHBhcmVudElkVXJsVmFsdWU6IG51bWJlciA9IG51bGw7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHBhcmVudElkVXJsKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudElkVXJsVmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHBhcmVudElkVXJsKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRJZFVybFZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRJZFVybENoYW5nZS5lbWl0KHRoaXMucGFyZW50SWRVcmxWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2NvbHM6IHN0cmluZyA9ICcnO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBjb2xzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBjb2xzKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fY29scyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0Q29sdW1ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RpYWxvZzogSW5mb0RpYWxvZ01vZGFsLCBcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBfcGxhdGZvcm06IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgcHVibGljIG1vZGFsOiBNYXREaWFsb2csIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcHJvcDogSW5mb0Zvcm1Qcm9wTW9kZWwsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZGF0YUFjY2Vzc1NlcnZpY2U6IEluZm9EYXRhU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2F1dGhlbnRpY2F0aW9uU2VydmljZTogSW5mb0F1dGhlbnRpY2F0aW9uU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBJbmZvVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9sYXN0U2VhcmNoOiBJbmZvTGFzdFNlYXJjaE1vZGVsLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jYWxsVGltZW91dCk7XHJcbiAgICAgICAgdGhpcy51cmwgPSAodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YVsnVVJMJ10gfHwgdGhpcy5fcm91dGVyLnVybCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd1eGMnICsgdGhpcy5fcGxhdGZvcm0uQ29uZmlnLnV4KTtcclxuICAgICAgICB0aGlzLnNldFBhZ2ViYXJUaXRsZSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1ldGhvZCA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2QgPSAnU2VhcmNoJztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWxSZXNldCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc2VhcmNobW9kZWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5wYXJlbnQgIT0gbnVsbCAmJiAodGhpcy5tZXRob2QgPT0gbnVsbCB8fCB0aGlzLm1ldGhvZCA9PSAnJykpXHJcbiAgICAgICAgICAgIHRoaXMubWV0aG9kID0gJ0dldEJ5UGFyZW50SWQnO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZXNlYXJjaGxhc3QgJiYgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMuX2xhc3RTZWFyY2gudXJsKSA9PSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IHRoaXMuX2xhc3RTZWFyY2guZW5hYmxlZFNlYXJjaDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwgJiYgdGhpcy5fbGFzdFNlYXJjaC5tb2RlbCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnNlYXJjaG1vZGVsLCB0aGlzLl9sYXN0U2VhcmNoLm1vZGVsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG9wZW5lZClcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkU2VhcmNoID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b3JlZnJlc2ggPiAwKVxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRVcmwgPSBsb2NhdGlvbi5ocmVmO1xyXG5cclxuICAgICAgICB0aGlzLl9wcm9wLmFwaSA9IHRoaXMuYXBpO1xyXG4gICAgICAgIHRoaXMuX3Byb3AubW9kYWxDb21wb25lbnQgPSB0aGlzLmZvcm07XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuaWRlbnRpZmljYWRvciA9IHRoaXMuYXBpICsgJ18nICsgdGhpcy5tZXRob2Q7XHJcbiAgICAgICAgdGhpcy5zaG93UGFnZWJhciA9IHRoaXMucGFnZXRpdGxlICE9ICcnIHx8IHRoaXMucHJlZml4dGl0bGUgIT0gJyc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCF0aGlzLmZ1bGxhcmVhICYmIHRoaXMuX3BsYXRmb3JtLkNvbmZpZy51eCA8PSAyKVxyXG4gICAgICAgICAgICB0aGlzLmZ1bGxhcmVhID0gdGhpcy5zaG93UGFnZWJhcjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgJiYgdGhpcy5mb3JtTW9kZWwubGVuZ3RoID4gMCAmJiB0aGlzLmZvcm1TZWFyY2gpXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsLnRvQXJyYXkoKS5mb3JFYWNoKG1vZGVsID0+IHRoaXMuZm9ybVNlYXJjaC5hZGRDb250cm9sKG1vZGVsKSk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlc2VhcmNobGFzdCAmJiB0aGlzLnBhZ2VkICYmIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLl9sYXN0U2VhcmNoLnVybCkgPT0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMudXJsKSlcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IuaW5kZXggPSB0aGlzLl9sYXN0U2VhcmNoLmluZGV4O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5keW5hbWljY29scyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q29sdW1ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFBlcm1pc3Npb24oKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWRvbmluaXQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLl9kYXRhQWNjZXNzU2VydmljZVxyXG4gICAgICAgICAgICAuZ2V0KHRoaXMuYXBpLCB0aGlzLmR5bmFtaWNjb2xzKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2xzID0gci5kYXRhO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb2x1bW5zKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFBlcm1pc3Npb24oKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2Fkb25pbml0KVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlZGNsaWNrZXZlbnQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZGNsaWNrYWNjZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jYWxsVGltZW91dCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29sdW1ucygpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29scyA9PSAnJylcclxuICAgICAgICAgICAgYWxlcnQoJ05lbmh1bWEgY29sdW5hIGluZm9ybWFkYScpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb2xzICE9ICcnKSB7XHJcblxyXG4gICAgICAgICAgICBsZXQgY29sdW5hc09jdWx0YXMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY2hhdmVTdG9yYWdlKSAhPSBudWxsKXtcclxuICAgICAgICAgICAgICAgIGxldCBkYWRvc1N0b3JhZ2UgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY2hhdmVTdG9yYWdlKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGRhZG9zU3RvcmFnZS5maW5kSW5kZXgoYyA9PiBjLklkZW50aWZpY2Fkb3IgPT0gdGhpcy5pZGVudGlmaWNhZG9yKSA+IC0xKXtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bmFzT2N1bHRhcyA9IGRhZG9zU3RvcmFnZS5maW5kKGMgPT4gYy5JZGVudGlmaWNhZG9yID09IHRoaXMuaWRlbnRpZmljYWRvcikuQ29sdW5hcztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVuYXNPY3VsdGFzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVuYXNPY3VsdGFzID0gY29sdW5hc09jdWx0YXMuZmlsdGVyKGMgPT4gIWMuRXhpYmlyKS5tYXAoYyA9PiBjLk5vbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNJdGVucyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNIZWFkZXJzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc1BhZHJhb0hlYWRlcnMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzVHlwZSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNXaWR0aCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNUcmFuc2xhdGUgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzSHRtbCA9IFtdO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5jb2xzLnNwbGl0KCcsJykuZm9yRWFjaChyZWdpc3RybyA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZTogYm9vbGVhbiA9IHJlZ2lzdHJvLmluZGV4T2YoJyMnKSA9PSAtMTtcclxuICAgICAgICAgICAgICAgIGxldCBodG1sOiBib29sZWFuID0gcmVnaXN0cm8uaW5kZXhPZignQCcpID09IC0xO1xyXG4gICAgICAgICAgICAgICAgcmVnaXN0cm8gPSByZWdpc3Ryby5yZXBsYWNlKC8jL2csICcnKS5yZXBsYWNlKC9AL2csICcnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uOiBzdHJpbmcgPSByZWdpc3RybztcclxuICAgICAgICAgICAgICAgIGxldCBoZWFkZXI6IHN0cmluZyA9IHJlZ2lzdHJvO1xyXG4gICAgICAgICAgICAgICAgbGV0IHR5cGU6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLmluZGV4T2YoJzonKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhZG9zID0gcmVnaXN0cm8uc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSBkYWRvc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBkYWRvc1sxXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLmluZGV4T2YoJz0nKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gaGVhZGVyLnNwbGl0KCc9Jyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4gPT0gaGVhZGVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSBwYXJ0c1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gcGFydHNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHBhcnRzWzFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBhdXggPSB0eXBlID09ICcnID8gaGVhZGVyIDogdHlwZTtcclxuICAgICAgICAgICAgICAgIGlmIChhdXguaW5kZXhPZignKicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVySW5mbyA9IGF1eC5zcGxpdCgnKicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uID09IGhlYWRlcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IGhlYWRlckluZm9bMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBoZWFkZXJJbmZvWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdHlwZSA9IGhlYWRlckluZm9bMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gaGVhZGVySW5mb1sxXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoLmluZGV4T2YoJyUnKSA8IDAgJiYgd2lkdGguaW5kZXhPZigncHgnKSA8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICs9ICdweCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbHVuYXNPY3VsdGFzLmluZGV4T2YoaGVhZGVyKSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNJdGVucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzSGVhZGVycy5wdXNoKGhlYWRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzVHlwZS5wdXNoKHR5cGUgPT0gJycgPyAnbGFiZWwnIDogdHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGgucHVzaCh3aWR0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzVHJhbnNsYXRlLnB1c2godHJhbnNsYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNIdG1sLnB1c2goaHRtbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzUGFkcmFvSGVhZGVycy5wdXNoKGhlYWRlcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY29sdW5hc0l0ZW5zLmxlbmd0aCA9PSAxICYmIHRoaXMuY29sdW5hc1dpZHRoLmxlbmd0aCA9PSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGhbMF0gPSAnMTAwJSc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldEl0ZW5zRXhwYW5kaWRvcygpIHtcclxuICAgICAgICB0aGlzLmNvbHVuYXNJdGVuc0V4cGFuZGlkb3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHJvdyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW5hc0l0ZW5zPy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgcm93LnB1c2goZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc0l0ZW5zRXhwYW5kaWRvcy5wdXNoKHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhZ2ViYXJUaXRsZSgpIHtcclxuICAgICAgICBsZXQgYXV4ID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnByZWZpeHRpdGxlICE9ICcnKVxyXG4gICAgICAgICAgICBhdXggPSB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucHJlZml4dGl0bGUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXN1bHRUaXRsZSAhPSAnJylcclxuICAgICAgICAgICAgYXV4ICs9ICh0aGlzLnByZWZpeHRpdGxlICE9ICcnID8gJyAvICcgOiAnJykgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucmVzdWx0VGl0bGUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wYWdldGl0bGUgIT0gJycpXHJcbiAgICAgICAgICAgIGF1eCArPSAodGhpcy5yZXN1bHRUaXRsZSAhPSAnJyB8fCB0aGlzLnByZWZpeHRpdGxlICE9ICcnID8gJyAvICcgOiAnJykgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucGFnZXRpdGxlKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYWdlYmFyVGl0bGUgPSBhdXg7XHJcbiAgICB9XHJcblxyXG4gICAgbmF2aWdhdGVUbyh1cmw6IHN0cmluZywgcGFzc0lkOiBib29sZWFuLCBpZD86IHN0cmluZykge1xyXG5cclxuICAgICAgICBpZiAocGFzc0lkKSB7XHJcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZihcIjppZFwiKSA+IC0xKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodXJsLnJlcGxhY2UoJzppZCcsIGlkKSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt1cmwsIGlkXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkN1c3RvbU1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnksIHdpZHRoOiBOdW1iZXIsIG1vZGVsOiBhbnkgPSBudWxsKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLk5vbmUsIG1vZGVsKTtcclxuICAgICAgICB0aGlzLm9wZW5Nb2RhbChtb2RhbENvbXBvbmVudCwgd2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEoKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcGkgPT0gbnVsbCB8fCB0aGlzLmFwaSA9PSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VhcmNoKCk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFnZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFnZWQoKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5wYXJlbnQgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGwoKTtcclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLmdldEJ5UGFyZW50SWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGwoKTogYW55IHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyKSk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5hcGksIHRoaXMuc2VhcmNobW9kZWwsIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYWdlZCgpOiBhbnkge1xyXG5cclxuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wYXJlbnQgPT0gbnVsbCA/IFwiXCIgOiBcImlkPVwiICsgdGhpcy5wYXJlbnQgKyBcIiZcIjtcclxuICAgICAgICBwYXJhbXMgKz0gJ2luZGV4PScgKyB0aGlzLnBhZ2luYXRvci5pbmRleCArICcmc2l6ZT0nICsgdGhpcy5zaXplO1xyXG5cclxuICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZVxyXG4gICAgICAgICAgICAuZ2V0KHRoaXMuYXBpLCB0aGlzLm1ldGhvZCwgcGFyYW1zKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIHRydWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTZWFyY2goKTogYW55IHtcclxuICAgICAgICB0aGlzLm9uYmVmb3Jlc2VhcmNoLmVtaXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNobW9kZWwuSW5kZXggPSB0aGlzLnBhZ2luYXRvci5pbmRleDtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2htb2RlbC5TaXplID0gdGhpcy5zaXplO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGRhdGFJbmljaWFsID0gdGhpcy5zZWFyY2htb2RlbFtcIkRhdGFJbmljaWFsXCJdO1xyXG4gICAgICAgIHZhciBkYXRhRmluYWwgPSB0aGlzLnNlYXJjaG1vZGVsW1wiRGF0YUZpbmFsXCJdO1xyXG4gICAgICAgIGlmIChkYXRhSW5pY2lhbCAhPSBudWxsICYmIGRhdGFGaW5hbCAhPSBudWxsICYmIG5ldyBEYXRlKGRhdGFJbmljaWFsKSA+IG5ldyBEYXRlKGRhdGFGaW5hbCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKCdEYXRhSW5pY2lhbE1haW9yRmluYWwnKTtcclxuICAgICAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZGF0YUluaWNpbyA9IHRoaXMuc2VhcmNobW9kZWxbXCJEYXRhSW5pY2lvXCJdO1xyXG4gICAgICAgIHZhciBkYXRhRmltID0gdGhpcy5zZWFyY2htb2RlbFtcIkRhdGFGaW1cIl07XHJcbiAgICAgICAgaWYgKGRhdGFJbmljaW8gIT0gbnVsbCAmJiBkYXRhRmltICE9IG51bGwgJiYgbmV3IERhdGUoZGF0YUluaWNpbykgPiBuZXcgRGF0ZShkYXRhRmltKSkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goJ0RhdGFJbmljaW9NYWlvckZpbScpO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuYXBpLCB0aGlzLnNlYXJjaG1vZGVsLCB0aGlzLm1ldGhvZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyLCB0aGlzLnBhZ2VkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnlQYXJlbnRJZCgpOiBhbnkge1xyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kLCAnaWQ9JyArIHRoaXMucGFyZW50KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIGZhbHNlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVJldHVybihyZXN1bHQ6IGFueSwgcmVmcmVzaFBhZ2luYXRvcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2gudXJsID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMudXJsKTtcclxuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC5lbmFibGVkU2VhcmNoID0gdGhpcy5lbmFibGVkU2VhcmNoO1xyXG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLm1vZGVsID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZWFyY2htb2RlbCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdlZClcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2guaW5kZXggPSB0aGlzLnBhZ2luYXRvci5pbmRleDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSByZXN1bHQuZGF0YTtcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGF0aWN0aXRsZSAmJiByZXN1bHQubmFtZSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRUaXRsZSA9IHRoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUocmVzdWx0Lm5hbWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5kZXNjcmlwdGlvbiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHJlc3VsdC5kZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQucGFyZW50SWQgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50SWRVcmwgPSByZXN1bHQucGFyZW50SWQ7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVmcmVzaFBhZ2luYXRvcilcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnJlZnJlc2gocmVzdWx0LnRvdGFsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9yZWZyZXNoID4gMCAmJiB0aGlzLmN1cnJlbnRVcmwgPT0gbG9jYXRpb24uaHJlZikge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2FsbFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmdldERhdGEoKTsgfSwgdGhpcy5hdXRvcmVmcmVzaCAqIDEwMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmZpbGxJY29ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEl0ZW5zRXhwYW5kaWRvcygpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgICAgICAgaWYodGhpcy5zaG93bWVzc2FnZWVycm9yKSB0aGlzLm1lc3NhZ2VzID0gcmVzdWx0Lm1lc3NhZ2VzO1xyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICB0aGlzLm9ubG9hZGNvbXBsZXRlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VQYWdlKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gaW5kZXg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VhcmNoKCk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5nZXRQYWdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbFNlYXJjaCgpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc2VhcmNobW9kZWwsIHRoaXMuc2VhcmNoTW9kZWxSZXNldCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5pbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCgpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLk5ldywgdGhpcy5kZWZhdWx0bmV3b2JqZWN0KTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubmV3dXJsID09IG51bGwgfHwgdGhpcy5uZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld3VybCA9IHRoaXMudXJsO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5uZXd1cmwgKz0gJy9ub3ZvJztcclxuICAgICAgICAgICAgdGhpcy5uZXd1cmwgPSB0aGlzLm5ld3VybC5yZXBsYWNlKCcvLycsICcvJyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm5ld3VybCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9ubmV3LmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZXRhaWwobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLlNlYXJjaCwgbW9kZWwpO1xyXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbW9zdHJhck1haXMobGluaGEsIGNvbHVuYSkge1xyXG4gICAgICAgIHRoaXMuY29sdW5hc0l0ZW5zRXhwYW5kaWRvc1tsaW5oYV1bY29sdW5hXSA9ICF0aGlzLmNvbHVuYXNJdGVuc0V4cGFuZGlkb3NbbGluaGFdW2NvbHVuYV0gXHJcbiAgICB9XHJcblxyXG4gICAgYWNjZXNzKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3Mpe1xyXG4gICAgICAgICAgICBpZiAodGhpcy5lbmFibGVkY2xpY2tldmVudClcclxuICAgICAgICAgICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5lZGl0KG1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmlldyhtb2RlbDogYW55KTogdm9pZCB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5WaWV3LCBtb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXd1cmwgPT0gbnVsbCB8fCB0aGlzLnZpZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnVybDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgKz0gJy8nICsgbW9kZWwuSWQgKyAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPyAnJyA6ICcvdmlzdWFsaXphcicpO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnZpZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy52aWV3dXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGVkaXQobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb25FZGl0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uRWRpdCwgbW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0dXJsID09IG51bGwgfHwgdGhpcy5lZGl0dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdHVybCA9IHRoaXMudXJsO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdHVybCA9IHRoaXMuZWRpdHVybC5yZXBsYWNlKCcvLycsICcvJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt0aGlzLmVkaXR1cmwsIG1vZGVsLklkXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMub25lZGl0LmVtaXQobW9kZWwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uVmlldywgbW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld3VybCA9PSBudWxsIHx8IHRoaXMudmlld3VybCA9PSAnJylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnVybDtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld3VybCArPSAnLycgKyBtb2RlbC5JZCArICh0aGlzLmVuYWJsZWRjbGlja2FjY2VzcyA/ICcnIDogJy92aXN1YWxpemFyJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnZpZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnZpZXd1cmwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5vbnZpZXcuZW1pdChtb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZShtb2RlbDogYW55KSB7XHJcbiAgICAgICAgaWYodGhpcy5jdXN0b21kZWxldGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21kZWxldGUuZW1pdChtb2RlbCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5ZZXNPck5vKCdNZW5zYWdlbUV4Y2x1aXInKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UuZGVsZXRlKHRoaXMuYXBpLCBtb2RlbC5JZCkuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25kZWxldGUuZW1pdChkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd21lc3NhZ2VlcnJvcikgdGhpcy5tZXNzYWdlcyA9IGQubWVzc2FnZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjdXN0b21pemVUYWJsZSgpe1xyXG4gICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLkVkaXQsIHsgXHJcbiAgICAgICAgICAgIElkZW50aWZpY2Fkb3I6IHRoaXMuaWRlbnRpZmljYWRvciwgXHJcbiAgICAgICAgICAgIENvbHVuYXM6IHRoaXMuY29sdW5hc1BhZHJhb0hlYWRlcnMsIFxyXG4gICAgICAgICAgICBDaGF2ZTogdGhpcy5jaGF2ZVN0b3JhZ2UgXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3Byb3AubW9kYWxBY3Rpb24gPSBJbmZvTW9kYWxBY3Rpb24uTm9uZTtcclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5tb2RhbC5vcGVuKEluZm9HcmlkTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YTogdGhpcy5fcHJvcCxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uU2F2ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsbEljb25zKCkge1xyXG4gICAgICAgIHRoaXMuaWNvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKHJldCA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHJldFsnSWNvbiddO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignfCcpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXRvcm5vID0gaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnfCcpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChpY29uZSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWNvbmUuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IGljb25lLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBOYW1lOiBpdGVtLCBJY29uOiBkYWRvc1swXSwgVG9vbHRpcDogZGFkb3NbMV0sIFByaW5jaXBhbDogdHJ1ZSB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiB7IE5hbWU6IGl0ZW0sIEljb246IGljb25lLCBUb29sdGlwOiAnJywgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbHRlcihhID0+IGEuSWNvbiAhPSBudWxsICYmIGEuSWNvbiAhPSAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHJldG9ybm8uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pY29ucy5maW5kKGEgPT4gYS5OYW1lID09IGVsZW1lbnQuTmFtZSAmJiBhLkljb24gPT0gZWxlbWVudC5JY29uKSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5QcmluY2lwYWwgPSBpbmRleCA9PSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDogYW55ID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSBpdGVtLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogZGFkb3NbMF0sIFRvb2x0aXA6IGRhZG9zWzFdLCBQcmluY2lwYWw6IHRydWUgfTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogaXRlbSwgVG9vbHRpcDogXCJcIiwgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaWNvbnMuZmluZChhID0+IGEuTmFtZSA9PSBlbGVtZW50Lk5hbWUpID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pY29ucy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5mbyh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5hbGVydCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFjaygpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5iYWNrdXJsICsgKHRoaXMucGFyZW50SWRVcmwgPT0gbnVsbCA/IFwiXCIgOiBcIi9cIiArIHRoaXMucGFyZW50SWRVcmwpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnkgPSB0aGlzLmZvcm0sIHdpZHRoOiBOdW1iZXIgPSB0aGlzLndpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5Ob25lO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5tb2RhbC5vcGVuKG1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX3Byb3AsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uU2F2ZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbmNsb3NlbW9kYWwuZW1pdChyKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKHIpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgKHIua2V5ID09IFwiRXNjYXBlXCIgfHwgci5rZXkgPT0gXCJFc2NcIiB8fCByLmtleSA9PSBcIjI3XCIpKVxyXG4gICAgICAgICAgICAgICAgcmVmLmNsb3NlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZUxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlYmFyVGl0bGUoKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9uKCkge1xyXG4gICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbk5ldyA9IHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMudXJsLCAnbmV3Jyk7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uRWRpdCA9IHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMudXJsLCAnZWRpdCcpO1xyXG4gICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbkRlbGV0ZSA9IHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMudXJsLCAncmVtb3ZlJyk7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkKGFycXVpdm9JZDogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXBpZG93bmxvYWQgPT0gbnVsbClcclxuICAgICAgICAgICAgYWxlcnQoJ0FQSSBEb3dubG9hZCBlc3TDoSBudWxsJyk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UuZ2V0KHRoaXMuYXBpZG93bmxvYWQsICh0aGlzLm1ldGhvZGRvd25sb2FkICE9IG51bGwgPyB0aGlzLm1ldGhvZGRvd25sb2FkIDogJ0dldCcpLCBcImlkPVwiICsgYXJxdWl2b0lkKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSByLm1lc3NhZ2VzO1xyXG5cclxuICAgICAgICAgICAgaWYgKHIuc3VjY2VzcyAmJiByLmRhdGEgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGJpbmFyeVN0cmluZyA9IHdpbmRvdy5hdG9iKHIuZGF0YS5Db250ZXVkbyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmluYXJ5TGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJpbmFyeUxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICB2YXIgYXNjaWkgPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbYnl0ZXNdKTtcclxuICAgICAgICAgICAgICAgIGxldCBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50QTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50QS5ocmVmID0gZmlsZVVSTDtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBLmRvd25sb2FkID0gci5kYXRhLk5vbWU7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnRBKTtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnRBKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50QnV0dG9uKG1vZGVsOiBhbnksIGFwaTogYW55LCBtZXRob2Q6IHN0cmluZywgY29uZmlybTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dcclxuICAgICAgICAgICAgICAgIC5ZZXNPck5vKCdNZW5zYWdlbUNvbmZpcm1hcicpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJldCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldC5idXR0b24gPT0gSW5mb0RpYWxvZ0J1dHRvbnMuWWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlLnBvc3QoYXBpLCBtb2RlbCwgbWV0aG9kKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNob3dtZXNzYWdlZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHIubWVzc2FnZXM7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlLnBvc3QoYXBpLCBtb2RlbCwgbWV0aG9kKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNob3dtZXNzYWdlZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHIubWVzc2FnZXM7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZVVybDogJ2dyaWQubW9kYWwuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtJbmZvRm9ybVByb3BNb2RlbF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9HcmlkTW9kYWxDb21wb25lbnQge1xyXG5cclxuICAgIGlkZW50aWZpY2Fkb3I6IHN0cmluZztcclxuICAgIGNoYXZlU3RvcmFnZTogc3RyaW5nO1xyXG4gICAgY29sdW5hczogYW55ID0gW107XHJcbiAgICBkYWRvc1N0b3JhZ2U6IGFueSA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBfcHJvcDogSW5mb0Zvcm1Qcm9wTW9kZWwsIHByaXZhdGUgX3JlZjogTWF0RGlhbG9nUmVmPEluZm9HcmlkTW9kYWxDb21wb25lbnQ+LCBwcml2YXRlIF9tb2RhbDogTWF0RGlhbG9nKXtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpe1xyXG4gICAgICAgIHRoaXMuaWRlbnRpZmljYWRvciA9IHRoaXMuX3Byb3AuZGF0YS5JZGVudGlmaWNhZG9yO1xyXG4gICAgICAgIHRoaXMuY2hhdmVTdG9yYWdlID0gdGhpcy5fcHJvcC5kYXRhLkNoYXZlO1xyXG5cclxuICAgICAgICBsZXQgY29sdW5hc0dyaWQgPSB0aGlzLl9wcm9wLmRhdGEuQ29sdW5hcy5tYXAoYyA9PiB7IHJldHVybiB7IE5vbWU6IGMsIEV4aWJpcjogdHJ1ZSwgR3JpZEF0dWFsOiB0cnVlIH07IH0pO1xyXG5cclxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UpID09IG51bGwpXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY2hhdmVTdG9yYWdlLCBKU09OLnN0cmluZ2lmeShbXSkpO1xyXG5cclxuICAgICAgICB0aGlzLmRhZG9zU3RvcmFnZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGFkb3NTdG9yYWdlLmZpbmRJbmRleChjID0+IGMuSWRlbnRpZmljYWRvciA9PSB0aGlzLmlkZW50aWZpY2Fkb3IpIDwgMClcclxuICAgICAgICAgICAgdGhpcy5kYWRvc1N0b3JhZ2UucHVzaCh7IElkZW50aWZpY2Fkb3I6IHRoaXMuaWRlbnRpZmljYWRvciwgQ29sdW5hczogY29sdW5hc0dyaWQgfSk7XHJcblxyXG4gICAgICAgIGxldCBjb2x1bmFzR2VyYWwgPSB0aGlzLmRhZG9zU3RvcmFnZS5maW5kKGMgPT4gYy5JZGVudGlmaWNhZG9yID09IHRoaXMuaWRlbnRpZmljYWRvcikuQ29sdW5hcztcclxuICAgICAgICBcclxuICAgICAgICAvL0FkaWNpb25hIHBvc3PDrXZlaXMgbm92YXMgY29sdW5hc1xyXG4gICAgICAgIGNvbHVuYXNHcmlkLmZpbHRlcihnID0+IGNvbHVuYXNHZXJhbC5tYXAoYyA9PiBjLk5vbWUpLmluZGV4T2YoZy5Ob21lKSA8IDApLmZvckVhY2gobm92YUNvbHVuYSA9PiB7XHJcbiAgICAgICAgICAgIGNvbHVuYXNHZXJhbC5wdXNoKG5vdmFDb2x1bmEpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvL0V4aWJlIGFwZW5hcyBhcyBjb2x1bmFzIHByZXNlbnRlcyBubyBncmlkIGF0dWFsXHJcbiAgICAgICAgdGhpcy5jb2x1bmFzID0gY29sdW5hc0dlcmFsLm1hcChjID0+ICh7IC4uLmMsIEdyaWRBdHVhbDogY29sdW5hc0dyaWQuZmluZEluZGV4KGcgPT4gZy5Ob21lID09IGMuTm9tZSkgPiAtMSB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpe1xyXG4gICAgICAgIHRoaXMuZGFkb3NTdG9yYWdlLmZpbmQoYyA9PiBjLklkZW50aWZpY2Fkb3IgPT0gdGhpcy5pZGVudGlmaWNhZG9yKS5Db2x1bmFzID0gdGhpcy5jb2x1bmFzO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY2hhdmVTdG9yYWdlLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhZG9zU3RvcmFnZSkpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuX3Byb3AubW9kYWxBY3Rpb24gPSBJbmZvTW9kYWxBY3Rpb24uU2F2ZTtcclxuICAgICAgICB0aGlzLl9yZWYuY2xvc2UodGhpcy5fcHJvcCk7XHJcbiAgICB9XHJcbn0iLCI8aW5mby1wYWdlYmFyICpuZ0lmPVwic2hvd1BhZ2ViYXJcIiBpY29uPVwid29ya1wiIFtwYWdldGl0bGVdPVwicGFnZWJhclRpdGxlXCIgW2Rlc2NyaXB0aW9uXT1cImRlc2NyaXB0aW9uXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiYmFja3VybCAhPSBudWxsICYmIGJhY2t1cmwgIT0gJydcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYmFjaygpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPnt7XCJWb2x0YXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBiIG9mIHBhZ2ViYXJidXR0b25zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYi5tb2RhbCA9PSBudWxsID8gbmF2aWdhdGVUbyhiLnVybCwgZmFsc2UsIG51bGwpIDogb3BlbkN1c3RvbU1vZGFsKGIubW9kYWwsIGIubW9kYWx3aWR0aCwgbnVsbClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYi5pY29uICE9ICdjaGV2cm9uX3JpZ2h0J1wiIGNsYXNzPVwiZnMtMjBcIj57eyBiLmljb24gfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICB7eyBiLmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2VhcmNobW9kZWwgIT0gbnVsbCAmJiAhZW5hYmxlZFNlYXJjaFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJlbmFibGVkU2VhcmNoID0gIWVuYWJsZWRTZWFyY2hcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPnNlYXJjaDwvbWF0LWljb24+IHt7IFwiUGVzcXVpc2FyXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNlYXJjaG1vZGVsICE9IG51bGwgJiYgZW5hYmxlZFNlYXJjaFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJlbmFibGVkU2VhcmNoID0gIWVuYWJsZWRTZWFyY2hcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPnNlYXJjaF9vZmY8L21hdC1pY29uPiB7eyBcIk9jdWx0YXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZW5hYmxlZG5ldyAmJiBoYXNQZXJtaXNzaW9uTmV3XCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImFkZCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5hZGQ8L21hdC1pY29uPiB7eyBuZXdsYWJlbCB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuPC9pbmZvLXBhZ2ViYXI+XHJcblxyXG48ZGl2IFtuZ0NsYXNzXT1cInsgJ3RhYmxlLWZ1bGwnOiBmdWxsYXJlYSB9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSB3aGl0ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBncmlkLXNlYXJjaFwiIFtuZ1N0eWxlXT1cInsgJ3BhZGRpbmcnOiAoZW5hYmxlZFNlYXJjaCA/IDEwIDogMCkgKyAncHggMjBweCcgfVwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiAjZm9ybVNlYXJjaD1cIm5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJzZWFyY2goKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZWRTZWFyY2hcIiBjbGFzcz1cInNlYXJjaC1jb250YWluZXIgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17eyhzZWFyY2hidXR0b25zIHx8IFtdKS5sZW5ndGggPT0gMCA/ICcxMCcgOiAnOScgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7KHNlYXJjaGJ1dHRvbnMgfHwgW10pLmxlbmd0aCA9PSAwID8gJzInIDogJzMnIH19IGFsaWduLXJpZ2h0XCIgKm5nSWY9XCJzZWFyY2htb2RlbCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYnV0dG9ucyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hvbmx5b25lYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybVNlYXJjaC5pbnZhbGlkIHx8IGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0J1c2NhcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VhcmNob25seW9uZWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImNhbmNlbFNlYXJjaCgpXCIgKm5nSWY9XCJlbmFibGVkY2FuY2Vsc2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZvcm1TZWFyY2guaW52YWxpZCB8fCBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBiIG9mIHNlYXJjaGJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybVNlYXJjaC5pbnZhbGlkIHx8IGxvYWRpbmdcIiAoY2xpY2spPVwiYi5tZXRob2QoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYi5pY29uXCIgY2xhc3M9XCJmcy0yMFwiPnt7Yi5pY29uIHwgdHJhbnNsYXRlfX08L21hdC1pY29uPiB7e2IubGFiZWwgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZmllbGRzZXQgKm5nSWY9XCIhc2hvd1BhZ2ViYXJcIj48bGVnZW5kIFtpbm5lckhUTUxdPVwicGFnZWJhclRpdGxlIHwgdHJhbnNsYXRlXCI+PC9sZWdlbmQ+PC9maWVsZHNldD5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImxvYWRpbmctYmFyXCI+PG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImxvYWRpbmdcIj48L21hdC1wcm9ncmVzcy1iYXI+PC9zZWN0aW9uPlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgaWQ9XCJhdXRvLXJlZnJlc2hcIiAqbmdJZj1cImF1dG9yZWZyZXNoID4gMFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgbWF0VG9vbHRpcD1cInt7ICdBdXRvUmVmcmVzaCcgfCB0cmFuc2xhdGUgfX0ge3sgYXV0b3JlZnJlc2ggfX0gc2VnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiPmFjY2Vzc190aW1lPC9pPlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtaG92ZXJcIiBbbmdTdHlsZV09XCJ7ICdtaW4taGVpZ2h0LnB4JzogdGFibGVIZWlnaHQgfVwiIFtuZ0NsYXNzXT1cInsgJ2xvYWRpbmcnOiBsb2FkaW5nLCAnY2xpY2thY2Nlc3MnOiBlbmFibGVkY2xpY2thY2Nlc3MgfVwiICpuZ0lmPVwiZGF0YSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNSU7XCIgKm5nSWY9XCJlbmFibGVkY2xhc3NpY29ucyAmJiBkYXRhPy5sZW5ndGggPiAwICYmIGRhdGFbMF0/Lkljb24gIT0gbnVsbFwiPjwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bmFzSGVhZGVyczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjb2x1bmFzV2lkdGhbaV0gPT0gJydcIiBbY2xhc3NdPVwiJ2NvbF8nICsgY29sLnRvTG93ZXJDYXNlKClcIiBbbmdDbGFzc109XCJ7ICd0ZXh0LWNlbnRlcic6IGNvbHVuYXNUeXBlW2ldID09ICdjaGVjaycsICdhbGlnbi1yaWdodCc6IGNvbHVuYXNUeXBlW2ldLnN0YXJ0c1dpdGgoJ24nKSB9XCI+e3sgY29sIHwgdHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY29sdW5hc1dpZHRoW2ldICE9ICcnXCIgW25nU3R5bGVdPVwieyAnd2lkdGgnOiBjb2x1bmFzV2lkdGhbaV0gfVwiIFtuZ0NsYXNzXT1cInsgJ3RleHQtY2VudGVyJzogY29sdW5hc1R5cGVbaV0gPT0gJ2NoZWNrJywgJ2FsaWduLXJpZ2h0JzogY29sdW5hc1R5cGVbaV0uc3RhcnRzV2l0aCgnbicpIH1cIj57eyBjb2wgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zIGFsaWduLXJpZ2h0IGJ1dHRvbnNcIiAqbmdJZj1cIih0ZW1wbGF0ZXVybCAhPSAnJykgfHwgKGJ1dHRvbnMgIT0gbnVsbCAmJiBidXR0b25zLmxlbmd0aCA+IDApIHx8IGVuYWJsZWRkZXRhaWwgfHwgZW5hYmxlZHZpZXcgfHwgZW5hYmxlZGNvbHMgfHwgKChkaXNhYmxlZGNvbCA9PSAnJykgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXQpIHx8ICgoZGlzYWJsZWRjb2wgPT0gJycpICYmIGVuYWJsZWRkZWxldGUgJiYgaGFzUGVybWlzc2lvbkRlbGV0ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiW21hdFRvb2x0aXBdPVwibmV3bGFiZWwgfCB0cmFuc2xhdGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJsZWZ0XCIgKGNsaWNrKT1cImFkZCgpXCIgKm5nSWY9XCIhc2hvd1BhZ2ViYXIgJiYgZW5hYmxlZG5ldyAmJiBoYXNQZXJtaXNzaW9uTmV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YWRkX2NpcmNsZV9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1hbmFnZXJjb2xzXCIgW21hdFRvb2x0aXBdPVwiJ0N1c3RvbWl6YXJUYWJlbGEnIHwgdHJhbnNsYXRlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIChjbGljayk9XCJjdXN0b21pemVUYWJsZSgpXCIgKm5nSWY9XCJlbmFibGVkY29sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1vdXRcIj5zZXR0aW5nczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJncmlkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbW9kIG9mIGRhdGE7IGxldCBqID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7ICdkZWZhdWx0LWNvbG9yJzogIWVuYWJsZWRjbGFzc2ljb25zIH1cIiBbY2xhc3NdPVwibW9kLkNsYXNzXCIgKGNsaWNrKT1cImFjY2Vzcyhtb2QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZW5hYmxlZGNsYXNzaWNvbnMgJiYgbW9kPy5JY29uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaWNvbiBvZiBpY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIFttYXRUb29sdGlwXT1cImljb24uVG9vbHRpcCB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiaWNvbi5OYW1lID09IG1vZC5JY29uXCIgW25nQ2xhc3NdPVwieyAnaWNvbmUtc2VjdW5kYXJpbyc6IGljb24uUHJpbmNpcGFsID09IGZhbHNlIH1cIj57e2ljb24uSWNvbn19PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW5hc0l0ZW5zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm1vZFtjb2xdID09IG51bGwgfHwgbW9kW2NvbF0gPT0gdW5kZWZpbmVkXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW5hc1R5cGVbaV1cIiAqbmdJZj1cIm1vZFtjb2xdICE9IG51bGwgJiYgbW9kW2NvbF0gIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ3RkLWV4cGFuc2l2ZWwnOiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMgJiYgZW5hYmxlZGV4cGFuZCA9PSB0cnVlfVwiICpuZ0lmPVwibW9kW2NvbF0gIT09IHRydWUgJiYgbW9kW2NvbF0gIT09IGZhbHNlICYmIG1vZFtjb2xdICE9PSAwICYmIG1vZFtjb2xdICE9PSAnMCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsnbGFiZWwtZXhwYW5zaXZlbCc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMsICdsYWJlbC1leHBhbmRpZGEnOiBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2pdW2ldIH1cIiAqbmdJZj1cImNvbHVuYXNIdG1sW2ldID09PSB0cnVlXCIgW2lubmVySFRNTF09XCIobW9kW2NvbF0gfCB0cmFuc2xhdGU6Y29sdW5hc1RyYW5zbGF0ZVtpXSkgfHwgJycgXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYnJlYWstd29yZFwiIFtuZ0NsYXNzXT1cInsnbGFiZWwtZXhwYW5zaXZlbCc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMsICdsYWJlbC1leHBhbmRpZGEnOiBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2pdW2ldIH1cIiAqbmdJZj1cImNvbHVuYXNIdG1sW2ldID09PSBmYWxzZVwiPnt7IChtb2RbY29sXSB8IHRyYW5zbGF0ZTpjb2x1bmFzSHRtbFtpXSkgfHwgJycgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW5hYmxlZGV4cGFuZCA9PSB0cnVlICYmIG1vZFtjb2xdLmxlbmd0aCA+IGxpbWl0Y2hhcmFjdGVyc1wiIFtuZ0NsYXNzXT1cInsnbW9zdHJhci1tYWlzLWV4cGFuZGlkbyc6IGNvbHVuYXNJdGVuc0V4cGFuZGlkb3Nbal1baV0gfVwiIGNsYXNzPVwibW9zdHJhci1tYWlzXCIgKGNsaWNrKT1cIm1vc3RyYXJNYWlzKGosaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJ7J2ljb25lLWV4cGFuZGlkbyc6IGNvbHVuYXNJdGVuc0V4cGFuZGlkb3Nbal1baV0gfVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJpID09IDAgJiYgbW9kLkJhZGdlICE9IG51bGwgJiYgbW9kLkJhZGdlICE9IHVuZGVmaW5lZFwiPnt7IG1vZC5CYWRnZSB8IHRyYW5zbGF0ZTpjb2x1bmFzVHJhbnNsYXRlW2ldIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibW9kW2NvbF0gPT09IHRydWVcIj48bWF0LWljb24+Y2hlY2tfYm94PC9tYXQtaWNvbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm1vZFtjb2xdID09PSBmYWxzZVwiPjxtYXQtaWNvbj5jaGVja19ib3hfb3V0bGluZV9ibGFuazwvbWF0LWljb24+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJtb2RbY29sXSA9PT0gMCB8fCBtb2RbY29sXSA9PT0gJzAnXCI+MDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbaW5uZXJIVE1MXT1cIm1vZFtjb2xdIHwgZGF0ZTonc2hvcnREYXRlJ1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInZGF0ZXRpbWUnXCI+e3sgbW9kW2NvbF0gfCBkYXRlOidzaG9ydERhdGUnIH19IHt7IG1vZFtjb2xdIHwgZGF0ZTonbWVkaXVtVGltZScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRoeWVhcidcIiBbaW5uZXJIVE1MXT1cIm1vZFtjb2xdIHwgZGF0ZTonTU0veXl5eSdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ24wJ1wiIFtjbGFzc109XCInYWxpZ24tcmlnaHQgJyArIChtb2RbY29sXSA8IDAgPyAndGV4dC1yZWQnIDogJycpXCI+e3sgbW9kW2NvbF0gfCBudW1iZXI6JzEuMC0wJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjInXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS4yLTInIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduNCdcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjQtNCcgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ242J1wiIFtjbGFzc109XCInYWxpZ24tcmlnaHQgJyArIChtb2RbY29sXSA8IDAgPyAndGV4dC1yZWQnIDogJycpXCI+e3sgbW9kW2NvbF0gfCBudW1iZXI6JzEuNi02JyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjknXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS45LTknIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduMTInXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS4xMi0xMicgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrJ1wiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kW2NvbF0gIT0gbnVsbCAmJiAobW9kW2NvbF0gPT09IHRydWUgfHwgbW9kW2NvbF0gPT0gMSB8fCBtb2RbY29sXS50b0xvd2VyQ2FzZSgpID09ICdzJyk7IHRoZW4gY2hlY2tlZDsgZWxzZSB1bmNoZWNrZWRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoZWNrZWQ+PG1hdC1pY29uPmNoZWNrX2JveDwvbWF0LWljb24+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3VuY2hlY2tlZD48bWF0LWljb24+Y2hlY2tfYm94X291dGxpbmVfYmxhbms8L21hdC1pY29uPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVuYWJsZWRjbGlja2FjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZC1hY3Rpb25zIGNsaWNrYWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjY2Vzcyhtb2QpXCIgKm5nSWY9XCJlbmFibGVkdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e2FjY2Vzc2ljb24gfHwgJ2Fycm93X2ZvcndhcmQnfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW5hYmxlZGNsaWNrYWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFjdGlvbnNcIiAqbmdJZj1cIih0ZW1wbGF0ZXVybCAhPSAnJykgfHwgKGJ1dHRvbnMgIT0gbnVsbCAmJiBidXR0b25zLmxlbmd0aCA+IDApIHx8IChtb2QuRG93bmxvYWQgIT0gbnVsbCkgfHwgZW5hYmxlZGRldGFpbCB8fCAobW9kPy5JbmZvICE9IG51bGwpIHx8IGVuYWJsZWR2aWV3IHx8ICgoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXQpIHx8ICgoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGRlbGV0ZSAmJiBoYXNQZXJtaXNzaW9uRGVsZXRlKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG1hdC1pY29uLWJ1dHRvbiBocmVmPVwie3sgdGVtcGxhdGV1cmwucmVwbGFjZSgne2lkfScsIG1vZC5JZCkgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiBbbWF0VG9vbHRpcF09XCInQWJyaXInIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJ0ZW1wbGF0ZXVybCAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBiIG9mIGJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiYi5sYWJlbCB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJiLm1vZGFsQ29tcG9uZW50ICE9IG51bGwgPyBvcGVuQ3VzdG9tTW9kYWwoYi5tb2RhbENvbXBvbmVudCwgYi53aWR0aE1vZGFsQ29tcG9uZW50LCBtb2QpIDogYi5hcGkgIT0gbnVsbCA/IGV2ZW50QnV0dG9uKG1vZCwgYi5hcGksIGIubWV0aG9kLCBiLmNvbmZpcm0pIDogbmF2aWdhdGVUbyhiLm5hdmlnYXRlVG8sIGIucGFzc0lkLCBtb2QuSWQpXCIgKm5nSWY9XCJiLnNob3dPbmx5Q2xhc3MgPT0gbnVsbCB8fCBiLnNob3dPbmx5Q2xhc3MgPT0gbW9kLkNsYXNzXCIgW2Rpc2FibGVkXT1cImIuZGlzYWJsZWRGaWVsZCAmJiBtb2RbYi5kaXNhYmxlZEZpZWxkXSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tiLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJkb3dubG9hZChtb2QuRG93bmxvYWQpXCIgKm5nSWY9XCJtb2QuRG93bmxvYWQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ0RldGFsaGUnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImRldGFpbChtb2QpXCIgKm5nSWY9XCJlbmFibGVkZGV0YWlsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmxpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcF09XCInSW5mb3JtYWNhbycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiaW5mbyhtb2Q/LkluZm8pXCIgKm5nSWY9XCJtb2Q/LkluZm8gIT0gbnVsbFwiIFtkaXNhYmxlZF09XCJtb2Q/LkluZm8gPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ1Zpc3VhbGl6YXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cInZpZXcobW9kKVwiICpuZ0lmPVwiZW5hYmxlZHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dmlzaWJpbGl0eTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRUb29sdGlwXT1cIidFZGl0YXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVkaXQobW9kKVwiICpuZ0lmPVwiKGRpc2FibGVkY29sID09ICcnIHx8IG1vZFtkaXNhYmxlZGNvbF0gPT09IHRydWUpICYmIGVuYWJsZWRlZGl0ICYmIGhhc1Blcm1pc3Npb25FZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ0V4Y2x1aXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImRlbGV0ZShtb2QpXCIgKm5nSWY9XCIoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGRlbGV0ZSAmJiBoYXNQZXJtaXNzaW9uRGVsZXRlICYmICFtb2QuSGlkZURlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRUb29sdGlwXT1cIidBY2Vzc2FyJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJlZGl0KG1vZClcIiAqbmdJZj1cIigoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXQpIHx8IGVuYWJsZWR2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFuay10YWJsZVwiICpuZ0lmPVwiZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID09IDBcIj57e1wiTmVuaHVtSXRlbUVuY29udHJhZG9cIiB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG5cclxuICAgICAgICA8aW5mby1wYWdpbmF0b3IgI3BhZ2luYXRvciBbaGlkZGVuXT1cIiFwYWdlZCB8fCAoZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID09IDApXCIgW3NpemVdPVwic2l6ZVwiIChjaGFuZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCIgPjwvaW5mby1wYWdpbmF0b3I+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYmxvY2tcIiAqbmdJZj1cImxvYWRpbmdcIj48L2Rpdj5cclxuPGluZm8tYWxlcnQgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzXCI+PC9pbmZvLWFsZXJ0PiIsIjxpbmZvLW1vZGFsIChvbnNhdmUpPVwic2F2ZSgpXCIgbW9kYWx0aXRsZT1cIkN1c3RvbWl6YXJUYWJlbGFcIiA+XHJcbiAgICA8aW5mby1tZXNzYWdlIGNvbG9yPVwid2FybmluZ1wiIGNsYXNzPVwibWluXCI+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+PG1hdC1pY29uIGNsYXNzPVwiaWNvbi1vdXRcIj5pbmZvPC9tYXQtaWNvbj57eyAnQ3VzdG9taXphclRhYmVsYURlc2NyaWNhbzEnIHwgdHJhbnNsYXRlIH19PC9saT5cclxuICAgICAgICAgICAgPGxpPjxtYXQtaWNvbiBjbGFzcz1cImljb24tb3V0XCI+ZGFuZ2Vyb3VzPC9tYXQtaWNvbj57eyAnQ3VzdG9taXphclRhYmVsYURlc2NyaWNhbzInIHwgdHJhbnNsYXRlIH19PC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIFxyXG4gICAgPC9pbmZvLW1lc3NhZ2U+XHJcbiAgICBcclxuICAgIDx1bCBjbGFzcz1cImxpc3RhZ2VtXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb2x1bmFzXCIgPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJpdGVtLkdyaWRBdHVhbFwiID5cclxuICAgICAgICAgICAgICAgIDxpbmZvLWNoZWNrYm94IFsobmdNb2RlbCldPVwiaXRlbS5FeGliaXJcIiBbcGxhY2Vob2xkZXJdPVwiaXRlbS5Ob21lXCIgW25hbWVdPVwiJ2Noa2NvbHVuYScgKyBpdGVtLk5vbWVcIiA+PC9pbmZvLWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC91bD5cclxuPC9pbmZvLW1vZGFsPiJdfQ==
|
|
1953
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvZ3JpZC9ncmlkLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUwsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFB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QUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbnRlbnRDaGlsZHJlbiwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBJbmplY3QsIEhvc3RMaXN0ZW5lciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2RhdGEuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbmZvRm9ybVByb3BNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9mb3JtLXByb3AubW9kZWxcIjtcclxuaW1wb3J0IHsgSW5mb1BhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gXCIuLi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nTW9kYWwgfSBmcm9tIFwiLi4vLi4vbGF5b3V0cy9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvYXV0aGVudGljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dCdXR0b25zIH0gZnJvbSBcIi4uLy4uL2VudW0vZGlhbG9nLWJ1dHRvbnMuZW51bVwiO1xyXG5pbXBvcnQgeyBJbmZvTW9kYWxBY3Rpb24gfSBmcm9tIFwiLi4vLi4vZW51bS9tb2RhbC1hY3Rpb24uZW51bVwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnZUFjdGlvbiB9IGZyb20gXCIuLi8uLi9lbnVtL3BhZ2UtYWN0aW9uLmVudW1cIjtcclxuaW1wb3J0IHsgSW5mb1BhZ2ViYXJCdXR0b25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9wYWdlYmFyLWJ1dHRvbnMubW9kZWxcIjtcclxuaW1wb3J0IHsgSW5mb0dyaWRCdXR0b25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9ncmlkLWJ1dHRvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvTGFzdFNlYXJjaE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2xhc3Qtc2VhcmNoLm1vZGVsXCI7XHJcbmltcG9ydCB7IEluZm9NZXRob2RHcmlkQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvbWV0aG9kLWdyaWQtYnV0dG9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IE5nTW9kZWwsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluZm9QbGF0Zm9ybU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnaW5mby1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbSW5mb0Zvcm1Qcm9wTW9kZWxdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgcGFnZXRpdGxlID0gJyc7XHJcbiAgICBASW5wdXQoKSBwcmVmaXh0aXRsZSA9ICcnO1xyXG4gICAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnJztcclxuICAgIEBJbnB1dCgpIHBhZ2ViYXJidXR0b25zOiBJbmZvUGFnZWJhckJ1dHRvbk1vZGVsW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGZ1bGxhcmVhID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgYXBpOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbWV0aG9kOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KCkgZm9ybTogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgPSA4MDA7XHJcbiAgICBASW5wdXQoKSBwYXJlbnQ6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBhcGlkb3dubG9hZDogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZGRvd25sb2FkOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIEBJbnB1dCgpIGJhY2t1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIG5ld3VybCA9ICcnO1xyXG4gICAgQElucHV0KCkgbmV3bGFiZWwgPSAnTm92byc7XHJcbiAgICBASW5wdXQoKSBlZGl0dXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSB2aWV3dXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZXVybCA9ICcnO1xyXG5cclxuICAgIEBJbnB1dCgpIHBhZ2VkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzaXplID0gMTU7XHJcbiAgICBASW5wdXQoKSBhdXRvcmVmcmVzaCA9IDA7XHJcblxyXG4gICAgQElucHV0KCkgZW5hYmxlZGNvbHMgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZG5ldyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZWRpdCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZGVsZXRlID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWR2aWV3ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRjYW5jZWxzZWFyY2ggPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGRldGFpbCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNsYXNzaWNvbnMgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNsaWNrYWNjZXNzID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xpY2tldmVudCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGV4cGFuZCA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIHNlYXJjaG9wZW5lZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2VhcmNob25seW9uZWJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZXNlYXJjaGxhc3QgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHN0YXRpY3RpdGxlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZGNvbCA9ICcnO1xyXG4gICAgQElucHV0KCkgYWNjZXNzaWNvbiA9ICdhcnJvd19mb3J3YXJkJztcclxuXHJcbiAgICBASW5wdXQoKSBsb2Fkb25pbml0ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGRhdGE6IGFueVtdO1xyXG4gICAgQElucHV0KCkgc2VhcmNobW9kZWw6IGFueSA9IG51bGw7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uYmVmb3Jlc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9ubG9hZGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9uY2xvc2Vtb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbm5ldyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbmVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb252aWV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9uZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGN1c3RvbWRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBkeW5hbWljY29sczogc3RyaW5nID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbnM6IEluZm9HcmlkQnV0dG9uTW9kZWxbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgc2VhcmNoYnV0dG9uczogSW5mb01ldGhvZEdyaWRCdXR0b25Nb2RlbFtdID0gW107XHJcblxyXG4gICAgQElucHV0KCkgc2hvd21lc3NhZ2VlcnJvciA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGVmYXVsdG5ld29iamVjdDogYW55ID0gbnVsbDtcclxuICAgIFxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihOZ01vZGVsKSBmb3JtTW9kZWw6IFF1ZXJ5TGlzdDxOZ01vZGVsPjtcclxuICAgIEBWaWV3Q2hpbGQoTmdGb3JtLCB7IHN0YXRpYzogZmFsc2UgfSkgZm9ybVNlYXJjaDogTmdGb3JtO1xyXG4gICAgXHJcbiAgICBtZXNzYWdlczogU3RyaW5nW10gPSBbXTtcclxuICAgIHJlc3VsdFRpdGxlID0gJyc7XHJcbiAgICBlbmFibGVkU2VhcmNoID0gZmFsc2U7XHJcbiAgICBzZWFyY2hNb2RlbFJlc2V0OiBhbnkgPSBudWxsO1xyXG4gICAgZGlzYWJsZWRDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgb3ZlckluZGV4OiBudW1iZXIgPSAtMTtcclxuICAgIG92ZXJMYXN0SW5kZXg6IG51bWJlciA9IC0xO1xyXG4gICAgb25hY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzaG93UGFnZWJhciA9IGZhbHNlO1xyXG4gICAgaGFzUGVybWlzc2lvbk5ldyA9IGZhbHNlO1xyXG4gICAgaGFzUGVybWlzc2lvbkVkaXQgPSBmYWxzZTtcclxuICAgIGhhc1Blcm1pc3Npb25EZWxldGUgPSBmYWxzZTtcclxuXHJcbiAgICB0YWJsZUhlaWdodCA9IDA7XHJcbiAgICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBwYWdlYmFyVGl0bGUgPSAnJztcclxuICAgIGljb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgY29sdW5hc0l0ZW5zID0gW107XHJcbiAgICBjb2x1bmFzSGVhZGVycyA9IFtdO1xyXG4gICAgY29sdW5hc1BhZHJhb0hlYWRlcnMgPSBbXTtcclxuICAgIGNvbHVuYXNUeXBlID0gW107XHJcbiAgICBjb2x1bmFzV2lkdGggPSBbXTtcclxuICAgIGNvbHVuYXNUcmFuc2xhdGUgPSBbXTtcclxuICAgIGNvbHVuYXNIdG1sID0gW107XHJcbiAgICBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zID0gW107XHJcbiAgICBjdXJyZW50VXJsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgdXJsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgY2hhdmVTdG9yYWdlOiBzdHJpbmcgPSAnY29scyc7XHJcbiAgICBpZGVudGlmaWNhZG9yOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGltaXRjaGFyYWN0ZXJzOiBudW1iZXIgPSAyNTA7XHJcbiAgICBjYWxsVGltZW91dDogYW55O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmF0b3I6IEluZm9QYWdpbmF0b3JDb21wb25lbnQ7XHJcbiAgICBAT3V0cHV0KCkgcGFyZW50SWRVcmxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcGFyZW50SWRVcmxWYWx1ZTogbnVtYmVyID0gbnVsbDtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcGFyZW50SWRVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50SWRVcmxWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgcGFyZW50SWRVcmwodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnBhcmVudElkVXJsVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnBhcmVudElkVXJsQ2hhbmdlLmVtaXQodGhpcy5wYXJlbnRJZFVybFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBfY29sczogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGNvbHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNvbHModmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9jb2xzID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlhbG9nOiBJbmZvRGlhbG9nTW9kYWwsIFxyXG4gICAgICAgICAgICAgICAgcHVibGljIF9wbGF0Zm9ybTogSW5mb1BsYXRmb3JtTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgbW9kYWw6IE1hdERpYWxvZywgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wcm9wOiBJbmZvRm9ybVByb3BNb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9kYXRhQWNjZXNzU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25TZXJ2aWNlOiBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IEluZm9UcmFuc2xhdGVTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2xhc3RTZWFyY2g6IEluZm9MYXN0U2VhcmNoTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNhbGxUaW1lb3V0KTtcclxuICAgICAgICB0aGlzLnVybCA9ICh0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhWydVUkwnXSB8fCB0aGlzLl9yb3V0ZXIudXJsKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3V4YycgKyB0aGlzLl9wbGF0Zm9ybS5Db25maWcudXgpO1xyXG4gICAgICAgIHRoaXMuc2V0UGFnZWJhclRpdGxlKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWV0aG9kID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZCA9ICdTZWFyY2gnO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNb2RlbFJlc2V0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZWFyY2htb2RlbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLnBhcmVudCAhPSBudWxsICYmICh0aGlzLm1ldGhvZCA9PSBudWxsIHx8IHRoaXMubWV0aG9kID09ICcnKSlcclxuICAgICAgICAgICAgdGhpcy5tZXRob2QgPSAnR2V0QnlQYXJlbnRJZCc7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlc2VhcmNobGFzdCAmJiB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy5fbGFzdFNlYXJjaC51cmwpID09IHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLnVybCkpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkU2VhcmNoID0gdGhpcy5fbGFzdFNlYXJjaC5lbmFibGVkU2VhcmNoO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbCAmJiB0aGlzLl9sYXN0U2VhcmNoLm1vZGVsICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc2VhcmNobW9kZWwsIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNob3BlbmVkKVxyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRTZWFyY2ggPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hdXRvcmVmcmVzaCA+IDApXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFVybCA9IGxvY2F0aW9uLmhyZWY7XHJcblxyXG4gICAgICAgIHRoaXMuX3Byb3AuYXBpID0gdGhpcy5hcGk7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbENvbXBvbmVudCA9IHRoaXMuZm9ybTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pZGVudGlmaWNhZG9yID0gdGhpcy5hcGkgKyAnXycgKyB0aGlzLm1ldGhvZDtcclxuICAgICAgICB0aGlzLnNob3dQYWdlYmFyID0gdGhpcy5wYWdldGl0bGUgIT0gJycgfHwgdGhpcy5wcmVmaXh0aXRsZSAhPSAnJztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIXRoaXMuZnVsbGFyZWEgJiYgdGhpcy5fcGxhdGZvcm0uQ29uZmlnLnV4IDw9IDIpXHJcbiAgICAgICAgICAgIHRoaXMuZnVsbGFyZWEgPSB0aGlzLnNob3dQYWdlYmFyO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAmJiB0aGlzLmZvcm1Nb2RlbC5sZW5ndGggPiAwICYmIHRoaXMuZm9ybVNlYXJjaClcclxuICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWwudG9BcnJheSgpLmZvckVhY2gobW9kZWwgPT4gdGhpcy5mb3JtU2VhcmNoLmFkZENvbnRyb2wobW9kZWwpKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0ICYmIHRoaXMucGFnZWQgJiYgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMuX2xhc3RTZWFyY2gudXJsKSA9PSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5pbmRleCA9IHRoaXMuX2xhc3RTZWFyY2guaW5kZXg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNjb2xzID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb2x1bW5zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbigpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubG9hZG9uaW5pdClcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgZWxzZSB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMuZHluYW1pY2NvbHMpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHMgPSByLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWRvbmluaXQpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5lbmFibGVkY2xpY2tldmVudClcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPSB0cnVlO1xyXG5cclxuICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNhbGxUaW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDb2x1bW5zKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb2xzID09ICcnKVxyXG4gICAgICAgICAgICBhbGVydCgnTmVuaHVtYSBjb2x1bmEgaW5mb3JtYWRhJyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbHMgIT0gJycpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBjb2x1bmFzT2N1bHRhcyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UpICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhZG9zU3RvcmFnZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGFkb3NTdG9yYWdlLmZpbmRJbmRleChjID0+IGMuSWRlbnRpZmljYWRvciA9PSB0aGlzLmlkZW50aWZpY2Fkb3IpID4gLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVuYXNPY3VsdGFzID0gZGFkb3NTdG9yYWdlLmZpbmQoYyA9PiBjLklkZW50aWZpY2Fkb3IgPT0gdGhpcy5pZGVudGlmaWNhZG9yKS5Db2x1bmFzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW5hc09jdWx0YXMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW5hc09jdWx0YXMgPSBjb2x1bmFzT2N1bHRhcy5maWx0ZXIoYyA9PiAhYy5FeGliaXIpLm1hcChjID0+IGMuTm9tZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc0l0ZW5zID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc0hlYWRlcnMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzUGFkcmFvSGVhZGVycyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNUeXBlID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc1dpZHRoID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc1RyYW5zbGF0ZSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNIdG1sID0gW107XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmNvbHMuc3BsaXQoJywnKS5mb3JFYWNoKHJlZ2lzdHJvID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdHJhbnNsYXRlOiBib29sZWFuID0gcmVnaXN0cm8uaW5kZXhPZignIycpID09IC0xO1xyXG4gICAgICAgICAgICAgICAgbGV0IGh0bWw6IGJvb2xlYW4gPSByZWdpc3Ryby5pbmRleE9mKCdAJykgPT0gLTE7XHJcbiAgICAgICAgICAgICAgICByZWdpc3RybyA9IHJlZ2lzdHJvLnJlcGxhY2UoLyMvZywgJycpLnJlcGxhY2UoL0AvZywgJycpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW46IHN0cmluZyA9IHJlZ2lzdHJvO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhlYWRlcjogc3RyaW5nID0gcmVnaXN0cm87XHJcbiAgICAgICAgICAgICAgICBsZXQgdHlwZTogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSByZWdpc3Ryby5zcGxpdCgnOicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IGRhZG9zWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IGRhZG9zWzFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZXhPZignPScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFydHMgPSBoZWFkZXIuc3BsaXQoJz0nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbiA9PSBoZWFkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IHBhcnRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBwYXJ0c1swXTtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlID0gcGFydHNbMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGF1eCA9IHR5cGUgPT0gJycgPyBoZWFkZXIgOiB0eXBlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1eC5pbmRleE9mKCcqJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJJbmZvID0gYXV4LnNwbGl0KCcqJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4gPT0gaGVhZGVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IGhlYWRlckluZm9bMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0eXBlID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBoZWFkZXJJbmZvWzFdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGguaW5kZXhPZignJScpIDwgMCAmJiB3aWR0aC5pbmRleE9mKCdweCcpIDwgMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKz0gJ3B4JztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY29sdW5hc09jdWx0YXMuaW5kZXhPZihoZWFkZXIpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc0l0ZW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNIZWFkZXJzLnB1c2goaGVhZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNUeXBlLnB1c2godHlwZSA9PSAnJyA/ICdsYWJlbCcgOiB0eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNXaWR0aC5wdXNoKHdpZHRoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNUcmFuc2xhdGUucHVzaCh0cmFuc2xhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc0h0bWwucHVzaChodG1sKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNQYWRyYW9IZWFkZXJzLnB1c2goaGVhZGVyKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5jb2x1bmFzSXRlbnMubGVuZ3RoID09IDEgJiYgdGhpcy5jb2x1bmFzV2lkdGgubGVuZ3RoID09IDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVuYXNXaWR0aFswXSA9ICcxMDAlJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SXRlbnNFeHBhbmRpZG9zKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5lbmFibGVkZXhwYW5kKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5jb2x1bmFzSXRlbnNFeHBhbmRpZG9zID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByb3cgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVuYXNJdGVucz8ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNJdGVuc0V4cGFuZGlkb3MucHVzaChyb3cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYWdlYmFyVGl0bGUoKSB7XHJcbiAgICAgICAgbGV0IGF1eCA9ICcnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcmVmaXh0aXRsZSAhPSAnJylcclxuICAgICAgICAgICAgYXV4ID0gdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnByZWZpeHRpdGxlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0VGl0bGUgIT0gJycpXHJcbiAgICAgICAgICAgIGF1eCArPSAodGhpcy5wcmVmaXh0aXRsZSAhPSAnJyA/ICcgLyAnIDogJycpICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnJlc3VsdFRpdGxlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGFnZXRpdGxlICE9ICcnKVxyXG4gICAgICAgICAgICBhdXggKz0gKHRoaXMucmVzdWx0VGl0bGUgIT0gJycgfHwgdGhpcy5wcmVmaXh0aXRsZSAhPSAnJyA/ICcgLyAnIDogJycpICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnBhZ2V0aXRsZSk7XHJcblxyXG4gICAgICAgIHRoaXMucGFnZWJhclRpdGxlID0gYXV4O1xyXG4gICAgfVxyXG5cclxuICAgIG5hdmlnYXRlVG8odXJsOiBzdHJpbmcsIHBhc3NJZDogYm9vbGVhbiwgaWQ/OiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgaWYgKHBhc3NJZCkge1xyXG4gICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoXCI6aWRcIikgPiAtMSlcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybC5yZXBsYWNlKCc6aWQnLCBpZCkpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdXJsLCBpZF0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5DdXN0b21Nb2RhbChtb2RhbENvbXBvbmVudDogYW55LCB3aWR0aDogTnVtYmVyLCBtb2RlbDogYW55ID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWRDbGljayA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLk5vbmUsIG1vZGVsKTtcclxuICAgICAgICB0aGlzLm9wZW5Nb2RhbChtb2RhbENvbXBvbmVudCwgd2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEoKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcGkgPT0gbnVsbCB8fCB0aGlzLmFwaSA9PSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VhcmNoKCk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFnZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFnZWQoKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5wYXJlbnQgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5nZXRBbGwoKTtcclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLmdldEJ5UGFyZW50SWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGwoKTogYW55IHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyKSk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5hcGksIHRoaXMuc2VhcmNobW9kZWwsIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYWdlZCgpOiBhbnkge1xyXG5cclxuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wYXJlbnQgPT0gbnVsbCA/IFwiXCIgOiBcImlkPVwiICsgdGhpcy5wYXJlbnQgKyBcIiZcIjtcclxuICAgICAgICBwYXJhbXMgKz0gJ2luZGV4PScgKyB0aGlzLnBhZ2luYXRvci5pbmRleCArICcmc2l6ZT0nICsgdGhpcy5zaXplO1xyXG5cclxuICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZVxyXG4gICAgICAgICAgICAuZ2V0KHRoaXMuYXBpLCB0aGlzLm1ldGhvZCwgcGFyYW1zKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIHRydWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTZWFyY2goKTogYW55IHtcclxuICAgICAgICB0aGlzLm9uYmVmb3Jlc2VhcmNoLmVtaXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNobW9kZWwuSW5kZXggPSB0aGlzLnBhZ2luYXRvci5pbmRleDtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2htb2RlbC5TaXplID0gdGhpcy5zaXplO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGRhdGFJbmljaWFsID0gdGhpcy5zZWFyY2htb2RlbFtcIkRhdGFJbmljaWFsXCJdO1xyXG4gICAgICAgIHZhciBkYXRhRmluYWwgPSB0aGlzLnNlYXJjaG1vZGVsW1wiRGF0YUZpbmFsXCJdO1xyXG4gICAgICAgIGlmIChkYXRhSW5pY2lhbCAhPSBudWxsICYmIGRhdGFGaW5hbCAhPSBudWxsICYmIG5ldyBEYXRlKGRhdGFJbmljaWFsKSA+IG5ldyBEYXRlKGRhdGFGaW5hbCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKCdEYXRhSW5pY2lhbE1haW9yRmluYWwnKTtcclxuICAgICAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZGF0YUluaWNpbyA9IHRoaXMuc2VhcmNobW9kZWxbXCJEYXRhSW5pY2lvXCJdO1xyXG4gICAgICAgIHZhciBkYXRhRmltID0gdGhpcy5zZWFyY2htb2RlbFtcIkRhdGFGaW1cIl07XHJcbiAgICAgICAgaWYgKGRhdGFJbmljaW8gIT0gbnVsbCAmJiBkYXRhRmltICE9IG51bGwgJiYgbmV3IERhdGUoZGF0YUluaWNpbykgPiBuZXcgRGF0ZShkYXRhRmltKSkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goJ0RhdGFJbmljaW9NYWlvckZpbScpO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuYXBpLCB0aGlzLnNlYXJjaG1vZGVsLCB0aGlzLm1ldGhvZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMuZ2V0RGF0YVJldHVybihyLCB0aGlzLnBhZ2VkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnlQYXJlbnRJZCgpOiBhbnkge1xyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kLCAnaWQ9JyArIHRoaXMucGFyZW50KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIGZhbHNlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVJldHVybihyZXN1bHQ6IGFueSwgcmVmcmVzaFBhZ2luYXRvcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2gudXJsID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMudXJsKTtcclxuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC5lbmFibGVkU2VhcmNoID0gdGhpcy5lbmFibGVkU2VhcmNoO1xyXG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLm1vZGVsID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZWFyY2htb2RlbCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdlZClcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2guaW5kZXggPSB0aGlzLnBhZ2luYXRvci5pbmRleDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSByZXN1bHQuZGF0YTtcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGF0aWN0aXRsZSAmJiByZXN1bHQubmFtZSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRUaXRsZSA9IHRoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUocmVzdWx0Lm5hbWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5kZXNjcmlwdGlvbiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHJlc3VsdC5kZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQucGFyZW50SWQgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50SWRVcmwgPSByZXN1bHQucGFyZW50SWQ7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVmcmVzaFBhZ2luYXRvcilcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnJlZnJlc2gocmVzdWx0LnRvdGFsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9yZWZyZXNoID4gMCAmJiB0aGlzLmN1cnJlbnRVcmwgPT0gbG9jYXRpb24uaHJlZikge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2FsbFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmdldERhdGEoKTsgfSwgdGhpcy5hdXRvcmVmcmVzaCAqIDEwMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmZpbGxJY29ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEl0ZW5zRXhwYW5kaWRvcygpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgICAgICAgaWYodGhpcy5zaG93bWVzc2FnZWVycm9yKSB0aGlzLm1lc3NhZ2VzID0gcmVzdWx0Lm1lc3NhZ2VzO1xyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICB0aGlzLm9ubG9hZGNvbXBsZXRlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VQYWdlKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gaW5kZXg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VhcmNoKCk7XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5nZXRQYWdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjJywgWyckZXZlbnQnXSlcclxuICAgIGNhbmNlbFNlYXJjaChlOiBFdmVudCA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZFNlYXJjaCB8fCB0aGlzLnNlYXJjaG1vZGVsID09IG51bGwgfHwgdGhpcy5vbmFjdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc2VhcmNobW9kZWwsIHRoaXMuc2VhcmNoTW9kZWxSZXNldCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5pbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uaW5zZXJ0JywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC4rJywgWyckZXZlbnQnXSlcclxuICAgIGFkZChlOiBFdmVudCA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5vbmFjdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uTmV3LCB0aGlzLmRlZmF1bHRuZXdvYmplY3QpO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5uZXd1cmwgPT0gbnVsbCB8fCB0aGlzLm5ld3VybCA9PSAnJylcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3dXJsID0gdGhpcy51cmw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm5ld3VybCArPSAnL25vdm8nO1xyXG4gICAgICAgICAgICB0aGlzLm5ld3VybCA9IHRoaXMubmV3dXJsLnJlcGxhY2UoJy8vJywgJy8nKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMubmV3dXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub25uZXcuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRldGFpbChtb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uU2VhcmNoLCBtb2RlbCk7XHJcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuICAgIH1cclxuXHJcbiAgICBtb3N0cmFyTWFpcyhsaW5oYSwgY29sdW5hKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2xpbmhhXVtjb2x1bmFdID0gIXRoaXMuY29sdW5hc0l0ZW5zRXhwYW5kaWRvc1tsaW5oYV1bY29sdW5hXSBcclxuICAgIH1cclxuXHJcbiAgICBhY2Nlc3MobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkQ2xpY2spe1xyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkQ2xpY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9pZiAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3Mpe1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWRjbGlja2V2ZW50KVxyXG4gICAgICAgICAgICB0aGlzLm9udmlldy5lbWl0KG1vZGVsKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgZWxzZSB0aGlzLmVkaXQobW9kZWwsIGZhbHNlKTtcclxuICAgICAgICAvL31cclxuICAgIH1cclxuXHJcbiAgICB2aWV3KG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkQ2xpY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub25hY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSB0aGlzLm92ZXJJbmRleDtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uVmlldywgbW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3dXJsID09IG51bGwgfHwgdGhpcy52aWV3dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy51cmw7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy52aWV3dXJsICs9ICcvJyArIG1vZGVsLklkICsgKHRoaXMuZW5hYmxlZGNsaWNrYWNjZXNzID8gJycgOiAnL3Zpc3VhbGl6YXInKTtcclxuICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy52aWV3dXJsLnJlcGxhY2UoJy8vJywgJy8nKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudmlld3VybCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9udmlldy5lbWl0KG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0KG1vZGVsOiBhbnksIGRpc2FibGVkQ2xpY2s6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZENsaWNrID0gZGlzYWJsZWRDbGljaztcclxuICAgICAgICB0aGlzLm9uYWN0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5vdmVyTGFzdEluZGV4ID0gdGhpcy5vdmVySW5kZXg7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXggPSAtMTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUGVybWlzc2lvbkVkaXQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5FZGl0LCBtb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXR1cmwgPT0gbnVsbCB8fCB0aGlzLmVkaXR1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0dXJsID0gdGhpcy51cmw7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0dXJsID0gdGhpcy5lZGl0dXJsLnJlcGxhY2UoJy8vJywgJy8nKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3RoaXMuZWRpdHVybCwgbW9kZWwuSWRdKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5vbmVkaXQuZW1pdChtb2RlbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5WaWV3LCBtb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG4gICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3dXJsID09IG51bGwgfHwgdGhpcy52aWV3dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3VybCA9IHRoaXMudXJsO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsICs9ICcvJyArIG1vZGVsLklkICsgKHRoaXMuZW5hYmxlZGNsaWNrYWNjZXNzID8gJycgOiAnL3Zpc3VhbGl6YXInKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld3VybCA9IHRoaXMudmlld3VybC5yZXBsYWNlKCcvLycsICcvJyk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudmlld3VybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgICAgICB0aGlzLm9udmlldy5lbWl0KG1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGRlbGV0ZShtb2RlbDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZENsaWNrID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9uYWN0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5vdmVyTGFzdEluZGV4ID0gdGhpcy5vdmVySW5kZXg7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXggPSAtMTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5jdXN0b21kZWxldGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21kZWxldGUuZW1pdChtb2RlbCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5ZZXNPck5vKCdNZW5zYWdlbUV4Y2x1aXInKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UuZGVsZXRlKHRoaXMuYXBpLCBtb2RlbC5JZCkuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25kZWxldGUuZW1pdChkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd21lc3NhZ2VlcnJvcikgdGhpcy5tZXNzYWdlcyA9IGQubWVzc2FnZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlckluZGV4ID0gdGhpcy5vdmVyTGFzdEluZGV4O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyTGFzdEluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uYWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjdXN0b21pemVUYWJsZSgpe1xyXG4gICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLkVkaXQsIHsgXHJcbiAgICAgICAgICAgIElkZW50aWZpY2Fkb3I6IHRoaXMuaWRlbnRpZmljYWRvciwgXHJcbiAgICAgICAgICAgIENvbHVuYXM6IHRoaXMuY29sdW5hc1BhZHJhb0hlYWRlcnMsIFxyXG4gICAgICAgICAgICBDaGF2ZTogdGhpcy5jaGF2ZVN0b3JhZ2UgXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3Byb3AubW9kYWxBY3Rpb24gPSBJbmZvTW9kYWxBY3Rpb24uTm9uZTtcclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5tb2RhbC5vcGVuKEluZm9HcmlkTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YTogdGhpcy5fcHJvcCxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uU2F2ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLmYnLCBbJyRldmVudCddKVxyXG4gICAgZmluZChlOiBFdmVudCA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCA9PSBudWxsIHx8IHRoaXMub25hY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG4gICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9ICF0aGlzLmVuYWJsZWRTZWFyY2g7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWRTZWFyY2gpe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwcmltZWlyb0NhbXBvOiBIVE1MSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdyaWQtc2VhcmNoIGluZm8taW5wdXQgaW5wdXQnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJpbWVpcm9DYW1wbylcclxuICAgICAgICAgICAgICAgICAgICBwcmltZWlyb0NhbXBvLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0sIDUwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlsbEljb25zKCkge1xyXG4gICAgICAgIHRoaXMuaWNvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKHJldCA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHJldFsnSWNvbiddO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignfCcpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXRvcm5vID0gaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnfCcpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChpY29uZSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWNvbmUuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IGljb25lLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBOYW1lOiBpdGVtLCBJY29uOiBkYWRvc1swXSwgVG9vbHRpcDogZGFkb3NbMV0sIFByaW5jaXBhbDogdHJ1ZSB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiB7IE5hbWU6IGl0ZW0sIEljb246IGljb25lLCBUb29sdGlwOiAnJywgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbHRlcihhID0+IGEuSWNvbiAhPSBudWxsICYmIGEuSWNvbiAhPSAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHJldG9ybm8uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pY29ucy5maW5kKGEgPT4gYS5OYW1lID09IGVsZW1lbnQuTmFtZSAmJiBhLkljb24gPT0gZWxlbWVudC5JY29uKSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5QcmluY2lwYWwgPSBpbmRleCA9PSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDogYW55ID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSBpdGVtLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogZGFkb3NbMF0sIFRvb2x0aXA6IGRhZG9zWzFdLCBQcmluY2lwYWw6IHRydWUgfTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogaXRlbSwgVG9vbHRpcDogXCJcIiwgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaWNvbnMuZmluZChhID0+IGEuTmFtZSA9PSBlbGVtZW50Lk5hbWUpID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pY29ucy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5mbyh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5hbGVydCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFjaygpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5iYWNrdXJsICsgKHRoaXMucGFyZW50SWRVcmwgPT0gbnVsbCA/IFwiXCIgOiBcIi9cIiArIHRoaXMucGFyZW50SWRVcmwpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnkgPSB0aGlzLmZvcm0sIHdpZHRoOiBOdW1iZXIgPSB0aGlzLndpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5Ob25lO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5tb2RhbC5vcGVuKG1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX3Byb3AsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uU2F2ZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbmNsb3NlbW9kYWwuZW1pdChyKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMub3ZlckluZGV4ID0gdGhpcy5vdmVyTGFzdEluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgdGhpcy5vbmFjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgocikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoci5rZXkgPT0gXCJFc2NhcGVcIiB8fCByLmtleSA9PSBcIkVzY1wiIHx8IHIua2V5ID09IFwiMjdcIikpXHJcbiAgICAgICAgICAgICAgICByZWYuY2xvc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTG9hZCgpIHtcclxuICAgICAgICB0aGlzLnNldFBhZ2ViYXJUaXRsZSgpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb24oKSB7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uTmV3ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICduZXcnKTtcclxuICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb25FZGl0ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdlZGl0Jyk7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uRGVsZXRlID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdyZW1vdmUnKTtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWQoYXJxdWl2b0lkOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5hcGlkb3dubG9hZCA9PSBudWxsKVxyXG4gICAgICAgICAgICBhbGVydCgnQVBJIERvd25sb2FkIGVzdMOhIG51bGwnKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZS5nZXQodGhpcy5hcGlkb3dubG9hZCwgKHRoaXMubWV0aG9kZG93bmxvYWQgIT0gbnVsbCA/IHRoaXMubWV0aG9kZG93bmxvYWQgOiAnR2V0JyksIFwiaWQ9XCIgKyBhcnF1aXZvSWQpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHIubWVzc2FnZXM7XHJcblxyXG4gICAgICAgICAgICBpZiAoci5zdWNjZXNzICYmIHIuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmluYXJ5U3RyaW5nID0gd2luZG93LmF0b2Ioci5kYXRhLkNvbnRldWRvKTtcclxuICAgICAgICAgICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5TGVuKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmluYXJ5TGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICAgICAgICAgYnl0ZXNbaV0gPSBhc2NpaTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtieXRlc10pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRBOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBLmhyZWYgPSBmaWxlVVJMO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudEEuZG93bmxvYWQgPSByLmRhdGEuTm9tZTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudEEuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXZlbnRCdXR0b24obW9kZWw6IGFueSwgYXBpOiBhbnksIG1ldGhvZDogc3RyaW5nLCBjb25maXJtOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1xyXG4gICAgICAgICAgICAgICAgLlllc09yTm8oJ01lbnNhZ2VtQ29uZmlybWFyJylcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmV0LmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UucG9zdChhcGksIG1vZGVsLCBtZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2hvd21lc3NhZ2VlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gci5tZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UucG9zdChhcGksIG1vZGVsLCBtZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2hvd21lc3NhZ2VlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gci5tZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uc3BhY2UnLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dEVkaXQoZTogS2V5Ym9hcmRFdmVudCl7XHJcbiAgICAgICAgaWYgKHRoaXMub25hY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vdmVySW5kZXggPiAtMSlcclxuICAgICAgICAgICAgdGhpcy5lZGl0KHRoaXMuZGF0YVt0aGlzLm92ZXJJbmRleF0sIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmRlbGV0ZScsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dERlbGV0ZShlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAodGhpcy5vbmFjdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm92ZXJJbmRleCA+IC0xKVxyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZSh0aGlzLmRhdGFbdGhpcy5vdmVySW5kZXhdKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmhvbWUnLCBbJyRldmVudCddKVxyXG4gICAgc2hvcnRjdXRGaXJzdChlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAodGhpcy5vbmFjdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXggPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW5kJywgWyckZXZlbnQnXSlcclxuICAgIHNob3J0Y3V0TGFzdChlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAodGhpcy5vbmFjdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXggPSB0aGlzLnBhZ2luYXRvci5udW1iZXJJdGVuc1BhZ2UgLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uYXJyb3d1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dE5hdmlnYXRlRG93bihlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAodGhpcy5vbmFjdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXgtLTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3ZlckluZGV4IDwgMClcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucHJldmlvdXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJJbmRleCA9IHIgPT0gbnVsbCA/IDAgOiAoci5udW1iZXJJdGVuc1BhZ2UgLSAxKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5hcnJvd2Rvd24nLCBbJyRldmVudCddKVxyXG4gICAgc2hvcnRjdXROYXZpZ2F0ZVVwKGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGlmICh0aGlzLm9uYWN0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCsrO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vdmVySW5kZXggPj0gdGhpcy5wYWdpbmF0b3IubnVtYmVySXRlbnNQYWdlKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5uZXh0KCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVySW5kZXggPSByID09IG51bGwgPyAodGhpcy5wYWdpbmF0b3IubnVtYmVySXRlbnNQYWdlIC0gMSkgOiAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLnBhZ2Vkb3duJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcclxuICAgIHNob3J0Y3V0UGFnZVByZXZpb3VzKGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGlmICh0aGlzLm9uYWN0aW9uIHx8IHRoaXMuZW5hYmxlZFNlYXJjaClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IucHJldmlvdXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG4gICAgICAgIH0pOztcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLnBhZ2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCddKVxyXG4gICAgc2hvcnRjdXRQYWdlTmV4dChlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAodGhpcy5vbmFjdGlvbiB8fCB0aGlzLmVuYWJsZWRTZWFyY2gpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLm5leHQoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiAnZ3JpZC5tb2RhbC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW0luZm9Gb3JtUHJvcE1vZGVsXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0dyaWRNb2RhbENvbXBvbmVudCB7XHJcblxyXG4gICAgaWRlbnRpZmljYWRvcjogc3RyaW5nO1xyXG4gICAgY2hhdmVTdG9yYWdlOiBzdHJpbmc7XHJcbiAgICBjb2x1bmFzOiBhbnkgPSBbXTtcclxuICAgIGRhZG9zU3RvcmFnZTogYW55ID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIF9wcm9wOiBJbmZvRm9ybVByb3BNb2RlbCwgcHJpdmF0ZSBfcmVmOiBNYXREaWFsb2dSZWY8SW5mb0dyaWRNb2RhbENvbXBvbmVudD4sIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2cpe1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCl7XHJcbiAgICAgICAgdGhpcy5pZGVudGlmaWNhZG9yID0gdGhpcy5fcHJvcC5kYXRhLklkZW50aWZpY2Fkb3I7XHJcbiAgICAgICAgdGhpcy5jaGF2ZVN0b3JhZ2UgPSB0aGlzLl9wcm9wLmRhdGEuQ2hhdmU7XHJcblxyXG4gICAgICAgIGxldCBjb2x1bmFzR3JpZCA9IHRoaXMuX3Byb3AuZGF0YS5Db2x1bmFzLm1hcChjID0+IHsgcmV0dXJuIHsgTm9tZTogYywgRXhpYmlyOiB0cnVlLCBHcmlkQXR1YWw6IHRydWUgfTsgfSk7XHJcblxyXG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkgPT0gbnVsbClcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UsIEpTT04uc3RyaW5naWZ5KFtdKSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGFkb3NTdG9yYWdlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kYWRvc1N0b3JhZ2UuZmluZEluZGV4KGMgPT4gYy5JZGVudGlmaWNhZG9yID09IHRoaXMuaWRlbnRpZmljYWRvcikgPCAwKVxyXG4gICAgICAgICAgICB0aGlzLmRhZG9zU3RvcmFnZS5wdXNoKHsgSWRlbnRpZmljYWRvcjogdGhpcy5pZGVudGlmaWNhZG9yLCBDb2x1bmFzOiBjb2x1bmFzR3JpZCB9KTtcclxuXHJcbiAgICAgICAgbGV0IGNvbHVuYXNHZXJhbCA9IHRoaXMuZGFkb3NTdG9yYWdlLmZpbmQoYyA9PiBjLklkZW50aWZpY2Fkb3IgPT0gdGhpcy5pZGVudGlmaWNhZG9yKS5Db2x1bmFzO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vQWRpY2lvbmEgcG9zc8OtdmVpcyBub3ZhcyBjb2x1bmFzXHJcbiAgICAgICAgY29sdW5hc0dyaWQuZmlsdGVyKGcgPT4gY29sdW5hc0dlcmFsLm1hcChjID0+IGMuTm9tZSkuaW5kZXhPZihnLk5vbWUpIDwgMCkuZm9yRWFjaChub3ZhQ29sdW5hID0+IHtcclxuICAgICAgICAgICAgY29sdW5hc0dlcmFsLnB1c2gobm92YUNvbHVuYSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vRXhpYmUgYXBlbmFzIGFzIGNvbHVuYXMgcHJlc2VudGVzIG5vIGdyaWQgYXR1YWxcclxuICAgICAgICB0aGlzLmNvbHVuYXMgPSBjb2x1bmFzR2VyYWwubWFwKGMgPT4gKHsgLi4uYywgR3JpZEF0dWFsOiBjb2x1bmFzR3JpZC5maW5kSW5kZXgoZyA9PiBnLk5vbWUgPT0gYy5Ob21lKSA+IC0xIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKCl7XHJcbiAgICAgICAgdGhpcy5kYWRvc1N0b3JhZ2UuZmluZChjID0+IGMuSWRlbnRpZmljYWRvciA9PSB0aGlzLmlkZW50aWZpY2Fkb3IpLkNvbHVuYXMgPSB0aGlzLmNvbHVuYXM7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGFkb3NTdG9yYWdlKSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5TYXZlO1xyXG4gICAgICAgIHRoaXMuX3JlZi5jbG9zZSh0aGlzLl9wcm9wKTtcclxuICAgIH1cclxufSIsIjxpbmZvLXBhZ2ViYXIgKm5nSWY9XCJzaG93UGFnZWJhclwiIGljb249XCJ3b3JrXCIgW3BhZ2V0aXRsZV09XCJwYWdlYmFyVGl0bGVcIiBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJiYWNrdXJsICE9IG51bGwgJiYgYmFja3VybCAhPSAnJ1wiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJiYWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPmNoZXZyb25fbGVmdDwvbWF0LWljb24+e3tcIlZvbHRhclwiIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGIgb2YgcGFnZWJhcmJ1dHRvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJiLm1vZGFsID09IG51bGwgPyBuYXZpZ2F0ZVRvKGIudXJsLCBmYWxzZSwgbnVsbCkgOiBvcGVuQ3VzdG9tTW9kYWwoYi5tb2RhbCwgYi5tb2RhbHdpZHRoLCBudWxsKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJiLmljb24gIT0gJ2NoZXZyb25fcmlnaHQnXCIgY2xhc3M9XCJmcy0yMFwiPnt7IGIuaWNvbiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIHt7IGIubGFiZWwgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzZWFyY2htb2RlbCAhPSBudWxsICYmICFlbmFibGVkU2VhcmNoXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImZpbmQoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+c2VhcmNoPC9tYXQtaWNvbj4ge3sgXCJQZXNxdWlzYXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2VhcmNobW9kZWwgIT0gbnVsbCAmJiBlbmFibGVkU2VhcmNoXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImZpbmQoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+c2VhcmNoX29mZjwvbWF0LWljb24+IHt7IFwiT2N1bHRhclwiIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJlbmFibGVkbmV3ICYmIGhhc1Blcm1pc3Npb25OZXdcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYWRkKClcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPmFkZDwvbWF0LWljb24+IHt7IG5ld2xhYmVsIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvYnV0dG9uPlxyXG48L2luZm8tcGFnZWJhcj5cclxuXHJcbjxkaXYgW25nQ2xhc3NdPVwieyAndGFibGUtZnVsbCc6IGZ1bGxhcmVhIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHdoaXRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGdyaWQtc2VhcmNoXCIgW25nU3R5bGVdPVwieyAncGFkZGluZyc6IChlbmFibGVkU2VhcmNoID8gMTAgOiAwKSArICdweCAyMHB4JyB9XCI+XHJcbiAgICAgICAgICAgIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNmb3JtU2VhcmNoPVwibmdGb3JtXCIgKG5nU3VibWl0KT1cInNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW5hYmxlZFNlYXJjaFwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lciByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7KHNlYXJjaGJ1dHRvbnMgfHwgW10pLmxlbmd0aCA9PSAwID8gJzEwJyA6ICc5JyB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3soc2VhcmNoYnV0dG9ucyB8fCBbXSkubGVuZ3RoID09IDAgPyAnMicgOiAnMycgfX0gYWxpZ24tcmlnaHRcIiAqbmdJZj1cInNlYXJjaG1vZGVsICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1idXR0b25zIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaG9ubHlvbmVidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmb3JtU2VhcmNoLmludmFsaWQgfHwgbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQnVzY2FyJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWFyY2hvbmx5b25lYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiY2FuY2VsU2VhcmNoKClcIiAqbmdJZj1cImVuYWJsZWRjYW5jZWxzZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybVNlYXJjaC5pbnZhbGlkIHx8IGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGIgb2Ygc2VhcmNoYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmb3JtU2VhcmNoLmludmFsaWQgfHwgbG9hZGluZ1wiIChjbGljayk9XCJiLm1ldGhvZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJiLmljb25cIiBjbGFzcz1cImZzLTIwXCI+e3tiLmljb24gfCB0cmFuc2xhdGV9fTwvbWF0LWljb24+IHt7Yi5sYWJlbCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxmaWVsZHNldCAqbmdJZj1cIiFzaG93UGFnZWJhclwiPjxsZWdlbmQgW2lubmVySFRNTF09XCJwYWdlYmFyVGl0bGUgfCB0cmFuc2xhdGVcIj48L2xlZ2VuZD48L2ZpZWxkc2V0PlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibG9hZGluZy1iYXJcIj48bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwibG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj48L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDwhLS0gPGRpdiBpZD1cImF1dG8tcmVmcmVzaFwiICpuZ0lmPVwiYXV0b3JlZnJlc2ggPiAwXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBtYXRUb29sdGlwPVwie3sgJ0F1dG9SZWZyZXNoJyB8IHRyYW5zbGF0ZSB9fSB7eyBhdXRvcmVmcmVzaCB9fSBzZWdcIiBtYXRUb29sdGlwUG9zaXRpb249XCJsZWZ0XCI+YWNjZXNzX3RpbWU8L2k+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ob3ZlclwiIFtuZ1N0eWxlXT1cInsgJ21pbi1oZWlnaHQucHgnOiB0YWJsZUhlaWdodCB9XCIgW25nQ2xhc3NdPVwieyAnbG9hZGluZyc6IGxvYWRpbmcsICdjbGlja2FjY2Vzcyc6IGVuYWJsZWRjbGlja2FjY2VzcyB9XCIgKG1vdXNlbGVhdmUpPVwib3ZlckluZGV4ID0gLTFcIiAqbmdJZj1cImRhdGEgIT0gbnVsbFwiID5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiA1JTtcIiAqbmdJZj1cImVuYWJsZWRjbGFzc2ljb25zICYmIGRhdGE/Lmxlbmd0aCA+IDAgJiYgZGF0YVswXT8uSWNvbiAhPSBudWxsXCI+PC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVuYXNIZWFkZXJzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNvbHVuYXNXaWR0aFtpXSA9PSAnJ1wiIFtjbGFzc109XCInY29sXycgKyBjb2wudG9Mb3dlckNhc2UoKVwiIFtuZ0NsYXNzXT1cInsgJ3RleHQtY2VudGVyJzogY29sdW5hc1R5cGVbaV0gPT0gJ2NoZWNrJywgJ2FsaWduLXJpZ2h0JzogY29sdW5hc1R5cGVbaV0uc3RhcnRzV2l0aCgnbicpIH1cIj57eyBjb2wgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjb2x1bmFzV2lkdGhbaV0gIT0gJydcIiBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6IGNvbHVuYXNXaWR0aFtpXSB9XCIgW25nQ2xhc3NdPVwieyAndGV4dC1jZW50ZXInOiBjb2x1bmFzVHlwZVtpXSA9PSAnY2hlY2snLCAnYWxpZ24tcmlnaHQnOiBjb2x1bmFzVHlwZVtpXS5zdGFydHNXaXRoKCduJykgfVwiPnt7IGNvbCB8IHRyYW5zbGF0ZSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImFjdGlvbnMgYWxpZ24tcmlnaHQgYnV0dG9uc1wiICpuZ0lmPVwiKHRlbXBsYXRldXJsICE9ICcnKSB8fCAoYnV0dG9ucyAhPSBudWxsICYmIGJ1dHRvbnMubGVuZ3RoID4gMCkgfHwgZW5hYmxlZGRldGFpbCB8fCBlbmFibGVkdmlldyB8fCBlbmFibGVkY29scyB8fCAoKGRpc2FibGVkY29sID09ICcnKSAmJiBlbmFibGVkZWRpdCAmJiBoYXNQZXJtaXNzaW9uRWRpdCkgfHwgKChkaXNhYmxlZGNvbCA9PSAnJykgJiYgZW5hYmxlZGRlbGV0ZSAmJiBoYXNQZXJtaXNzaW9uRGVsZXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJbbWF0VG9vbHRpcF09XCJuZXdsYWJlbCB8IHRyYW5zbGF0ZVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIiAoY2xpY2spPVwiYWRkKClcIiAqbmdJZj1cIiFzaG93UGFnZWJhciAmJiBlbmFibGVkbmV3ICYmIGhhc1Blcm1pc3Npb25OZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFuYWdlcmNvbHNcIiBbbWF0VG9vbHRpcF09XCInQ3VzdG9taXphclRhYmVsYScgfCB0cmFuc2xhdGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJsZWZ0XCIgKGNsaWNrKT1cImN1c3RvbWl6ZVRhYmxlKClcIiAqbmdJZj1cImVuYWJsZWRjb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW91dFwiPnNldHRpbmdzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdyaWQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBtb2Qgb2YgZGF0YTsgbGV0IGogPSBpbmRleFwiIFtuZ0NsYXNzXT1cInsgJ2RlZmF1bHQtY29sb3InOiAhZW5hYmxlZGNsYXNzaWNvbnMsICdzZWxlY3RlZC1yb3cnOiBqID09IG92ZXJJbmRleCB9XCIgW2NsYXNzXT1cIm1vZC5DbGFzc1wiIChjbGljayk9XCJhY2Nlc3MobW9kKVwiIChtb3VzZWVudGVyKT1cIm92ZXJJbmRleCA9IGpcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZW5hYmxlZGNsYXNzaWNvbnMgJiYgbW9kPy5JY29uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaWNvbiBvZiBpY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIFttYXRUb29sdGlwXT1cImljb24uVG9vbHRpcCB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiaWNvbi5OYW1lID09IG1vZC5JY29uXCIgW25nQ2xhc3NdPVwieyAnaWNvbmUtc2VjdW5kYXJpbyc6IGljb24uUHJpbmNpcGFsID09IGZhbHNlIH1cIj57e2ljb24uSWNvbn19PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW5hc0l0ZW5zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm1vZFtjb2xdID09IG51bGwgfHwgbW9kW2NvbF0gPT0gdW5kZWZpbmVkXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW5hc1R5cGVbaV1cIiAqbmdJZj1cIm1vZFtjb2xdICE9IG51bGwgJiYgbW9kW2NvbF0gIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ3RkLWV4cGFuc2l2ZWwnOiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMgJiYgZW5hYmxlZGV4cGFuZCA9PSB0cnVlfVwiICpuZ0lmPVwibW9kW2NvbF0gIT09IHRydWUgJiYgbW9kW2NvbF0gIT09IGZhbHNlICYmIG1vZFtjb2xdICE9PSAwICYmIG1vZFtjb2xdICE9PSAnMCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsnbGFiZWwtZXhwYW5zaXZlbCc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMsICdsYWJlbC1leHBhbmRpZGEnOiBlbmFibGVkZXhwYW5kICYmIGNvbHVuYXNJdGVuc0V4cGFuZGlkb3Nbal1baV0gfVwiICpuZ0lmPVwiY29sdW5hc0h0bWxbaV0gPT09IHRydWVcIiBbaW5uZXJIVE1MXT1cIihtb2RbY29sXSB8IHRyYW5zbGF0ZTpjb2x1bmFzVHJhbnNsYXRlW2ldKSB8fCAnJyBcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJicmVhay13b3JkXCIgW25nQ2xhc3NdPVwieydsYWJlbC1leHBhbnNpdmVsJzogZW5hYmxlZGV4cGFuZCA9PSB0cnVlICYmIG1vZFtjb2xdLmxlbmd0aCA+IGxpbWl0Y2hhcmFjdGVycywgJ2xhYmVsLWV4cGFuZGlkYSc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2pdW2ldIH1cIiAqbmdJZj1cImNvbHVuYXNIdG1sW2ldID09PSBmYWxzZVwiPnt7IChtb2RbY29sXSB8IHRyYW5zbGF0ZTpjb2x1bmFzSHRtbFtpXSkgfHwgJycgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW5hYmxlZGV4cGFuZCA9PSB0cnVlICYmIG1vZFtjb2xdLmxlbmd0aCA+IGxpbWl0Y2hhcmFjdGVyc1wiIFtuZ0NsYXNzXT1cInsnbW9zdHJhci1tYWlzLWV4cGFuZGlkbyc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2pdW2ldIH1cIiBjbGFzcz1cIm1vc3RyYXItbWFpc1wiIChjbGljayk9XCJtb3N0cmFyTWFpcyhqLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwieydpY29uZS1leHBhbmRpZG8nOiBlbmFibGVkZXhwYW5kID09IHRydWUgJiYgY29sdW5hc0l0ZW5zRXhwYW5kaWRvc1tqXVtpXSB9XCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImkgPT0gMCAmJiBtb2QuQmFkZ2UgIT0gbnVsbCAmJiBtb2QuQmFkZ2UgIT0gdW5kZWZpbmVkXCI+e3sgbW9kLkJhZGdlIHwgdHJhbnNsYXRlOmNvbHVuYXNUcmFuc2xhdGVbaV0gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJtb2RbY29sXSA9PT0gdHJ1ZVwiPjxtYXQtaWNvbj5jaGVja19ib3g8L21hdC1pY29uPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibW9kW2NvbF0gPT09IGZhbHNlXCI+PG1hdC1pY29uPmNoZWNrX2JveF9vdXRsaW5lX2JsYW5rPC9tYXQtaWNvbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm1vZFtjb2xdID09PSAwIHx8IG1vZFtjb2xdID09PSAnMCdcIj4wPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiIFtpbm5lckhUTUxdPVwibW9kW2NvbF0gfCBkYXRlOidzaG9ydERhdGUnXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIidkYXRldGltZSdcIj57eyBtb2RbY29sXSB8IGRhdGU6J3Nob3J0RGF0ZScgfX0ge3sgbW9kW2NvbF0gfCBkYXRlOidtZWRpdW1UaW1lJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbW9udGh5ZWFyJ1wiIFtpbm5lckhUTUxdPVwibW9kW2NvbF0gfCBkYXRlOidNTS95eXl5J1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjAnXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS4wLTAnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduMidcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjItMicgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ240J1wiIFtjbGFzc109XCInYWxpZ24tcmlnaHQgJyArIChtb2RbY29sXSA8IDAgPyAndGV4dC1yZWQnIDogJycpXCI+e3sgbW9kW2NvbF0gfCBudW1iZXI6JzEuNC00JyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjYnXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS42LTYnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduOSdcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjktOScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ24xMidcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjEyLTEyJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ1N3aXRjaENhc2U9XCInY2hlY2snXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RbY29sXSAhPSBudWxsICYmIChtb2RbY29sXSA9PT0gdHJ1ZSB8fCBtb2RbY29sXSA9PSAxIHx8IG1vZFtjb2xdLnRvTG93ZXJDYXNlKCkgPT0gJ3MnKTsgdGhlbiBjaGVja2VkOyBlbHNlIHVuY2hlY2tlZFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tlZD48bWF0LWljb24+Y2hlY2tfYm94PC9tYXQtaWNvbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdW5jaGVja2VkPjxtYXQtaWNvbj5jaGVja19ib3hfb3V0bGluZV9ibGFuazwvbWF0LWljb24+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5hYmxlZGNsaWNrYWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFjdGlvbnMgY2xpY2thY2Nlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImVuYWJsZWR2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7YWNjZXNzaWNvbiB8fCAnYXJyb3dfZm9yd2FyZCd9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbmFibGVkY2xpY2thY2Nlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtYWN0aW9uc1wiICpuZ0lmPVwiKHRlbXBsYXRldXJsICE9ICcnKSB8fCAoYnV0dG9ucyAhPSBudWxsICYmIGJ1dHRvbnMubGVuZ3RoID4gMCkgfHwgKG1vZC5Eb3dubG9hZCAhPSBudWxsKSB8fCBlbmFibGVkZGV0YWlsIHx8IChtb2Q/LkluZm8gIT0gbnVsbCkgfHwgZW5hYmxlZHZpZXcgfHwgKChkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZWRpdCAmJiBoYXNQZXJtaXNzaW9uRWRpdCkgfHwgKChkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZGVsZXRlICYmIGhhc1Blcm1pc3Npb25EZWxldGUpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbWF0LWljb24tYnV0dG9uIGhyZWY9XCJ7eyB0ZW1wbGF0ZXVybC5yZXBsYWNlKCd7aWR9JywgbW9kLklkKSB9fVwiIHRhcmdldD1cIl9ibGFua1wiIFttYXRUb29sdGlwXT1cIidBYnJpcicgfCB0cmFuc2xhdGVcIiAqbmdJZj1cInRlbXBsYXRldXJsICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnZpc2liaWxpdHk8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGIgb2YgYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCJiLmxhYmVsIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImIubW9kYWxDb21wb25lbnQgIT0gbnVsbCA/IG9wZW5DdXN0b21Nb2RhbChiLm1vZGFsQ29tcG9uZW50LCBiLndpZHRoTW9kYWxDb21wb25lbnQsIG1vZCkgOiBiLmFwaSAhPSBudWxsID8gZXZlbnRCdXR0b24obW9kLCBiLmFwaSwgYi5tZXRob2QsIGIuY29uZmlybSkgOiBuYXZpZ2F0ZVRvKGIubmF2aWdhdGVUbywgYi5wYXNzSWQsIG1vZC5JZClcIiAqbmdJZj1cImIuc2hvd09ubHlDbGFzcyA9PSBudWxsIHx8IGIuc2hvd09ubHlDbGFzcyA9PSBtb2QuQ2xhc3NcIiBbZGlzYWJsZWRdPVwiYi5kaXNhYmxlZEZpZWxkICYmIG1vZFtiLmRpc2FibGVkRmllbGRdID09PSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e2IuaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCInRG93bmxvYWQnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImRvd25sb2FkKG1vZC5Eb3dubG9hZClcIiAqbmdJZj1cIm1vZC5Eb3dubG9hZCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCInRGV0YWxoZScgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZGV0YWlsKG1vZClcIiAqbmdJZj1cImVuYWJsZWRkZXRhaWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bGlzdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIjgwMFwiIFttYXRUb29sdGlwXT1cIidJbmZvcm1hY2FvJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJpbmZvKG1vZD8uSW5mbylcIiAqbmdJZj1cIm1vZD8uSW5mbyAhPSBudWxsXCIgW2Rpc2FibGVkXT1cIm1vZD8uSW5mbyA9PSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcF09XCInVmlzdWFsaXphcicgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwidmlldyhtb2QpXCIgKm5nSWY9XCJlbmFibGVkdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ0VkaXRhcicgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZWRpdChtb2QpXCIgKm5nSWY9XCIoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCInRXhjbHVpcicgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZGVsZXRlKG1vZClcIiAqbmdJZj1cIihkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZGVsZXRlICYmIGhhc1Blcm1pc3Npb25EZWxldGUgJiYgIW1vZC5IaWRlRGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiODAwXCIgW21hdFRvb2x0aXBdPVwiJ0FjZXNzYXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVkaXQobW9kKVwiICpuZ0lmPVwiKChkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZWRpdCAmJiBoYXNQZXJtaXNzaW9uRWRpdCkgfHwgZW5hYmxlZHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZm9yd2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImJsYW5rLXRhYmxlXCIgKm5nSWY9XCJkYXRhICE9IG51bGwgJiYgZGF0YS5sZW5ndGggPT0gMFwiPnt7XCJOZW5odW1JdGVtRW5jb250cmFkb1wiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcblxyXG4gICAgICAgIDxpbmZvLXBhZ2luYXRvciAjcGFnaW5hdG9yIFtoaWRkZW5dPVwiIXBhZ2VkIHx8IChkYXRhICE9IG51bGwgJiYgZGF0YS5sZW5ndGggPT0gMClcIiBbc2l6ZV09XCJzaXplXCIgKGNoYW5nZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIiA+PC9pbmZvLXBhZ2luYXRvcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJibG9ja1wiICpuZ0lmPVwibG9hZGluZ1wiPjwvZGl2PlxyXG48aW5mby1hbGVydCBbbWVzc2FnZXNdPVwibWVzc2FnZXNcIj48L2luZm8tYWxlcnQ+IiwiPGluZm8tbW9kYWwgKG9uc2F2ZSk9XCJzYXZlKClcIiBtb2RhbHRpdGxlPVwiQ3VzdG9taXphclRhYmVsYVwiID5cclxuICAgIDxpbmZvLW1lc3NhZ2UgY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJtaW5cIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT48bWF0LWljb24gY2xhc3M9XCJpY29uLW91dFwiPmluZm88L21hdC1pY29uPnt7ICdDdXN0b21pemFyVGFiZWxhRGVzY3JpY2FvMScgfCB0cmFuc2xhdGUgfX08L2xpPlxyXG4gICAgICAgICAgICA8bGk+PG1hdC1pY29uIGNsYXNzPVwiaWNvbi1vdXRcIj5kYW5nZXJvdXM8L21hdC1pY29uPnt7ICdDdXN0b21pemFyVGFiZWxhRGVzY3JpY2FvMicgfCB0cmFuc2xhdGUgfX08L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgXHJcbiAgICA8L2luZm8tbWVzc2FnZT5cclxuICAgIFxyXG4gICAgPHVsIGNsYXNzPVwibGlzdGFnZW1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbHVuYXNcIiA+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIml0ZW0uR3JpZEF0dWFsXCIgPlxyXG4gICAgICAgICAgICAgICAgPGluZm8tY2hlY2tib3ggWyhuZ01vZGVsKV09XCJpdGVtLkV4aWJpclwiIFtwbGFjZWhvbGRlcl09XCJpdGVtLk5vbWVcIiBbbmFtZV09XCInY2hrY29sdW5hJyArIGl0ZW0uTm9tZVwiID48L2luZm8tY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3VsPlxyXG48L2luZm8tbW9kYWw+Il19
|