ng-inail-common 2.1.0-beta.2 → 2.1.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/core/layout/footer/footer.component.mjs +15 -48
- package/esm2020/lib/components/core/layout/inail-layout/inail-layout.component.mjs +2 -2
- package/fesm2015/ng-inail-common.mjs +15 -48
- package/fesm2015/ng-inail-common.mjs.map +1 -1
- package/fesm2020/ng-inail-common.mjs +15 -48
- package/fesm2020/ng-inail-common.mjs.map +1 -1
- package/lib/components/core/layout/footer/footer.component.d.ts +18 -25
- package/lib/components/core/layout/inail-layout/inail-layout.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -40,23 +40,6 @@ export class FooterComponent extends BaseComponent {
|
|
|
40
40
|
* Se non specificato viene utilizzato il dominio corrente.
|
|
41
41
|
*/
|
|
42
42
|
this.domainUrl = '';
|
|
43
|
-
/**
|
|
44
|
-
* Endpoint della cdn.
|
|
45
|
-
* (e.g. https://cdncoll.inailcloud.it)
|
|
46
|
-
* Utilizzato esclusivamente per customizzare l'html di default nel caso non sia stato possibile recuperare quello in remoto. // TODO
|
|
47
|
-
* Se non specificato viene utilizzato il dominio corrente.
|
|
48
|
-
* Non viene utilizzato se e' stato specificato un url assoluto nell'input assetsUrl.
|
|
49
|
-
*/
|
|
50
|
-
// @Input()
|
|
51
|
-
// cdnEndpoint?: string = '';
|
|
52
|
-
/**
|
|
53
|
-
* Utilizzato esclusivamente per customizzare l'html di default nel caso non sia stato possibile recuperare quello in remoto. // TODO
|
|
54
|
-
* Se non specificato le risorse statiche vengono cercate sotto il path relativo /static
|
|
55
|
-
* del dominio (se passato) specificato tramite l'input cdnEndpoint.
|
|
56
|
-
* Se viene specificato un path assoluto l'input cdnEndpoint non viene preso in considerazione.
|
|
57
|
-
*/
|
|
58
|
-
// @Input()
|
|
59
|
-
// assetsUrl: string = DEFAULT_ASSETS_URL;
|
|
60
43
|
this.inizializzazioneTerminata = false;
|
|
61
44
|
this.logPrefix = '[inail-footer]';
|
|
62
45
|
this.detach();
|
|
@@ -67,10 +50,9 @@ export class FooterComponent extends BaseComponent {
|
|
|
67
50
|
// Il footer viene recuperato da remoto solo se non viene
|
|
68
51
|
// passato esplicitamente dall'esterno l'html da visualizzare
|
|
69
52
|
if (changes?.url?.currentValue && !changes?.html?.currentValue) {
|
|
70
|
-
if (changes.url.firstChange) {
|
|
71
|
-
this.
|
|
53
|
+
if (!changes.url.firstChange) {
|
|
54
|
+
this.recupera();
|
|
72
55
|
}
|
|
73
|
-
this.recupera();
|
|
74
56
|
}
|
|
75
57
|
this.cdr.detectChanges();
|
|
76
58
|
}
|
|
@@ -79,20 +61,6 @@ export class FooterComponent extends BaseComponent {
|
|
|
79
61
|
if (isBlankOrNull(this.domainUrl)) {
|
|
80
62
|
this.domainUrl = '';
|
|
81
63
|
}
|
|
82
|
-
// if (isBlankOrNull(this.cdnEndpoint) || isAbsolute(this.assetsUrl)) {
|
|
83
|
-
//
|
|
84
|
-
// this.cdnEndpoint = '';
|
|
85
|
-
// }
|
|
86
|
-
// if (isBlankOrNull(this.assetsUrl)) {
|
|
87
|
-
//
|
|
88
|
-
// if (isNotBlankOrNull(this.cdnEndpoint)) {
|
|
89
|
-
//
|
|
90
|
-
// this.assetsUrl = DEFAULT_ASSETS_CDN_URL;
|
|
91
|
-
// } else {
|
|
92
|
-
//
|
|
93
|
-
// this.assetsUrl = DEFAULT_ASSETS_URL;
|
|
94
|
-
// }
|
|
95
|
-
// }
|
|
96
64
|
if (this.html) {
|
|
97
65
|
this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);
|
|
98
66
|
this.inizializzazioneTerminata = true;
|
|
@@ -109,24 +77,23 @@ export class FooterComponent extends BaseComponent {
|
|
|
109
77
|
super.ngOnDestroy();
|
|
110
78
|
}
|
|
111
79
|
recupera() {
|
|
80
|
+
// Recupero da url indicato
|
|
112
81
|
if (this.url) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
this.recuperaDaUrl();
|
|
82
|
+
let url = isAbsolute(this.url) ? this.url : `${this.domainUrl}${this.url}`;
|
|
83
|
+
this.recuperaDaUrl(url);
|
|
117
84
|
}
|
|
85
|
+
// Recupero da AGW
|
|
118
86
|
else if (this.clientId) {
|
|
119
87
|
this.recuperaDaAGW();
|
|
120
88
|
}
|
|
89
|
+
// Recupero da portale
|
|
121
90
|
else {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
this.recuperaDaUrl();
|
|
91
|
+
let url = isAbsolute(this.url) ? this.url : `${this.domainUrl}${DEFAULT_URL}`;
|
|
92
|
+
this.recuperaDaUrl(url);
|
|
126
93
|
}
|
|
127
94
|
}
|
|
128
|
-
recuperaDaUrl() {
|
|
129
|
-
this.emitDebug(`Recupero Footer da: ${
|
|
95
|
+
recuperaDaUrl(url) {
|
|
96
|
+
this.emitDebug(`Recupero Footer da: ${url}`);
|
|
130
97
|
this.http.get(this.url, { responseType: 'text' })
|
|
131
98
|
.pipe(first(), // Effettua l'unsubscribe dopo l'emissione del primo valore
|
|
132
99
|
finalize(() => {
|
|
@@ -171,19 +138,19 @@ export class FooterComponent extends BaseComponent {
|
|
|
171
138
|
}
|
|
172
139
|
}
|
|
173
140
|
FooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FooterComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i2.HttpClient }, { token: i3.AgwRestService }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
-
FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: FooterComponent, selector: "inail-footer", inputs: { html: "html", clientId: "clientId", apiGatewayUrl: "apiGatewayUrl", domainUrl: "domainUrl"
|
|
141
|
+
FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: FooterComponent, selector: "inail-footer", inputs: { html: "html", url: "url", clientId: "clientId", apiGatewayUrl: "apiGatewayUrl", domainUrl: "domainUrl" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"inizializzazioneTerminata\">\n <div *ngIf=\"this.innerHtml\"\n [innerHtml]=\"this.innerHtml\">\n </div>\n <div *ngIf=\"!this.innerHtml\">\n <footer>\n <nav id=\"navigazionealternativa\" class=\"row\"><h2 class=\"hidden\">Navigazione alternativa</h2>\n <div class=\"row col-md-3 col-xs-12\"><span> <img class=\"logo-inail img-responsive\" src=\"https://cdn.inailcloud.it/assets/inail/static/img/LogoInail_footer.svg\"\n alt=\"INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro\"> </span></div>\n <div id=\"contatti-wrapper\" class=\"row col-xs-12 col-md-9\">\n <div id=\"contatti\" class=\"col-xs-12 col-sm-6\"><h3>Recapiti e contatti</h3>\n <ul>\n <li><p class=\"text-white\"><strong>Contact center</strong> <br> <span>(+39) 06.6001</span> <br> <span>Dal luned\u00EC al venerd\u00EC dalle 9.00 alle 18.00</span></p></li>\n </ul>\n </div>\n <div>\n <div class=\"row no-gutters\">\n <div class=\"col-md-6 col-xs-12 noPadding\">\n <ul class=\"list-unstyled\"></ul>\n </div>\n <div class=\"col-md-4 col-xs-12 noPadding\" id=\"accesso-rapido\"><h3>Accesso rapido</h3>\n <ul class=\"list-unstyled\">\n <li><a href=\"https://www.inail.it/portale/it/supporto.html\" title=\"Supporto\">Supporto</a></li>\n <li><a href=\"https://www.inail.it/portale/it/supporto/contatti.html\" title=\"Contatti\">Contatti</a></li>\n <li><a href=\"https://www.inail.it/portale/it/footer/accessibilita.html\" title=\"Dichiarazione di accessibilit\u00E0\"> Dichiarazione di accessibilit\u00E0 </a></li>\n <li class=\"last\"><a href=\"http://pagopa.inail.it/\" title=\"Supporto\">PagoPA</a></li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </nav>\n <p class=\"hidden\"><a href=\"#navinterna\" title=\"torna alla navigazione interna alla pagina\">Torna alla navigazione interna</a></p></footer>\n <div id=\"subfooter\"></div>\n <div class=\"copyrightFooter\">\n <div class=\"col-lg-8\"> \u00A9 2018 INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro - P. IVA 00968951004</div>\n <div class=\"col-lg-4 text-right\">\n <ul class=\"list-inline mb-0 py-2\">\n <li><a href=\"https://www.inail.it/portale/it/amministrazione-trasparente/altri-contenuti/dati-ulteriori/privacy.html\" class=\"text-grey-1\" title=\"Privacy e Cookie\">Privacy e\n Cookie</a>\n </li>\n </ul>\n </div>\n </div>\n <script type=\"text/javascript\" src=\"https://cdn.inailcloud.it/assets/inail/static/js/custom/analytics.js\"></script>\n <script type=\"text/javascript\" src=\"https://cdn.inailcloud.it/assets/inail/static/js/feedRSS.js\"></script>\n </div>\n</ng-container>\n<debug-pre *ngIf=\"showState\">[inail-footer]<br>\n <state-propertie [label]=\"'url'\" [propertie]=\"url\"></state-propertie>\n <state-propertie [label]=\"'domainUrl'\" [propertie]=\"domainUrl\"></state-propertie>\n <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n</debug-pre>\n", styles: [""], components: [{ type: i4.PreComponent, selector: "debug-pre" }, { type: i5.StatePropertieComponent, selector: "state-propertie", inputs: ["label", "propertie", "hideIfNull"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
175
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FooterComponent, decorators: [{
|
|
176
143
|
type: Component,
|
|
177
144
|
args: [{ selector: 'inail-footer', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"inizializzazioneTerminata\">\n <div *ngIf=\"this.innerHtml\"\n [innerHtml]=\"this.innerHtml\">\n </div>\n <div *ngIf=\"!this.innerHtml\">\n <footer>\n <nav id=\"navigazionealternativa\" class=\"row\"><h2 class=\"hidden\">Navigazione alternativa</h2>\n <div class=\"row col-md-3 col-xs-12\"><span> <img class=\"logo-inail img-responsive\" src=\"https://cdn.inailcloud.it/assets/inail/static/img/LogoInail_footer.svg\"\n alt=\"INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro\"> </span></div>\n <div id=\"contatti-wrapper\" class=\"row col-xs-12 col-md-9\">\n <div id=\"contatti\" class=\"col-xs-12 col-sm-6\"><h3>Recapiti e contatti</h3>\n <ul>\n <li><p class=\"text-white\"><strong>Contact center</strong> <br> <span>(+39) 06.6001</span> <br> <span>Dal luned\u00EC al venerd\u00EC dalle 9.00 alle 18.00</span></p></li>\n </ul>\n </div>\n <div>\n <div class=\"row no-gutters\">\n <div class=\"col-md-6 col-xs-12 noPadding\">\n <ul class=\"list-unstyled\"></ul>\n </div>\n <div class=\"col-md-4 col-xs-12 noPadding\" id=\"accesso-rapido\"><h3>Accesso rapido</h3>\n <ul class=\"list-unstyled\">\n <li><a href=\"https://www.inail.it/portale/it/supporto.html\" title=\"Supporto\">Supporto</a></li>\n <li><a href=\"https://www.inail.it/portale/it/supporto/contatti.html\" title=\"Contatti\">Contatti</a></li>\n <li><a href=\"https://www.inail.it/portale/it/footer/accessibilita.html\" title=\"Dichiarazione di accessibilit\u00E0\"> Dichiarazione di accessibilit\u00E0 </a></li>\n <li class=\"last\"><a href=\"http://pagopa.inail.it/\" title=\"Supporto\">PagoPA</a></li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </nav>\n <p class=\"hidden\"><a href=\"#navinterna\" title=\"torna alla navigazione interna alla pagina\">Torna alla navigazione interna</a></p></footer>\n <div id=\"subfooter\"></div>\n <div class=\"copyrightFooter\">\n <div class=\"col-lg-8\"> \u00A9 2018 INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro - P. IVA 00968951004</div>\n <div class=\"col-lg-4 text-right\">\n <ul class=\"list-inline mb-0 py-2\">\n <li><a href=\"https://www.inail.it/portale/it/amministrazione-trasparente/altri-contenuti/dati-ulteriori/privacy.html\" class=\"text-grey-1\" title=\"Privacy e Cookie\">Privacy e\n Cookie</a>\n </li>\n </ul>\n </div>\n </div>\n <script type=\"text/javascript\" src=\"https://cdn.inailcloud.it/assets/inail/static/js/custom/analytics.js\"></script>\n <script type=\"text/javascript\" src=\"https://cdn.inailcloud.it/assets/inail/static/js/feedRSS.js\"></script>\n </div>\n</ng-container>\n<debug-pre *ngIf=\"showState\">[inail-footer]<br>\n <state-propertie [label]=\"'url'\" [propertie]=\"url\"></state-propertie>\n <state-propertie [label]=\"'domainUrl'\" [propertie]=\"domainUrl\"></state-propertie>\n <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n</debug-pre>\n", styles: [""] }]
|
|
178
145
|
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i2.HttpClient }, { type: i3.AgwRestService }]; }, propDecorators: { html: [{
|
|
179
146
|
type: Input
|
|
147
|
+
}], url: [{
|
|
148
|
+
type: Input
|
|
180
149
|
}], clientId: [{
|
|
181
150
|
type: Input
|
|
182
151
|
}], apiGatewayUrl: [{
|
|
183
152
|
type: Input
|
|
184
153
|
}], domainUrl: [{
|
|
185
154
|
type: Input
|
|
186
|
-
}], url: [{
|
|
187
|
-
type: Input
|
|
188
155
|
}] } });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9sYXlvdXQvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsS0FBSyxFQUErQyxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdsSSxPQUFPLEVBQUMsVUFBVSxFQUFFLGFBQWEsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxhQUFhLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUcvQyxNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQztBQUUvQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVFILE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFtRWhELFlBQW9CLFNBQXVCLEVBQ3ZCLEdBQXNCLEVBQ3RCLElBQWdCLEVBQ2hCLEdBQW1CO1FBRXJDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxPLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQTNDdkM7Ozs7OztXQU1HO1FBRUgsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQVd2Qjs7Ozs7O1dBTUc7UUFDSCxXQUFXO1FBQ1gsNkJB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LFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUNSO1lBQ0UsSUFBSSxFQUFFLENBQUMsUUFBb0IsRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUNyRCxDQUFDO1NBQ0YsQ0FDRixDQUFDO0lBQ04sQ0FBQzs7NkdBak9VLGVBQWU7aUdBQWYsZUFBZSxvTkNoQzVCLHN6R0FxREE7NEZEckJhLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx5QkFBeUIsaUJBQzNCLGlCQUFpQixDQUFDLElBQUk7eUxBV3JDLElBQUk7c0JBREgsS0FBSztnQkFXTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQVdOLFNBQVM7c0JBRFIsS0FBSztnQkFVTixHQUFHO3NCQURGLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlU2NyaXB0fSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7aXNBYnNvbHV0ZSwgaXNCbGFua09yTnVsbH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY29tbW9uLm9wZXJhdG9ycyc7XG5pbXBvcnQge0Jhc2VDb21wb25lbnQsIENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1l9IGZyb20gJy4uLy4uL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7ZmluYWxpemUsIGZpcnN0fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0Fnd1Jlc3RTZXJ2aWNlLCBIRlJlc3BvbnNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hZ3ctcmVzdC5zZXJ2aWNlJztcblxuY29uc3QgREVGQVVMVF9VUkwgPSAnL2NzL2ludGVybmV0L2Zvb3Rlci5odG1sJztcblxuLyoqXG4gKiBDb21wb25lbnRlIHBlciBsYSB2aXN1YWxpenphemlvbmUgZGVsIEZvb3RlciBJTkFJTC5cbiAqXG4gKiBJbCBmb290ZXIgcHVvJyBlc3NlcmUgdmlzdWFsaXp6YXRvIGluIHVubyBkZWkgc2VndWVudGkgbW9kaTpcbiAqXG4gKiAxIC0gUGFzc2FuZG8gZGlyZXR0YW1lbnRlIGlsIGZyYW1tZW50byBodG1sIGF0dHJhdmVyc28gbGEgcHJvcHJpZXRhJyBkaSBpbnB1dCAnaHRtbCcuXG4gKiAyIC0gSW5kaWNhbmRvIGFsIGNvbnBvbmVudGUgdW4gaW5kaXJpenpvIGRhIGN1aSByZWN1cGVyYXJlIGlsIGZyYW1tZW50byBodG1sIHRyYW1pdGUgbGEgcHJvcHJpZXRhJyAndXJsJy5cbiAqIDMgLSBGYWNlbmRvIHJlY3VwZXJhIGwnaHRtbCBhdXRvbWF0aWNhbWVudGUgZGFsIGNvbXBvbmVudGUgY29udGF0dGFuZG8gaWwgc2Vydml6aW8gJ0hlYWRlckZvb3Rlci1NU1B1YmxpY1ZlcnNpb24nXG4gKiAgICAgbyBmYWNlbmRvbG8gcmVjdXBlcmFyZSBkaXJldHRhbWVudGUgZGFsIHBvcnRhbGUgSU5BSUwuXG4gKlxuICogTmFsIGNhc28gaW4gY3VpIGlsIHJlY3VwZXJvIGRlbGwnaHRtbCBub24gdmFkYSBhIGJ1b24gZmluZSBpbCBjb21wb25lbnRlIHJlbmRlcml6emEgdW4gaHRtbCBkaSBkZWZhdWx0LlxuICpcbiAqIElsIGNvbXBvbmVudGUgdmlzdWFsaXp6ZXJhJyBsJ2h0bWwgc2VndWVuZG8gbGEgc2VndWVudGUgcHJpb3JpdGE6XG4gKiBIdG1sIHBhc3NhdG8gaW4gaW5wdXQsIHJlY3VwZXJvIHRyYW1pdGUgdXJsLCBodG1sIHJlY3VwZXJhdG8gYXV0b21hdGljYW1lbnRlLCBodG1sIGRpIGRlZmF1bHQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luYWlsLWZvb3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb290ZXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm9vdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIGlubmVySHRtbDogU2FmZVNjcmlwdDtcblxuICAvKipcbiAgICogRnJhbW1lbnRvIGh0bWwgZGEgZmFyIHZpc3VhbGl6emFyZSBhbCBjb21wb25lbnRlLlxuICAgKiBTZSBwYXNzYXRvIGluaWJpc2NlIGlsIG1lY2NhbmlzbW8gZGkgcmVjdXBlcm8gYXV0b21hdGljbyBkZWwgZm9vdGVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgaHRtbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDbGllbnRJZCBkZWxsJ2FwcGxpY2F6aW9uZS5cbiAgICogU2Ugc3BlY2lmaWNhdG8gaWwgcmVjdXBlcm8gYXV0b21hdGljbyBkZWwgZm9vdGVyIHZpZW5lIGVmZmV0dHVhdG8gY29udGF0dGFuZG8gaWwgc2Vydml6aW8gJ0hlYWRlckZvb3Rlci1NU1B1YmxpY1ZlcnNpb24nXG4gICAqIGVzcG9zdG8gc3UgQUdXLlxuICAgKiBBbHRyaW1lbnRpIHZpZW5lIHJlY3VwZXJhdG8gaWwgZm9vdGVyIGVzcG9zdG8gZGlyZXR0YW1lbnRlIGRhbCBwb3J0YWxlIGFsbCdpbmRpcml6em8gJy9jcy9pbnRlcm5ldC9mb290ZXIuaHRtbCdcbiAgICogZGVsIGRvbWluaW8gKHNlIHBhc3NhdG8pIHNwZWNpZmljYXRvIHRyYW1pdGUgbGEgcHJvcHJpZXRhJyAnZG9tYWluVXJsJy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNsaWVudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBhcGlHYXRld2F5VXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYSBpbCBkb21pbmlvIGFwcGxpY2F0aXZvLlxuICAgKiAoZS5nLiBodHRwczovL2NvbGxwb3J0YWxlLmluYWlsLml0KVxuICAgKiBWaWVuZSB1dGlsaXp6YXRvIGRhbCBjb21wb25lbnRlIHBlciBpbCByZWN1cGVybyBhdXRvbWF0aWNvIGRlbCBmcmFtbWVudG8gaHRtbCBkZWwgZm9vdGVyXG4gICAqIG5lbCBjYXNvIG5vbiBuZSB2ZW5nYSBwYXNzYXRvIHVubyBzcGVjaWZpY28gbmVsbGEgcHJvcHJpZXRhJyBkaSBpbnB1dCAnaHRtbCcgZGVsIGNvbXBvbmVudGUuXG4gICAqIFNlIG5vbiBzcGVjaWZpY2F0byB2aWVuZSB1dGlsaXp6YXRvIGlsIGRvbWluaW8gY29ycmVudGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBkb21haW5Vcmw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBVcmwgZGEgY3VpIHJlY3VwZXJhcmUgbCdodG1sIGRlbCBmb290ZXIuXG4gICAqIFNlIG5vbiBzcGVjaWZpY2F0byBpbCBmb290ZXIgdmllbmUgcmVjdXBlcmF0byBhdXRvbWF0aWNhbWVudGUgZGVsIGNvbXBvbmVudGUgdHJhbWl0ZSBpbCBzZXJ2aXppbyAnSGVhZGVyRm9vdGVyLU1TUHVibGljVmVyc2lvbidcbiAgICogbyBkaXJldHRhbWVudGUgZGFsIHBvcnRhbGUgYSBzZWNvbmRhIGNoZSBzaWEgc3RhdGEgdmFsb3JpenphdGEgbyBtZW5vIGxhIHByb3ByaWV0YScgZGkgaW5wdXQgJ2NsaWVudElkJy5cbiAgICogTmVsIGNhc28gaW4gY3VpIG5vbiBzaWEgcG9zc2liaWxlIHJlY3VwZXJhcmUgbCdodG1sIHZpZW5lIHZpc3VhbGl6emF0byBxdWVsbG8gZGkgZGVmYXVsdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmRwb2ludCBkZWxsYSBjZG4uXG4gICAqIChlLmcuIGh0dHBzOi8vY2RuY29sbC5pbmFpbGNsb3VkLml0KVxuICAgKiBVdGlsaXp6YXRvIGVzY2x1c2l2YW1lbnRlIHBlciBjdXN0b21penphcmUgbCdodG1sIGRpIGRlZmF1bHQgbmVsIGNhc28gbm9uIHNpYSBzdGF0byBwb3NzaWJpbGUgcmVjdXBlcmFyZSBxdWVsbG8gaW4gcmVtb3RvLiAvLyBUT0RPXG4gICAqIFNlIG5vbiBzcGVjaWZpY2F0byB2aWVuZSB1dGlsaXp6YXRvIGlsIGRvbWluaW8gY29ycmVudGUuXG4gICAqIE5vbiB2aWVuZSB1dGlsaXp6YXRvIHNlIGUnIHN0YXRvIHNwZWNpZmljYXRvIHVuIHVybCBhc3NvbHV0byBuZWxsJ2lucHV0IGFzc2V0c1VybC5cbiAgICovXG4gIC8vIEBJbnB1dCgpXG4gIC8vIGNkbkVuZHBvaW50Pzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFV0aWxpenphdG8gZXNjbHVzaXZhbWVudGUgcGVyIGN1c3RvbWl6emFyZSBsJ2h0bWwgZGkgZGVmYXVsdCBuZWwgY2FzbyBub24gc2lhIHN0YXRvIHBvc3NpYmlsZSByZWN1cGVyYXJlIHF1ZWxsbyBpbiByZW1vdG8uIC8vIFRPRE9cbiAgICogU2Ugbm9uIHNwZWNpZmljYXRvIGxlIHJpc29yc2Ugc3RhdGljaGUgdmVuZ29ubyBjZXJjYXRlIHNvdHRvIGlsIHBhdGggcmVsYXRpdm8gL3N0YXRpY1xuICAgKiBkZWwgZG9taW5pbyAoc2UgcGFzc2F0bykgc3BlY2lmaWNhdG8gdHJhbWl0ZSBsJ2lucHV0IGNkbkVuZHBvaW50LlxuICAgKiBTZSB2aWVuZSBzcGVjaWZpY2F0byB1biBwYXRoIGFzc29sdXRvIGwnaW5wdXQgY2RuRW5kcG9pbnQgbm9uIHZpZW5lIHByZXNvIGluIGNvbnNpZGVyYXppb25lLlxuICAgKi9cbiAgICAvLyBASW5wdXQoKVxuICAgIC8vIGFzc2V0c1VybDogc3RyaW5nID0gREVGQVVMVF9BU1NFVFNfVVJMO1xuXG4gIGluaXppYWxpenphemlvbmVUZXJtaW5hdGE6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhZ3c6IEFnd1Jlc3RTZXJ2aWNlKSB7XG5cbiAgICBzdXBlcihjZHIpO1xuICAgIHRoaXMubG9nUHJlZml4ID0gJ1tpbmFpbC1mb290ZXJdJztcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gICAgdGhpcy5lbWl0RGVidWcoYG5nT25DaGFuZ2VzOmApO1xuICAgIHRoaXMuZW1pdERlYnVnKGNoYW5nZXMpO1xuXG4gICAgLy8gSWwgZm9vdGVyIHZpZW5lIHJlY3VwZXJhdG8gZGEgcmVtb3RvIHNvbG8gc2Ugbm9uIHZpZW5lXG4gICAgLy8gcGFzc2F0byBlc3BsaWNpdGFtZW50ZSBkYWxsJ2VzdGVybm8gbCdodG1sIGRhIHZpc3VhbGl6emFyZVxuICAgIGlmIChjaGFuZ2VzPy51cmw/LmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlcz8uaHRtbD8uY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIGlmIChjaGFuZ2VzLnVybC5maXJzdENoYW5nZSkge1xuXG4gICAgICAgIHRoaXMuZW1pdERlYnVnKGBJbml6aWFsaXp6YXppb25lIEZvb3RlcmApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY3VwZXJhKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgaWYgKGlzQmxhbmtPck51bGwodGhpcy5kb21haW5VcmwpKSB7XG5cbiAgICAgIHRoaXMuZG9tYWluVXJsID0gJyc7XG4gICAgfVxuXG4gICAgLy8gaWYgKGlzQmxhbmtPck51bGwodGhpcy5jZG5FbmRwb2ludCkgfHwgaXNBYnNvbHV0ZSh0aGlzLmFzc2V0c1VybCkpIHtcbiAgICAvL1xuICAgIC8vICAgdGhpcy5jZG5FbmRwb2ludCA9ICcnO1xuICAgIC8vIH1cblxuICAgIC8vIGlmIChpc0JsYW5rT3JOdWxsKHRoaXMuYXNzZXRzVXJsKSkge1xuICAgIC8vXG4gICAgLy8gICBpZiAoaXNOb3RCbGFua09yTnVsbCh0aGlzLmNkbkVuZHBvaW50KSkge1xuICAgIC8vXG4gICAgLy8gICAgIHRoaXMuYXNzZXRzVXJsID0gREVGQVVMVF9BU1NFVFNfQ0ROX1VSTDtcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy9cbiAgICAvLyAgICAgdGhpcy5hc3NldHNVcmwgPSBERUZBVUxUX0FTU0VUU19VUkw7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG4gICAgaWYgKHRoaXMuaHRtbCkge1xuXG4gICAgICB0aGlzLmlubmVySHRtbCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuaHRtbCk7XG4gICAgICB0aGlzLmluaXppYWxpenphemlvbmVUZXJtaW5hdGEgPSB0cnVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5yZWN1cGVyYSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRldGVjdENoYW5nZSkge1xuXG4gICAgICB0aGlzLnB1c2godGhpcy5kZXRlY3RDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIHJlY3VwZXJhKCkge1xuXG4gICAgaWYgKHRoaXMudXJsKSB7XG5cbiAgICAgIGlmICghaXNBYnNvbHV0ZSh0aGlzLnVybCkpIHtcblxuICAgICAgICB0aGlzLnVybCA9IGAke3RoaXMuZG9tYWluVXJsfSR7dGhpcy51cmx9YDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWN1cGVyYURhVXJsKCk7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuY2xpZW50SWQpIHtcblxuICAgICAgdGhpcy5yZWN1cGVyYURhQUdXKCk7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICBpZiAoIWlzQWJzb2x1dGUodGhpcy51cmwpKSB7XG5cbiAgICAgICAgdGhpcy51cmwgPSBgJHt0aGlzLmRvbWFpblVybH0ke0RFRkFVTFRfVVJMfWA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjdXBlcmFEYVVybCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlY3VwZXJhRGFVcmwoKSB7XG4gICAgdGhpcy5lbWl0RGVidWcoYFJlY3VwZXJvIEZvb3RlciBkYTogJHt0aGlzLnVybH1gKTtcblxuICAgIHRoaXMuaHR0cC5nZXQodGhpcy51cmwsIHtyZXNwb25zZVR5cGU6ICd0ZXh0J30pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSwgLy8gRWZmZXR0dWEgbCd1bnN1YnNjcmliZSBkb3BvIGwnZW1pc3Npb25lIGRlbCBwcmltbyB2YWxvcmVcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW1pdERlYnVnKCdGb290ZXIgaW5pemlhbGl6emF0byEnKTtcbiAgICAgICAgICB0aGlzLmluaXppYWxpenphemlvbmVUZXJtaW5hdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHtcbiAgICAgICAgICBuZXh0OiAoZm9vdGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIdG1sID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZm9vdGVyKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdERlYnVnKGBGb290ZXIgcmVjdXBlcmF0byFgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlubmVySHRtbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKCdFcnJvcmUgbmVsIHJlY3VwZXJvIGRlbCBGb290ZXInKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmVtaXRXYXJuKCdWaXN1YWxpenphemlvbmUgRm9vdGVyIGRpIGRlZmF1bHQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICByZWN1cGVyYURhQUdXKCkge1xuXG4gICAgdGhpcy5lbWl0RGVidWcoYFJlY3VwZXJvIEZvb3RlciBkYSBBR1dgKTtcblxuICAgIHRoaXMuYWd3LmdldEZvb3RlclJXKHtjbGllbnRJZDogdGhpcy5jbGllbnRJZCwgYWd3RW5kUG9pbnQ6IHRoaXMuYXBpR2F0ZXdheVVybH0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSwgLy8gRWZmZXR0dWEgbCd1bnN1YnNjcmliZSBkb3BvIGwnZW1pc3Npb25lIGRlbCBwcmltbyB2YWxvcmVcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW1pdERlYnVnKCdGb290ZXIgaW5pemlhbGl6emF0byEnKTtcbiAgICAgICAgICB0aGlzLmluaXppYWxpenphemlvbmVUZXJtaW5hdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHtcbiAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEhGUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIdG1sID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVzcG9uc2U/Lmh0bWwpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcoYEZvb3RlciByZWN1cGVyYXRvIWApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIdG1sID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IoJ0Vycm9yZSBuZWwgcmVjdXBlcm8gZGVsIEZvb3RlcicpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdFdhcm4oJ1Zpc3VhbGl6emF6aW9uZSBGb290ZXIgZGkgZGVmYXVsdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXppYWxpenphemlvbmVUZXJtaW5hdGFcIj5cbiAgPGRpdiAqbmdJZj1cInRoaXMuaW5uZXJIdG1sXCJcbiAgICAgICBbaW5uZXJIdG1sXT1cInRoaXMuaW5uZXJIdG1sXCI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIXRoaXMuaW5uZXJIdG1sXCI+XG4gICAgPGZvb3Rlcj5cbiAgICAgIDxuYXYgaWQ9XCJuYXZpZ2F6aW9uZWFsdGVybmF0aXZhXCIgY2xhc3M9XCJyb3dcIj48aDIgY2xhc3M9XCJoaWRkZW5cIj5OYXZpZ2F6aW9uZSBhbHRlcm5hdGl2YTwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLW1kLTMgY29sLXhzLTEyXCI+PHNwYW4+IDxpbWcgY2xhc3M9XCJsb2dvLWluYWlsIGltZy1yZXNwb25zaXZlXCIgc3JjPVwiaHR0cHM6Ly9jZG4uaW5haWxjbG91ZC5pdC9hc3NldHMvaW5haWwvc3RhdGljL2ltZy9Mb2dvSW5haWxfZm9vdGVyLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIklOQUlMIC0gSXN0aXR1dG8gTmF6aW9uYWxlIHBlciBsJ0Fzc2ljdXJhemlvbmUgY29udHJvIGdsaSBJbmZvcnR1bmkgc3VsIExhdm9yb1wiPiA8L3NwYW4+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJjb250YXR0aS13cmFwcGVyXCIgY2xhc3M9XCJyb3cgY29sLXhzLTEyIGNvbC1tZC05XCI+XG4gICAgICAgICAgPGRpdiBpZD1cImNvbnRhdHRpXCIgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTZcIj48aDM+UmVjYXBpdGkgZSBjb250YXR0aTwvaDM+XG4gICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgIDxsaT48cCBjbGFzcz1cInRleHQtd2hpdGVcIj48c3Ryb25nPkNvbnRhY3QgY2VudGVyPC9zdHJvbmc+IDxicj4gPHNwYW4+KCszOSkgMDYuNjAwMTwvc3Bhbj4gPGJyPiA8c3Bhbj5EYWwgbHVuZWTDrCBhbCB2ZW5lcmTDrCBkYWxsZSA5LjAwIGFsbGUgMTguMDA8L3NwYW4+PC9wPjwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG5vLWd1dHRlcnNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC14cy0xMiBub1BhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+PC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wteHMtMTIgbm9QYWRkaW5nXCIgaWQ9XCJhY2Nlc3NvLXJhcGlkb1wiPjxoMz5BY2Nlc3NvIHJhcGlkbzwvaDM+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxuICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3d3dy5pbmFpbC5pdC9wb3J0YWxlL2l0L3N1cHBvcnRvLmh0bWxcIiB0aXRsZT1cIlN1cHBvcnRvXCI+U3VwcG9ydG88L2E+PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly93d3cuaW5haWwuaXQvcG9ydGFsZS9pdC9zdXBwb3J0by9jb250YXR0aS5odG1sXCIgdGl0bGU9XCJDb250YXR0aVwiPkNvbnRhdHRpPC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj1cImh0dHBzOi8vd3d3LmluYWlsLml0L3BvcnRhbGUvaXQvZm9vdGVyL2FjY2Vzc2liaWxpdGEuaHRtbFwiIHRpdGxlPVwiRGljaGlhcmF6aW9uZSBkaSBhY2Nlc3NpYmlsaXTDoFwiPiBEaWNoaWFyYXppb25lIGRpIGFjY2Vzc2liaWxpdMOgIDwvYT48L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGFzdFwiPjxhIGhyZWY9XCJodHRwOi8vcGFnb3BhLmluYWlsLml0L1wiIHRpdGxlPVwiU3VwcG9ydG9cIj5QYWdvUEE8L2E+PC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmF2PlxuICAgICAgPHAgY2xhc3M9XCJoaWRkZW5cIj48YSBocmVmPVwiI25hdmludGVybmFcIiB0aXRsZT1cInRvcm5hIGFsbGEgbmF2aWdhemlvbmUgaW50ZXJuYSBhbGxhIHBhZ2luYVwiPlRvcm5hIGFsbGEgbmF2aWdhemlvbmUgaW50ZXJuYTwvYT48L3A+PC9mb290ZXI+XG4gICAgPGRpdiBpZD1cInN1YmZvb3RlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb3B5cmlnaHRGb290ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOFwiPiDCqSAyMDE4IElOQUlMIC0gSXN0aXR1dG8gTmF6aW9uYWxlIHBlciBsJ0Fzc2ljdXJhemlvbmUgY29udHJvIGdsaSBJbmZvcnR1bmkgc3VsIExhdm9ybyAtIFAuIElWQSAwMDk2ODk1MTAwNDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00IHRleHQtcmlnaHRcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1pbmxpbmUgbWItMCBweS0yXCI+XG4gICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3d3dy5pbmFpbC5pdC9wb3J0YWxlL2l0L2FtbWluaXN0cmF6aW9uZS10cmFzcGFyZW50ZS9hbHRyaS1jb250ZW51dGkvZGF0aS11bHRlcmlvcmkvcHJpdmFjeS5odG1sXCIgY2xhc3M9XCJ0ZXh0LWdyZXktMVwiIHRpdGxlPVwiUHJpdmFjeSBlIENvb2tpZVwiPlByaXZhY3kgZVxuICAgICAgICAgICAgQ29va2llPC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCJodHRwczovL2Nkbi5pbmFpbGNsb3VkLml0L2Fzc2V0cy9pbmFpbC9zdGF0aWMvanMvY3VzdG9tL2FuYWx5dGljcy5qc1wiPjwvc2NyaXB0PlxuICAgIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cImh0dHBzOi8vY2RuLmluYWlsY2xvdWQuaXQvYXNzZXRzL2luYWlsL3N0YXRpYy9qcy9mZWVkUlNTLmpzXCI+PC9zY3JpcHQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48ZGVidWctcHJlICpuZ0lmPVwic2hvd1N0YXRlXCI+W2luYWlsLWZvb3Rlcl08YnI+XG4gIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIid1cmwnXCIgW3Byb3BlcnRpZV09XCJ1cmxcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2RvbWFpblVybCdcIiBbcHJvcGVydGllXT1cImRvbWFpblVybFwiPjwvc3RhdGUtcHJvcGVydGllPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInaW5pemlhbGl6emF6aW9uZVRlcm1pbmF0YSdcIiBbcHJvcGVydGllXT1cImluaXppYWxpenphemlvbmVUZXJtaW5hdGFcIj48L3N0YXRlLXByb3BlcnRpZT5cbjwvZGVidWctcHJlPlxuIl19
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9sYXlvdXQvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsS0FBSyxFQUErQyxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdsSSxPQUFPLEVBQUMsVUFBVSxFQUFFLGFBQWEsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxhQUFhLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUcvQyxNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQztBQUUvQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVFILE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFzRGhELFlBQW9CLFNBQXVCLEVBQ3ZCLEdBQXNCLEVBQ3RCLElBQWdCLEVBQ2hCLEdBQW1CO1FBRXJDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxPLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQWZ2Qzs7Ozs7O1dBTUc7UUFFSCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBRXZCLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQVF6QyxJ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LEVBQUUsQ0FBQyxRQUFvQixFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7U0FDRixDQUNGLENBQUM7SUFDTixDQUFDOzs2R0EvTFUsZUFBZTtpR0FBZixlQUFlLG9OQ2hDNUIsc3pHQXFEQTs0RkRyQmEsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxjQUFjLG1CQUdQLHlCQUF5QixpQkFDM0IsaUJBQWlCLENBQUMsSUFBSTt5TEFZckMsSUFBSTtzQkFESCxLQUFLO2dCQVdOLEdBQUc7c0JBREYsS0FBSztnQkFhTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sYUFBYTtzQkFEWixLQUFLO2dCQVdOLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXIsIFNhZmVTY3JpcHR9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtpc0Fic29sdXRlLCBpc0JsYW5rT3JOdWxsfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9jb21tb24ub3BlcmF0b3JzJztcbmltcG9ydCB7QmFzZUNvbXBvbmVudCwgQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWX0gZnJvbSAnLi4vLi4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtmaW5hbGl6ZSwgZmlyc3R9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QWd3UmVzdFNlcnZpY2UsIEhGUmVzcG9uc2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2Fndy1yZXN0LnNlcnZpY2UnO1xuXG5jb25zdCBERUZBVUxUX1VSTCA9ICcvY3MvaW50ZXJuZXQvZm9vdGVyLmh0bWwnO1xuXG4vKipcbiAqIENvbXBvbmVudGUgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBkZWwgRm9vdGVyIElOQUlMLlxuICpcbiAqIElsIGZvb3RlciBwdW8nIGVzc2VyZSB2aXN1YWxpenphdG8gaW4gdW5vIGRlaSBzZWd1ZW50aSBtb2RpOlxuICpcbiAqIDEgLSBQYXNzYW5kbyBkaXJldHRhbWVudGUgaWwgZnJhbW1lbnRvIGh0bWwgYXR0cmF2ZXJzbyBsYSBwcm9wcmlldGEnIGRpIGlucHV0ICdodG1sJy5cbiAqIDIgLSBJbmRpY2FuZG8gYWwgY29ucG9uZW50ZSB1biBpbmRpcml6em8gZGEgY3VpIHJlY3VwZXJhcmUgaWwgZnJhbW1lbnRvIGh0bWwgdHJhbWl0ZSBsYSBwcm9wcmlldGEnICd1cmwnLlxuICogMyAtIEZhY2VuZG8gcmVjdXBlcmEgbCdodG1sIGF1dG9tYXRpY2FtZW50ZSBkYWwgY29tcG9uZW50ZSBjb250YXR0YW5kbyBpbCBzZXJ2aXppbyAnSGVhZGVyRm9vdGVyLU1TUHVibGljVmVyc2lvbidcbiAqICAgICBvIGZhY2VuZG9sbyByZWN1cGVyYXJlIGRpcmV0dGFtZW50ZSBkYWwgcG9ydGFsZSBJTkFJTC5cbiAqXG4gKiBOYWwgY2FzbyBpbiBjdWkgaWwgcmVjdXBlcm8gZGVsbCdodG1sIG5vbiB2YWRhIGEgYnVvbiBmaW5lIGlsIGNvbXBvbmVudGUgcmVuZGVyaXp6YSB1biBodG1sIGRpIGRlZmF1bHQuXG4gKlxuICogSWwgY29tcG9uZW50ZSB2aXN1YWxpenplcmEnIGwnaHRtbCBzZWd1ZW5kbyBsYSBzZWd1ZW50ZSBwcmlvcml0YTpcbiAqIEh0bWwgcGFzc2F0byBpbiBpbnB1dCwgcmVjdXBlcm8gdHJhbWl0ZSB1cmwsIGh0bWwgcmVjdXBlcmF0byBhdXRvbWF0aWNhbWVudGUsIGh0bWwgZGkgZGVmYXVsdC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW5haWwtZm9vdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvb3Rlci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgaW5uZXJIdG1sOiBTYWZlU2NyaXB0O1xuXG4gIC8qKlxuICAgKiBGcmFtbWVudG8gaHRtbCBkYSBmYXIgdmlzdWFsaXp6YXJlIGFsIGNvbXBvbmVudGUuXG4gICAqIFNlIHBhc3NhdG8gaW5pYmlzY2UgaWwgbWVjY2FuaXNtbyBkaSByZWN1cGVybyBhdXRvbWF0aWNvIGRlbCBmb290ZXIgZWQgaWdub3JhIHF1YW50byBzcGVjaWZpY2F0b1xuICAgKiBuZWxsYSBwcm9ycGlldGEnIGRpIGlucHV0ICd1cmwnLlxuICAgKi9cbiAgQElucHV0KClcbiAgaHRtbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcmwgZGEgY3VpIHJlY3VwZXJhcmUgbCdodG1sIGRlbCBmb290ZXIuXG4gICAqIFNlIHBhc3NhdG8gaW5pYmlzY2UgaWwgbWVjY2FuaXNtbyBkaSByZWN1cGVybyBhdXRvbWF0aWNvIGRlbCBmb290ZXIuXG4gICAqIFNlIG5vbiBzcGVjaWZpY2F0byBpbCBmb290ZXIgdmllbmUgcmVjdXBlcmF0byBhdXRvbWF0aWNhbWVudGUgZGFsIGNvbXBvbmVudGUgdHJhbWl0ZSBpbCBzZXJ2aXppbyAnSGVhZGVyRm9vdGVyLU1TUHVibGljVmVyc2lvbidcbiAgICogbyBkaXJldHRhbWVudGUgZGFsIHBvcnRhbGUgYSBzZWNvbmRhIGNoZSBzaWEgc3RhdGEgdmFsb3JpenphdGEgbyBtZW5vIGxhIHByb3ByaWV0YScgZGkgaW5wdXQgJ2NsaWVudElkJy5cbiAgICogTmVsIGNhc28gaW4gY3VpIG5vbiBzaWEgcG9zc2liaWxlIHJlY3VwZXJhcmUgbCdodG1sIHZpZW5lIHZpc3VhbGl6emF0byBxdWVsbG8gZGkgZGVmYXVsdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDbGllbnRJZCBkZWxsJ2FwcGxpY2F6aW9uZS5cbiAgICogVmllbmUgdXRpbGl6emF0byBpbiBjYXNvIGRpIHJlY3VwZXJvIGF1dG9tYXRpY28gZGVsIGZvb3RlciAoc2Ugbm9uIHNvbm8gc3RhdGUgdmFsaXJpenphdGUgbGUgcHJvcHJpZXRhJyBkaSBpbnB1dCAnaHRtbCcgZSAndXJsJylcbiAgICogU2UgaWwgQ2xpZW50SWQgdmllbmUgc3BlY2lmaWNhdG8gaWwgcmVjdXBlcm8gYXV0b21hdGljbyBkZWwgZm9vdGVyIHZpZW5lIGVmZmV0dHVhdG8gY29udGF0dGFuZG8gaWwgc2Vydml6aW8gJ0hlYWRlckZvb3Rlci1NU1B1YmxpY1ZlcnNpb24nXG4gICAqIGVzcG9zdG8gc3UgQUdXLlxuICAgKiBBbHRyaW1lbnRpIHZpZW5lIHJlY3VwZXJhdG8gaWwgZm9vdGVyIGVzcG9zdG8gZGlyZXR0YW1lbnRlIGRhbCBwb3J0YWxlIGFsbCdpbmRpcml6em8gJy9jcy9pbnRlcm5ldC9mb290ZXIuaHRtbCdcbiAgICogZGVsIGRvbWluaW8gKHNlIHBhc3NhdG8pIHNwZWNpZmljYXRvIHRyYW1pdGUgbGEgcHJvcHJpZXRhJyAnZG9tYWluVXJsJy5cbiAgICogSWwgcmVjdXBlcm8gYXV0b21hdGljbyBub24gYXZ2aWVuZSBzZSB2ZW5nb25vIHZhbG9yaXp6YXRlIGxlIHByb3ByaWV0YScgZGkgaW5wdXQgJ2h0bWwnIG8gJ3VybCcuXG4gICAqL1xuICBASW5wdXQoKVxuICBjbGllbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcmwgYSBjdWkgY29udGF0dGFyZSBsJ0FwaSBHYXRld2F5IHBlciBpbCByZWN1cGVybyBhdXRvbWF0aWNvIGRlbCBmb290ZXIgZGFsIHNlcnZpemlvICdIZWFkZXJGb290ZXItTVNQdWJsaWNWZXJzaW9uJy5cbiAgICogU2Ugbm9uIHNwZWNpZmljYXRvIHZpZW5lIGNvbnRhdHRhdG8gYWxsJ2luZGlyaXp6byByZWxhdGl2byAvYXBpXG4gICAqIG5lbCBkb21pbmlvIChzZSBwYXNzYXRvKSBzcGVjaWZpY2F0byB0cmFtaXRlIGwnaW5wdXQgZG9tYWluVXJsLlxuICAgKi9cbiAgQElucHV0KClcbiAgYXBpR2F0ZXdheVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2EgaWwgZG9taW5pbyBhcHBsaWNhdGl2by5cbiAgICogKGUuZy4gaHR0cHM6Ly9jb2xscG9ydGFsZS5pbmFpbC5pdClcbiAgICogVmllbmUgdXRpbGl6emF0byBkYWwgY29tcG9uZW50ZSBwZXIgaWwgcmVjdXBlcm8gYXV0b21hdGljbyBkZWwgZnJhbW1lbnRvIGh0bWwgZGVsIGZvb3RlclxuICAgKiBuZWwgY2FzbyBub24gbmUgdmVuZ2EgcGFzc2F0byB1bm8gc3BlY2lmaWNvIG5lbGxhIHByb3ByaWV0YScgZGkgaW5wdXQgJ2h0bWwnIGRlbCBjb21wb25lbnRlLlxuICAgKiBTZSBub24gc3BlY2lmaWNhdG8gdmllbmUgdXRpbGl6emF0byBpbCBkb21pbmlvIGNvcnJlbnRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZG9tYWluVXJsOiBzdHJpbmcgPSAnJztcblxuICBpbml6aWFsaXp6YXppb25lVGVybWluYXRhOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgYWd3OiBBZ3dSZXN0U2VydmljZSkge1xuXG4gICAgc3VwZXIoY2RyKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtZm9vdGVyXSc7XG4gICAgdGhpcy5kZXRhY2goKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKGBuZ09uQ2hhbmdlczpgKTtcbiAgICB0aGlzLmVtaXREZWJ1ZyhjaGFuZ2VzKTtcblxuICAgIC8vIElsIGZvb3RlciB2aWVuZSByZWN1cGVyYXRvIGRhIHJlbW90byBzb2xvIHNlIG5vbiB2aWVuZVxuICAgIC8vIHBhc3NhdG8gZXNwbGljaXRhbWVudGUgZGFsbCdlc3Rlcm5vIGwnaHRtbCBkYSB2aXN1YWxpenphcmVcbiAgICBpZiAoY2hhbmdlcz8udXJsPy5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXM/Lmh0bWw/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICBpZiAoIWNoYW5nZXMudXJsLmZpcnN0Q2hhbmdlKSB7XG5cbiAgICAgICAgdGhpcy5yZWN1cGVyYSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGlmIChpc0JsYW5rT3JOdWxsKHRoaXMuZG9tYWluVXJsKSkge1xuXG4gICAgICB0aGlzLmRvbWFpblVybCA9ICcnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmh0bWwpIHtcblxuICAgICAgdGhpcy5pbm5lckh0bWwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLmh0bWwpO1xuICAgICAgdGhpcy5pbml6aWFsaXp6YXppb25lVGVybWluYXRhID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHRoaXMucmVjdXBlcmEoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXRlY3RDaGFuZ2UpIHtcblxuICAgICAgdGhpcy5wdXNoKHRoaXMuZGV0ZWN0Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICByZWN1cGVyYSgpIHtcblxuICAgIC8vIFJlY3VwZXJvIGRhIHVybCBpbmRpY2F0b1xuICAgIGlmICh0aGlzLnVybCkge1xuXG4gICAgICBsZXQgdXJsOiBzdHJpbmcgPSBpc0Fic29sdXRlKHRoaXMudXJsKSA/IHRoaXMudXJsIDogYCR7dGhpcy5kb21haW5Vcmx9JHt0aGlzLnVybH1gO1xuXG4gICAgICB0aGlzLnJlY3VwZXJhRGFVcmwodXJsKTtcbiAgICB9XG4gICAgLy8gUmVjdXBlcm8gZGEgQUdXXG4gICAgZWxzZSBpZiAodGhpcy5jbGllbnRJZCkge1xuXG4gICAgICB0aGlzLnJlY3VwZXJhRGFBR1coKTtcbiAgICB9XG4gICAgLy8gUmVjdXBlcm8gZGEgcG9ydGFsZVxuICAgIGVsc2Uge1xuXG4gICAgICBsZXQgdXJsOiBzdHJpbmcgPSBpc0Fic29sdXRlKHRoaXMudXJsKSA/IHRoaXMudXJsIDogYCR7dGhpcy5kb21haW5Vcmx9JHtERUZBVUxUX1VSTH1gO1xuXG4gICAgICB0aGlzLnJlY3VwZXJhRGFVcmwodXJsKTtcbiAgICB9XG4gIH1cblxuICByZWN1cGVyYURhVXJsKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5lbWl0RGVidWcoYFJlY3VwZXJvIEZvb3RlciBkYTogJHt1cmx9YCk7XG5cbiAgICB0aGlzLmh0dHAuZ2V0KHRoaXMudXJsLCB7cmVzcG9uc2VUeXBlOiAndGV4dCd9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksIC8vIEVmZmV0dHVhIGwndW5zdWJzY3JpYmUgZG9wbyBsJ2VtaXNzaW9uZSBkZWwgcHJpbW8gdmFsb3JlXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVtaXREZWJ1ZygnRm9vdGVyIGluaXppYWxpenphdG8hJyk7XG4gICAgICAgICAgdGhpcy5pbml6aWFsaXp6YXppb25lVGVybWluYXRhID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICB7XG4gICAgICAgICAgbmV4dDogKGZvb3Rlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlubmVySHRtbCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGZvb3Rlcik7XG4gICAgICAgICAgICB0aGlzLmVtaXREZWJ1ZyhgRm9vdGVyIHJlY3VwZXJhdG8hYCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbm5lckh0bWwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcignRXJyb3JlIG5lbCByZWN1cGVybyBkZWwgRm9vdGVyJyk7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lbWl0V2FybignVmlzdWFsaXp6YXppb25lIEZvb3RlciBkaSBkZWZhdWx0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcmVjdXBlcmFEYUFHVygpIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKGBSZWN1cGVybyBGb290ZXIgZGEgQUdXYCk7XG5cbiAgICB0aGlzLmFndy5nZXRGb290ZXJSVyh7Y2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsIGFnd0VuZFBvaW50OiB0aGlzLmFwaUdhdGV3YXlVcmx9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksIC8vIEVmZmV0dHVhIGwndW5zdWJzY3JpYmUgZG9wbyBsJ2VtaXNzaW9uZSBkZWwgcHJpbW8gdmFsb3JlXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVtaXREZWJ1ZygnRm9vdGVyIGluaXppYWxpenphdG8hJyk7XG4gICAgICAgICAgdGhpcy5pbml6aWFsaXp6YXppb25lVGVybWluYXRhID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICB7XG4gICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIRlJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlubmVySHRtbCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJlc3BvbnNlPy5odG1sKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdERlYnVnKGBGb290ZXIgcmVjdXBlcmF0byFgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlubmVySHRtbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKCdFcnJvcmUgbmVsIHJlY3VwZXJvIGRlbCBGb290ZXInKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmVtaXRXYXJuKCdWaXN1YWxpenphemlvbmUgRm9vdGVyIGRpIGRlZmF1bHQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbml6aWFsaXp6YXppb25lVGVybWluYXRhXCI+XG4gIDxkaXYgKm5nSWY9XCJ0aGlzLmlubmVySHRtbFwiXG4gICAgICAgW2lubmVySHRtbF09XCJ0aGlzLmlubmVySHRtbFwiPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiF0aGlzLmlubmVySHRtbFwiPlxuICAgIDxmb290ZXI+XG4gICAgICA8bmF2IGlkPVwibmF2aWdhemlvbmVhbHRlcm5hdGl2YVwiIGNsYXNzPVwicm93XCI+PGgyIGNsYXNzPVwiaGlkZGVuXCI+TmF2aWdhemlvbmUgYWx0ZXJuYXRpdmE8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1tZC0zIGNvbC14cy0xMlwiPjxzcGFuPiA8aW1nIGNsYXNzPVwibG9nby1pbmFpbCBpbWctcmVzcG9uc2l2ZVwiIHNyYz1cImh0dHBzOi8vY2RuLmluYWlsY2xvdWQuaXQvYXNzZXRzL2luYWlsL3N0YXRpYy9pbWcvTG9nb0luYWlsX2Zvb3Rlci5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJJTkFJTCAtIElzdGl0dXRvIE5hemlvbmFsZSBwZXIgbCdBc3NpY3VyYXppb25lIGNvbnRybyBnbGkgSW5mb3J0dW5pIHN1bCBMYXZvcm9cIj4gPC9zcGFuPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiY29udGF0dGktd3JhcHBlclwiIGNsYXNzPVwicm93IGNvbC14cy0xMiBjb2wtbWQtOVwiPlxuICAgICAgICAgIDxkaXYgaWQ9XCJjb250YXR0aVwiIGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS02XCI+PGgzPlJlY2FwaXRpIGUgY29udGF0dGk8L2gzPlxuICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICA8bGk+PHAgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+PHN0cm9uZz5Db250YWN0IGNlbnRlcjwvc3Ryb25nPiA8YnI+IDxzcGFuPigrMzkpIDA2LjYwMDE8L3NwYW4+IDxicj4gPHNwYW4+RGFsIGx1bmVkw6wgYWwgdmVuZXJkw6wgZGFsbGUgOS4wMCBhbGxlIDE4LjAwPC9zcGFuPjwvcD48L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBuby1ndXR0ZXJzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wteHMtMTIgbm9QYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPjwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLXhzLTEyIG5vUGFkZGluZ1wiIGlkPVwiYWNjZXNzby1yYXBpZG9cIj48aDM+QWNjZXNzbyByYXBpZG88L2gzPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly93d3cuaW5haWwuaXQvcG9ydGFsZS9pdC9zdXBwb3J0by5odG1sXCIgdGl0bGU9XCJTdXBwb3J0b1wiPlN1cHBvcnRvPC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj1cImh0dHBzOi8vd3d3LmluYWlsLml0L3BvcnRhbGUvaXQvc3VwcG9ydG8vY29udGF0dGkuaHRtbFwiIHRpdGxlPVwiQ29udGF0dGlcIj5Db250YXR0aTwvYT48L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3d3dy5pbmFpbC5pdC9wb3J0YWxlL2l0L2Zvb3Rlci9hY2Nlc3NpYmlsaXRhLmh0bWxcIiB0aXRsZT1cIkRpY2hpYXJhemlvbmUgZGkgYWNjZXNzaWJpbGl0w6BcIj4gRGljaGlhcmF6aW9uZSBkaSBhY2Nlc3NpYmlsaXTDoCA8L2E+PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxhc3RcIj48YSBocmVmPVwiaHR0cDovL3BhZ29wYS5pbmFpbC5pdC9cIiB0aXRsZT1cIlN1cHBvcnRvXCI+UGFnb1BBPC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25hdj5cbiAgICAgIDxwIGNsYXNzPVwiaGlkZGVuXCI+PGEgaHJlZj1cIiNuYXZpbnRlcm5hXCIgdGl0bGU9XCJ0b3JuYSBhbGxhIG5hdmlnYXppb25lIGludGVybmEgYWxsYSBwYWdpbmFcIj5Ub3JuYSBhbGxhIG5hdmlnYXppb25lIGludGVybmE8L2E+PC9wPjwvZm9vdGVyPlxuICAgIDxkaXYgaWQ9XCJzdWJmb290ZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29weXJpZ2h0Rm9vdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLThcIj4gwqkgMjAxOCBJTkFJTCAtIElzdGl0dXRvIE5hemlvbmFsZSBwZXIgbCdBc3NpY3VyYXppb25lIGNvbnRybyBnbGkgSW5mb3J0dW5pIHN1bCBMYXZvcm8gLSBQLiBJVkEgMDA5Njg5NTEwMDQ8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgIDx1bCBjbGFzcz1cImxpc3QtaW5saW5lIG1iLTAgcHktMlwiPlxuICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly93d3cuaW5haWwuaXQvcG9ydGFsZS9pdC9hbW1pbmlzdHJhemlvbmUtdHJhc3BhcmVudGUvYWx0cmktY29udGVudXRpL2RhdGktdWx0ZXJpb3JpL3ByaXZhY3kuaHRtbFwiIGNsYXNzPVwidGV4dC1ncmV5LTFcIiB0aXRsZT1cIlByaXZhY3kgZSBDb29raWVcIj5Qcml2YWN5IGVcbiAgICAgICAgICAgIENvb2tpZTwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiaHR0cHM6Ly9jZG4uaW5haWxjbG91ZC5pdC9hc3NldHMvaW5haWwvc3RhdGljL2pzL2N1c3RvbS9hbmFseXRpY3MuanNcIj48L3NjcmlwdD5cbiAgICA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCJodHRwczovL2Nkbi5pbmFpbGNsb3VkLml0L2Fzc2V0cy9pbmFpbC9zdGF0aWMvanMvZmVlZFJTUy5qc1wiPjwvc2NyaXB0PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPGRlYnVnLXByZSAqbmdJZj1cInNob3dTdGF0ZVwiPltpbmFpbC1mb290ZXJdPGJyPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCIndXJsJ1wiIFtwcm9wZXJ0aWVdPVwidXJsXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidkb21haW5VcmwnXCIgW3Byb3BlcnRpZV09XCJkb21haW5VcmxcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2luaXppYWxpenphemlvbmVUZXJtaW5hdGEnXCIgW3Byb3BlcnRpZV09XCJpbml6aWFsaXp6YXppb25lVGVybWluYXRhXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG48L2RlYnVnLXByZT5cbiJdfQ==
|