@posiwise/smart-crm 0.0.44 → 0.0.46
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/private/components/smart-crm-accounts/smart-crm-account-invoices/smart-crm-account-invoices.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-accounts.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions.component.mjs +2 -3
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stages.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-details/smart-crm-contact-details.component.mjs +13 -4
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-info/smart-crm-contact-info.component.mjs +1 -2
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contacts.component.mjs +7 -4
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-account-insight/smart-crm-account-insight.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads-details/smart-crm-leads-details.component.mjs +13 -4
- package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-list.component.mjs +1 -1
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-details/smart-crm-opportunities-details.component.mjs +10 -4
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-list.component.mjs +1 -1
- package/fesm2022/posiwise-smart-crm.mjs +48 -25
- package/fesm2022/posiwise-smart-crm.mjs.map +1 -1
- package/lib/private/components/smart-crm-contacts/smart-crm-contact-details/smart-crm-contact-details.component.d.ts +1 -1
- package/lib/private/components/smart-crm-leads/smart-crm-leads-details/smart-crm-leads-details.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -285,7 +285,6 @@ export class SmartCrmContactInfoComponent extends AppBaseComponent {
|
|
|
285
285
|
this.crmService
|
|
286
286
|
.getAccountDetail(this.subscription?.id, response.crm_account_id)
|
|
287
287
|
.subscribe(response => {
|
|
288
|
-
console.log(this.accounts, response);
|
|
289
288
|
this.accounts = [
|
|
290
289
|
...this.accounts.filter(account => account.id !== response.id),
|
|
291
290
|
response
|
|
@@ -479,4 +478,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
479
478
|
type: Inject,
|
|
480
479
|
args: [DOCUMENT]
|
|
481
480
|
}] }] });
|
|
482
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLWNvbnRhY3QtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NtYXJ0LWNybS9zcmMvbGliL3ByaXZhdGUvY29tcG9uZW50cy9zbWFydC1jcm0tY29udGFjdHMvc21hcnQtY3JtLWNvbnRhY3QtaW5mby9zbWFydC1jcm0tY29udGFjdC1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc21hcnQtY3JtL3NyYy9saWIvcHJpdmF0ZS9jb21wb25lbnRzL3NtYXJ0LWNybS1jb250YWN0cy9zbWFydC1jcm0tY29udGFjdC1pbmZvL3NtYXJ0LWNybS1jb250YWN0LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBRUgsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEYsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBMEQsWUFBWSxFQUFFLE1BQU0sY0FB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Q0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxxQ0FBcUM7UUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkYsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELHVCQUF1QjtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFO1lBQ2hGLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1NBQzlDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUSxXQUFXO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQWxnQlEsNEJBQTRCLDRLQXdEekIsUUFBUTttR0F4RFgsNEJBQTRCLHdGQ3BDekMsaXkxQkEyaUJBOzs0RkR2Z0JhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSwyQkFBMkI7OzBCQTREaEMsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgRm9ybUhlbHBlclNlcnZpY2UsIEdlb1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7XG4gICAgQ291bnRyeSxcbiAgICBET0NVTUVOVF9UWVBFX0VYVCxcbiAgICBTdWJzY3JpcHRpb24sXG4gICAgVE9LRU5fSEVBREVSX0tFWVxufSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IENSTV9BQ0NPVU5UX0ZJTEVTX1BBVEgsIENybVNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2Uvc21hcnQtY3JtLXNoYXJlZCc7XG5cbmltcG9ydCB7IENybUFjY291bnQgfSBmcm9tICdsaWJzL3NtYXJ0LWNybS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvY3JtLWFjY291bnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENybUNvbnRhY3QgfSBmcm9tICdsaWJzL3NtYXJ0LWNybS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvY3JtLWNvbnRhY3QuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gICAgT3Bwb3J0dW5pdHlDb21tZW50LFxuICAgIFNtYXJ0Q3JtQWN0aW9uXG59IGZyb20gJ2xpYnMvc21hcnQtY3JtL3NyYy9saWIvc2hhcmVkL2ludGVyZmFjZS9zbWFydC1jcm0tbW9kdWxlLmludGVyZmFjZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBVcGxvYWRlck9wdGlvbnMsIFVwbG9hZEZpbGUsIFVwbG9hZElucHV0LCBVcGxvYWRPdXRwdXQsIFVwbG9hZFN0YXR1cyB9IGZyb20gJ25neC11cGxvYWRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlU3RydWN0LCBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuaW1wb3J0IHsgQXBwU21hcnRDcm0gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3NtYXJ0LWNybS5tb2RlbCc7XG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc21hcnQtY3JtLWNvbnRhY3QtaW5mbycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWNybS1jb250YWN0LWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NtYXJ0LWNybS1jb250YWN0LWluZm8uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTbWFydENybUNvbnRhY3RJbmZvQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBjb3VudHJpZXMkOiBPYnNlcnZhYmxlPENvdW50cnlbXT47XG4gICAgYWN0aW9uQ29udHJvbHM6IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgYWJvdXRDb250cm9sczogVW50eXBlZEZvcm1Hcm91cDtcblxuICAgIGNvbnRhY3RJZDogbnVtYmVyO1xuICAgIGFjY291bnRJZDogbnVtYmVyO1xuICAgIHVzZXJJZDogbnVtYmVyO1xuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBkYXRhOiBDcm1Db250YWN0O1xuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgYWN0aW9uczogU21hcnRDcm1BY3Rpb25bXSA9IFtdO1xuICAgIGZpbHRlcmVkQWNjb3VudHM6IENybUFjY291bnRbXSA9IFtdO1xuICAgIGFjY291bnRzID0gW107XG4gICAgY29udGFjdENvbW1lbnRzID0gW107XG4gICAgY29udGFjdFZlcnNpb25pbmcgPSBbXTtcblxuICAgIG1vZGVsOiBOZ2JEYXRlU3RydWN0O1xuICAgIGRhdGU6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyIH07XG5cbiAgICBvcHRpb25zOiBVcGxvYWRlck9wdGlvbnM7XG4gICAgdXBsb2FkSW5wdXQ6IEV2ZW50RW1pdHRlcjxVcGxvYWRJbnB1dD47XG4gICAgZmlsZXM6IFVwbG9hZEZpbGVbXTtcbiAgICB0b2tlbjogc3RyaW5nO1xuXG4gICAgcG90ZW50aWFscyA9IFsnbG93JywgJ21lZGl1bScsICdoaWdoJ107XG4gICAgbGFiZWxzID0gW107XG5cbiAgICBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBidXR0b25CdXN5ID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIGlzRm9ybUVkaXQgPSB0cnVlO1xuICAgIGlzTG9hZGVkID0gZmFsc2U7XG4gICAgaXNEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgaGFzQWNjZXNzID0gZmFsc2U7XG4gICAgdXBkYXRpbmcgPSBmYWxzZTtcbiAgICBidXR0b25EaXNhYmxlOiBib29sZWFuO1xuICAgIGRhbmdlckNvbG9yOiBib29sZWFuO1xuICAgIHNob3dGdWxsQ29tbWVudCA9IGZhbHNlO1xuICAgIHN1Ym1pdEFjdGlvbiA9IGZhbHNlO1xuICAgIGRyYWdPdmVyOiBib29sZWFuO1xuXG4gICAgYWN0aW9uSWQ6IG51bWJlcjtcbiAgICBjb21tZW50SWQ6IG51bWJlcjtcblxuICAgIHJvdXRlcnMgPSBST1VURVJTO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjcm1TZXJ2aWNlOiBDcm1TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyOiBOZ2JDYWxlbmRhcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBnZW9TZXJ2aWNlOiBHZW9TZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgY29uY3VycmVuY3k6IDEsIG1heFVwbG9hZHM6IDMgfTtcbiAgICAgICAgdGhpcy51cGxvYWRJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8VXBsb2FkSW5wdXQ+KCk7XG4gICAgICAgIHRoaXMudG9rZW4gPSBidG9hKHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4oKSk7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scyA9IEFwcFNtYXJ0Q3JtLmdldENvbnRhY3RBY3Rpb25zRm9ybSh0aGlzLmlzRGlzYWJsZWQpO1xuICAgICAgICB0aGlzLmFib3V0Q29udHJvbHMgPSBBcHBTbWFydENybS5nZXRDb250YWN0c0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMkID0gdGhpcy5nZW9TZXJ2aWNlLmdldENvdW50cmllcygpO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRhY3RJZCA9IE51bWJlcihkYXRhWydpZCddKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2V0VXNlclN1YnNjcmlwdGlvbigpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uPy5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGVmYXVsdFZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWN0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29udGFjdENvbW1lbnRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzLmdldCgnY3JtX2NvbnRhY3RfaWQnKS5zZXRWYWx1ZSh0aGlzLmNvbnRhY3RJZCk7XG4gICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmNhbGVuZGFyLmdldFRvZGF5KCk7XG4gICAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMuZ2V0KCd3aGVuJykuc2V0VmFsdWUodGhpcy5tb2RlbCk7XG4gICAgICAgIHRoaXMudXNlclN0b3JlKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VySWQgPSByZXMuaWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ293bmVyX2lkJykuc2V0VmFsdWUocmVzLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25EYXRlU2VsZWN0ZWQoKTtcbiAgICAgICAgdGhpcy5nZXRDb250YWN0VmVyc2lvbigpO1xuICAgIH1cblxuICAgIGhhbmRsZUFkZHJlc3NDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5hYm91dENvbnRyb2xzLmdldCgnbG9jYXRpb24nKS5zZXRWYWx1ZShldmVudC5mb3JtYXR0ZWRfYWRkcmVzcyk7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFZhbHVlcyhpZCkge1xuICAgICAgICB0aGlzLmNybVNlcnZpY2UuZ2V0Q3JtQ29udGFjdERlZmF1bHRWYWx1ZXMoaWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSByZXNbJ2xhYmVscyddO1xuICAgICAgICAgICAgbGFiZWwuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBjb250YWN0IHZlcnNpb25zICovXG4gICAgcHJpdmF0ZSBnZXRDb250YWN0VmVyc2lvbigpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0Q29udGFjdFZlcnNpb24odGhpcy5zdWJzY3JpcHRpb24/LmlkLCB0aGlzLmNvbnRhY3RJZCwgJ0NybUNvbnRhY3QnKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWN0VmVyc2lvbmluZyA9IHJlc3BvbnNlLnZlcnNpb25zO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd0VkaXRDb250cm9scyhldmVudCkge1xuICAgICAgICBjb25zdCBjb21tZW50cyA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgICAgICdjYXJkLWhlYWRlcidcbiAgICAgICAgKSBhcyBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ICYgSXRlcmFibGU8RWxlbWVudD47XG4gICAgICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50cykge1xuICAgICAgICAgICAgY29tbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93LWNvbnRyb2xzJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5jbG9zZXN0KCcuY2FyZC1oZWFkZXInKS5jbGFzc0xpc3QuYWRkKCdzaG93LWNvbnRyb2xzJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDb21tZW50KGl0ZW0pIHtcbiAgICAgICAgY29uc3QgY29tbWVudE9iaiA9IHtcbiAgICAgICAgICAgIGNvbW1lbnQ6IGl0ZW0uY29tbWVudCxcbiAgICAgICAgICAgIGNvbXBsZXRlZDogaXRlbS5jb21wbGV0ZWQsXG4gICAgICAgICAgICBjYW5jZWxsZWQ6IGl0ZW0uY2FuY2VsbGVkLFxuICAgICAgICAgICAgY3JtX2FjY291bnRfaWQ6IGl0ZW0uY3JtX2FjY291bnRfaWRcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlQWNjb3VudENvbW1lbnQodGhpcy5zdWJzY3JpcHRpb24/LmlkLCBpdGVtLmlkLCBjb21tZW50T2JqKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdjb21tZW50IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RWRpdENvbnRyb2xzKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDb250YWN0Q29tbWVudHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dEYXRlUGlja2VyKGV2ZW50LCBpZCkge1xuICAgICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzLmdldCgnd2hlbicpLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgY29uc3QgYWN0aW9uQnV0dG9ucyA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgICAgICdhY3Rpb24tYnRuJ1xuICAgICAgICApIGFzIEhUTUxDb2xsZWN0aW9uT2Y8RWxlbWVudD4gJiBJdGVyYWJsZTxFbGVtZW50PjtcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgYWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ2NybV9hY3Rpb25faWQnKS5zZXRWYWx1ZShpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBsaXN0IG9mIGFjY291bnRzIGJ5IHN1YnNjcmlwdGlvbklkXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRBY2NvdW50c0J5U3Vic2NyaXB0aW9uKCkge1xuICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBY2NvdW50c0J5U3Vic2NyaXB0aW9uKHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgeyBwYWdlX3NpemU6IHRoaXMuUEFHRV9TSVpFIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mbygpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWNjb3VudHMgPSByZXMuYWNjb3VudHM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJvdXRDb250cm9scy5jb250cm9scztcbiAgICB9XG5cbiAgICBnZXQgYWN0aW9uRm9ybUNvbnRyb2xzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25Db250cm9scy5jb250cm9scztcbiAgICB9XG5cbiAgICB1cGRhdGVDb250YWN0SW5mbygpIHtcbiAgICAgICAgaWYgKHRoaXMuYWJvdXRDb250cm9scy5pbnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFib3V0Q29udHJvbHNcbiAgICAgICAgICAgICAgICAuZ2V0KCdjcm1fYWNjb3VudF9pZCcpXG4gICAgICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMuYWJvdXRDb250cm9scy5nZXQoJ2NybV9hY2NvdW50X2lkJykudmFsdWUuaWQpO1xuICAgICAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnVwZGF0ZUNvbnRhY3QodGhpcy5zdWJzY3JpcHRpb24/LmlkLCB0aGlzLmNvbnRhY3RJZCwgdGhpcy5hYm91dENvbnRyb2xzLnZhbHVlKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQ3JtLkNvbnRhY3RNZXNzYWdlLlVwZGF0ZWRNZXNzYWdlJylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0Zvcm1FZGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mbygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbnRhY3RDb21tZW50cygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0Q29udGFjdENvbW1lbnRzKHRoaXMuY29udGFjdElkLCB0aGlzLnN1YnNjcmlwdGlvbj8uaWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwPy5jcm1fYWNjb3VudF9hY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWN0Q29tbWVudHMgPSByZXNwLmNybV9hY2NvdW50X2FjdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWN0Q29tbWVudHMuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEud2hlbl9zaG9ydF9kYXRlID0gbW9tZW50KGRhdGEud2hlbikuZm9ybWF0KCdERC1NTU0tWVlZWScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZiA9IG1vbWVudChuZXcgRGF0ZShkYXRhLndoZW4pKS5kaWZmKG1vbWVudChuZXcgRGF0ZSgpKSwgJ2RheXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb21lbnQobmV3IERhdGUoZGF0YS53aGVuKSkgPCBtb21lbnQobmV3IERhdGUoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydkdWUnXSA9IGBPdmVyZHVlIGJ5ICR7TWF0aC5hYnMoZGlmZil9IGRheXNgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2NvbG9yJ10gPSB0aGlzLmRhbmdlckNvbG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydkdWUnXSA9IGBJbiAke2RpZmZ9IGRheXNgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2NvbG9yJ10gPSAhdGhpcy5kYW5nZXJDb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWN0Q29tbWVudHMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGEud2hlbikuZ2V0VGltZSgpIC0gbmV3IERhdGUoYi53aGVuKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dEZvcm1hdCA9ICdERC1NTU0tWVlZWSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdENvbW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtWyd3aGVuJ10gPSBtb21lbnQoaXRlbVsnd2hlbiddKS5mb3JtYXQoJ0RELU1NTS1ZWVlZJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtWyd5ZWFyJ10gPSBtb21lbnQoaXRlbVsnd2hlbiddLCBpbnB1dEZvcm1hdCkuZm9ybWF0KCdZWVlZJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydtb250aCddID0gbW9tZW50KGl0ZW1bJ3doZW4nXSwgaW5wdXRGb3JtYXQpLmZvcm1hdCgnTU0nKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZENhbmNlbGxlZEFjdGlvbnM6IE9wcG9ydHVuaXR5Q29tbWVudFtdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdENvbW1lbnRzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPT4gYWN0aW9uLmNvbXBsZXRlZCA9PT0gdHJ1ZSB8fCBhY3Rpb24uY2FuY2VsbGVkID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRDYW5jZWxsZWRBY3Rpb25zLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm90Q29tcGxldGVkQ2FuY2VsbGVkQWN0aW9uczogT3Bwb3J0dW5pdHlDb21tZW50W10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWN0Q29tbWVudHMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9PiBhY3Rpb24uY29tcGxldGVkID09PSBmYWxzZSAmJiBhY3Rpb24uY2FuY2VsbGVkID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWN0Q29tbWVudHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbm90Q29tcGxldGVkQ2FuY2VsbGVkQWN0aW9ucy5jb25jYXQoY29tcGxldGVkQ2FuY2VsbGVkQWN0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2F2ZSgpIHtcbiAgICAgICAgdGhpcy5zdWJtaXRBY3Rpb24gPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5hY3Rpb25Db250cm9scy5pbnZhbGlkKSB7XG4gICAgICAgICAgICBGb3JtSGVscGVyU2VydmljZS52YWxpZGF0ZUFsbEZvcm1GaWVsZHModGhpcy5hY3Rpb25Db250cm9scyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYWN0aW9uQ29udHJvbHMudmFsdWU7XG4gICAgICAgICAgICBkYXRhLndoZW4gPSBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQoZGF0YT8ud2hlbik7XG4gICAgICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgICAgICAucG9zdEFjY291bnRDb21tZW50KHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgZGF0YSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ2NvbW1lbnQnKS5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENvbnRhY3RDb21tZW50cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQ3JtLkNvbnRhY3RNZXNzYWdlLkNvbW1lbnRTdWJtaXR0ZWRNZXNzYWdlJylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdEFjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGF0ZVNlbGVjdGVkKCkge1xuICAgICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzLmdldCgnd2hlbicpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2hlbicpPy5bJ3ZhbHVlJ107XG4gICAgICAgICAgICBjb25zdCB0b2RheURhdGUgPSBtb21lbnQobmV3IERhdGUoKSkuZm9ybWF0KCdERC1NTU0tWVlZWScpO1xuICAgICAgICAgICAgaWYgKHRvZGF5RGF0ZSA8IHNlbGVjdGVkRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ2NvbXBsZXRlZCcpLmRpc2FibGUoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzLmdldCgnY29tcGxldGVkJykuc2V0VmFsdWUoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzLmdldCgnY29tcGxldGVkJykuZW5hYmxlKHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgYW5kIHNob3cgYWxsIHRoZSBhY3Rpb25zICovXG4gICAgZ2V0QWN0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldEFsbEFjdGlvbnModGhpcy5zdWJzY3JpcHRpb24/LmlkKS5zdWJzY3JpYmUocmVzcCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcD8uY3JtX2FjdGlvbnMgJiYgcmVzcC5jcm1fYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zID0gcmVzcC5jcm1fYWN0aW9ucy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkRpc2FibGUgPSB0aGlzLmFjdGlvbnMuZXZlcnkoXG4gICAgICAgICAgICAgICAgICAgIHggPT4geC52aXNpYmxlID09PSBmYWxzZSB8fCB4LnZpc2libGUgPT09IG51bGxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkRpc2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5oYXNBY2Nlc3MgPSB0aGlzLmhhc0FkbWluQWNjZXNzKHRoaXMuc3Vic2NyaXB0aW9uPy5pZCk7XG4gICAgICAgIHRoaXMuZ2V0QWNjb3VudHNCeVN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIGNvbnRhY3QgZGV0YWlscyBieSBJZCAqL1xuICAgIGdldFVzZXJJbmZvKCkge1xuICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRDb250YWN0QnlJZCh0aGlzLnN1YnNjcmlwdGlvbj8uaWQsIHRoaXMuY29udGFjdElkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hYm91dENvbnRyb2xzLnBhdGNoVmFsdWUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMuZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnBhdGNoVmFsdWUocmVzcG9uc2UuY3JtX2FjY291bnRfaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZ2V0QWNjb3VudERldGFpbCh0aGlzLnN1YnNjcmlwdGlvbj8uaWQsIHJlc3BvbnNlLmNybV9hY2NvdW50X2lkKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuYWNjb3VudHMsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjb3VudHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5hY2NvdW50cy5maWx0ZXIoYWNjb3VudCA9PiBhY2NvdW50LmlkICE9PSByZXNwb25zZS5pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFib3V0Q29udHJvbHMuZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnBhdGNoVmFsdWUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY2NvdW50SWQgPSByZXNwb25zZS5jcm1fYWNjb3VudF9pZDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIHNldCB0aGUgYWN0aW9uIGFzIGNvbXBsZXRlZCAqL1xuICAgIHNldEFzQ29tcGxldGVkT3JVbmNvbXBsZXRlZChpZCwgYWN0aW9uLCBjb21wbGV0ZWRPclVuY29tcGxldGVkKSB7XG4gICAgICAgIGNvbnN0IGFsZXJ0VGl0bGUgPSBjb21wbGV0ZWRPclVuY29tcGxldGVkID8gJ0luQ29tcGxldGVkJyA6ICdDb21wbGV0ZWQnO1xuXG4gICAgICAgIHJldHVybiBzd2FsXG4gICAgICAgICAgICAuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFsZXJ0VGl0bGUsXG4gICAgICAgICAgICAgICAgaHRtbDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBzZXQgYXMgJHthbGVydFRpdGxlfT9gLFxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbk9iaiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGFjdGlvbi5jb21tZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiAhY29tcGxldGVkT3JVbmNvbXBsZXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbGxlZDogYWN0aW9uLmNhbmNlbGxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNybV9hY2NvdW50X2lkOiBhY3Rpb24uY3JtX2FjY291bnRfaWRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAudXBkYXRlQWNjb3VudENvbW1lbnQodGhpcy5zdWJzY3JpcHRpb24/LmlkLCBpZCwgYWN0aW9uT2JqKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQ3JtLlNldHRpbmdzLlVwZGF0ZWRNZXNzYWdlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9ucy5zcGxpY2UoYWN0aW9uLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFjdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENvbnRhY3RDb21tZW50cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIHNldCB0aGUgYWN0aW9uIGFzIGNhbmNlbGxlZCAqL1xuICAgIHNldEFzQ2FuY2VsbGVkKGlkLCBhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHN3YWxcbiAgICAgICAgICAgIC5maXJlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NhbmNlbCcsXG4gICAgICAgICAgICAgICAgaHRtbDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBzZXQgYXMgY2FuY2VsbGVkP2AsXG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpY29uOiAnd2FybmluZydcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uT2JqID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudDogYWN0aW9uLmNvbW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IGFjdGlvbi5jb21wbGV0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcm1fYWNjb3VudF9pZDogYWN0aW9uLmNybV9hY2NvdW50X2lkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLnVwZGF0ZUFjY291bnRDb21tZW50KHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgaWQsIGFjdGlvbk9iailcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0NybS5TZXR0aW5ncy5VcGRhdGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbnMuc3BsaWNlKGFjdGlvbiwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBY3Rpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDb250YWN0Q29tbWVudHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBzaG93IERhdGVQaWNrZXIgKi9cbiAgICBzaG93RGF0ZVBpY2tlclVwZGF0ZShhY3Rpb25JZCkge1xuICAgICAgICB0aGlzLnVwZGF0aW5nID0gIXRoaXMudXBkYXRpbmc7XG4gICAgICAgIHRoaXMuYWN0aW9uSWQgPSBhY3Rpb25JZDtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBkYXRlICovXG4gICAgb25EYXRlU2VsZWN0KGV2ZW50LCBhY3Rpb24pIHtcbiAgICAgICAgY29uc3QgY29tbWVudE9iaiA9IHtcbiAgICAgICAgICAgIHdoZW46IEhlbHBlclNlcnZpY2UuZGF0ZUZvcm1hdChldmVudCksXG4gICAgICAgICAgICBjb21tZW50OiBhY3Rpb24uY29tbWVudCxcbiAgICAgICAgICAgIGNvbXBsZXRlZDogYWN0aW9uLmNvbXBsZXRlZCxcbiAgICAgICAgICAgIGNhbmNlbGxlZDogYWN0aW9uLmNhbmNlbGxlZCxcbiAgICAgICAgICAgIGNybV9hY2NvdW50X2lkOiBhY3Rpb24uY3JtX2FjY291bnRzX2lkXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgLnVwZGF0ZUFjY291bnRDb21tZW50KHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgYWN0aW9uLmlkLCBjb21tZW50T2JqKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdkYXRlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDb250YWN0Q29tbWVudHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogc2VhcmNoIGFjY291bnRzICovXG4gICAgc2VhcmNoKGV2ZW50KSB7XG4gICAgICAgIGxldCBkYXRhID0gW107XG4gICAgICAgIGlmIChldmVudC5xdWVyeSkge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMuYWNjb3VudHMuZmlsdGVyKCh4OiBDcm1BY2NvdW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHgubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZEFjY291bnRzID0gZGF0YTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwoY29udGVudCkge1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGNvbnRlbnQsIHsgY2VudGVyZWQ6IHRydWUsIHdpbmRvd0NsYXNzOiAnbW9kYWwtaG9sZGVyJyB9KTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gICAgfVxuXG4gICAgb25VcGxvYWRPdXRwdXQob3V0cHV0OiBVcGxvYWRPdXRwdXQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChvdXRwdXQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYWxsQWRkZWRUb1F1ZXVlJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50OiBVcGxvYWRJbnB1dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd1cGxvYWRBbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBDUk1fQUNDT1VOVF9GSUxFU19QQVRILFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3duZXJfaWQ6IGAke3RoaXMudXNlcklkfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JtX2FjY291bnRzX2lkOiBgJHt0aGlzLmFjY291bnRJZH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNybV9jb250YWN0X2lkOiBgJHt0aGlzLmNvbnRhY3RJZH1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUT0tFTl9IRUFERVJfS0VZXTogdGhpcy50b2tlblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0LmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWRkZWRUb1F1ZXVlJzpcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG91dHB1dC5maWxlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHQgPSBvdXRwdXQuZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChET0NVTUVOVF9UWVBFX0VYVC5pbmNsdWRlcyhleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLnB1c2gob3V0cHV0LmZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5lcnJvcignZmlsZSBmb3JtYXRzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1cGxvYWRpbmcnOlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3V0cHV0LmZpbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlID0+IHR5cGVvZiBvdXRwdXQuZmlsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgZmlsZS5pZCA9PT0gb3V0cHV0LmZpbGUuaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc1tpbmRleF0gPSBvdXRwdXQuZmlsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZW1vdmVkJzpcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGZpbGU6IFVwbG9hZEZpbGUpID0+IGZpbGUgIT09IG91dHB1dC5maWxlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RyYWdPdmVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdPdmVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RyYWdPdXQnOlxuICAgICAgICAgICAgY2FzZSAnZHJvcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnT3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZG9uZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbGUucHJvZ3Jlc3Muc3RhdHVzID09PSBVcGxvYWRTdGF0dXMuRG9uZSkge1xuICAgICAgICAgICAgICAgIGZpbGVbJ3VwbG9hZGVkJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gd2FpdCBmb3IgNTAwbXMgYmVmb3JlIGZpbHRlciBmaWxlc1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGUucHJvZ3Jlc3Muc3RhdHVzICE9PSBVcGxvYWRTdGF0dXMuRG9uZSk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb09wcG9ydHVuaXRpZXMoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLyR7dGhpcy5zdWJzY3JpcHRpb24/LnNsdWd9JHt0aGlzLnJvdXRlcnMub3Bwb3J0dW5pdHlBZGR9YF0sIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGNvbnRhY3RfaWQ6IHRoaXMuY29udGFjdElkIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWUtYXV0byBtYi0wXCI+XG4gICAgICA8aDIgY2xhc3M9XCJtYi0wXCI+XG4gICAgICAgIDxhIGFyaWEtbGFiZWw9XCJOYXZpZ2F0ZSB0byBUYXJnZXRcIlxuICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgICAgICAgIGNsYXNzPVwicHJldmlvdXNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgIENvbnRhY3QgSW5mb1xuICAgICAgPC9oMj5cbiAgICA8L2Rpdj5cbiAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBmbG9hdC1lbmQgbWItM1wiXG4gICAgICBkYXRhLWN5PVwiYWRkLW9wcG9ydHVuaXRpZXNcIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9PcHBvcnR1bml0aWVzKClcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB7eyAnQ3JtLk9wcG9ydHVuaXRpZXNNZXNzYWdlLkFkZE9wcG9ydHVuaXR5JyB8IHRyYW5zbG9jbyB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCIhaXNEYXRhTG9hZGVkXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lcj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc0RhdGFMb2FkZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm8gcC0zIGNhcmQgcGItMCBoLWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJwcm9maWxlLWltYWdlXCI+XG4gICAgICAgICAgICAgIDxpbWcgd2lkdGg9XCIxMDBcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBpbWctYm9yZGVyIHdpZHRoLTEwMFwiXG4gICAgICAgICAgICAgICAgYWx0PVwidXNlclwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ltZy9pY29ucy9tYWxlLnBuZ1wiIC8+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGg0IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgICAgQWJvdXQgPHNwYW4gKm5nSWY9XCJkYXRhPy5pZFwiPnt7IGRhdGEgfCBpZk5hbWVOdWxsU2hvd0VtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0Zvcm1FZGl0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtZW5kXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlzRm9ybUVkaXQgPSAhaXNGb3JtRWRpdFwiPkVkaXQ8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhYm91dENvbnRyb2xzXCJcbiAgICAgICAgICAgIFtjbGFzcy5pc0Rpc2FibGVkXT1cImlzRm9ybUVkaXRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIG1iLTBcIiBmb3I9XCJmaXJzdE5hbWVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcm0uQ29udGFjdE1lc3NhZ2UuRmlyc3ROYW1lJyB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMCBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpcnN0X25hbWVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnZmlyc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgbWItMFwiIGZvcj1cImxhc3ROYW1lXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JtLkNvbnRhY3RNZXNzYWdlLkxhc3ROYW1lJyB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMCBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydsYXN0X25hbWUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIG1iLTBcIiBmb3I9XCJMb2NhdGlvblwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NybS5BY2NvdW50TWVzc2FnZS5Mb2NhdGlvbicgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG5neC1ncC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTAgcHMtMSB1c2VyLXZhbHVlXCJcbiAgICAgICAgICAgICAgICAjcGxhY2VzPVwibmd4LXBsYWNlc1wiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9jYXRpb25cIlxuICAgICAgICAgICAgICAgIChvbkFkZHJlc3NDaGFuZ2UpPVwiaGFuZGxlQWRkcmVzc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2xvY2F0aW9uJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY291bnRyaWVzJCB8IGFzeW5jIGFzIGNvdW50cmllc1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY291bnRyeVwiPnt7ICdDcm0uQWNjb3VudE1lc3NhZ2UuQ291bnRyeScgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgcmVxdWlyZWQtaWNvblwiPio8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvdW50cmllc1wiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2NvdW50cnknXS5lcnJvcnMgfVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IENvdW50cnknXCJcbiAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJjb2RlXCJcbiAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCI+XG4gICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHVpLWZsdWlkIHNraWxscy1tb2RhbFwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0yXCIgZm9yPVwiQWNjb3VudFwiPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuQWNjb3VudCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLycgKyBzdWJzY3JpcHRpb24/LnNsdWcgKyByb3V0ZXJzLmFjY291bnRJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNybV9hY2NvdW50X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZC1ibG9jayBwYi0yIHBzLTEgdXNlci12YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmWydjcm1fYWNjb3VudF9pZCddLnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBmWydjcm1fYWNjb3VudF9pZCddLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0Zvcm1FZGl0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZUZvcm1Db250cm9sXT1cIiFkYXRhPy5jcm1fYWNjb3VudF9pZFwiPnt7IGZbJ2NybV9hY2NvdW50X2lkJ10udmFsdWU/Lm5hbWUgfX08L2E+XG4gICAgICAgICAgICAgIDxwLWF1dG9Db21wbGV0ZSAqbmdJZj1cIiFpc0Zvcm1FZGl0XCJcbiAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRBY2NvdW50c1wiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3JtX2FjY291bnRfaWRcIlxuICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJpZFwiXG4gICAgICAgICAgICAgICAgZmllbGQ9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBbZHJvcGRvd25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidy0xMDBcIlxuICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmWydjcm1fYWNjb3VudF9pZCddLnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBmWydjcm1fYWNjb3VudF9pZCddLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnaW52YWxpZC1maWVsZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGFjY291bnRzXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoZlsnY3JtX2FjY291bnRfaWQnXS50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZlsnY3JtX2FjY291bnRfaWQnXS5lcnJvcnNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5hY2NvdW50IGlzIHJlcXVpcmVkPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCIgZm9yPVwiZW1haWxcIj57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLkVtYWlsJyB8IHRyYW5zbG9jbyB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCJtYWlsVG86e3sgZGF0YS5lbWFpbCB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZC1ibG9jayBwYi0yIHBzLTEgdXNlci12YWx1ZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0Zvcm1FZGl0ICYmIGRhdGEuZW1haWxcIj57eyBkYXRhLmVtYWlsIH19PC9hPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzRm9ybUVkaXQgfHwgIWRhdGEuZW1haWxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMCBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2VtYWlsJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCIgZm9yPVwibGlua2VkaW5VcmxcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcm0uQ29udGFjdE1lc3NhZ2UuTGlua2VkSW5VcmwnIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImRhdGEubGlua2VkaW5fdXJsXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJibGFua1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZC1ibG9jayBwYi0yIHBzLTEgdXNlci12YWx1ZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0Zvcm1FZGl0ICYmIGRhdGEubGlua2VkaW5fdXJsXCI+e3sgZGF0YS5saW5rZWRpbl91cmwgfX08L2E+XG4gICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFpc0Zvcm1FZGl0IHx8ICFkYXRhLmxpbmtlZGluX3VybFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMCBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxpbmtlZGluX3VybFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydsaW5rZWRpbl91cmwnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIG1iLTBcIiBmb3I9XCJIZWFkbGluZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NybS5Db250YWN0TWVzc2FnZS5IZWFkbGluZScgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTAgcHMtMSB1c2VyLXZhbHVlXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJoZWFkbGluZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydoZWFkbGluZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEudGVsXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIG1iLTBcIiBmb3I9XCJUZWxcIj57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLlRlbCcgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMCBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRlbFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIG1iLTBcIiBmb3I9XCJQb3RlbnRpYWxcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcm0uQ29udGFjdE1lc3NhZ2UuUG90ZW50aWFsJyB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8cC1kcm9wZG93blxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvdGVudGlhbFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicG90ZW50aWFsc1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgUG90ZW50aWFsJ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydwb3RlbnRpYWwnXS5lcnJvcnMgfVwiPlxuICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIG1iLTBcImZvcj1cIkxhYmVsc1wiPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuTGFiZWxzJyB8IHRyYW5zbG9jbyB9fSA8L2xhYmVsPlxuICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJsYWJlbHNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlRm9ybUNvbnRyb2xdPVwiaXNGb3JtRWRpdFwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxzXCJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNGb3JtRWRpdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbmQgZm9ybS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzRm9ybUVkaXQgPSAhaXNGb3JtRWRpdDsgZ2V0VXNlckluZm8oKVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJDYW5jZWxcIiAvPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtM1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJTdWJtaXRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDb250YWN0SW5mbygpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLThcIj5cbiAgICAgICAgPHVsIG5nYk5hdlxuICAgICAgICAgICNuYXY9XCJuZ2JOYXZcIlxuICAgICAgICAgIGNsYXNzPVwibmF2LXRhYnNcIj5cbiAgICAgICAgICA8bGkgW25nYk5hdkl0ZW1dPVwiMVwiPlxuICAgICAgICAgICAgPGEgbmdiTmF2TGluaz5Ob3RlczwvYT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFjdGlvbkNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAobmdTdWJtaXQpPVwib25TYXZlKClcIj5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICByb3dzPVwiNlwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQ29udHJvbHMuZ2V0KCdjb21tZW50JykudG91Y2hlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQ29udHJvbHMuZ2V0KCdjb21tZW50JykuaW52YWxpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgIE5vdGUgUmVxdWlyZWRcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9jayBjbGVhci1ib3RoIHB0LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zOyBpbmRleCBhcyBpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBtZS0yIGJ0bi1vdXRsaW5lLXByaW1hcnkgbWItMiBhY3Rpb24tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RhdGVQaWNrZXIoJGV2ZW50LCBhY3Rpb24uaWQpOyBkLnRvZ2dsZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0QWN0aW9uICYmIGFjdGlvbkZvcm1Db250cm9sc1snY3JtX2FjdGlvbl9pZCddLmludmFsaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBhbiBhY3Rpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZGQtbW1tLXl5eXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ3aGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAjZD1cIm5nYkRhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZC50b2dnbGUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgcGUtMCBjb21wbGV0ZWQtdG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggY2hlY2tlZExhYmVsPVwiY29tcGxldGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5jaGVja2VkTGFiZWw9XCJvcGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29tcGxldGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbXBsZXRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsb2F0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXQtMiBtYi0yIGZsb2F0LWVuZFwiPlN1Ym1pdCBOb3RlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG10LTIgbWItMiBtZS0wIG1lLXNtLTIgZmxvYXQtZW5kXCJcbiAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9wZW5Nb2RhbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk1vZGFsKGNvbnRlbnQpXCI+e3sgJ1VwbG9hZCBmaWxlJyB8IHRyYW5zbG9jbyB9fTwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYnV0dG9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vLWFjdGlvbnMgcHQtNFwiPlxuICAgICAgICAgICAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NybS5Db250YWN0TWVzc2FnZS5Ob0FjdGlvbnNJbkNvbnRhY3RJbmZvTWVzc2FnZScgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YSBbcm91dGVyTGlua109XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbj8uc2x1ZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVycy5jb25maWd1cmF0aW9ucyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIj5UYWtlIG1lIHRvIHRoZSBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gc2VjdGlvbi48L2E+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9wdy1uby1kYXRhPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgICAgICAgICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY29udGFjdENvbW1lbnRzPy5sZW5ndGggJiYgaXNMb2FkZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm8tYWN0aW9ucyBwdC0zXCI+XG4gICAgICAgICAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5Ob0FjdGlvbnNNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgIDwvcHctbm8tZGF0YT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250YWN0Q29tbWVudHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBpZD1cInRpbWVsaW5lXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB0LTMgY2xlYXItYm90aCB0aW1lbGluZS1jZW50ZXIgdGltZWxpbmUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInRpbWVsaW5lXCI+XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0aW1lbGluZS1saW5lXCI+PC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInRpbWVsaW5lXCI+XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0aW1lbGluZS1saW5lXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRpbWVsaW5lLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdtdC01Jzogb2RkIH1cIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBjb250YWN0Q29tbWVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggYXMgaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2RkID0gb2RkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBldmVuID0gZXZlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1iYWRnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmctcmVkIGJnLWxpZ2h0ZW4tMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZS15ZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBkYXRlLXllYXJcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ud2hlbiB8IGRhdGU6ICdtZWRpdW0nIHwgc2xpY2U6IDA6M1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ueWVhciB9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVsaW5lLWNhcmQgc2hhZG93IGNhcmQgcGItMCByb3VuZGVkIGJvcmRlci1ncmV5IGJvcmRlci1saWdodGVuLTIgcG9zaXRpb24tc3RhdGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB5LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0wIGNsZWFyZml4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudC1maWVsZCBmb3JtLWNvbnRyb2wgcC0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uY29tbWVudFwiPnt7IGl0ZW0uY29tbWVudCB9fTwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmxvYXQtc3RhcnQgbWItMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0Z1bGxDb21tZW50IHx8IGl0ZW0uaWQgIT09IGNvbW1lbnRJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY29tbWVudCB8IHNsaWNlOiAwOjE3MFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PGEgKm5nSWY9XCJpdGVtLmNvbW1lbnQubGVuZ3RoID4gMTcwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Z1bGxDb21tZW50ID0gdHJ1ZTsgY29tbWVudElkID0gaXRlbS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj4uLi5zaG93IG1vcmU8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmbG9hdC1zdGFydCBtYi0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dGdWxsQ29tbWVudCAmJiBpdGVtLmlkID09PSBjb21tZW50SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmNvbW1lbnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jb21tZW50Lmxlbmd0aCA+IDE3MCAmJiBzaG93RnVsbENvbW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RnVsbENvbW1lbnQgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+Li4uc2hvdyBsZXNzPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGVkaXQtYnRuIGZsb2F0LWVuZCBweS0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRDb250cm9scygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInVzZXJJZCA9PT0gaXRlbS5vd25lcl9pZCB8fCBoYXNBY2Nlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWVkaXQgZWRpdC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtc3VidGl0bGUgdGV4dC1tdXRlZCBteS0wIGNsZWFyZml4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXVwZGF0aW5nIHx8IGFjdGlvbklkICE9PSBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1zbWFsbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLndoZW4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwidXBkYXRpbmcgJiYgYWN0aW9uSWQgPT09IGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJkZC1tbW0teXl5eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS53aGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkPVwibmdiRGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwiZC50b2dnbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJvbkRhdGVTZWxlY3QoJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCIgYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gZmxvYXQtZW5kIHdoZW4tYnRuIHB5LTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidXNlcklkID09PSBpdGVtLm93bmVyX2lkIHx8IGhhc0FjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEYXRlUGlja2VyVXBkYXRlKGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1lZGl0IGVkaXQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtjbGFzcy50ZXh0LWRhbmdlcl09XCIhaXRlbS5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uY2FuY2VsbGVkICYmICFpdGVtLmNvbXBsZXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmR1ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ub3duZXIuZmlyc3RfbmFtZSArICcgJyArIGl0ZW0ub3duZXIubGFzdF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLXByaW1hcnlcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uY3JtX2FjdGlvbj8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWl0ZW0uY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJJZCA9PT0gaXRlbS5vd25lcl9pZCB8fCBoYXNBY2Nlc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJnLXN1Y2Nlc3MgbXMtMlwiPk9wZW48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpdGVtLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySWQgPT09IGl0ZW0ub3duZXJfaWQgfHwgaGFzQWNjZXNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlNldCBhcyBjb21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2V0IGFzIGNvbXBsZXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMyBtcy0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXNDb21wbGV0ZWRPclVuY29tcGxldGVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbXBsZXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhc2tzIGNvbXBsZXRlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWl0ZW0uY2FuY2VsbGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWl0ZW0uY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJJZCA9PT0gaXRlbS5vd25lcl9pZCB8fCBoYXNBY2Nlc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiU2V0IGFzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZXQgYXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0QXNDYW5jZWxsZWQoaXRlbS5pZCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRpbWVzIGRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jb21wbGV0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlcklkID09PSBpdGVtLm93bmVyX2lkIHx8IGhhc0FjY2VzcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJTZXQgYXMgVW5Db21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2V0IGFzIFVuQ29tcGxldGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXNDb21wbGV0ZWRPclVuY29tcGxldGVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbXBsZXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS13aW5kb3ctY2xvc2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbC1idG5zIG10LTMgdGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtZGVmYXVsdCBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRDb250cm9scyh1bmRlZmluZWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUNvbW1lbnQoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSBbbmdiTmF2SXRlbV09XCIyXCI+XG4gICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPlZlcnNpb25pbmc8L2E+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmVyc2lvbiBvZiBjb250YWN0VmVyc2lvbmluZ1wiPlxuICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz5FdmVudDogPC9zdHJvbmc+e3sgdmVyc2lvbi5ldmVudCB9fSB8IDxzdHJvbmc+QXV0aG9yOiA8L3N0cm9uZz48YSAqbmdJZj1cInZlcnNpb24/LmF1dGhvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21lbWJlcnMnLCB2ZXJzaW9uPy5hdXRob3I/LnNsdWddXCI+e3sgdmVyc2lvbj8uYXV0aG9yIHwgaWZOYW1lTnVsbFNob3dFbWFpbCB9fTwvYT5cbiAgICAgICAgICAgICAgICAgIHwgPHN0cm9uZz5DcmVhdGVkIGF0OiA8L3N0cm9uZz57eyB2ZXJzaW9uLmNyZWF0ZWRfYXQgfCBkYXRlRm9ybWF0OiAnZGF0ZXRpbWUnIH19PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPk9iamVjdDogPC9zdHJvbmc+e3sgdmVyc2lvbi5vYmplY3QgfCBqc29uIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRhY3RWZXJzaW9uaW5nPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLk5vVmVyc2lvbnNNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgIDwvcHctbm8tZGF0YT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPGxpIFtuZ2JOYXZJdGVtXT1cIjNcIj5cbiAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+RmlsZXM8L2E+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cbiAgICAgICAgICAgICAgPHB3LXNtYXJ0LWNybS1jb21wYW55LWZpbGVzIFtjb250YWN0SWRdPVwiY29udGFjdElkXCJcbiAgICAgICAgICAgICAgICBbYWNjb3VudElkXT1cImFjY291bnRJZFwiPlxuICAgICAgICAgICAgICA8L3B3LXNtYXJ0LWNybS1jb21wYW55LWZpbGVzPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuXG4gICAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRcbiAgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGgzIGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMCBwLTBcIj57eyAnVXBsb2FkIEZpbGUnIHwgdHJhbnNsb2NvIH19PC9oMz5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXG4gICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XG5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPHNtYWxsPiB7eyAnVXNlci5Qcm9maWxlLlBpY3R1cmVNZXNzYWdlJyB8IHRyYW5zbG9jbyB9fTwvc21hbGw+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBwLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1ib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJveC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1jb250YWluZXJcIlxuICAgICAgICAgICAgICBuZ0ZpbGVEcm9wXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICAgICAgICAodXBsb2FkT3V0cHV0KT1cIm9uVXBsb2FkT3V0cHV0KCRldmVudClcIlxuICAgICAgICAgICAgICBbdXBsb2FkSW5wdXRdPVwidXBsb2FkSW5wdXRcIj5cbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgRHJhZyBmaWxlcyBoZXJlIG9yXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidXBsb2FkLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgbmdGaWxlU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAodXBsb2FkT3V0cHV0KT1cIm9uVXBsb2FkT3V0cHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbdXBsb2FkSW5wdXRdPVwidXBsb2FkSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSAvPlxuICAgICAgICAgICAgICAgICAgYnJvd3NlXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICB0byB1cGxvYWQuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1pdGVtXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGYgb2YgZmlsZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1pdGVtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlbmFtZS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaW9uaWNvbiBpb24taW9zLWNvcHlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGYubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJmPy5wcm9ncmVzcz8uZGF0YT8ucGVyY2VudGFnZSArICclJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWRvbmVdPVwiZlsndXBsb2FkZWQnXVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy10ZXh0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kb25lXT1cImZbJ3VwbG9hZGVkJ11cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZlsndXBsb2FkZWQnXVwiPnt7IGYucHJvZ3Jlc3M/LmRhdGE/LnBlcmNlbnRhZ2UgLSAxIH19JVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZlsndXBsb2FkZWQnXVwiPjEwMCAlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmWyd1cGxvYWRlZCddXCI+VXBsb2FkaW5nLi4uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZbJ3VwbG9hZGVkJ11cIj5Eb25lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGVlZC1hbmQtZXRhLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImYucHJvZ3Jlc3M/LmRhdGE/LnBlcmNlbnRhZ2UgIT09IDAgJiYgIWZbJ3VwbG9hZGVkJ11cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZi5wcm9ncmVzcz8uZGF0YT8uc3BlZWRIdW1hbiB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPkVUQSB7eyBmLnByb2dyZXNzPy5kYXRhPy5ldGFIdW1hbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLWNvbnRhY3QtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NtYXJ0LWNybS9zcmMvbGliL3ByaXZhdGUvY29tcG9uZW50cy9zbWFydC1jcm0tY29udGFjdHMvc21hcnQtY3JtLWNvbnRhY3QtaW5mby9zbWFydC1jcm0tY29udGFjdC1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc21hcnQtY3JtL3NyYy9saWIvcHJpdmF0ZS9jb21wb25lbnRzL3NtYXJ0LWNybS1jb250YWN0cy9zbWFydC1jcm0tY29udGFjdC1pbmZvL3NtYXJ0LWNybS1jb250YWN0LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBRUgsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEYsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBMEQsWUFBWSxFQUFFLE1BQU0sY0FB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Q0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gscUNBQXFDO1FBQ3JDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRTtZQUNoRixXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtTQUM5QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FqZ0JRLDRCQUE0Qiw0S0F3RHpCLFFBQVE7bUdBeERYLDRCQUE0Qix3RkNwQ3pDLGl5MUJBMmlCQTs7NEZEdmdCYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksMkJBQTJCOzswQkE0RGhDLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEZvcm1IZWxwZXJTZXJ2aWNlLCBHZW9TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICAgIENvdW50cnksXG4gICAgRE9DVU1FTlRfVFlQRV9FWFQsXG4gICAgU3Vic2NyaXB0aW9uLFxuICAgIFRPS0VOX0hFQURFUl9LRVlcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBDUk1fQUNDT1VOVF9GSUxFU19QQVRILCBDcm1TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL3NtYXJ0LWNybS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBDcm1BY2NvdW50IH0gZnJvbSAnbGlicy9zbWFydC1jcm0vc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlL2NybS1hY2NvdW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDcm1Db250YWN0IH0gZnJvbSAnbGlicy9zbWFydC1jcm0vc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlL2NybS1jb250YWN0LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICAgIE9wcG9ydHVuaXR5Q29tbWVudCxcbiAgICBTbWFydENybUFjdGlvblxufSBmcm9tICdsaWJzL3NtYXJ0LWNybS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2Uvc21hcnQtY3JtLW1vZHVsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgVXBsb2FkZXJPcHRpb25zLCBVcGxvYWRGaWxlLCBVcGxvYWRJbnB1dCwgVXBsb2FkT3V0cHV0LCBVcGxvYWRTdGF0dXMgfSBmcm9tICduZ3gtdXBsb2FkZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBOZ2JDYWxlbmRhciwgTmdiRGF0ZVN0cnVjdCwgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmltcG9ydCB7IEFwcFNtYXJ0Q3JtIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL21vZGVscy9zbWFydC1jcm0ubW9kZWwnO1xuaW1wb3J0IHsgUk9VVEVSUyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9yb3V0ZXJzL3JvdXRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXNtYXJ0LWNybS1jb250YWN0LWluZm8nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1jcm0tY29udGFjdC1pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zbWFydC1jcm0tY29udGFjdC1pbmZvLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU21hcnRDcm1Db250YWN0SW5mb0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgY291bnRyaWVzJDogT2JzZXJ2YWJsZTxDb3VudHJ5W10+O1xuICAgIGFjdGlvbkNvbnRyb2xzOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIGFib3V0Q29udHJvbHM6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBjb250YWN0SWQ6IG51bWJlcjtcbiAgICBhY2NvdW50SWQ6IG51bWJlcjtcbiAgICB1c2VySWQ6IG51bWJlcjtcbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgZGF0YTogQ3JtQ29udGFjdDtcbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGFjdGlvbnM6IFNtYXJ0Q3JtQWN0aW9uW10gPSBbXTtcbiAgICBmaWx0ZXJlZEFjY291bnRzOiBDcm1BY2NvdW50W10gPSBbXTtcbiAgICBhY2NvdW50cyA9IFtdO1xuICAgIGNvbnRhY3RDb21tZW50cyA9IFtdO1xuICAgIGNvbnRhY3RWZXJzaW9uaW5nID0gW107XG5cbiAgICBtb2RlbDogTmdiRGF0ZVN0cnVjdDtcbiAgICBkYXRlOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlciB9O1xuXG4gICAgb3B0aW9uczogVXBsb2FkZXJPcHRpb25zO1xuICAgIHVwbG9hZElucHV0OiBFdmVudEVtaXR0ZXI8VXBsb2FkSW5wdXQ+O1xuICAgIGZpbGVzOiBVcGxvYWRGaWxlW107XG4gICAgdG9rZW46IHN0cmluZztcblxuICAgIHBvdGVudGlhbHMgPSBbJ2xvdycsICdtZWRpdW0nLCAnaGlnaCddO1xuICAgIGxhYmVscyA9IFtdO1xuXG4gICAgc3VibWl0dGVkID0gZmFsc2U7XG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICBpc0Zvcm1FZGl0ID0gdHJ1ZTtcbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuICAgIGlzRGF0YUxvYWRlZCA9IGZhbHNlO1xuICAgIGhhc0FjY2VzcyA9IGZhbHNlO1xuICAgIHVwZGF0aW5nID0gZmFsc2U7XG4gICAgYnV0dG9uRGlzYWJsZTogYm9vbGVhbjtcbiAgICBkYW5nZXJDb2xvcjogYm9vbGVhbjtcbiAgICBzaG93RnVsbENvbW1lbnQgPSBmYWxzZTtcbiAgICBzdWJtaXRBY3Rpb24gPSBmYWxzZTtcbiAgICBkcmFnT3ZlcjogYm9vbGVhbjtcblxuICAgIGFjdGlvbklkOiBudW1iZXI7XG4gICAgY29tbWVudElkOiBudW1iZXI7XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY3JtU2VydmljZTogQ3JtU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2VvU2VydmljZTogR2VvU2VydmljZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnRcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IGNvbmN1cnJlbmN5OiAxLCBtYXhVcGxvYWRzOiAzIH07XG4gICAgICAgIHRoaXMudXBsb2FkSW5wdXQgPSBuZXcgRXZlbnRFbWl0dGVyPFVwbG9hZElucHV0PigpO1xuICAgICAgICB0aGlzLnRva2VuID0gYnRvYSh0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKCkpO1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMgPSBBcHBTbWFydENybS5nZXRDb250YWN0QWN0aW9uc0Zvcm0odGhpcy5pc0Rpc2FibGVkKTtcbiAgICAgICAgdGhpcy5hYm91dENvbnRyb2xzID0gQXBwU21hcnRDcm0uZ2V0Q29udGFjdHNGb3JtKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY291bnRyaWVzJCA9IHRoaXMuZ2VvU2VydmljZS5nZXRDb3VudHJpZXMoKTtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb250YWN0SWQgPSBOdW1iZXIoZGF0YVsnaWQnXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb24oKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSByZXNwb25zZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldERlZmF1bHRWYWx1ZXModGhpcy5zdWJzY3JpcHRpb24/LmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFjdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldENvbnRhY3RDb21tZW50cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ2NybV9jb250YWN0X2lkJykuc2V0VmFsdWUodGhpcy5jb250YWN0SWQpO1xuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5jYWxlbmRhci5nZXRUb2RheSgpO1xuICAgICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzLmdldCgnd2hlbicpLnNldFZhbHVlKHRoaXMubW9kZWwpO1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlcklkID0gcmVzLmlkO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMuZ2V0KCdvd25lcl9pZCcpLnNldFZhbHVlKHJlcy5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9uRGF0ZVNlbGVjdGVkKCk7XG4gICAgICAgIHRoaXMuZ2V0Q29udGFjdFZlcnNpb24oKTtcbiAgICB9XG5cbiAgICBoYW5kbGVBZGRyZXNzQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuYWJvdXRDb250cm9scy5nZXQoJ2xvY2F0aW9uJykuc2V0VmFsdWUoZXZlbnQuZm9ybWF0dGVkX2FkZHJlc3MpO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRWYWx1ZXMoaWQpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldENybUNvbnRhY3REZWZhdWx0VmFsdWVzKGlkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcmVzWydsYWJlbHMnXTtcbiAgICAgICAgICAgIGxhYmVsLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdmFsLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVscy5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgY29udGFjdCB2ZXJzaW9ucyAqL1xuICAgIHByaXZhdGUgZ2V0Q29udGFjdFZlcnNpb24oKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgLmdldENvbnRhY3RWZXJzaW9uKHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgdGhpcy5jb250YWN0SWQsICdDcm1Db250YWN0JylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdFZlcnNpb25pbmcgPSByZXNwb25zZS52ZXJzaW9ucztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dFZGl0Q29udHJvbHMoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICAgICAnY2FyZC1oZWFkZXInXG4gICAgICAgICkgYXMgSFRNTENvbGxlY3Rpb25PZjxFbGVtZW50PiAmIEl0ZXJhYmxlPEVsZW1lbnQ+O1xuICAgICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgICAgIGNvbW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdy1jb250cm9scycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBldmVudC50YXJnZXQuY2xvc2VzdCgnLmNhcmQtaGVhZGVyJykuY2xhc3NMaXN0LmFkZCgnc2hvdy1jb250cm9scycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ29tbWVudChpdGVtKSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnRPYmogPSB7XG4gICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQsXG4gICAgICAgICAgICBjb21wbGV0ZWQ6IGl0ZW0uY29tcGxldGVkLFxuICAgICAgICAgICAgY2FuY2VsbGVkOiBpdGVtLmNhbmNlbGxlZCxcbiAgICAgICAgICAgIGNybV9hY2NvdW50X2lkOiBpdGVtLmNybV9hY2NvdW50X2lkXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgLnVwZGF0ZUFjY291bnRDb21tZW50KHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgaXRlbS5pZCwgY29tbWVudE9iailcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcygnY29tbWVudCB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0VkaXRDb250cm9scyh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29udGFjdENvbW1lbnRzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93RGF0ZVBpY2tlcihldmVudCwgaWQpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ3doZW4nKS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIGNvbnN0IGFjdGlvbkJ1dHRvbnMgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICAgICAnYWN0aW9uLWJ0bidcbiAgICAgICAgKSBhcyBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ICYgSXRlcmFibGU8RWxlbWVudD47XG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIGFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC50YXJnZXQuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMuZ2V0KCdjcm1fYWN0aW9uX2lkJykuc2V0VmFsdWUoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiBhY2NvdW50cyBieSBzdWJzY3JpcHRpb25JZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QWNjb3VudHNCeVN1YnNjcmlwdGlvbigpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0QWNjb3VudHNCeVN1YnNjcmlwdGlvbih0aGlzLnN1YnNjcmlwdGlvbj8uaWQsIHsgcGFnZV9zaXplOiB0aGlzLlBBR0VfU0laRSB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm8oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjY291bnRzID0gcmVzLmFjY291bnRzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFib3V0Q29udHJvbHMuY29udHJvbHM7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGlvbkZvcm1Db250cm9scygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uQ29udHJvbHMuY29udHJvbHM7XG4gICAgfVxuXG4gICAgdXBkYXRlQ29udGFjdEluZm8oKSB7XG4gICAgICAgIGlmICh0aGlzLmFib3V0Q29udHJvbHMuaW52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hYm91dENvbnRyb2xzXG4gICAgICAgICAgICAgICAgLmdldCgnY3JtX2FjY291bnRfaWQnKVxuICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLmFib3V0Q29udHJvbHMuZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnZhbHVlLmlkKTtcbiAgICAgICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgICAgIC51cGRhdGVDb250YWN0KHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgdGhpcy5jb250YWN0SWQsIHRoaXMuYWJvdXRDb250cm9scy52YWx1ZSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0NybS5Db250YWN0TWVzc2FnZS5VcGRhdGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGb3JtRWRpdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm8oKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb250YWN0Q29tbWVudHMoKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgLmdldENvbnRhY3RDb21tZW50cyh0aGlzLmNvbnRhY3RJZCwgdGhpcy5zdWJzY3JpcHRpb24/LmlkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcD8uY3JtX2FjY291bnRfYWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdENvbW1lbnRzID0gcmVzcC5jcm1fYWNjb3VudF9hY3Rpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdENvbW1lbnRzLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLndoZW5fc2hvcnRfZGF0ZSA9IG1vbWVudChkYXRhLndoZW4pLmZvcm1hdCgnREQtTU1NLVlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBtb21lbnQobmV3IERhdGUoZGF0YS53aGVuKSkuZGlmZihtb21lbnQobmV3IERhdGUoKSksICdkYXlzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9tZW50KG5ldyBEYXRlKGRhdGEud2hlbikpIDwgbW9tZW50KG5ldyBEYXRlKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnZHVlJ10gPSBgT3ZlcmR1ZSBieSAke01hdGguYWJzKGRpZmYpfSBkYXlzYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xvciddID0gdGhpcy5kYW5nZXJDb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnZHVlJ10gPSBgSW4gJHtkaWZmfSBkYXlzYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xvciddID0gIXRoaXMuZGFuZ2VyQ29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdENvbW1lbnRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShhLndoZW4pLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIud2hlbikuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXRGb3JtYXQgPSAnREQtTU1NLVlZWVknO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhY3RDb21tZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsnd2hlbiddID0gbW9tZW50KGl0ZW1bJ3doZW4nXSkuZm9ybWF0KCdERC1NTU0tWVlZWScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsneWVhciddID0gbW9tZW50KGl0ZW1bJ3doZW4nXSwgaW5wdXRGb3JtYXQpLmZvcm1hdCgnWVlZWScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsnbW9udGgnXSA9IG1vbWVudChpdGVtWyd3aGVuJ10sIGlucHV0Rm9ybWF0KS5mb3JtYXQoJ01NJyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRDYW5jZWxsZWRBY3Rpb25zOiBPcHBvcnR1bml0eUNvbW1lbnRbXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhY3RDb21tZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0+IGFjdGlvbi5jb21wbGV0ZWQgPT09IHRydWUgfHwgYWN0aW9uLmNhbmNlbGxlZCA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkQ2FuY2VsbGVkQWN0aW9ucy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vdENvbXBsZXRlZENhbmNlbGxlZEFjdGlvbnM6IE9wcG9ydHVuaXR5Q29tbWVudFtdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdENvbW1lbnRzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPT4gYWN0aW9uLmNvbXBsZXRlZCA9PT0gZmFsc2UgJiYgYWN0aW9uLmNhbmNlbGxlZCA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdENvbW1lbnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdENvbXBsZXRlZENhbmNlbGxlZEFjdGlvbnMuY29uY2F0KGNvbXBsZXRlZENhbmNlbGxlZEFjdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNhdmUoKSB7XG4gICAgICAgIHRoaXMuc3VibWl0QWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uQ29udHJvbHMuaW52YWxpZCkge1xuICAgICAgICAgICAgRm9ybUhlbHBlclNlcnZpY2UudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuYWN0aW9uQ29udHJvbHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmFjdGlvbkNvbnRyb2xzLnZhbHVlO1xuICAgICAgICAgICAgZGF0YS53aGVuID0gSGVscGVyU2VydmljZS5kYXRlRm9ybWF0KGRhdGE/LndoZW4pO1xuICAgICAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnBvc3RBY2NvdW50Q29tbWVudCh0aGlzLnN1YnNjcmlwdGlvbj8uaWQsIGRhdGEpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMuZ2V0KCdjb21tZW50JykucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDb250YWN0Q29tbWVudHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0NybS5Db250YWN0TWVzc2FnZS5Db21tZW50U3VibWl0dGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRBY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRhdGVTZWxlY3RlZCgpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ3doZW4nKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3doZW4nKT8uWyd2YWx1ZSddO1xuICAgICAgICAgICAgY29uc3QgdG9kYXlEYXRlID0gbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdCgnREQtTU1NLVlZWVknKTtcbiAgICAgICAgICAgIGlmICh0b2RheURhdGUgPCBzZWxlY3RlZERhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMuZ2V0KCdjb21wbGV0ZWQnKS5kaXNhYmxlKHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ2NvbXBsZXRlZCcpLnNldFZhbHVlKGZhbHNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5nZXQoJ2NvbXBsZXRlZCcpLmVuYWJsZSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZ2V0IGFuZCBzaG93IGFsbCB0aGUgYWN0aW9ucyAqL1xuICAgIGdldEFjdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZS5nZXRBbGxBY3Rpb25zKHRoaXMuc3Vic2NyaXB0aW9uPy5pZCkuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3A/LmNybV9hY3Rpb25zICYmIHJlc3AuY3JtX2FjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IHJlc3AuY3JtX2FjdGlvbnMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25EaXNhYmxlID0gdGhpcy5hY3Rpb25zLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgICB4ID0+IHgudmlzaWJsZSA9PT0gZmFsc2UgfHwgeC52aXNpYmxlID09PSBudWxsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25EaXNhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaGFzQWNjZXNzID0gdGhpcy5oYXNBZG1pbkFjY2Vzcyh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpO1xuICAgICAgICB0aGlzLmdldEFjY291bnRzQnlTdWJzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZ2V0IHRoZSBjb250YWN0IGRldGFpbHMgYnkgSWQgKi9cbiAgICBnZXRVc2VySW5mbygpIHtcbiAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0Q29udGFjdEJ5SWQodGhpcy5zdWJzY3JpcHRpb24/LmlkLCB0aGlzLmNvbnRhY3RJZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYWJvdXRDb250cm9scy5wYXRjaFZhbHVlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzLmdldCgnY3JtX2FjY291bnRfaWQnKS5wYXRjaFZhbHVlKHJlc3BvbnNlLmNybV9hY2NvdW50X2lkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmdldEFjY291bnREZXRhaWwodGhpcy5zdWJzY3JpcHRpb24/LmlkLCByZXNwb25zZS5jcm1fYWNjb3VudF9pZClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjY291bnRzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYWNjb3VudHMuZmlsdGVyKGFjY291bnQgPT4gYWNjb3VudC5pZCAhPT0gcmVzcG9uc2UuaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hYm91dENvbnRyb2xzLmdldCgnY3JtX2FjY291bnRfaWQnKS5wYXRjaFZhbHVlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjb3VudElkID0gcmVzcG9uc2UuY3JtX2FjY291bnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBzZXQgdGhlIGFjdGlvbiBhcyBjb21wbGV0ZWQgKi9cbiAgICBzZXRBc0NvbXBsZXRlZE9yVW5jb21wbGV0ZWQoaWQsIGFjdGlvbiwgY29tcGxldGVkT3JVbmNvbXBsZXRlZCkge1xuICAgICAgICBjb25zdCBhbGVydFRpdGxlID0gY29tcGxldGVkT3JVbmNvbXBsZXRlZCA/ICdJbkNvbXBsZXRlZCcgOiAnQ29tcGxldGVkJztcblxuICAgICAgICByZXR1cm4gc3dhbFxuICAgICAgICAgICAgLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhbGVydFRpdGxlLFxuICAgICAgICAgICAgICAgIGh0bWw6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc2V0IGFzICR7YWxlcnRUaXRsZX0/YCxcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxuICAgICAgICAgICAgICAgIGljb246ICd3YXJuaW5nJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25PYmogPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50OiBhY3Rpb24uY29tbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogIWNvbXBsZXRlZE9yVW5jb21wbGV0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsZWQ6IGFjdGlvbi5jYW5jZWxsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcm1fYWNjb3VudF9pZDogYWN0aW9uLmNybV9hY2NvdW50X2lkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLnVwZGF0ZUFjY291bnRDb21tZW50KHRoaXMuc3Vic2NyaXB0aW9uPy5pZCwgaWQsIGFjdGlvbk9iailcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0NybS5TZXR0aW5ncy5VcGRhdGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbnMuc3BsaWNlKGFjdGlvbiwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBY3Rpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDb250YWN0Q29tbWVudHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBzZXQgdGhlIGFjdGlvbiBhcyBjYW5jZWxsZWQgKi9cbiAgICBzZXRBc0NhbmNlbGxlZChpZCwgYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBzd2FsXG4gICAgICAgICAgICAuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdDYW5jZWwnLFxuICAgICAgICAgICAgICAgIGh0bWw6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc2V0IGFzIGNhbmNlbGxlZD9gLFxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbk9iaiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGFjdGlvbi5jb21tZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiBhY3Rpb24uY29tcGxldGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3JtX2FjY291bnRfaWQ6IGFjdGlvbi5jcm1fYWNjb3VudF9pZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVBY2NvdW50Q29tbWVudCh0aGlzLnN1YnNjcmlwdGlvbj8uaWQsIGlkLCBhY3Rpb25PYmopXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdDcm0uU2V0dGluZ3MuVXBkYXRlZE1lc3NhZ2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zLnNwbGljZShhY3Rpb24sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWN0aW9ucygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29udGFjdENvbW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gc2hvdyBEYXRlUGlja2VyICovXG4gICAgc2hvd0RhdGVQaWNrZXJVcGRhdGUoYWN0aW9uSWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZyA9ICF0aGlzLnVwZGF0aW5nO1xuICAgICAgICB0aGlzLmFjdGlvbklkID0gYWN0aW9uSWQ7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgZGF0ZSAqL1xuICAgIG9uRGF0ZVNlbGVjdChldmVudCwgYWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnRPYmogPSB7XG4gICAgICAgICAgICB3aGVuOiBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQoZXZlbnQpLFxuICAgICAgICAgICAgY29tbWVudDogYWN0aW9uLmNvbW1lbnQsXG4gICAgICAgICAgICBjb21wbGV0ZWQ6IGFjdGlvbi5jb21wbGV0ZWQsXG4gICAgICAgICAgICBjYW5jZWxsZWQ6IGFjdGlvbi5jYW5jZWxsZWQsXG4gICAgICAgICAgICBjcm1fYWNjb3VudF9pZDogYWN0aW9uLmNybV9hY2NvdW50c19pZFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVBY2NvdW50Q29tbWVudCh0aGlzLnN1YnNjcmlwdGlvbj8uaWQsIGFjdGlvbi5pZCwgY29tbWVudE9iailcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcygnZGF0ZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29udGFjdENvbW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIHNlYXJjaCBhY2NvdW50cyAqL1xuICAgIHNlYXJjaChldmVudCkge1xuICAgICAgICBsZXQgZGF0YSA9IFtdO1xuICAgICAgICBpZiAoZXZlbnQucXVlcnkpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmFjY291bnRzLmZpbHRlcigoeDogQ3JtQWNjb3VudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC5xdWVyeS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY2NvdW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyZWRBY2NvdW50cyA9IGRhdGE7XG4gICAgfVxuXG4gICAgb3Blbk1vZGFsKGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihjb250ZW50LCB7IGNlbnRlcmVkOiB0cnVlLCB3aW5kb3dDbGFzczogJ21vZGFsLWhvbGRlcicgfSk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgIH1cblxuICAgIG9uVXBsb2FkT3V0cHV0KG91dHB1dDogVXBsb2FkT3V0cHV0KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAob3V0cHV0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FsbEFkZGVkVG9RdWV1ZSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBldmVudDogVXBsb2FkSW5wdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndXBsb2FkQWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogQ1JNX0FDQ09VTlRfRklMRVNfUEFUSCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyX2lkOiBgJHt0aGlzLnVzZXJJZH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNybV9hY2NvdW50c19pZDogYCR7dGhpcy5hY2NvdW50SWR9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm1fY29udGFjdF9pZDogYCR7dGhpcy5jb250YWN0SWR9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVE9LRU5fSEVBREVSX0tFWV06IHRoaXMudG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZGVkVG9RdWV1ZSc6XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvdXRwdXQuZmlsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXh0ID0gb3V0cHV0LmZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoRE9DVU1FTlRfVFlQRV9FWFQuaW5jbHVkZXMoZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKG91dHB1dC5maWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3QuZXJyb3IoJ2ZpbGUgZm9ybWF0cyBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXBsb2FkaW5nJzpcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG91dHB1dC5maWxlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9PiB0eXBlb2Ygb3V0cHV0LmZpbGUgIT09ICd1bmRlZmluZWQnICYmIGZpbGUuaWQgPT09IG91dHB1dC5maWxlLmlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbaW5kZXhdID0gb3V0cHV0LmZpbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVtb3ZlZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKChmaWxlOiBVcGxvYWRGaWxlKSA9PiBmaWxlICE9PSBvdXRwdXQuZmlsZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkcmFnT3Zlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnT3ZlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkcmFnT3V0JzpcbiAgICAgICAgICAgIGNhc2UgJ2Ryb3AnOlxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ092ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RvbmUnOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgICAgIGlmIChmaWxlLnByb2dyZXNzLnN0YXR1cyA9PT0gVXBsb2FkU3RhdHVzLkRvbmUpIHtcbiAgICAgICAgICAgICAgICBmaWxlWyd1cGxvYWRlZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHdhaXQgZm9yIDUwMG1zIGJlZm9yZSBmaWx0ZXIgZmlsZXNcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlLnByb2dyZXNzLnN0YXR1cyAhPT0gVXBsb2FkU3RhdHVzLkRvbmUpO1xuICAgICAgICB9LCA1MDApO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9PcHBvcnR1bml0aWVzKCkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC8ke3RoaXMuc3Vic2NyaXB0aW9uPy5zbHVnfSR7dGhpcy5yb3V0ZXJzLm9wcG9ydHVuaXR5QWRkfWBdLCB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtczogeyBjb250YWN0X2lkOiB0aGlzLmNvbnRhY3RJZCB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0wXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1lLWF1dG8gbWItMFwiPlxuICAgICAgPGgyIGNsYXNzPVwibWItMFwiPlxuICAgICAgICA8YSBhcmlhLWxhYmVsPVwiTmF2aWdhdGUgdG8gVGFyZ2V0XCJcbiAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgICAgICBjbGFzcz1cInByZXZpb3VzXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgICAgICBDb250YWN0IEluZm9cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG4gICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtZW5kIG1iLTNcIlxuICAgICAgZGF0YS1jeT1cImFkZC1vcHBvcnR1bml0aWVzXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvT3Bwb3J0dW5pdGllcygpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAge3sgJ0NybS5PcHBvcnR1bml0aWVzTWVzc2FnZS5BZGRPcHBvcnR1bml0eScgfCB0cmFuc2xvY28gfX1cbiAgICA8L2E+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwiIWlzRGF0YUxvYWRlZFwiPlxuICA8cC1wcm9ncmVzc1NwaW5uZXI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNEYXRhTG9hZGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1pbmZvIHAtMyBjYXJkIHBiLTAgaC1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwicHJvZmlsZS1pbWFnZVwiPlxuICAgICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTAwXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgaW1nLWJvcmRlciB3aWR0aC0xMDBcIlxuICAgICAgICAgICAgICAgIGFsdD1cInVzZXJcIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pbWcvaWNvbnMvbWFsZS5wbmdcIiAvPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XG4gICAgICAgICAgICAgIEFib3V0IDxzcGFuICpuZ0lmPVwiZGF0YT8uaWRcIj57eyBkYXRhIHwgaWZOYW1lTnVsbFNob3dFbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNGb3JtRWRpdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGZsb2F0LWVuZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpc0Zvcm1FZGl0ID0gIWlzRm9ybUVkaXRcIj5FZGl0PC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYWJvdXRDb250cm9sc1wiXG4gICAgICAgICAgICBbY2xhc3MuaXNEaXNhYmxlZF09XCJpc0Zvcm1FZGl0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCIgZm9yPVwiZmlyc3ROYW1lXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JtLkNvbnRhY3RNZXNzYWdlLkZpcnN0TmFtZScgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTAgcHMtMSB1c2VyLXZhbHVlXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdF9uYW1lXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2ZpcnN0X25hbWUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIG1iLTBcIiBmb3I9XCJsYXN0TmFtZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NybS5Db250YWN0TWVzc2FnZS5MYXN0TmFtZScgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTAgcHMtMSB1c2VyLXZhbHVlXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXN0X25hbWVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnbGFzdF9uYW1lJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCIgZm9yPVwiTG9jYXRpb25cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcm0uQWNjb3VudE1lc3NhZ2UuTG9jYXRpb24nIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBuZ3gtZ3AtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wIHBzLTEgdXNlci12YWx1ZVwiXG4gICAgICAgICAgICAgICAgI3BsYWNlcz1cIm5neC1wbGFjZXNcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAob25BZGRyZXNzQ2hhbmdlKT1cImhhbmRsZUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydsb2NhdGlvbiddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvdW50cmllcyQgfCBhc3luYyBhcyBjb3VudHJpZXNcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50cnlcIj57eyAnQ3JtLkFjY291bnRNZXNzYWdlLkNvdW50cnknIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHJlcXVpcmVkLWljb25cIj4qPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8cC1kcm9wZG93blxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb3VudHJpZXNcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydjb3VudHJ5J10uZXJyb3JzIH1cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBDb3VudHJ5J1wiXG4gICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwiY29kZVwiXG4gICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiPlxuICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyB1aS1mbHVpZCBza2lsbHMtbW9kYWxcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgbWItMlwiIGZvcj1cIkFjY291bnRcIj57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLkFjY291bnQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nICsgc3Vic2NyaXB0aW9uPy5zbHVnICsgcm91dGVycy5hY2NvdW50SW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5jcm1fYWNjb3VudF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGQtYmxvY2sgcGItMiBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZlsnY3JtX2FjY291bnRfaWQnXS50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZlsnY3JtX2FjY291bnRfaWQnXS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGb3JtRWRpdFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVGb3JtQ29udHJvbF09XCIhZGF0YT8uY3JtX2FjY291bnRfaWRcIj57eyBmWydjcm1fYWNjb3VudF9pZCddLnZhbHVlPy5uYW1lIH19PC9hPlxuICAgICAgICAgICAgICA8cC1hdXRvQ29tcGxldGUgKm5nSWY9XCIhaXNGb3JtRWRpdFwiXG4gICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkQWNjb3VudHNcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNybV9hY2NvdW50X2lkXCJcbiAgICAgICAgICAgICAgICBkYXRhS2V5PVwiaWRcIlxuICAgICAgICAgICAgICAgIGZpZWxkPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgW2Ryb3Bkb3duXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRTdHlsZUNsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZlsnY3JtX2FjY291bnRfaWQnXS50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZlsnY3JtX2FjY291bnRfaWQnXS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ludmFsaWQtZmllbGQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhY2NvdW50c1wiXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKGZbJ2NybV9hY2NvdW50X2lkJ10udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGZbJ2NybV9hY2NvdW50X2lkJ10uZXJyb3JzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+YWNjb3VudCBpcyByZXF1aXJlZDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgbWItMFwiIGZvcj1cImVtYWlsXCI+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5FbWFpbCcgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8YSBocmVmPVwibWFpbFRvOnt7IGRhdGEuZW1haWwgfX1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGQtYmxvY2sgcGItMiBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGb3JtRWRpdCAmJiBkYXRhLmVtYWlsXCI+e3sgZGF0YS5lbWFpbCB9fTwvYT5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc0Zvcm1FZGl0IHx8ICFkYXRhLmVtYWlsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTAgcHMtMSB1c2VyLXZhbHVlXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydlbWFpbCddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgbWItMFwiIGZvcj1cImxpbmtlZGluVXJsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JtLkNvbnRhY3RNZXNzYWdlLkxpbmtlZEluVXJsJyB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCJkYXRhLmxpbmtlZGluX3VybFwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiYmxhbmtcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGQtYmxvY2sgcGItMiBwcy0xIHVzZXItdmFsdWVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGb3JtRWRpdCAmJiBkYXRhLmxpbmtlZGluX3VybFwiPnt7IGRhdGEubGlua2VkaW5fdXJsIH19PC9hPlxuICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhaXNGb3JtRWRpdCB8fCAhZGF0YS5saW5rZWRpbl91cmxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTAgcHMtMSB1c2VyLXZhbHVlXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsaW5rZWRpbl91cmxcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnbGlua2VkaW5fdXJsJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCIgZm9yPVwiSGVhZGxpbmVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcm0uQ29udGFjdE1lc3NhZ2UuSGVhZGxpbmUnIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wIHBzLTEgdXNlci12YWx1ZVwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaGVhZGxpbmVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnaGVhZGxpbmUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLnRlbFwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCIgZm9yPVwiVGVsXCI+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5UZWwnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTAgcHMtMSB1c2VyLXZhbHVlXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCIgZm9yPVwiUG90ZW50aWFsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JtLkNvbnRhY3RNZXNzYWdlLlBvdGVudGlhbCcgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwb3RlbnRpYWxcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInBvdGVudGlhbHNcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IFBvdGVudGlhbCdcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsncG90ZW50aWFsJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBtYi0wXCJmb3I9XCJMYWJlbHNcIj57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLkxhYmVscycgfCB0cmFuc2xvY28gfX0gPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwibGFiZWxzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZUZvcm1Db250cm9sXT1cImlzRm9ybUVkaXRcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhYmVsc1wiXG4gICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzRm9ybUVkaXRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZW5kIGZvcm0tYWN0aW9uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpc0Zvcm1FZGl0ID0gIWlzRm9ybUVkaXQ7IGdldFVzZXJJbmZvKClcIlxuICAgICAgICAgICAgICAgIHZhbHVlPVwiQ2FuY2VsXCIgLz5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1zLTNcIlxuICAgICAgICAgICAgICAgIHZhbHVlPVwiU3VibWl0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlQ29udGFjdEluZm8oKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC04XCI+XG4gICAgICAgIDx1bCBuZ2JOYXZcbiAgICAgICAgICAjbmF2PVwibmdiTmF2XCJcbiAgICAgICAgICBjbGFzcz1cIm5hdi10YWJzXCI+XG4gICAgICAgICAgPGxpIFtuZ2JOYXZJdGVtXT1cIjFcIj5cbiAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+Tm90ZXM8L2E+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhY3Rpb25Db250cm9sc1wiXG4gICAgICAgICAgICAgICAgKG5nU3VibWl0KT1cIm9uU2F2ZSgpXCI+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbW1lbnRcIlxuICAgICAgICAgICAgICAgICAgcm93cz1cIjZcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkNvbnRyb2xzLmdldCgnY29tbWVudCcpLnRvdWNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkNvbnRyb2xzLmdldCgnY29tbWVudCcpLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICBOb3RlIFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtYmxvY2sgY2xlYXItYm90aCBwdC0zXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uczsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aW9uLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gbWUtMiBidG4tb3V0bGluZS1wcmltYXJ5IG1iLTIgYWN0aW9uLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEYXRlUGlja2VyKCRldmVudCwgYWN0aW9uLmlkKTsgZC50b2dnbGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1Ym1pdEFjdGlvbiAmJiBhY3Rpb25Gb3JtQ29udHJvbHNbJ2NybV9hY3Rpb25faWQnXS5pbnZhbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgYW4gYWN0aW9uXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImRkLW1tbS15eXl5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwid2hlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI2Q9XCJuZ2JEYXRlcGlja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImQudG9nZ2xlKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00IHBlLTAgY29tcGxldGVkLXRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIGNoZWNrZWRMYWJlbD1cImNvbXBsZXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuY2hlY2tlZExhYmVsPVwib3BlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbXBsZXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb21wbGV0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICBbYnV0dG9uQnVzeV09XCJidXR0b25CdXN5XCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG10LTIgbWItMiBmbG9hdC1lbmRcIj5TdWJtaXQgTm90ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBtdC0yIG1iLTIgbWUtMCBtZS1zbS0yIGZsb2F0LWVuZFwiXG4gICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuTW9kYWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbChjb250ZW50KVwiPnt7ICdVcGxvYWQgZmlsZScgfCB0cmFuc2xvY28gfX08L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImJ1dHRvbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuby1hY3Rpb25zIHB0LTRcIj5cbiAgICAgICAgICAgICAgICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcm0uQ29udGFjdE1lc3NhZ2UuTm9BY3Rpb25zSW5Db250YWN0SW5mb01lc3NhZ2UnIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGEgW3JvdXRlckxpbmtdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24/LnNsdWcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcnMuY29uZmlndXJhdGlvbnMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCI+VGFrZSBtZSB0byB0aGUgYWN0aW9ucyBjb25maWd1cmF0aW9uIHNlY3Rpb24uPC9hPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvcHctbm8tZGF0YT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgICAgICAgICAgICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNvbnRhY3RDb21tZW50cz8ubGVuZ3RoICYmIGlzTG9hZGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vLWFjdGlvbnMgcHQtM1wiPlxuICAgICAgICAgICAgICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuTm9BY3Rpb25zTWVzc2FnZScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICA8L3B3LW5vLWRhdGE+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGFjdENvbW1lbnRzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJ0aW1lbGluZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwdC0zIGNsZWFyLWJvdGggdGltZWxpbmUtY2VudGVyIHRpbWVsaW5lLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ0aW1lbGluZVwiPlxuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGltZWxpbmUtbGluZVwiPjwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ0aW1lbGluZVwiPlxuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGltZWxpbmUtbGluZVwiPjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0aW1lbGluZS1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnbXQtNSc6IG9kZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgY29udGFjdENvbW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9kZCA9IG9kZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbiA9IGV2ZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJnLXJlZCBiZy1saWdodGVuLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmUteWVhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgZGF0ZS15ZWFyXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLndoZW4gfCBkYXRlOiAnbWVkaXVtJyB8IHNsaWNlOiAwOjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnllYXIgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1jYXJkIHNoYWRvdyBjYXJkIHBiLTAgcm91bmRlZCBib3JkZXItZ3JleSBib3JkZXItbGlnaHRlbi0yIHBvc2l0aW9uLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMCBjbGVhcmZpeFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtZmllbGQgZm9ybS1jb250cm9sIHAtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmNvbW1lbnRcIj57eyBpdGVtLmNvbW1lbnQgfX08L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsb2F0LXN0YXJ0IG1iLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dGdWxsQ29tbWVudCB8fCBpdGVtLmlkICE9PSBjb21tZW50SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmNvbW1lbnQgfCBzbGljZTogMDoxNzBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTxhICpuZ0lmPVwiaXRlbS5jb21tZW50Lmxlbmd0aCA+IDE3MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGdWxsQ29tbWVudCA9IHRydWU7IGNvbW1lbnRJZCA9IGl0ZW0uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+Li4uc2hvdyBtb3JlPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmxvYXQtc3RhcnQgbWItMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RnVsbENvbW1lbnQgJiYgaXRlbS5pZCA9PT0gY29tbWVudElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jb21tZW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY29tbWVudC5sZW5ndGggPiAxNzAgJiYgc2hvd0Z1bGxDb21tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0Z1bGxDb21tZW50ID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPi4uLnNob3cgbGVzczwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBlZGl0LWJ0biBmbG9hdC1lbmQgcHktMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0Q29udHJvbHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VySWQgPT09IGl0ZW0ub3duZXJfaWQgfHwgaGFzQWNjZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1lZGl0IGVkaXQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXN1YnRpdGxlIHRleHQtbXV0ZWQgbXktMCBjbGVhcmZpeFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvYXQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF1cGRhdGluZyB8fCBhY3Rpb25JZCAhPT0gaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvbnQtc21hbGwtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS53aGVuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInVwZGF0aW5nICYmIGFjdGlvbklkID09PSBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZGQtbW1tLXl5eXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0ud2hlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZD1cIm5nYkRhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cImQudG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0KCRldmVudCwgaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiIGJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGZsb2F0LWVuZCB3aGVuLWJ0biBweS0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInVzZXJJZCA9PT0gaXRlbS5vd25lcl9pZCB8fCBoYXNBY2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGF0ZVBpY2tlclVwZGF0ZShpdGVtLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtZWRpdCBlZGl0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBbY2xhc3MudGV4dC1kYW5nZXJdPVwiIWl0ZW0uY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLmNhbmNlbGxlZCAmJiAhaXRlbS5jb21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm93bmVyLmZpcnN0X25hbWUgKyAnICcgKyBpdGVtLm93bmVyLmxhc3RfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiZy1wcmltYXJ5XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmNybV9hY3Rpb24/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpdGVtLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySWQgPT09IGl0ZW0ub3duZXJfaWQgfHwgaGFzQWNjZXNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1zdWNjZXNzIG1zLTJcIj5PcGVuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXRlbS5jb21wbGV0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlcklkID09PSBpdGVtLm93bmVyX2lkIHx8IGhhc0FjY2VzcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJTZXQgYXMgY29tcGxldGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNldCBhcyBjb21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTMgbXMtM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFzQ29tcGxldGVkT3JVbmNvbXBsZXRlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jb21wbGV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YXNrcyBjb21wbGV0ZWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpdGVtLmNhbmNlbGxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpdGVtLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySWQgPT09IGl0ZW0ub3duZXJfaWQgfHwgaGFzQWNjZXNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlNldCBhcyBjYW5jZWxsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2V0IGFzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFzQ2FuY2VsbGVkKGl0ZW0uaWQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10aW1lcyBkZWxldGUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJJZCA9PT0gaXRlbS5vd25lcl9pZCB8fCBoYXNBY2Nlc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiU2V0IGFzIFVuQ29tcGxldGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNldCBhcyBVbkNvbXBsZXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFzQ29tcGxldGVkT3JVbmNvbXBsZXRlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jb21wbGV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtd2luZG93LWNsb3NlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wtYnRucyBtdC0zIHRleHQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWRlZmF1bHQgbWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0Q29udHJvbHModW5kZWZpbmVkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDb21tZW50KGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgW25nYk5hdkl0ZW1dPVwiMlwiPlxuICAgICAgICAgICAgPGEgbmdiTmF2TGluaz5WZXJzaW9uaW5nPC9hPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZlcnNpb24gb2YgY29udGFjdFZlcnNpb25pbmdcIj5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+RXZlbnQ6IDwvc3Ryb25nPnt7IHZlcnNpb24uZXZlbnQgfX0gfCA8c3Ryb25nPkF1dGhvcjogPC9zdHJvbmc+PGEgKm5nSWY9XCJ2ZXJzaW9uPy5hdXRob3JcIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tZW1iZXJzJywgdmVyc2lvbj8uYXV0aG9yPy5zbHVnXVwiPnt7IHZlcnNpb24/LmF1dGhvciB8IGlmTmFtZU51bGxTaG93RW1haWwgfX08L2E+XG4gICAgICAgICAgICAgICAgICB8IDxzdHJvbmc+Q3JlYXRlZCBhdDogPC9zdHJvbmc+e3sgdmVyc2lvbi5jcmVhdGVkX2F0IHwgZGF0ZUZvcm1hdDogJ2RhdGV0aW1lJyB9fTxiciAvPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz5PYmplY3Q6IDwvc3Ryb25nPnt7IHZlcnNpb24ub2JqZWN0IHwganNvbiB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8aHIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250YWN0VmVyc2lvbmluZz8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5Ob1ZlcnNpb25zTWVzc2FnZScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICA8L3B3LW5vLWRhdGE+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSBbbmdiTmF2SXRlbV09XCIzXCI+XG4gICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPkZpbGVzPC9hPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxwdy1zbWFydC1jcm0tY29tcGFueS1maWxlcyBbY29udGFjdElkXT1cImNvbnRhY3RJZFwiXG4gICAgICAgICAgICAgICAgW2FjY291bnRJZF09XCJhY2NvdW50SWRcIj5cbiAgICAgICAgICAgICAgPC9wdy1zbWFydC1jcm0tY29tcGFueS1maWxlcz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cblxuICAgICAgICA8ZGl2IFtuZ2JOYXZPdXRsZXRdPVwibmF2XCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50XG4gIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoMyBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTAgcC0wXCI+e3sgJ1VwbG9hZCBGaWxlJyB8IHRyYW5zbG9jbyB9fTwvaDM+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZFwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxuXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxzbWFsbD4ge3sgJ1VzZXIuUHJvZmlsZS5QaWN0dXJlTWVzc2FnZScgfCB0cmFuc2xvY28gfX08L3NtYWxsPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtYm94XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1ib3gtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgbmdGaWxlRHJvcFxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICAgICAgKHVwbG9hZE91dHB1dCk9XCJvblVwbG9hZE91dHB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW3VwbG9hZElucHV0XT1cInVwbG9hZElucHV0XCI+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIERyYWcgZmlsZXMgaGVyZSBvclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInVwbG9hZC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIG5nRmlsZVNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKHVwbG9hZE91dHB1dCk9XCJvblVwbG9hZE91dHB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3VwbG9hZElucHV0XT1cInVwbG9hZElucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgLz5cbiAgICAgICAgICAgICAgICAgIGJyb3dzZVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgdG8gdXBsb2FkLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaXRlbVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmIG9mIGZpbGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaXRlbS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVuYW1lXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZW5hbWUtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImlvbmljb24gaW9uLWlvcy1jb3B5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZj8ucHJvZ3Jlc3M/LmRhdGE/LnBlcmNlbnRhZ2UgKyAnJSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kb25lXT1cImZbJ3VwbG9hZGVkJ11cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtdGV4dC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZG9uZV09XCJmWyd1cGxvYWRlZCddXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZbJ3VwbG9hZGVkJ11cIj57eyBmLnByb2dyZXNzPy5kYXRhPy5wZXJjZW50YWdlIC0gMSB9fSVcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZbJ3VwbG9hZGVkJ11cIj4xMDAgJTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZlsndXBsb2FkZWQnXVwiPlVwbG9hZGluZy4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmWyd1cGxvYWRlZCddXCI+RG9uZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3BlZWQtYW5kLWV0YS10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmLnByb2dyZXNzPy5kYXRhPy5wZXJjZW50YWdlICE9PSAwICYmICFmWyd1cGxvYWRlZCddXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGYucHJvZ3Jlc3M/LmRhdGE/LnNwZWVkSHVtYW4gfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5FVEEge3sgZi5wcm9ncmVzcz8uZGF0YT8uZXRhSHVtYW4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|