tango-app-ui-manage-stores 3.0.42-dev → 3.0.44-dev
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 +7 -6
- package/esm2022/lib/components/add-stores-form/add-stores-form.component.mjs +7 -6
- package/esm2022/lib/components/create-group/create-group.component.mjs +5 -5
- package/esm2022/lib/components/group-delete-popup/group-delete-popup.component.mjs +4 -4
- package/esm2022/lib/components/group-details/group-details.component.mjs +22 -4
- package/esm2022/lib/components/tango-manage-groups/tango-manage-groups.component.mjs +12 -4
- package/esm2022/lib/components/tango-manage-stores/tango-manage-stores.component.mjs +21 -16
- package/esm2022/lib/route-wrappers/edge-wrapper.module.mjs +5 -5
- package/esm2022/lib/services/excel.service.mjs +4 -4
- package/esm2022/lib/services/group.service.mjs +4 -4
- package/esm2022/lib/services/stores.service.mjs +4 -4
- package/esm2022/lib/tango-manage-stores-routing.module.mjs +5 -5
- package/esm2022/lib/tango-manage-stores.module.mjs +5 -5
- package/esm2022/lib/utils/filters/filters.component.mjs +4 -4
- package/fesm2022/{tango-app-ui-manage-stores-edge-wrapper.module-DM8Er_Bd.mjs → tango-app-ui-manage-stores-edge-wrapper.module-CiSUiLpi.mjs} +5 -5
- package/fesm2022/{tango-app-ui-manage-stores-edge-wrapper.module-DM8Er_Bd.mjs.map → tango-app-ui-manage-stores-edge-wrapper.module-CiSUiLpi.mjs.map} +1 -1
- package/fesm2022/tango-app-ui-manage-stores.mjs +92 -59
- package/fesm2022/tango-app-ui-manage-stores.mjs.map +1 -1
- package/lib/components/group-details/group-details.component.d.ts +1 -0
- package/lib/components/tango-manage-groups/tango-manage-groups.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -56,7 +56,8 @@ export class AddStoresFormComponent {
|
|
|
56
56
|
this.ts = ts;
|
|
57
57
|
this.router = router;
|
|
58
58
|
let data = JSON.parse(localStorage.getItem('header-filters') || '');
|
|
59
|
-
|
|
59
|
+
let user = JSON.parse(localStorage.getItem('user-info') || '');
|
|
60
|
+
this.$headerFilters = data ? data : user;
|
|
60
61
|
this.getAllTimezones();
|
|
61
62
|
this.createForm();
|
|
62
63
|
}
|
|
@@ -81,7 +82,7 @@ export class AddStoresFormComponent {
|
|
|
81
82
|
createForm() {
|
|
82
83
|
this.storeForm = this.fb.group({
|
|
83
84
|
storeName: ["", Validators.required],
|
|
84
|
-
clientId: [this.$headerFilters?.client, Validators.required],
|
|
85
|
+
clientId: [this.$headerFilters?.client ? this.$headerFilters?.client : this.$headerFilters?.clientId, Validators.required],
|
|
85
86
|
businessType: ["COCO", Validators.required],
|
|
86
87
|
storeType_type: ["High Street", Validators.required],
|
|
87
88
|
storeType_name: [""],
|
|
@@ -250,14 +251,14 @@ export class AddStoresFormComponent {
|
|
|
250
251
|
getAllTimezones() {
|
|
251
252
|
this.timezones = moment.tz.names();
|
|
252
253
|
}
|
|
253
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
254
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AddStoresFormComponent, selector: "lib-add-stores-form", viewQueries: [{ propertyName: "placesRef", first: true, predicate: ["ngxPlaces"], descendants: true }], ngImport: i0, template: "<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container>\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : 'NA'}}\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div> -->\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".kiwi{fill:#344054}.kiwi.active{fill:#009bf3}.menu-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:16px!important;font-weight:500!important;line-height:24px}.menu-state-bg .menu-item .menu-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:8px 16px}.menu-state-title-primary .menu-item .menu-link.active .menu-title{color:var(--Primary-700, #009BF3)!important}.sub-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:18px!important;font-style:normal;font-weight:500!important;line-height:28px}.text-muted-review{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.text-review-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px}.align-middle{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-weight:500!important;line-height:20px}td{padding:0!important}.invalid-feedback,small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.spocArea{overflow-y:scroll;max-height:60vh;padding:0;margin:0}::ng-deep .spocArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .spocArea::-webkit-scrollbar{width:10px!important}::ng-deep .spocArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}.sub-head{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:600!important;line-height:28px}.form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.btn-primary{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px}.btn-outline{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.btn-light-primary1{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i6.NgxGpAutocompleteDirective, selector: "[ngx-gp-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }] });
|
|
254
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: AddStoresFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.StoresService }, { token: i3.ToastService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
255
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: AddStoresFormComponent, selector: "lib-add-stores-form", viewQueries: [{ propertyName: "placesRef", first: true, predicate: ["ngxPlaces"], descendants: true }], ngImport: i0, template: "<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container>\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : 'NA'}}\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div> -->\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".kiwi{fill:#344054}.kiwi.active{fill:#009bf3}.menu-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:16px!important;font-weight:500!important;line-height:24px}.menu-state-bg .menu-item .menu-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:8px 16px}.menu-state-title-primary .menu-item .menu-link.active .menu-title{color:var(--Primary-700, #009BF3)!important}.sub-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:18px!important;font-style:normal;font-weight:500!important;line-height:28px}.text-muted-review{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.text-review-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px}.align-middle{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-weight:500!important;line-height:20px}td{padding:0!important}.invalid-feedback,small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.spocArea{overflow-y:scroll;max-height:60vh;padding:0;margin:0}::ng-deep .spocArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .spocArea::-webkit-scrollbar{width:10px!important}::ng-deep .spocArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}.sub-head{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:600!important;line-height:28px}.form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.btn-primary{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px}.btn-outline{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.btn-light-primary1{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i6.NgxGpAutocompleteDirective, selector: "[ngx-gp-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }] });
|
|
255
256
|
}
|
|
256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
257
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: AddStoresFormComponent, decorators: [{
|
|
257
258
|
type: Component,
|
|
258
259
|
args: [{ selector: "lib-add-stores-form", template: "<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container>\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : 'NA'}}\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div> -->\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".kiwi{fill:#344054}.kiwi.active{fill:#009bf3}.menu-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:16px!important;font-weight:500!important;line-height:24px}.menu-state-bg .menu-item .menu-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:8px 16px}.menu-state-title-primary .menu-item .menu-link.active .menu-title{color:var(--Primary-700, #009BF3)!important}.sub-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:18px!important;font-style:normal;font-weight:500!important;line-height:28px}.text-muted-review{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.text-review-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px}.align-middle{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-weight:500!important;line-height:20px}td{padding:0!important}.invalid-feedback,small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.spocArea{overflow-y:scroll;max-height:60vh;padding:0;margin:0}::ng-deep .spocArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .spocArea::-webkit-scrollbar{width:10px!important}::ng-deep .spocArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}.sub-head{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:600!important;line-height:28px}.form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.btn-primary{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px}.btn-outline{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.btn-light-primary1{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px}\n"] }]
|
|
259
260
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.StoresService }, { type: i3.ToastService }, { type: i4.Router }], propDecorators: { placesRef: [{
|
|
260
261
|
type: ViewChild,
|
|
261
262
|
args: ["ngxPlaces"]
|
|
262
263
|
}] } });
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXN0b3Jlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zdG9yZXMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1zdG9yZXMtZm9ybS9hZGQtc3RvcmVzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXN0b3Jlcy1mb3JtL2FkZC1zdG9yZXMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBZ0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUtsSCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBRzFDLE9BQVEsS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQUM3QyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFTdkIsTUFBTSxPQUFPLHNCQUFzQjtJQWtDdkI7SUFDQTtJQUNBO0lBQ0E7SUFwQ2MsU0FBUyxDQUE2QjtJQUU5RCxNQUFNLEdBQUcsWUFBWSxDQUFDO0lBQ3RCLFNBQVMsQ0FBWTtJQUNyQixPQUFPLENBQVM7SUFDaEIsU0FBUyxDQUFRO0lBQ2pCLGNBQWMsQ0FBTTtJQUNwQixLQUFLLEdBQUcsS0FBSyxDQUFBO0lBR04sbUJBQW1CLENBQUMsS0FBMkM7UUFDcEUsSUFBSSxLQUFLLENBQUMsUUFBUSxF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SCxDQUFDO2dCQUNGLEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO29CQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUEsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUEsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQzdGLENBQUM7YUFDSixDQUFDLENBQUM7U0FDRjthQUFNO1NBQ047SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxDQUFDO1FBQ04sQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxpREFBaUQ7UUFDckUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQyxDQUFDO3VHQWhRVSxzQkFBc0I7MkZBQXRCLHNCQUFzQixtS0MzQm5DLHlsbkRBcWlCTTs7MkZEMWdCTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCOzRKQUtQLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1BcnJheSwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU3RvcmVzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zdG9yZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBTdG9yZVJlc3BvbnNlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvc3RvcmUuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XHJcbmltcG9ydCB7IE5neEdwQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyLW1hZ2ljL25neC1ncC1hdXRvY29tcGxldGUvbGliL25neC1ncC1hdXRvY29tcGxldGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCAgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgdXRjIGZyb20gXCJkYXlqcy9wbHVnaW4vdXRjXCI7XHJcbmltcG9ydCB0aW1lem9uZSBmcm9tIFwiZGF5anMvcGx1Z2luL3RpbWV6b25lXCI7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xyXG5cclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWFkZC1zdG9yZXMtZm9ybVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWRkLXN0b3Jlcy1mb3JtLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9hZGQtc3RvcmVzLWZvcm0uY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFN0b3Jlc0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJuZ3hQbGFjZXNcIikgcGxhY2VzUmVmOiBOZ3hHcEF1dG9jb21wbGV0ZURpcmVjdGl2ZTtcclxuXHJcbiAgc2VsZWN0ID0gXCJzdG9yZV9pbmZvXCI7XHJcbiAgc3RvcmVGb3JtOiBGb3JtR3JvdXA7XHJcbiAgc3RvcmVJZDogc3RyaW5nO1xyXG4gIHRpbWV6b25lczogYW55W107XHJcbiAgJGhlYWRlckZpbHRlcnM6IGFueTtcclxuICBkYXlqcyA9IGRheWpzXHJcblxyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkcmVzc0NoYW5nZShwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0IHwgYW55KSB7XHJcbiAgICBpZiAocGxhY2UuZ2VvbWV0cnkpIHtcclxuICAgICAgbGV0IGNvdW50cnkgPSBcIlwiLCBjaXR5ID0gXCJcIiwgc3RhdGUgPSBcIlwiLCBwaW5jb2RlID0gXCJcIjtcclxuICAgICAgcGxhY2UuYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlcy5pbmNsdWRlcyhcImNvdW50cnlcIikpIHtcclxuICAgICAgICAgIGNvdW50cnkgPSBjb21wb25lbnQubG9uZ19uYW1lO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwibG9jYWxpdHlcIikpIHtcclxuICAgICAgICAgIGNpdHkgPSBjb21wb25lbnQubG9uZ19uYW1lO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xXCIpKSB7XHJcbiAgICAgICAgICBzdGF0ZSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJwb3N0YWxfY29kZVwiKSkge1xyXG4gICAgICAgICAgcGluY29kZSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnNldFZhbHVlKHBsYWNlLmZvcm1hdHRlZF9hZGRyZXNzKTtcclxuICAgICAgdGhpcy5zdG9yZUZvcm0uZ2V0KFwiY291bnRyeVwiKT8uc2V0VmFsdWUoY291bnRyeSk7XHJcbiAgICAgIHRoaXMuc3RvcmVGb3JtLmdldChcImNpdHlcIik/LnNldFZhbHVlKGNpdHkpO1xyXG4gICAgICB0aGlzLnN0b3JlRm9ybS5nZXQoXCJzdGF0ZVwiKT8uc2V0VmFsdWUoc3RhdGUpO1xyXG4gICAgICB0aGlzLnN0b3JlRm9ybS5nZXQoXCJwaW5jb2RlXCIpPy5zZXRWYWx1ZShwaW5jb2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHN0b3Jlc1NlcnZpY2U6IFN0b3Jlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRzOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7XHJcbiAgICBsZXQgZGF0YTphbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdoZWFkZXItZmlsdGVycycpIHx8ICcnKTtcclxuICAgIHRoaXMuJGhlYWRlckZpbHRlcnMgPSBkYXRhO1xyXG4gICAgdGhpcy5nZXRBbGxUaW1lem9uZXMoKTtcclxuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBzZXR0aW5ndmFsdWUobGFiZWw6IGFueSkge1xyXG4gICAgaWYgKGxhYmVsID09IFwic3RvcmVfaW5mb1wiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gXCJzdG9yZV9pbmZvXCI7XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwiY29uZmlnXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSBcImNvbmZpZ1wiO1xyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcInN0b3JlX2xvY1wiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gXCJzdG9yZV9sb2NcIjtcclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCJjb250YWN0XCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSBcImNvbnRhY3RcIjtcclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCJyZXZpZXdcIikge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IFwicmV2aWV3XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5zdG9yZUZvcm0gPSB0aGlzLmZiLmdyb3VwKFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RvcmVOYW1lOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2xpZW50SWQ6IFt0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnQsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGJ1c2luZXNzVHlwZTogW1wiQ09DT1wiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBzdG9yZVR5cGVfdHlwZTogW1wiSGlnaCBTdHJlZXRcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgc3RvcmVUeXBlX25hbWU6IFtcIlwiXSxcclxuICAgICAgICBzdG9yZUNvZGU6IFtcIlwiXSxcclxuICAgICAgICBhZGRyZXNzOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY291bnRyeTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHN0YXRlOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2l0eTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHBpbmNvZGU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICB0aW1lWm9uZTogW1wiQXNpYS9Lb2xrYXRhXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIG9wZW46IFtcIjEwOjAwXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNsb3NlOiBbXCIyMDowMFwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAvLyBjYW1lcmFzOiBbMCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgc3BvY0RldGFpbHM6IHRoaXMuZmIuYXJyYXkoW3RoaXMuY3JlYXRlU3BvY0RldGFpbCgpXSksXHJcbiAgICAgICAgc3RvcmVDb25uZWN0aW9uSWQ6IFtcIlwiXSxcclxuICAgICAgfSxcclxuICAgICAgeyB2YWxpZGF0b3JzOiB0aGlzLnRpbWVSYW5nZVZhbGlkYXRvciB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdGltZVJhbmdlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IG9wZW5UaW1lID0gY29udHJvbC5nZXQoXCJvcGVuXCIpPy52YWx1ZTtcclxuICAgIGNvbnN0IGNsb3NlVGltZSA9IGNvbnRyb2wuZ2V0KFwiY2xvc2VcIik/LnZhbHVlO1xyXG4gICAgaWYgKG9wZW5UaW1lICYmIGNsb3NlVGltZSAmJiBvcGVuVGltZSA+PSBjbG9zZVRpbWUpIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZFRpbWVSYW5nZTogdHJ1ZSB9O1xyXG4gICAgfSAgICBcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3BvY0RldGFpbCgpOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBuYW1lOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGVtYWlsOiBbXHJcbiAgICAgICAgXCJcIixcclxuICAgICAgICBbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcclxuICAgICAgICBdLFxyXG4gICAgICBdLFxyXG4gICAgICBjb250YWN0OiBbXHJcbiAgICAgICAgXCJcIixcclxuICAgICAgICBbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMpLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLFxyXG4gICAgICAgIF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGRlc2lnbmF0aW9uOiBbXCJcIl0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldHNwb2NEZXRhaWxzQ29udHJvbHMoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkuY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpOiBudW1iZXIpIHtcclxuICAgIHJldHVybiAodGhpcy5zdG9yZUZvcm0uZ2V0KFwic3BvY0RldGFpbHNcIikgYXMgRm9ybUFycmF5KS5hdChpKS52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlUHJvZmlsZSgpOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmVGb3JtLmdldChcInN0b3JlUHJvZmlsZVwiKSBhcyBGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBnb1RvU3RvcmVJbmZvKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3QgPSBcInN0b3JlX2luZm9cIjtcclxuICB9XHJcblxyXG4gIGdvVG9Db25maWd1cmF0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3QgPSBcImNvbmZpZ1wiO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0NvbnRhY3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdCA9IFwiY29udGFjdFwiO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1JldmlldygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gXCJyZXZpZXdcIjtcclxuICB9XHJcblxyXG4gIGFkZFNwb2NEZXRhaWwoKSB7XHJcbiAgICAodGhpcy5zdG9yZUZvcm0uZ2V0KFwic3BvY0RldGFpbHNcIikgYXMgRm9ybUFycmF5KS5wdXNoKFxyXG4gICAgICB0aGlzLmNyZWF0ZVNwb2NEZXRhaWwoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFkZEFsdFNwb2MoKSB7XHJcbiAgICAodGhpcy5zdG9yZUZvcm0uZ2V0KFwic3BvY0RldGFpbHNcIikgYXMgRm9ybUFycmF5KS5wdXNoKFxyXG4gICAgICB0aGlzLmNyZWF0ZVNwb2NEZXRhaWwoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbEFsdFNwb2MoKSB7XHJcbiAgICAodGhpcy5zdG9yZUZvcm0uZ2V0KFwic3BvY0RldGFpbHNcIikgYXMgRm9ybUFycmF5KS5yZW1vdmVBdCgxKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNwb2NEZXRhaWwoaW5kZXg6IG51bWJlcikge1xyXG4gICAgKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zdG9yZUZvcm0udmFsaWQpIHtcclxuICAgICAgbGV0IHN0b3JlOiBTdG9yZVJlc3BvbnNlID0ge1xyXG4gICAgICAgIHN0b3JlTmFtZTogdGhpcy5zdG9yZUZvcm0udmFsdWUuc3RvcmVOYW1lLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLnN0b3JlRm9ybS52YWx1ZS5jbGllbnRJZCxcclxuICAgICAgICBidXNpbmVzc1R5cGU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlLmJ1c2luZXNzVHlwZSxcclxuICAgICAgICBzdG9yZVR5cGU6IHtcclxuICAgICAgICAgIHR5cGU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlLnN0b3JlVHlwZV90eXBlLFxyXG4gICAgICAgICAgbmFtZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnN0b3JlVHlwZV9uYW1lLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3RvcmVQcm9maWxlOiB7XHJcbiAgICAgICAgICBzdG9yZUNvZGU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zdG9yZUNvZGUsXHJcbiAgICAgICAgICBhZGRyZXNzOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uYWRkcmVzcyxcclxuICAgICAgICAgIGNvdW50cnk6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5jb3VudHJ5LFxyXG4gICAgICAgICAgc3RhdGU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zdGF0ZSxcclxuICAgICAgICAgIGNpdHk6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5jaXR5LFxyXG4gICAgICAgICAgcGluY29kZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnBpbmNvZGUsXHJcbiAgICAgICAgICB0aW1lWm9uZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnRpbWVab25lLFxyXG4gICAgICAgICAgb3BlbjogdGhpcy5kYXlqcyhgMTk5MS0wMS0wMSAke3RoaXMuc3RvcmVGb3JtLnZhbHVlPy5vcGVufWAsJ1lZWVktTU0tREQgSEg6bW0nKS5mb3JtYXQoXCJISDptbTpzc1wiKSxcclxuICAgICAgICAgIGNsb3NlOiB0aGlzLmRheWpzKGAxOTkxLTAxLTAxICR7dGhpcy5zdG9yZUZvcm0udmFsdWU/LmNsb3NlfWAsJ1lZWVktTU0tREQgSEg6bW0nKS5mb3JtYXQoXCJISDptbTpzc1wiKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVkZ2U6IHtcclxuICAgICAgICAvLyAgIGNhbURldGFpbHM6IHtcclxuICAgICAgICAvLyAgICAgY2FtZXJhczogdGhpcy5zdG9yZUZvcm0udmFsdWU/LmNhbWVyYXMsXHJcbiAgICAgICAgLy8gICB9LFxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgc3BvY0RldGFpbHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzWzBdLm5hbWUsXHJcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbMF0uZW1haWwsXHJcbiAgICAgICAgICAgIGNvbnRhY3Q6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1swXS5jb250YWN0LFxyXG4gICAgICAgICAgICBkZXNpZ25hdGlvbjogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzWzBdLmRlc2lnbmF0aW9uLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIHN0b3JlQ29ubmVjdGlvbklkOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3RvcmVDb25uZWN0aW9uSWQsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh0aGlzLnN0b3JlRm9ybS52YWx1ZS5zcG9jRGV0YWlscy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yKGxldCBpPTE7aTx0aGlzLnN0b3JlRm9ybS52YWx1ZS5zcG9jRGV0YWlscy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICBzdG9yZS5zcG9jRGV0YWlscy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzW2ldLm5hbWUsXHJcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbaV0uZW1haWwsXHJcbiAgICAgICAgICAgIGNvbnRhY3Q6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1tpXS5jb250YWN0LFxyXG4gICAgICAgICAgICBkZXNpZ25hdGlvbjogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzW2ldLmRlc2lnbmF0aW9uLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN0b3Jlc1NlcnZpY2UuY3JlYXRlU3RvcmUoc3RvcmUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDAgJiYgcmVzLnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXCJTdG9yZSBDcmVhdGVkIFN1Y2Nlc3NmdWxseSFcIik7XHJcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdG9yZSAmJiByZXMuZGF0YS5zdG9yZS5zdG9yZUlkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdG9yZXNTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuY3JlYXRlSW5mcmFUaWNrZXQoe1xyXG4gICAgICAgICAgICAgICAgICBzdG9yZUlkOiByZXMuZGF0YS5zdG9yZS5zdG9yZUlkLFxyXG4gICAgICAgICAgICAgICAgICBEYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLFxyXG4gICAgICAgICAgICAgICAgICBpc3N1ZVR5cGU6IFwiaW5zdGFsbGF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge30sXHJcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7fSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzXCJdKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBjcmVhdGUgc3RvcmUhXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIH0sXHJcbiAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnJvcj8uZXJyb3I/LmVycm9yID9lcnJvcj8uZXJyb3I/LmVycm9yOiBcIlVuYWJsZSB0byBjcmVhdGUgU3RvcmUhXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9BZGRTdG9yZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzL2FkZGl0aW9uLW1ldGhvZFwiXSk7XHJcbiAgfVxyXG5cclxuICBvbWl0X3NwZWNpYWxfY2hhcihldmVudDogYW55KSB7XHJcbiAgICB2YXIgaztcclxuICAgIGsgPSBldmVudC5jaGFyQ29kZTsgLy8gICAgICAgICBrID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxyXG4gICAgcmV0dXJuIGsgPT0gOCB8fCBrID09IDMyIHx8IChrID49IDQ4ICYmIGsgPD0gNTcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsVGltZXpvbmVzKCkge1xyXG4gICAgdGhpcy50aW1lem9uZXM9bW9tZW50LnR6Lm5hbWVzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3cgbXQtMyBtYi02XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCIgaWQ9XCJsZWZ0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtZmx1c2ggaC0xMDAgbWItMFwiPlxyXG4gICAgICAgICAgICA8IS0tYmVnaW46OkFzaWRlIGNvbnRlbnQtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudSBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1zdGF0ZS1iZyBtZW51LXN0YXRlLXRpdGxlLXByaW1hcnkgbWVudS1zdGF0ZS1pY29uLXByaW1hcnkgbWVudS1zdGF0ZS1idWxsZXQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6TWVudSBpdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SW5ib3gtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmtcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3QgPT09ICdzdG9yZV9pbmZvJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXR0aW5ndmFsdWUoJ3N0b3JlX2luZm8nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWljb25cIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy4wODk5NSA2Ljg4MzY5TDMuMDI0MDEgNi45ODY2OUMyLjMwMzU4IDguMjU1NTcgMy4wNjEwMSA5Ljg3OTQ1IDQuNDY0NjQgMTAuMDY2MkM0LjU4NjI3IDEwLjA4MTEgNC43MDExMiAxMC4wODkyIDQuODE0NSAxMC4wODkyQzUuNTUyNTUgMTAuMDg5MiA2LjIwNTIzIDkuNzcyMjkgNi42NTk1MyA5LjI3OTE3TDcuMjEyODYgOC42Nzg1NEw3Ljc2NDMyIDkuMjgwODlDOC4yMTM2NyA5Ljc3MTcxIDguODY1MiAxMC4wODkyIDkuNjA3NzYgMTAuMDg5MkMxMC4zNDcxIDEwLjA4OTIgMTEuMDAyMiA5Ljc3MTM3IDExLjQ1MTIgOS4yODA4OUwxMi4wMDQ0IDguNjc2NjVMMTIuNTU3NiA5LjI4MDg5QzEzLjAwNjYgOS43NzEzNyAxMy42NjE3IDEwLjA4OTIgMTQuNDAxIDEwLjA4OTJDMTUuMTQwNCAxMC4wODkyIDE1Ljc5NTQgOS43NzEzNyAxNi4yNDQ1IDkuMjgwODlMMTYuNzk3NyA4LjY3NjY1TDE3LjM1MDggOS4yODA4OUMxNy43OTk5IDkuNzcxMzcgMTguNDU0OSAxMC4wODkyIDE5LjE5NDMgMTAuMDg5MkMxOS4zMDQxIDEwLjA4OTIgMTkuNDIyMyAxMC4wODExIDE5LjU0MzMgMTAuMDY2M0MyMC45NzcyIDkuODcxNjggMjEuNzM1NSA4LjE2Mzg3IDIwLjkxNTUgNi44ODQxOUMyMC45MTU0IDYuODg0MTMgMjAuOTE1NCA2Ljg4NDA3IDIwLjkxNTQgNi44ODQwMkwxOC44MDU2IDMuNTk0MjlMMTguODA1NiAzLjU5NDI5TDE4LjgwNDYgMy41OTI4MkMxOC43NTgyIDMuNTIwMDIgMTguNjY0OSAzLjQ2NDIzIDE4LjU1ODQgMy40NjQyM0g1LjQ0MzA3QzUuMzM2NSAzLjQ2NDIzIDUuMjQzMjYgMy41MjAwMiA1LjE5NjgxIDMuNTkyODJMNS4xOTYxOSAzLjU5Mzc5TDMuMDg5OTUgNi44ODM2OVpNNC44MTgxOCAxMi43NDk5QzQuNzE2NDQgMTIuNzQ5OSA0LjYxNiAxMi43NDY4IDQuNTE2OSAxMi43NDFWMTYuNjQyOFYxOC45NjQyQzQuNTE2OSAxOS44MjExIDUuMjI2NjMgMjAuNTM1NyA2LjExOTQyIDIwLjUzNTdIMTcuODgyQzE4Ljc3NDggMjAuNTM1NyAxOS40ODQ1IDE5LjgyMTEgMTkuNDg0NSAxOC45NjQyVjE2LjY0MjhWMTIuNzQxNUMxOS4zODc0IDEyLjc0NyAxOS4yODkzIDEyLjc0OTkgMTkuMTkwNiAxMi43NDk5QzE5LjAwMjIgMTIuNzQ5OSAxOC44MTU3IDEyLjczOTggMTguNjMyIDEyLjcyMDJWMTYuNjQyOFYxNy4zOTI4SDE3Ljg4Mkg2LjExOTQySDUuMzY5NDJWMTYuNjQyOFYxMi43MjFDNS4xODg2NiAxMi43NCA1LjAwNDcyIDEyLjc0OTkgNC44MTgxOCAxMi43NDk5WlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXRpdGxlIGZ3LWJvbGQgXCI+U3RvcmUgSW5mbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpJbmJveC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkluYm94LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ID09PSAnY29uZmlnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXR0aW5ndmFsdWUoJ2NvbmZpZycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzEwMTdfMjIyNzApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgMTVDMTMuNjU2OSAxNSAxNSAxMy42NTY5IDE1IDEyQzE1IDEwLjM0MzEgMTMuNjU2OSA5IDEyIDlDMTAuMzQzMSA5IDkgMTAuMzQzMSA5IDEyQzkgMTMuNjU2OSAxMC4zNDMxIDE1IDEyIDE1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOS40IDE1QzE5LjI2NjkgMTUuMzAxNiAxOS4yMjcyIDE1LjYzNjIgMTkuMjg2IDE1Ljk2MDZDMTkuMzQ0OCAxNi4yODUgMTkuNDk5NSAxNi41ODQzIDE5LjczIDE2LjgyTDE5Ljc5IDE2Ljg4QzE5Ljk3NiAxNy4wNjU3IDIwLjEyMzUgMTcuMjg2MyAyMC4yMjQxIDE3LjUyOTFDMjAuMzI0OCAxNy43NzE5IDIwLjM3NjYgMTguMDMyMiAyMC4zNzY2IDE4LjI5NUMyMC4zNzY2IDE4LjU1NzggMjAuMzI0OCAxOC44MTgxIDIwLjIyNDEgMTkuMDYwOUMyMC4xMjM1IDE5LjMwMzcgMTkuOTc2IDE5LjUyNDMgMTkuNzkgMTkuNzFDMTkuNjA0MyAxOS44OTYgMTkuMzgzNyAyMC4wNDM1IDE5LjE0MDkgMjAuMTQ0MUMxOC44OTgxIDIwLjI0NDggMTguNjM3OCAyMC4yOTY2IDE4LjM3NSAyMC4yOTY2QzE4LjExMjIgMjAuMjk2NiAxNy44NTE5IDIwLjI0NDggMTcuNjA5MSAyMC4xNDQxQzE3LjM2NjMgMjAuMDQzNSAxNy4xNDU3IDE5Ljg5NiAxNi45NiAxOS43MUwxNi45IDE5LjY1QzE2LjY2NDMgMTkuNDE5NSAxNi4zNjUgMTkuMjY0OCAxNi4wNDA2IDE5LjIwNkMxNS43MTYyIDE5LjE0NzIgMTUuMzgxNiAxOS4xODY5IDE1LjA4IDE5LjMyQzE0Ljc4NDIgMTkuNDQ2OCAxNC41MzIgMTkuNjU3MiAxNC4zNTQzIDE5LjkyNTVDMTQuMTc2NiAyMC4xOTM4IDE0LjA4MTMgMjAuNTA4MiAxNC4wOCAyMC44M1YyMUMxNC4wOCAyMS41MzA0IDEzLjg2OTMgMjIuMDM5MSAxMy40OTQyIDIyLjQxNDJDMTMuMTE5MSAyMi43ODkzIDEyLjYxMDQgMjMgMTIuMDggMjNDMTEuNTQ5NiAyMyAxMS4wNDA5IDIyLjc4OTMgMTAuNjY1OCAyMi40MTQyQzEwLjI5MDcgMjIuMDM5MSAxMC4wOCAyMS41MzA0IDEwLjA4IDIxVjIwLjkxQzEwLjA3MjMgMjAuNTc5IDkuOTY1MTIgMjAuMjU4IDkuNzcyNTEgMTkuOTg4N0M5LjU3OTkgMTkuNzE5NCA5LjMxMDc0IDE5LjUxNDMgOSAxOS40QzguNjk4MzggMTkuMjY2OSA4LjM2MzgxIDE5LjIyNzIgOC4wMzk0MSAxOS4yODZDNy43MTUwMiAxOS4zNDQ4IDcuNDE1NjggMTkuNDk5NSA3LjE4IDE5LjczTDcuMTIgMTkuNzlDNi45MzQyNSAxOS45NzYgNi43MTM2OCAyMC4xMjM1IDYuNDcwODggMjAuMjI0MUM2LjIyODA4IDIwLjMyNDggNS45Njc4MyAyMC4zNzY2IDUuNzA1IDIwLjM3NjZDNS40NDIxNyAyMC4zNzY2IDUuMTgxOTIgMjAuMzI0OCA0LjkzOTEyIDIwLjIyNDFDNC42OTYzMiAyMC4xMjM1IDQuNDc1NzUgMTkuOTc2IDQuMjkgMTkuNzlDNC4xMDQwNSAxOS42MDQzIDMuOTU2NTMgMTkuMzgzNyAzLjg1NTg4IDE5LjE0MDlDMy43NTUyMyAxOC44OTgxIDMuNzAzNDMgMTguNjM3OCAzLjcwMzQzIDE4LjM3NUMzLjcwMzQzIDE4LjExMjIgMy43NTUyMyAxNy44NTE5IDMuODU1ODggMTcuNjA5MUMzLjk1NjUzIDE3LjM2NjMgNC4xMDQwNSAxNy4xNDU3IDQuMjkgMTYuOTZMNC4zNSAxNi45QzQuNTgwNTQgMTYuNjY0MyA0LjczNTE5IDE2LjM2NSA0Ljc5NCAxNi4wNDA2QzQuODUyODIgMTUuNzE2MiA0LjgxMzEyIDE1LjM4MTYgNC42OCAxNS4wOEM0LjU1MzI0IDE0Ljc4NDIgNC4zNDI3NiAxNC41MzIgNC4wNzQ0NyAxNC4zNTQzQzMuODA2MTggMTQuMTc2NiAzLjQ5MTc5IDE0LjA4MTMgMy4xNyAxNC4wOEgzQzIuNDY5NTcgMTQuMDggMS45NjA4NiAxMy44NjkzIDEuNTg1NzkgMTMuNDk0MkMxLjIxMDcxIDEzLjExOTEgMSAxMi42MTA0IDEgMTIuMDhDMSAxMS41NDk2IDEuMjEwNzEgMTEuMDQwOSAxLjU4NTc5IDEwLjY2NThDMS45NjA4NiAxMC4yOTA3IDIuNDY5NTcgMTAuMDggMyAxMC4wOEgzLjA5QzMuNDIwOTkgMTAuMDcyMyAzLjc0MiA5Ljk2NTEyIDQuMDExMyA5Ljc3MjUxQzQuMjgwNTkgOS41Nzk5IDQuNDg1NzIgOS4zMTA3NCA0LjYgOUM0LjczMzEyIDguNjk4MzggNC43NzI4MiA4LjM2MzgxIDQuNzE0IDguMDM5NDFDNC42NTUxOSA3LjcxNTAyIDQuNTAwNTQgNy40MTU2OCA0LjI3IDcuMThMNC4yMSA3LjEyQzQuMDI0MDUgNi45MzQyNSAzLjg3NjUzIDYuNzEzNjggMy43NzU4OCA2LjQ3MDg4QzMuNjc1MjMgNi4yMjgwOCAzLjYyMzQzIDUuOTY3ODMgMy42MjM0MyA1LjcwNUMzLjYyMzQzIDUuNDQyMTcgMy42NzUyMyA1LjE4MTkyIDMuNzc1ODggNC45MzkxMkMzLjg3NjUzIDQuNjk2MzIgNC4wMjQwNSA0LjQ3NTc1IDQuMjEgNC4yOUM0LjM5NTc1IDQuMTA0MDUgNC42MTYzMiAzLjk1NjUzIDQuODU5MTIgMy44NTU4OEM1LjEwMTkyIDMuNzU1MjMgNS4zNjIxNyAzLjcwMzQzIDUuNjI1IDMuNzAzNDNDNS44ODc4MyAzLjcwMzQzIDYuMTQ4MDggMy43NTUyMyA2LjM5MDg4IDMuODU1ODhDNi42MzM2OCAzLjk1NjUzIDYuODU0MjUgNC4xMDQwNSA3LjA0IDQuMjlMNy4xIDQuMzVDNy4zMzU2OCA0LjU4MDU0IDcuNjM1MDIgNC43MzUxOSA3Ljk1OTQxIDQuNzk0QzguMjgzODEgNC44NTI4MiA4LjYxODM4IDQuODEzMTIgOC45MiA0LjY4SDlDOS4yOTU3NyA0LjU1MzI0IDkuNTQ4MDIgNC4zNDI3NiA5LjcyNTY5IDQuMDc0NDdDOS45MDMzNyAzLjgwNjE4IDkuOTk4NzIgMy40OTE3OSAxMCAzLjE3VjNDMTAgMi40Njk1NyAxMC4yMTA3IDEuOTYwODYgMTAuNTg1OCAxLjU4NTc5QzEwLjk2MDkgMS4yMTA3MSAxMS40Njk2IDEgMTIgMUMxMi41MzA0IDEgMTMuMDM5MSAxLjIxMDcxIDEzLjQxNDIgMS41ODU3OUMxMy43ODkzIDEuOTYwODYgMTQgMi40Njk1NyAxNCAzVjMuMDlDMTQuMDAxMyAzLjQxMTc5IDE0LjA5NjYgMy43MjYxOCAxNC4yNzQzIDMuOTk0NDdDMTQuNDUyIDQuMjYyNzYgMTQuNzA0MiA0LjQ3MzI0IDE1IDQuNkMxNS4zMDE2IDQuNzMzMTIgMTUuNjM2MiA0Ljc3MjgyIDE1Ljk2MDYgNC43MTRDMTYuMjg1IDQuNjU1MTkgMTYuNTg0MyA0LjUwMDU0IDE2LjgyIDQuMjdMMTYuODggNC4yMUMxNy4wNjU3IDQuMDI0MDUgMTcuMjg2MyAzLjg3NjUzIDE3LjUyOTEgMy43NzU4OEMxNy43NzE5IDMuNjc1MjMgMTguMDMyMiAzLjYyMzQzIDE4LjI5NSAzLjYyMzQzQzE4LjU1NzggMy42MjM0MyAxOC44MTgxIDMuNjc1MjMgMTkuMDYwOSAzLjc3NTg4QzE5LjMwMzcgMy44NzY1MyAxOS41MjQzIDQuMDI0MDUgMTkuNzEgNC4yMUMxOS44OTYgNC4zOTU3NSAyMC4wNDM1IDQuNjE2MzIgMjAuMTQ0MSA0Ljg1OTEyQzIwLjI0NDggNS4xMDE5MiAyMC4yOTY2IDUuMzYyMTcgMjAuMjk2NiA1LjYyNUMyMC4yOTY2IDUuODg3ODMgMjAuMjQ0OCA2LjE0ODA4IDIwLjE0NDEgNi4zOTA4OEMyMC4wNDM1IDYuNjMzNjggMTkuODk2IDYuODU0MjUgMTkuNzEgNy4wNEwxOS42NSA3LjFDMTkuNDE5NSA3LjMzNTY4IDE5LjI2NDggNy42MzUwMiAxOS4yMDYgNy45NTk0MUMxOS4xNDcyIDguMjgzODEgMTkuMTg2OSA4LjYxODM4IDE5LjMyIDguOTJWOUMxOS40NDY4IDkuMjk1NzcgMTkuNjU3MiA5LjU0ODAyIDE5LjkyNTUgOS43MjU2OUMyMC4xOTM4IDkuOTAzMzcgMjAuNTA4MiA5Ljk5ODcyIDIwLjgzIDEwSDIxQzIxLjUzMDQgMTAgMjIuMDM5MSAxMC4yMTA3IDIyLjQxNDIgMTAuNTg1OEMyMi43ODkzIDEwLjk2MDkgMjMgMTEuNDY5NiAyMyAxMkMyMyAxMi41MzA0IDIyLjc4OTMgMTMuMDM5MSAyMi40MTQyIDEzLjQxNDJDMjIuMDM5MSAxMy43ODkzIDIxLjUzMDQgMTQgMjEgMTRIMjAuOTFDMjAuNTg4MiAxNC4wMDEzIDIwLjI3MzggMTQuMDk2NiAyMC4wMDU1IDE0LjI3NDNDMTkuNzM3MiAxNC40NTIgMTkuNTI2OCAxNC43MDQyIDE5LjQgMTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTAxN18yMjI3MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS10aXRsZSBmdy1ib2xkIFwiPlN0b3JlIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6SW5ib3gtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6TWVudSBpdGVtLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46Ok1lbnUgaXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkRyYWZ0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ID09PSAnY29udGFjdCcgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0dGluZ3ZhbHVlKCdjb250YWN0JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3IDIxVjE5QzE3IDE3LjkzOTEgMTYuNTc4NiAxNi45MjE3IDE1LjgyODQgMTYuMTcxNkMxNS4wNzgzIDE1LjQyMTQgMTQuMDYwOSAxNSAxMyAxNUg1QzMuOTM5MTMgMTUgMi45MjE3MiAxNS40MjE0IDIuMTcxNTcgMTYuMTcxNkMxLjQyMTQzIDE2LjkyMTcgMSAxNy45MzkxIDEgMTlWMjFNMjMgMjFWMTlDMjIuOTk5MyAxOC4xMTM3IDIyLjcwNDQgMTcuMjUyOCAyMi4xNjE0IDE2LjU1MjNDMjEuNjE4NCAxNS44NTE5IDIwLjg1ODEgMTUuMzUxNiAyMCAxNS4xM00xNiAzLjEzQzE2Ljg2MDQgMy4zNTAzIDE3LjYyMyAzLjg1MDcgMTguMTY3NiA0LjU1MjMxQzE4LjcxMjIgNS4yNTM5MiAxOS4wMDc4IDYuMTE2ODMgMTkuMDA3OCA3LjAwNUMxOS4wMDc4IDcuODkzMTcgMTguNzEyMiA4Ljc1NjA4IDE4LjE2NzYgOS40NTc2OUMxNy42MjMgMTAuMTU5MyAxNi44NjA0IDEwLjY1OTcgMTYgMTAuODhNMTMgN0MxMyA5LjIwOTE0IDExLjIwOTEgMTEgOSAxMUM2Ljc5MDg2IDExIDUgOS4yMDkxNCA1IDdDNSA0Ljc5MDg2IDYuNzkwODYgMyA5IDNDMTEuMjA5MSAzIDEzIDQuNzkwODYgMTMgN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS10aXRsZSBmdy1ib2xkIFwiPkNvbnRhY3QgRGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpEcmFmdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6Ok1lbnUgaXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6TWVudSBpdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6VHJhc2gtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmtcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3QgPT09ICdyZXZpZXcnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0dGluZ3ZhbHVlKCdyZXZpZXcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWljb25cIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDFDNS4yMDQzNSAxIDQuNDQxMjkgMS4zMTYwNyAzLjg3ODY4IDEuODc4NjhDMy4zMTYwNyAyLjQ0MTI5IDMgMy4yMDQzNSAzIDRWMjBDMyAyMC43OTU3IDMuMzE2MDcgMjEuNTU4NyAzLjg3ODY4IDIyLjEyMTNDNC40NDEyOSAyMi42ODM5IDUuMjA0MzUgMjMgNiAyM0gxMkgxOEMxOC43OTU3IDIzIDE5LjU1ODcgMjIuNjgzOSAyMC4xMjEzIDIyLjEyMTNDMjAuNjgzOSAyMS41NTg3IDIxIDIwLjc5NTcgMjEgMjBWMTYuNDIwOEwxOSAxOC40MjA4VjIwQzE5IDIwLjI2NTIgMTguODk0NiAyMC41MTk2IDE4LjcwNzEgMjAuNzA3MUMxOC41MTk2IDIwLjg5NDYgMTguMjY1MiAyMSAxOCAyMUgxNi40MjA4TDE1LjMyODYgMjIuMDkyMkwxMiAyM0wxMi41NDU1IDIxSDZDNS43MzQ3OCAyMSA1LjQ4MDQzIDIwLjg5NDYgNS4yOTI4OSAyMC43MDcxQzUuMTA1MzYgMjAuNTE5NiA1IDIwLjI2NTIgNSAyMFY0QzUgMy43MzQ3OCA1LjEwNTM2IDMuNDgwNDMgNS4yOTI4OSAzLjI5Mjg5QzUuNDgwNDMgMy4xMDUzNiA1LjczNDc4IDMgNiAzSDEyVjlDMTIgOS41NTIyOCAxMi40NDc3IDEwIDEzIDEwSDE5VjEzLjU3OTJMMjEgMTEuNTc5MlY5QzIxIDguNzM0NzggMjAuODk0NiA4LjQ4MDQzIDIwLjcwNzEgOC4yOTI4OUwxMy43MDcxIDEuMjkyODlDMTMuNTE5NiAxLjEwNTM2IDEzLjI2NTIgMSAxMyAxSDZaTTE3LjU4NTggOEwxNCA0LjQxNDIxVjhIMTcuNTg1OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIwLjA3NzkgMTEuNTAxNEMyMC4yMzY5IDExLjM0MjQgMjAuNDI1NiAxMS4yMTYzIDIwLjYzMzMgMTEuMTMwM0MyMC44NDA5IDExLjA0NDMgMjEuMDYzNSAxMSAyMS4yODgzIDExQzIxLjUxMzEgMTEgMjEuNzM1NyAxMS4wNDQzIDIxLjk0MzQgMTEuMTMwM0MyMi4xNTEgMTEuMjE2MyAyMi4zMzk3IDExLjM0MjQgMjIuNDk4NyAxMS41MDE0QzIyLjY1NzYgMTEuNjYwMyAyMi43ODM3IDExLjg0OSAyMi44Njk4IDEyLjA1NjdDMjIuOTU1OCAxMi4yNjQ0IDIzLjAwMDEgMTIuNDg3IDIzLjAwMDEgMTIuNzExN0MyMy4wMDAxIDEyLjkzNjUgMjIuOTU1OCAxMy4xNTkxIDIyLjg2OTggMTMuMzY2OEMyMi43ODM3IDEzLjU3NDUgMjIuNjU3NiAxMy43NjMyIDIyLjQ5ODcgMTMuOTIyMUwxNS4zMjg2IDIyLjA5MjNMMTIgMjMuMDAwMUwxMi45MDc4IDE5LjY3MTVMMjAuMDc3OSAxMS41MDE0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGUgZnctYm9sZCBcIj5SZXZpZXcgJiBTdWJtaXQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6VHJhc2gtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpNZW51IGl0ZW0tLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tZW5kOjpNZW51LS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBjb2wtbGctOSBjb2wteGwtOSBjb2wteHhsLTlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLWJvdHRvbS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8aDFcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBhZ2UtaGVhZGluZyBkLWZsZXggdGV4dC1kYXJrIGZ3LWJvbGQgZnMtMiBmbGV4LWNvbHVtbiAganVzdGlmeS1jb250ZW50LWNlbnRlciBteS0wIHN1Yi1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gICpuZ0lmPVwic2VsZWN0ID09PSAnc3RvcmVfaW5mbydcIj5FbnRlciBZb3VyIFN0b3JlIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3QgPT09ICdjb25maWcnXCI+RW50ZXIgWW91ciBTdG9yZSBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ID09PSAnY29udGFjdCdcIj5FbnRlciBQcmltYXJ5IFNQT0MgZGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdCA9PT0gJ3JldmlldydcIj5SZXZpZXcgJiBzdWJtaXQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ2NvbnRhY3QnXCIgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRBbHRTcG9jKClcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeTEgYnRuLXNtXCI+PHN2ZyBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTggMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNyAzLjVDMi43IDIuNTcxNzQgMy4wNzkyOCAxLjY4MTUgMy43NTQ0MiAxLjAyNTEzQzQuNDI5NTUgMC4zNjg3NDkgNS4zNDUyMiAwIDYuMyAwQzcuMjU0NzggMCA4LjE3MDQ1IDAuMzY4NzQ5IDguODQ1NTggMS4wMjUxM0M5LjUyMDcyIDEuNjgxNSA5LjkgMi41NzE3NCA5LjkgMy41QzkuOSA0LjQyODI2IDkuNTIwNzIgNS4zMTg1IDguODQ1NTggNS45NzQ4N0M4LjE3MDQ1IDYuNjMxMjUgNy4yNTQ3OCA3IDYuMyA3QzUuMzQ1MjIgNyA0LjQyOTU1IDYuNjMxMjUgMy43NTQ0MiA1Ljk3NDg3QzMuMDc5MjggNS4zMTg1IDIuNyA0LjQyODI2IDIuNyAzLjVaTTAgMTMuMTg3OUMwIDEwLjQ5NDUgMi4yNDQzNyA4LjMxMjUgNS4wMTQ2OSA4LjMxMjVINy41ODUzMUMxMC4zNTU2IDguMzEyNSAxMi42IDEwLjQ5NDUgMTIuNiAxMy4xODc5QzEyLjYgMTMuNjM2MyAxMi4yMjU5IDE0IDExLjc2NDcgMTRIMC44MzUzMTJDMC4zNzQwNjMgMTQgMCAxMy42MzYzIDAgMTMuMTg3OVpNMTQuMTc1IDguNTMxMjVWNi43ODEyNUgxMi4zNzVDMTIuMDAwOSA2Ljc4MTI1IDExLjcgNi40ODg2NyAxMS43IDYuMTI1QzExLjcgNS43NjEzMyAxMi4wMDA5IDUuNDY4NzUgMTIuMzc1IDUuNDY4NzVIMTQuMTc1VjMuNzE4NzVDMTQuMTc1IDMuMzU1MDggMTQuNDc1OSAzLjA2MjUgMTQuODUgMy4wNjI1QzE1LjIyNDEgMy4wNjI1IDE1LjUyNSAzLjM1NTA4IDE1LjUyNSAzLjcxODc1VjUuNDY4NzVIMTcuMzI1QzE3LjY5OTEgNS40Njg3NSAxOCA1Ljc2MTMzIDE4IDYuMTI1QzE4IDYuNDg4NjcgMTcuNjk5MSA2Ljc4MTI1IDE3LjMyNSA2Ljc4MTI1SDE1LjUyNVY4LjUzMTI1QzE1LjUyNSA4Ljg5NDkyIDE1LjIyNDEgOS4xODc1IDE0Ljg1IDkuMTg3NUMxNC40NzU5IDkuMTg3NSAxNC4xNzUgOC44OTQ5MiAxNC4xNzUgOC41MzEyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+QWRkIEFsdGVybmF0ZSBTUE9DPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMVwiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzdG9yZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIEluZm8gU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ3N0b3JlX2luZm8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdG9yZSBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIE5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlQ29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlIENvZGUgLyBSZWYgQ29kZSAob3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVDb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJidXNpbmVzc1R5cGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5CdXNpbmVzcyBUeXBlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBpZD1cImJ1c2luZXNzVHlwZVwiIGZvcm1Db250cm9sTmFtZT1cImJ1c2luZXNzVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ09DT1wiPkNPQ088L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkNPRk9cIj5DT0ZPPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJGT0ZPXCI+Rk9GTzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRk9DT1wiPkZPQ088L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlVHlwZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlIFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGlkPVwic3RvcmVUeXBlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVUeXBlX3R5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkhpZ2ggU3RyZWV0XCI+SGlnaCBTdHJlZXQ8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIk1hbGwgU3RvcmVcIj5NYWxsIFN0b3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJLaW9za1wiPktpb3NrPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX3R5cGUnKT8udmFsdWUgPT09ICdNYWxsIFN0b3JlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtYWxsTmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkVudGVyIE1hbGwgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIm1hbGxOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVUeXBlX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV9uYW1lJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX25hbWUnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWxsIE5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIExpbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzXCIgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc1wiICNwbGFjZXNSZWY9XCJuZ3gtcGxhY2VzXCIgbmd4LWdwLWF1dG9jb21wbGV0ZSAob25BZGRyZXNzQ2hhbmdlKT1cImhhbmRsZUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q291bnRyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvdW50cnlcIiBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnY291bnRyeScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnY291bnRyeScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnc3RhdGUnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnc3RhdGUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNpdHkgLyBUb3duPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY2l0eVwiIGZvcm1Db250cm9sTmFtZT1cImNpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnY2l0eScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2NpdHknKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENpdHkgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGluY29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBpbiAvIFppcCBDb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGluY29kZVwiIGZvcm1Db250cm9sTmFtZT1cInBpbmNvZGVcIiBtYXhsZW5ndGg9XCI2XCIgbWlubGVuZ3RoPVwiNlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgncGluY29kZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgncGluY29kZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaW5jb2RlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRTdG9yZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0NvbmZpZ3VyYXRpb24oKVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIEluZm8gRW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIENvbmZpZ3VyYXRpb24gU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ2NvbmZpZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGltZVpvbmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5UaW1lIFpvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInRpbWVab25lXCIgZm9ybUNvbnRyb2xOYW1lPVwidGltZVpvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCd0aW1lWm9uZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnRvdWNoZWR9XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBpZD1cInRpbWVab25lXCIgZm9ybUNvbnRyb2xOYW1lPVwidGltZVpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHRpbWV6b25lIG9mIHRpbWV6b25lc1wiIFt2YWx1ZV09XCJ0aW1lem9uZVwiPnt7IHRpbWV6b25lIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZSBab25lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibm9PZkNhbWVyYXNcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5ObyBvZiBDYW1lcmFzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwibm9PZkNhbWVyYXNcIiBmb3JtQ29udHJvbE5hbWU9XCJjYW1lcmFzXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2NhbWVyYXMnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIG9mIENhbWVyYXMgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlT3BlblRpbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdG9yZSBPcGVuIFRpbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGltZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdG9yZU9wZW5UaW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwib3BlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ29wZW4nKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnb3BlbicpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ29wZW4nKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgT3BlbiBUaW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlQ2xvc2VUaW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgQ2xvc2UgVGltZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0aW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0b3JlQ2xvc2VUaW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnRvdWNoZWQgfHwgc3RvcmVGb3JtLmhhc0Vycm9yKCdpbnZhbGlkVGltZVJhbmdlJyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBDbG9zZSBUaW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXktMlwiICpuZ0lmPVwic3RvcmVGb3JtLmhhc0Vycm9yKCdpbnZhbGlkVGltZVJhbmdlJykgJiYgKHN0b3JlRm9ybS5nZXQoJ29wZW4nKT8udG91Y2hlZCB8fCBzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy50b3VjaGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuaW5nIHRpbWUgbXVzdCBiZSBiZWZvcmUgY2xvc2luZyB0aW1lLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmQgbXQtMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRTdG9yZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZ29Ub0NvbnRhY3QoKVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIENvbmZpZ3VyYXRpb24gRW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIENvbnRhY3QgU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ2NvbnRhY3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInNwb2NEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3BvY0RldGFpbCBvZiBnZXRzcG9jRGV0YWlsc0NvbnRyb2xzKCk7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpIT09MFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgZnMtNFwiPkFsdGVybmF0ZSBTUE9DIHt7aX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJkZWxBbHRTcG9jKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yMjUwXzMwNjUwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjUgMTMuOTk5OEgxNC4xNjY3TTE0LjE2NjcgMTMuOTk5OEgyNy41TTE0LjE2NjcgMTMuOTk5OFYyNS42NjY1QzE0LjE2NjcgMjYuMTA4NSAxNC4zNDIzIDI2LjUzMjUgMTQuNjU0OCAyNi44NDVDMTQuOTY3NCAyNy4xNTc2IDE1LjM5MTMgMjcuMzMzMiAxNS44MzMzIDI3LjMzMzJIMjQuMTY2N0MyNC42MDg3IDI3LjMzMzIgMjUuMDMyNiAyNy4xNTc2IDI1LjM0NTIgMjYuODQ1QzI1LjY1NzcgMjYuNTMyNSAyNS44MzMzIDI2LjEwODUgMjUuODMzMyAyNS42NjY1VjEzLjk5OThIMTQuMTY2N1pNMTYuNjY2NyAxMy45OTk4VjEyLjMzMzJDMTYuNjY2NyAxMS44OTExIDE2Ljg0MjMgMTEuNDY3MiAxNy4xNTQ4IDExLjE1NDdDMTcuNDY3NCAxMC44NDIxIDE3Ljg5MTMgMTAuNjY2NSAxOC4zMzMzIDEwLjY2NjVIMjEuNjY2N0MyMi4xMDg3IDEwLjY2NjUgMjIuNTMyNiAxMC44NDIxIDIyLjg0NTIgMTEuMTU0N0MyMy4xNTc3IDExLjQ2NzIgMjMuMzMzMyAxMS44OTExIDIzLjMzMzMgMTIuMzMzMlYxMy45OTk4TTE4LjMzMzMgMTguMTY2NVYyMy4xNjY1TTIxLjY2NjcgMTguMTY2NVYyMy4xNjY1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yMjUwXzMwNjUwXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yMjUwXzMwNjUwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yMjUwXzMwNjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbnRhY3ROYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY29udGFjdE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzcG9jRGV0YWlsLmdldCgnbmFtZScpPy5pbnZhbGlkICYmIHNwb2NEZXRhaWwuZ2V0KCduYW1lJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCduYW1lJyk/LnRvdWNoZWQgJiYgc3BvY0RldGFpbC5nZXQoJ25hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdEVtYWlsXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RW1haWw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb250YWN0RW1haWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybj1cIl4oW2EtekEtWjAtOV9cXC1cXC5dKylAW2EtejAtOS1dKyhcXC5bYS16MC05LV0rKSooXFwuW2EtekEtWl17MiwzfSkkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8uaW52YWxpZCAmJiBzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgbXVzdCBiZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMgbG9uZy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgbXVzdCBiZSBub3QgbW9yZSB0aGFuIDEwMCBjaGFyYWN0ZXJzIGxvbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb250YWN0TnVtYmVyXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q29udGFjdCBOdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvbnRhY3ROdW1iZXJcIiBtaW5sZW5ndGg9XCIxMFwiIG1heGxlbmd0aD1cIjEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGZvcm1Db250cm9sTmFtZT1cImNvbnRhY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/LmludmFsaWQgJiYgc3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnY29udGFjdCcpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdCBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250YWN0IG11c3QgYmUgYXQgbGVhc3QgMTAgZGlnaXRzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3QgbXVzdCBiZSBub3QgbW9yZSB0aGFuIDEzIGRpZ2l0cy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2lnbmF0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzaWduYXRpb24gKG9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZGVzaWduYXRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNpZ25hdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwic3ViLWhlYWRcIj5FbnRlciBTdG9yZSBDb25uZWN0aW9uIERldGFpbHM8L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYW55RGVza0lEXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QW55RGVzayBJRCAvIFRlYW1WaWV3ZXIgSUQgKG9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFueURlc2tJRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0b3JlQ29ubmVjdGlvbklkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRTdG9yZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZ29Ub1JldmlldygpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RvcmUgQ29udGFjdCBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmV2aWV3ICYgU3VibWl0IFN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJzZWxlY3QgIT09ICdyZXZpZXcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy00IGZ3LWJvbGQgdGV4dC1ob3Zlci1wcmltYXJ5IHN1Yi10aXRsZSB0ZXh0LWdyYXktNjAwIG0tMCBjdXJzb3ItcG9pbnRlclwiPlN0b3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtOVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5TdG9yZSBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5TdG9yZSBDb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZnYtcm93XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnc3RvcmVDb2RlJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ3N0b3JlQ29kZScpPy52YWx1ZTogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+QnVzaW5lc3MgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbCB0ZXh0LWhvdmVyLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgnYnVzaW5lc3NUeXBlJyk/LnZhbHVlID8gc3RvcmVGb3JtLmdldCgnYnVzaW5lc3NUeXBlJyk/LnZhbHVlIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOQSd9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5TdG9yZSBUeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGkgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUGhvbmUgbnVtYmVyIG11c3QgYmUgYWN0aXZlXCIgY2xhc3M9XCJmYXMgZmEtZXhjbGFtYXRpb24tY2lyY2xlIG1zLTEgZnMtN1wiPjwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiBtZS0yIHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX3R5cGUnKT8udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX3R5cGUnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zdWNjZXNzXCI+VmVyaWZpZWQ8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX3R5cGUnKT8udmFsdWUgJiYgc3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX3R5cGUnKT8udmFsdWUgPT09ICdNYWxsIFN0b3JlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj4gTWFsbCBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV9uYW1lJyk/LnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV9uYW1lJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+QWRkcmVzczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZGVyIGZzLTYgdGV4dC1yZXZpZXctdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy52YWx1ZSA/IHN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udmFsdWUgOiAnTkEnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5BbGxvdyBDaGFuZ2VzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhbiBjbGFzcz1cImZ3LWJvbGQgZnMtNlwiPlllczwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNCBmdy1ib2xkIHRleHQtaG92ZXItcHJpbWFyeSBzdWItdGl0bGUgdGV4dC1ncmF5LTYwMCBtLTAgY3Vyc29yLXBvaW50ZXJcIj5TdG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtOVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5UaW1lIFpvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPk5vIG9mIENhbWVyYXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBmdi1yb3dcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1yZXZpZXctdmFsXCI+e3tzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ2NhbWVyYXMnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+U3RvcmUgT3BlbiBUaW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1yZXZpZXctdmFsIHRleHQtaG92ZXItcHJpbWFyeVwiPnt7c3RvcmVGb3JtLmdldCgnb3BlbicpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/LnZhbHVlIDogJ05BJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPlN0b3JlIENsb3NlIFRpbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNCBmdy1ib2xkIHRleHQtaG92ZXItcHJpbWFyeSBzdWItdGl0bGUgdGV4dC1ncmF5LTYwMCBtLTAgY3Vyc29yLXBvaW50ZXJcIj5Db250YWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcm93IHB4LTkgcHQtMyBwYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC14bC05IGNvbC14eGwtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSBneS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZzLTYgZnctYm9sZFwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInNwb2NEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3BvYyBvZiBnZXRzcG9jRGV0YWlsc0NvbnRyb2xzKCk7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5TcG9jIHt7aSsxfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxNS43NVYxNC4yNUMxNSAxMy40NTQ0IDE0LjY4MzkgMTIuNjkxMyAxNC4xMjEzIDEyLjEyODdDMTMuNTU4NyAxMS41NjYxIDEyLjc5NTYgMTEuMjUgMTIgMTEuMjVINkM1LjIwNDM1IDExLjI1IDQuNDQxMjkgMTEuNTY2MSAzLjg3ODY4IDEyLjEyODdDMy4zMTYwNyAxMi42OTEzIDMgMTMuNDU0NCAzIDE0LjI1VjE1Ljc1TTEyIDUuMjVDMTIgNi45MDY4NSAxMC42NTY5IDguMjUgOSA4LjI1QzcuMzQzMTUgOC4yNSA2IDYuOTA2ODUgNiA1LjI1QzYgMy41OTMxNSA3LjM0MzE1IDIuMjUgOSAyLjI1QzEwLjY1NjkgMi4yNSAxMiAzLjU5MzE1IDEyIDUuMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5uYW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0c3BvY0RldGFpbHNWYWx1ZXMoaSk/Lm5hbWUgOiAnTkEnIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMV84MDM3MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiA2LjAwMDAyVjkuNzUwMDJDMTIgMTAuMzQ2OCAxMi4yMzcxIDEwLjkxOTEgMTIuNjU5IDExLjM0MUMxMy4wODEgMTEuNzYzIDEzLjY1MzMgMTIgMTQuMjUgMTJDMTQuODQ2NyAxMiAxNS40MTkgMTEuNzYzIDE1Ljg0MSAxMS4zNDFDMTYuMjYzIDEwLjkxOTEgMTYuNSAxMC4zNDY4IDE2LjUgOS43NTAwMlY5LjAwMDAyQzE2LjQ5OTkgNy4zMDcyOSAxNS45MjcyIDUuNjY0MzggMTQuODc1IDQuMzM4NDJDMTMuODIyNyAzLjAxMjQ2IDEyLjM1MjkgMi4wODE0NCAxMC43MDQ1IDEuNjk2NzVDOS4wNTYwNSAxLjMxMjA1IDcuMzI1OTYgMS40OTYzIDUuNzk1NTIgMi4yMTk1NUM0LjI2NTA4IDIuOTQyNzkgMy4wMjQzMSA0LjE2MjQ5IDIuMjc0OTUgNS42ODAzMkMxLjUyNTYgNy4xOTgxNCAxLjMxMTczIDguOTI0ODMgMS42NjgxMyAxMC41Nzk2QzIuMDI0NTMgMTIuMjM0NCAyLjkzMDI0IDEzLjcxOTkgNC4yMzc5OCAxNC43OTQ3QzUuNTQ1NzIgMTUuODY5NSA3LjE3ODU4IDE2LjQ3MDMgOC44NzEwNiAxNi40OTk0QzEwLjU2MzUgMTYuNTI4NSAxMi4yMTYxIDE1Ljk4NDIgMTMuNTYgMTQuOTU1TTEyIDkuMDAwMDJDMTIgMTAuNjU2OSAxMC42NTY5IDEyIDkuMDAwMDEgMTJDNy4zNDMxNSAxMiA2LjAwMDAxIDEwLjY1NjkgNi4wMDAwMSA5LjAwMDAyQzYuMDAwMDEgNy4zNDMxNyA3LjM0MzE1IDYuMDAwMDIgOS4wMDAwMSA2LjAwMDAyQzEwLjY1NjkgNi4wMDAwMiAxMiA3LjM0MzE3IDEyIDkuMDAwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xXzgwMzczXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5lbWFpbCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5lbWFpbCA6ICdOQScgfX08L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xXzgwMzc2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjUwMDEgMTIuNjkwMVYxNC45NDAxQzE2LjUwMDkgMTUuMTQ4OSAxNi40NTgxIDE1LjM1NTcgMTYuMzc0NSAxNS41NDcxQzE2LjI5MDggMTUuNzM4NSAxNi4xNjggMTUuOTEwMyAxNi4wMTQxIDE2LjA1MTVDMTUuODYwMiAxNi4xOTI3IDE1LjY3ODUgMTYuMzAwMiAxNS40ODA2IDE2LjM2NzFDMTUuMjgyOCAxNi40MzQgMTUuMDczMSAxNi40NTg5IDE0Ljg2NTEgMTYuNDQwMUMxMi41NTcyIDE2LjE4OTMgMTAuMzQwMyAxNS40MDA3IDguMzkyNTcgMTQuMTM3NkM2LjU4MDQ0IDEyLjk4NjEgNS4wNDQwNyAxMS40NDk3IDMuODkyNTcgOS42Mzc1N0MyLjYyNTA2IDcuNjgwOTggMS44MzYyNSA1LjQ1MzMyIDEuNTkwMDcgMy4xMzUwN0MxLjU3MTMzIDIuOTI3NjcgMS41OTU5OCAyLjcxODY0IDEuNjYyNDUgMi41MjEyOUMxLjcyODkyIDIuMzIzOTQgMS44MzU3NSAyLjE0MjU5IDEuOTc2MTUgMS45ODg3OUMyLjExNjU0IDEuODM0OTkgMi4yODc0MyAxLjcxMjEgMi40Nzc5MiAxLjYyNzk2QzIuNjY4NCAxLjU0MzgyIDIuODc0MzMgMS41MDAyNyAzLjA4MjU3IDEuNTAwMDdINS4zMzI1N0M1LjY5NjU1IDEuNDk2NDkgNi4wNDk0MiAxLjYyNTM4IDYuMzI1MzkgMS44NjI3MkM2LjYwMTM3IDIuMTAwMDYgNi43ODE2MyAyLjQyOTY2IDYuODMyNTcgMi43OTAwN0M2LjkyNzU0IDMuNTEwMTIgNy4xMDM2NiA0LjIxNzEyIDcuMzU3NTcgNC44OTc1N0M3LjQ1ODQ4IDUuMTY2MDIgNy40ODAzMiA1LjQ1Nzc2IDcuNDIwNSA1LjczODIzQzcuMzYwNjkgNi4wMTg3MSA3LjIyMTcyIDYuMjc2MTYgNy4wMjAwNyA2LjQ4MDA3TDYuMDY3NTcgNy40MzI1N0M3LjEzNTI0IDkuMzEwMjMgOC42ODk5MSAxMC44NjQ5IDEwLjU2NzYgMTEuOTMyNkwxMS41MjAxIDEwLjk4MDFDMTEuNzI0IDEwLjc3ODQgMTEuOTgxNCAxMC42Mzk1IDEyLjI2MTkgMTAuNTc5NkMxMi41NDI0IDEwLjUxOTggMTIuODM0MSAxMC41NDE3IDEzLjEwMjYgMTAuNjQyNkMxMy43ODMgMTAuODk2NSAxNC40OSAxMS4wNzI2IDE1LjIxMDEgMTEuMTY3NkMxNS41NzQ0IDExLjIxOSAxNS45MDcxIDExLjQwMjUgMTYuMTQ1IDExLjY4MzJDMTYuMzgyOCAxMS45NjM5IDE2LjUwOTIgMTIuMzIyMyAxNi41MDAxIDEyLjY5MDFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xXzgwMzc2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5jb250YWN0ID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0c3BvY0RldGFpbHNWYWx1ZXMoaSk/LmNvbnRhY3QgOiAnTkEnIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+QW55RGVzayBJRFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tzdG9yZUZvcm0uZ2V0KCdzdG9yZUNvbm5lY3Rpb25JZCcpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdzdG9yZUNvbm5lY3Rpb25JZCcpPy52YWx1ZSA6ICdOQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvVG9TdG9yZUluZm8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTNcIj5FZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cInN0b3JlRm9ybS5pbnZhbGlkXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmV2aWV3ICYgU3VibWl0IEVuZCAtLT5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXN0b3Jlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zdG9yZXMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1zdG9yZXMtZm9ybS9hZGQtc3RvcmVzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXN0b3Jlcy1mb3JtL2FkZC1zdG9yZXMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBZ0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUtsSCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBRzFDLE9BQVEsS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQUM3QyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFTdkIsTUFBTSxPQUFPLHNCQUFzQjtJQWtDdkI7SUFDQTtJQUNBO0lBQ0E7SUFwQ2MsU0FBUyxDQUE2QjtJQUU5RCxNQUFNLEdBQUcsWUFBWSxDQUFDO0lBQ3RCLFNBQVMsQ0FBWTtJQUNyQixPQUFPLENBQVM7SUFDaEIsU0FBUyxDQUFRO0lBQ2pCLGNBQWMsQ0FBTTtJQUNwQixLQUFLLEdBQUcsS0FBSyxDQUFBO0lBR04sbUJBQW1CLENBQUMsS0FBMkM7UUFDcEUsSUFBSSxLQUFLLENBQUMsUUFBUSxF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UCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQXJyYXksIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFN0b3Jlc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgU3RvcmVSZXNwb25zZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3N0b3JlLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xyXG5pbXBvcnQgeyBOZ3hHcEF1dG9jb21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gXCJAYW5ndWxhci1tYWdpYy9uZ3gtZ3AtYXV0b2NvbXBsZXRlL2xpYi9uZ3gtZ3AtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgIGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgXCJkYXlqcy9sb2NhbGUvZW5cIjtcclxuaW1wb3J0IHV0YyBmcm9tIFwiZGF5anMvcGx1Z2luL3V0Y1wiO1xyXG5pbXBvcnQgdGltZXpvbmUgZnJvbSBcImRheWpzL3BsdWdpbi90aW1lem9uZVwiO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcclxuXHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1hZGQtc3RvcmVzLWZvcm1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2FkZC1zdG9yZXMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vYWRkLXN0b3Jlcy1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRTdG9yZXNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKFwibmd4UGxhY2VzXCIpIHBsYWNlc1JlZjogTmd4R3BBdXRvY29tcGxldGVEaXJlY3RpdmU7XHJcblxyXG4gIHNlbGVjdCA9IFwic3RvcmVfaW5mb1wiO1xyXG4gIHN0b3JlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHN0b3JlSWQ6IHN0cmluZztcclxuICB0aW1lem9uZXM6IGFueVtdO1xyXG4gICRoZWFkZXJGaWx0ZXJzOiBhbnk7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG5cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZHJlc3NDaGFuZ2UocGxhY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdCB8IGFueSkge1xyXG4gICAgaWYgKHBsYWNlLmdlb21ldHJ5KSB7XHJcbiAgICAgIGxldCBjb3VudHJ5ID0gXCJcIiwgY2l0eSA9IFwiXCIsIHN0YXRlID0gXCJcIiwgcGluY29kZSA9IFwiXCI7XHJcbiAgICAgIHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJjb3VudHJ5XCIpKSB7XHJcbiAgICAgICAgICBjb3VudHJ5ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudC50eXBlcy5pbmNsdWRlcyhcImxvY2FsaXR5XCIpKSB7XHJcbiAgICAgICAgICBjaXR5ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudC50eXBlcy5pbmNsdWRlcyhcImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMVwiKSkge1xyXG4gICAgICAgICAgc3RhdGUgPSBjb21wb25lbnQubG9uZ19uYW1lO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwicG9zdGFsX2NvZGVcIikpIHtcclxuICAgICAgICAgIHBpbmNvZGUgPSBjb21wb25lbnQubG9uZ19uYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy5zZXRWYWx1ZShwbGFjZS5mb3JtYXR0ZWRfYWRkcmVzcyk7XHJcbiAgICAgIHRoaXMuc3RvcmVGb3JtLmdldChcImNvdW50cnlcIik/LnNldFZhbHVlKGNvdW50cnkpO1xyXG4gICAgICB0aGlzLnN0b3JlRm9ybS5nZXQoXCJjaXR5XCIpPy5zZXRWYWx1ZShjaXR5KTtcclxuICAgICAgdGhpcy5zdG9yZUZvcm0uZ2V0KFwic3RhdGVcIik/LnNldFZhbHVlKHN0YXRlKTtcclxuICAgICAgdGhpcy5zdG9yZUZvcm0uZ2V0KFwicGluY29kZVwiKT8uc2V0VmFsdWUocGluY29kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBzdG9yZXNTZXJ2aWNlOiBTdG9yZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0czogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge1xyXG4gICAgbGV0IGRhdGE6YW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnKSB8fCAnJyk7XHJcbiAgICBsZXQgdXNlcjphbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKSB8fCAnJyk7XHJcbiAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gZGF0YSA/IGRhdGEgOiB1c2VyO1xyXG4gICAgdGhpcy5nZXRBbGxUaW1lem9uZXMoKTtcclxuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBzZXR0aW5ndmFsdWUobGFiZWw6IGFueSkge1xyXG4gICAgaWYgKGxhYmVsID09IFwic3RvcmVfaW5mb1wiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gXCJzdG9yZV9pbmZvXCI7XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwiY29uZmlnXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSBcImNvbmZpZ1wiO1xyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcInN0b3JlX2xvY1wiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gXCJzdG9yZV9sb2NcIjtcclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCJjb250YWN0XCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSBcImNvbnRhY3RcIjtcclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCJyZXZpZXdcIikge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IFwicmV2aWV3XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5zdG9yZUZvcm0gPSB0aGlzLmZiLmdyb3VwKFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RvcmVOYW1lOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2xpZW50SWQ6IFt0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnQgPyB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnQgOnRoaXMuJGhlYWRlckZpbHRlcnM/LmNsaWVudElkLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBidXNpbmVzc1R5cGU6IFtcIkNPQ09cIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgc3RvcmVUeXBlX3R5cGU6IFtcIkhpZ2ggU3RyZWV0XCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHN0b3JlVHlwZV9uYW1lOiBbXCJcIl0sXHJcbiAgICAgICAgc3RvcmVDb2RlOiBbXCJcIl0sXHJcbiAgICAgICAgYWRkcmVzczogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNvdW50cnk6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBzdGF0ZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNpdHk6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBwaW5jb2RlOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgdGltZVpvbmU6IFtcIkFzaWEvS29sa2F0YVwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBvcGVuOiBbXCIxMDowMFwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjbG9zZTogW1wiMjA6MDBcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgLy8gY2FtZXJhczogWzAsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHNwb2NEZXRhaWxzOiB0aGlzLmZiLmFycmF5KFt0aGlzLmNyZWF0ZVNwb2NEZXRhaWwoKV0pLFxyXG4gICAgICAgIHN0b3JlQ29ubmVjdGlvbklkOiBbXCJcIl0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgdmFsaWRhdG9yczogdGhpcy50aW1lUmFuZ2VWYWxpZGF0b3IgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHRpbWVSYW5nZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBvcGVuVGltZSA9IGNvbnRyb2wuZ2V0KFwib3BlblwiKT8udmFsdWU7XHJcbiAgICBjb25zdCBjbG9zZVRpbWUgPSBjb250cm9sLmdldChcImNsb3NlXCIpPy52YWx1ZTtcclxuICAgIGlmIChvcGVuVGltZSAmJiBjbG9zZVRpbWUgJiYgb3BlblRpbWUgPj0gY2xvc2VUaW1lKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRUaW1lUmFuZ2U6IHRydWUgfTtcclxuICAgIH0gICAgXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVNwb2NEZXRhaWwoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgbmFtZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBlbWFpbDogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMuZW1haWwsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXHJcbiAgICAgICAgXSxcclxuICAgICAgXSxcclxuICAgICAgY29udGFjdDogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEzKSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSxcclxuICAgICAgICBdLFxyXG4gICAgICBdLFxyXG4gICAgICBkZXNpZ25hdGlvbjogW1wiXCJdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRzcG9jRGV0YWlsc0NvbnRyb2xzKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgZ2V0c3BvY0RldGFpbHNWYWx1ZXMoaTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkuYXQoaSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZVByb2ZpbGUoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlRm9ybS5nZXQoXCJzdG9yZVByb2ZpbGVcIikgYXMgRm9ybUdyb3VwO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N0b3JlSW5mbygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gXCJzdG9yZV9pbmZvXCI7XHJcbiAgfVxyXG5cclxuICBnb1RvQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gXCJjb25maWdcIjtcclxuICB9XHJcblxyXG4gIGdvVG9Db250YWN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3QgPSBcImNvbnRhY3RcIjtcclxuICB9XHJcblxyXG4gIGdvVG9SZXZpZXcoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdCA9IFwicmV2aWV3XCI7XHJcbiAgfVxyXG5cclxuICBhZGRTcG9jRGV0YWlsKCkge1xyXG4gICAgKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkucHVzaChcclxuICAgICAgdGhpcy5jcmVhdGVTcG9jRGV0YWlsKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGRBbHRTcG9jKCkge1xyXG4gICAgKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkucHVzaChcclxuICAgICAgdGhpcy5jcmVhdGVTcG9jRGV0YWlsKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxBbHRTcG9jKCkge1xyXG4gICAgKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQoMSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTcG9jRGV0YWlsKGluZGV4OiBudW1iZXIpIHtcclxuICAgICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLnJlbW92ZUF0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKHRoaXMuc3RvcmVGb3JtLnZhbGlkKSB7XHJcbiAgICAgIGxldCBzdG9yZTogU3RvcmVSZXNwb25zZSA9IHtcclxuICAgICAgICBzdG9yZU5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlLnN0b3JlTmFtZSxcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5zdG9yZUZvcm0udmFsdWUuY2xpZW50SWQsXHJcbiAgICAgICAgYnVzaW5lc3NUeXBlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZS5idXNpbmVzc1R5cGUsXHJcbiAgICAgICAgc3RvcmVUeXBlOiB7XHJcbiAgICAgICAgICB0eXBlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZS5zdG9yZVR5cGVfdHlwZSxcclxuICAgICAgICAgIG5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zdG9yZVR5cGVfbmFtZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0b3JlUHJvZmlsZToge1xyXG4gICAgICAgICAgc3RvcmVDb2RlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3RvcmVDb2RlLFxyXG4gICAgICAgICAgYWRkcmVzczogdGhpcy5zdG9yZUZvcm0udmFsdWU/LmFkZHJlc3MsXHJcbiAgICAgICAgICBjb3VudHJ5OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uY291bnRyeSxcclxuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3RhdGUsXHJcbiAgICAgICAgICBjaXR5OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uY2l0eSxcclxuICAgICAgICAgIHBpbmNvZGU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5waW5jb2RlLFxyXG4gICAgICAgICAgdGltZVpvbmU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy50aW1lWm9uZSxcclxuICAgICAgICAgIG9wZW46IHRoaXMuZGF5anMoYDE5OTEtMDEtMDEgJHt0aGlzLnN0b3JlRm9ybS52YWx1ZT8ub3Blbn1gLCdZWVlZLU1NLUREIEhIOm1tJykuZm9ybWF0KFwiSEg6bW06c3NcIiksXHJcbiAgICAgICAgICBjbG9zZTogdGhpcy5kYXlqcyhgMTk5MS0wMS0wMSAke3RoaXMuc3RvcmVGb3JtLnZhbHVlPy5jbG9zZX1gLCdZWVlZLU1NLUREIEhIOm1tJykuZm9ybWF0KFwiSEg6bW06c3NcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlZGdlOiB7XHJcbiAgICAgICAgLy8gICBjYW1EZXRhaWxzOiB7XHJcbiAgICAgICAgLy8gICAgIGNhbWVyYXM6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5jYW1lcmFzLFxyXG4gICAgICAgIC8vICAgfSxcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIHNwb2NEZXRhaWxzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1swXS5uYW1lLFxyXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzWzBdLmVtYWlsLFxyXG4gICAgICAgICAgICBjb250YWN0OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbMF0uY29udGFjdCxcclxuICAgICAgICAgICAgZGVzaWduYXRpb246IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1swXS5kZXNpZ25hdGlvbixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBzdG9yZUNvbm5lY3Rpb25JZDogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnN0b3JlQ29ubmVjdGlvbklkLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5zdG9yZUZvcm0udmFsdWUuc3BvY0RldGFpbHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGZvcihsZXQgaT0xO2k8dGhpcy5zdG9yZUZvcm0udmFsdWUuc3BvY0RldGFpbHMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgc3RvcmUuc3BvY0RldGFpbHMucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1tpXS5uYW1lLFxyXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzW2ldLmVtYWlsLFxyXG4gICAgICAgICAgICBjb250YWN0OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbaV0uY29udGFjdCxcclxuICAgICAgICAgICAgZGVzaWduYXRpb246IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1tpXS5kZXNpZ25hdGlvbixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdG9yZXNTZXJ2aWNlLmNyZWF0ZVN0b3JlKHN0b3JlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwICYmIHJlcy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KFwiU3RvcmUgQ3JlYXRlZCBTdWNjZXNzZnVsbHkhXCIpO1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RvcmUgJiYgcmVzLmRhdGEuc3RvcmUuc3RvcmVJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RvcmVzU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZUluZnJhVGlja2V0KHtcclxuICAgICAgICAgICAgICAgICAgc3RvcmVJZDogcmVzLmRhdGEuc3RvcmUuc3RvcmVJZCxcclxuICAgICAgICAgICAgICAgICAgRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSxcclxuICAgICAgICAgICAgICAgICAgaXNzdWVUeXBlOiBcImluc3RhbGxhdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHt9LFxyXG4gICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge30sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3N0b3Jlc1wiXSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gY3JlYXRlIHN0b3JlIVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyb3I/LmVycm9yPy5lcnJvciA/ZXJyb3I/LmVycm9yPy5lcnJvcjogXCJVbmFibGUgdG8gY3JlYXRlIFN0b3JlIVwiKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvQWRkU3RvcmUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3N0b3Jlcy9hZGRpdGlvbi1tZXRob2RcIl0pO1xyXG4gIH1cclxuXHJcbiAgb21pdF9zcGVjaWFsX2NoYXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdmFyIGs7XHJcbiAgICBrID0gZXZlbnQuY2hhckNvZGU7IC8vICAgICAgICAgayA9IGV2ZW50LmtleUNvZGU7ICAoQm90aCBjYW4gYmUgdXNlZClcclxuICAgIHJldHVybiBrID09IDggfHwgayA9PSAzMiB8fCAoayA+PSA0OCAmJiBrIDw9IDU3KTtcclxuICB9XHJcblxyXG4gIGdldEFsbFRpbWV6b25lcygpIHtcclxuICAgIHRoaXMudGltZXpvbmVzPW1vbWVudC50ei5uYW1lcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93IG10LTMgbWItNlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGNvbC1sZy0zIGNvbC14bC0zIGNvbC14eGwtM1wiIGlkPVwibGVmdC1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWZsdXNoIGgtMTAwIG1iLTBcIj5cclxuICAgICAgICAgICAgPCEtLWJlZ2luOjpBc2lkZSBjb250ZW50LS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUgbWVudS1jb2x1bW4gbWVudS1yb3VuZGVkIG1lbnUtc3RhdGUtYmcgbWVudS1zdGF0ZS10aXRsZS1wcmltYXJ5IG1lbnUtc3RhdGUtaWNvbi1wcmltYXJ5IG1lbnUtc3RhdGUtYnVsbGV0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46Ok1lbnUgaXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkluYm94LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ID09PSAnc3RvcmVfaW5mbycgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0dGluZ3ZhbHVlKCdzdG9yZV9pbmZvJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMuMDg5OTUgNi44ODM2OUwzLjAyNDAxIDYuOTg2NjlDMi4zMDM1OCA4LjI1NTU3IDMuMDYxMDEgOS44Nzk0NSA0LjQ2NDY0IDEwLjA2NjJDNC41ODYyNyAxMC4wODExIDQuNzAxMTIgMTAuMDg5MiA0LjgxNDUgMTAuMDg5MkM1LjU1MjU1IDEwLjA4OTIgNi4yMDUyMyA5Ljc3MjI5IDYuNjU5NTMgOS4yNzkxN0w3LjIxMjg2IDguNjc4NTRMNy43NjQzMiA5LjI4MDg5QzguMjEzNjcgOS43NzE3MSA4Ljg2NTIgMTAuMDg5MiA5LjYwNzc2IDEwLjA4OTJDMTAuMzQ3MSAxMC4wODkyIDExLjAwMjIgOS43NzEzNyAxMS40NTEyIDkuMjgwODlMMTIuMDA0NCA4LjY3NjY1TDEyLjU1NzYgOS4yODA4OUMxMy4wMDY2IDkuNzcxMzcgMTMuNjYxNyAxMC4wODkyIDE0LjQwMSAxMC4wODkyQzE1LjE0MDQgMTAuMDg5MiAxNS43OTU0IDkuNzcxMzcgMTYuMjQ0NSA5LjI4MDg5TDE2Ljc5NzcgOC42NzY2NUwxNy4zNTA4IDkuMjgwODlDMTcuNzk5OSA5Ljc3MTM3IDE4LjQ1NDkgMTAuMDg5MiAxOS4xOTQzIDEwLjA4OTJDMTkuMzA0MSAxMC4wODkyIDE5LjQyMjMgMTAuMDgxMSAxOS41NDMzIDEwLjA2NjNDMjAuOTc3MiA5Ljg3MTY4IDIxLjczNTUgOC4xNjM4NyAyMC45MTU1IDYuODg0MTlDMjAuOTE1NCA2Ljg4NDEzIDIwLjkxNTQgNi44ODQwNyAyMC45MTU0IDYuODg0MDJMMTguODA1NiAzLjU5NDI5TDE4LjgwNTYgMy41OTQyOUwxOC44MDQ2IDMuNTkyODJDMTguNzU4MiAzLjUyMDAyIDE4LjY2NDkgMy40NjQyMyAxOC41NTg0IDMuNDY0MjNINS40NDMwN0M1LjMzNjUgMy40NjQyMyA1LjI0MzI2IDMuNTIwMDIgNS4xOTY4MSAzLjU5MjgyTDUuMTk2MTkgMy41OTM3OUwzLjA4OTk1IDYuODgzNjlaTTQuODE4MTggMTIuNzQ5OUM0LjcxNjQ0IDEyLjc0OTkgNC42MTYgMTIuNzQ2OCA0LjUxNjkgMTIuNzQxVjE2LjY0MjhWMTguOTY0MkM0LjUxNjkgMTkuODIxMSA1LjIyNjYzIDIwLjUzNTcgNi4xMTk0MiAyMC41MzU3SDE3Ljg4MkMxOC43NzQ4IDIwLjUzNTcgMTkuNDg0NSAxOS44MjExIDE5LjQ4NDUgMTguOTY0MlYxNi42NDI4VjEyLjc0MTVDMTkuMzg3NCAxMi43NDcgMTkuMjg5MyAxMi43NDk5IDE5LjE5MDYgMTIuNzQ5OUMxOS4wMDIyIDEyLjc0OTkgMTguODE1NyAxMi43Mzk4IDE4LjYzMiAxMi43MjAyVjE2LjY0MjhWMTcuMzkyOEgxNy44ODJINi4xMTk0Mkg1LjM2OTQyVjE2LjY0MjhWMTIuNzIxQzUuMTg4NjYgMTIuNzQgNS4wMDQ3MiAxMi43NDk5IDQuODE4MTggMTIuNzQ5OVpcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS10aXRsZSBmdy1ib2xkIFwiPlN0b3JlIEluZm88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6SW5ib3gtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtIG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpJbmJveC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGlua1wiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdCA9PT0gJ2NvbmZpZycgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0dGluZ3ZhbHVlKCdjb25maWcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xMDE3XzIyMjcwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyIDE1QzEzLjY1NjkgMTUgMTUgMTMuNjU2OSAxNSAxMkMxNSAxMC4zNDMxIDEzLjY1NjkgOSAxMiA5QzEwLjM0MzEgOSA5IDEwLjM0MzEgOSAxMkM5IDEzLjY1NjkgMTAuMzQzMSAxNSAxMiAxNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuNCAxNUMxOS4yNjY5IDE1LjMwMTYgMTkuMjI3MiAxNS42MzYyIDE5LjI4NiAxNS45NjA2QzE5LjM0NDggMTYuMjg1IDE5LjQ5OTUgMTYuNTg0MyAxOS43MyAxNi44MkwxOS43OSAxNi44OEMxOS45NzYgMTcuMDY1NyAyMC4xMjM1IDE3LjI4NjMgMjAuMjI0MSAxNy41MjkxQzIwLjMyNDggMTcuNzcxOSAyMC4zNzY2IDE4LjAzMjIgMjAuMzc2NiAxOC4yOTVDMjAuMzc2NiAxOC41NTc4IDIwLjMyNDggMTguODE4MSAyMC4yMjQxIDE5LjA2MDlDMjAuMTIzNSAxOS4zMDM3IDE5Ljk3NiAxOS41MjQzIDE5Ljc5IDE5LjcxQzE5LjYwNDMgMTkuODk2IDE5LjM4MzcgMjAuMDQzNSAxOS4xNDA5IDIwLjE0NDFDMTguODk4MSAyMC4yNDQ4IDE4LjYzNzggMjAuMjk2NiAxOC4zNzUgMjAuMjk2NkMxOC4xMTIyIDIwLjI5NjYgMTcuODUxOSAyMC4yNDQ4IDE3LjYwOTEgMjAuMTQ0MUMxNy4zNjYzIDIwLjA0MzUgMTcuMTQ1NyAxOS44OTYgMTYuOTYgMTkuNzFMMTYuOSAxOS42NUMxNi42NjQzIDE5LjQxOTUgMTYuMzY1IDE5LjI2NDggMTYuMDQwNiAxOS4yMDZDMTUuNzE2MiAxOS4xNDcyIDE1LjM4MTYgMTkuMTg2OSAxNS4wOCAxOS4zMkMxNC43ODQyIDE5LjQ0NjggMTQuNTMyIDE5LjY1NzIgMTQuMzU0MyAxOS45MjU1QzE0LjE3NjYgMjAuMTkzOCAxNC4wODEzIDIwLjUwODIgMTQuMDggMjAuODNWMjFDMTQuMDggMjEuNTMwNCAxMy44NjkzIDIyLjAzOTEgMTMuNDk0MiAyMi40MTQyQzEzLjExOTEgMjIuNzg5MyAxMi42MTA0IDIzIDEyLjA4IDIzQzExLjU0OTYgMjMgMTEuMDQwOSAyMi43ODkzIDEwLjY2NTggMjIuNDE0MkMxMC4yOTA3IDIyLjAzOTEgMTAuMDggMjEuNTMwNCAxMC4wOCAyMVYyMC45MUMxMC4wNzIzIDIwLjU3OSA5Ljk2NTEyIDIwLjI1OCA5Ljc3MjUxIDE5Ljk4ODdDOS41Nzk5IDE5LjcxOTQgOS4zMTA3NCAxOS41MTQzIDkgMTkuNEM4LjY5ODM4IDE5LjI2NjkgOC4zNjM4MSAxOS4yMjcyIDguMDM5NDEgMTkuMjg2QzcuNzE1MDIgMTkuMzQ0OCA3LjQxNTY4IDE5LjQ5OTUgNy4xOCAxOS43M0w3LjEyIDE5Ljc5QzYuOTM0MjUgMTkuOTc2IDYuNzEzNjggMjAuMTIzNSA2LjQ3MDg4IDIwLjIyNDFDNi4yMjgwOCAyMC4zMjQ4IDUuOTY3ODMgMjAuMzc2NiA1LjcwNSAyMC4zNzY2QzUuNDQyMTcgMjAuMzc2NiA1LjE4MTkyIDIwLjMyNDggNC45MzkxMiAyMC4yMjQxQzQuNjk2MzIgMjAuMTIzNSA0LjQ3NTc1IDE5Ljk3NiA0LjI5IDE5Ljc5QzQuMTA0MDUgMTkuNjA0MyAzLjk1NjUzIDE5LjM4MzcgMy44NTU4OCAxOS4xNDA5QzMuNzU1MjMgMTguODk4MSAzLjcwMzQzIDE4LjYzNzggMy43MDM0MyAxOC4zNzVDMy43MDM0MyAxOC4xMTIyIDMuNzU1MjMgMTcuODUxOSAzLjg1NTg4IDE3LjYwOTFDMy45NTY1MyAxNy4zNjYzIDQuMTA0MDUgMTcuMTQ1NyA0LjI5IDE2Ljk2TDQuMzUgMTYuOUM0LjU4MDU0IDE2LjY2NDMgNC43MzUxOSAxNi4zNjUgNC43OTQgMTYuMDQwNkM0Ljg1MjgyIDE1LjcxNjIgNC44MTMxMiAxNS4zODE2IDQuNjggMTUuMDhDNC41NTMyNCAxNC43ODQyIDQuMzQyNzYgMTQuNTMyIDQuMDc0NDcgMTQuMzU0M0MzLjgwNjE4IDE0LjE3NjYgMy40OTE3OSAxNC4wODEzIDMuMTcgMTQuMDhIM0MyLjQ2OTU3IDE0LjA4IDEuOTYwODYgMTMuODY5MyAxLjU4NTc5IDEzLjQ5NDJDMS4yMTA3MSAxMy4xMTkxIDEgMTIuNjEwNCAxIDEyLjA4QzEgMTEuNTQ5NiAxLjIxMDcxIDExLjA0MDkgMS41ODU3OSAxMC42NjU4QzEuOTYwODYgMTAuMjkwNyAyLjQ2OTU3IDEwLjA4IDMgMTAuMDhIMy4wOUMzLjQyMDk5IDEwLjA3MjMgMy43NDIgOS45NjUxMiA0LjAxMTMgOS43NzI1MUM0LjI4MDU5IDkuNTc5OSA0LjQ4NTcyIDkuMzEwNzQgNC42IDlDNC43MzMxMiA4LjY5ODM4IDQuNzcyODIgOC4zNjM4MSA0LjcxNCA4LjAzOTQxQzQuNjU1MTkgNy43MTUwMiA0LjUwMDU0IDcuNDE1NjggNC4yNyA3LjE4TDQuMjEgNy4xMkM0LjAyNDA1IDYuOTM0MjUgMy44NzY1MyA2LjcxMzY4IDMuNzc1ODggNi40NzA4OEMzLjY3NTIzIDYuMjI4MDggMy42MjM0MyA1Ljk2NzgzIDMuNjIzNDMgNS43MDVDMy42MjM0MyA1LjQ0MjE3IDMuNjc1MjMgNS4xODE5MiAzLjc3NTg4IDQuOTM5MTJDMy44NzY1MyA0LjY5NjMyIDQuMDI0MDUgNC40NzU3NSA0LjIxIDQuMjlDNC4zOTU3NSA0LjEwNDA1IDQuNjE2MzIgMy45NTY1MyA0Ljg1OTEyIDMuODU1ODhDNS4xMDE5MiAzLjc1NTIzIDUuMzYyMTcgMy43MDM0MyA1LjYyNSAzLjcwMzQzQzUuODg3ODMgMy43MDM0MyA2LjE0ODA4IDMuNzU1MjMgNi4zOTA4OCAzLjg1NTg4QzYuNjMzNjggMy45NTY1MyA2Ljg1NDI1IDQuMTA0MDUgNy4wNCA0LjI5TDcuMSA0LjM1QzcuMzM1NjggNC41ODA1NCA3LjYzNTAyIDQuNzM1MTkgNy45NTk0MSA0Ljc5NEM4LjI4MzgxIDQuODUyODIgOC42MTgzOCA0LjgxMzEyIDguOTIgNC42OEg5QzkuMjk1NzcgNC41NTMyNCA5LjU0ODAyIDQuMzQyNzYgOS43MjU2OSA0LjA3NDQ3QzkuOTAzMzcgMy44MDYxOCA5Ljk5ODcyIDMuNDkxNzkgMTAgMy4xN1YzQzEwIDIuNDY5NTcgMTAuMjEwNyAxLjk2MDg2IDEwLjU4NTggMS41ODU3OUMxMC45NjA5IDEuMjEwNzEgMTEuNDY5NiAxIDEyIDFDMTIuNTMwNCAxIDEzLjAzOTEgMS4yMTA3MSAxMy40MTQyIDEuNTg1NzlDMTMuNzg5MyAxLjk2MDg2IDE0IDIuNDY5NTcgMTQgM1YzLjA5QzE0LjAwMTMgMy40MTE3OSAxNC4wOTY2IDMuNzI2MTggMTQuMjc0MyAzLjk5NDQ3QzE0LjQ1MiA0LjI2Mjc2IDE0LjcwNDIgNC40NzMyNCAxNSA0LjZDMTUuMzAxNiA0LjczMzEyIDE1LjYzNjIgNC43NzI4MiAxNS45NjA2IDQuNzE0QzE2LjI4NSA0LjY1NTE5IDE2LjU4NDMgNC41MDA1NCAxNi44MiA0LjI3TDE2Ljg4IDQuMjFDMTcuMDY1NyA0LjAyNDA1IDE3LjI4NjMgMy44NzY1MyAxNy41MjkxIDMuNzc1ODhDMTcuNzcxOSAzLjY3NTIzIDE4LjAzMjIgMy42MjM0MyAxOC4yOTUgMy42MjM0M0MxOC41NTc4IDMuNjIzNDMgMTguODE4MSAzLjY3NTIzIDE5LjA2MDkgMy43NzU4OEMxOS4zMDM3IDMuODc2NTMgMTkuNTI0MyA0LjAyNDA1IDE5LjcxIDQuMjFDMTkuODk2IDQuMzk1NzUgMjAuMDQzNSA0LjYxNjMyIDIwLjE0NDEgNC44NTkxMkMyMC4yNDQ4IDUuMTAxOTIgMjAuMjk2NiA1LjM2MjE3IDIwLjI5NjYgNS42MjVDMjAuMjk2NiA1Ljg4NzgzIDIwLjI0NDggNi4xNDgwOCAyMC4xNDQxIDYuMzkwODhDMjAuMDQzNSA2LjYzMzY4IDE5Ljg5NiA2Ljg1NDI1IDE5LjcxIDcuMDRMMTkuNjUgNy4xQzE5LjQxOTUgNy4zMzU2OCAxOS4yNjQ4IDcuNjM1MDIgMTkuMjA2IDcuOTU5NDFDMTkuMTQ3MiA4LjI4MzgxIDE5LjE4NjkgOC42MTgzOCAxOS4zMiA4LjkyVjlDMTkuNDQ2OCA5LjI5NTc3IDE5LjY1NzIgOS41NDgwMiAxOS45MjU1IDkuNzI1NjlDMjAuMTkzOCA5LjkwMzM3IDIwLjUwODIgOS45OTg3MiAyMC44MyAxMEgyMUMyMS41MzA0IDEwIDIyLjAzOTEgMTAuMjEwNyAyMi40MTQyIDEwLjU4NThDMjIuNzg5MyAxMC45NjA5IDIzIDExLjQ2OTYgMjMgMTJDMjMgMTIuNTMwNCAyMi43ODkzIDEzLjAzOTEgMjIuNDE0MiAxMy40MTQyQzIyLjAzOTEgMTMuNzg5MyAyMS41MzA0IDE0IDIxIDE0SDIwLjkxQzIwLjU4ODIgMTQuMDAxMyAyMC4yNzM4IDE0LjA5NjYgMjAuMDA1NSAxNC4yNzQzQzE5LjczNzIgMTQuNDUyIDE5LjUyNjggMTQuNzA0MiAxOS40IDE1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzEwMTdfMjIyNzBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGUgZnctYm9sZCBcIj5TdG9yZSBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OkluYm94LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6Ok1lbnUgaXRlbS0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpNZW51IGl0ZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtIG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpEcmFmdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGlua1wiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdCA9PT0gJ2NvbnRhY3QnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldHRpbmd2YWx1ZSgnY29udGFjdCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaWNvblwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNyAyMVYxOUMxNyAxNy45MzkxIDE2LjU3ODYgMTYuOTIxNyAxNS44Mjg0IDE2LjE3MTZDMTUuMDc4MyAxNS40MjE0IDE0LjA2MDkgMTUgMTMgMTVINUMzLjkzOTEzIDE1IDIuOTIxNzIgMTUuNDIxNCAyLjE3MTU3IDE2LjE3MTZDMS40MjE0MyAxNi45MjE3IDEgMTcuOTM5MSAxIDE5VjIxTTIzIDIxVjE5QzIyLjk5OTMgMTguMTEzNyAyMi43MDQ0IDE3LjI1MjggMjIuMTYxNCAxNi41NTIzQzIxLjYxODQgMTUuODUxOSAyMC44NTgxIDE1LjM1MTYgMjAgMTUuMTNNMTYgMy4xM0MxNi44NjA0IDMuMzUwMyAxNy42MjMgMy44NTA3IDE4LjE2NzYgNC41NTIzMUMxOC43MTIyIDUuMjUzOTIgMTkuMDA3OCA2LjExNjgzIDE5LjAwNzggNy4wMDVDMTkuMDA3OCA3Ljg5MzE3IDE4LjcxMjIgOC43NTYwOCAxOC4xNjc2IDkuNDU3NjlDMTcuNjIzIDEwLjE1OTMgMTYuODYwNCAxMC42NTk3IDE2IDEwLjg4TTEzIDdDMTMgOS4yMDkxNCAxMS4yMDkxIDExIDkgMTFDNi43OTA4NiAxMSA1IDkuMjA5MTQgNSA3QzUgNC43OTA4NiA2Ljc5MDg2IDMgOSAzQzExLjIwOTEgMyAxMyA0Ljc5MDg2IDEzIDdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGUgZnctYm9sZCBcIj5Db250YWN0IERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6RHJhZnQtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpNZW51IGl0ZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46Ok1lbnUgaXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlRyYXNoLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ID09PSAncmV2aWV3J31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldHRpbmd2YWx1ZSgncmV2aWV3JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNiAxQzUuMjA0MzUgMSA0LjQ0MTI5IDEuMzE2MDcgMy44Nzg2OCAxLjg3ODY4QzMuMzE2MDcgMi40NDEyOSAzIDMuMjA0MzUgMyA0VjIwQzMgMjAuNzk1NyAzLjMxNjA3IDIxLjU1ODcgMy44Nzg2OCAyMi4xMjEzQzQuNDQxMjkgMjIuNjgzOSA1LjIwNDM1IDIzIDYgMjNIMTJIMThDMTguNzk1NyAyMyAxOS41NTg3IDIyLjY4MzkgMjAuMTIxMyAyMi4xMjEzQzIwLjY4MzkgMjEuNTU4NyAyMSAyMC43OTU3IDIxIDIwVjE2LjQyMDhMMTkgMTguNDIwOFYyMEMxOSAyMC4yNjUyIDE4Ljg5NDYgMjAuNTE5NiAxOC43MDcxIDIwLjcwNzFDMTguNTE5NiAyMC44OTQ2IDE4LjI2NTIgMjEgMTggMjFIMTYuNDIwOEwxNS4zMjg2IDIyLjA5MjJMMTIgMjNMMTIuNTQ1NSAyMUg2QzUuNzM0NzggMjEgNS40ODA0MyAyMC44OTQ2IDUuMjkyODkgMjAuNzA3MUM1LjEwNTM2IDIwLjUxOTYgNSAyMC4yNjUyIDUgMjBWNEM1IDMuNzM0NzggNS4xMDUzNiAzLjQ4MDQzIDUuMjkyODkgMy4yOTI4OUM1LjQ4MDQzIDMuMTA1MzYgNS43MzQ3OCAzIDYgM0gxMlY5QzEyIDkuNTUyMjggMTIuNDQ3NyAxMCAxMyAxMEgxOVYxMy41NzkyTDIxIDExLjU3OTJWOUMyMSA4LjczNDc4IDIwLjg5NDYgOC40ODA0MyAyMC43MDcxIDguMjkyODlMMTMuNzA3MSAxLjI5Mjg5QzEzLjUxOTYgMS4xMDUzNiAxMy4yNjUyIDEgMTMgMUg2Wk0xNy41ODU4IDhMMTQgNC40MTQyMVY4SDE3LjU4NThaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMC4wNzc5IDExLjUwMTRDMjAuMjM2OSAxMS4zNDI0IDIwLjQyNTYgMTEuMjE2MyAyMC42MzMzIDExLjEzMDNDMjAuODQwOSAxMS4wNDQzIDIxLjA2MzUgMTEgMjEuMjg4MyAxMUMyMS41MTMxIDExIDIxLjczNTcgMTEuMDQ0MyAyMS45NDM0IDExLjEzMDNDMjIuMTUxIDExLjIxNjMgMjIuMzM5NyAxMS4zNDI0IDIyLjQ5ODcgMTEuNTAxNEMyMi42NTc2IDExLjY2MDMgMjIuNzgzNyAxMS44NDkgMjIuODY5OCAxMi4wNTY3QzIyLjk1NTggMTIuMjY0NCAyMy4wMDAxIDEyLjQ4NyAyMy4wMDAxIDEyLjcxMTdDMjMuMDAwMSAxMi45MzY1IDIyLjk1NTggMTMuMTU5MSAyMi44Njk4IDEzLjM2NjhDMjIuNzgzNyAxMy41NzQ1IDIyLjY1NzYgMTMuNzYzMiAyMi40OTg3IDEzLjkyMjFMMTUuMzI4NiAyMi4wOTIzTDEyIDIzLjAwMDFMMTIuOTA3OCAxOS42NzE1TDIwLjA3NzkgMTEuNTAxNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS42XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXRpdGxlIGZ3LWJvbGQgXCI+UmV2aWV3ICYgU3VibWl0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlRyYXNoLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6TWVudSBpdGVtLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLWVuZDo6TWVudS0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgY29sLWxnLTkgY29sLXhsLTkgY29sLXh4bC05XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci1ib3R0b20tMFwiPlxyXG4gICAgICAgICAgICAgICAgPGgxXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLWhlYWRpbmcgZC1mbGV4IHRleHQtZGFyayBmdy1ib2xkIGZzLTIgZmxleC1jb2x1bW4gIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXktMCBzdWItaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICAqbmdJZj1cInNlbGVjdCA9PT0gJ3N0b3JlX2luZm8nXCI+RW50ZXIgWW91ciBTdG9yZSBEZXRhaWxzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ID09PSAnY29uZmlnJ1wiPkVudGVyIFlvdXIgU3RvcmUgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdCA9PT0gJ2NvbnRhY3QnXCI+RW50ZXIgUHJpbWFyeSBTUE9DIGRldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3QgPT09ICdyZXZpZXcnXCI+UmV2aWV3ICYgc3VibWl0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJzZWxlY3QgIT09ICdjb250YWN0J1wiIGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkQWx0U3BvYygpXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LXByaW1hcnkxIGJ0bi1zbVwiPjxzdmcgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE4IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjcgMy41QzIuNyAyLjU3MTc0IDMuMDc5MjggMS42ODE1IDMuNzU0NDIgMS4wMjUxM0M0LjQyOTU1IDAuMzY4NzQ5IDUuMzQ1MjIgMCA2LjMgMEM3LjI1NDc4IDAgOC4xNzA0NSAwLjM2ODc0OSA4Ljg0NTU4IDEuMDI1MTNDOS41MjA3MiAxLjY4MTUgOS45IDIuNTcxNzQgOS45IDMuNUM5LjkgNC40MjgyNiA5LjUyMDcyIDUuMzE4NSA4Ljg0NTU4IDUuOTc0ODdDOC4xNzA0NSA2LjYzMTI1IDcuMjU0NzggNyA2LjMgN0M1LjM0NTIyIDcgNC40Mjk1NSA2LjYzMTI1IDMuNzU0NDIgNS45NzQ4N0MzLjA3OTI4IDUuMzE4NSAyLjcgNC40MjgyNiAyLjcgMy41Wk0wIDEzLjE4NzlDMCAxMC40OTQ1IDIuMjQ0MzcgOC4zMTI1IDUuMDE0NjkgOC4zMTI1SDcuNTg1MzFDMTAuMzU1NiA4LjMxMjUgMTIuNiAxMC40OTQ1IDEyLjYgMTMuMTg3OUMxMi42IDEzLjYzNjMgMTIuMjI1OSAxNCAxMS43NjQ3IDE0SDAuODM1MzEyQzAuMzc0MDYzIDE0IDAgMTMuNjM2MyAwIDEzLjE4NzlaTTE0LjE3NSA4LjUzMTI1VjYuNzgxMjVIMTIuMzc1QzEyLjAwMDkgNi43ODEyNSAxMS43IDYuNDg4NjcgMTEuNyA2LjEyNUMxMS43IDUuNzYxMzMgMTIuMDAwOSA1LjQ2ODc1IDEyLjM3NSA1LjQ2ODc1SDE0LjE3NVYzLjcxODc1QzE0LjE3NSAzLjM1NTA4IDE0LjQ3NTkgMy4wNjI1IDE0Ljg1IDMuMDYyNUMxNS4yMjQxIDMuMDYyNSAxNS41MjUgMy4zNTUwOCAxNS41MjUgMy43MTg3NVY1LjQ2ODc1SDE3LjMyNUMxNy42OTkxIDUuNDY4NzUgMTggNS43NjEzMyAxOCA2LjEyNUMxOCA2LjQ4ODY3IDE3LjY5OTEgNi43ODEyNSAxNy4zMjUgNi43ODEyNUgxNS41MjVWOC41MzEyNUMxNS41MjUgOC44OTQ5MiAxNS4yMjQxIDkuMTg3NSAxNC44NSA5LjE4NzVDMTQuNDc1OSA5LjE4NzUgMTQuMTc1IDguODk0OTIgMTQuMTc1IDguNTMxMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPkFkZCBBbHRlcm5hdGUgU1BPQzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTFcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic3RvcmVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdG9yZSBJbmZvIFN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJzZWxlY3QgIT09ICdzdG9yZV9pbmZvJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RvcmVOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0b3JlTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInN0b3JlTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBOYW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZUNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdG9yZSBDb2RlIC8gUmVmIENvZGUgKG9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0b3JlQ29kZVwiIGZvcm1Db250cm9sTmFtZT1cInN0b3JlQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYnVzaW5lc3NUeXBlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QnVzaW5lc3MgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgaWQ9XCJidXNpbmVzc1R5cGVcIiBmb3JtQ29udHJvbE5hbWU9XCJidXNpbmVzc1R5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkNPQ09cIj5DT0NPPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJDT0ZPXCI+Q09GTzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRk9GT1wiPkZPRk88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkZPQ09cIj5GT0NPPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZVR5cGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdG9yZSBUeXBlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBpZD1cInN0b3JlVHlwZVwiIGZvcm1Db250cm9sTmFtZT1cInN0b3JlVHlwZV90eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJIaWdoIFN0cmVldFwiPkhpZ2ggU3RyZWV0PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJNYWxsIFN0b3JlXCI+TWFsbCBTdG9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiS2lvc2tcIj5LaW9zazwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1iLTVcIiAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlID09PSAnTWFsbCBTdG9yZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibWFsbE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbnRlciBNYWxsIE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJtYWxsTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInN0b3JlVHlwZV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX25hbWUnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV9uYW1lJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX25hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFsbCBOYW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhZGRyZXNzXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBMaW5lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc1wiIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NcIiAjcGxhY2VzUmVmPVwibmd4LXBsYWNlc1wiIG5neC1ncC1hdXRvY29tcGxldGUgKG9uQWRkcmVzc0NoYW5nZSk9XCJoYW5kbGVBZGRyZXNzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY291bnRyeVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvdW50cnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb3VudHJ5XCIgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnY291bnRyeScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRyeSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdGF0ZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0YXRlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnc3RhdGUnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNpdHlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5DaXR5IC8gVG93bjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnY2l0eScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ2NpdHknKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnY2l0eScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaXR5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBpbmNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaW4gLyBaaXAgQ29kZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBpbmNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJwaW5jb2RlXCIgbWF4bGVuZ3RoPVwiNlwiIG1pbmxlbmd0aD1cIjZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgncGluY29kZScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGluY29kZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMyBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtM1wiIChjbGljayk9XCJuYXZpZ2F0ZVRvQWRkU3RvcmUoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9Db25maWd1cmF0aW9uKClcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdG9yZSBJbmZvIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdG9yZSBDb25maWd1cmF0aW9uIFN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJzZWxlY3QgIT09ICdjb25maWcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInRpbWVab25lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+VGltZSBab25lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ0aW1lWm9uZVwiIGZvcm1Db250cm9sTmFtZT1cInRpbWVab25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCd0aW1lWm9uZScpPy50b3VjaGVkfVwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgaWQ9XCJ0aW1lWm9uZVwiIGZvcm1Db250cm9sTmFtZT1cInRpbWVab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0aW1lem9uZSBvZiB0aW1lem9uZXNcIiBbdmFsdWVdPVwidGltZXpvbmVcIj57eyB0aW1lem9uZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCd0aW1lWm9uZScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWUgWm9uZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5vT2ZDYW1lcmFzXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Tm8gb2YgQ2FtZXJhczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIm5vT2ZDYW1lcmFzXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2FtZXJhc1wiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ2NhbWVyYXMnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBvZiBDYW1lcmFzIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZU9wZW5UaW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgT3BlbiBUaW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRpbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVPcGVuVGltZVwiIGZvcm1Db250cm9sTmFtZT1cIm9wZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnb3BlbicpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ29wZW4nKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIE9wZW4gVGltZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZUNsb3NlVGltZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlIENsb3NlIFRpbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGltZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdG9yZUNsb3NlVGltZVwiIGZvcm1Db250cm9sTmFtZT1cImNsb3NlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnY2xvc2UnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy50b3VjaGVkIHx8IHN0b3JlRm9ybS5oYXNFcnJvcignaW52YWxpZFRpbWVSYW5nZScpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnY2xvc2UnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgQ2xvc2UgVGltZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cIm15LTJcIiAqbmdJZj1cInN0b3JlRm9ybS5oYXNFcnJvcignaW52YWxpZFRpbWVSYW5nZScpICYmIChzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/LnRvdWNoZWQgfHwgc3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udG91Y2hlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbmluZyB0aW1lIG11c3QgYmUgYmVmb3JlIGNsb3NpbmcgdGltZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kIG10LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMyBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtM1wiIChjbGljayk9XCJuYXZpZ2F0ZVRvQWRkU3RvcmUoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImdvVG9Db250YWN0KClcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdG9yZSBDb25maWd1cmF0aW9uIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdG9yZSBDb250YWN0IFN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJzZWxlY3QgIT09ICdjb250YWN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJzcG9jRGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNwb2NEZXRhaWwgb2YgZ2V0c3BvY0RldGFpbHNDb250cm9scygpOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSE9PTBcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIGZzLTRcIj5BbHRlcm5hdGUgU1BPQyB7e2l9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiZGVsQWx0U3BvYygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjI1MF8zMDY1MClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi41IDEzLjk5OThIMTQuMTY2N00xNC4xNjY3IDEzLjk5OThIMjcuNU0xNC4xNjY3IDEzLjk5OThWMjUuNjY2NUMxNC4xNjY3IDI2LjEwODUgMTQuMzQyMyAyNi41MzI1IDE0LjY1NDggMjYuODQ1QzE0Ljk2NzQgMjcuMTU3NiAxNS4zOTEzIDI3LjMzMzIgMTUuODMzMyAyNy4zMzMySDI0LjE2NjdDMjQuNjA4NyAyNy4zMzMyIDI1LjAzMjYgMjcuMTU3NiAyNS4zNDUyIDI2Ljg0NUMyNS42NTc3IDI2LjUzMjUgMjUuODMzMyAyNi4xMDg1IDI1LjgzMzMgMjUuNjY2NVYxMy45OTk4SDE0LjE2NjdaTTE2LjY2NjcgMTMuOTk5OFYxMi4zMzMyQzE2LjY2NjcgMTEuODkxMSAxNi44NDIzIDExLjQ2NzIgMTcuMTU0OCAxMS4xNTQ3QzE3LjQ2NzQgMTAuODQyMSAxNy44OTEzIDEwLjY2NjUgMTguMzMzMyAxMC42NjY1SDIxLjY2NjdDMjIuMTA4NyAxMC42NjY1IDIyLjUzMjYgMTAuODQyMSAyMi44NDUyIDExLjE1NDdDMjMuMTU3NyAxMS40NjcyIDIzLjMzMzMgMTEuODkxMSAyMy4zMzMzIDEyLjMzMzJWMTMuOTk5OE0xOC4zMzMzIDE4LjE2NjVWMjMuMTY2NU0yMS42NjY3IDE4LjE2NjVWMjMuMTY2NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjI1MF8zMDY1MFwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjI1MF8zMDY1MFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjI1MF8zMDY1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb250YWN0TmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvbnRhY3ROYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3BvY0RldGFpbC5nZXQoJ25hbWUnKT8uaW52YWxpZCAmJiBzcG9jRGV0YWlsLmdldCgnbmFtZScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnbmFtZScpPy50b3VjaGVkICYmIHNwb2NEZXRhaWwuZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbnRhY3RFbWFpbFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkVtYWlsPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY29udGFjdEVtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm49XCJeKFthLXpBLVowLTlfXFwtXFwuXSspQFthLXowLTktXSsoXFwuW2EtejAtOS1dKykqKFxcLlthLXpBLVpdezIsM30pJFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3BvY0RldGFpbC5nZXQoJ2VtYWlsJyk/LmludmFsaWQgJiYgc3BvY0RldGFpbC5nZXQoJ2VtYWlsJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2VtYWlsJyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtYWlsIG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGxvbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtYWlsIG11c3QgYmUgbm90IG1vcmUgdGhhbiAxMDAgY2hhcmFjdGVycyBsb25nLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdE51bWJlclwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvbnRhY3QgTnVtYmVyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb250YWN0TnVtYmVyXCIgbWlubGVuZ3RoPVwiMTBcIiBtYXhsZW5ndGg9XCIxM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiBmb3JtQ29udHJvbE5hbWU9XCJjb250YWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzcG9jRGV0YWlsLmdldCgnY29udGFjdCcpPy5pbnZhbGlkICYmIHNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3QgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnY29udGFjdCcpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdCBtdXN0IGJlIGF0IGxlYXN0IDEwIGRpZ2l0cy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250YWN0IG11c3QgYmUgbm90IG1vcmUgdGhhbiAxMyBkaWdpdHMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNpZ25hdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRlc2lnbmF0aW9uIChvcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImRlc2lnbmF0aW9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzaWduYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInN1Yi1oZWFkXCI+RW50ZXIgU3RvcmUgQ29ubmVjdGlvbiBEZXRhaWxzPC9oMT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFueURlc2tJRFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFueURlc2sgSUQgLyBUZWFtVmlld2VyIElEIChvcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhbnlEZXNrSURcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZUNvbm5lY3Rpb25JZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMyBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtM1wiIChjbGljayk9XCJuYXZpZ2F0ZVRvQWRkU3RvcmUoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImdvVG9SZXZpZXcoKVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIENvbnRhY3QgRW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJldmlldyAmIFN1Ym1pdCBTdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwic2VsZWN0ICE9PSAncmV2aWV3J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNCBmdy1ib2xkIHRleHQtaG92ZXItcHJpbWFyeSBzdWItdGl0bGUgdGV4dC1ncmF5LTYwMCBtLTAgY3Vyc29yLXBvaW50ZXJcIj5TdG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+U3RvcmUgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZGVyIGZzLTYgdGV4dC1yZXZpZXctdmFsXCI+e3tzdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+U3RvcmUgQ29kZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGZ2LXJvd1wiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3N0b3JlQ29kZScpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdzdG9yZUNvZGUnKT8udmFsdWU6ICdOQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPkJ1c2luZXNzIFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LXJldmlldy12YWwgdGV4dC1ob3Zlci1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRm9ybS5nZXQoJ2J1c2luZXNzVHlwZScpPy52YWx1ZSA/IHN0b3JlRm9ybS5nZXQoJ2J1c2luZXNzVHlwZScpPy52YWx1ZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTkEnfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+U3RvcmUgVHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlBob25lIG51bWJlciBtdXN0IGJlIGFjdGl2ZVwiIGNsYXNzPVwiZmFzIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSBtcy0xIGZzLTdcIj48L2k+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZGVyIGZzLTYgbWUtMiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3VjY2Vzc1wiPlZlcmlmaWVkPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlICYmIHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlID09PSAnTWFsbCBTdG9yZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+IE1hbGwgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZGVyIGZzLTYgdGV4dC1yZXZpZXctdmFsXCI+e3tzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy52YWx1ZSA6ICdOQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPkFkZHJlc3M8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udmFsdWUgPyBzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnZhbHVlIDogJ05BJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3cgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+QWxsb3cgQ2hhbmdlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW4gY2xhc3M9XCJmdy1ib2xkIGZzLTZcIj5ZZXM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTQgZnctYm9sZCB0ZXh0LWhvdmVyLXByaW1hcnkgc3ViLXRpdGxlIHRleHQtZ3JheS02MDAgbS0wIGN1cnNvci1wb2ludGVyXCI+U3RvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+VGltZSBab25lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5ObyBvZiBDYW1lcmFzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZnYtcm93XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPlN0b3JlIE9wZW4gVGltZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbCB0ZXh0LWhvdmVyLXByaW1hcnlcIj57e3N0b3JlRm9ybS5nZXQoJ29wZW4nKT8udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RvcmVGb3JtLmdldCgnb3BlbicpPy52YWx1ZSA6ICdOQSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5TdG9yZSBDbG9zZSBUaW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTQgZnctYm9sZCB0ZXh0LWhvdmVyLXByaW1hcnkgc3ViLXRpdGxlIHRleHQtZ3JheS02MDAgbS0wIGN1cnNvci1wb2ludGVyXCI+Q29udGFjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHJvdyBweC05IHB0LTMgcGItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wteGwtOSBjb2wteHhsLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgZ3ktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmcy02IGZ3LWJvbGRcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJzcG9jRGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNwb2Mgb2YgZ2V0c3BvY0RldGFpbHNDb250cm9scygpO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+U3BvYyB7e2krMX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTUuNzVWMTQuMjVDMTUgMTMuNDU0NCAxNC42ODM5IDEyLjY5MTMgMTQuMTIxMyAxMi4xMjg3QzEzLjU1ODcgMTEuNTY2MSAxMi43OTU2IDExLjI1IDEyIDExLjI1SDZDNS4yMDQzNSAxMS4yNSA0LjQ0MTI5IDExLjU2NjEgMy44Nzg2OCAxMi4xMjg3QzMuMzE2MDcgMTIuNjkxMyAzIDEzLjQ1NDQgMyAxNC4yNVYxNS43NU0xMiA1LjI1QzEyIDYuOTA2ODUgMTAuNjU2OSA4LjI1IDkgOC4yNUM3LjM0MzE1IDguMjUgNiA2LjkwNjg1IDYgNS4yNUM2IDMuNTkzMTUgNy4zNDMxNSAyLjI1IDkgMi4yNUMxMC42NTY5IDIuMjUgMTIgMy41OTMxNSAxMiA1LjI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8ubmFtZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5uYW1lIDogJ05BJyB9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzFfODAzNzMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNi4wMDAwMlY5Ljc1MDAyQzEyIDEwLjM0NjggMTIuMjM3MSAxMC45MTkxIDEyLjY1OSAxMS4zNDFDMTMuMDgxIDExLjc2MyAxMy42NTMzIDEyIDE0LjI1IDEyQzE0Ljg0NjcgMTIgMTUuNDE5IDExLjc2MyAxNS44NDEgMTEuMzQxQzE2LjI2MyAxMC45MTkxIDE2LjUgMTAuMzQ2OCAxNi41IDkuNzUwMDJWOS4wMDAwMkMxNi40OTk5IDcuMzA3MjkgMTUuOTI3MiA1LjY2NDM4IDE0Ljg3NSA0LjMzODQyQzEzLjgyMjcgMy4wMTI0NiAxMi4zNTI5IDIuMDgxNDQgMTAuNzA0NSAxLjY5Njc1QzkuMDU2MDUgMS4zMTIwNSA3LjMyNTk2IDEuNDk2MyA1Ljc5NTUyIDIuMjE5NTVDNC4yNjUwOCAyLjk0Mjc5IDMuMDI0MzEgNC4xNjI0OSAyLjI3NDk1IDUuNjgwMzJDMS41MjU2IDcuMTk4MTQgMS4zMTE3MyA4LjkyNDgzIDEuNjY4MTMgMTAuNTc5NkMyLjAyNDUzIDEyLjIzNDQgMi45MzAyNCAxMy43MTk5IDQuMjM3OTggMTQuNzk0N0M1LjU0NTcyIDE1Ljg2OTUgNy4xNzg1OCAxNi40NzAzIDguODcxMDYgMTYuNDk5NEMxMC41NjM1IDE2LjUyODUgMTIuMjE2MSAxNS45ODQyIDEzLjU2IDE0Ljk1NU0xMiA5LjAwMDAyQzEyIDEwLjY1NjkgMTAuNjU2OSAxMiA5LjAwMDAxIDEyQzcuMzQzMTUgMTIgNi4wMDAwMSAxMC42NTY5IDYuMDAwMDEgOS4wMDAwMkM2LjAwMDAxIDcuMzQzMTcgNy4zNDMxNSA2LjAwMDAyIDkuMDAwMDEgNi4wMDAwMkMxMC42NTY5IDYuMDAwMDIgMTIgNy4zNDMxNyAxMiA5LjAwMDAyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMV84MDM3M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8uZW1haWwgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8uZW1haWwgOiAnTkEnIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMV84MDM3NilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi41MDAxIDEyLjY5MDFWMTQuOTQwMUMxNi41MDA5IDE1LjE0ODkgMTYuNDU4MSAxNS4zNTU3IDE2LjM3NDUgMTUuNTQ3MUMxNi4yOTA4IDE1LjczODUgMTYuMTY4IDE1LjkxMDMgMTYuMDE0MSAxNi4wNTE1QzE1Ljg2MDIgMTYuMTkyNyAxNS42Nzg1IDE2LjMwMDIgMTUuNDgwNiAxNi4zNjcxQzE1LjI4MjggMTYuNDM0IDE1LjA3MzEgMTYuNDU4OSAxNC44NjUxIDE2LjQ0MDFDMTIuNTU3MiAxNi4xODkzIDEwLjM0MDMgMTUuNDAwNyA4LjM5MjU3IDE0LjEzNzZDNi41ODA0NCAxMi45ODYxIDUuMDQ0MDcgMTEuNDQ5NyAzLjg5MjU3IDkuNjM3NTdDMi42MjUwNiA3LjY4MDk4IDEuODM2MjUgNS40NTMzMiAxLjU5MDA3IDMuMTM1MDdDMS41NzEzMyAyLjkyNzY3IDEuNTk1OTggMi43MTg2NCAxLjY2MjQ1IDIuNTIxMjlDMS43Mjg5MiAyLjMyMzk0IDEuODM1NzUgMi4xNDI1OSAxLjk3NjE1IDEuOTg4NzlDMi4xMTY1NCAxLjgzNDk5IDIuMjg3NDMgMS43MTIxIDIuNDc3OTIgMS42Mjc5NkMyLjY2ODQgMS41NDM4MiAyLjg3NDMzIDEuNTAwMjcgMy4wODI1NyAxLjUwMDA3SDUuMzMyNTdDNS42OTY1NSAxLjQ5NjQ5IDYuMDQ5NDIgMS42MjUzOCA2LjMyNTM5IDEuODYyNzJDNi42MDEzNyAyLjEwMDA2IDYuNzgxNjMgMi40Mjk2NiA2LjgzMjU3IDIuNzkwMDdDNi45Mjc1NCAzLjUxMDEyIDcuMTAzNjYgNC4yMTcxMiA3LjM1NzU3IDQuODk3NTdDNy40NTg0OCA1LjE2NjAyIDcuNDgwMzIgNS40NTc3NiA3LjQyMDUgNS43MzgyM0M3LjM2MDY5IDYuMDE4NzEgNy4yMjE3MiA2LjI3NjE2IDcuMDIwMDcgNi40ODAwN0w2LjA2NzU3IDcuNDMyNTdDNy4xMzUyNCA5LjMxMDIzIDguNjg5OTEgMTAuODY0OSAxMC41Njc2IDExLjkzMjZMMTEuNTIwMSAxMC45ODAxQzExLjcyNCAxMC43Nzg0IDExLjk4MTQgMTAuNjM5NSAxMi4yNjE5IDEwLjU3OTZDMTIuNTQyNCAxMC41MTk4IDEyLjgzNDEgMTAuNTQxNyAxMy4xMDI2IDEwLjY0MjZDMTMuNzgzIDEwLjg5NjUgMTQuNDkgMTEuMDcyNiAxNS4yMTAxIDExLjE2NzZDMTUuNTc0NCAxMS4yMTkgMTUuOTA3MSAxMS40MDI1IDE2LjE0NSAxMS42ODMyQzE2LjM4MjggMTEuOTYzOSAxNi41MDkyIDEyLjMyMjMgMTYuNTAwMSAxMi42OTAxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMV84MDM3NlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8uY29udGFjdCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5jb250YWN0IDogJ05BJyB9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkFueURlc2sgSURcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7c3RvcmVGb3JtLmdldCgnc3RvcmVDb25uZWN0aW9uSWQnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnc3RvcmVDb25uZWN0aW9uSWQnKT8udmFsdWUgOiAnTkEnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnb1RvU3RvcmVJbmZvKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCI+RWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJzdG9yZUZvcm0uaW52YWxpZFwiIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5TdWJtaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJldmlldyAmIFN1Ym1pdCBFbmQgLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|