raise-common-lib 0.0.188 → 0.0.189
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/bundles/raise-common-lib.umd.js +1 -1
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/form/drawer-form/drawer-form.component.js +2 -2
- package/esm5/lib/form/drawer-form/drawer-form.component.js +2 -2
- package/fesm2015/raise-common-lib.js +1 -1
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +1 -1
- package/fesm5/raise-common-lib.js.map +1 -1
- package/package.json +2 -2
- package/raise-common-lib.metadata.json +1 -1
|
@@ -504,7 +504,7 @@ export class DrawerFormComponent {
|
|
|
504
504
|
DrawerFormComponent.decorators = [
|
|
505
505
|
{ type: Component, args: [{
|
|
506
506
|
selector: "rs-drawer-form",
|
|
507
|
-
template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [
|
|
507
|
+
template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [ngModel]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showDropDownIcon]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n >\r\n </ejs-multiselect>\r\n <!-- Datepicker -->\r\n <ejs-datepicker\r\n *ngIf=\"field.fieldFormType === 'Datepicker'\"\r\n [value]=\"getValue(field)\"\r\n [format]=\"field.format || 'dd-MMM-yyyy'\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"\r\n fieldValidMap[field.formKey] === false ||\r\n dateValidMap[field.formKey] === false\r\n \"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onDatePickerBlur($event, field)\"\r\n ></ejs-datepicker>\r\n <ng-template\r\n #customTemplateContainer\r\n *ngIf=\"field.fieldFormType === 'Custom'\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"section.customKey\">\r\n <ng-template #customSectionContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"sections.length > 1 && showAnchor\" class=\"anchor-container\">\r\n <div\r\n class=\"anchor-item\"\r\n *ngFor=\"let section of sections; let index = index\"\r\n [style.display]=\"section.title ? 'block' : 'none'\"\r\n [attr.data-active]=\"scrollIndex === index ? 'yes' : 'no'\"\r\n [attr.data-content]=\"section.title\"\r\n (click)=\"onClickAnchor(index)\"\r\n ></div>\r\n </div>\r\n</div>\r\n",
|
|
508
508
|
styles: [":host{display:block;margin-top:16px}.rs-drawer-form-container{display:flex;flex-flow:row nowrap;align-items:flex-start;gap:32px}.rs-drawer-form-container .section-container{flex:auto;display:flex;flex-flow:column nowrap;max-width:1576px}.rs-drawer-form-container .section-item{position:relative}.rs-drawer-form-container .section-item:not(:first-child){border-top:1px solid #eaedf0}.rs-drawer-form-container .section-expand-checkbox{display:block;width:100%;height:28px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;position:absolute;top:0;left:0}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title::before{transform:rotate(-90deg)}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title+.section-form{max-height:0;overflow:hidden}.rs-drawer-form-container .section-title{padding:6px 0;margin-bottom:12px;color:#44566c;font-family:Arial;font-size:13px;font-style:normal;font-weight:700;line-height:16px;display:flex;flex-flow:row nowrap;align-items:center;pointer-events:none}.rs-drawer-form-container .section-title::before{content:url(../../../assets/img/down-arrow.svg);display:block;height:16px;width:16px;margin-right:8px}.rs-drawer-form-container .section-form{display:flex;flex-flow:row wrap;justify-content:space-between;gap:12px 56px;max-width:1576px;padding:0 24px;margin-bottom:20px}.rs-drawer-form-container .section-form .form-item{min-height:28px;min-width:400px;max-width:700px;width:calc((100% - 56px)/ 2);display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:flex-start}.rs-drawer-form-container .section-form .form-item[data-required=yes] .form-label>span:first-child::after{content:\"*\";color:var(--rs-input-require-label-color)}.rs-drawer-form-container .section-form .form-item .form-label{flex:none;width:144px;height:28px;margin-right:16px;color:#43566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;display:flex;flex-flow:row nowrap;align-items:center}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip{margin-left:4px}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip .tooltip-icon::before{content:\" \";display:block;width:14px;height:14px;background-image:url(../../../assets/img/tooltip-icon.svg);background-size:contain;cursor:pointer}.rs-drawer-form-container .section-form .form-item .form-content{flex:auto}@media (max-width:1420px){.rs-drawer-form-container .section-form .form-item{width:100%}}.rs-drawer-form-container .anchor-container{flex:none;display:flex;flex-flow:column nowrap;gap:4px;min-width:120px;height:auto;position:-webkit-sticky;position:sticky;top:56px}.rs-drawer-form-container .anchor-item{min-width:120px;padding:4px 12px;border-left:1px solid #eaedf0;cursor:pointer;color:#44566c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:16px;position:relative}.rs-drawer-form-container .anchor-item::before{content:attr(data-content);color:#44566c;font-weight:400;position:absolute;left:12px}.rs-drawer-form-container .anchor-item::after{content:attr(data-content);visibility:hidden;color:#1364b3;font-weight:700}.rs-drawer-form-container .anchor-item[data-active=yes]{border-color:#1f7bff}.rs-drawer-form-container .anchor-item[data-active=yes]::before{visibility:hidden}.rs-drawer-form-container .anchor-item[data-active=yes]::after{visibility:visible}.rs-drawer-tooltip.e-tooltip-wrap{border:none;background-color:#44566c}.rs-drawer-tooltip.e-tooltip-wrap .e-arrow-tip{height:4px;visibility:hidden}"]
|
|
509
509
|
}] }
|
|
510
510
|
];
|
|
@@ -584,4 +584,4 @@ if (false) {
|
|
|
584
584
|
*/
|
|
585
585
|
DrawerFormComponent.prototype.ref;
|
|
586
586
|
}
|
|
587
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLFlBQVksRUFFWixpQkFBaUIsR0FFbEIsTUFBTSxhQUFhLENBQUM7QUFPckIsTUFBTSxPQUFPLG1CQUFtQjs7OztJQXNDOUIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFyQ3ZCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBMEIsRUFBRSxDQUFDO1FBTXpDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDaEIsaUJBQVksR0FBRztZQUNwQyxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxNQUFNO1lBQ2IsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ3lCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUVsQyxTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDcEQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFHakQsQ0FBQztRQVNMLGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBRTdCLHFC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Qyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO3lCQTZRakUsWUFBWSxTQUFDLFdBQVc7Ozs7SUF6U3pCLHdDQUFpRDs7SUFDakQseUNBQTREOztJQUU1RCw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBQXdDOztJQUN4Qyx5Q0FBdUM7O0lBQ3ZDLDJDQUtFOztJQUNGLCtDQUFpRDs7SUFFakQsbUNBQThDOztJQUM5Qyx5Q0FBMkU7O0lBQzNFLDBDQUdLOztJQUVMLHFDQUNtQzs7Ozs7SUFDbkMseUNBQ2dEOzs7OztJQUNoRCxnREFDdUQ7O0lBRXZELHVDQUE2Qjs7SUFFN0IsK0NBQTZDOztJQUM3Qyw0Q0FBNEM7O0lBQzVDLDJDQUEyQzs7SUFzUTNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBdlFWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwic2VjdGlvbnNcIikgX3NlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcbiAgQElucHV0KFwib3B0aW9uc01hcFwiKSBvcHRpb25zTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KFwic2hvd0FuY2hvclwiKSBzaG93QW5jaG9yID0gdHJ1ZTtcclxuICBASW5wdXQoXCJvcHRpb25GaWVsZHNcIikgb3B0aW9uRmllbGRzID0ge1xyXG4gICAgdGV4dDogXCJ0ZXh0XCIsXHJcbiAgICB2YWx1ZTogXCJjb2RlXCIsXHJcbiAgICBkaXNhYmxlZDogXCJkaXNhYmxlZFwiLFxyXG4gICAgZ3JvdXBCeTogbnVsbCxcclxuICB9O1xyXG4gIEBJbnB1dChcInNob3dGaWx0ZXJOdW1iZXJcIikgc2hvd0ZpbHRlck51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoXCJmb3JtXCIpIGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21UZW1wbGF0ZUNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tU2VjdGlvbkNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIHNlY3Rpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gIGZpbHRlck9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIGZpZWxkVmFsaWRNYXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmICFjaGFuZ2VzLmZvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5jaGVja0Zvcm1DaGFuZ2UoXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLnByZXZpb3VzVmFsdWUsXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNob3dBbmNob3IpIHtcclxuICAgICAgdGhpcy5pbml0QW5jaG9yU2Nyb2xsSGFuZGxlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21UZW1wbGF0ZSAmJiBjb250YWluZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gW107XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJDdXN0b21cIikge1xyXG4gICAgICAgICAgICBjdXN0b21GaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY3VzdG9tVGVtcGxhdGUsIHtcclxuICAgICAgICAgICRpbXBsaWNpdDogY3VzdG9tRmllbGRzW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tU2VjdGlvblRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21TZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChzZWN0aW9uKSA9PiBzZWN0aW9uLmN1c3RvbUtleVxyXG4gICAgICApO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBjdXN0b21LZXkgPSBjdXN0b21TZWN0aW9uc1tpbmRleF0uY3VzdG9tS2V5O1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGVbY3VzdG9tS2V5XSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21TZWN0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmIChwcmV2aW91c1trZXldICE9PSBjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoa2V5KTtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGb3JtKHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdKSB7XHJcbiAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uOiBTZWN0aW9uSXRlbSkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJFbWFpbFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkNoZWNrYm94XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJNdWx0aVNlbGVjdFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlN3aXRjaFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOihqOWNleaPkOS6pOWJjeS8muinpuWPkei/meS4quWHveaVsFxyXG4gIHVwZGF0ZUZvcm0odmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgbmV3Rm9ybSA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLFxyXG4gICAgICBbZmllbGQuZm9ybUtleV06IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIC8vIOS/ruWkjemUmeivr+aPkOekuuaYvuekuiBidWfvvIzkuI3orr7nva7kuIDkuIvmnInmpoLnjofmi7/kuI3liLDmnIDmlrDnmoTlgLxcclxuICAgIHRoaXMuZm9ybSA9IG5ld0Zvcm07XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2UuZW1pdChuZXdGb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGZpZWxkSXRlbTogRmllbGRJdGVtID0gbnVsbDtcclxuICAgIHRoaXMuc2VjdGlvbnMuZmluZCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBmaWVsZEl0ZW0gPSBzZWN0aW9uLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuZm9ybUtleSA9PT0gZm9ybUtleSk7XHJcbiAgICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIikge1xyXG4gICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBjb25zdCAkaW5wdXQgPSBldmVudC5tb2RlbC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgIGlmICghJGlucHV0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoJGlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsLCBmaWVsZCk7XHJcbiAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0gfHwgW10sIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIiAmJiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pO1xyXG4gICAgICByZXR1cm4gZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLnRvRGF0ZSgpIDogbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
587
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLFlBQVksRUFFWixpQkFBaUIsR0FFbEIsTUFBTSxhQUFhLENBQUM7QUFPckIsTUFBTSxPQUFPLG1CQUFtQjs7OztJQXNDOUIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFyQ3ZCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBMEIsRUFBRSxDQUFDO1FBTXpDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDaEIsaUJBQVksR0FBRztZQUNwQyxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxNQUFNO1lBQ2IsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ3lCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUVsQyxTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDcEQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFHakQsQ0FBQztRQVNMLGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBRTdCLHFC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Qyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO3lCQTZRakUsWUFBWSxTQUFDLFdBQVc7Ozs7SUF6U3pCLHdDQUFpRDs7SUFDakQseUNBQTREOztJQUU1RCw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBQXdDOztJQUN4Qyx5Q0FBdUM7O0lBQ3ZDLDJDQUtFOztJQUNGLCtDQUFpRDs7SUFFakQsbUNBQThDOztJQUM5Qyx5Q0FBMkU7O0lBQzNFLDBDQUdLOztJQUVMLHFDQUNtQzs7Ozs7SUFDbkMseUNBQ2dEOzs7OztJQUNoRCxnREFDdUQ7O0lBRXZELHVDQUE2Qjs7SUFFN0IsK0NBQTZDOztJQUM3Qyw0Q0FBNEM7O0lBQzVDLDJDQUEyQzs7SUFzUTNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBdlFWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwic2VjdGlvbnNcIikgX3NlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcbiAgQElucHV0KFwib3B0aW9uc01hcFwiKSBvcHRpb25zTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KFwic2hvd0FuY2hvclwiKSBzaG93QW5jaG9yID0gdHJ1ZTtcclxuICBASW5wdXQoXCJvcHRpb25GaWVsZHNcIikgb3B0aW9uRmllbGRzID0ge1xyXG4gICAgdGV4dDogXCJ0ZXh0XCIsXHJcbiAgICB2YWx1ZTogXCJjb2RlXCIsXHJcbiAgICBkaXNhYmxlZDogXCJkaXNhYmxlZFwiLFxyXG4gICAgZ3JvdXBCeTogbnVsbCxcclxuICB9O1xyXG4gIEBJbnB1dChcInNob3dGaWx0ZXJOdW1iZXJcIikgc2hvd0ZpbHRlck51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoXCJmb3JtXCIpIGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21UZW1wbGF0ZUNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tU2VjdGlvbkNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIHNlY3Rpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gIGZpbHRlck9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIGZpZWxkVmFsaWRNYXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmICFjaGFuZ2VzLmZvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5jaGVja0Zvcm1DaGFuZ2UoXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLnByZXZpb3VzVmFsdWUsXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNob3dBbmNob3IpIHtcclxuICAgICAgdGhpcy5pbml0QW5jaG9yU2Nyb2xsSGFuZGxlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21UZW1wbGF0ZSAmJiBjb250YWluZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gW107XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJDdXN0b21cIikge1xyXG4gICAgICAgICAgICBjdXN0b21GaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY3VzdG9tVGVtcGxhdGUsIHtcclxuICAgICAgICAgICRpbXBsaWNpdDogY3VzdG9tRmllbGRzW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tU2VjdGlvblRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21TZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChzZWN0aW9uKSA9PiBzZWN0aW9uLmN1c3RvbUtleVxyXG4gICAgICApO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBjdXN0b21LZXkgPSBjdXN0b21TZWN0aW9uc1tpbmRleF0uY3VzdG9tS2V5O1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGVbY3VzdG9tS2V5XSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21TZWN0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmIChwcmV2aW91c1trZXldICE9PSBjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoa2V5KTtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGb3JtKHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdKSB7XHJcbiAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uOiBTZWN0aW9uSXRlbSkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJFbWFpbFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkNoZWNrYm94XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJNdWx0aVNlbGVjdFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlN3aXRjaFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOihqOWNleaPkOS6pOWJjeS8muinpuWPkei/meS4quWHveaVsFxyXG4gIHVwZGF0ZUZvcm0odmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgbmV3Rm9ybSA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLFxyXG4gICAgICBbZmllbGQuZm9ybUtleV06IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIC8vIOS/ruWkjemUmeivr+aPkOekuuaYvuekuiBidWfvvIzkuI3orr7nva7kuIDkuIvmnInmpoLnjofmi7/kuI3liLDmnIDmlrDnmoTlgLxcclxuICAgIHRoaXMuZm9ybSA9IG5ld0Zvcm07XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2UuZW1pdChuZXdGb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGZpZWxkSXRlbTogRmllbGRJdGVtID0gbnVsbDtcclxuICAgIHRoaXMuc2VjdGlvbnMuZmluZCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBmaWVsZEl0ZW0gPSBzZWN0aW9uLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuZm9ybUtleSA9PT0gZm9ybUtleSk7XHJcbiAgICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIikge1xyXG4gICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBjb25zdCAkaW5wdXQgPSBldmVudC5tb2RlbC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgIGlmICghJGlucHV0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoJGlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsLCBmaWVsZCk7XHJcbiAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0gfHwgW10sIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIiAmJiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pO1xyXG4gICAgICByZXR1cm4gZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLnRvRGF0ZSgpIDogbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -633,7 +633,7 @@ var DrawerFormComponent = /** @class */ (function () {
|
|
|
633
633
|
DrawerFormComponent.decorators = [
|
|
634
634
|
{ type: Component, args: [{
|
|
635
635
|
selector: "rs-drawer-form",
|
|
636
|
-
template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [
|
|
636
|
+
template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [ngModel]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showDropDownIcon]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n >\r\n </ejs-multiselect>\r\n <!-- Datepicker -->\r\n <ejs-datepicker\r\n *ngIf=\"field.fieldFormType === 'Datepicker'\"\r\n [value]=\"getValue(field)\"\r\n [format]=\"field.format || 'dd-MMM-yyyy'\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"\r\n fieldValidMap[field.formKey] === false ||\r\n dateValidMap[field.formKey] === false\r\n \"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onDatePickerBlur($event, field)\"\r\n ></ejs-datepicker>\r\n <ng-template\r\n #customTemplateContainer\r\n *ngIf=\"field.fieldFormType === 'Custom'\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"section.customKey\">\r\n <ng-template #customSectionContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"sections.length > 1 && showAnchor\" class=\"anchor-container\">\r\n <div\r\n class=\"anchor-item\"\r\n *ngFor=\"let section of sections; let index = index\"\r\n [style.display]=\"section.title ? 'block' : 'none'\"\r\n [attr.data-active]=\"scrollIndex === index ? 'yes' : 'no'\"\r\n [attr.data-content]=\"section.title\"\r\n (click)=\"onClickAnchor(index)\"\r\n ></div>\r\n </div>\r\n</div>\r\n",
|
|
637
637
|
styles: [":host{display:block;margin-top:16px}.rs-drawer-form-container{display:flex;flex-flow:row nowrap;align-items:flex-start;gap:32px}.rs-drawer-form-container .section-container{flex:auto;display:flex;flex-flow:column nowrap;max-width:1576px}.rs-drawer-form-container .section-item{position:relative}.rs-drawer-form-container .section-item:not(:first-child){border-top:1px solid #eaedf0}.rs-drawer-form-container .section-expand-checkbox{display:block;width:100%;height:28px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;position:absolute;top:0;left:0}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title::before{transform:rotate(-90deg)}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title+.section-form{max-height:0;overflow:hidden}.rs-drawer-form-container .section-title{padding:6px 0;margin-bottom:12px;color:#44566c;font-family:Arial;font-size:13px;font-style:normal;font-weight:700;line-height:16px;display:flex;flex-flow:row nowrap;align-items:center;pointer-events:none}.rs-drawer-form-container .section-title::before{content:url(../../../assets/img/down-arrow.svg);display:block;height:16px;width:16px;margin-right:8px}.rs-drawer-form-container .section-form{display:flex;flex-flow:row wrap;justify-content:space-between;gap:12px 56px;max-width:1576px;padding:0 24px;margin-bottom:20px}.rs-drawer-form-container .section-form .form-item{min-height:28px;min-width:400px;max-width:700px;width:calc((100% - 56px)/ 2);display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:flex-start}.rs-drawer-form-container .section-form .form-item[data-required=yes] .form-label>span:first-child::after{content:\"*\";color:var(--rs-input-require-label-color)}.rs-drawer-form-container .section-form .form-item .form-label{flex:none;width:144px;height:28px;margin-right:16px;color:#43566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;display:flex;flex-flow:row nowrap;align-items:center}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip{margin-left:4px}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip .tooltip-icon::before{content:\" \";display:block;width:14px;height:14px;background-image:url(../../../assets/img/tooltip-icon.svg);background-size:contain;cursor:pointer}.rs-drawer-form-container .section-form .form-item .form-content{flex:auto}@media (max-width:1420px){.rs-drawer-form-container .section-form .form-item{width:100%}}.rs-drawer-form-container .anchor-container{flex:none;display:flex;flex-flow:column nowrap;gap:4px;min-width:120px;height:auto;position:-webkit-sticky;position:sticky;top:56px}.rs-drawer-form-container .anchor-item{min-width:120px;padding:4px 12px;border-left:1px solid #eaedf0;cursor:pointer;color:#44566c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:16px;position:relative}.rs-drawer-form-container .anchor-item::before{content:attr(data-content);color:#44566c;font-weight:400;position:absolute;left:12px}.rs-drawer-form-container .anchor-item::after{content:attr(data-content);visibility:hidden;color:#1364b3;font-weight:700}.rs-drawer-form-container .anchor-item[data-active=yes]{border-color:#1f7bff}.rs-drawer-form-container .anchor-item[data-active=yes]::before{visibility:hidden}.rs-drawer-form-container .anchor-item[data-active=yes]::after{visibility:visible}.rs-drawer-tooltip.e-tooltip-wrap{border:none;background-color:#44566c}.rs-drawer-tooltip.e-tooltip-wrap .e-arrow-tip{height:4px;visibility:hidden}"]
|
|
638
638
|
}] }
|
|
639
639
|
];
|
|
@@ -716,4 +716,4 @@ if (false) {
|
|
|
716
716
|
*/
|
|
717
717
|
DrawerFormComponent.prototype.ref;
|
|
718
718
|
}
|
|
719
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDO0FBRXJCO0lBMkNFLDZCQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXJDdkIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUEwQixFQUFFLENBQUM7UUFNekMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNoQixpQkFBWSxHQUFHO1lBQ3BDLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsVUFBVTtZQUNwQixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFDeUIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRWxDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdqRCxDQUFDO1FBU0wsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFFN0IscUJBQWdCLEdBQTBCLEVBQUUsQ0FB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QWlCOzs7NEJBK0JoQixLQUFLLFNBQUMsVUFBVTs2QkFDaEIsS0FBSyxTQUFDLFlBQVk7aUNBRWxCLEtBQUssU0FBQyxnQkFBZ0I7d0NBQ3RCLEtBQUssU0FBQyx1QkFBdUI7K0JBRzdCLEtBQUssU0FBQyxVQUFVOzZCQUNoQixLQUFLLFNBQUMsWUFBWTsrQkFDbEIsS0FBSyxTQUFDLGNBQWM7bUNBTXBCLEtBQUssU0FBQyxrQkFBa0I7dUJBRXhCLEtBQUssU0FBQyxNQUFNOzZCQUNaLE1BQU0sU0FBQyxZQUFZOzhCQUNuQixNQUFNLFNBQUMsYUFBYTt5QkFLcEIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBRTNDLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzZCQTZRakUsWUFBWSxTQUFDLFdBQVc7O0lBNEQzQiwwQkFBQztDQUFBLEFBM1dELElBMldDO1NBdFdZLG1CQUFtQjs7O0lBQzlCLHdDQUFpRDs7SUFDakQseUNBQTREOztJQUU1RCw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBQXdDOztJQUN4Qyx5Q0FBdUM7O0lBQ3ZDLDJDQUtFOztJQUNGLCtDQUFpRDs7SUFFakQsbUNBQThDOztJQUM5Qyx5Q0FBMkU7O0lBQzNFLDBDQUdLOztJQUVMLHFDQUNtQzs7Ozs7SUFDbkMseUNBQ2dEOzs7OztJQUNoRCxnREFDdUQ7O0lBRXZELHVDQUE2Qjs7SUFFN0IsK0NBQTZDOztJQUM3Qyw0Q0FBNEM7O0lBQzVDLDJDQUEyQzs7SUFzUTNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBdlFWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwic2VjdGlvbnNcIikgX3NlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcbiAgQElucHV0KFwib3B0aW9uc01hcFwiKSBvcHRpb25zTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KFwic2hvd0FuY2hvclwiKSBzaG93QW5jaG9yID0gdHJ1ZTtcclxuICBASW5wdXQoXCJvcHRpb25GaWVsZHNcIikgb3B0aW9uRmllbGRzID0ge1xyXG4gICAgdGV4dDogXCJ0ZXh0XCIsXHJcbiAgICB2YWx1ZTogXCJjb2RlXCIsXHJcbiAgICBkaXNhYmxlZDogXCJkaXNhYmxlZFwiLFxyXG4gICAgZ3JvdXBCeTogbnVsbCxcclxuICB9O1xyXG4gIEBJbnB1dChcInNob3dGaWx0ZXJOdW1iZXJcIikgc2hvd0ZpbHRlck51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoXCJmb3JtXCIpIGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21UZW1wbGF0ZUNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tU2VjdGlvbkNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIHNlY3Rpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gIGZpbHRlck9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIGZpZWxkVmFsaWRNYXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmICFjaGFuZ2VzLmZvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5jaGVja0Zvcm1DaGFuZ2UoXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLnByZXZpb3VzVmFsdWUsXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNob3dBbmNob3IpIHtcclxuICAgICAgdGhpcy5pbml0QW5jaG9yU2Nyb2xsSGFuZGxlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21UZW1wbGF0ZSAmJiBjb250YWluZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gW107XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJDdXN0b21cIikge1xyXG4gICAgICAgICAgICBjdXN0b21GaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY3VzdG9tVGVtcGxhdGUsIHtcclxuICAgICAgICAgICRpbXBsaWNpdDogY3VzdG9tRmllbGRzW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tU2VjdGlvblRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21TZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChzZWN0aW9uKSA9PiBzZWN0aW9uLmN1c3RvbUtleVxyXG4gICAgICApO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBjdXN0b21LZXkgPSBjdXN0b21TZWN0aW9uc1tpbmRleF0uY3VzdG9tS2V5O1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGVbY3VzdG9tS2V5XSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21TZWN0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmIChwcmV2aW91c1trZXldICE9PSBjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoa2V5KTtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGb3JtKHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdKSB7XHJcbiAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uOiBTZWN0aW9uSXRlbSkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJFbWFpbFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkNoZWNrYm94XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJNdWx0aVNlbGVjdFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlN3aXRjaFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOihqOWNleaPkOS6pOWJjeS8muinpuWPkei/meS4quWHveaVsFxyXG4gIHVwZGF0ZUZvcm0odmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgbmV3Rm9ybSA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLFxyXG4gICAgICBbZmllbGQuZm9ybUtleV06IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIC8vIOS/ruWkjemUmeivr+aPkOekuuaYvuekuiBidWfvvIzkuI3orr7nva7kuIDkuIvmnInmpoLnjofmi7/kuI3liLDmnIDmlrDnmoTlgLxcclxuICAgIHRoaXMuZm9ybSA9IG5ld0Zvcm07XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2UuZW1pdChuZXdGb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGZpZWxkSXRlbTogRmllbGRJdGVtID0gbnVsbDtcclxuICAgIHRoaXMuc2VjdGlvbnMuZmluZCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBmaWVsZEl0ZW0gPSBzZWN0aW9uLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuZm9ybUtleSA9PT0gZm9ybUtleSk7XHJcbiAgICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIikge1xyXG4gICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBjb25zdCAkaW5wdXQgPSBldmVudC5tb2RlbC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgIGlmICghJGlucHV0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoJGlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsLCBmaWVsZCk7XHJcbiAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0gfHwgW10sIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIiAmJiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pO1xyXG4gICAgICByZXR1cm4gZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLnRvRGF0ZSgpIDogbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
719
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDO0FBRXJCO0lBMkNFLDZCQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXJDdkIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUEwQixFQUFFLENBQUM7UUFNekMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNoQixpQkFBWSxHQUFHO1lBQ3BDLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsVUFBVTtZQUNwQixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFDeUIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRWxDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdqRCxDQUFDO1FBU0wsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFFN0IscUJBQWdCLEdBQTBCLEVBQUUsQ0FB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QWlCOzs7NEJBK0JoQixLQUFLLFNBQUMsVUFBVTs2QkFDaEIsS0FBSyxTQUFDLFlBQVk7aUNBRWxCLEtBQUssU0FBQyxnQkFBZ0I7d0NBQ3RCLEtBQUssU0FBQyx1QkFBdUI7K0JBRzdCLEtBQUssU0FBQyxVQUFVOzZCQUNoQixLQUFLLFNBQUMsWUFBWTsrQkFDbEIsS0FBSyxTQUFDLGNBQWM7bUNBTXBCLEtBQUssU0FBQyxrQkFBa0I7dUJBRXhCLEtBQUssU0FBQyxNQUFNOzZCQUNaLE1BQU0sU0FBQyxZQUFZOzhCQUNuQixNQUFNLFNBQUMsYUFBYTt5QkFLcEIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBRTNDLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzZCQTZRakUsWUFBWSxTQUFDLFdBQVc7O0lBNEQzQiwwQkFBQztDQUFBLEFBM1dELElBMldDO1NBdFdZLG1CQUFtQjs7O0lBQzlCLHdDQUFpRDs7SUFDakQseUNBQTREOztJQUU1RCw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBQXdDOztJQUN4Qyx5Q0FBdUM7O0lBQ3ZDLDJDQUtFOztJQUNGLCtDQUFpRDs7SUFFakQsbUNBQThDOztJQUM5Qyx5Q0FBMkU7O0lBQzNFLDBDQUdLOztJQUVMLHFDQUNtQzs7Ozs7SUFDbkMseUNBQ2dEOzs7OztJQUNoRCxnREFDdUQ7O0lBRXZELHVDQUE2Qjs7SUFFN0IsK0NBQTZDOztJQUM3Qyw0Q0FBNEM7O0lBQzVDLDJDQUEyQzs7SUFzUTNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBdlFWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwic2VjdGlvbnNcIikgX3NlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcbiAgQElucHV0KFwib3B0aW9uc01hcFwiKSBvcHRpb25zTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KFwic2hvd0FuY2hvclwiKSBzaG93QW5jaG9yID0gdHJ1ZTtcclxuICBASW5wdXQoXCJvcHRpb25GaWVsZHNcIikgb3B0aW9uRmllbGRzID0ge1xyXG4gICAgdGV4dDogXCJ0ZXh0XCIsXHJcbiAgICB2YWx1ZTogXCJjb2RlXCIsXHJcbiAgICBkaXNhYmxlZDogXCJkaXNhYmxlZFwiLFxyXG4gICAgZ3JvdXBCeTogbnVsbCxcclxuICB9O1xyXG4gIEBJbnB1dChcInNob3dGaWx0ZXJOdW1iZXJcIikgc2hvd0ZpbHRlck51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoXCJmb3JtXCIpIGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21UZW1wbGF0ZUNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tU2VjdGlvbkNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIHNlY3Rpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gIGZpbHRlck9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIGZpZWxkVmFsaWRNYXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmICFjaGFuZ2VzLmZvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5jaGVja0Zvcm1DaGFuZ2UoXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLnByZXZpb3VzVmFsdWUsXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNob3dBbmNob3IpIHtcclxuICAgICAgdGhpcy5pbml0QW5jaG9yU2Nyb2xsSGFuZGxlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21UZW1wbGF0ZSAmJiBjb250YWluZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gW107XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJDdXN0b21cIikge1xyXG4gICAgICAgICAgICBjdXN0b21GaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY3VzdG9tVGVtcGxhdGUsIHtcclxuICAgICAgICAgICRpbXBsaWNpdDogY3VzdG9tRmllbGRzW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tU2VjdGlvblRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21TZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChzZWN0aW9uKSA9PiBzZWN0aW9uLmN1c3RvbUtleVxyXG4gICAgICApO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBjdXN0b21LZXkgPSBjdXN0b21TZWN0aW9uc1tpbmRleF0uY3VzdG9tS2V5O1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGVbY3VzdG9tS2V5XSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21TZWN0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmIChwcmV2aW91c1trZXldICE9PSBjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoa2V5KTtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGb3JtKHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdKSB7XHJcbiAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uOiBTZWN0aW9uSXRlbSkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJFbWFpbFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkNoZWNrYm94XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJNdWx0aVNlbGVjdFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlN3aXRjaFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOihqOWNleaPkOS6pOWJjeS8muinpuWPkei/meS4quWHveaVsFxyXG4gIHVwZGF0ZUZvcm0odmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgbmV3Rm9ybSA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLFxyXG4gICAgICBbZmllbGQuZm9ybUtleV06IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIC8vIOS/ruWkjemUmeivr+aPkOekuuaYvuekuiBidWfvvIzkuI3orr7nva7kuIDkuIvmnInmpoLnjofmi7/kuI3liLDmnIDmlrDnmoTlgLxcclxuICAgIHRoaXMuZm9ybSA9IG5ld0Zvcm07XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2UuZW1pdChuZXdGb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGZpZWxkSXRlbTogRmllbGRJdGVtID0gbnVsbDtcclxuICAgIHRoaXMuc2VjdGlvbnMuZmluZCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBmaWVsZEl0ZW0gPSBzZWN0aW9uLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuZm9ybUtleSA9PT0gZm9ybUtleSk7XHJcbiAgICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIikge1xyXG4gICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBjb25zdCAkaW5wdXQgPSBldmVudC5tb2RlbC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgIGlmICghJGlucHV0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoJGlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsLCBmaWVsZCk7XHJcbiAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0gfHwgW10sIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIiAmJiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pO1xyXG4gICAgICByZXR1cm4gZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLnRvRGF0ZSgpIDogbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -21940,7 +21940,7 @@ class DrawerFormComponent {
|
|
|
21940
21940
|
DrawerFormComponent.decorators = [
|
|
21941
21941
|
{ type: Component, args: [{
|
|
21942
21942
|
selector: "rs-drawer-form",
|
|
21943
|
-
template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [
|
|
21943
|
+
template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [ngModel]=\"form[field.formKey]\"\r\n [dataSource]=\"optionsMap[field.optionKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showDropDownIcon]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n >\r\n </ejs-multiselect>\r\n <!-- Datepicker -->\r\n <ejs-datepicker\r\n *ngIf=\"field.fieldFormType === 'Datepicker'\"\r\n [value]=\"getValue(field)\"\r\n [format]=\"field.format || 'dd-MMM-yyyy'\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"\r\n fieldValidMap[field.formKey] === false ||\r\n dateValidMap[field.formKey] === false\r\n \"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onDatePickerBlur($event, field)\"\r\n ></ejs-datepicker>\r\n <ng-template\r\n #customTemplateContainer\r\n *ngIf=\"field.fieldFormType === 'Custom'\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"section.customKey\">\r\n <ng-template #customSectionContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"sections.length > 1 && showAnchor\" class=\"anchor-container\">\r\n <div\r\n class=\"anchor-item\"\r\n *ngFor=\"let section of sections; let index = index\"\r\n [style.display]=\"section.title ? 'block' : 'none'\"\r\n [attr.data-active]=\"scrollIndex === index ? 'yes' : 'no'\"\r\n [attr.data-content]=\"section.title\"\r\n (click)=\"onClickAnchor(index)\"\r\n ></div>\r\n </div>\r\n</div>\r\n",
|
|
21944
21944
|
styles: [":host{display:block;margin-top:16px}.rs-drawer-form-container{display:flex;flex-flow:row nowrap;align-items:flex-start;gap:32px}.rs-drawer-form-container .section-container{flex:auto;display:flex;flex-flow:column nowrap;max-width:1576px}.rs-drawer-form-container .section-item{position:relative}.rs-drawer-form-container .section-item:not(:first-child){border-top:1px solid #eaedf0}.rs-drawer-form-container .section-expand-checkbox{display:block;width:100%;height:28px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;position:absolute;top:0;left:0}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title::before{transform:rotate(-90deg)}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title+.section-form{max-height:0;overflow:hidden}.rs-drawer-form-container .section-title{padding:6px 0;margin-bottom:12px;color:#44566c;font-family:Arial;font-size:13px;font-style:normal;font-weight:700;line-height:16px;display:flex;flex-flow:row nowrap;align-items:center;pointer-events:none}.rs-drawer-form-container .section-title::before{content:url(../../../assets/img/down-arrow.svg);display:block;height:16px;width:16px;margin-right:8px}.rs-drawer-form-container .section-form{display:flex;flex-flow:row wrap;justify-content:space-between;gap:12px 56px;max-width:1576px;padding:0 24px;margin-bottom:20px}.rs-drawer-form-container .section-form .form-item{min-height:28px;min-width:400px;max-width:700px;width:calc((100% - 56px)/ 2);display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:flex-start}.rs-drawer-form-container .section-form .form-item[data-required=yes] .form-label>span:first-child::after{content:\"*\";color:var(--rs-input-require-label-color)}.rs-drawer-form-container .section-form .form-item .form-label{flex:none;width:144px;height:28px;margin-right:16px;color:#43566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;display:flex;flex-flow:row nowrap;align-items:center}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip{margin-left:4px}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip .tooltip-icon::before{content:\" \";display:block;width:14px;height:14px;background-image:url(../../../assets/img/tooltip-icon.svg);background-size:contain;cursor:pointer}.rs-drawer-form-container .section-form .form-item .form-content{flex:auto}@media (max-width:1420px){.rs-drawer-form-container .section-form .form-item{width:100%}}.rs-drawer-form-container .anchor-container{flex:none;display:flex;flex-flow:column nowrap;gap:4px;min-width:120px;height:auto;position:-webkit-sticky;position:sticky;top:56px}.rs-drawer-form-container .anchor-item{min-width:120px;padding:4px 12px;border-left:1px solid #eaedf0;cursor:pointer;color:#44566c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:16px;position:relative}.rs-drawer-form-container .anchor-item::before{content:attr(data-content);color:#44566c;font-weight:400;position:absolute;left:12px}.rs-drawer-form-container .anchor-item::after{content:attr(data-content);visibility:hidden;color:#1364b3;font-weight:700}.rs-drawer-form-container .anchor-item[data-active=yes]{border-color:#1f7bff}.rs-drawer-form-container .anchor-item[data-active=yes]::before{visibility:hidden}.rs-drawer-form-container .anchor-item[data-active=yes]::after{visibility:visible}.rs-drawer-tooltip.e-tooltip-wrap{border:none;background-color:#44566c}.rs-drawer-tooltip.e-tooltip-wrap .e-arrow-tip{height:4px;visibility:hidden}"]
|
|
21945
21945
|
}] }
|
|
21946
21946
|
];
|