tango-app-ui-manage-stores 3.7.1-alpha.9 → 3.7.2
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/esm2022/lib/components/add-stores/add-stores.component.mjs +5 -2
- package/esm2022/lib/components/cluster-view/cluster-view.component.mjs +10 -5
- package/esm2022/lib/components/group-details/group-details.component.mjs +4 -3
- package/esm2022/lib/components/tango-manage-stores/tango-connect-modal/tango-connect-modal.component.mjs +53 -0
- package/esm2022/lib/components/tango-manage-stores/tango-manage-stores.component.mjs +42 -5
- package/esm2022/lib/interfaces/store.interface.mjs +1 -1
- package/esm2022/lib/route-wrappers/edge-wrapper.module.mjs +2 -1
- package/esm2022/lib/services/stores.service.mjs +10 -2
- package/esm2022/lib/tango-manage-stores.module.mjs +23 -11
- package/fesm2022/tango-app-ui-manage-stores-edge-wrapper.module-CFDk0tvS.mjs.map +1 -1
- package/fesm2022/tango-app-ui-manage-stores.mjs +134 -22
- package/fesm2022/tango-app-ui-manage-stores.mjs.map +1 -1
- package/lib/components/tango-manage-stores/tango-connect-modal/tango-connect-modal.component.d.ts +18 -0
- package/lib/components/tango-manage-stores/tango-manage-stores.component.d.ts +1 -0
- package/lib/interfaces/store.interface.d.ts +1 -0
- package/lib/services/stores.service.d.ts +1 -0
- package/lib/tango-manage-stores.module.d.ts +9 -8
- package/package.json +1 -1
|
@@ -122,6 +122,9 @@ export class AddStoresComponent {
|
|
|
122
122
|
errMsgs.push(this.validateField(data[i]?.SpocEmail, "spoc email", i, this.emailRegex));
|
|
123
123
|
errMsgs.push(this.validateField(data[i]?.SpocContact, "spoc contact", i, this.phoneRegex));
|
|
124
124
|
errMsgs.push(this.validateField(data[i]?.TimeZone, "timezone", i));
|
|
125
|
+
// Country is mandatory — it is saved to storeProfile.country and
|
|
126
|
+
// drives billing-group assignment and country-based reporting.
|
|
127
|
+
errMsgs.push(this.validateField(data[i]?.Country, "country", i));
|
|
125
128
|
errMsgs = errMsgs.filter((x) => x != null);
|
|
126
129
|
if (errMsgs.length > 0) {
|
|
127
130
|
let errors = errMsgs.join("<br>");
|
|
@@ -152,7 +155,7 @@ export class AddStoresComponent {
|
|
|
152
155
|
.then((placeData) => {
|
|
153
156
|
let storeProfile = {
|
|
154
157
|
address: "",
|
|
155
|
-
country: "",
|
|
158
|
+
country: data[i]?.Country ? data[i].Country.toString().trim() : "",
|
|
156
159
|
state: "",
|
|
157
160
|
city: "",
|
|
158
161
|
pincode: "",
|
|
@@ -303,4 +306,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
303
306
|
type: ViewChild,
|
|
304
307
|
args: ["inputFile"]
|
|
305
308
|
}] } });
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXN0b3Jlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc3RvcmVzL3NyYy9saWIvY29tcG9uZW50cy9hZGQtc3RvcmVzL2FkZC1zdG9yZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXN0b3Jlcy9hZGQtc3RvcmVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQVksSUFBSSxFQUFFLEtBQUssRUFBYSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFheEQsTUFBTSxPQUFPLGtCQUFrQjtJQU9UO0lBQW9DO0lBQXlCO0lBTnpELFNBQVMsQ0FBYTtJQUU5QyxVQUFVLEdBQVcsa0JBQWtCLENBQUM7SUFDeEMsVUFBVSxHQUFXLGlEQUFpRCxDQUFDO0lBQ3ZFLGNBQWMsQ0FBTTtJQUVwQixZQUFvQixZQUEyQixFQUFTLEVBQWdCLEVBQVMsTUFBYztRQUEzRSxpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQzdGLElBQUksSUFBSSxHQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksSUFBSSxHQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUks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IFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBTd2FsIGZyb20gXCJzd2VldGFsZXJ0MlwiO1xyXG5pbXBvcnQgeyBXb3JrQm9vaywgcmVhZCwgdXRpbHMsIFdvcmtTaGVldCB9IGZyb20gXCJ4bHN4XCI7XHJcbmltcG9ydCB7IFN0b3Jlc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmVCdWxrSXRlbSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3N0b3JlLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYWRkLXN0b3Jlc1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWRkLXN0b3Jlcy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vYWRkLXN0b3Jlcy5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkU3RvcmVzQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKFwiaW5wdXRGaWxlXCIpIGlucHV0RmlsZTogRWxlbWVudFJlZjtcclxuXHJcbiAgcGhvbmVSZWdleDogUmVnRXhwID0gL14oXFxkezN9KT9cXGR7MTV9JC87XHJcbiAgZW1haWxSZWdleDogUmVnRXhwID0gL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC87XHJcbiAgJGhlYWRlckZpbHRlcnM6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZVNlcnZpY2U6IFN0b3Jlc1NlcnZpY2UscHJpdmF0ZSB0czogVG9hc3RTZXJ2aWNlLHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIGxldCBkYXRhOmFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJycpO1xyXG4gICAgbGV0IHVzZXI6YW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgJycpO1xyXG4gICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGEgPyBkYXRhIDogdXNlcjtcclxuICB9XHJcbmhhc0ludmFsaWRDaGFycyh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgcmVnZXggPSAvXlthLXpBLVowLTkgX1xcLSgpLixdKiQvO1xyXG4gIHJldHVybiAhcmVnZXgudGVzdCh2YWx1ZSk7XHJcbn1cclxuICBvblVwbG9hZChlOiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBTdG9yZUJ1bGtJdGVtW107XHJcbiAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IDxEYXRhVHJhbnNmZXI+ZS50YXJnZXQ7XHJcbiAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcbiAgY29uc3QgZmlsZTogRmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gL1xcLih4bHN8eGxzeHxjc3YpJC9pO1xyXG4gIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIiwgXHJcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJ0ZXh0L2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJhcHBsaWNhdGlvbi9jc3ZcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBdO1xyXG4gIGlmICghYWxsb3dlZEV4dGVuc2lvbnMudGVzdChmaWxlLm5hbWUpIHx8ICFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiT25seSAueGxzeCwgb3IgLmNzdiBmaWxlcyBhcmUgYWxsb3dlZC5cIik7XHJcbiAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgICBpZiAoISF0YXJnZXQuZmlsZXNbMF0ubmFtZS5tYXRjaCgvKC54bHN8Lnhsc3gpLykpIHtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFdvcmtCb29rID0gcmVhZChic3RyLCB7IHR5cGU6IFwiYmluYXJ5XCIgfSk7XHJcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBXb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBpZiAod2IuU2hlZXROYW1lc1swXSAhPT0gXCJTdG9yZURhdGFcIikge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIFVwbG9hZCBhIFZhbGlkIEZpbGVcIik7IHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhID0gdXRpbHMuc2hlZXRfdG9fanNvbih3cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgXHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyAoZSkgPT4ge1xyXG4gICAgICAgIGxldCBwcm9jZXNzZWRBcnJheTogYW55W10gPSBbXTtcclxuICAgICAgICBsZXQgZXJyTXNnczogYW55W10gPSBbXTtcclxuICAgICAgICBsZXQgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICAgICAgbGV0IGRhdGFhcnJheTogc3RyaW5nW10gPSBbXTtcclxuICBcclxuICAgICAgICAvLyBDb2xsZWN0IGFsbCBTcG9jRW1haWxzIGluIG9uZSBhcnJheVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICBjb25zdCBlbWFpbCA9IGRhdGFbaV0/LlNwb2NFbWFpbDtcclxuICBpZiAodHlwZW9mIGVtYWlsID09PSAnc3RyaW5nJykge1xyXG4gICAgZGF0YWFycmF5LnB1c2goZW1haWwudHJpbSgpKTtcclxuICB9XHJcbn1cclxuICBcclxuICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIGVtYWlscyBpbiBvbmUgQVBJIGNhbGxcclxuICAgICAgICBjb25zdCBlbWFpbENoZWNrUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVtYWlsT2JqID0ge1xyXG4gICAgICAgICAgICBlbWFpbDogZGF0YWFycmF5LFxyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycz8uY2xpZW50LFxyXG4gICAgICAgICAgfTtcclxuICBcclxuICAgICAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlLmdldFNwb2NFbWFpbENoZWNrKGVtYWlsT2JqKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1haWwgdmFsaWRhdGlvbiBlcnJvcnMgdG8gZXJyTXNnc1xyXG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLmludmFsaWRFbWFpbHM/LmluY2x1ZGVzKGl0ZW0uU3BvY0VtYWlsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZ3MucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgIGBSb3cgJHtpbmRleCArIDF9OiBFbWFpbCAnJHtpdGVtLlNwb2NFbWFpbH0nIGFscmVhZHkgZXhpc3RzLmBcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDplcnI/LmVycm9yPy5tZXNzYWdlKVxyXG4gICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIC8vIHJlamVjdCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgcHJvbWlzZXMucHVzaChcclxuICAgICAgICAgIGVtYWlsQ2hlY2tQcm9taXNlLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAvLyBWYWxpZGF0aW9uIGZvciBmaWVsZHNcclxuICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGVyck1zZ3MucHVzaCh0aGlzLnZhbGlkYXRlRmllbGQoZGF0YVtpXS5TdG9yZU5hbWUsIFwic3RvcmUgbmFtZVwiLCBpKSk7XHJcbiAgICAgICAgICAgICAgZXJyTXNncy5wdXNoKHRoaXMudmFsaWRhdGVGaWVsZChkYXRhW2ldLlN0b3JlVHlwZSwgXCJzdG9yZSB0eXBlXCIsIGkpKTtcclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2godGhpcy52YWxpZGF0ZUZpZWxkKGRhdGFbaV0uU3BvY05hbWUsIFwic3BvYyBuYW1lXCIsIGkpKTtcclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRmllbGQoZGF0YVtpXS5CdXNpbmVzc1R5cGUsIFwiYnVzaW5lc3MgdHlwZVwiLCBpKVxyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmhhc0ludmFsaWRDaGFycyhkYXRhW2ldLlN0b3JlTmFtZSkpIHtcclxuICAgICAgZXJyTXNncy5wdXNoKGBSb3cgJHtpICsgMX06IFN0b3JlTmFtZSA6ICR7ZGF0YVtpXS5TdG9yZU5hbWV9IGhhcyBpbnZhbGlkIGNoYXJhY3RlcnMuIE9ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBfIC0gKCApIC4gLCBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhhc0ludmFsaWRDaGFycyhkYXRhW2ldLlNwb2NOYW1lKSkge1xyXG4gICAgICBlcnJNc2dzLnB1c2goYFJvdyAke2kgKyAxfTogU3BvY05hbWUgOiAke2RhdGFbaV0uU3BvY05hbWV9IGhhcyBpbnZhbGlkIGNoYXJhY3RlcnMuIE9ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBfIC0gKCApIC4gLCBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhW2ldPy5TdG9yZVJlZmVyZW5jZUNvZGUgJiYgdGhpcy5oYXNJbnZhbGlkQ2hhcnMoZGF0YVtpXS5TdG9yZVJlZmVyZW5jZUNvZGUudG9TdHJpbmcoKSkpIHtcclxuICAgICAgZXJyTXNncy5wdXNoKGBSb3cgJHtpICsgMX06IFN0b3JlUmVmZXJlbmNlQ29kZSA6ICR7ZGF0YVtpXS5TdG9yZVJlZmVyZW5jZUNvZGV9IGhhcyBpbnZhbGlkIGNoYXJhY3RlcnMuIE9ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBfIC0gKCApIC4gLCBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRmllbGQoXHJcbiAgICAgICAgICAgICAgICAgIGRhdGFbaV0/LlNwb2NFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgXCJzcG9jIGVtYWlsXCIsXHJcbiAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZW1haWxSZWdleFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgZXJyTXNncy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKFxyXG4gICAgICAgICAgICAgICAgICBkYXRhW2ldPy5TcG9jQ29udGFjdCxcclxuICAgICAgICAgICAgICAgICAgXCJzcG9jIGNvbnRhY3RcIixcclxuICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZVJlZ2V4XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2godGhpcy52YWxpZGF0ZUZpZWxkKGRhdGFbaV0/LlRpbWVab25lLCBcInRpbWV6b25lXCIsIGkpKTtcclxuICBcclxuICAgICAgICAgICAgICBlcnJNc2dzID0gZXJyTXNncy5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgaWYgKGVyck1zZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGVycm9ycyA9IGVyck1zZ3Muam9pbihcIjxicj5cIik7XHJcbiAgICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICAgICAgICBpY29uOiBcImVycm9yXCIsXHJcbiAgICAgICAgICAgICAgICAgIGh0bWw6IGVycm9ycyxcclxuICAgICAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBodG1sQ29udGFpbmVyOiBcImVycm9yLWh0bWxjb250YWluZXItY2xhc3NcIixcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0QXV0bzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiBcIiMwMDlFRjdcIixcclxuICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiT0tcIixcclxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge30pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcyBmb3IgTGF0aXR1ZGUgYW5kIExvbmdpdHVkZVxyXG4gICAgICAgICAgICAgIGlmICghZGF0YVtpXS5MYXRpdHVkZSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YVtpXS5MYXRpdHVkZSA9IFwiMFwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoIWRhdGFbaV0uTG9uZ2l0dWRlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhW2ldLkxvbmdpdHVkZSA9IFwiMFwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICAvLyBQcm9jZXNzIGVhY2ggZGF0YSByb3dcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JlU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmdldEFkZHJlc3MoTnVtYmVyKGRhdGFbaV0uTGF0aXR1ZGUpLCBOdW1iZXIoZGF0YVtpXS5Mb25naXR1ZGUpKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKHBsYWNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdG9yZVByb2ZpbGU6IGFueSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2l0eTogXCJcIixcclxuICAgICAgICAgICAgICAgICAgICBwaW5jb2RlOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlQ29kZTogZGF0YVtpXT8uU3RvcmVSZWZlcmVuY2VDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdGFbaV0/LlN0b3JlUmVmZXJlbmNlQ29kZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbjpcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaV0/LlN0b3JlT3BlblRpbWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICFpc05hTihOdW1iZXIoZGF0YVtpXT8uU3RvcmVPcGVuVGltZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kZWNpbWFsVG9UaW1lKE51bWJlcihkYXRhW2ldPy5TdG9yZU9wZW5UaW1lKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVtpXT8uU3RvcmVDbG9zZVRpbWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICFpc05hTihOdW1iZXIoZGF0YVtpXT8uU3RvcmVDbG9zZVRpbWUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZGVjaW1hbFRvVGltZShOdW1iZXIoZGF0YVtpXT8uU3RvcmVDbG9zZVRpbWUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIGRhdGFbaV1bXCJzdG9yZVByb2ZpbGVcIl0gPSBzdG9yZVByb2ZpbGU7XHJcbiAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZEFycmF5LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlTmFtZTogZGF0YVtpXS5TdG9yZU5hbWUudG9TdHJpbmcoKS50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlOiB7IHR5cGU6IGRhdGFbaV0uU3RvcmVUeXBlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZTogeyBzZXJ2ZXJUeXBlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNwb2NEZXRhaWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhW2ldLlNwb2NOYW1lLnRyaW0oKSxcclxuICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBkYXRhW2ldLlNwb2NFbWFpbC50cmltKCkudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3Q6IGRhdGFbaV0uU3BvY0NvbnRhY3QudG9TdHJpbmcoKS50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzdG9yZVByb2ZpbGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGFbaV0uc3RvcmVQcm9maWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgLi4ueyB0aW1lWm9uZTogZGF0YVtpXS5UaW1lWm9uZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NUeXBlOiBkYXRhW2ldLkJ1c2luZXNzVHlwZSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gIFxyXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxyXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyTXNncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgIGh0bWw6IGVyck1zZ3Muam9pbihcIjxicj5cIiksXHJcbiAgICAgICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgICBodG1sQ29udGFpbmVyOiBcImVycm9yLWh0bWxjb250YWluZXItY2xhc3NcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBoZWlnaHRBdXRvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6IFwiIzAwOUVGN1wiLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiT0tcIixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgLy8gRmluYWwgQVBJIGNhbGwgdG8gdXBsb2FkIHN0b3Jlc1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlU2VydmljZVxyXG4gICAgICAgICAgICAgIC5zdG9yZUJ1bGtVcGxvYWQoe1xyXG4gICAgICAgICAgICAgICAgc3RvcmVzOiBwcm9jZXNzZWRBcnJheSxcclxuICAgICAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRJZCxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJTdG9yZXMgaGF2ZSBiZWVuIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSFcIlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0b3JlcyAmJiByZXMuZGF0YS5zdG9yZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBidWxrVGlja2V0c0JvZHkgPSByZXMuZGF0YS5zdG9yZXMubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RvcmVJZDogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSWQ6IHN0b3JlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZVR5cGU6IFwiaW5zdGFsbGF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZVNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmJ1bGtJbmZyYVRpY2tldChidWxrVGlja2V0c0JvZHkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0b3JlIEluc3RhbGxhdGlvbiBUaWNrZXRzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzXCJdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8uZXJyb3I/LmVycm9yIHx8IGVycj8ubWVzc2FnZSB8fCAnRW50ZXIgVmFsaWQgRmlsZXMnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAvLyAuY2F0Y2goKGVycjphbnkpID0+IHtcclxuICAgICAgICAgIC8vICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOmVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgfTtcclxuICAgICAgLy8gJChcIiNrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiKT8udmFsKFwiXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIFVwbG9hZCBhIFZhbGlkIEZpbGVcIik7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBcclxuICBkZWNpbWFsVG9UaW1lKGRlY2ltYWxUaW1lOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdG90YWxNaW51dGVzID0gTWF0aC5mbG9vcihkZWNpbWFsVGltZSAqIDE0NDApOyAvLyBUb3RhbCBtaW51dGVzIGluIGEgZGF5XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gNjApO1xyXG4gICAgY29uc3QgbWludXRlcyA9IHRvdGFsTWludXRlcyAlIDYwO1xyXG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgucm91bmQoKGRlY2ltYWxUaW1lICogODY0MDApICUgNjApOyAvLyBUb3RhbCBzZWNvbmRzIGluIGEgZGF5XHJcbiAgXHJcbiAgICAvLyBQYWQgd2l0aCBsZWFkaW5nIHplcm9zIGlmIG5lY2Vzc2FyeVxyXG4gICAgY29uc3QgaG91cnNTdHJpbmcgPSBTdHJpbmcoaG91cnMpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBtaW51dGVzU3RyaW5nID0gU3RyaW5nKG1pbnV0ZXMpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBzZWNvbmRzU3RyaW5nID0gU3RyaW5nKHNlY29uZHMpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgXHJcbiAgICByZXR1cm4gYCR7aG91cnNTdHJpbmd9OiR7bWludXRlc1N0cmluZ306JHtzZWNvbmRzU3RyaW5nfWA7XHJcbiAgfVxyXG4gIHZhbGlkYXRlRmllbGQoXHJcbiAgICB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB8IG51bWJlcixcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgcm93OiBudW1iZXIsXHJcbiAgICByZWdleD86IFJlZ0V4cFxyXG4gICk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgcmV0dXJuIGBJbnZhbGlkIHZhbHVlIGZvciAke2ZpZWxkTmFtZS50b0xvd2VyQ2FzZSgpfSBpbiByb3cgJHtyb3cgKyAxfWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBgcGxlYXNlIGVudGVyIHRoZSAke2ZpZWxkTmFtZVxyXG4gICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAucmVwbGFjZSgvXFxiXFx3L2csIChsKSA9PiBsLnRvVXBwZXJDYXNlKCkpfWA7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBgUGxlYXNlIGVudGVyICR7ZmllbGROYW1lLnRvTG93ZXJDYXNlKCl9IGluIHJvdyAke3JvdyArIDF9YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBpZiAodmFsdWUudHJpbSgpID09PSBkZWZhdWx0VmFsdWUudHJpbSgpKSB7XHJcbiAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHZhbHVlIGZvciAke2ZpZWxkTmFtZS50b0xvd2VyQ2FzZSgpfSBpbiByb3cgJHtyb3cgKyAxfWA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlZ2V4ICYmICFyZWdleC50ZXN0KHZhbHVlLnRyaW0oKSkpIHtcclxuICAgICAgICByZXR1cm4gYFBsZWFzZSBlbnRlciB2YWxpZCAke2ZpZWxkTmFtZS50b0xvd2VyQ2FzZSgpfSBpbiByb3cgJHtcclxuICAgICAgICAgIHJvdyArIDFcclxuICAgICAgICB9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggZmxleC1jZW50ZXIgZmxleC1jb2x1bW4gcC05XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC03NXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICA8aW1nIGFsdD1cIlBpY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2FkZC1zdG9yZS1pY29uLnN2Z1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGRlciBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+IEFkZCBzdG9yZXMgPC9hPlxyXG4gICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTUwMCBteS02XCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cInRleHQtZ3JheS00MDAgZnctYm9sZCBmcy02XCI+XHJcbiAgICAgICAgPGxpPlVzZSB0aGUgdGVtcGxhdGUgdG8gdXBsb2FkIG11bHRpcGxlIHN0b3JlcyBhdCBvbmNlLjwvbGk+XHJcbiAgICAgICAgPGxpPkRvd25sb2FkIHRoZSB0ZW1wbGF0ZSBoZXJlIC1cclxuICAgICAgICAgIDxhIGhyZWY9XCIuLi8uLi9hc3NldHMvZmlsZXMvc3RvcmVzVXBsb2FkVGVtcGxhdGUueGxzeFwiIGRvd25sb2FkPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTUuODMzMzMgOC4zMzMzM0wxMCAxMi41TTEwIDEyLjVMMTQuMTY2NyA4LjMzMzMzTTEwIDEyLjVWMi41XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVtcGxhdGUgbXMtMlwiPkRvd25sb2FkIFRlbXBsYXRlPC9zcGFuPlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPkFkZCB5b3VyIGRhdGEgdG8gdGhlIFRlbXBsYXRlIEZpbGU8L2xpPlxyXG4gICAgICAgIDxsaT5VcGxvYWQgaXQgYmVsb3cgZm9yIHByb2Nlc3Npbmc8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY2VudGVyIGZsZXgtd3JhcCBtYi01XCI+XHJcbiAgICAgIDxpbnB1dCBuYW1lPVwiYWNjb3VudFR5cGVcIiB0eXBlPVwicmFkaW9cIiBpZD1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIgdmFsdWU9XCJwZXJzb25hbFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2tcIiBuZy1yZWZsZWN0LW5hbWU9XCJhY2NvdW50VHlwZVwiIG5nLXJlZmxlY3QtZm9ybS1jb250cm9sLW5hbWU9XCJhY2NvdW50VHlwZVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvblVwbG9hZCgkZXZlbnQpXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCJcclxuICAgICAgICBuZy1yZWZsZWN0LXZhbHVlPVwicGVyc29uYWxcIiB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUgLz5cclxuICAgICAgPGxhYmVsIGZvcj1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tcHJpbWFyeSBiZy1wcmltYXJ5IGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHctNTAgcC00IG10LTVcIj48c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIGZzLTRcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTggMTIuNVYxNS44MzMzQzE4IDE2LjI3NTQgMTcuODI0NCAxNi42OTkzIDE3LjUxMTggMTcuMDExOEMxNy4xOTkzIDE3LjMyNDQgMTYuNzc1NCAxNy41IDE2LjMzMzMgMTcuNUg0LjY2NjY3QzQuMjI0NjQgMTcuNSAzLjgwMDcyIDE3LjMyNDQgMy40ODgxNiAxNy4wMTE4QzMuMTc1NTkgMTYuNjk5MyAzIDE2LjI3NTQgMyAxNS44MzMzVjEyLjVNMTQuNjY2NyA2LjY2NjY3TDEwLjUgMi41TTEwLjUgMi41TDYuMzMzMzMgNi42NjY2N00xMC41IDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+IFxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdoaXRlIG14LTJcIj5BZGQgTXVsdGlwbGUgU3RvcmVzPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNDAwIGZ3LWJvbGQgbXktM1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS1iZyBcIj48c3ZnIHdpZHRoPVwiMjI0XCIgaGVpZ2h0PVwiMlwiIHZpZXdCb3g9XCIwIDAgMTI0IDJcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTIzLjMzM1wiIGhlaWdodD1cIjFcIiBmaWxsPVwiI0VBRUNGMFwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJteC0yXCI+T3IgPC9zcGFuPiA8c3BhbiBjbGFzcz1cImxpbmUtYmcgXCI+PHN2ZyB3aWR0aD1cIjIyNFwiIGhlaWdodD1cIjJcIiB2aWV3Qm94PVwiMCAwIDEyNCAyXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEyMy4zMzNcIiBoZWlnaHQ9XCIxXCIgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8xXCIgdmFsdWU9XCIxLTFcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9zdG9yZXMvYWRkLXNpbmdsZS1zdG9yZVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbmctdW50b3VjaGVkIG5nLXByaXN0aW5lIG5nLXZhbGlkXCIgLz5cclxuICAgICAgPGxhYmVsIGZvcj1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8xXCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB3LTUwIHAtNCBtdC0zXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTEuMTgwMTUgMy44MDM3OEwxLjEyNjkgMy44ODY5NUMwLjU2ODg2MyA0Ljg3NCAxLjE2NDY5IDYuMTIxNDMgMi4yMzYzIDYuMjY0NTJDMi4zMzMzOSA2LjI3NjM5IDIuNDIzNzMgNi4yODI2NyAyLjUxMiA2LjI4MjY3QzMuMDkwMTUgNi4yODI2NyAzLjYwMTMyIDYuMDM0NjUgMy45NTc1OSA1LjY0NzkyTDQuNTEwOTMgNS4wNDczTDUuMDYyMzggNS42NDk2NUM1LjQxNDMyIDYuMDM0MDcgNS45MjQzMyA2LjI4MjY3IDYuNTA2MzkgNi4yODI2N0M3LjA4NTgzIDYuMjgyNjcgNy41OTg3NyA2LjAzMzcyIDcuOTUwMzkgNS42NDk2NUw4LjUwMzU4IDUuMDQ1NDFMOS4wNTY3NiA1LjY0OTY1QzkuNDA4MzkgNi4wMzM3MiA5LjkyMTMzIDYuMjgyNjcgMTAuNTAwOCA2LjI4MjY3QzExLjA4MDIgNi4yODI2NyAxMS41OTMyIDYuMDMzNzIgMTEuOTQ0OCA1LjY0OTY1TDEyLjQ5OCA1LjA0NTQxTDEzLjA1MTEgNS42NDk2NUMxMy40MDI4IDYuMDMzNzIgMTMuOTE1NyA2LjI4MjY3IDE0LjQ5NTIgNi4yODI2N0MxNC41ODA1IDYuMjgyNjcgMTQuNjczNiA2LjI3NjM4IDE0Ljc3IDYuMjY0NjJDMTUuODY1MiA2LjExNTMgMTYuNDYzIDQuODAxMDMgMTUuODI0MyAzLjgwNDI4QzE1LjgyNDIgMy44MDQyMyAxNS44MjQyIDMuODA0MTcgMTUuODI0MiAzLjgwNDExTDE0LjA2NiAxLjA2MjdMMTQuMDY2IDEuMDYyN0wxNC4wNjUxIDEuMDYxMjNDMTQuMDQ5OSAxLjAzNzQgMTQuMDEyNCAxLjAxMTg0IDEzLjk2NTIgMS4wMTE4NEgzLjAzNTgxQzIuOTg4NjYgMS4wMTE4NCAyLjk1MTE3IDEuMDM3NCAyLjkzNTk3IDEuMDYxMjRMMi45MzUzNSAxLjA2MjJMMS4xODAxNSAzLjgwMzc4Wk0xNC4xNTE2IDguNzM3MDZWMTEuODY5VjEyLjYxOUgxMy40MDE2SDMuNTk5NDNIMi44NDk0M1YxMS44NjlWOC43Mzc1M0MyLjczOTIgOC43NDU3MyAyLjYyNzY4IDguNzQ5OTQgMi41MTUwNyA4Ljc0OTk0QzIuNDcyNzYgOC43NDk5NCAyLjQzMDc0IDguNzQ5MzEgMi4zODkgOC43NDgwOVYxMS44NjlWMTMuODAzNUMyLjM4OSAxNC40NDY5IDIuOTIyOSAxNC45ODggMy41OTk0MyAxNC45ODhIMTMuNDAxNkMxNC4wNzgxIDE0Ljk4OCAxNC42MTIgMTQuNDQ2OSAxNC42MTIgMTMuODAzNVYxMS44NjlWOC43NDgyN0MxNC41NzIyIDguNzQ5MzcgMTQuNTMyMiA4Ljc0OTk0IDE0LjQ5MjEgOC43NDk5NEMxNC4zNzc3IDguNzQ5OTQgMTQuMjY0MSA4Ljc0NTU5IDE0LjE1MTYgOC43MzcwNlpcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIGZzLTQgbXgtMlwiPlxyXG4gICAgICAgICAgICBBZGQgU2luZ2xlXHJcbiAgICAgICAgICBTdG9yZTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgXHJcbiAgPC9kaXY+XHJcbiJdfQ==
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXN0b3Jlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc3RvcmVzL3NyYy9saWIvY29tcG9uZW50cy9hZGQtc3RvcmVzL2FkZC1zdG9yZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXN0b3Jlcy9hZGQtc3RvcmVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQVksSUFBSSxFQUFFLEtBQUssRUFBYSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFheEQsTUFBTSxPQUFPLGtCQUFrQjtJQU9UO0lBQW9DO0lBQXlCO0lBTnpELFNBQVMsQ0FBYTtJQUU5QyxVQUFVLEdBQVcsa0JBQWtCLENBQUM7SUFDeEMsVUFBVSxHQUFXLGlEQUFpRCxDQUFDO0lBQ3ZFLGNBQWMsQ0FBTTtJQUVwQixZQUFvQixZQUEyQixFQUFTLEVBQWdCLEVBQVMsTUFBYztRQUEzRSxpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQzdGLElBQUksSUFBSSxHQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksSUFBSSxHQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUks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QixTQUFTLENBQUMsV0FBVyxFQUFFLFdBQ2xELEdBQUcsR0FBRyxDQUNSLEVBQUUsQ0FBQzthQUNKO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBaFZVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDhKQ2YvQix5eUtBaUVBOzs0RkRsRGEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjtrSUFLRixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBTd2FsIGZyb20gXCJzd2VldGFsZXJ0MlwiO1xyXG5pbXBvcnQgeyBXb3JrQm9vaywgcmVhZCwgdXRpbHMsIFdvcmtTaGVldCB9IGZyb20gXCJ4bHN4XCI7XHJcbmltcG9ydCB7IFN0b3Jlc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmVCdWxrSXRlbSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3N0b3JlLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYWRkLXN0b3Jlc1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWRkLXN0b3Jlcy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vYWRkLXN0b3Jlcy5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkU3RvcmVzQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKFwiaW5wdXRGaWxlXCIpIGlucHV0RmlsZTogRWxlbWVudFJlZjtcclxuXHJcbiAgcGhvbmVSZWdleDogUmVnRXhwID0gL14oXFxkezN9KT9cXGR7MTV9JC87XHJcbiAgZW1haWxSZWdleDogUmVnRXhwID0gL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC87XHJcbiAgJGhlYWRlckZpbHRlcnM6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZVNlcnZpY2U6IFN0b3Jlc1NlcnZpY2UscHJpdmF0ZSB0czogVG9hc3RTZXJ2aWNlLHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIGxldCBkYXRhOmFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJycpO1xyXG4gICAgbGV0IHVzZXI6YW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgJycpO1xyXG4gICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGEgPyBkYXRhIDogdXNlcjtcclxuICB9XHJcbmhhc0ludmFsaWRDaGFycyh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgcmVnZXggPSAvXlthLXpBLVowLTkgX1xcLSgpLixdKiQvO1xyXG4gIHJldHVybiAhcmVnZXgudGVzdCh2YWx1ZSk7XHJcbn1cclxuICBvblVwbG9hZChlOiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBTdG9yZUJ1bGtJdGVtW107XHJcbiAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IDxEYXRhVHJhbnNmZXI+ZS50YXJnZXQ7XHJcbiAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcbiAgY29uc3QgZmlsZTogRmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gL1xcLih4bHN8eGxzeHxjc3YpJC9pO1xyXG4gIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIiwgXHJcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJ0ZXh0L2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJhcHBsaWNhdGlvbi9jc3ZcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBdO1xyXG4gIGlmICghYWxsb3dlZEV4dGVuc2lvbnMudGVzdChmaWxlLm5hbWUpIHx8ICFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiT25seSAueGxzeCwgb3IgLmNzdiBmaWxlcyBhcmUgYWxsb3dlZC5cIik7XHJcbiAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgICBpZiAoISF0YXJnZXQuZmlsZXNbMF0ubmFtZS5tYXRjaCgvKC54bHN8Lnhsc3gpLykpIHtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFdvcmtCb29rID0gcmVhZChic3RyLCB7IHR5cGU6IFwiYmluYXJ5XCIgfSk7XHJcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBXb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBpZiAod2IuU2hlZXROYW1lc1swXSAhPT0gXCJTdG9yZURhdGFcIikge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIFVwbG9hZCBhIFZhbGlkIEZpbGVcIik7IHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhID0gdXRpbHMuc2hlZXRfdG9fanNvbih3cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgXHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyAoZSkgPT4ge1xyXG4gICAgICAgIGxldCBwcm9jZXNzZWRBcnJheTogYW55W10gPSBbXTtcclxuICAgICAgICBsZXQgZXJyTXNnczogYW55W10gPSBbXTtcclxuICAgICAgICBsZXQgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICAgICAgbGV0IGRhdGFhcnJheTogc3RyaW5nW10gPSBbXTtcclxuICBcclxuICAgICAgICAvLyBDb2xsZWN0IGFsbCBTcG9jRW1haWxzIGluIG9uZSBhcnJheVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICBjb25zdCBlbWFpbCA9IGRhdGFbaV0/LlNwb2NFbWFpbDtcclxuICBpZiAodHlwZW9mIGVtYWlsID09PSAnc3RyaW5nJykge1xyXG4gICAgZGF0YWFycmF5LnB1c2goZW1haWwudHJpbSgpKTtcclxuICB9XHJcbn1cclxuICBcclxuICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIGVtYWlscyBpbiBvbmUgQVBJIGNhbGxcclxuICAgICAgICBjb25zdCBlbWFpbENoZWNrUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVtYWlsT2JqID0ge1xyXG4gICAgICAgICAgICBlbWFpbDogZGF0YWFycmF5LFxyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycz8uY2xpZW50LFxyXG4gICAgICAgICAgfTtcclxuICBcclxuICAgICAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlLmdldFNwb2NFbWFpbENoZWNrKGVtYWlsT2JqKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1haWwgdmFsaWRhdGlvbiBlcnJvcnMgdG8gZXJyTXNnc1xyXG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLmludmFsaWRFbWFpbHM/LmluY2x1ZGVzKGl0ZW0uU3BvY0VtYWlsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZ3MucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgIGBSb3cgJHtpbmRleCArIDF9OiBFbWFpbCAnJHtpdGVtLlNwb2NFbWFpbH0nIGFscmVhZHkgZXhpc3RzLmBcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDplcnI/LmVycm9yPy5tZXNzYWdlKVxyXG4gICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIC8vIHJlamVjdCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgcHJvbWlzZXMucHVzaChcclxuICAgICAgICAgIGVtYWlsQ2hlY2tQcm9taXNlLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAvLyBWYWxpZGF0aW9uIGZvciBmaWVsZHNcclxuICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGVyck1zZ3MucHVzaCh0aGlzLnZhbGlkYXRlRmllbGQoZGF0YVtpXS5TdG9yZU5hbWUsIFwic3RvcmUgbmFtZVwiLCBpKSk7XHJcbiAgICAgICAgICAgICAgZXJyTXNncy5wdXNoKHRoaXMudmFsaWRhdGVGaWVsZChkYXRhW2ldLlN0b3JlVHlwZSwgXCJzdG9yZSB0eXBlXCIsIGkpKTtcclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2godGhpcy52YWxpZGF0ZUZpZWxkKGRhdGFbaV0uU3BvY05hbWUsIFwic3BvYyBuYW1lXCIsIGkpKTtcclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRmllbGQoZGF0YVtpXS5CdXNpbmVzc1R5cGUsIFwiYnVzaW5lc3MgdHlwZVwiLCBpKVxyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmhhc0ludmFsaWRDaGFycyhkYXRhW2ldLlN0b3JlTmFtZSkpIHtcclxuICAgICAgZXJyTXNncy5wdXNoKGBSb3cgJHtpICsgMX06IFN0b3JlTmFtZSA6ICR7ZGF0YVtpXS5TdG9yZU5hbWV9IGhhcyBpbnZhbGlkIGNoYXJhY3RlcnMuIE9ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBfIC0gKCApIC4gLCBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhhc0ludmFsaWRDaGFycyhkYXRhW2ldLlNwb2NOYW1lKSkge1xyXG4gICAgICBlcnJNc2dzLnB1c2goYFJvdyAke2kgKyAxfTogU3BvY05hbWUgOiAke2RhdGFbaV0uU3BvY05hbWV9IGhhcyBpbnZhbGlkIGNoYXJhY3RlcnMuIE9ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBfIC0gKCApIC4gLCBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhW2ldPy5TdG9yZVJlZmVyZW5jZUNvZGUgJiYgdGhpcy5oYXNJbnZhbGlkQ2hhcnMoZGF0YVtpXS5TdG9yZVJlZmVyZW5jZUNvZGUudG9TdHJpbmcoKSkpIHtcclxuICAgICAgZXJyTXNncy5wdXNoKGBSb3cgJHtpICsgMX06IFN0b3JlUmVmZXJlbmNlQ29kZSA6ICR7ZGF0YVtpXS5TdG9yZVJlZmVyZW5jZUNvZGV9IGhhcyBpbnZhbGlkIGNoYXJhY3RlcnMuIE9ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBfIC0gKCApIC4gLCBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRmllbGQoXHJcbiAgICAgICAgICAgICAgICAgIGRhdGFbaV0/LlNwb2NFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgXCJzcG9jIGVtYWlsXCIsXHJcbiAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZW1haWxSZWdleFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgZXJyTXNncy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKFxyXG4gICAgICAgICAgICAgICAgICBkYXRhW2ldPy5TcG9jQ29udGFjdCxcclxuICAgICAgICAgICAgICAgICAgXCJzcG9jIGNvbnRhY3RcIixcclxuICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZVJlZ2V4XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBlcnJNc2dzLnB1c2godGhpcy52YWxpZGF0ZUZpZWxkKGRhdGFbaV0/LlRpbWVab25lLCBcInRpbWV6b25lXCIsIGkpKTtcclxuICAgICAgICAgICAgICAvLyBDb3VudHJ5IGlzIG1hbmRhdG9yeSDigJQgaXQgaXMgc2F2ZWQgdG8gc3RvcmVQcm9maWxlLmNvdW50cnkgYW5kXHJcbiAgICAgICAgICAgICAgLy8gZHJpdmVzIGJpbGxpbmctZ3JvdXAgYXNzaWdubWVudCBhbmQgY291bnRyeS1iYXNlZCByZXBvcnRpbmcuXHJcbiAgICAgICAgICAgICAgZXJyTXNncy5wdXNoKHRoaXMudmFsaWRhdGVGaWVsZChkYXRhW2ldPy5Db3VudHJ5LCBcImNvdW50cnlcIiwgaSkpO1xyXG4gIFxyXG4gICAgICAgICAgICAgIGVyck1zZ3MgPSBlcnJNc2dzLmZpbHRlcigoeCkgPT4geCAhPSBudWxsKTtcclxuICBcclxuICAgICAgICAgICAgICBpZiAoZXJyTXNncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3JzID0gZXJyTXNncy5qb2luKFwiPGJyPlwiKTtcclxuICAgICAgICAgICAgICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgaHRtbDogZXJyb3JzLFxyXG4gICAgICAgICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWxDb250YWluZXI6IFwiZXJyb3ItaHRtbGNvbnRhaW5lci1jbGFzc1wiLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBoZWlnaHRBdXRvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6IFwiIzAwOUVGN1wiLFxyXG4gICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJPS1wiLFxyXG4gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIGZvciBMYXRpdHVkZSBhbmQgTG9uZ2l0dWRlXHJcbiAgICAgICAgICAgICAgaWYgKCFkYXRhW2ldLkxhdGl0dWRlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhW2ldLkxhdGl0dWRlID0gXCIwXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICghZGF0YVtpXS5Mb25naXR1ZGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGFbaV0uTG9uZ2l0dWRlID0gXCIwXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICAgIC8vIFByb2Nlc3MgZWFjaCBkYXRhIHJvd1xyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmVTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZ2V0QWRkcmVzcyhOdW1iZXIoZGF0YVtpXS5MYXRpdHVkZSksIE51bWJlcihkYXRhW2ldLkxvbmdpdHVkZSkpXHJcbiAgICAgICAgICAgICAgICAudGhlbigocGxhY2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHN0b3JlUHJvZmlsZTogYW55ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeTogZGF0YVtpXT8uQ291bnRyeSA/IGRhdGFbaV0uQ291bnRyeS50b1N0cmluZygpLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2l0eTogXCJcIixcclxuICAgICAgICAgICAgICAgICAgICBwaW5jb2RlOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlQ29kZTogZGF0YVtpXT8uU3RvcmVSZWZlcmVuY2VDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdGFbaV0/LlN0b3JlUmVmZXJlbmNlQ29kZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbjpcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaV0/LlN0b3JlT3BlblRpbWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICFpc05hTihOdW1iZXIoZGF0YVtpXT8uU3RvcmVPcGVuVGltZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kZWNpbWFsVG9UaW1lKE51bWJlcihkYXRhW2ldPy5TdG9yZU9wZW5UaW1lKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVtpXT8uU3RvcmVDbG9zZVRpbWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICFpc05hTihOdW1iZXIoZGF0YVtpXT8uU3RvcmVDbG9zZVRpbWUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZGVjaW1hbFRvVGltZShOdW1iZXIoZGF0YVtpXT8uU3RvcmVDbG9zZVRpbWUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIGRhdGFbaV1bXCJzdG9yZVByb2ZpbGVcIl0gPSBzdG9yZVByb2ZpbGU7XHJcbiAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZEFycmF5LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlTmFtZTogZGF0YVtpXS5TdG9yZU5hbWUudG9TdHJpbmcoKS50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlOiB7IHR5cGU6IGRhdGFbaV0uU3RvcmVUeXBlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZTogeyBzZXJ2ZXJUeXBlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNwb2NEZXRhaWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhW2ldLlNwb2NOYW1lLnRyaW0oKSxcclxuICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBkYXRhW2ldLlNwb2NFbWFpbC50cmltKCkudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3Q6IGRhdGFbaV0uU3BvY0NvbnRhY3QudG9TdHJpbmcoKS50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzdG9yZVByb2ZpbGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGFbaV0uc3RvcmVQcm9maWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgLi4ueyB0aW1lWm9uZTogZGF0YVtpXS5UaW1lWm9uZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NUeXBlOiBkYXRhW2ldLkJ1c2luZXNzVHlwZSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gIFxyXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxyXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyTXNncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgIGh0bWw6IGVyck1zZ3Muam9pbihcIjxicj5cIiksXHJcbiAgICAgICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgICBodG1sQ29udGFpbmVyOiBcImVycm9yLWh0bWxjb250YWluZXItY2xhc3NcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBoZWlnaHRBdXRvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6IFwiIzAwOUVGN1wiLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiT0tcIixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgLy8gRmluYWwgQVBJIGNhbGwgdG8gdXBsb2FkIHN0b3Jlc1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlU2VydmljZVxyXG4gICAgICAgICAgICAgIC5zdG9yZUJ1bGtVcGxvYWQoe1xyXG4gICAgICAgICAgICAgICAgc3RvcmVzOiBwcm9jZXNzZWRBcnJheSxcclxuICAgICAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRJZCxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJTdG9yZXMgaGF2ZSBiZWVuIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSFcIlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0b3JlcyAmJiByZXMuZGF0YS5zdG9yZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBidWxrVGlja2V0c0JvZHkgPSByZXMuZGF0YS5zdG9yZXMubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RvcmVJZDogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSWQ6IHN0b3JlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZVR5cGU6IFwiaW5zdGFsbGF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZVNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmJ1bGtJbmZyYVRpY2tldChidWxrVGlja2V0c0JvZHkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0b3JlIEluc3RhbGxhdGlvbiBUaWNrZXRzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzXCJdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8uZXJyb3I/LmVycm9yIHx8IGVycj8ubWVzc2FnZSB8fCAnRW50ZXIgVmFsaWQgRmlsZXMnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAvLyAuY2F0Y2goKGVycjphbnkpID0+IHtcclxuICAgICAgICAgIC8vICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOmVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgfTtcclxuICAgICAgLy8gJChcIiNrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiKT8udmFsKFwiXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIFVwbG9hZCBhIFZhbGlkIEZpbGVcIik7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBcclxuICBkZWNpbWFsVG9UaW1lKGRlY2ltYWxUaW1lOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdG90YWxNaW51dGVzID0gTWF0aC5mbG9vcihkZWNpbWFsVGltZSAqIDE0NDApOyAvLyBUb3RhbCBtaW51dGVzIGluIGEgZGF5XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gNjApO1xyXG4gICAgY29uc3QgbWludXRlcyA9IHRvdGFsTWludXRlcyAlIDYwO1xyXG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgucm91bmQoKGRlY2ltYWxUaW1lICogODY0MDApICUgNjApOyAvLyBUb3RhbCBzZWNvbmRzIGluIGEgZGF5XHJcbiAgXHJcbiAgICAvLyBQYWQgd2l0aCBsZWFkaW5nIHplcm9zIGlmIG5lY2Vzc2FyeVxyXG4gICAgY29uc3QgaG91cnNTdHJpbmcgPSBTdHJpbmcoaG91cnMpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBtaW51dGVzU3RyaW5nID0gU3RyaW5nKG1pbnV0ZXMpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBzZWNvbmRzU3RyaW5nID0gU3RyaW5nKHNlY29uZHMpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgXHJcbiAgICByZXR1cm4gYCR7aG91cnNTdHJpbmd9OiR7bWludXRlc1N0cmluZ306JHtzZWNvbmRzU3RyaW5nfWA7XHJcbiAgfVxyXG4gIHZhbGlkYXRlRmllbGQoXHJcbiAgICB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB8IG51bWJlcixcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgcm93OiBudW1iZXIsXHJcbiAgICByZWdleD86IFJlZ0V4cFxyXG4gICk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgcmV0dXJuIGBJbnZhbGlkIHZhbHVlIGZvciAke2ZpZWxkTmFtZS50b0xvd2VyQ2FzZSgpfSBpbiByb3cgJHtyb3cgKyAxfWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBgcGxlYXNlIGVudGVyIHRoZSAke2ZpZWxkTmFtZVxyXG4gICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAucmVwbGFjZSgvXFxiXFx3L2csIChsKSA9PiBsLnRvVXBwZXJDYXNlKCkpfWA7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBgUGxlYXNlIGVudGVyICR7ZmllbGROYW1lLnRvTG93ZXJDYXNlKCl9IGluIHJvdyAke3JvdyArIDF9YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBpZiAodmFsdWUudHJpbSgpID09PSBkZWZhdWx0VmFsdWUudHJpbSgpKSB7XHJcbiAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHZhbHVlIGZvciAke2ZpZWxkTmFtZS50b0xvd2VyQ2FzZSgpfSBpbiByb3cgJHtyb3cgKyAxfWA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlZ2V4ICYmICFyZWdleC50ZXN0KHZhbHVlLnRyaW0oKSkpIHtcclxuICAgICAgICByZXR1cm4gYFBsZWFzZSBlbnRlciB2YWxpZCAke2ZpZWxkTmFtZS50b0xvd2VyQ2FzZSgpfSBpbiByb3cgJHtcclxuICAgICAgICAgIHJvdyArIDFcclxuICAgICAgICB9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggZmxleC1jZW50ZXIgZmxleC1jb2x1bW4gcC05XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC03NXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICA8aW1nIGFsdD1cIlBpY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2FkZC1zdG9yZS1pY29uLnN2Z1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGRlciBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+IEFkZCBzdG9yZXMgPC9hPlxyXG4gICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTUwMCBteS02XCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cInRleHQtZ3JheS00MDAgZnctYm9sZCBmcy02XCI+XHJcbiAgICAgICAgPGxpPlVzZSB0aGUgdGVtcGxhdGUgdG8gdXBsb2FkIG11bHRpcGxlIHN0b3JlcyBhdCBvbmNlLjwvbGk+XHJcbiAgICAgICAgPGxpPkRvd25sb2FkIHRoZSB0ZW1wbGF0ZSBoZXJlIC1cclxuICAgICAgICAgIDxhIGhyZWY9XCIuLi8uLi9hc3NldHMvZmlsZXMvc3RvcmVzVXBsb2FkVGVtcGxhdGUueGxzeFwiIGRvd25sb2FkPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTUuODMzMzMgOC4zMzMzM0wxMCAxMi41TTEwIDEyLjVMMTQuMTY2NyA4LjMzMzMzTTEwIDEyLjVWMi41XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVtcGxhdGUgbXMtMlwiPkRvd25sb2FkIFRlbXBsYXRlPC9zcGFuPlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPkFkZCB5b3VyIGRhdGEgdG8gdGhlIFRlbXBsYXRlIEZpbGU8L2xpPlxyXG4gICAgICAgIDxsaT5VcGxvYWQgaXQgYmVsb3cgZm9yIHByb2Nlc3Npbmc8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY2VudGVyIGZsZXgtd3JhcCBtYi01XCI+XHJcbiAgICAgIDxpbnB1dCBuYW1lPVwiYWNjb3VudFR5cGVcIiB0eXBlPVwicmFkaW9cIiBpZD1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIgdmFsdWU9XCJwZXJzb25hbFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2tcIiBuZy1yZWZsZWN0LW5hbWU9XCJhY2NvdW50VHlwZVwiIG5nLXJlZmxlY3QtZm9ybS1jb250cm9sLW5hbWU9XCJhY2NvdW50VHlwZVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvblVwbG9hZCgkZXZlbnQpXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCJcclxuICAgICAgICBuZy1yZWZsZWN0LXZhbHVlPVwicGVyc29uYWxcIiB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUgLz5cclxuICAgICAgPGxhYmVsIGZvcj1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tcHJpbWFyeSBiZy1wcmltYXJ5IGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHctNTAgcC00IG10LTVcIj48c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIGZzLTRcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTggMTIuNVYxNS44MzMzQzE4IDE2LjI3NTQgMTcuODI0NCAxNi42OTkzIDE3LjUxMTggMTcuMDExOEMxNy4xOTkzIDE3LjMyNDQgMTYuNzc1NCAxNy41IDE2LjMzMzMgMTcuNUg0LjY2NjY3QzQuMjI0NjQgMTcuNSAzLjgwMDcyIDE3LjMyNDQgMy40ODgxNiAxNy4wMTE4QzMuMTc1NTkgMTYuNjk5MyAzIDE2LjI3NTQgMyAxNS44MzMzVjEyLjVNMTQuNjY2NyA2LjY2NjY3TDEwLjUgMi41TTEwLjUgMi41TDYuMzMzMzMgNi42NjY2N00xMC41IDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+IFxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdoaXRlIG14LTJcIj5BZGQgTXVsdGlwbGUgU3RvcmVzPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNDAwIGZ3LWJvbGQgbXktM1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS1iZyBcIj48c3ZnIHdpZHRoPVwiMjI0XCIgaGVpZ2h0PVwiMlwiIHZpZXdCb3g9XCIwIDAgMTI0IDJcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTIzLjMzM1wiIGhlaWdodD1cIjFcIiBmaWxsPVwiI0VBRUNGMFwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJteC0yXCI+T3IgPC9zcGFuPiA8c3BhbiBjbGFzcz1cImxpbmUtYmcgXCI+PHN2ZyB3aWR0aD1cIjIyNFwiIGhlaWdodD1cIjJcIiB2aWV3Qm94PVwiMCAwIDEyNCAyXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEyMy4zMzNcIiBoZWlnaHQ9XCIxXCIgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8xXCIgdmFsdWU9XCIxLTFcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9zdG9yZXMvYWRkLXNpbmdsZS1zdG9yZVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbmctdW50b3VjaGVkIG5nLXByaXN0aW5lIG5nLXZhbGlkXCIgLz5cclxuICAgICAgPGxhYmVsIGZvcj1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8xXCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB3LTUwIHAtNCBtdC0zXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTEuMTgwMTUgMy44MDM3OEwxLjEyNjkgMy44ODY5NUMwLjU2ODg2MyA0Ljg3NCAxLjE2NDY5IDYuMTIxNDMgMi4yMzYzIDYuMjY0NTJDMi4zMzMzOSA2LjI3NjM5IDIuNDIzNzMgNi4yODI2NyAyLjUxMiA2LjI4MjY3QzMuMDkwMTUgNi4yODI2NyAzLjYwMTMyIDYuMDM0NjUgMy45NTc1OSA1LjY0NzkyTDQuNTEwOTMgNS4wNDczTDUuMDYyMzggNS42NDk2NUM1LjQxNDMyIDYuMDM0MDcgNS45MjQzMyA2LjI4MjY3IDYuNTA2MzkgNi4yODI2N0M3LjA4NTgzIDYuMjgyNjcgNy41OTg3NyA2LjAzMzcyIDcuOTUwMzkgNS42NDk2NUw4LjUwMzU4IDUuMDQ1NDFMOS4wNTY3NiA1LjY0OTY1QzkuNDA4MzkgNi4wMzM3MiA5LjkyMTMzIDYuMjgyNjcgMTAuNTAwOCA2LjI4MjY3QzExLjA4MDIgNi4yODI2NyAxMS41OTMyIDYuMDMzNzIgMTEuOTQ0OCA1LjY0OTY1TDEyLjQ5OCA1LjA0NTQxTDEzLjA1MTEgNS42NDk2NUMxMy40MDI4IDYuMDMzNzIgMTMuOTE1NyA2LjI4MjY3IDE0LjQ5NTIgNi4yODI2N0MxNC41ODA1IDYuMjgyNjcgMTQuNjczNiA2LjI3NjM4IDE0Ljc3IDYuMjY0NjJDMTUuODY1MiA2LjExNTMgMTYuNDYzIDQuODAxMDMgMTUuODI0MyAzLjgwNDI4QzE1LjgyNDIgMy44MDQyMyAxNS44MjQyIDMuODA0MTcgMTUuODI0MiAzLjgwNDExTDE0LjA2NiAxLjA2MjdMMTQuMDY2IDEuMDYyN0wxNC4wNjUxIDEuMDYxMjNDMTQuMDQ5OSAxLjAzNzQgMTQuMDEyNCAxLjAxMTg0IDEzLjk2NTIgMS4wMTE4NEgzLjAzNTgxQzIuOTg4NjYgMS4wMTE4NCAyLjk1MTE3IDEuMDM3NCAyLjkzNTk3IDEuMDYxMjRMMi45MzUzNSAxLjA2MjJMMS4xODAxNSAzLjgwMzc4Wk0xNC4xNTE2IDguNzM3MDZWMTEuODY5VjEyLjYxOUgxMy40MDE2SDMuNTk5NDNIMi44NDk0M1YxMS44NjlWOC43Mzc1M0MyLjczOTIgOC43NDU3MyAyLjYyNzY4IDguNzQ5OTQgMi41MTUwNyA4Ljc0OTk0QzIuNDcyNzYgOC43NDk5NCAyLjQzMDc0IDguNzQ5MzEgMi4zODkgOC43NDgwOVYxMS44NjlWMTMuODAzNUMyLjM4OSAxNC40NDY5IDIuOTIyOSAxNC45ODggMy41OTk0MyAxNC45ODhIMTMuNDAxNkMxNC4wNzgxIDE0Ljk4OCAxNC42MTIgMTQuNDQ2OSAxNC42MTIgMTMuODAzNVYxMS44NjlWOC43NDgyN0MxNC41NzIyIDguNzQ5MzcgMTQuNTMyMiA4Ljc0OTk0IDE0LjQ5MjEgOC43NDk5NEMxNC4zNzc3IDguNzQ5OTQgMTQuMjY0MSA4Ljc0NTU5IDE0LjE1MTYgOC43MzcwNlpcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIGZzLTQgbXgtMlwiPlxyXG4gICAgICAgICAgICBBZGQgU2luZ2xlXHJcbiAgICAgICAgICBTdG9yZTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgXHJcbiAgPC9kaXY+XHJcbiJdfQ==
|